:root{--bg:#f7f7f5;--surface:#fff;--text:#1a1a1a;--muted:#5b5b5b;--line:#deddd8;--accent:#0b57d0;--danger:#b3261e;--c0:#2f6fdb;--c0-soft:#e3ecfc;--c1:#b0501c;--c1-soft:#fbe9dd;--c2:#2e7d4f;--c2-soft:#dff1e6;--c3:#7b3fb5;--c3-soft:#eee2f9;--hour:3.6rem;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#161616;--surface:#202020;--text:#ececec;--muted:#a9a9a9;--line:#3a3a3a;--accent:#8ab4f8;--danger:#f2b8b5;--c0:#8ab4f8;--c0-soft:#1d2b44;--c1:#f5a97a;--c1-soft:#3d2618;--c2:#7fd1a0;--c2-soft:#173325;--c3:#c9a4f0;--c3-soft:#30213f;color-scheme:dark}}:root[data-theme=dark]{--bg:#161616;--surface:#202020;--text:#ececec;--muted:#a9a9a9;--line:#3a3a3a;--accent:#8ab4f8;--danger:#f2b8b5;--c0:#8ab4f8;--c0-soft:#1d2b44;--c1:#f5a97a;--c1-soft:#3d2618;--c2:#7fd1a0;--c2-soft:#173325;--c3:#c9a4f0;--c3-soft:#30213f;color-scheme:dark}*{box-sizing:border-box}body{color:var(--text);background:var(--bg);margin:0;font-family:system-ui,sans-serif;line-height:1.5}nav{border-bottom:1px solid var(--line);background:var(--surface);align-items:center;gap:1.25rem;padding:.75rem 1rem;display:flex}main{max-width:72rem;margin:0 auto;padding:1.5rem 1rem 3rem}a{color:var(--accent)}h1{margin:0 0 .25rem}h2{font-size:1.15rem}.muted{color:var(--muted)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.error{color:var(--danger);font-weight:600}button,.button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:var(--bg);cursor:pointer;border-radius:.4rem;padding:.4rem .9rem;font-size:.9rem;text-decoration:none;display:inline-block}.button.secondary{color:var(--accent);background:0 0}.student-list{gap:.5rem;padding:0;list-style:none;display:grid}.student-list>li{background:var(--surface);border:1px solid var(--line);border-radius:.5rem;flex-wrap:wrap;gap:.25rem 1rem;padding:.75rem 1rem;display:flex}.new-student{gap:.5rem;max-width:32rem;display:grid}.new-student input[type=text],.new-student #name{font:inherit;padding:.45rem .6rem}fieldset{border:1px solid var(--line);border-radius:.5rem;gap:.35rem;display:grid}.check{align-items:baseline;gap:.5rem;display:flex}.new-student button{justify-self:start}.planner{grid-template-columns:minmax(0,1fr);gap:1.5rem;margin-top:1rem;display:grid}@media (width>=60rem){.planner{grid-template-columns:17rem minmax(0,1fr);align-items:start}}.courses ul{gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.course{background:var(--surface);border:1px solid var(--line);border-left:.35rem solid var(--course);border-radius:.5rem;padding:.75rem .9rem}.course.active{outline:2px solid var(--course);background:var(--course-soft)}.course h3{margin:0;font-size:1rem}.course-name{color:var(--muted);font-size:.85rem;font-weight:400;display:block}.course p{margin:.3rem 0;font-size:.88rem}.tag{min-width:4.8rem;font-weight:600;display:inline-block}.c0{--course:var(--c0);--course-soft:var(--c0-soft)}.c1{--course:var(--c1);--course-soft:var(--c1-soft)}.c2{--course:var(--c2);--course-soft:var(--c2-soft)}.c3{--course:var(--c3);--course-soft:var(--c3-soft)}.hint{color:var(--muted);font-size:.9rem}.grid-scroll{background:var(--surface);border:1px solid var(--line);border-radius:.5rem;overflow-x:auto}.grid{grid-template-columns:3.2rem repeat(5,minmax(7.5rem,1fr));min-width:42rem;display:grid}.hours{padding-top:2rem}.hours span{height:var(--hour);color:var(--muted);text-align:right;padding-right:.4rem;font-size:.72rem;display:block;transform:translateY(-.5em)}.day{border-left:1px solid var(--line)}.day-name{text-align:center;border-bottom:1px solid var(--line);height:2rem;margin:0;font-size:.85rem;line-height:2rem}.day-body{height:calc(var(--hours) * var(--hour));background-image:linear-gradient(var(--line) 1px, transparent 1px);background-size:100% var(--hour);margin:0;padding:0;list-style:none;position:relative}.block{top:calc(var(--start) * var(--hour) + 1px);height:calc(var(--length) * var(--hour) - 2px);left:calc(var(--lane) / var(--lanes) * 100% + 2px);width:calc(100% / var(--lanes) - 4px);background:var(--course-soft);border-left:.25rem solid var(--course);border-radius:.3rem;flex-direction:column;padding:.25rem .35rem;font-size:.78rem;line-height:1.25;transition:opacity .15s;display:flex;position:absolute;overflow:hidden}.block.dimmed{opacity:.55}.small{color:var(--muted);font-size:.72rem}.group{padding:0}.group form,.group button{width:100%;height:100%;margin:0}.group button{background:color-mix(in srgb, var(--course-soft) 70%, transparent);color:var(--text);text-align:left;border:0;border-radius:0;flex-direction:column;align-items:flex-start;gap:.1rem;padding:.25rem .35rem;font-size:.76rem;line-height:1.25;display:flex}.group button:hover,.group button:focus-visible{background:var(--course-soft);outline:2px solid var(--course)}.group button{background:var(--course-soft)}.option{border:2px dashed var(--course);z-index:1;background:0 0}.option button{background:color-mix(in srgb, var(--course-soft) 70%, transparent)}.option.current{border-style:solid}.tick{display:none}.option.current .tick{display:inline}.planner>*{min-width:0}.block>span,.group button>span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.block[hidden]{display:none}.student-list .enrolled{flex-basis:100%;grid-template-columns:repeat(auto-fill,minmax(min(15rem,100%),1fr));gap:.1rem 1rem;margin:0;padding:0;font-size:.88rem;list-style:none;display:grid}.student-list .enrolled li{background:0 0;border:0;padding:0}.seats{font-weight:600;display:none}.option .seats,.current .seats{display:block}.current:not(.option) .seats{order:1}.seat-status{color:var(--muted)}.option.full{border-style:solid;border-color:var(--line);opacity:.55;filter:grayscale()}.option.full button{cursor:not-allowed;background:repeating-linear-gradient(-45deg, var(--surface), var(--surface) 6px, var(--bg) 6px, var(--bg) 12px)}.day-tabs{display:none}@media (width<=40rem){.day-tabs:not([hidden]){gap:.35rem;margin-bottom:.6rem;display:flex}.day-tabs button{color:var(--accent);background:0 0;flex:1;padding:.45rem .2rem}.day-tabs button[aria-pressed=true]{background:var(--accent);color:var(--bg)}.grid[data-day-view]{grid-template-columns:3.2rem 1fr;min-width:0}.grid[data-day-view] .day:not(.shown){display:none}}.toast{z-index:10;background:var(--text);width:max-content;max-width:calc(100vw - 2rem);color:var(--bg);border-radius:.5rem;align-items:center;gap:.75rem;padding:.6rem .75rem .6rem 1rem;font-size:.92rem;display:flex;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #00000040}.toast[hidden],.toast button[hidden]{display:none}.toast button{background:var(--bg);color:var(--text);border-color:var(--bg)}.toast button.secondary{color:var(--bg);background:0 0}.danger{border-top:1px solid var(--line);margin-top:2.5rem;padding-top:1rem}.danger-button{background:var(--danger);border-color:var(--danger)}.notice{background:var(--surface);border:1px solid var(--line);border-radius:.4rem;padding:.5rem .75rem}.block>span,.group button>span{flex-shrink:0}@media (width<=40rem){.grid[data-day-view]{--hour:4.6rem}}@media (width>=100rem){main.wide{max-width:104rem}.grid{--hour:4.9rem}}.theme-toggle{color:var(--accent);background:0 0;align-items:center;gap:.35rem;margin-left:auto;padding:.2rem .6rem;font-size:.85rem;display:inline-flex}.theme-toggle[hidden]{display:none}.theme-toggle svg{flex-shrink:0;width:1rem;height:1rem}@media (width<=22rem){.theme-toggle .label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.calendar-export{border-top:1px solid var(--line);max-width:48rem;margin-top:2.5rem;padding-top:1rem}.calendar-buttons{flex-wrap:wrap;gap:.6rem;margin-block:.75rem;display:flex}
