.timetable-hero{align-items:center}.hero-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.timetable-toolbar{padding:12px}.tt-filter-form{display:grid;grid-template-columns:140px minmax(180px,1.3fr) 140px 120px auto;gap:9px;align-items:end}.tt-filter-form label{display:grid;gap:5px;font-size:8px;font-weight:850;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.tt-filter-form select,.tt-filter-form input{min-height:36px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);padding:7px 9px;font-size:10px}.week-nav{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 12px}.week-nav>div{min-width:280px;text-align:center}.week-nav>div span{display:block;color:var(--green);font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:.7px}.week-nav>div b{display:block;margin-top:3px;font-size:11px}.timetable-panel{padding:0;overflow:hidden}.tt-caption{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 16px;border-bottom:1px solid var(--line2)}.tt-caption h2{font-size:17px;margin:4px 0 0}.tt-legend{display:flex;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:8px}.tt-legend span{display:flex;align-items:center;gap:5px}.tt-legend i{width:9px;height:9px;border-radius:3px}.tt-legend .c0{background:#bbdcff}.tt-legend .c2{background:#c7f0d6}.tt-legend .c4{background:#f6d9a8}.tt-legend .c6{background:#e5d1ff}.timetable-scroll{overflow:auto;overscroll-behavior-inline:contain}.timetable-grid{display:grid;grid-template-columns:100px repeat(var(--tt-cols),minmax(150px,1fr));min-width:1160px;background:var(--line2);gap:1px}.tt-corner,.tt-period-head,.tt-day-head,.tt-cell{background:var(--surface)}.tt-corner,.tt-period-head{min-height:58px;display:flex;flex-direction:column;align-items:center;justify-content:center}.tt-corner b,.tt-period-head b{font-size:12px}.tt-corner small,.tt-period-head small{margin-top:2px;color:var(--muted);font-size:7px}.tt-day-head{min-height:112px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px;position:sticky;left:0;z-index:2}.tt-day-head b{width:31px;height:31px;display:grid;place-items:center;border-radius:10px;background:var(--surface2);font-size:11px}.tt-day-head span{font-size:8px;font-weight:850}.tt-day-head small{font-size:7px;color:var(--muted)}.tt-day-head.is-today{background:linear-gradient(180deg,#effbf4,#fff)}.tt-day-head.is-today b{background:var(--green);color:#fff}.tt-cell{position:relative;min-height:112px;padding:5px;display:grid;gap:5px;align-content:stretch}.tt-cell.is-today-col{background:#fbfffc}.tt-empty{align-self:center;justify-self:center;color:#c4d3ca;font-size:10px}.tt-lesson{position:relative;min-height:100px;padding:9px 9px 8px;border-radius:9px;border:1px solid rgba(20,70,50,.08);overflow:hidden;box-shadow:0 1px 0 rgba(20,60,45,.04)}.tt-lesson.color-0{background:#dcecff}.tt-lesson.color-1{background:#e6ddff}.tt-lesson.color-2{background:#dff5e6}.tt-lesson.color-3{background:#ffe1ec}.tt-lesson.color-4{background:#ffedce}.tt-lesson.color-5{background:#d9f2f2}.tt-lesson.color-6{background:#eee1ff}.tt-lesson.color-7{background:#fff4bf}.tt-lesson-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.tt-lesson-top span{font-size:7px;text-transform:uppercase;letter-spacing:.5px;font-weight:900;color:#436456}.tt-lesson-top small{font-size:7px;font-weight:900;color:#6d7d75}.tt-lesson h3{margin:6px 18px 4px 0;font-size:10px;line-height:1.25;color:#173d2d}.tt-lesson p{margin:0 0 5px;font-size:7.5px;color:#36594a}.tt-lesson p b{font-weight:850}.tt-meta{display:flex;gap:7px;flex-wrap:wrap;color:#4a6a5b;font-size:7px}.tt-time{display:block;margin-top:6px;font-size:7px;color:#567265;font-weight:800}.tt-edit{position:absolute;right:6px;top:27px;width:22px;height:22px;display:grid;place-items:center;border-radius:7px;background:rgba(255,255,255,.72);color:#1b6e4d;text-decoration:none;font-size:9px}.tt-edit:hover{background:#fff;transform:translateY(-1px)}.timetable-editor{max-width:1000px}.tiny-btn.danger{color:#b84141;border-color:#edcaca;background:#fff7f7}
html[data-theme="dark"] .tt-filter-form select,html[data-theme="dark"] .tt-filter-form input{background:#0b2137;color:#fff;border-color:var(--line)}html[data-theme="dark"] .tt-day-head.is-today{background:#143426}html[data-theme="dark"] .tt-cell.is-today-col{background:#102b21}html[data-theme="dark"] .tt-lesson{filter:saturate(.78) brightness(.78)}html[data-theme="dark"] .tt-lesson h3{color:#102d22}html[data-theme="dark"] .tt-edit{background:rgba(255,255,255,.82)}
@media(max-width:900px){.tt-filter-form{grid-template-columns:1fr 1fr}.tt-filter-form>button{grid-column:span 2}.tt-caption{align-items:flex-start;flex-direction:column}.week-nav>div{min-width:0;flex:1}.timetable-grid{grid-template-columns:82px repeat(var(--tt-cols),minmax(136px,1fr));min-width:1040px}}
@media(max-width:560px){.tt-filter-form{grid-template-columns:1fr}.tt-filter-form>button{grid-column:auto}.week-nav{gap:6px}.week-nav>div b{font-size:9px}.week-nav>div span{font-size:7px}.week-nav .ghost{display:none}.timetable-grid{grid-template-columns:70px repeat(var(--tt-cols),minmax(128px,1fr));min-width:970px}.tt-day-head{padding:4px}.tt-day-head span{display:none}.tt-cell{padding:4px}.tt-lesson{padding:8px}}
@media print{.sidebar,.topbar,.bottom-nav,.no-print,.ambient{display:none!important}.app{margin:0!important}.content{padding:0!important}.panel{box-shadow:none!important}.timetable-panel{border:0!important}.timetable-scroll{overflow:visible!important}.timetable-grid{min-width:0!important;grid-template-columns:70px repeat(7,1fr)!important}.tt-cell{min-height:96px!important}.tt-lesson{box-shadow:none!important}.tt-lesson h3{font-size:8px!important}.tt-day-head{position:static!important}.timetable-hero{display:block!important;margin:0 0 8px!important}.timetable-hero p{display:none!important}}
.excel-flow-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.excel-step{display:flex;gap:10px;align-items:flex-start;padding:14px}.step-no{flex:0 0 32px;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--green);color:#fff;font-weight:900;font-size:12px}.excel-step b{font-size:10px}.excel-step p{margin:4px 0 0;color:var(--muted);font-size:8px;line-height:1.5}.excel-upload-panel{padding:14px}.excel-upload-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:stretch}.excel-dropzone{min-height:96px;border:1px dashed #98cbb5;border-radius:14px;background:linear-gradient(180deg,#f4fbf7,#fff);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;cursor:pointer;text-align:center;padding:14px}.excel-dropzone:hover{border-color:var(--green);background:#f2fbf6}.excel-dropzone input{position:absolute;opacity:0;pointer-events:none}.excel-icon{font-size:26px;color:var(--green)}.excel-dropzone b{font-size:10px}.excel-dropzone small{font-size:8px;color:var(--muted)}.excel-help{margin-top:10px;padding:9px 11px;border-radius:10px;background:var(--surface2);font-size:8px;color:var(--muted);line-height:1.55}.excel-help b{color:var(--text)}.excel-upload-actions{display:grid;gap:8px;min-width:230px}.excel-upload-actions label{display:grid;gap:5px;font-size:8px;font-weight:850;color:var(--muted);text-transform:uppercase}.excel-upload-actions select{min-height:38px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:7px 9px;font-size:9px}.excel-upload-actions .primary{min-height:44px}.import-summary-panel,.import-preview-panel,.import-history-panel{margin-top:12px}.import-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}.import-kpi{padding:12px;border:1px solid var(--line2);border-radius:12px;background:var(--surface2)}.import-kpi span,.import-kpi small{display:block;font-size:8px;color:var(--muted)}.import-kpi b{display:block;margin:3px 0;font-size:22px}.import-kpi.ok b{color:#168657}.import-kpi.duplicate b{color:#6b7280}.import-kpi.conflict b{color:#c27a12}.import-kpi.error b{color:#c23b3b}.import-confirm-box{display:grid;grid-template-columns:minmax(210px,.7fr) minmax(260px,1.4fr) auto;gap:10px;align-items:end;padding:12px;border:1px solid #b9dbc9;border-radius:12px;background:#f7fcf9}.import-mode-card{display:grid;gap:3px;padding:9px 10px;border:1px solid var(--line2);border-radius:10px;background:#fff}.import-mode-card span{font-size:7px;color:var(--muted);text-transform:uppercase;font-weight:850}.import-mode-card b{font-size:9px}.confirm-copy{font-size:8px;color:var(--muted);line-height:1.5}.confirm-copy b{color:var(--text)}.replace-blocked{margin-top:10px;padding:11px 12px;border:1px solid #efc0c0;border-radius:11px;background:#fff6f6;color:#9a3434;font-size:8px;line-height:1.5}.replace-blocked b{display:block;margin-bottom:2px;font-size:9px}.preview-filter-buttons{display:flex;gap:6px}.preview-filter-buttons .active{background:var(--green);color:#fff;border-color:var(--green)}.import-preview-wrap{max-height:560px;overflow:auto}.import-preview-table{min-width:1100px}.import-preview-table thead{position:sticky;top:0;z-index:2}.import-preview-table td small{display:block;color:var(--muted);margin-top:2px}.import-status{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;font-size:7px;font-weight:900;text-transform:uppercase;letter-spacing:.3px}.import-status.ready{background:#dcf7e8;color:#11754b}.import-status.duplicate{background:#edf0f3;color:#5d6670}.import-status.conflict{background:#fff0cd;color:#99630d}.import-status.error{background:#ffe1e1;color:#a82d2d}.import-message{max-width:340px;font-size:8px;line-height:1.45}.status-pill{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;font-size:7px;font-weight:850}.status-pill.info{background:#e5efff;color:#315f9e}.status-pill.success{background:#dcf7e8;color:#11754b}.status-pill.danger{background:#ffe1e1;color:#a82d2d}
html[data-theme="dark"] .excel-dropzone,html[data-theme="dark"] .import-confirm-box,html[data-theme="dark"] .import-mode-card{background:var(--surface);color:var(--text)}html[data-theme="dark"] .excel-upload-actions select{background:#0b2137;color:#fff;border-color:var(--line)}
@media(max-width:900px){.excel-flow-grid{grid-template-columns:1fr}.excel-upload-form{grid-template-columns:1fr}.excel-upload-actions{min-width:0}.import-kpis{grid-template-columns:1fr 1fr}.import-confirm-box{grid-template-columns:1fr}.import-confirm-box .primary{min-height:42px}}
@media(max-width:560px){.import-kpis{grid-template-columns:1fr 1fr}.excel-step{padding:11px}.excel-dropzone{min-height:84px}.import-kpi b{font-size:18px}}
