@font-face{font-family:Open Sans;src:url(/fonts/OpenSans.woff2)format("woff2");font-weight:300 800;font-stretch:75% 100%;font-display:swap}:root{--font:"Open Sans", "Segoe UI", Arial, Helvetica, sans-serif;--navy:#060020;--slate:#2d4156;--heading:#060020;--text:#333;--muted:#666;--faint:#6e6e6e;--bg:#f4f5f8;--surface:#fff;--surface-2:#fafbfc;--line:#e9eaee;--border-strong:#c9ced8;--input-bg:#fafafa;--input-border:#ccc;--accent:#23b3e8;--accent-text:#1278a0;--accent-btn:#147aa6;--accent-btn-hover:#10668b;--on-accent:#fff;--accent-2:#8cc63f;--danger:#c0392b;--warn:#e6a23c;--ok-text:#3b7510;--ok-bg:#eaf5dc;--warn-text:#9a6400;--warn-bg:#fff4e0;--bad-text:#c0392b;--bad-bg:#fdecea;--bad-border:#f5c6c0;--sidebar-bg:#060020;--radius:10px;--shadow:0 1px 2px #0600200f, 0 4px 16px #0600200f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--slate:#b9c5d6;--heading:#eef1f7;--text:#d6dbe4;--muted:#a5aebf;--faint:#8d97ab;--bg:#0d131e;--surface:#161e2c;--surface-2:#1b2535;--line:#2a3446;--border-strong:#3b475b;--input-bg:#101724;--input-border:#3b475b;--accent-text:#1a9ed0;--accent-btn:#23b3e8;--accent-btn-hover:#4cc3ee;--on-accent:#04131c;--danger:#f07167;--warn:#f0b75a;--ok-text:#a6d672;--ok-bg:#8cc63f29;--warn-text:#f3c470;--warn-bg:#e6a23c29;--bad-text:#f07167;--bad-bg:#f0716724;--bad-border:#f0716773;--sidebar-bg:#0a0f1a;--shadow:0 1px 2px #00000073, 0 4px 16px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.55}h1,h2,h3,h4{color:var(--heading);font-weight:700}.caps{letter-spacing:1px;text-transform:uppercase;font-size:12px;font-weight:600}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:var(--accent-text)}.topbar{background:var(--surface);border-bottom:3px solid var(--accent);min-height:60px;box-shadow:0 1px 0 var(--line);z-index:20;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:8px 20px;display:flex;position:relative}.topbar-start{align-items:center;gap:12px;min-width:0;display:flex}.topbar nav,.topbar form{align-items:center;gap:12px;display:flex}.user-email{color:var(--muted);font-size:13px}@media (max-width:820px){.topbar{padding:8px 10px}.user-email{display:none}}.brand{letter-spacing:.2px;color:var(--heading);font-size:20px;font-weight:700;text-decoration:none}.brand span{color:var(--accent)}.brand sup{color:var(--ok-text);margin-left:1px;font-size:.55em;font-weight:600;line-height:0}.year-pill{min-width:0;color:var(--accent-text);text-overflow:ellipsis;white-space:nowrap;background:#23b3e81f;border:1px solid #23b3e859;border-radius:999px;padding:3px 12px;font-size:13px;font-weight:600;overflow:hidden}main{max-width:1200px;margin:32px auto;padding:0 16px}main:has(>.auth){max-width:none;margin:0;padding:0}.auth{background:radial-gradient(circle at 15% 20%, #23b3e840, transparent 45%), radial-gradient(circle at 85% 85%, #8cc63f1f, transparent 40%), linear-gradient(160deg, var(--navy) 0%, #0b1a3a 55%, #2d4156 100%);flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:64px 16px 32px;display:flex;position:relative}.auth-controls{align-items:center;gap:6px;display:flex;position:absolute;top:14px;right:14px}.auth-controls .languages button.ghost,.auth-controls .theme-toggle{color:#d9dce6;border-color:#ffffff40}.auth-controls .languages button.ghost:hover:not(:disabled),.auth-controls .theme-toggle:hover,.auth-controls .languages button[aria-pressed=true]{border-color:var(--accent);color:#fff;background:0 0}.auth-card{background:var(--surface);border-radius:14px;width:100%;max-width:400px;padding:36px 32px 28px;box-shadow:0 20px 60px #00000059}.auth-card .brand{text-align:center;margin-bottom:18px;font-size:26px;display:block}.auth-card h1{text-align:center;font-size:1.25rem}.auth-card button[type=submit]{width:100%;padding:13px}.auth-card p:last-child{margin-bottom:0}@media (max-width:480px){.auth-card{padding:28px 20px 22px}}main .card:not(.wide){max-width:640px;margin-inline:auto}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px}h1{margin-top:0;font-size:1.5rem}.stack{gap:16px;display:grid}label{gap:4px;font-weight:500;display:grid}input,select{font:inherit;border:1px solid var(--input-border);background:var(--input-bg);color:var(--text);border-radius:4px;padding:8px 10px}input:not([type=checkbox],[type=radio]):focus-visible,select:focus-visible{border-color:var(--accent);background:var(--surface);outline:none;box-shadow:0 0 0 3px #23b3e82e}input[aria-invalid=true]{border-color:var(--danger)}.date-input{align-items:stretch;gap:6px;display:flex;position:relative}.date-input input[type=text]{flex:1;min-width:0}.date-input .date-picker{opacity:0;pointer-events:none;border:0;width:1px;height:1px;padding:0;position:absolute;bottom:0;left:0}.date-button{border:1px solid var(--input-border);background:var(--input-bg);color:var(--slate);padding:0 9px;line-height:0}.date-button:where(:hover:not(:disabled)){border-color:var(--accent);background:var(--input-bg);color:var(--accent-text)}.date-button svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}button,.button{font:inherit;letter-spacing:.8px;text-transform:uppercase;background:var(--accent-btn);color:var(--on-accent);cursor:pointer;border:0;border-radius:4px;padding:10px 18px;font-size:13px;font-weight:700;line-height:20px;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:inline-block}button:where(:hover:not(:disabled)),.button:where(:hover){background:var(--accent-btn-hover)}button:disabled{opacity:.55;cursor:not-allowed}button.link{color:var(--accent-text);font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:normal;text-transform:none;background:0 0;border-radius:0;padding:0}button.link:hover:not(:disabled){text-decoration:underline}.ghost,.button.ghost{border:1px solid var(--border-strong);color:var(--heading);letter-spacing:normal;text-transform:none;background:0 0;padding:6px 12px;font-weight:600}.ghost:hover:not(:disabled),.button.ghost:hover{border-color:var(--accent);color:var(--accent-text);background:#23b3e80f}.theme-toggle{border:1px solid var(--line);color:var(--slate);background:0 0;border-radius:6px;padding:5px;line-height:0}.theme-toggle:hover{border-color:var(--accent);color:var(--accent-text)}.theme-toggle svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.theme-toggle .sun,:root[data-theme=dark] .theme-toggle .moon{display:none}:root[data-theme=dark] .theme-toggle .sun{display:inline}.languages{gap:6px;display:flex}.languages button.ghost{border-color:var(--line);color:var(--slate);padding:4px 8px;font-size:12px;line-height:18px}.languages button[aria-pressed=true]{border-color:var(--accent);color:var(--accent-text);cursor:default}.pill{white-space:nowrap;vertical-align:middle;border-radius:9px;padding:1px 9px;font-size:11.5px;font-weight:600;display:inline-block}.pill.ok{background:var(--ok-bg);color:var(--ok-text)}.pill.warn{background:var(--warn-bg);color:var(--warn-text)}.pill.bad{background:var(--bad-bg);color:var(--bad-text)}.pill.idle{background:var(--bg);color:var(--muted)}.stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.stat{border-top:3px solid var(--accent);border-radius:var(--radius);background:var(--surface);height:100%;box-shadow:var(--shadow);color:var(--muted);padding:14px 16px;text-decoration:none;display:grid}.stat.lime{border-top-color:var(--accent-2)}.stat.warn{border-top-color:var(--warn)}.stat.idle{border-top-color:var(--border-strong)}.stat:hover .stat-label{color:var(--accent-text)}.stat-value{color:var(--heading);font-size:26px;font-weight:700;line-height:1.2}.prm-group>summary,.prm-more>summary{cursor:pointer;align-items:center;gap:10px;list-style:none;display:flex}.prm-group>summary::-webkit-details-marker{display:none}.prm-more>summary::-webkit-details-marker{display:none}.prm-group>summary:before,.prm-more>summary:before{content:"▸";color:var(--accent-text)}.prm-group[open]>summary:before,.prm-more[open]>summary:before{content:"▾"}.prm-group>summary h3{margin:0}.panel-note{color:var(--faint);margin:8px 0 4px;font-size:12.5px}.prm-group>.prm-more{margin-bottom:10px}.prm-row{border-top:1px solid var(--line);border-left:3px solid #0000;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;padding:12px 0 12px 10px;display:grid}.prm-row.edited{border-left-color:var(--accent);background:#23b3e80f}.prm-label label{color:var(--heading);font-size:13.5px;font-weight:700;display:block}.prm-label .error{margin:4px 0 0;font-size:12.5px}.prm-help{color:var(--muted);margin:4px 0 0;font-size:12.5px}.prm-help .restore:before{content:"·";margin:0 6px}.prm-help button.link{font-size:12px}.prm-more{margin-top:6px;font-size:12.5px}.prm-more>summary{color:var(--accent-text);font-weight:600}.prm-more .more-body{border-left:3px solid var(--line);margin-top:6px;padding:4px 0 4px 12px;line-height:1.5}.prm-more .more-body p{margin:4px 0}.prm-more .lbl{color:var(--heading);font-weight:700}.prm-more .lbl:after{content:":"}.prm-ctl{align-items:center;gap:10px;display:flex}.prm-ctl .range{flex:1;align-items:center;gap:10px;display:flex}.prm-ctl input[type=range]{min-width:0;accent-color:var(--accent-btn);background:0 0;border:0;flex:1;padding:0}.prm-ctl input[type=number]{width:96px;padding:6px 8px}.prm-save{z-index:1;border-top:3px solid var(--accent);flex-wrap:wrap;align-items:center;gap:10px;padding-block:12px;display:flex;position:sticky;bottom:0}.prm-pending{color:var(--heading);flex:200px;margin:0;font-weight:600}@media (max-width:820px){.prm-row{grid-template-columns:minmax(0,1fr);padding-right:4px}.prm-save{padding:10px 12px}.prm-save button{flex:1}}.limits-frame{min-height:240px;max-height:calc(100dvh - 220px);padding:0;overflow:auto}.limits thead th{z-index:2;background:var(--surface);box-shadow:inset 0 -1px 0 var(--border-strong);color:var(--heading);vertical-align:bottom;font-size:12.5px;position:sticky;top:0}.limits th:first-child{z-index:1;background:var(--surface);box-shadow:inset -1px 0 0 var(--line);white-space:nowrap;position:sticky;left:0}.limits thead th:first-child{z-index:3}.limits th button.sort{color:inherit;font-size:inherit;line-height:inherit;letter-spacing:normal;text-align:inherit;text-transform:none;background:0 0;border-radius:0;align-items:baseline;gap:3px;padding:0;display:inline-flex}.limits th button.sort:hover{color:var(--accent-text)}.limits .sort-mark{min-width:1ch;font-size:10px}.limits td.specialty{white-space:nowrap}.limit-columns{padding-block:10px}.limit-columns summary{cursor:pointer;color:var(--accent-text);font-weight:600}.limit-columns fieldset{border:0;flex-wrap:wrap;gap:6px 20px;margin:10px 0 0;padding:0;display:flex}.limits .col-resize{cursor:col-resize;touch-action:none;width:7px;position:absolute;top:0;bottom:0;right:0}.limits .col-resize:hover,.limits .col-resize:focus-visible{box-shadow:inset -2px 0 0 var(--accent);outline:none}.limits.sized{table-layout:fixed}.limits.sized thead th{overflow-wrap:anywhere}.limits.sized th:first-child,.limits.sized td.specialty{text-overflow:ellipsis;overflow:hidden}.limits.sized th:first-child .limit-warning{max-width:none}.limits tfoot th,.limits tfoot td{z-index:2;background:var(--surface-2);box-shadow:inset 0 1px 0 var(--border-strong);position:sticky;bottom:0}.limits tfoot td.limit{border-left-color:var(--surface-2)}.limits tfoot th:first-child{z-index:3;color:var(--heading)}.limits td.limit{border-left:3px solid #0000;padding-inline:4px}.limits td.edited{border-left-color:var(--accent);background:#23b3e814}.limits tr[data-invalid] th:first-child{box-shadow:inset 3px 0 0 var(--danger)}.limit-cell{align-items:center;gap:2px;width:max-content;display:flex}.limit-cell input{text-align:center;font-variant-numeric:tabular-nums;width:calc(2ch + 8px);padding:3px 0;font-size:14px;font-weight:600}.limit-cell input.outside{color:var(--warn-text);-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.limit-cell button.step{border:1px solid var(--input-border);background:var(--surface);width:18px;color:var(--text);letter-spacing:0;padding:2px 0;font-size:14px;line-height:20px}.limit-cell button.step:hover:not(:disabled){border-color:var(--accent-btn)}.limit-cell button.hs{letter-spacing:0;border:1px solid var(--input-border);background:var(--surface);min-width:24px;color:var(--muted);margin-left:2px;padding:2px 4px;font-size:12px;font-weight:700}.limit-cell button.hs[aria-pressed=true]{border-color:var(--accent-btn);background:var(--accent-btn);color:var(--on-accent)}.limit-cell input.mixed{color:var(--muted);font-style:italic;font-weight:400}.limit-cell button.hs[aria-pressed=mixed]{border-style:dashed}.limits th .limit-warning{white-space:normal;gap:5px;max-width:220px;margin-top:4px;font-size:12px;font-weight:500;display:flex}.limit-warning[data-level=red]{color:var(--danger)}.limit-warning[data-level=amber]{color:var(--warn-text)}.limit-warning span{font-weight:700}.limits td small{font-size:12px;display:block}.actions{align-items:center;gap:16px;display:flex}.muted{color:var(--muted);font-weight:400}.error{color:var(--danger)}h2{margin:0;font-size:1.25rem}h3{margin:8px 0 0;font-size:1.05rem}.year{gap:16px;display:grid}.year .card:not(.wide){margin-inline:0}.year-header{gap:8px;display:grid}.sidebar{z-index:10;background:var(--sidebar-bg);color:#c3c8d4;width:240px;padding:87px 12px 24px;font-size:14px;position:fixed;inset:0 auto 0 0;overflow-y:auto}.sidebar a{color:inherit;border-radius:6px;align-items:center;gap:10px;padding:7px 12px;text-decoration:none;display:flex}.sidebar a:hover{color:#fff}.sidebar a[aria-current=page]{box-shadow:inset 3px 0 0 var(--accent-2);color:#fff;background:#23b3e82e;font-weight:600}.sidebar svg,.nav-toggle svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}.sidebar-back{margin-bottom:12px;font-size:13px}.sidebar ol,.sidebar ul{margin:0;padding:0;list-style:none}.sidebar-groups>li+li{margin-top:16px}.sidebar-label{color:#8a93a6;padding:0 12px 4px;font-size:11px;display:block}.nav-toggle{padding:5px;line-height:0;display:none}.nav-toggle svg{width:18px;height:18px}.sidebar-backdrop{display:none}main:has(.sidebar){max-width:none;margin-left:240px;padding:0 24px}@media (max-width:900px){.nav-toggle{display:inline-block}.sidebar{z-index:40;visibility:hidden;width:min(280px,85vw);padding-top:20px;transition:transform .2s,visibility .2s;transform:translate(-100%)}.sidebar[data-open]{visibility:visible;transform:none}.sidebar-backdrop{z-index:30;background:#06002080;display:block;position:fixed;inset:0}main:has(.sidebar){margin-left:auto;padding:0 16px}}@media (min-width:901px){.nav-toggle{display:inline-block}html[data-sidebar=hidden] .sidebar{display:none}html[data-sidebar=hidden] main:has(.sidebar){margin-left:0}}@media (prefers-reduced-motion:reduce){.sidebar{transition:none}}.year-header h1{margin:0}.year-title{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.teacher-nav{gap:8px;display:flex}.read-only-notice{border:1px solid var(--warn);background:var(--warn-bg);color:var(--warn-text);border-radius:6px;margin:0;padding:8px 12px}.read-only-year{gap:16px;min-width:0;display:grid}.year[data-read-only] a.button[href$=\/new]{display:none}.tabs,.chips{flex-wrap:wrap;gap:4px 16px;display:flex}.tabs a,.chips a{border-bottom:2px solid #0000;padding:4px 0;text-decoration:none}.tabs a[aria-current=page],.chips a[aria-current=page]{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.chips{gap:4px 12px}.inline-list{flex-wrap:wrap;gap:8px 24px;margin:0;padding:0;list-style:none;display:flex}ul.plain{margin:0;padding:0;list-style:none}.split{flex-wrap:wrap;align-items:flex-start;gap:32px;display:flex}table{border-collapse:collapse;width:100%}.split table{width:auto}th,td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:6px 10px}th{font-weight:600}.number{text-align:right;font-variant-numeric:tabular-nums}.counts{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px 24px;margin:0;display:grid}.counts div{border-bottom:1px solid var(--line);justify-content:space-between;gap:8px;display:flex}.counts dd{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.issues{margin:0;padding-left:20px}.checkbox{align-items:center;gap:8px;display:flex}.grid-scroll{overflow-x:auto}.timetable{table-layout:fixed;min-width:720px}.timetable caption{text-align:left;padding-bottom:8px;font-weight:600}.timetable th[scope=row]{width:64px}.timetable th small{display:block}.timetable td{border:1px solid var(--line);height:56px;padding:4px}.timetable td.off{background:repeating-linear-gradient(45deg, transparent 0 6px, var(--line) 6px 7px)}.overview-scroll{max-height:75vh;overflow:auto}.overview{border-collapse:separate;border-spacing:0;font-size:.8125rem}.overview caption{text-align:left;padding-bottom:8px;font-weight:600}.overview th,.overview td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;padding:2px 4px}.overview thead th{z-index:2;background:var(--surface-2);height:26px;position:sticky}.overview thead tr:first-child th{top:0}.overview thead tr:nth-child(2) th{top:26px}.overview th[scope=row],.overview thead tr:first-child th:first-child{z-index:1;background:var(--surface);text-align:left;position:sticky;left:0}.overview thead tr:first-child th:first-child{z-index:3;background:var(--surface-2)}.overview .day-start{border-left:3px solid var(--border-strong)}.overview tr.specialty th{background:var(--surface-2);color:var(--muted);text-align:left;padding:1px 4px;font-weight:600}.overview tr.specialty span{position:sticky;left:4px}.overview td{vertical-align:top;min-width:2.75rem}.overview td a{color:var(--text);text-decoration:none;display:block}.overview td a:hover{text-decoration:underline}.lesson{--stripe:hsl(var(--subject-hue) 62% 44%);background:var(--surface-2);border:1px solid var(--line);border-left:4px solid var(--stripe,var(--border-strong));border-radius:4px;padding:3px 6px;font-size:.85rem;line-height:1.3;display:grid}:root[data-theme=dark] .lesson{--stripe:hsl(var(--subject-hue) 68% 62%)}.lesson+.lesson{margin-top:3px}.lesson .subject{font-weight:600}.section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}button.danger{background:var(--danger)}button.danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 85%, var(--heading))}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:4px;padding:0;font-weight:500}.day-lengths{flex-wrap:wrap;gap:12px;display:flex}.day-lengths input{width:4.5em}.group-row{flex-wrap:wrap;align-items:flex-start;gap:4px 16px;display:flex}.group-row label{flex:16em}.group-row button{margin-top:10px}.draft{align-items:start;gap:16px;display:grid}@media (min-width:1200px){.draft{grid-template-columns:minmax(0,1fr) 340px}}.violations ul,.warnings ul{font-size:.9rem}.violations li,.warnings li{background:var(--surface-2);border-left:3px solid var(--danger);border-radius:6px;padding:8px 10px}.warnings li{border-left-color:var(--warn)}.lesson.broken{outline:2px solid var(--danger);outline-offset:-1px}.lesson.broken .subject:before{content:"⚠ ";color:var(--danger)}.timetable td.gap{box-shadow:inset 0 0 0 2px var(--danger)}.lesson.warned{outline:2px dashed var(--warn);outline-offset:-1px}.lesson.warned .subject:before{content:"△ ";color:var(--warn)}.drop-violations .warning{font-size:.9rem}.warnings h2 small,.violations h2 small{margin-top:4px;font-size:.9rem;display:block}.choices{grid-template-columns:repeat(auto-fill,minmax(min(100%,14em),1fr));gap:8px 24px;display:grid}.choices .checkbox{font-weight:400}.choice-group{align-content:start;gap:4px;display:grid}.lesson[draggable=true]{cursor:grab}.lesson[aria-pressed=true]{background:color-mix(in srgb, var(--accent) 18%, var(--surface-2));border-color:var(--accent);border-left-color:var(--stripe,var(--border-strong))}.lesson.locked .subject:after{content:" 🔒"}.lesson.dropped{opacity:.45;text-decoration:line-through}.absences-table th,.absences-table td{text-align:center;padding:2px 8px}.absences-table td:first-child{text-align:left}.lesson.moved,.moved-legend{box-shadow:inset -3px 0 0 var(--accent);padding-right:9px}.moved-legend{width:fit-content}.timetable td.drop-ok,.tray.drop-ok{box-shadow:inset 0 0 0 2px var(--accent)}.timetable td.drop-warn{box-shadow:inset 0 0 0 2px var(--warn)}.timetable td.drop-bad{box-shadow:inset 0 0 0 2px var(--danger);background:color-mix(in srgb, var(--danger) 10%, transparent)}.drop-preview{min-height:1.5em;margin:0}.drop-violations{color:var(--danger);font-size:.9rem}.notice{border:1px solid var(--bad-border);background:var(--bad-bg);color:var(--bad-text);border-radius:6px;margin:0;padding:8px 12px}.tray{border:1px dashed var(--line);border-radius:6px;padding:8px 12px}.tray h3{margin-top:0}.tray .lesson.unplaced{cursor:grab;padding:4px 8px}.tray .lesson+.lesson{margin-top:0}.generate-runs{gap:12px;padding:0;list-style:none;display:grid}.generate-runs>li{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;gap:4px;padding:10px 12px}.explanation p{margin:4px 0}.explanation h4{font-size:inherit;margin:8px 0 2px}.explanation>ul{gap:4px;margin:0;padding-left:20px;display:grid}.explanation .inline-list{gap:4px 16px;margin-top:2px}.credit-balance{justify-content:flex-end;margin:0 0 12px;display:flex}.credit-balance strong{background:var(--ok-bg);color:var(--ok-text);border-radius:999px;padding:3px 12px;font-size:13px}.credit-balance strong.error{background:var(--bad-bg);color:var(--bad-text)}.credit-adjust{flex-wrap:wrap;align-items:end;gap:8px 12px;display:flex}.credit-adjust input[type=number]{width:7em}.credit-adjust p{flex-basis:100%;margin:0}.admin-schools{display:block;overflow-x:auto}.paint{width:auto}.paint th,.paint td{text-align:center;border:0;padding:2px}.paint td button{border:1px solid var(--line);background:var(--surface);touch-action:none;border-radius:4px;width:44px;height:32px;padding:0;display:block}.rules input{width:8em}.rules th small,.rules td small{font-weight:400;display:block}.timetable td.unavailable,.paint td button[data-state=unavailable]{border-color:var(--danger);background:repeating-linear-gradient(-45deg, transparent 0 6px, color-mix(in srgb, var(--danger) 35%, transparent) 6px 8px)}.timetable td.unavailable.soft,.paint.soft td button[data-state=unavailable]{border-color:var(--warn);background:repeating-linear-gradient(-45deg, transparent 0 6px, color-mix(in srgb, var(--warn) 35%, transparent) 6px 8px)}.paint td button[data-state=preferNot]{border-color:var(--warn);background:color-mix(in srgb, var(--warn) 25%, var(--surface))}.paint td button[data-set-by=teacher]{border-style:dotted;border-width:2px}.paint td button[data-pending]{border-style:dashed;border-width:2px}.paint td button[data-pending]:not([data-state]){border-color:var(--danger)}.quality h2 .score-total{float:right;font-variant-numeric:tabular-nums}p.warning,small.warning{color:var(--warn-text)}.quality{min-width:0;overflow-x:auto}table.score{font-size:.9rem}.quality table.score th,.quality table.score td{padding:4px 6px}table.score tfoot th,table.score tfoot td{border-top:2px solid var(--line);font-weight:600}table.compare th small{font-weight:400;display:block}.draft-score{color:var(--muted);font-variant-numeric:tabular-nums}.draft-score.error{color:var(--danger)}ul.drafts>li{flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.draft-published{color:var(--muted);font-style:italic}form.delete-draft{flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin-left:auto;display:inline-flex}form.delete-draft button{padding:2px 10px;font-size:11.5px}.inline-form .actions{flex-wrap:wrap;align-items:end}.badge{color:var(--accent-text);vertical-align:middle;border:1px solid;border-radius:999px;padding:1px 8px;font-size:.8rem;font-weight:500;display:inline-block}.badge.muted{color:var(--muted)}.draft-actions{flex-wrap:wrap;align-items:start;gap:8px 24px;display:flex}.draft-actions details[open]{flex-basis:100%}.draft-actions summary,.publish summary,.export summary,.rename summary{cursor:pointer;color:var(--accent-text)}.draft-actions details[open] summary,.publish[open] summary,.export[open] summary,.rename[open] summary{margin-bottom:12px}.plan-absence summary,.end-early summary,.history summary,.earlier-runs summary{cursor:pointer;color:var(--accent-text)}form.clear-runs{margin-left:8px;display:inline}form.clear-runs button{padding:2px 10px;font-size:11.5px}.earlier-runs[open] summary{margin-bottom:12px}.public-link{overflow-wrap:anywhere}.public-header{gap:4px;display:grid}.availability td button{touch-action:manipulation}.availability td button[data-kind=preferNot]{border-color:var(--warn);background:repeating-linear-gradient(-45deg, transparent 0 6px, color-mix(in srgb, var(--warn) 35%, transparent) 6px 8px)}.availability td button[data-kind=unavailable]{border-color:var(--danger);background:repeating-linear-gradient(-45deg, transparent 0 6px, color-mix(in srgb, var(--danger) 35%, transparent) 6px 8px)}.availability td button[data-status=pending]{border-style:dashed}.availability td button[data-status=rejected]{border-color:var(--muted);background:repeating-linear-gradient(-45deg, transparent 0 6px, color-mix(in srgb, var(--muted) 25%, transparent) 6px 8px)}.availability td button[data-locked]{border-width:2px;position:relative}.availability td button[data-locked]:after{content:"🔒";font-size:10px;line-height:1;position:absolute;bottom:1px;right:2px}.availability td button:disabled{cursor:not-allowed;opacity:1}.upcoming-note{color:var(--warn-text);margin:0}.temporary-note{border-left:3px solid var(--warn-text);color:var(--warn-text);margin:0;padding:8px 12px}.badge.temporary{color:var(--warn-text)}main:has(>.embed){max-width:none;margin:0;padding:0}.card.embed{box-shadow:none}.embed .full-page{justify-self:start;font-size:13px}.embed-snippet textarea{resize:none;width:100%;font-family:ui-monospace,monospace;font-size:13px}.app-footer{text-align:center;margin-top:2rem;font-size:.8125rem}
