:root{--page-bg:#f5f5f7;--surface:#fff;--text:#1d1d1f;--text-secondary:#6e6e73;--hairline:#d2d2d7;--accent:#0071e3;--accent-hover:#0077ed;--danger:#d32f2f;--radius-card:14px;--radius-control:10px;--shadow-card:0 1px 3px #00000014, 0 4px 16px #0000000a;--font-stack:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--red-bg:#f8e8e6;--red-accent:#c23b2e;--orange-bg:#f4e7d7;--orange-accent:#d0700f;--yellow-bg:#f7f0d5;--yellow-accent:#a8850a;--green-bg:#e2f0de;--green-accent:#38973f;--mint-bg:#daece5;--mint-accent:#279386;--teal-bg:#d9edf0;--teal-accent:#1f8a9e;--cyan-bg:#ddeef8;--cyan-accent:#2d8fd5;--blue-bg:#dce7f2;--blue-accent:#3a7bbf;--indigo-bg:#e0e2f6;--indigo-accent:#4d5bd4;--purple-bg:#ecdff2;--purple-accent:#8e44ad;--pink-bg:#f4dfeb;--pink-accent:#c2247d;--brown-bg:#efe6dd;--brown-accent:#8d6748;--gray-bg:#e8e8ed;--gray-accent:#6e6e73}*{box-sizing:border-box}body{background:var(--page-bg);color:var(--text);font-family:var(--font-stack);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.45}h1,h2,h3{letter-spacing:-.015em;margin:0;font-weight:600}button{font-family:inherit;font-size:inherit;cursor:pointer}input,select{border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface);color:var(--text);padding:8px 12px;font-family:inherit;font-size:14px}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.btn{background:var(--accent);color:#fff;border:none;border-radius:980px;padding:8px 18px;font-size:14px;font-weight:500;transition:background .15s}.btn:hover{background:var(--accent-hover)}.btn:disabled{opacity:.5;cursor:default}.btn--secondary{color:var(--text);background:#0000000f}.btn--secondary:hover{background:#0000001a}.btn--danger{color:var(--danger);background:0 0}.btn--danger:hover{background:#d32f2f14}.btn--small{padding:5px 12px;font-size:13px}.icon-btn{color:var(--text-secondary);background:0 0;border:none;border-radius:8px;padding:4px 8px;font-size:14px;line-height:1}.icon-btn:hover{color:var(--text);background:#0000000f}.field{flex-direction:column;gap:5px;margin-bottom:14px;display:flex}.field>span{color:var(--text-secondary);font-size:13px;font-weight:500}.error-text{color:var(--danger);margin:8px 0;font-size:13px}.empty-hint{color:var(--text-secondary);text-align:center;padding:48px 16px}.topbar{z-index:20;-webkit-backdrop-filter:saturate(1.8)blur(20px);background:#fffc;border-bottom:1px solid #00000014;align-items:center;gap:20px;height:52px;padding:0 24px;display:flex;position:sticky;top:0}.topbar__title{color:var(--text);font-size:17px;font-weight:600;text-decoration:none}.topbar__nav{align-items:center;gap:4px;margin-left:auto;display:flex}.topbar__link{color:var(--text-secondary);border-radius:8px;padding:6px 12px;font-size:14px;text-decoration:none}.topbar__link:hover{color:var(--text);background:#0000000d}.topbar__link--active{color:var(--text);font-weight:500}.topbar__user{color:var(--text-secondary);margin-left:8px;font-size:13px}.page{max-width:1240px;margin:0 auto;padding:28px 24px 64px}.page__header{flex-wrap:wrap;align-items:baseline;gap:16px;margin-bottom:20px;display:flex}.page__header h1{font-size:26px}.page__header .spacer{flex:1}.person-switcher{background:#0000000d;border-radius:980px;flex-wrap:wrap;gap:4px;margin-bottom:22px;padding:4px;display:inline-flex}.person-switcher__btn{color:var(--text-secondary);background:0 0;border:none;border-radius:980px;padding:7px 18px;font-size:14px;font-weight:500;transition:background .15s,color .15s}.person-switcher__btn:hover{color:var(--text)}.person-switcher__btn--active{background:var(--surface);color:var(--text);box-shadow:0 1px 4px #0000001f}.timetable-card{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:18px;overflow-x:auto}.timetable{grid-template-columns:[times]76px repeat(5,minmax(120px,1fr));gap:5px;min-width:760px;display:grid}.timetable__day-header{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.timetable__time{flex-direction:column;grid-column:times;justify-content:center;align-items:flex-end;gap:1px;padding-right:10px;display:flex}.timetable__time-number{font-size:15px;font-weight:600}.timetable__time-range{color:var(--text-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11px}.timetable__gap-line{border:0;grid-column:times}.timetable__break{background:var(--page-bg);color:var(--text-secondary);letter-spacing:.03em;border-radius:8px;grid-column:2/7;justify-content:center;align-items:center;font-size:12px;font-weight:500;display:flex}.lesson-card{background:var(--card-bg,var(--gray-bg));border-left:4px solid var(--card-accent,var(--gray-accent));text-align:left;border-radius:9px;flex-direction:column;gap:1px;min-width:0;padding:7px 10px;display:flex;overflow:hidden}.lesson-card__subject{color:var(--card-accent,var(--gray-accent));white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.lesson-card__line{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}button.lesson-card{border-top:none;border-bottom:none;border-right:none;width:100%;height:100%;transition:filter .12s,transform .12s}button.lesson-card:hover{filter:brightness(.96);transform:scale(1.01)}.timetable__empty-cell{color:#0000;background:0 0;border:1.5px dashed #0000;border-radius:9px;font-size:18px;font-weight:300;transition:border-color .12s,color .12s,background .12s}.timetable__empty-cell:hover{border-color:var(--hairline);color:var(--text-secondary);background:#00000005}.export-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.dialog-backdrop{z-index:50;background:#00000059;justify-content:center;align-items:flex-start;padding:8vh 16px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.dialog{background:var(--surface);border-radius:16px;width:100%;max-width:440px;padding:22px;box-shadow:0 20px 60px #00000040}.dialog h2{margin-bottom:16px;font-size:19px}.dialog__actions{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.dialog__actions .grow{margin-right:auto}.color-picker{flex-wrap:wrap;gap:7px;display:flex}.color-picker__swatch{background:var(--swatch,var(--gray-accent));border:2px solid #0000;border-radius:50%;width:26px;height:26px;padding:0}.color-picker__swatch--active{border-color:var(--text);box-shadow:0 0 0 2px var(--surface) inset}.lines-editor{flex-direction:column;gap:6px;display:flex}.lines-editor__row{align-items:center;gap:6px;display:flex}.lines-editor__row input{flex:1}.panel{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);margin-bottom:20px;padding:20px}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);border-bottom:1px solid var(--hairline);padding:8px 10px;font-size:12px;font-weight:600}.data-table td{border-bottom:1px solid #0000000d;padding:9px 10px}.data-table tr:last-child td{border-bottom:none}.data-table td.actions{text-align:right;white-space:nowrap}.slot-row{grid-template-columns:90px 64px 1fr 88px 88px 60px 88px;align-items:center;gap:8px;padding:4px 0;display:grid}.slot-row--header{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:600}.slot-row input,.slot-row select{width:100%}.slot-row__move{justify-content:flex-end;gap:2px;display:flex}.login-wrap{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{background:var(--surface);box-shadow:var(--shadow-card);border-radius:18px;width:100%;max-width:360px;padding:36px 32px}.login-card h1{text-align:center;margin-bottom:6px;font-size:24px}.login-card p{text-align:center;color:var(--text-secondary);margin:0 0 22px;font-size:14px}.login-card .btn{width:100%;padding:11px;font-size:15px}.print-title{display:none}@media print{@page{size:A4 landscape;margin:10mm}body{background:#fff}.no-print{display:none!important}.page{max-width:none;padding:0}.print-title{margin-bottom:12px;font-size:20px;display:block}.timetable-card{box-shadow:none;padding:0;overflow:visible}.timetable{min-width:0}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}@media (width<=640px){.topbar{gap:8px;padding:0 12px}.topbar__title{font-size:15px}.topbar__link{white-space:nowrap;padding:6px 8px;font-size:13px}.topbar__user{display:none}.topbar__nav{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.topbar__nav::-webkit-scrollbar{display:none}.topbar__nav .icon-btn{white-space:nowrap}.page{padding:14px 10px 48px}.page__header{gap:10px;margin-bottom:14px}.page__header h1{font-size:21px}.person-switcher{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;max-width:100%;margin-bottom:14px;display:flex;overflow-x:auto}.person-switcher::-webkit-scrollbar{display:none}.person-switcher__btn{white-space:nowrap}.timetable-card{border-radius:12px;padding:10px}.timetable{grid-template-columns:[times]62px repeat(5,minmax(92px,1fr));gap:4px;min-width:550px}.timetable__time{padding-right:7px}.timetable__time-number{font-size:13px}.timetable__time-range{font-size:10px}.timetable__day-header{font-size:11px}.lesson-card{border-left-width:3px;border-radius:7px;padding:5px 7px}.lesson-card__subject{font-size:12px}.lesson-card__line{font-size:10.5px}.dialog-backdrop{padding:3vh 8px 8px}.dialog{border-radius:14px;padding:16px}.panel{padding:14px;overflow-x:auto}.slot-row{min-width:560px}}
