@font-face{font-family:Pretendard Variable;src:url(/assets/PretendardVariable-CJuje-Rk.woff2)format("woff2");font-display:swap}@font-face{font-family:RIDI Batang;src:url(/assets/RIDIBatang-cG7CJLFI.woff2)format("woff2");font-display:swap}:root{--ink:#1d2430;--soft:#596273;--faint:#7a8391;--line:#d8dde5;--paper:#f5f3ee;--surface:#fff;--accent:#4c3d86;--accent-soft:#f0edf9;--danger:brown;--danger-soft:#fff5f5;--warn:#8a5a00;--warn-soft:#fff8e8;--ok:#2f6c52;color:var(--ink);background:var(--paper);font-family:Pretendard Variable,Malgun Gothic,system-ui,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--paper);color:var(--ink);margin:0;overflow-x:hidden}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}.shell{width:min(1440px,100% - 32px);margin:0 auto;padding:34px 0 60px}.hero{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:flex-end;gap:20px;padding-bottom:20px;display:flex}.hero small{color:var(--accent);letter-spacing:.08em;font-size:12px;font-weight:800}.hero h1{margin:7px 0 5px;font-size:clamp(28px,4vw,46px);line-height:1.1}.hero p{color:var(--soft);margin:0;line-height:1.6}.hero-tools{justify-items:end;gap:7px;max-width:560px;display:grid}.hero-actions{flex-wrap:wrap;justify-content:flex-end;gap:7px;display:flex}.privacy-warning{color:var(--danger);text-align:right;margin:0;font-size:11px;font-weight:700;line-height:1.45}.storage-banner{justify-content:space-between;align-items:center;gap:14px;margin:16px 0;padding:12px 14px;font-size:13px;line-height:1.55;display:flex}.storage-banner.unlinked{color:#7c3f00;background:#fff6df;border:1px solid #e8a23a;border-left:5px solid #d97706}.storage-banner.unlinked.has-work{background:#ffead0;border-color:#c65d08}.storage-banner.connected{color:var(--soft);background:0 0;border:0;justify-content:flex-start;padding:2px 0;font-size:12px}.storage-banner.unsupported{border-left:4px solid var(--accent);background:var(--accent-soft);color:var(--soft)}.storage-copy{min-width:0}.storage-copy strong,.storage-copy span{display:block}.storage-banner.connected .storage-copy strong{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.storage-banner.connected .storage-copy span{display:none}.storage-actions{flex-wrap:wrap;flex:none;gap:7px;display:flex}.storage-banner.connected .storage-actions button{border-color:var(--line);min-height:30px;color:var(--soft);background:#fff;padding:4px 8px;font-size:11px}.file-save-alert{color:var(--danger);flex:100%;margin:0;font-size:12px;font-weight:800}.setup-drawer{border:1px solid var(--line);background:#fff;margin:16px 0}.setup-drawer>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:46px;padding:10px 14px;list-style:none;display:flex}.setup-drawer>summary::-webkit-details-marker{display:none}.setup-drawer>summary:before{content:"＋";color:var(--accent);flex:none;font-size:18px;font-weight:900}.setup-drawer[open]>summary:before{content:"－"}.setup-drawer>summary strong{margin-right:auto;font-size:14px}.setup-drawer>summary span{color:var(--soft);font-size:12px;font-weight:700}.setup-grid{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:12px;display:grid}.workspace{grid-template-columns:280px minmax(0,1fr) 280px;align-items:start;gap:16px;display:grid}.sidebar{gap:12px;display:grid}.insights{min-width:0}.panel{border:1px solid var(--line);background:var(--surface);padding:16px}.panel h2{margin:0 0 13px;font-size:16px}.panel h3{margin:16px 0 8px;font-size:13px}.hint{color:var(--faint);margin:0 0 10px;font-size:12px;line-height:1.5}.fields{gap:10px;display:grid}.field{color:var(--soft);gap:5px;font-size:12px;font-weight:800;display:grid}.field input,.field select{width:100%;min-height:40px;color:var(--ink);background:#fff;border:1px solid #aeb6c2;border-radius:6px;padding:7px 9px}.two{grid-template-columns:1fr 1fr;gap:8px;display:grid}.three{grid-template-columns:1fr 1fr auto;align-items:end;gap:8px;display:grid}.primary,.secondary,.danger{border-radius:6px;min-height:38px;padding:7px 11px;font-weight:800}.primary{border:1px solid var(--ink);background:var(--ink);color:#fff}.secondary{color:var(--ink);background:#fff;border:1px solid #aeb6c2}.danger{color:var(--danger);background:#fff;border:1px solid #e6a7a7}.button-row{flex-wrap:wrap;gap:7px;display:flex}.button-row>*{flex:auto}.color-row{flex-wrap:wrap;gap:7px;display:flex}.color{border:2px solid #fff;border-radius:50%;width:29px;height:29px;padding:0}.block-list{gap:8px;display:grid}.block{border:1px solid var(--line);border-left:5px solid var(--block-color);background:#fff;padding:10px}.block.selected{border-color:var(--accent);background:var(--accent-soft)}.block strong{font-size:13px;display:block}.block p{color:var(--soft);margin:4px 0 0;font-size:11px;line-height:1.45}.block-actions{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.block-actions button{background:#fff;border:1px solid #b7bec9;border-radius:5px;min-height:30px;padding:4px 7px;font-size:11px;font-weight:800}.roster-form{gap:8px;display:grid}.roster-list{gap:7px;margin-top:10px;display:grid}.roster-item{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding-top:7px;display:flex}.roster-item:first-child{border-top:0;padding-top:0}.roster-item p{min-width:0;margin:0;font-size:12px;line-height:1.45}.roster-item small{color:var(--soft);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.roster-actions{flex:none;gap:4px;display:flex}.roster-actions button{background:#fff;border:1px solid #b7bec9;border-radius:5px;min-height:28px;padding:3px 6px;font-size:10px;font-weight:800}.relation-field{border:1px solid var(--line);border-radius:6px;min-width:0;margin:0;padding:8px}.relation-field legend{color:var(--soft);padding:0 4px;font-size:12px;font-weight:800}.check-list{gap:5px;max-height:132px;display:grid;overflow:auto}.check-option{color:var(--ink);align-items:flex-start;gap:6px;font-size:12px;font-weight:600;display:flex}.check-option input{margin-top:2px}.empty{color:var(--faint);margin:0;font-size:13px;line-height:1.55}.main,.timetable-mode{min-width:0}.view-heading{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:12px;display:flex}.view-heading h2{margin:0 0 3px;font-size:21px}.view-heading p{color:var(--soft);margin:0;font-size:12px}.view-controls{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.view-controls .field{min-width:150px}.view-controls .compact-field{min-width:145px}.view-hours{color:var(--accent);white-space:nowrap;align-self:center;font-size:12px}.mode-guide{border-left:4px solid var(--accent);background:var(--accent-soft);margin-bottom:10px;padding:9px 11px}.mode-guide strong{font-size:13px;display:block}.mode-guide p{color:var(--soft);margin:3px 0 0;font-size:11px;line-height:1.45}.general-panel{margin-top:16px}.general-form{border:1px solid var(--line);background:#fff;grid-template-columns:140px 150px minmax(160px,1fr) minmax(150px,1fr) auto;align-items:end;gap:8px;margin-bottom:12px;padding:12px;display:grid}.general-form .button-row{flex-wrap:nowrap}.toolbar{border:1px solid var(--line);background:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;padding:11px;display:flex}.toolbar p{color:var(--soft);margin:0;font-size:12px;font-weight:700}.status{min-height:20px;color:var(--ok);margin:6px 0 0;font-size:12px;font-weight:700}.status.error{color:var(--danger)}.backup-reminder{background:var(--accent-soft);color:var(--accent);border:1px solid #d5c8ef;margin:0 0 10px;padding:10px 12px;font-size:12px;font-weight:800}.table-scroll{border:1px solid var(--line);background:#fff;max-width:100%;overflow-x:auto}.timetable{border-collapse:collapse;table-layout:fixed;width:100%;min-width:860px}.timetable th,.timetable td{border:1px solid var(--line)}.timetable thead th{background:#eef1f5;height:42px;font-size:13px}.timetable tbody th{background:#f6f7f9;width:96px;padding:7px;font-size:12px;line-height:1.35}.timetable td{vertical-align:top;height:116px;padding:6px}.placements{gap:5px;display:grid}.placement{border-left:4px solid var(--block-color);background:color-mix(in srgb,var(--block-color) 10%,white);text-align:left;border-radius:4px;grid-template-columns:minmax(0,1fr) auto;gap:5px;padding:6px;display:grid}.placement[draggable=true]{cursor:grab}.placement.moving{outline:2px solid var(--accent)}.placement strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;display:block;overflow:hidden}.placement small{color:var(--soft);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:9px;display:block;overflow:hidden}.placement-main{min-width:0;color:inherit;text-align:left;background:0 0;border:0;padding:0}.placement-delete{color:var(--danger);background:0 0;border:0;align-self:start;padding:0 2px;font-size:15px;font-weight:900}.cell-target{width:100%;min-height:28px;color:var(--faint);background:#fff;border:1px dashed #b8bec8;border-radius:4px;margin-top:5px;font-size:10px;font-weight:800}.cell-target.ready{border-color:var(--accent);color:var(--accent)}.readonly-card{border-radius:4px;padding:6px;font-size:10px;line-height:1.4}.readonly-card strong{font-size:11px;display:block}.readonly-card small{color:inherit;opacity:.8;margin-top:2px;display:block}.student-cell{grid-template-rows:1fr auto;gap:5px;min-height:104px;margin:-6px;padding:6px;display:grid}.student-special-list{align-content:start;gap:5px;display:grid}.student-special{border:1px solid color-mix(in srgb,var(--block-color) 78%,#000);background:var(--block-color);color:#fff;font-weight:800;box-shadow:0 1px 2px #1d24301f}.student-special small{color:#fff;opacity:.9}.student-general-row{border-top:1px dashed var(--line);min-height:24px;color:var(--soft);padding-top:5px;font-size:11px;font-weight:700}.teacher-lesson{border-left:4px solid var(--block-color);background:color-mix(in srgb,var(--block-color) 10%,white)}.readonly-actions{gap:4px;margin-top:4px;display:flex}.readonly-actions button{min-height:25px;color:var(--ink);background:#fff;border:1px solid #b7bec9;border-radius:4px;padding:2px 5px;font-size:9px;font-weight:800}.joint-badge{color:var(--accent);background:#e8e3f6;border-radius:4px;margin-top:3px;padding:2px 5px;font-size:9px;font-weight:900;display:inline-block}.summary-panel{position:sticky;top:12px}.summary-table{border-collapse:collapse;width:100%;font-size:12px}.summary-table th,.summary-table td{border-bottom:1px solid var(--line);text-align:left;padding:8px}.summary-table th{color:var(--soft);font-size:11px}.summary-table tr.total-row td{border-top:2px solid var(--line);font-weight:800}.count-ok{color:var(--ok);font-weight:800}.count-warn{color:var(--danger);font-weight:800}.issue-list{gap:6px;margin:10px 0 0;padding:0;list-style:none;display:grid}.issue-list li{border-left:3px solid var(--line);padding:7px 9px;font-size:11px;font-weight:700}.issue-list li.issue-error{border-left-color:var(--danger);background:var(--danger-soft);color:var(--danger)}.issue-list li.issue-warning{background:var(--warn-soft);color:var(--warn);border-left-color:#d0a341}.conflict-cell{background:#fff8f0}.print-pages{display:none}.print-page{page-break-after:always;break-after:page;color:#111;font-family:Pretendard Variable,Malgun Gothic,sans-serif}.print-page:last-child{page-break-after:auto;break-after:auto}.print-page-heading{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:10px;padding-bottom:8px;display:flex}.print-page-heading h1{margin:0;font-size:22px}.print-page-heading p{color:var(--soft);margin:3px 0 0;font-size:11px;font-weight:700}.print-hours{font-size:13px;font-weight:900}.print-table-wrap{width:100%}.print-timetable{border-collapse:collapse;table-layout:fixed;border:2px solid #20242b;width:100%}.print-timetable th,.print-timetable td{border:1px solid #767c84}.print-timetable thead th{background:#f1f2f4;height:36px;font-size:12px}.print-timetable tbody th{background:#f7f7f7;width:72px;padding:6px;font-size:11px}.print-timetable td{vertical-align:top;height:72px;padding:6px}.print-timetable .placements{gap:3px}.print-card{border-radius:0;padding:3px 4px;font-size:9px;line-height:1.35}.print-card strong{font-size:10px;display:block}.print-special{border-left:4px solid var(--accent);color:#231b42;background:#e8e3f6;font-weight:800}.print-general{color:#596273;background:#f5f6f8;border:1px solid #d9dde4}.print-teacher{border-left:4px solid var(--block-color);background:color-mix(in srgb,var(--block-color) 10%,white)}.timetable-sheet{break-inside:avoid;margin-bottom:32px}.timetable-sheet__header{margin-bottom:12px}.timetable-sheet__title{margin:0;font-size:20px;font-weight:800}.timetable-sheet__meta,.timetable-sheet__hours{margin:4px 0 0;font-size:13px;font-weight:700}.timetable-sheet__hours{color:#1d4ed8}.timetable-sheet__table{border-collapse:collapse;table-layout:fixed;width:100%}.timetable-sheet__table th,.timetable-sheet__table td{text-align:center;vertical-align:middle;border:1px solid #94a3b8;padding:6px 4px;font-size:12px}.timetable-sheet__table thead th,.timetable-sheet__table tbody th{background:#f1f5f9;font-weight:800}.timetable-sheet__table td{height:46px}.timetable-sheet__special{color:#1d4ed8;font-size:13px;font-weight:800;display:block}.timetable-sheet__general{color:#64748b;font-size:11px;font-weight:600;display:block}.timetable-sheet__room{font-weight:600}#import-file{display:none}@media (width<=980px){.shell{width:min(100% - 20px,1440px);padding-top:22px}.hero{flex-direction:column;align-items:flex-start}.hero-tools{justify-items:start;width:100%}.hero-actions{justify-content:flex-start;width:100%}.privacy-warning{text-align:left}.storage-banner{flex-direction:column;align-items:flex-start}.setup-grid{grid-template-columns:1fr 1fr}.setup-grid .panel:first-child{grid-column:1/-1}.workspace{grid-template-columns:240px minmax(0,1fr)}.insights{grid-column:1/-1}.summary-panel{position:static}.general-form{grid-template-columns:1fr 1fr}.general-form .field:nth-child(3),.general-form .field:nth-child(4),.general-form .button-row{grid-column:1/-1}}@media (width<=560px){.setup-grid{grid-template-columns:1fr}.setup-grid .panel:first-child{grid-column:auto}.setup-drawer>summary{flex-wrap:wrap;align-items:flex-start}.setup-drawer>summary span{flex-basis:100%;padding-left:28px}.workspace{grid-template-columns:1fr}.hero-actions button{white-space:nowrap;flex:1;padding-inline:7px;font-size:12px}.storage-actions{width:100%}.storage-actions button{flex:auto}.toolbar,.view-heading{flex-direction:column;align-items:flex-start}.view-controls,.view-controls .field{width:100%}.general-form{grid-template-columns:1fr}.general-form .field:nth-child(3),.general-form .field:nth-child(4),.general-form .button-row{grid-column:auto}.toolbar .button-row{width:100%}.timetable{min-width:760px}}@media print{@page{size:A4 landscape;margin:10mm}:root,body{background:#fff}.shell{width:100%;padding:0}.hero,.storage-banner,.setup-drawer,#status,.workspace,.general-panel,.privacy-warning{display:none!important}.print-pages{display:block!important}.print-page{width:100%}.timetable-sheet{page-break-after:always;margin-bottom:0}.timetable-sheet:last-of-type{page-break-after:auto}.timetable-sheet__table td{height:64px}.print-card,.print-special,.print-general,.print-teacher,.print-timetable thead th,.print-timetable tbody th{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.student-print-page{page:student}@page student{size:A4 portrait;margin:14mm}.workspace-tabs{flex-wrap:wrap;gap:8px;margin:16px 0;display:flex}.workspace-tabs button{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:6px;padding:10px 16px;font-weight:800}.workspace-tabs button[aria-pressed=true]{background:var(--ink);color:#fff}.general-input-table td{height:auto;padding:8px;position:relative}.general-input-table .field+.field{margin-top:6px}#student-workspace>.timetable-mode{margin-top:20px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}@media print{.workspace-tabs,#student-workspace,#teacher-workspace{display:none!important}}.entry{border:1px solid var(--line);background:var(--surface);max-width:480px;margin:12vh auto;padding:24px}.entry h1{font-size:28px}.entry p{line-height:1.7}.entry label{gap:8px;display:grid}.entry input{border:1px solid var(--line);border-radius:6px;width:100%;padding:12px}.entry button{margin:12px 8px 0 0;padding:10px 14px}.entry [role=alert],.save-error{color:var(--danger)}.account-bar{border-bottom:1px solid var(--line);background:var(--surface);flex-wrap:wrap;align-items:center;gap:12px;padding:12px 24px;font-size:13px;display:flex}.account-bar span{flex:1;min-width:180px}.account-bar button{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:6px 12px}@media (width<=480px){.entry{margin:20px 12px}.account-bar{padding:10px 12px}}@media print{.account-bar,.entry{display:none!important}}
