:root{--bg: #eceff2;--surface: #ffffff;--surface-2: #f6f7f9;--ink: #1b2631;--muted: #5d6a77;--line: #d3dae1;--line-strong: #aeb8c3;--brand: #1f4466;--brand-ink: #ffffff;--changed: #b25a00;--focus: #2d6fd2;--ok: #23854f;--ok-bg: #d8f0e2;--swap: #2862bd;--swap-bg: #d9e6fb;--push: #7b44c4;--push-bg: #eadffa;--warn: #a87700;--warn-bg: #faeecb;--ng: #c2342f;--ng-bg: #f8dcdb;--off: #8b96a2;--off-bg: #e3e7eb;--font: "BIZ UDPGothic", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", Meiryo, sans-serif;color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #12171c;--surface: #1b222a;--surface-2: #222a33;--ink: #e6ebf0;--muted: #9aa7b4;--line: #313b46;--line-strong: #4a5664;--brand: #7fb0dc;--brand-ink: #0e1a26;--changed: #f0a24a;--ok: #5fcf90;--ok-bg: #1d3a2a;--swap: #79a8f0;--swap-bg: #1c2d4a;--push: #b48cf0;--push-bg: #2e2346;--warn: #e3b84a;--warn-bg: #3b311a;--ng: #f07c76;--ng-bg: #43211f;--off: #6c7784;--off-bg: #262d35;color-scheme:dark}}:root[data-theme=dark]{--bg: #12171c;--surface: #1b222a;--surface-2: #222a33;--ink: #e6ebf0;--muted: #9aa7b4;--line: #313b46;--line-strong: #4a5664;--brand: #7fb0dc;--brand-ink: #0e1a26;--changed: #f0a24a;--ok: #5fcf90;--ok-bg: #1d3a2a;--swap: #79a8f0;--swap-bg: #1c2d4a;--push: #b48cf0;--push-bg: #2e2346;--warn: #e3b84a;--warn-bg: #3b311a;--ng: #f07c76;--ng-bg: #43211f;--off: #6c7784;--off-bg: #262d35;color-scheme:dark}*,*:before,*:after{box-sizing:inherit}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.btn{border:1px solid var(--line-strong);background:var(--surface);padding:6px 12px;border-radius:6px;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink);font-weight:700}.btn.primary:hover:not(:disabled){background:var(--brand);filter:brightness(1.12)}.btn.danger{color:var(--ng);border-color:var(--ng)}.btn.small{padding:3px 8px;font-size:12.5px}.btn.link{border:none;background:none;color:var(--brand);padding:2px 4px;text-decoration:underline}input[type=text],input[type=date],input[type=email],select,textarea{background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;padding:5px 8px}h1,h2,h3{margin:0;line-height:1.3}.muted{color:var(--muted)}.small{font-size:12.5px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line)}.topbar h1{font-size:16px}.demo-flag{font-size:12px;color:var(--warn);border:1px solid var(--warn);border-radius:4px;padding:1px 6px}.page{padding:20px 24px;overflow:auto;flex:1}.page-narrow{max-width:1120px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:16px}.stack>*+*{margin-top:12px}.weeks{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}.weeks th,.weeks td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:left}.weeks th{font-size:12.5px;color:var(--muted);font-weight:400;background:var(--surface-2)}.weeks tr.current td{background:var(--swap-bg)}.status{font-size:12.5px;padding:1px 8px;border-radius:10px;border:1px solid var(--line-strong)}.status.draft{border-color:var(--warn);color:var(--warn)}.status.changed{border-color:var(--changed);color:var(--changed);font-weight:700}.weeks .grade-col{text-align:center;white-space:nowrap}.editor{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-template-rows:auto auto minmax(0,1fr) auto;height:100%}.ed-head{grid-column:1 / -1;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 14px;background:var(--surface);border-bottom:1px solid var(--line)}.ed-head h2{font-size:16px}.ed-tools{grid-column:1 / -1;display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:6px 14px;border-bottom:1px solid var(--line);background:var(--surface-2);font-size:13px}.chip{border:1px solid var(--line-strong);border-radius:14px;padding:1px 10px;background:var(--surface);cursor:pointer;font-size:12.5px}.chip.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}.legend{display:flex;gap:10px;align-items:center}.legend span{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.legend i{width:12px;height:12px;border-radius:3px;display:inline-block;border:1.5px solid}.hoverline{min-height:20px;font-size:13px}.grid-wrap{overflow:auto;position:relative;background:var(--surface)}table.tt{border-collapse:separate;border-spacing:0;font-size:12px}table.tt th,table.tt td{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}table.tt thead th{position:sticky;z-index:3;background:var(--surface-2);font-weight:700}table.tt tr.h1 th{top:0;height:26px;padding:3px 4px;white-space:nowrap}table.tt tr.h2 th{top:26px;height:22px;padding:1px 2px;color:var(--muted);font-weight:400;min-width:76px}table.tt .c-cls{position:sticky;left:0;z-index:2;background:var(--surface-2);min-width:46px;width:46px;text-align:center;font-weight:700}table.tt thead .c-cls{z-index:4;top:0}table.tt .day-start{border-left:2px solid var(--line-strong)}table.tt td.cell.blocked{background:repeating-linear-gradient(135deg,var(--off-bg) 0 6px,transparent 6px 12px)}td.cell{padding:0;height:40px;vertical-align:top;position:relative;min-width:76px;max-width:96px}.lesson{padding:3px 4px;height:100%;cursor:grab;overflow:hidden;border-left:3px solid transparent}.lesson.locked{cursor:default}.lesson .sub{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lesson .who,.lesson .room{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}.lesson.multi .sub:after{content:"◆";font-size:8px;color:var(--muted);margin-left:2px;vertical-align:top}.lesson.changed{border-left-color:var(--changed)}.lesson.changed .sub:before{content:"★";color:var(--changed);font-size:9px;margin-right:1px}.lesson.selected{outline:2px solid var(--focus);outline-offset:-2px;background:var(--surface-2)}.lesson.related{background:var(--surface-2)}.empty-cell{height:100%;cursor:pointer}.empty-cell:hover{background:var(--surface-2)}.empty-cell.sel{outline:2px dashed var(--focus);outline-offset:-2px}td.cell.k-green{background:var(--ok-bg);box-shadow:inset 0 0 0 1.5px var(--ok)}td.cell.k-blue{background:var(--swap-bg);box-shadow:inset 0 0 0 1.5px var(--swap)}td.cell.k-purple{background:var(--push-bg);box-shadow:inset 0 0 0 1.5px var(--push)}td.cell.k-yellow{background:var(--warn-bg);box-shadow:inset 0 0 0 1.5px var(--warn)}td.cell.k-red{background:var(--ng-bg)}td.cell.k-gray{background:var(--off-bg)}td.cell.k-red .lesson,td.cell.k-gray .lesson{opacity:.55}td.cell.drop-hover{box-shadow:inset 0 0 0 3px var(--ink)}.side{grid-row:3 / 5;grid-column:2;border-left:1px solid var(--line);background:var(--surface);overflow:auto;padding:14px}.side h3{font-size:15px;margin-bottom:4px}.side h4{font-size:13px;margin:14px 0 6px}.kv{display:grid;grid-template-columns:64px 1fr;gap:2px 8px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0}.rows{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px}.rows td,.rows th{border-bottom:1px solid var(--line);padding:3px 4px;text-align:left}.rows th{color:var(--muted);font-weight:400}.diff{color:var(--changed);font-weight:700}.cand{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:5px 6px;border-bottom:1px solid var(--line);font-size:13px}.cand:hover{background:var(--surface-2)}.cand .meta{color:var(--muted);font-size:11.5px}.list-scroll{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:6px}.msg{font-size:12.5px;padding:6px 8px;border-radius:6px;margin-top:6px}.msg.ng{background:var(--ng-bg);color:var(--ng)}.msg.warn{background:var(--warn-bg);color:var(--warn)}.msg.info{background:var(--surface-2);color:var(--muted)}.problem{font-size:12.5px;padding:4px 6px;border-left:3px solid var(--ng);margin:4px 0;cursor:pointer}.problem.w{border-left-color:var(--warn)}.pattern{border:1px solid var(--line);border-radius:6px;padding:8px;margin-top:8px;font-size:12.5px}.pattern ol{margin:4px 0 6px;padding-left:18px}.pool{grid-column:1;border-top:2px solid var(--push);background:var(--surface);padding:8px 14px;display:flex;gap:10px;align-items:center;min-height:58px;overflow-x:auto}.pool .title{font-weight:700;color:var(--push);white-space:nowrap}.pool-item{border:1.5px solid var(--push);background:var(--push-bg);border-radius:6px;padding:3px 8px;cursor:grab;font-size:12.5px;white-space:nowrap;display:flex;gap:6px;align-items:center}.pool-item.sel{outline:2px solid var(--focus)}.pool.empty .title{color:var(--muted)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a101673;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal{background:var(--surface);border-radius:10px;max-width:min(1100px,96vw);max-height:90vh;overflow:auto;padding:18px 20px;min-width:360px}.modal h2{font-size:17px;margin-bottom:10px}.modal .actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.modal ul{padding-left:20px;margin:6px 0}.data{border-collapse:collapse;font-size:12.5px;width:100%}.data th,.data td{border:1px solid var(--line);padding:4px 6px;text-align:left;vertical-align:top}.data th{background:var(--surface-2);font-weight:400;color:var(--muted)}.mini-grid{border-collapse:collapse;font-size:12px}.mini-grid th,.mini-grid td{border:1px solid var(--line);padding:0;text-align:center}.mini-grid th{background:var(--surface-2);padding:3px 6px;font-weight:400}.mini-grid button{width:44px;height:28px;border:none;background:none;cursor:pointer}.mini-grid button.on{background:var(--off-bg);color:var(--ng);font-weight:700}.mini-grid button.ov{box-shadow:inset 0 0 0 2px var(--changed)}.mini-grid td.na{background:var(--surface-2)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:12px}.tabs button{border:none;background:none;padding:6px 12px;cursor:pointer;border-bottom:2px solid transparent;color:var(--muted)}.tabs button.on{border-bottom-color:var(--brand);color:var(--ink);font-weight:700}.toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--surface);padding:8px 16px;border-radius:6px;z-index:60;font-size:13px}.center-screen{display:flex;align-items:center;justify-content:center;height:100%}.report{padding:0;margin:0}.report li{margin:2px 0;list-style:none}#print-root{display:none}@media print{body{background:#fff;color:#000}#root,.modal-bg,.toast{display:none!important}html,body{height:auto}#print-root{display:block}}.print-title{font-size:14pt;font-weight:700;margin:0 0 4pt}.print-sub{font-size:9pt;margin-bottom:6pt}table.ptt{border-collapse:collapse;width:100%;table-layout:fixed;font-size:7.5pt}.psheet+.psheet{break-before:page}table.ptt-x .pcls{width:30pt;white-space:nowrap}table.ptt .pday-l{border-left:1.4pt solid #000}.print-measure{position:fixed;left:-100000px;top:0;visibility:hidden;pointer-events:none;color:#000;background:#fff}.print-measure>div{break-inside:auto}table.ptt th,table.ptt td{border:.5pt solid #777;padding:1pt 2pt;vertical-align:top;overflow:hidden}table.ptt th{background:#eee}table.ptt td.chg{border:1.6pt solid #000;font-weight:700}table.ptt .pdate{width:34pt}table.ptt .pper{width:12pt}table.ptt tr.pday td,table.ptt tr.pday th{border-top:1.4pt solid #000}table.pchg{border-collapse:collapse;width:100%;font-size:9pt}table.pchg th,table.pchg td{border:.5pt solid #777;padding:2pt 4pt;text-align:left}@media (max-width: 900px){.editor{grid-template-columns:1fr;grid-template-rows:auto auto minmax(300px,1fr) auto auto}.side{grid-row:auto;grid-column:1;border-left:none;border-top:1px solid var(--line)}}@media (prefers-reduced-motion: reduce){*{transition:none!important}}.dept-table th{font-size:11.5px;white-space:nowrap;text-align:center}.dept-table td.dept-cell{text-align:center}.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:6px;overflow:hidden}.seg button{border:none;background:var(--surface);padding:3px 9px;font-size:12px;cursor:pointer;color:var(--muted)}.seg button+button{border-left:1px solid var(--line-strong)}.seg button.on{background:var(--brand);color:var(--brand-ink);font-weight:700}.trial-flag{font-size:12.5px;color:var(--push);border:1.5px solid var(--push);background:var(--push-bg);border-radius:4px;padding:2px 8px;font-weight:700}
