@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--bg: #f7f5f1;--surface: #fffdfa;--surface-2: #f1eee8;--surface-3: #e7e3da;--border: rgba(24, 22, 19, .11);--border-strong: rgba(24, 22, 19, .22);--text: #191713;--text-2: #55504a;--text-3: #6a645c;--accent: #1b4f9c;--on-accent: #ffffff;--accent-soft: #e4edfb;--focus: #2563eb;--agent: #7b3fb8;--on-agent: #ffffff;--agent-soft: #f2e9fb;--edge: inset 0 1px 0 rgba(255, 255, 255, .9);--ease: cubic-bezier(.2, .6, .2, 1);--t-fast: .12s var(--ease);--t-base: .18s var(--ease);--wharton: #deeaf6;--wharton-ink: #10416f;--engineering: #fbe4d5;--engineering-ink: #8a3b12;--masters: #e2f0d9;--masters-ink: #2f5a1e;--done: #2f9e44;--done-bg: #e5f6e8;--done-ink: #1c7a30;--planned: #d4a017;--planned-bg: #fdf4dd;--planned-ink: #8a6500;--unplaced: #e8730c;--unplaced-bg: #fdeadb;--unplaced-ink: #a8500a;--unfilled: #cc2f2f;--unfilled-bg: #fbe6e6;--unfilled-ink: #b02121;--overlimit: #6b7483;--overlimit-bg: #e9ecef;--overlimit-ink: #5c6674;--toolbar-h: 42px;--s1: 2px;--s2: 4px;--s3: 6px;--s4: 8px;--s5: 12px;--s6: 16px;--s7: 24px;--fs-1: 10px;--fs-2: 11px;--fs-3: 12px;--fs-4: 13px;--fs-5: 15px;--fs-6: 18px;--fs-7: 22px;--radius-sm: 4px;--radius: 6px;--radius-lg: 10px;--radius-pill: 999px;--shadow-1: 0 1px 2px rgba(28, 22, 14, .05);--shadow-2: 0 1px 2px rgba(28, 22, 14, .05), 0 10px 26px rgba(28, 22, 14, .08);--shadow-3: 0 1px 2px rgba(28, 22, 14, .06), 0 22px 48px rgba(28, 22, 14, .14);--mono: "JetBrains Mono Variable", ui-monospace, "SF Mono", "Cascadia Mono", Menlo, monospace;--sans: "Inter Variable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #131210;--surface: #1b1a17;--surface-2: #232120;--surface-3: #2d2a27;--border: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .2);--edge: inset 0 1px 0 rgba(255, 255, 255, .055);--text: #f0ede7;--text-2: #a9a29a;--text-3: #9a938a;--accent: #6ea8fe;--on-accent: #14171c;--accent-soft: #1d2f4d;--agent: #c4a2e8;--on-agent: #1b1614;--agent-soft: #2f2440;--focus: #6ea8fe;--wharton: #17324d;--wharton-ink: #a9cdf2;--engineering: #4a2c1a;--engineering-ink: #f0b48a;--masters: #24401d;--masters-ink: #a9d99a;--done: #51cf66;--done-bg: #16321c;--done-ink: #6ede80;--planned: #e3b341;--planned-bg: #392f10;--planned-ink: #ecc55f;--unplaced: #f08c3a;--unplaced-bg: #3e2612;--unplaced-ink: #f5a35c;--unfilled: #ff6b6b;--unfilled-bg: #3c1a1a;--unfilled-ink: #ff8787;--overlimit: #949eab;--overlimit-bg: #2b313a;--overlimit-ink: #a7b0bc;--shadow-1: 0 1px 2px rgba(0, 0, 0, .45);--shadow-2: 0 1px 2px rgba(0, 0, 0, .45), 0 10px 26px rgba(0, 0, 0, .38);--shadow-3: 0 1px 2px rgba(0, 0, 0, .5), 0 22px 48px rgba(0, 0, 0, .48)}}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark;--bg: #131210;--surface: #1b1a17;--surface-2: #232120;--surface-3: #2d2a27;--border: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .2);--edge: inset 0 1px 0 rgba(255, 255, 255, .055);--text: #f0ede7;--text-2: #a9a29a;--text-3: #9a938a;--accent: #6ea8fe;--on-accent: #14171c;--accent-soft: #1d2f4d;--agent: #c4a2e8;--on-agent: #1b1614;--agent-soft: #2f2440;--focus: #6ea8fe;--wharton: #17324d;--wharton-ink: #a9cdf2;--engineering: #4a2c1a;--engineering-ink: #f0b48a;--masters: #24401d;--masters-ink: #a9d99a;--done: #51cf66;--done-bg: #16321c;--done-ink: #6ede80;--planned: #e3b341;--planned-bg: #392f10;--planned-ink: #ecc55f;--unplaced: #f08c3a;--unplaced-bg: #3e2612;--unplaced-ink: #f5a35c;--unfilled: #ff6b6b;--unfilled-bg: #3c1a1a;--unfilled-ink: #ff8787;--overlimit: #949eab;--overlimit-bg: #2b313a;--overlimit-ink: #a7b0bc;--shadow-1: 0 1px 2px rgba(0, 0, 0, .45);--shadow-2: 0 1px 2px rgba(0, 0, 0, .45), 0 10px 26px rgba(0, 0, 0, .38);--shadow-3: 0 1px 2px rgba(0, 0, 0, .5), 0 22px 48px rgba(0, 0, 0, .48)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);font-size:var(--fs-4);line-height:1.45;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--s2) var(--s4);color:var(--text);transition:background-color .12s ease,border-color .12s ease,color .12s ease}button:hover:not(:disabled){background:var(--surface-2);border-color:var(--border-strong)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}button.primary:hover:not(:disabled){filter:brightness(1.1)}button.ghost{background:transparent;border-color:transparent;color:var(--text-2)}button.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}button.danger{color:var(--unfilled-ink);border-color:var(--border)}button.danger:hover:not(:disabled){background:var(--unfilled-bg);border-color:var(--unfilled)}button.warn{background:var(--planned-bg);color:var(--planned-ink);border-color:var(--planned)}button.warn:hover:not(:disabled){filter:brightness(1.1);border-color:var(--planned)}button.link{background:none;border:none;padding:0;color:var(--accent);text-decoration:underline;cursor:pointer;font-size:inherit}button.link:hover:not(:disabled){background:none;filter:brightness(1.2)}input:disabled,select:disabled,textarea:disabled{opacity:.6;background:var(--surface-2);cursor:not-allowed}input[type=text],input[type=email],input[type=password],input[type=search],input[type=number],select,textarea{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--s2) var(--s4);width:100%;transition:border-color .12s ease}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--border-strong)}textarea{resize:vertical;font-family:inherit;padding:var(--s3) var(--s4)}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:1px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:0;border-color:var(--focus)}.rulerow:focus-visible,.rulegroup-head:focus-visible,.entry:focus-visible,.resultinfo:focus-visible,.violation:focus-visible,.pane-collapsed:focus-visible,.block:focus-visible{outline-offset:-2px}.pill:focus-visible,.pinbtn:focus-visible,.notebtn:focus-visible,.slotbtn:focus-visible,.cu:focus-visible,.stat.clickable:focus-visible,.instructor:focus-visible{outline-offset:1px;border-radius:var(--radius-sm)}a{color:var(--accent)}.mono{font-family:var(--mono)}.muted{color:var(--text-3)}.small{font-size:var(--fs-2)}.row{display:flex;align-items:center;gap:var(--s3)}.col{display:flex;flex-direction:column}.grow{flex:1;min-width:0}.spacer{flex:1}.nowrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hidden{display:none!important}.app{display:flex;flex-direction:column;height:100%;overflow:hidden}.app>.topbar,.app>.panelbar,.app>.banner{flex:0 0 auto}.app>.appbody{flex:1 1 auto;min-height:0}.appbody{display:flex;min-height:0;overflow:hidden}.panes{display:flex;flex:1;min-height:0;min-width:0;overflow:clip}.paneslot{display:flex;flex:0 0 auto;min-width:0;min-height:0}.paneslot:has(>.pane.grow){flex:1 1 auto}.pane{min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column}.paneslot:last-child .pane{border-right:none}.pane.pane-schedule{background:var(--bg);flex:1;min-width:320px}.pane-header{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);background:var(--surface-2);border-bottom:1px solid var(--border);font-size:var(--fs-2);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2)}.pane-collapsed{writing-mode:vertical-rl;width:28px;min-width:28px;background:var(--surface-2);border-right:1px solid var(--border);display:flex;align-items:center;justify-content:center;gap:var(--s4);cursor:pointer;font-size:var(--fs-2);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);padding:var(--s4) 0}.pane-collapsed:hover{background:var(--surface-3);color:var(--text)}.resizer{width:5px;cursor:col-resize;background:transparent;flex:0 0 auto;transition:background-color .12s ease}.resizer:hover,.resizer.active{background:var(--accent)}.topbar{display:flex;flex-wrap:wrap;row-gap:var(--s2);align-items:center;gap:var(--s4);padding:var(--s3) var(--s5);background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-1);position:relative;z-index:4}.brand{font-weight:800;letter-spacing:-.01em;font-size:var(--fs-5)}.brand .mark{color:var(--accent)}.stat{display:inline-flex;align-items:baseline;gap:var(--s2);padding:var(--s1) var(--s4);border-radius:var(--radius-pill);background:var(--surface-2);border:1px solid var(--border);font-size:var(--fs-3);white-space:nowrap}.stat b{font-variant-numeric:tabular-nums}.stat.warn{background:var(--planned-bg);border-color:var(--planned);color:var(--text)}.stat.bad{background:var(--unfilled-bg);border-color:var(--unfilled);color:var(--text)}.stat.good{background:var(--done-bg);border-color:var(--done);color:var(--text)}.stat.clickable{cursor:pointer;transition:border-color .12s ease}.stat.clickable:hover{border-color:var(--border-strong)}.rulegroup{border-bottom:1px solid var(--border)}.rulegroup-head{display:flex;align-items:center;gap:var(--s3);width:100%;padding:var(--s2) var(--s4);background:var(--surface-2);border:none;border-radius:0;text-align:left;font-weight:650;font-size:var(--fs-3)}.rulegroup-head:hover{background:var(--surface-3)}.rulegroup-head .caret{width:12px;flex:0 0 12px;color:var(--text-3);font-size:var(--fs-1)}.rulerow{display:flex;align-items:flex-start;gap:var(--s3);width:100%;padding:3px var(--s4) 3px 5px;border:none;border-left:3px solid transparent;border-radius:0;background:transparent;text-align:left;font-size:var(--fs-3);line-height:1.35}.rulerow:hover{background:var(--surface-2)}.rulerow .icon{width:12px;flex:0 0 12px;text-align:center;font-size:var(--fs-2);line-height:1.4}.rulerow .title{flex:1;min-width:0}.rulerow .cu{font-variant-numeric:tabular-nums;color:var(--text-3);font-size:var(--fs-2);white-space:nowrap;flex:0 0 auto}.s-satisfied-completed{border-left-color:var(--done)}.s-satisfied-completed .icon{color:var(--done-ink)}.s-satisfied-locked{border-left-color:var(--planned)}.s-satisfied-locked .icon{color:var(--planned-ink)}.s-satisfied-planned{border-left-color:var(--planned)}.s-satisfied-planned .icon{color:var(--planned-ink)}.s-chosen-unplaced{border-left-color:var(--unplaced)}.s-chosen-unplaced .icon{color:var(--unplaced-ink)}.s-partial{border-left-color:var(--unplaced)}.rulerow.s-partial{background:var(--unplaced-bg)}.s-partial .icon{color:var(--unplaced-ink)}.s-unfilled{border-left-color:var(--unfilled)}.rulerow.s-unfilled{background:var(--unfilled-bg)}.s-unfilled .icon{color:var(--unfilled-ink)}.s-over-limit{border-left-color:var(--overlimit)}.rulerow.s-over-limit{background:var(--overlimit-bg)}.s-over-limit .icon{color:var(--overlimit-ink)}.rulerow.depth-1{padding-left:19px}.rulerow.depth-2{padding-left:33px}.rulerow{cursor:grab}.rulerow:active{cursor:grabbing}.rulerow.dragging{opacity:.4}.rulerow .rulename{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.rulerow .accepts{display:block;font-size:var(--fs-2);font-style:italic;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rulerow .fill{display:block;font-size:var(--fs-2);color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rulerow .fill .fillnote{color:var(--text-3);font-style:italic}.slotbtn{padding:1px var(--s3);font-size:var(--fs-2);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);color:var(--text-2);color:var(--text-3);background:transparent;white-space:nowrap}.rulerow:hover .slotbtn,.rulerow:focus-within .slotbtn{color:var(--text);background:var(--surface);border-color:var(--border-strong)}.rulerow.s-unfilled .slotbtn,.rulerow.s-partial .slotbtn{color:var(--text);border-color:var(--border-strong)}.slotbtn:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.linked,.dimmed,.dimmed-soft,.entry,.rulerow,.block,.result,.resultinfo{transition:background-color .42s ease-out,box-shadow .42s ease-out,opacity .42s ease-out}.linked{box-shadow:inset 0 0 0 2px var(--focus);background:var(--accent-soft)!important}.dimmed{opacity:.6}.dimmed-soft{opacity:.62}@media(prefers-reduced-motion:reduce){.linked,.dimmed,.dimmed-soft,.entry,.rulerow,.block,.result,.resultinfo{transition:none}}.pinbtn{border:none;background:transparent;padding:0 var(--s1);font-size:var(--fs-1);line-height:1;opacity:.25;border-radius:var(--radius-sm);cursor:pointer}.rulerow:hover .pinbtn,.entry:hover .pinbtn,.rulerow:focus-within .pinbtn,.entry:focus-within .pinbtn,.pinbtn:focus-visible,.pinbtn.on{opacity:1}.pinbtn.on{background:var(--accent);color:var(--on-accent)}.years{padding:var(--s4);display:flex;flex-direction:column;gap:var(--s5)}.yearlabel{font-size:var(--fs-2);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin:0 0 var(--s2) var(--s1)}.yearrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--s4)}.yearrow.unplaced{grid-template-columns:repeat(auto-fit,minmax(230px,320px))}.semester{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--edge),var(--shadow-1);display:flex;flex-direction:column;min-height:90px;transition:border-color .12s ease,box-shadow .12s ease}.semester:hover{border-color:var(--border-strong)}.semester.dragover{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent-soft)}.semester-head{display:flex;align-items:center;gap:var(--s3);padding:5px var(--s3);border-bottom:1px solid var(--border);background:var(--surface-2);border-radius:var(--radius) var(--radius) 0 0;font-size:var(--fs-3);font-weight:650}.semester-body{padding:var(--s3) var(--s3) var(--s2);display:flex;flex-direction:column;gap:var(--s2);flex:1}.semester-foot{padding:0 var(--s3) var(--s3);display:flex;gap:var(--s2)}.entry{display:flex;align-items:center;gap:var(--s2);padding:3px var(--s3);border:1px solid var(--border);border-left-width:3px;border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--fs-3);cursor:grab;-webkit-user-select:none;user-select:none}.entry:active{cursor:grabbing}.entry.dragging{opacity:.4}.entry.school-wharton{background:var(--wharton);color:var(--wharton-ink)}.entry.school-engineering{background:var(--engineering);color:var(--engineering-ink)}.entry.school-masters{background:var(--masters);color:var(--masters-ink)}.entry.school-counted{color:var(--text)}.entry.st-completed{border-left-color:var(--done)}.entry.st-planned,.entry.st-locked{border-left-color:var(--planned)}.entry.semester-locked{cursor:default;border-left-color:var(--accent)}.entry.semester-locked:active{cursor:default}.lockbadge{flex:0 0 auto;font-size:var(--fs-1);line-height:1;opacity:.85}.entry.placeholder{border-style:dashed;background:var(--surface-2);color:var(--text-2)}.entry .code{font-family:var(--mono);font-size:var(--fs-3);font-weight:600;white-space:nowrap}.entry{overflow:hidden}.entry .code{flex:0 0 auto}.entry .pill{min-width:0;overflow:hidden;text-overflow:ellipsis}.entry .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-3)}.entry .cu{font-variant-numeric:tabular-nums;font-size:var(--fs-2);opacity:.8}.entry.ruleslot{border-style:dashed;border-left-style:solid;border-left-color:var(--unfilled);background:var(--surface-2);color:var(--text-2)}.entry.ruleslot .name{white-space:normal;font-style:italic}.entry.ruleslot .glyph{flex:0 0 auto;color:var(--unfilled-ink);font-weight:700}.entry.ruleslot .code{font-style:normal;opacity:.9}.rulename .rulecode{font-family:var(--mono);font-weight:600;color:var(--text)}.termlock{border:1px solid var(--border);border-left:3px solid var(--planned);border-radius:var(--radius-sm);background:var(--surface-2);padding:var(--s3);margin-bottom:var(--s3)}.termlock.on{border-left-color:var(--accent);background:var(--accent-soft)}.termlock p{margin:0 0 var(--s2)}.termlock p:last-child{margin-bottom:0}.termstats{width:100%;border-collapse:collapse;margin:var(--s2) 0}.termstats th,.termstats td{text-align:left;padding:2px var(--s2) 2px 0;font-weight:400}.termstats thead th{color:var(--text-3);font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.05em}.termstats tbody th{font-weight:600}.termstats td{font-variant-numeric:tabular-nums}.termstats tr.on{background:var(--accent-soft)}.pill{font-size:var(--fs-1);font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:1px var(--s2);border-radius:var(--radius-sm);white-space:nowrap;line-height:1.4}.pill .pill-what{font-weight:600;opacity:.85;letter-spacing:.03em}.pill .pill-what:before{content:"·";margin:0 .35em;opacity:.6;font-weight:400}.pill.wharton{background:var(--wharton-ink);color:var(--wharton)}.pill.engineering{background:var(--engineering-ink);color:var(--engineering)}.pill.masters{background:var(--masters-ink);color:var(--masters)}.pill.neutral{background:var(--surface-3);color:var(--text-2)}.pill.attr{border:1px dashed var(--border-strong)}.pill.attr:hover{border-color:var(--accent);color:var(--accent)}.pill.attr{background:var(--surface-3);color:var(--text-2);cursor:pointer;font-family:var(--mono);text-transform:none;letter-spacing:0}.pill.attr:hover{background:var(--accent-soft);color:var(--accent)}.pill.fills{background:var(--done-bg);color:var(--done-ink)}.pill.term{background:var(--surface-3);color:var(--text-2);text-transform:none;letter-spacing:0}.pill.warn{background:var(--planned-bg);color:var(--planned-ink)}.pill.bad{background:var(--unfilled-bg);color:var(--unfilled-ink)}.panelbar{display:flex;flex-wrap:nowrap;align-items:center;gap:var(--s2);padding:var(--s2) var(--s5);background:var(--surface-2);border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:thin}.panelchip{flex:0 0 auto;white-space:nowrap}.panelchip{display:inline-flex;align-items:center;gap:var(--s2);border:1px solid transparent;background:transparent;border-radius:var(--radius);padding:var(--s2) var(--s3);font-size:var(--fs-3);color:var(--text-2);cursor:pointer;transition:background-color .12s ease,color .12s ease,border-color .12s ease}.panelchip:hover{background:var(--surface-3);color:var(--text)}.panelchip.on{background:var(--surface);border-color:var(--border);color:var(--text);font-weight:650}.panelchip-box{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:3px;border:1px solid var(--border-strong, var(--border));background:var(--surface);font-size:10px;line-height:1;color:var(--accent)}.panelchip.on .panelchip-box{border-color:var(--accent)}.modal.modal-wide{max-width:min(980px,94vw);width:980px}.inplan{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--s3) var(--s4);margin-bottom:var(--s4)}.inplan h3{margin-top:0}.inplan-warn{display:flex;gap:var(--s3);align-items:flex-start;padding:var(--s3) var(--s4);margin-bottom:var(--s3);border-radius:var(--radius);background:var(--unplaced-bg);border:1px solid var(--unplaced);color:var(--unplaced-ink)}.inplan-warn.hard{background:var(--unfilled-bg);border-color:var(--unfilled);color:var(--unfilled-ink)}.inplan-warn p{margin:0 0 2px;font-size:var(--fs-3)}.inplan-warn p:last-child{margin-bottom:0}.inplan-warn-mark{font-size:var(--fs-4);line-height:1.1}.inplan-fills ul{margin:4px 0 0;padding-left:0;list-style:none}.inplan-fills li{padding:2px 0}.row.wrap{flex-wrap:wrap}.concblock{padding:var(--s3) var(--s4) var(--s4);margin:var(--s3) var(--s3) var(--s2);min-width:0;max-width:100%;overflow:hidden;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;gap:var(--s2)}.concblock p{margin:0}.concblock label{min-width:0}.concblock select{min-width:0;max-width:100%;flex:1 1 auto;text-overflow:ellipsis}.concblock .chips{gap:var(--s2)}.conc-resolved{color:var(--accent)}.conc-mark{color:var(--accent);font-weight:700}.pill.conc-on{background:var(--accent);color:var(--on-accent)}.conc-courses{margin:0;padding-left:0;list-style:none}.conc-courses li{padding:1px 0}.colordot{width:13px;height:13px;min-width:13px;padding:0;border-radius:50%;border:1px solid rgba(0,0,0,.25);cursor:pointer;box-shadow:0 0 0 1px var(--surface-2)}.colordot:hover{transform:scale(1.15)}.colorpicker{min-width:200px}.swatches{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--s2);padding:var(--s2) var(--s3)}.swatch{width:22px;height:22px;border-radius:var(--radius-sm);border:1px solid rgba(0,0,0,.2);cursor:pointer;padding:0}.swatch.on{box-shadow:0 0 0 2px var(--focus)}.icscolors{display:flex;flex-wrap:wrap;gap:var(--s2);margin-bottom:var(--s2)}.swatch.none{background:var(--surface-2);background-image:linear-gradient(to top right,transparent calc(50% - 1px),var(--muted) calc(50% - 1px),var(--muted) calc(50% + 1px),transparent calc(50% + 1px))}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.menu-wrap{position:relative;display:inline-flex;align-items:center;gap:var(--s2)}.menu{position:absolute;top:calc(100% + 6px);right:0;z-index:40;min-width:260px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--edge),var(--shadow-2);padding:var(--s2);display:flex;flex-direction:column;gap:2px}.menu-head{padding:var(--s2) var(--s3);font-size:var(--fs-2);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2)}.menu-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;border:none;background:transparent;border-radius:var(--radius);padding:var(--s2) var(--s3);font-size:var(--fs-3);color:var(--text);text-align:left;cursor:pointer}.menu-item:hover{background:var(--surface-3)}.menu-sub{font-size:var(--fs-2);color:var(--text-2)}.menu-foot{padding:var(--s2) var(--s3);border-top:1px solid var(--border);margin-top:var(--s2)}.searchbar{display:flex;flex-wrap:wrap;gap:var(--s3);padding:var(--s3) var(--s4);border-bottom:1px solid var(--border);align-items:center;position:sticky;top:0;background:var(--surface);z-index:3}.searchbar>*{flex:0 0 auto}.searchbar .q{flex:1 1 200px;min-width:160px}.searchbar select{width:auto}.searchpanel{container-type:inline-size}.result{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s3);padding:var(--s3) var(--s4);border-bottom:1px solid var(--border);align-items:start}@container (max-width: 560px){.result{grid-template-columns:minmax(0,1fr)}.result .actions{justify-content:flex-start;flex-wrap:wrap}}.result:hover{background:var(--surface-2)}.result.dragging{opacity:.4}.resultinfo{cursor:grab;min-width:0}.resultinfo:active{cursor:grabbing}.result .grip{color:var(--text-3);font-size:var(--fs-2);letter-spacing:-2px}.instructor{position:relative;cursor:help;border-bottom:1px dotted var(--border-strong)}.instructorpop{position:absolute;left:0;bottom:100%;margin-bottom:var(--s2);z-index:40;min-width:240px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-2);padding:var(--s3) var(--s4);color:var(--text);white-space:normal}.result .head{display:flex;align-items:baseline;gap:var(--s3);flex-wrap:wrap}.result .code{font-family:var(--mono);font-weight:700}.chips{display:flex;flex-wrap:wrap;gap:var(--s1);margin-top:var(--s1)}.result .actions{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}.result .chips .pill{max-width:100%;white-space:normal;overflow-wrap:anywhere}.result .bars{max-width:100%}.bars{display:flex;gap:var(--s4);margin-top:var(--s1);flex-wrap:wrap}.bar{display:flex;align-items:center;gap:var(--s2);font-size:var(--fs-2);color:var(--text-3)}.bar .track{width:42px;height:5px;background:var(--surface-3);border-radius:var(--radius-pill);overflow:hidden}.bar .fillbar{height:100%;background:var(--accent);border-radius:inherit}.bar.good .fillbar{background:var(--done)}.bar.bad .fillbar{background:var(--unfilled)}.week{display:grid;grid-template-columns:46px repeat(var(--daycount, 5),1fr);position:relative;padding-right:var(--s3)}.week .hourlabel{font-size:var(--fs-1);color:var(--text-3);text-align:right;padding-right:5px;border-right:1px solid var(--border)}.week .daycol{position:relative;border-right:1px solid var(--border)}.week .dayhead{position:sticky;top:var(--toolbar-h);z-index:2;text-align:center;font-size:var(--fs-2);font-weight:650;padding:var(--s2) 0;background:var(--surface-2);border-bottom:1px solid var(--border)}.week .hourline{border-top:1px solid var(--surface-3)}.block{position:absolute;left:var(--s1);right:var(--s1);border-radius:var(--radius-sm);padding:var(--s1) var(--s2);font-size:var(--fs-2);overflow:hidden;border:1px solid color-mix(in srgb,var(--text) 15%,transparent);cursor:pointer}.block.conflict{background-image:repeating-linear-gradient(45deg,color-mix(in srgb,var(--unfilled) 28%,transparent) 0 6px,transparent 6px 12px);border-color:var(--unfilled);border-width:2px}.block.projected{border-style:dashed;opacity:.85}.block .bcode{font-family:var(--mono);font-weight:700}.chatwrap{display:flex;height:100%;min-height:0}.chat{display:flex;flex-direction:column;height:100%;min-height:0;flex:1;min-width:0}.chat-log{flex:1;overflow-y:auto;padding:var(--s4);display:flex;flex-direction:column;gap:var(--s4)}.msg{max-width:78ch}.msg.user{align-self:flex-end;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--s3) var(--s5)}.msg.assistant{align-self:stretch;max-width:78ch}.msg.assistant .body{background:none;border:none;padding:0}.chatside{width:180px;flex:0 0 auto;display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border);background:var(--surface-2)}.chatside.collapsed{width:34px;align-items:center;gap:var(--s2);padding-top:var(--s2)}.chatside-head{display:flex;align-items:center;gap:var(--s2);padding:var(--s2)}.chatside-search{margin:0 var(--s2) var(--s2);width:calc(100% - var(--s2) * 2)}.chatside-list{flex:1;overflow-y:auto;min-height:0}.chatside-row{display:flex;align-items:center;gap:2px;padding:0 var(--s2)}.chatside-row>button:first-child{flex:1;min-width:0;display:flex;align-items:center;gap:var(--s2);border:none;background:transparent;border-radius:var(--radius);padding:var(--s2);font-size:var(--fs-3);color:var(--text-2);text-align:left;cursor:pointer}.chatside-row:hover>button:first-child{background:var(--surface-3);color:var(--text)}.chatside-row.on>button:first-child{background:var(--surface);color:var(--text);font-weight:650}.chatside-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chatside-del{visibility:hidden}.chatside-row:hover .chatside-del{visibility:visible}.steplist{list-style:none;margin:0 0 var(--s2);padding:0}.steplist li{display:flex;align-items:center;gap:var(--s3);font-size:var(--fs-2);color:var(--text-3);padding:1px 0}.stepdot{width:6px;height:6px;min-width:6px;border-radius:50%;background:var(--text-3)}.steplist li.running{color:var(--text-2)}.steplist li.running .stepdot{background:var(--accent);animation:steppulse 1.1s ease-in-out infinite}@keyframes steppulse{0%,to{opacity:.35}50%{opacity:1}}.steplist-done>summary{font-size:var(--fs-2);color:var(--text-3);cursor:pointer;margin-bottom:var(--s2)}.thinking{margin-bottom:var(--s2)}.thinking>summary{display:flex;align-items:center;gap:var(--s2);font-size:var(--fs-2);color:var(--text-3);cursor:pointer}.thinking-body{margin-top:var(--s2);padding-left:var(--s4);border-left:2px solid var(--border);font-size:var(--fs-2);color:var(--text-3);white-space:pre-wrap;max-height:160px;overflow-y:auto}.strands .w1{stroke:var(--wharton-ink, var(--accent))}.strands .w2{stroke:var(--engineering-ink, var(--accent))}.strands .w3{stroke:var(--masters-ink, var(--accent))}.strands path{stroke-dasharray:30;stroke-dashoffset:30;animation:strand 1.8s ease-in-out infinite}.strands .w2{animation-delay:.2s}.strands .w3{animation-delay:.4s}@keyframes strand{0%{stroke-dashoffset:30}45%{stroke-dashoffset:0}55%{stroke-dashoffset:0}to{stroke-dashoffset:-30}}@media(prefers-reduced-motion:reduce){.strands path{animation:none;stroke-dashoffset:0}.steplist li.running .stepdot{animation:none;opacity:1}}.msg .body h1,.msg .body h2,.msg .body h3,.msg .body h4,.msg .body h5,.msg .body h6{font-size:var(--fs-4);font-weight:700;margin:var(--s5) 0 var(--s2);line-height:1.3;letter-spacing:-.01em}.msg .body h1{font-size:var(--fs-5)}.msg .body h4,.msg .body h5,.msg .body h6{font-size:var(--fs-3);color:var(--text-2)}.msg .body h1:first-child,.msg .body h2:first-child,.msg .body h3:first-child{margin-top:0}.msg .body blockquote{margin:var(--s2) 0;padding-left:var(--s4);border-left:2px solid var(--border);color:var(--text-3)}.msg .body hr{border:0;border-top:1px solid var(--border);margin:var(--s4) 0}.msg .body table{display:block;overflow-x:auto;max-width:100%;border-collapse:collapse;font-size:var(--fs-2);margin:var(--s2) 0 var(--s3)}.msg .body th,.msg .body td{border:1px solid var(--border);padding:3px var(--s3);text-align:left;vertical-align:top}.msg .body th{background:var(--surface-2);font-weight:650;white-space:nowrap}.msg .body p{margin:0 0 var(--s3)}.msg .body p:last-child{margin-bottom:0}.msg .body ul,.msg .body ol{margin:var(--s2) 0 var(--s3);padding-left:20px}.msg .body li+li{margin-top:var(--s1)}.msg .body code{font-family:var(--mono);background:var(--surface-3);padding:0 var(--s1);border-radius:var(--radius-sm);font-size:var(--fs-3)}.msg .body pre{background:var(--surface-3);padding:var(--s3) var(--s4);border-radius:var(--radius);overflow-x:auto}.msg .body pre code{background:none;padding:0}.msg .body table{border-collapse:collapse;font-size:var(--fs-3)}.msg .body th,.msg .body td{border:1px solid var(--border);padding:var(--s1) var(--s3);text-align:left}.composer{margin:var(--s3);padding:var(--s3) var(--s3) var(--s2);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:var(--s2);transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast)}.composer:hover{border-color:var(--border-strong)}.composer:focus-within{background:var(--surface);border-color:var(--border-strong);box-shadow:var(--shadow-1)}.composer textarea{width:100%;border:none;background:transparent;resize:none;padding:var(--s2) var(--s2) 0;font:inherit;color:var(--text);min-height:24px;overflow-y:auto}.composer textarea:focus,.composer textarea:focus-visible{outline:none;box-shadow:none}.composer textarea::placeholder{color:var(--text-3)}.composer-tools{display:flex;align-items:center;gap:var(--s2);min-height:28px}.composer-hint{color:var(--text-3);opacity:.8}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--text-2);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),opacity var(--t-fast)}.iconbtn:not(.sendbtn):not(.stopbtn):hover{background:var(--surface-3);color:var(--text)}.iconbtn:disabled{opacity:.35;cursor:default;background:transparent}.iconbtn.sendbtn{background:var(--accent);color:var(--on-accent)}.iconbtn.sendbtn:hover:not(:disabled){background:var(--accent);color:var(--on-accent);border-color:transparent;filter:brightness(1.12)}.iconbtn.sendbtn:disabled{background:var(--surface-3);color:var(--text-3)}.iconbtn.stopbtn{background:var(--unfilled);color:#fff}.iconbtn.stopbtn:hover:not(:disabled){background:var(--unfilled);color:#fff;border-color:transparent;filter:brightness(1.1)}.iconbtn.mic.on{background:var(--unfilled);color:#fff}.iconbtn.mic.on:hover:not(:disabled){background:var(--unfilled);color:#fff;border-color:transparent;filter:brightness(1.1)}.mic.on:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:50%;border:2px solid var(--unfilled);animation:micblink 1.6s ease-in-out infinite}.mic{position:relative}@keyframes micblink{0%,to{opacity:.9}50%{opacity:.3}}@media(prefers-reduced-motion:reduce){.mic.on:after{animation:none;opacity:.7}}.proposal{border:1px solid var(--accent);border-radius:var(--radius);margin-top:var(--s3);background:var(--surface);overflow:hidden}.proposal-head{padding:var(--s3) var(--s4);background:var(--accent-soft);border-bottom:1px solid var(--border);font-size:var(--fs-3)}.proposal-edit{display:flex;align-items:flex-start;gap:var(--s3);padding:var(--s2) var(--s4);border-bottom:1px solid var(--border);font-size:var(--fs-3)}.proposal-edit:hover{background:var(--surface-2)}.proposal-edit.stale{opacity:.5;text-decoration:line-through}.proposal-foot{padding:var(--s3) var(--s4);display:flex;gap:var(--s3);align-items:center}.suggestions{container-type:inline-size;margin-top:var(--s3);display:flex;flex-direction:column;gap:var(--s2)}.suggestions-head{font-size:var(--fs-2);font-weight:650;color:var(--text-2)}.suggestion{display:flex;align-items:center;gap:var(--s3);padding:var(--s2) var(--s3);border:1px solid var(--border);border-left:3px solid var(--agent);border-radius:var(--radius);background:var(--surface)}.suggestion.showing{background:var(--agent-soft);border-color:var(--agent)}.suggestion-main{flex:1;min-width:0}.suggestion-actions{flex:0 0 auto;display:flex;gap:var(--s2);align-items:center}@container (max-width: 420px){.suggestion{flex-direction:column;align-items:stretch}.suggestion-actions{justify-content:flex-end}}.note{border:1px solid var(--border);border-radius:var(--radius);padding:var(--s3) var(--s4);background:var(--surface)}.note-target{font-size:var(--fs-2);color:var(--text-3);margin-bottom:var(--s1)}.notes-list{padding:var(--s4);display:flex;flex-direction:column;gap:var(--s3)}.page{max-width:760px;margin:0 auto;padding:var(--s6) var(--s6) 64px;color:var(--text)}.page-head{display:flex;align-items:center;gap:var(--s5);margin-bottom:var(--s6);padding-bottom:var(--s5);border-bottom:1px solid var(--border)}.page-head h1{font-size:var(--fs-7);margin:0;letter-spacing:-.02em}.page>section{margin-top:var(--s7)}.page>section>h2{font-size:var(--fs-3);text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);margin:0 0 var(--s5);font-weight:700}.page p{margin:0 0 var(--s5);line-height:1.55}.caveat{border:1px solid var(--border-strong);border-left:3px solid var(--planned);border-radius:var(--radius);background:var(--surface-2);padding:var(--s5) var(--s6);margin:0}.source-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s5)}.source-list>li{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:var(--s5) var(--s6)}.source-list h3{margin:0 0 var(--s3);font-size:var(--fs-5);font-weight:650}.source-list p{margin:0 0 var(--s3);color:var(--text-2)}.source-list p:last-child{margin-bottom:0}.degree-sources{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--s5)}.degree-sources>div{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:var(--s5) var(--s6)}.degree-sources h3{margin:0 0 var(--s3);font-size:var(--fs-2);text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:700}.degree-sources ul{margin:0;padding-left:var(--s6)}.degree-sources li{margin-bottom:var(--s2);color:var(--text-2)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:50;padding:var(--s7)}.modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);max-width:900px;width:100%;max-height:88vh;display:flex;flex-direction:column;box-shadow:var(--edge),var(--shadow-3);overflow:hidden}.modal-head{display:flex;align-items:center;gap:var(--s4);padding:var(--s4) var(--s5);border-bottom:1px solid var(--border);background:var(--surface-2);font-size:var(--fs-4);min-height:42px}.modal-head b,.modal-head strong{font-size:var(--fs-5);font-weight:650;letter-spacing:-.01em}.modal-head .pill,.modal-head button{flex:0 0 auto}.modal-body{padding:var(--s5);overflow:auto}.modal-body>.section{padding:0 0 var(--s5);border-bottom:none}.modal-body>.section:last-child{padding-bottom:0}.modal-body>:first-child{margin-top:0}.termpref{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s2);margin-bottom:var(--s3)}.termpref .grow{flex:1 1 12ch;min-width:0}.chip{font-size:var(--fs-2);padding:2px var(--s3);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-2);color:var(--text-2);cursor:pointer;line-height:1.5}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.modal-foot{padding:var(--s4) var(--s5);border-top:1px solid var(--border);background:var(--surface-2);display:flex;gap:var(--s3);align-items:center;justify-content:flex-end}.authpage{min-height:100%;display:flex;align-items:center;justify-content:center;padding:var(--s7);background:var(--bg)}.authcard{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--s7);box-shadow:var(--shadow-2)}.authcard h1{font-size:var(--fs-7);margin:0 0 var(--s1);letter-spacing:-.01em}.authcard .tagline{color:var(--text-3);margin:0 0 var(--s6);font-size:var(--fs-4);line-height:1.5}.field{margin-bottom:var(--s5)}.field label{display:block;font-size:var(--fs-3);font-weight:650;margin-bottom:var(--s2);color:var(--text-2)}.formerror{background:var(--unfilled-bg);border:1px solid var(--unfilled);color:var(--unfilled-ink);padding:var(--s3) var(--s4);border-radius:var(--radius);margin-bottom:var(--s5);font-size:var(--fs-3)}.formnote{background:var(--surface-2);border:1px solid var(--border);padding:var(--s4) var(--s5);border-radius:var(--radius);font-size:var(--fs-3);color:var(--text-2);line-height:1.5}.recoverycode{font-family:var(--mono);font-size:var(--fs-6);letter-spacing:.04em;background:var(--surface-2);border:2px dashed var(--border-strong);border-radius:var(--radius);padding:var(--s5);text-align:center;word-break:break-all;-webkit-user-select:all;user-select:all}.banner{display:flex;align-items:center;gap:var(--s4);padding:var(--s3) var(--s5);font-size:var(--fs-3);background:var(--planned-bg);border-bottom:1px solid var(--planned);color:var(--text)}.banner.info{background:var(--accent-soft);border-bottom-color:var(--accent)}.empty{padding:var(--s7) var(--s6);text-align:center;color:var(--text-3);font-size:var(--fs-4);line-height:1.55;max-width:56ch;margin:0 auto}.empty h3{margin:0 0 var(--s3);font-size:var(--fs-5);font-weight:650;color:var(--text-2)}.empty p{margin:0 0 var(--s4)}.empty p:last-child{margin-bottom:0}.empty code{font-family:var(--mono);background:var(--surface-3);padding:0 var(--s2);border-radius:var(--radius-sm)}.spin{display:inline-block;width:12px;height:12px;vertical-align:-1px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spin{animation-duration:2s}*{transition-duration:1ms!important}}.tablike{display:flex;gap:var(--s1)}.section{padding:var(--s5);border-bottom:1px solid var(--border)}.section h3{margin:0 0 var(--s3);font-size:var(--fs-3);text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:700}table.data{border-collapse:collapse;width:100%;font-size:var(--fs-3)}table.data th,table.data td{border-bottom:1px solid var(--border);padding:var(--s2) var(--s3);text-align:left}table.data th{color:var(--text-3);font-weight:650;font-size:var(--fs-2);text-transform:uppercase;letter-spacing:.05em}.centrewrap{display:flex;align-items:flex-start;gap:var(--s3)}.centrewrap.with-unplaced{padding:0 var(--s2)}.unplacedcard .semester-head{flex-wrap:wrap;gap:var(--s2);line-height:1.3}.centrewrap>.years{flex:1 1 auto;min-width:0}.unplacedcol{flex:0 0 200px;display:flex;flex-direction:column;gap:var(--s3)}.unplacedcol.left{order:-1}.unplacedcard{border-style:dashed}.unplacedcard.dragover{border-color:var(--accent);background:var(--accent-soft)}.unplacedcard .bucketempty{padding:var(--s3);line-height:1.5}.yearblock>.unplacedcard{margin-bottom:var(--s3)}table.data tr:hover td{background:var(--surface-2)}table.data tr.offlist td{opacity:.75}table.data tr.offlist:hover td{opacity:1}.toast{position:fixed;bottom:var(--s6);left:50%;transform:translate(-50%);background:var(--text);color:var(--bg);padding:var(--s4) var(--s6);border-radius:var(--radius);max-width:min(560px,calc(100vw - 32px));text-align:center;font-size:var(--fs-3);z-index:100;box-shadow:var(--shadow-2)}.bad{color:var(--unfilled-ink)}.violations{display:flex;flex-direction:column;gap:var(--s2);margin-bottom:var(--s5)}.violation{display:flex;gap:var(--s3);align-items:flex-start;padding:var(--s3) var(--s4);border-radius:var(--radius);font-size:var(--fs-3);line-height:1.4;border:1px solid var(--border)}.violation[role=button]{cursor:pointer}.violation[role=button]:hover{border-color:var(--border-strong)}.violation.error{background:color-mix(in srgb,var(--unfilled) 12%,transparent);border-color:color-mix(in srgb,var(--unfilled) 40%,var(--border))}.violation.warn{background:color-mix(in srgb,var(--unplaced) 12%,transparent);border-color:color-mix(in srgb,var(--unplaced) 40%,var(--border))}.legendhead{font-size:var(--fs-3);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin:var(--s6) 0 var(--s3)}.legendhead:first-child{margin-top:0}table.legend{width:100%;border-collapse:collapse;font-size:var(--fs-3)}table.legend td{padding:var(--s2) var(--s4) var(--s2) 0;vertical-align:top;line-height:1.45}table.legend tr+tr td{border-top:1px solid var(--border)}.planpick{max-width:170px;font-size:var(--fs-3);padding:var(--s1) var(--s3);background:var(--surface-2)}.planpick.planrename{width:170px;background:var(--surface);border-color:var(--accent)}.planfoot{display:flex;align-items:center;gap:var(--s5);flex-wrap:wrap;margin-top:var(--s1);padding:var(--s4) 0 var(--s1);border-top:1px dashed var(--border)}button.small{font-size:var(--fs-2);padding:var(--s1) var(--s3)}.notebtn{cursor:pointer;opacity:.75;border-radius:var(--radius-sm)}.notebtn:hover{opacity:1}.semester-head .notebtn{font-size:var(--fs-1)}.cu{cursor:pointer}.cuedit{width:46px;font-size:var(--fs-2);padding:0 var(--s1);text-align:right}.phlist{display:flex;flex-direction:column;gap:var(--s1)}.phrow{display:flex;align-items:center;gap:var(--s3);font-size:var(--fs-3);padding:var(--s1) var(--s3);background:var(--surface-2);border:1px dashed var(--border);border-radius:var(--radius);min-height:26px}.dragghost{opacity:.92;box-shadow:var(--shadow-2);max-width:260px;cursor:grabbing}.dragghost .code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pill.unlinked{background:transparent;color:var(--text-3);border:1px dashed var(--border-strong);cursor:pointer}.pill.unlinked:hover{color:var(--accent);border-color:var(--accent)}.rulerow svg[data-icon],.notebtn svg[data-icon],.entry svg[data-icon]{vertical-align:-2px}.notebtn{display:inline-flex;align-items:center;color:var(--text-3)}.notebtn:hover{color:var(--accent)}.week .block.muted-block{background:var(--surface-3);color:var(--text-3);opacity:.72}.week .block.candidate{cursor:pointer;border-style:dashed;font-weight:600;z-index:3}.week .block.candidate.band-0{background:#1d4ed8;color:#fff;border-color:#1d4ed8}.week .block.candidate.band-1{background:#0891b2;color:#fff;border-color:#0891b2}.week .block.candidate.band-2{background:#7c3aed;color:#fff;border-color:#7c3aed}.week .block.candidate:hover{filter:brightness(1.08)}.sources{margin-top:var(--s2)}.sources>summary{cursor:pointer}.sources ul{margin:var(--s2) 0 0;padding-left:var(--s4);display:flex;flex-direction:column;gap:2px}.sources a{color:var(--accent);word-break:break-word}.week .block.agent-block{background-color:var(--agent);color:var(--on-agent);border-color:var(--agent);font-weight:600;z-index:3}.entry.agent-changed{outline:2px solid var(--agent);outline-offset:-1px;border-color:var(--agent)}.week .block.sectionhi{box-shadow:0 0 0 2px var(--focus);z-index:4}.weekask{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);border-top:1px solid var(--border);background:var(--surface-2);font-size:var(--fs-3);position:sticky;bottom:0}.weekask.warn{background:var(--unplaced-bg);border-top-color:var(--unplaced);color:var(--unplaced-ink)}.weekask-mark{font-size:var(--fs-4)}.resultdetail{grid-column:1 / -1;padding:var(--s3) var(--s4) var(--s4);margin-top:var(--s2);border-top:1px dashed var(--border);background:var(--surface-2);border-radius:var(--radius);min-width:0}.resultdetail p{margin:0 0 var(--s2)}.coursebody>.section{padding:0 0 var(--s5);border-bottom:none}.coursebody>.section:last-child{padding-bottom:0}.coursebody.compact{font-size:var(--fs-3)}.coursebody.compact>.section{padding-bottom:var(--s4)}.coursebody.compact .section h3{font-size:var(--fs-1);margin-bottom:var(--s2)}.coursebody.compact table.data{font-size:var(--fs-2)}.coursebody.compact table.data th,.coursebody.compact table.data td{padding:2px var(--s2)}.coursebody.compact .stat{font-size:var(--fs-2)}.coursebody.compact textarea{font-size:var(--fs-3)}.tablescroll{overflow-x:auto;max-width:100%}
