body:has(#planner:not([hidden])){height:100dvh;min-height:0}body:has(#planner:not([hidden])) .site-foot{display:none}body:has(#planner:not([hidden])) #planner-root{display:flex;flex-direction:column;flex:1;min-height:0}.planner{display:flex;flex-direction:column;flex:1;min-height:0}.planner-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--gutter);background:var(--surface);border-bottom:1px solid var(--border)}.planner-head h1{font-size:var(--fs-title-3)}.planner-head>.cluster{margin-left:auto}.planner-head .meta{margin:0;color:var(--text-dim);font-size:var(--fs-small)}.planner-title{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-4);min-width:0}.planner-sub{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3)}.plan-pick{max-width:100%}.plan-pick-label{color:var(--text-faint);font-weight:500}.plan-pick-name{overflow:hidden;max-width:28ch;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.plan-more{display:contents}.planner-acts .more-btn,.more-note,.act-svg,.short-text{display:none}.planner>.notice{margin:var(--space-2) var(--gutter) 0;padding:var(--space-1) var(--space-3);font-size:var(--fs-small)}.planner-body{display:flex;flex:1;min-height:0;gap:var(--space-2);padding:var(--space-2) var(--gutter) var(--space-3)}.catalog{flex:none;display:flex;flex-direction:column;width:300px;min-height:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-m)}.plan-main{flex:1;display:flex;flex-direction:column;gap:var(--space-2);min-width:0;min-height:0}.plan-bar{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-2) var(--space-3)}.plan-bar .req-bar{flex:1 1 720px;min-width:0}.plan-tools{flex:0 1 auto;min-width:0;gap:var(--space-2);padding-block:calc(var(--space-2) + 1px)}.catalog-head{flex:none;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border-bottom:1px solid var(--border)}.catalog-title{font-size:var(--fs-body)}.catalog-hide,.courses-open{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);min-height:30px;padding:0 var(--space-2);border:1px solid var(--border);border-radius:var(--radius-s);background:transparent;color:var(--text-dim);font:inherit;font-size:var(--fs-small);font-weight:600;cursor:pointer}:is(.catalog-hide,.courses-open):hover{background:var(--bg-2);color:var(--text)}.catalog-hide svg,.courses-open svg{flex:none;width:20px;height:20px}.catalog-body{position:relative;flex:1;min-height:0;overflow:auto;padding:var(--space-2)}.catalog.is-collapsed{display:none}.courses-open{position:relative;margin:6px var(--space-1) 0;padding:0 6px;color:var(--brand);white-space:nowrap}.planner-body:not(:has(.catalog.is-collapsed)) .courses-open,.chart.dragging .courses-open{display:none}@media(pointer:coarse){.catalog-hide{min-width:var(--tap);min-height:var(--tap)}.courses-open:after{content:"";position:absolute;inset:-8px -6px}}.bar{height:6px;overflow:hidden;border-radius:var(--radius-pill);background:var(--bg-2)}.bar span{display:block;height:100%;background:var(--brand)}.done .bar span{background:var(--ok)}.tick{color:var(--ok);font-weight:700}.req-bar{padding:var(--space-2) var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-m)}.req-bar-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.req-label{font-size:var(--fs-small);white-space:nowrap}.req-total{flex:1 1 auto;display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-small);white-space:nowrap;font-variant-numeric:tabular-nums}.req-total .bar{flex:1;min-width:40px;height:8px}.req-total-num.done strong{color:var(--ok)}.req-toggle{margin-left:auto}.req-details{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border)}.req-details .chips{margin-bottom:var(--space-3)}.rc-name{max-width:14ch;overflow:hidden;text-overflow:ellipsis}.rc-num{color:var(--text-dim);font-size:11px;font-variant-numeric:tabular-nums}.req-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-3) var(--space-5)}.req-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);font-size:var(--fs-small);font-weight:500}.req-left{margin:2px 0 0;color:var(--warn);font-size:var(--fs-caption);font-weight:500;font-variant-numeric:tabular-nums}.req-head>:first-child{min-width:0}.req-num{flex:none;color:var(--text-dim);font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}.req-rule{margin:var(--space-1) 0 0;padding:0;list-style:none;font-size:var(--fs-caption);line-height:1.3}.ap-mini{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--space-1);font-size:var(--fs-caption)}.ap-title{color:var(--text-dim);font-weight:600}.ap{padding:1px 7px;border-radius:var(--radius-pill);background:var(--bg-2);font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}.ap-y{color:var(--text-faint)}.ap.over{background:var(--warn-soft);color:var(--warn)}@media(pointer:coarse){.plan-tools .btn{min-height:var(--tap)}}.sheet-count{margin-left:var(--space-1);color:var(--text-faint);font-size:var(--fs-small);font-weight:500}.menu{position:relative}.menu>summary{list-style:none}.menu>summary::-webkit-details-marker{display:none}.menu-list{position:absolute;right:0;top:calc(100% + 4px);z-index:40;display:grid;min-width:190px;padding:var(--space-1);background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-m);box-shadow:var(--shadow-2)}.menu-list button{min-height:var(--control-h);padding:0 var(--space-3);border:0;border-radius:var(--radius-s);background:transparent;color:var(--text);text-align:left;cursor:pointer}.menu-list button:hover,.menu-list button:focus-visible{background:var(--bg-2)}.plan-list{display:grid;gap:var(--space-1);margin:0;padding:0;list-style:none}.plan-row{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:var(--tap);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-s);background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.plan-row:hover{background:var(--bg-2)}.plan-row[aria-current=true]{border-color:var(--brand);background:var(--brand-soft)}.plan-row[aria-current=true] .plan-row-name:before{content:"✓ ";color:var(--brand)}.plan-row-name{flex:1;min-width:0;overflow-wrap:anywhere;font-weight:600}.plan-row-meta{flex:none;color:var(--text-dim);font-size:var(--fs-small)}.btn-danger{background:var(--err);border-color:var(--err);color:var(--on-status)}.btn-danger:hover{background:color-mix(in srgb,var(--err) 86%,var(--text))}.import-line{font-weight:600;overflow-wrap:anywhere}.manage-list,.manage-delete-list{display:grid;gap:var(--space-2);margin:0;padding:0;list-style:none}.manage-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-2);align-items:start;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-s)}.manage-pick{padding-top:6px}.manage-main{display:grid;gap:var(--space-1);min-width:0}.manage-name{font-weight:600}.manage-meta{margin:0;color:var(--text-dim);font-size:var(--fs-caption);overflow-wrap:anywhere}.manage-acts{display:flex;flex-wrap:wrap;gap:var(--space-1)}.manage-delete-list li{overflow-wrap:anywhere}@media(pointer:coarse){.manage-acts .btn,.manage-pick{min-height:var(--tap)}.manage-pick{min-width:var(--tap);padding-top:0}}.import-body p{margin:0}.issues{display:grid;gap:var(--space-2);margin:0;padding:0;list-style:none}.issue{display:flex;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-s);background:var(--bg-2);font-size:var(--fs-small);line-height:1.4}.issue-body{display:grid;gap:var(--space-1);min-width:0}.issue-course{justify-self:start;padding:0;border:0;background:none;color:var(--text);font:inherit;font-weight:700;text-align:left}button.issue-course{cursor:pointer;text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px}button.issue-course:hover{text-decoration-color:currentColor}@media(pointer:coarse){button.issue-course{min-height:var(--tap)}}.issue-when{color:var(--text-dim);font-weight:500}.issue-lines{display:grid;gap:2px;margin:0;padding:0;list-style:none}.issue-lines li{display:flex;gap:var(--space-1)}.issue cite,.card-issues-src{color:var(--text-dim);font-size:var(--fs-caption);font-style:normal}.card-issues{margin:var(--space-2) 0 0;font-size:var(--fs-small)}.card-issues-src{margin:2px 0 0}.issue.lv-error{background:var(--err-soft)}.issue.lv-warning,.issue.lv-conditional{background:var(--warn-soft)}.issue.lv-info{background:var(--info-soft)}.issue.lv-check{background:var(--bg-2);color:var(--text-dim)}.issue.lv-check .issue-course,.card-issues .is-check{color:var(--text-dim)}.next-list li{display:flex;align-items:flex-start;gap:var(--space-2)}.next-list .next-body{flex:1;min-width:0}.next-list .next-body .clause-note{display:block}.next-list li>.btn,.next-list li>.badge{flex:none}.path-result{margin-top:var(--space-3)}.path-line{display:flex;gap:var(--space-2);font-size:var(--fs-small)}.chain{margin:0;padding-left:20px;font-size:var(--fs-small)}.chain .yr{color:var(--text-faint);font-size:11px;font-variant-numeric:tabular-nums}.chain small{color:var(--text-dim)}.chart-wrap{flex:1;min-height:0;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-m);scroll-padding:42px 0 0 6.5rem}.chart{--lane-gap: 6px;--card-gap-v: var(--space-1);--card-gap: var(--space-1);--year-space: clamp(var(--space-5), 4.2vw - 20px, 36px);--tail-space: var(--space-4);--lead-col: var(--space-5);--lane-col: fit-content(6.5rem);--half-col: minmax(calc(6.25rem / var(--terms, 2)), 1fr);position:relative;isolation:isolate;display:grid;grid-template-rows:min-content min-content;align-content:start;min-width:min-content;min-height:100%}.colhead,.corner{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--border)}.colhead{display:flex;align-items:center;gap:var(--space-2);min-width:0;padding:0 var(--space-2);border-left:1px solid var(--border);font-size:var(--fs-small);font-weight:700;white-space:nowrap}.colhead.year{height:26px}.colhead.sub{top:26px;height:16px;border-left-style:dashed;color:var(--text-dim);font-size:11px;font-weight:500}.colhead.lead{height:42px;padding-inline:6px;color:var(--text-dim);font-size:11px;font-weight:600}.corner{left:0;z-index:6}.lane-0{--lane: var(--dept-0)}.lane-1{--lane: var(--dept-1)}.lane-2{--lane: var(--dept-2)}.lane-3{--lane: var(--dept-3)}.lane-4{--lane: var(--dept-4)}.lane-5{--lane: var(--dept-5)}.lane-6{--lane: var(--dept-6)}.lane-7{--lane: var(--dept-7)}.lane-added{--lane: var(--row-added)}.lane-label{position:sticky;left:0;z-index:4;padding:var(--space-3) var(--space-2) var(--space-2) var(--space-3);border-bottom:1px solid var(--border);border-right:1px solid var(--border);background:linear-gradient(color-mix(in srgb,var(--lane) 8%,transparent) 0 0),var(--surface);box-shadow:inset 3px 0 color-mix(in srgb,var(--lane) 60%,var(--surface));color:var(--text);font-size:var(--fs-caption);font-weight:600;line-height:1.25}.lane-label{cursor:grab;touch-action:pan-x pan-y;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.lane-label:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.lane-handle{display:flex;align-items:flex-start;gap:var(--space-1)}.lane-grip{flex:none;width:6px;height:10px;margin-top:2px;fill:currentColor;opacity:.45}.lane-handle:hover .lane-grip,.lane-label:focus-visible .lane-grip{opacity:1}.chart.lane-dragging,.chart.lane-dragging .lane-label{cursor:grabbing}.chart.lane-dragging .arrows{visibility:hidden}.chart.lane-dragging [data-lane]:not(.lifted),.chart.lane-settling .lifted{transition:transform .15s ease}.lane-ghost{position:absolute;left:0;right:0;z-index:6;pointer-events:none;background:var(--surface-raised);box-shadow:var(--lift)}.cell.lifted{z-index:7}.course.lifted{z-index:8}.lane-label.lifted{z-index:9}@media(prefers-reduced-motion:reduce){.chart.lane-dragging [data-lane],.chart.lane-settling .lifted{transition:none}}.cell{min-height:48px;border-bottom:1px solid var(--border);border-right:1px dashed var(--border);background:color-mix(in srgb,var(--lane) 7%,transparent)}.cell.gut,.lane-label.gut{border-bottom:0}.cell.gut{position:relative}.cell.gut:after,.lane-label.gut:after{content:"";position:absolute;left:0;right:0;bottom:calc(var(--lane-gap) / 2);border-top:1px solid var(--border);pointer-events:none}.cell.year-end{border-right:0}.cell.gap,.colhead.gap{border-right:0;border-left:1px solid var(--border);background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--lane, var(--text-faint)) 7%,transparent) 0 6px,transparent 6px 12px),var(--surface)}.cell.gap{border-left-color:color-mix(in srgb,var(--border) 60%,transparent)}.cell.fill{border-right:0}.cell.su{position:relative;z-index:1;border:0;background:none}.cell.su.over-terms{margin-inline:25%}.chart:not(.dragging) .cell.su{pointer-events:none}.lane-label:has(.lane-x){display:flex;align-items:flex-start;gap:var(--space-1)}.lane-label:has(.lane-x) .lane-handle{flex:1;min-width:0}.lane-x{position:relative;flex:none;width:20px;height:18px;margin:-2px -4px 0 0;padding:0;border:0;border-radius:var(--radius-s);background:transparent;color:var(--text-faint);font-size:15px;line-height:1;cursor:pointer}.lane-x:hover{background:var(--bg-2);color:var(--err)}.lane-x:focus-visible{outline:2px solid var(--focus);outline-offset:0}@media(pointer:coarse){.lane-x:after{content:"";position:absolute;inset:-12px -8px}}.add-row{position:sticky;left:0;z-index:4;display:flex;align-items:flex-start;padding:var(--space-3) var(--space-2) var(--space-2) var(--space-3);border:0;border-bottom:1px solid var(--border);border-right:1px solid var(--border);background:var(--surface);color:var(--brand);font:inherit;font-size:var(--fs-caption);font-weight:600;line-height:1.25;text-align:left;white-space:nowrap;cursor:pointer}.add-row:hover{background:var(--bg-2)}.add-row:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.chart.dragging .cell.drop-ok{background:var(--ok-soft)}.chart.dragging .cell.su.over-terms.drop-ok{background:none;border-inline:1px dashed var(--ok)}.chart.dragging .cell.drop-dim{opacity:.35}.cell.slim{min-height:24px}.lane-label.slim{padding-block:var(--space-1)}.chart.dragging .cell.slim.open{min-height:48px}@media(pointer:coarse){.cell.slim{min-height:var(--tap)}}.remove-list{margin:var(--space-2) 0 0;padding-left:20px}.chart-wrap.more-below{mask-image:linear-gradient(to bottom,var(--surface) calc(100% - 32px),transparent)}.drop-slot{z-index:4;margin:1px 2px;border:2px solid var(--brand);border-radius:var(--radius-s);pointer-events:none}@media(max-width:767px),(orientation:landscape)and (max-width:960px)and (pointer:coarse){.chart .drop-name:not(:empty){position:fixed;inset:auto 0 calc(var(--tabbar-h) + var(--safe-bottom)) 0;z-index:60;width:auto;min-width:0;padding:var(--space-2) var(--gutter);border-top:1px solid var(--border);background:var(--brand);color:var(--on-brand);font-size:var(--fs-small);text-align:center}}.drop-name{display:block;width:0;min-width:100%;padding:4px var(--space-2);color:var(--brand);font-size:var(--fs-caption);font-weight:700;line-height:1.25}.chart,.board-key{--arrow-quiet: color-mix(in srgb, var(--text-faint) 70%, var(--surface))}.arrows{position:absolute;left:0;top:0;z-index:1;overflow:visible;pointer-events:none}.arrows g path,.key-arrow .ln{fill:none;stroke-width:1.6}.arrows g path[data-from]{stroke:var(--arrow-quiet)}.arrows g path.conditional,.key-arrow .ln.conditional{stroke-dasharray:1.5 4;stroke-linecap:round;stroke-width:2}.arrows g path.unmet,.arrows g path.blocked,.key-arrow .ln.unmet{stroke-dasharray:6 4}.arrows g path.traced.met,.chart.lit .arrows g path.met{stroke:var(--ok)}.arrows g path.traced:is(.conditional,.blocked),.chart.lit .arrows g path:is(.conditional,.blocked){stroke:var(--warn)}.arrows g path.traced.unmet,.chart.lit .arrows g path.unmet{stroke:var(--err)}.arrows g path.traced.part,.chart.lit .arrows g path.part{stroke:var(--row-added)}.ah-quiet{fill:var(--arrow-quiet)}.arrows .cut rect{fill:var(--surface);stroke:var(--ok);stroke-width:1}.arrows .cut text{fill:var(--ok);font-size:9px;font-weight:600;text-anchor:middle;dominant-baseline:central;font-variant-numeric:tabular-nums}.arrows .cut:is([data-state=conditional],[data-state=blocked]) rect{stroke:var(--warn)}.arrows .cut:is([data-state=conditional],[data-state=blocked]) text{fill:var(--warn)}.arrows .cut[data-state=unmet] rect{stroke:var(--err)}.arrows .cut[data-state=unmet] text{fill:var(--err)}.chart.tracing .arrows .cut:not(.traced){opacity:.15}.board-key{display:flex;flex-wrap:wrap;align-items:center;gap:2px var(--space-3);margin:0;color:var(--text-dim);font-size:var(--fs-caption);line-height:1.4}.key-group{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px var(--space-3)}@media(max-width:767px),(orientation:landscape)and (max-width:960px)and (pointer:coarse){.key-group{flex-basis:100%}}.key-title{font-weight:600}.key-title+.key-item{margin-left:calc(-1 * var(--space-2))}.key-item{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.key-btn{min-height:24px;margin:0 -6px;padding:0 6px;border:0;border-radius:var(--radius-s);background:transparent;color:inherit;font:inherit;cursor:pointer}.key-btn:hover,.key-btn[aria-pressed=true]{background:var(--bg-2);color:var(--text)}.key-btn:focus-visible{outline:2px solid var(--focus);outline-offset:0}@media(pointer:coarse){.key-btn{min-height:var(--tap)}}.key-item .st-mark{float:none;flex:none;margin:0}.key-arrow{flex:none;width:30px;height:10px;overflow:visible;color:var(--arrow-quiet)}.key-arrow .ln{stroke:currentColor}.key-arrow .kh{fill:currentColor}:is(.key-btn[aria-pressed=true],.board-export) .key-arrow.is-met{color:var(--ok)}:is(.key-btn[aria-pressed=true],.board-export) .key-arrow.is-cond{color:var(--warn)}:is(.key-btn[aria-pressed=true],.board-export) .key-arrow.is-unmet{color:var(--err)}.board-export .board-key{margin-top:var(--space-3)}.board-notes{margin-top:var(--space-3);color:var(--text);font-size:var(--fs-caption);line-height:1.45}.board-notes-title{margin:0 0 var(--space-1);font-weight:600;color:var(--text-dim)}.board-notes ul{display:grid;gap:3px;margin:0;padding:0;list-style:none}.board-notes-when{color:var(--text-dim)}.board-notes-text{white-space:pre-line}.board-export .chart{min-height:0}.ah-met{fill:var(--ok)}.ah-conditional{fill:var(--warn)}.ah-unmet{fill:var(--err)}.ah-blocked{fill:var(--warn)}.ah-part{fill:var(--row-added)}.arrows g path.hit{stroke:transparent;stroke-width:14px;pointer-events:stroke;cursor:pointer}.chart.lane-dragging .arrows g path.hit,.chart.dragging .arrows g path.hit{pointer-events:none}.arrows g path.drawing{marker-end:none}.chart.tracing .arrows g path[data-from]:not(.traced){opacity:.15}.chart.tracing .course:not(.traced){opacity:.4}.chart.tracing .course.ringed{outline:2px solid var(--brand);outline-offset:-2px}@media(prefers-reduced-motion:no-preference){.chart .course,.arrows g path,.arrows .cut{transition:opacity .15s ease}}.board-key.is-tracing .key-group{display:none}.trace-label{color:var(--text);font-weight:600}.info-sec{margin-top:var(--space-3)}.info-h{margin:0;color:var(--text-dim);font-size:var(--fs-caption);font-weight:600;letter-spacing:.02em}.info-sec>ul{margin-top:var(--space-1)}.info-official{margin-top:var(--space-2);padding:var(--space-2) var(--space-3);border:2px solid var(--brand);border-radius:var(--radius-m);background:color-mix(in srgb,var(--brand) 5%,var(--surface-raised));box-shadow:var(--shadow-2)}.info-official>.info-h{color:var(--brand)}.official-q{margin:var(--space-1) 0 0;font-size:var(--fs-small);line-height:1.4}.official-q p{margin:0;color:var(--text)}.official-q cite{display:block;margin-top:2px;color:var(--text-dim);font-size:var(--fs-caption);font-style:normal}.official-none{margin:var(--space-1) 0 0;color:var(--text-dim);font-size:var(--fs-small)}.self-line{margin:var(--space-1) 0 0;color:var(--text);font-size:var(--fs-small);line-height:1.4}.info-official .tile-info{padding:var(--space-2) 0 0;border:0;border-top:1px solid var(--border);border-radius:0;background:none}.info-sec>.verdict,#card-body .info-sec>.verdict{margin-top:var(--space-1)}.link-btn{padding:0;border:0;background:none;color:var(--brand);font:inherit;text-align:left;text-decoration:underline;text-underline-offset:2px;cursor:pointer}@media(pointer:coarse){.link-btn{min-height:var(--tap)}}.part-tag{color:var(--text-dim);font-weight:700;white-space:nowrap}.course{--tone: var(--ok);--fill: var(--ok-soft)}.course.st-warning,.course.st-conditional{--tone: var(--warn);--fill: var(--warn-soft)}.course.st-error{--tone: var(--err);--fill: var(--err-soft)}.course{container:card / inline-size;position:relative;z-index:2;align-self:stretch;min-width:0;overflow:hidden;margin:var(--card-gap-v) var(--card-gap);padding:var(--space-2) 10px;border:1px solid var(--tone);border-radius:var(--radius-s);background:var(--fill);box-shadow:var(--shadow-1);font-size:var(--fs-small);cursor:grab}.course.su,.course.part{padding-inline:6px;font-size:11.5px}.course.selected{outline:2px solid var(--brand);outline-offset:-2px}.course.flash{animation:flash 1.6s ease-out}@keyframes flash{0%,40%{box-shadow:0 0 0 5px var(--warn)}to{box-shadow:var(--shadow-1)}}.course{--x-w: 20px}.course-top{line-height:1.3}.ctl-space{float:right;width:calc(var(--x-w) + 20px);height:1lh}.course .name{font-weight:600;overflow-wrap:normal;word-break:normal;hyphens:manual}.st-mark{float:left;display:grid;place-items:center;width:16px;height:16px;margin:.5px 6px 0 0;border-radius:50%;background:var(--ok);color:var(--on-status);cursor:inherit}.course:is(.part,.su) .name{display:block;clear:both;padding-top:3px}.st-mark.is-warn{background:var(--warn)}.st-mark.is-err{background:var(--err)}.st-mark svg{width:14px;height:14px}.course-remove{position:absolute;top:var(--space-2);right:6px;width:var(--x-w);padding:0;border:0;background:transparent;color:var(--text-faint);font-size:15px;line-height:17px;text-align:right;cursor:pointer}.course-remove:hover{color:var(--err)}@media(hover:hover){.course:not(:hover,:focus-within,.selected) :is(.course-remove,.info-q,.note-q:not(.has-note)){opacity:.55}}.course-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1);margin-top:var(--space-1)}.course-meta>*{max-width:100%}.course-meta .badge,.course-meta .units,.course-meta .prov{box-sizing:border-box;height:18px;font-size:11px;line-height:16px}.course-meta .badge{min-height:0;padding:0 5px;border:1px solid transparent}.badge-self,.course-meta .badge-self{border:1px dashed color-mix(in srgb,var(--level-ap) 60%,transparent);background:color-mix(in srgb,var(--level-ap) 10%,transparent);color:var(--level-ap)}.card-source .badge-self{margin-right:var(--space-1)}.course-meta .prov{display:inline-block;flex:1 1 2.5em;max-width:max-content;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@container card (max-width: 150px){.course-meta .prov{display:none}}.units{padding:1px 0;color:var(--text-dim);white-space:nowrap;font-variant-numeric:tabular-nums}.grades{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-2);margin-top:6px}.grade-field{position:relative;display:flex;flex:1 1 0;align-items:center;gap:5px;min-width:0;font-size:11px;line-height:20px;white-space:nowrap}.grade-field .gt-short{display:none}@container gv (max-width: 88px){.grade-field .gt-long{display:none}.grade-field .gt-short{display:inline}}.grade-field .gl{flex:none;color:var(--text-dim);font-weight:600}.grade-field .gv{container:gv / inline-size;display:flex;flex:1 1 0;align-items:center;justify-content:space-between;gap:var(--space-1);min-width:0;height:22px;padding:0 6px;border:1px solid var(--border);border-radius:5px;background:var(--surface)}.grade-field .gt{overflow:hidden;text-overflow:ellipsis;color:var(--text);font-size:var(--fs-caption);font-weight:600;font-variant-numeric:tabular-nums}.grade-field .is-blank .gt{color:var(--text-faint);font-weight:500}.grade-field .chev{flex:none;color:var(--text-dim);font-size:10px;line-height:1}.grade-field:hover .gv{border-color:var(--border-strong)}.grade-field:focus-within .gv{outline:2px solid var(--focus);outline-offset:1px}.grade-select{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;opacity:0;font-size:11px;cursor:pointer;appearance:none;-webkit-appearance:none}.course .cap{margin:6px 0 0;overflow:hidden;color:color-mix(in srgb,var(--warn) 80%,var(--text));font-size:11px;font-weight:500;line-height:1.3;white-space:nowrap;text-overflow:ellipsis}.info-q{position:absolute;top:calc(var(--space-2) + 1px);right:calc(var(--x-w) + 10px);display:grid;place-items:center;height:16px;padding:0;border:0;background:none;cursor:pointer;--info-size: 14px}.info-q:focus-visible{outline:none}.info-q:focus-visible .info-i{outline:2px solid var(--focus);outline-offset:2px}.name-end{white-space:nowrap}.note-q{position:relative;display:inline-grid;margin-left:.3em;padding:0;vertical-align:baseline;border:0;background:none;color:inherit;font:inherit;line-height:1;cursor:pointer}.note-q>*{grid-area:1 / 1;align-self:baseline}.note-h{visibility:hidden;user-select:none;-webkit-user-select:none}button.note-q:after{content:"";position:absolute;inset:-6px 0 -6px -.3em}.note-i{display:block;width:100%;height:.72em;height:1cap;overflow:visible;color:var(--brand)}.note-i .nf-paper{fill:var(--note)}.note-i .nf-ink{stroke:var(--note-line)}button.note-q:not(.has-note):hover .note-i path:first-child{fill:var(--brand-soft)}.key-item .note-q{margin-left:0;font-size:var(--fs-lead);font-weight:600}.note-q:focus-visible{outline:none}.note-q:focus-visible .note-i{outline:2px solid var(--focus);outline-offset:2px;border-radius:2px}.course.touch{--x-w: 0px;min-height:var(--tap);cursor:pointer}.course.touch .grade-field,.course.touch .st-mark{cursor:inherit}.card-source{margin:0;color:var(--text-dim);font-size:var(--fs-small)}.card-grades{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-3)}.card-acts{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}#card-body .verdict,#card-body .part-line{margin:0}#card-body .part-line{font-size:var(--fs-small)}.info-pop{inset:auto;width:min(360px,calc(100vw - 32px));max-height:min(70vh,560px);margin:0;padding:0 var(--space-3) var(--space-3);overflow:auto;border:1px solid var(--border-strong);border-radius:var(--radius-m);background:var(--surface-raised);box-shadow:var(--shadow-3);color:var(--text);font-size:var(--fs-small);line-height:1.4;text-align:left;cursor:auto}.info-pop::backdrop{background:color-mix(in srgb,var(--backdrop) 60%,transparent);pointer-events:none}.info-head{position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;gap:var(--space-2);margin:0 calc(-1 * var(--space-3));padding:var(--space-3) var(--space-3) var(--space-2);background:var(--surface-raised)}.info-pop.is-scrolled .info-head{box-shadow:0 1px 0 var(--border)}.info-head .requires-name{flex:1;min-width:0}#info-pop-body>:first-child{margin-top:0}.info-pop .clause-body,.info-pop .tile-info dd,.card-info .clause-body,.card-info .tile-info dd{hyphens:manual}.info-close{flex:none;width:32px;height:32px;margin:-6px -6px -6px 0;padding:0;border:0;border-radius:var(--radius-s);background:transparent;color:var(--text-dim);font-size:20px;line-height:1;cursor:pointer}.info-close:hover{background:var(--bg-2);color:var(--text)}@media(max-width:767px),(orientation:landscape)and (max-width:960px)and (pointer:coarse){.info-pop{inset:auto 0 0;width:100%;max-width:none;max-height:75dvh;border-radius:var(--radius-l) var(--radius-l) 0 0;padding:0 var(--space-4) var(--space-4)}.info-head{margin-inline:calc(-1 * var(--space-4));padding:var(--space-4) var(--space-4) var(--space-2)}.info-close{width:var(--tap);height:var(--tap);margin-block:-12px}}.info-pop ul,.card-info ul{display:grid;gap:var(--space-1);margin:var(--space-2) 0 0;padding:0;list-style:none;font-size:var(--fs-small);line-height:1.35}.verdict{display:flex;align-items:flex-start;gap:var(--space-2);margin:var(--space-2) 0 0;padding:6px 10px;border:1px solid var(--ok);border-radius:var(--radius-s);background:var(--ok-soft);color:var(--text);font-weight:600}.verdict .st-mark{float:none;flex:none;margin:2px 0 0}.verdict.is-warn{border-color:var(--warn);background:var(--warn-soft)}.verdict.is-err{border-color:var(--err);background:var(--err-soft)}.verdict.is-info{border-color:var(--border);background:var(--bg-2)}.requires-name{margin:0;font-size:var(--fs-body);font-weight:700;line-height:1.3}.requires-name span{color:var(--text-dim);font-size:var(--fs-small);font-weight:500}.part-line{margin:2px 0 0;color:var(--text-dim)}.info-acts{margin:var(--space-2) 0 0}.note-text{display:block;box-sizing:border-box;width:100%;height:auto;min-height:0;padding:var(--space-2) var(--space-3);font-size:max(16px,var(--fs-body));line-height:1.4;resize:vertical}.note-pop .note-text{margin-top:var(--space-1)}.card-note .note-text{margin-top:var(--space-2)}.note-acts{display:flex;justify-content:space-between;gap:var(--space-2);margin:var(--space-2) 0 0}.note-body{margin:var(--space-1) 0 0;font-size:var(--fs-small);white-space:pre-wrap;overflow-wrap:anywhere}.note-head-sub{display:block;margin-top:2px;color:var(--text-dim);font-size:var(--fs-caption);font-weight:600}.note-count{margin:var(--space-1) 0 0;color:var(--text-dim);font-size:var(--fs-caption);text-align:right;font-variant-numeric:tabular-nums}.info-pop .tile-info,.card-info .tile-info{margin:var(--space-3) 0 0}.info-pop .tile-info dd ul,.card-info .tile-info dd ul{margin:0}.clause{display:grid;grid-template-columns:1.1em minmax(0,1fr);gap:var(--space-1);align-items:start}.clause-icon{font-weight:700;text-align:center}.clause-mark{width:13px;height:13px;vertical-align:-2px}.clause.is-ok .clause-icon{color:var(--ok)}.clause.is-warn .clause-icon{color:var(--warn)}.clause.is-err .clause-icon{color:var(--err)}.clause.is-info .clause-icon{color:var(--info)}.clause.is-neutral .clause-icon,.clause.is-neutral .clause-body{color:var(--text-dim)}.clause-body{min-width:0;overflow-wrap:break-word;hyphens:auto;color:var(--text)}.clause-by,.clause-note{display:block;color:var(--text-dim)}.clause-when{color:var(--text-dim)}.clause.is-warn .clause-note{color:var(--warn)}.clause.is-err .clause-note{color:var(--err)}.clause-tag{color:var(--info);font-weight:600}.clause-tag.is-warn{color:var(--warn)}.clause-tag.is-ok{color:var(--ok)}.clause-tag.is-err{color:var(--err)}.combo{position:relative;margin-bottom:var(--space-3)}.combo-label{display:block;margin-bottom:var(--space-1);color:var(--text-dim);font-size:var(--fs-caption);font-weight:600}.combo-list{position:absolute;left:0;right:0;top:100%;z-index:30;max-height:320px;overflow:auto;margin:4px 0 0;padding:var(--space-1);list-style:none;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-m);box-shadow:var(--shadow-2)}.combo-list li[role=option]{display:grid;gap:1px;padding:6px var(--space-2);border-radius:var(--radius-s);cursor:pointer}.combo-list li.active,.combo-list li[role=option]:hover{background:var(--bg-2)}.combo-list li[aria-selected=true] .opt-name{font-weight:600}.combo-list li[aria-selected=true] .opt-name:before{content:"✓ ";color:var(--brand)}.opt-kind{color:var(--text-faint);font-size:11px;white-space:nowrap}.src-name{margin:0 0 var(--space-2);font-weight:700}.src-note{margin:0 0 var(--space-2);padding:var(--space-2);border-radius:var(--radius-s);background:var(--warn-soft);color:var(--text);font-size:var(--fs-caption);line-height:1.4}.catalog .chips{margin-bottom:var(--space-3);gap:var(--space-1)}.catalog .chip{max-width:100%;white-space:normal;text-align:left;line-height:1.2}.grade-group{border-top:1px solid var(--border)}.grade-group>summary{display:flex;justify-content:space-between;align-items:center;min-height:var(--control-h);padding:0 2px;font-weight:700;list-style:none;cursor:pointer}@media(pointer:coarse){.grade-group>summary{min-height:var(--tap)}}.grade-group>summary::-webkit-details-marker{display:none}.grade-group>summary span:first-child:before{content:"▸ ";color:var(--text-faint)}.grade-group[open]>summary span:first-child:before{content:"▾ "}.all-grades{display:flex;justify-content:space-between;align-items:center;margin:var(--space-1) 0 6px;font-weight:700}.gcount{padding:0 7px;border-radius:var(--radius-pill);background:var(--bg-2);color:var(--text-dim);font-size:11px;font-weight:500;font-variant-numeric:tabular-nums}.tiles{display:grid;gap:var(--space-2);margin:0 0 var(--space-3);padding:0;list-style:none}.tile{padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-s);background:var(--bg);font-size:var(--fs-small);cursor:grab}.tile:hover{border-color:var(--border-strong)}.tile.used{opacity:.75}.tile-row{display:flex;align-items:center;gap:6px}.tile-row+.tile-row{margin-top:var(--space-1)}.subj{color:var(--lane);font-size:11px;font-weight:600}.in-plan{margin-left:auto;color:var(--text-faint);font-size:11px}.tile-name{flex:1;font-weight:600;line-height:1.25}.info-i{display:grid;place-items:center;box-sizing:border-box;width:var(--info-size, 22px);height:var(--info-size, 22px);border:1.5px solid var(--brand);border-radius:50%;color:var(--brand);font-size:calc(var(--info-size, 22px) * .55);font-weight:700;line-height:1}:is(.info-btn,.info-q):hover .info-i{background:var(--brand-soft)}:is(.info-btn[aria-expanded=true],.info-q.is-open) .info-i{background:var(--brand);color:var(--on-brand)}.info-btn{flex:none;display:grid;place-items:center;width:22px;height:22px;padding:0;border:0;border-radius:50%;background:none;cursor:pointer;--info-size: 22px}@media(pointer:coarse){.info-btn{position:relative;width:30px;height:30px;--info-size: 30px}.info-btn:after{content:"";position:absolute;inset:-7px}.tile-row{gap:var(--space-2)}}.tile-info{display:grid;grid-template-columns:auto 1fr;gap:3px var(--space-2);margin:6px 0 2px;padding:6px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-s);background:var(--surface);font-size:var(--fs-caption);cursor:auto}.tile-info dt{color:var(--text-faint);font-weight:600}.tile-info dd{margin:0;overflow-wrap:break-word;hyphens:auto}@media(pointer:coarse){.tile-info a{display:inline-block;min-width:var(--tap);padding-block:14px;margin-block:-14px}}@media(max-width:767px),(orientation:landscape)and (max-width:960px)and (pointer:coarse){body:has(#planner:not([hidden])){height:auto;min-height:100dvh}body:has(#planner:not([hidden])) .site-foot{display:block}.planner-body{flex-direction:column;gap:var(--space-3);padding:var(--space-3) var(--gutter)}.catalog{width:auto}.catalog-groups{max-height:50dvh;overflow:auto}.catalog-hide{min-width:var(--tap);min-height:var(--tap)}.plan-main{gap:var(--space-3)}.planner-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0 var(--space-2);padding:var(--space-2) var(--gutter) 0;border-bottom:0;background:none}.planner-title,.planner-sub{display:contents}.planner-head .plan-pick{grid-area:1 / 1;justify-self:start;min-width:0;min-height:var(--tap);padding:0;gap:var(--space-2);border:0;background:none;font-size:var(--fs-title-1);letter-spacing:-.01em}.plan-pick-label,.planner-head .meta,.act-word,.long-text{display:none}.plan-pick-name{max-width:none;min-width:0;font-weight:700}.plan-pick>[aria-hidden]{color:var(--brand);font-size:var(--fs-title-3)}.planner-head h1{grid-area:2 / 1 / 3 / 3;color:var(--text-dim);font-size:var(--fs-body);font-weight:400}.planner-head>.planner-acts{grid-area:1 / 2;flex-wrap:nowrap;gap:0;margin:0 -10px 0 0}.planner-acts .act-icon{width:var(--tap);min-height:var(--tap);padding:0;border-color:transparent;border-radius:var(--radius-pill);background:none;color:var(--brand)}.planner-acts .act-svg{display:block;width:26px;height:26px}.planner-acts .more-btn{display:inline-flex}.short-text{display:inline}.plan-more:not(:popover-open){display:none}.plan-more:popover-open{position:fixed;inset:auto;display:grid;min-width:230px;margin:0;padding:var(--space-1);border:1px solid var(--border);border-radius:var(--radius-m);background:var(--surface-raised);box-shadow:var(--shadow-2);color:var(--text)}.plan-more .btn{justify-content:flex-start;min-height:var(--tap);padding-inline:var(--space-3);border:0;background:transparent;font-size:var(--fs-body);font-weight:500}.plan-more .btn:hover{background:var(--bg-2)}.more-note{display:block;margin:var(--space-1) 0 0;padding:var(--space-2) var(--space-3) var(--space-1);border-top:1px solid var(--border);color:var(--text-dim);font-size:var(--fs-caption);line-height:1.5}.more-note a{display:inline-block;padding-block:14px;margin-block:-14px}.plan-bar{display:grid;gap:0}.plan-bar>.plan-tools{display:contents}.plan-bar .req-bar{padding:var(--space-3) var(--space-4);border-bottom:0;border-radius:var(--radius-l) var(--radius-l) 0 0}.req-bar-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--space-2)}.req-bar-row>.req-total{display:contents}.req-label{grid-area:1 / 1;font-size:var(--fs-body)}.req-total-num{grid-area:1 / 2;justify-self:end;color:var(--text-dim)}.req-total .bar{grid-area:2 / 1 / 3 / 4}.req-bar-row>.ap-mini{grid-area:3 / 1 / 4 / 4}.req-bar:not(.open) .ap-mini{display:none}.req-bar .req-toggle,.req-bar .req-toggle[aria-expanded=true]{grid-area:1 / 3;min-height:var(--tap);margin:-11px calc(-1 * var(--space-2)) -11px 0;padding-inline:var(--space-2);border-color:transparent;background:none;color:var(--brand)}.plan-bar [data-tool=sheet-issues],.plan-bar [data-tool=sheet-issues][aria-expanded=true]{justify-content:flex-start;width:100%;min-height:52px;padding-inline:var(--space-4);border:1px solid var(--border);border-radius:0 0 var(--radius-l) var(--radius-l);background:var(--surface);color:var(--text);font-size:var(--fs-body);font-weight:500}.plan-bar [data-tool=sheet-issues] #issue-badges{margin-left:auto}.plan-bar [data-tool=sheet-issues]:after{content:"";flex:none;width:8px;height:8px;margin:0 3px 0 var(--space-1);border-top:1.8px solid var(--text-faint);border-right:1.8px solid var(--text-faint);rotate:45deg}.plan-bar [data-tool=sheet-path],.plan-bar [data-tool=sheet-path][aria-expanded=true]{width:100%;margin-top:var(--space-3);border-color:var(--border);border-radius:var(--radius-l);background:var(--surface);color:var(--brand);font-size:var(--fs-body)}.chart-wrap,#board-key{display:none}.chart{min-height:0;--half-col: minmax(calc(7rem / var(--terms, 2)), 1fr);--lead-col: var(--space-6)}.info-btn{width:30px;height:30px;--info-size: 30px}.menu-list{max-width:calc(100vw - 2 * var(--space-4))}.menu-list button{min-height:var(--tap)}}.year-list{display:none}@media(max-width:767px),(orientation:landscape)and (max-width:960px)and (pointer:coarse){.year-list{display:block}}.yl-year{margin-top:var(--space-5)}.yl-year:first-child{margin-top:0}.courses-open+.yl-year{margin-top:var(--space-3)}.yl-year.is-summer+.yl-year{margin-top:var(--space-4)}.yl-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:0 var(--space-2);margin:0 4px var(--space-2)}.yl-head h3{margin:0;font-size:var(--fs-title-3);font-weight:700}.yl-head span{color:var(--text-dim);font-size:var(--fs-small);font-variant-numeric:tabular-nums}.yl-year.is-summer .yl-head h3{color:var(--text-dim);font-size:var(--fs-body);font-weight:600}.yl-group{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-l);background:var(--surface)}.yl-row{position:relative;display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:60px;padding:10px var(--space-4);border:0;background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}.yl-row+.yl-row:before{content:"";position:absolute;top:0;left:44px;right:0;border-top:1px solid var(--border)}.yl-row:active{background:var(--bg-2)}.yl-row:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.yl-row .st-mark{float:none;flex:none;align-self:flex-start;margin:3px 0 0}.yl-txt{flex:1;min-width:0}.yl-name{display:block;font-size:var(--fs-body);font-weight:600;line-height:1.3}.yl-meta{display:block;margin-top:2px;color:var(--text-dim);font-size:var(--fs-small);line-height:1.3}.yl-meta .badge{vertical-align:top;margin-block:-1px}.yl-grades{flex:none;display:flex;gap:6px;font-size:var(--fs-body);font-weight:600;font-variant-numeric:tabular-nums}.yl-grades span{width:1.75em}.yl-grades .none{color:var(--text-faint);font-weight:400}.yl-go{flex:none;width:8px;height:13px;fill:none;stroke:var(--text-faint);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.yl-add{min-height:48px;color:var(--brand);font-weight:600}.yl-add+.yl-row:before,.yl-row+.yl-add:before{left:var(--space-4)}.yl-ap span{width:auto}.yl-self{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:48px;margin-top:var(--space-5);padding:10px var(--space-4);border:1px dashed var(--border-strong);border-radius:var(--radius-l);background:none;color:var(--brand);font:inherit;font-weight:600;text-align:left;cursor:pointer}.yl-self:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.board-export{position:fixed;left:-100000px;top:0;padding:var(--space-4);color-scheme:light;background:var(--surface);color:var(--text)}.board-export-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-1) var(--space-4);margin:0 0 var(--space-3);font-size:var(--fs-small);overflow-wrap:anywhere}.board-export-head span{color:var(--text-dim)}.export-title{margin:0 0 var(--space-3);font-size:var(--fs-title-3)}.export-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:var(--fs-body);line-height:1.4}.export-table th{padding:6px var(--space-2);background:var(--brand);color:var(--on-brand);font-weight:600;text-align:left}.export-table td{padding:6px var(--space-2);border-bottom:1px solid var(--border);vertical-align:top;overflow-wrap:anywhere;white-space:pre-line}.export-table tbody tr:nth-child(2n) td{background:var(--bg)}.board-export .chart{border:1px solid var(--border)}.board-export .grade-text{margin:0;color:var(--text);font-size:12px;font-weight:600}
