@charset "UTF-8";
:root{--ink:#172b35;--muted:#627781;--teal:#087d70;--teal-dark:#075d54;--line:#e2e9eb;--bg:#f5f7f9;--white:#fff;--radius:14px;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);font-size:16px;line-height:1.5}*{box-sizing:border-box}body{margin:0;background:var(--bg)}a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}button,input,select{font:inherit}button,a,input,select,summary{touch-action:manipulation}:focus-visible{outline:3px solid #298dec;outline-offset:3px}button{cursor:pointer}button:disabled{opacity:.65;cursor:wait}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:white;border-right:1px solid var(--line);padding:34px 20px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;font-size:34px;letter-spacing:-1.5px;font-weight:750;color:var(--ink);gap:9px}.brand:hover{text-decoration:none}.brand-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--teal);color:#fff;font-size:26px;letter-spacing:-3px;padding-right:3px}.brand-dot{color:var(--teal);margin-left:-7px}.workspace-label{font-size:12px;letter-spacing:1.4px;color:var(--muted);margin:46px 12px 16px}.nav-link{display:flex;align-items:center;gap:14px;padding:12px 14px;color:#596c76;border-radius:8px;margin:3px 0;font-size:14px;font-weight:600}.nav-link:hover{background:#f4f7f8;text-decoration:none}.nav-link.active{color:var(--teal-dark);background:#e5f4ef}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding-top:20px;display:flex;gap:10px;align-items:center;font-size:14px}.sidebar-bottom small{display:block;color:var(--muted);font-size:12px}.sidebar-bottom form{margin-left:auto}.avatar{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:#eef3f6;color:#3e5968}.logout{border:0;background:transparent;color:var(--muted);font-size:14px;padding:5px}.shell{margin-left:250px;min-height:100vh;display:flex;flex-direction:column}.topbar{min-height:75px;background:rgba(255,255,255,.9);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:18px 36px;font-size:14px;gap:15px}.breadcrumb{color:var(--muted);margin-left:12px}.badge{font-size:12px;font-weight:600;display:inline-block;padding:5px 10px;border-radius:6px;white-space:nowrap}.neutral{background:#f0f4f6;color:#59717d}.green{background:#e5f6ee;color:#13633e}.amber{background:#fff1d8;color:#825b12}main{padding:34px 36px 50px;max-width:1800px;width:100%;margin:0 auto;flex:1}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 28px}.eyebrow{font-size:12px;letter-spacing:1.7px;font-weight:700;color:var(--teal);margin:0 0 10px}h1{font-size:30px;font-weight:650;letter-spacing:-.9px;line-height:1.25;margin:0 0 10px}h2{font-size:19px;letter-spacing:-.35px;line-height:1.3;margin:0 0 14px;font-weight:650}p{color:var(--muted);margin:10px 0 18px}.page-heading p:last-child{margin-bottom:0;font-size:14px}.button{display:inline-flex;gap:7px;justify-content:center;align-items:center;min-height:43px;border-radius:8px;padding:10px 17px;border:1px solid transparent;font-weight:600;font-size:14px;line-height:1.4;text-align:center}.button:hover{text-decoration:none;filter:brightness(.97)}.primary{background:var(--teal);color:white}.secondary{background:white;border-color:#d6e0e3;color:var(--ink)}.dark{background:var(--ink);color:white}.danger{background:#b8323d;color:white}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.stat{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px}.stat>span{font-size:14px;color:var(--muted)}.stat>strong{display:block;font-size:36px;letter-spacing:-1px;font-weight:650;margin:9px 0 12px;line-height:1.2}.stat small{font-size:17px;color:#8d9ba1;font-weight:400}.stat a{font-size:12px}.card{padding:25px;background:white;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:24px;min-width:0}.dashboard-grid{display:grid;grid-template-columns:1.18fr 1fr;gap:24px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.section-heading h2{margin:0}.section-heading .eyebrow{margin-bottom:8px}.week-card{background:linear-gradient(120deg,#fff 25%,#f2faf7)}.week-card>p{font-size:14px}.week-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:25px 0}.week-strip>span{font-size:12px;text-align:center;padding:12px 6px;background:#fff;border:1px solid #dfeae6;border-radius:9px;color:var(--muted)}.week-strip strong{display:block;font-size:23px;color:var(--ink);font-weight:550;margin-top:5px}.progress-label{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}progress{width:100%;height:7px;border:0;border-radius:6px;overflow:hidden;margin:10px 0;background:#e6eeeb}progress::-webkit-progress-bar{background:#e6eeeb}progress::-webkit-progress-value{background:var(--teal)}progress::-moz-progress-bar{background:var(--teal)}.card-footer{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-top:12px}.card-footer>span{font-size:12px;color:var(--muted)}.steps>a{display:flex;align-items:center;gap:16px;padding:20px 0;color:var(--ink);border-bottom:1px solid var(--line)}.steps>a:last-child{border:0;padding-bottom:0}.steps>a>b{background:#f0f5f6;border-radius:10px;padding:10px;font-size:14px;font-weight:500;color:var(--muted)}.steps>a>span{margin-left:auto}.steps strong{font-size:14px}.steps p{font-size:12px;margin:5px 0 0}.text-link{font-size:14px;font-weight:600}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px;text-align:left}thead{background:#f7f9fa;color:#6b7e88}th{font-size:12px;font-weight:600;letter-spacing:.5px}th,td{padding:15px 16px;border-bottom:1px solid #eaf0f2}tbody tr:last-child td,tbody tr:last-child th{border-bottom:0}tbody tr:hover{background:#fcfdfd}.class-label{font-weight:650;background:#f2f5f7;padding:5px 10px;border-radius:5px}.actions{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.actions a{font-size:14px}.danger-text{color:#b22d3a}.search input{width:250px}.empty{text-align:center;color:var(--muted);padding:32px}.empty-hint{font-size:14px;padding:16px;background:white;border:1px dashed #cbdcda;border-radius:10px;margin-top:16px}.form-card{max-width:720px;padding:30px}.form-card p{margin-bottom:23px}label{display:block;color:var(--ink);font-size:14px;font-weight:550;margin-bottom:8px}input:not([type=checkbox]):not([type=hidden]),select,textarea{display:block;width:100%;border:1px solid #cbd7dc;border-radius:7px;background:#fff;padding:11px 12px;color:var(--ink);min-height:44px;font-size:14px}input[type=checkbox]{width:17px;height:17px;accent-color:var(--teal);vertical-align:middle;margin-right:8px}label:has(input[type=checkbox]){font-weight:400}.form-actions{display:flex;gap:12px;border-top:1px solid var(--line);padding-top:22px;margin-top:24px}.errorlist{list-style:none;padding:13px 16px;border:1px solid #e9bfc3;background:#fff1f2;color:#a51d2c;border-radius:7px;font-size:14px}.helptext,.help{font-size:12px;color:var(--muted)}.messages{margin-bottom:20px}.message{padding:15px 18px;border-radius:9px;margin-bottom:14px;font-size:14px;border:1px solid}.message.success{color:#156343;background:#eaf8ef;border-color:#c8e6d5}.message.error{color:#a5202c;background:#fff0f1;border-color:#efc3c8}.message.warning{color:#795516;background:#fff6e7;border-color:#ebd8b5}.two-columns{display:grid;grid-template-columns:1.1fr 1fr;gap:24px}.checklist{padding:0;list-style:none;margin:25px 0 30px}.checklist li{padding:9px 0;font-size:14px}.checklist li:before{content:'✓';color:var(--teal);margin-right:12px;font-weight:bold}.danger-zone{border-color:#ebd3d5}.danger-zone h2{color:#9f3741}.generation-status{color:var(--teal);font-weight:600}.schedule-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 22px;flex-wrap:wrap}.day-tabs{display:flex;gap:5px;background:#eaf0f2;padding:5px;border-radius:9px;flex-wrap:wrap}.day-tabs a{padding:9px 16px;font-size:14px;color:#61757f;border-radius:6px;font-weight:550}.day-tabs a.selected{background:white;color:var(--teal);box-shadow:0 1px 4px #18352b14}.teacher-picker{margin:0}.teacher-picker select{min-width:245px}.schedule-card{padding:24px 0 0}.schedule-card .section-heading{padding:0 24px}.timetable{table-layout:fixed;min-width:680px}.timetable th:first-child{width:100px}.timetable th,.timetable td{text-align:center;padding:10px;border:1px solid #e9eff1;height:63px}.timetable thead th{height:45px}.timetable tbody th{color:#344e5c;font-weight:650;font-size:14px}.lesson{display:flex;position:relative;align-items:center;justify-content:center;flex-direction:column;min-height:40px;border-radius:7px;font-size:16px}.lesson:hover{text-decoration:none;outline:2px solid #7baea6}.tone-teal{background:#e7f4ee;color:#276c58}.tone-blue{background:#eaf0fb;color:#345c94}.lesson strong{font-weight:600}.lesson small{font-size:12px;font-weight:400;margin-top:3px}.vacant{color:#c0cbd0}.tooltip{position:absolute;z-index:10;bottom:calc(100% + 5px);left:50%;transform:translateX(-50%);width:max-content;max-width:230px;background:#1a3540;color:white;border-radius:8px;padding:10px 14px;font-size:12px;text-align:left;box-shadow:0 4px 10px #0002;pointer-events:none;visibility:hidden}.lesson:hover .tooltip,.lesson:focus-visible .tooltip{visibility:visible}.timetable tbody tr:first-child .tooltip{bottom:auto;top:calc(100% + 5px)}.schedule-note{display:flex;justify-content:space-between;gap:20px;padding:18px 24px;color:var(--muted);font-size:12px}.schedule-note i{display:inline-block;width:9px;height:9px;background:var(--teal);border-radius:3px;margin-right:5px}.blocked{font-size:12px;color:#9f6064;background:#fff1f1;padding:8px;border-radius:5px;display:block}.teacher-table{min-width:850px}.teacher-table th:first-child{width:130px}.teacher-table .lesson{min-height:65px;padding:8px}details summary{cursor:pointer;font-weight:600}details li{font-size:14px;margin:10px 0}footer{margin:0 36px;padding:20px 0;border-top:1px solid var(--line);font-size:12px;color:#75868e;display:flex;justify-content:space-between}.menu-toggle{display:none}.skip-link{position:absolute;top:-60px;background:white;padding:10px;z-index:99}.skip-link:focus{top:5px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.unauthenticated{margin-left:0}.unauthenticated main{display:grid;align-items:center;max-width:1200px}.login-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:90px;align-items:center;padding:60px 0}.login-intro .brand{margin-bottom:70px}.login-intro h1{font-size:42px;letter-spacing:-1.5px;line-height:1.18}.login-intro>p{max-width:390px}.login-week{display:flex;justify-content:space-between;gap:12px;margin-top:40px;padding:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--teal);font-size:14px;letter-spacing:1px}.login-week span{color:#8da2a9}.login-card{padding:38px;margin:0;box-shadow:0 14px 50px #1b454b08}.login-card h2{font-size:25px}.login-card .button{width:100%}.login-card .help{margin-bottom:0;text-align:center}.login-card form{margin-top:28px}[hidden]{display:none!important}
@media(min-width:1550px){main{padding-left:48px;padding-right:48px}.stats{gap:24px}.stat{padding:26px}}
@media(max-width:1150px){.sidebar{width:220px;padding:28px 14px}.shell{margin-left:220px}.unauthenticated{margin-left:0}main{padding:26px 24px}.topbar{padding:18px 24px}.stats{gap:12px}.stat{padding:18px}.stat>strong{font-size:30px}.dashboard-grid{grid-template-columns:1fr}.page-heading h1{font-size:27px}.two-columns{grid-template-columns:1fr}.login-layout{gap:40px}.login-intro h1{font-size:34px}}
@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:transform .18s ease;width:250px;top:62px}.menu-open .sidebar{transform:translateX(0);box-shadow:12px 0 40px #17323c20}.shell{margin-left:0}.menu-toggle{display:block;background:white;border:1px solid var(--line);border-radius:6px;font-size:20px}.topbar{padding:10px 16px;min-height:62px;position:sticky;top:0;z-index:30}.topbar>.badge,.breadcrumb{display:none}.topbar>span:nth-child(2){margin-right:auto}main{padding:26px 16px}.page-heading{align-items:flex-start;flex-direction:column;gap:16px}.page-heading h1{font-size:27px}.stats{grid-template-columns:repeat(2,1fr);gap:12px}.stat>strong{font-size:30px}.card{padding:20px}.dashboard-grid{gap:0}.week-strip{gap:6px}.section-heading{flex-wrap:wrap}.card-footer{align-items:flex-start;flex-direction:column}.day-tabs{width:100%;gap:3px}.day-tabs a{padding:9px;font-size:12px;flex:1;text-align:center}.schedule-card{padding:20px 0 0}.schedule-note{flex-direction:column;gap:8px}.teacher-picker,.teacher-picker select{width:100%}.form-card{padding:22px}.form-actions{flex-wrap:wrap}.search,.search input{width:100%}.actions{gap:10px}.table-wrap th,.table-wrap td{padding:12px;white-space:nowrap}.teacher-table .lesson small{white-space:normal}.timetable td{padding:8px}.login-layout{grid-template-columns:1fr;gap:30px;padding:5px 0}.login-intro .brand{margin-bottom:30px}.login-intro h1{font-size:30px}.login-week{display:none}.login-card{padding:25px}.login-intro>p:not(.eyebrow){display:none}footer{margin:0 16px}footer>span{display:none}}
@media print{.sidebar,.topbar,footer,.button,.text-link,.schedule-toolbar,.messages{display:none!important}.shell{margin:0}body{background:white}main{padding:0}.card{padding:0;border:0}.timetable{min-width:0}.table-wrap{overflow:visible}.lesson{color:black;background:white}.page-heading{margin:0 0 20px}.teacher-table td{white-space:normal}.blocked{background:white;color:#555}}

.class-checkboxes{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;padding:14px;border:1px solid var(--line);border-radius:9px;background:#f7f9fa;margin:10px 0}.class-checkboxes label{display:flex;align-items:center;min-height:40px;margin:0;padding:8px;background:white;border:1px solid var(--line);border-radius:6px;cursor:pointer}.class-checkboxes label:has(input:checked){background:#e5f4ef;border-color:var(--teal);color:var(--teal-dark)}.class-checkboxes input{flex-shrink:0}
.nav-link .nav-icon{width:22px;height:22px;min-width:22px;min-height:22px;flex:0 0 22px;display:block;color:inherit}.nav-link span.nav-icon{font-size:22px;line-height:22px;text-align:center}

.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin-bottom:24px}.stats-grid h2{color:var(--teal);font-size:30px;margin:10px 0}.form-actions{flex-wrap:wrap}
.sidebar nav{min-height:0;overflow-y:auto;flex:1;padding-bottom:12px}.sidebar>.brand,.sidebar>.workspace-label,.sidebar-bottom{flex-shrink:0}.sidebar-bottom>div{min-width:0;overflow-wrap:anywhere}.sidebar-bottom .avatar{flex-shrink:0}.sidebar .workspace-label{margin-top:24px}
