.planner-head{margin-block:var(--s-8) var(--s-4)}.planner-head__title{font:600 var(--t-xl) var(--font-ui);letter-spacing:-.02em;color:var(--ink);margin:0}.planner-head__lede{margin:var(--s-2) 0 0;font:400 var(--t-md) var(--font-ui);color:var(--ink-2);max-width:60ch}.toolbar{justify-content:space-between;align-items:center;gap:var(--s-3) var(--s-4);margin-bottom:var(--s-6);padding-bottom:var(--s-4);border-bottom:1px solid var(--line);flex-wrap:wrap;display:flex}.toolbar__summary{align-items:center;gap:var(--s-2);font:400 var(--t-sm) var(--font-ui);color:var(--ink-2);flex-wrap:wrap;margin:0;display:flex}.toolbar__summary strong{color:var(--ink);font-weight:600}.toolbar__dot{color:var(--line-strong)}.toolbar__actions{align-items:center;gap:var(--s-2);display:flex}.toolbar__career{border:1px solid var(--line);border-radius:var(--r-md);display:inline-flex;overflow:hidden}.toolbar__career-btn{padding:var(--s-1) var(--s-2);background:var(--surface);font:500 var(--t-xs) var(--font-ui);color:var(--muted);cursor:pointer;border:0}.toolbar__career-btn+.toolbar__career-btn{border-left:1px solid var(--line)}.toolbar__career-btn[aria-pressed=true]{background:var(--gold-wash);color:var(--gold-text)}.toolbar__confirm{flex-basis:100%}.career-choice__text{color:var(--ink-2);font:400 var(--t-sm) var(--font-ui);max-width:60ch;margin:0}.toolbar__career-btn:focus-visible{box-shadow:var(--focus);outline:none}.problems{padding:var(--s-1);margin:0;list-style:none}.problems__row{align-items:center;gap:var(--s-2);width:100%;padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);font:400 var(--t-sm) var(--font-ui);color:var(--ink-2);text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:16px auto auto 1fr;display:grid}.problems__row:hover{background:var(--surface-2)}.problems__row:focus-visible{box-shadow:var(--focus);outline:none}.problems__row .code{color:var(--ink);font-weight:600}.problems__row--violation svg{color:var(--danger)}.problems__row--warning svg{color:var(--warn)}.problems__why{color:var(--ink-2)}.menu{gap:var(--s-1);padding:var(--s-2);flex-direction:column;display:flex}.menu .btn{justify-content:flex-start}.menu__text{margin:var(--s-1) var(--s-2) var(--s-2);font:400 var(--t-sm) var(--font-ui);color:var(--ink-2)}.menu__actions{gap:var(--s-2);padding:0 var(--s-2) var(--s-1);display:flex}.first-run{margin-bottom:var(--s-6);padding:var(--s-6);background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.first-run__title{margin:0 0 var(--s-4);font:600 var(--t-lg) var(--font-ui);letter-spacing:-.01em;color:var(--ink)}.first-run__foot{align-items:center;gap:var(--s-3) var(--s-4);margin-top:var(--s-5);flex-wrap:wrap;display:flex}.first-run__saved{font:400 var(--t-sm) var(--font-ui)}.guide{gap:var(--s-3);margin:0;padding:0;list-style:none;display:grid}.guide li{gap:var(--s-3);font:400 var(--t-base) var(--font-ui);color:var(--ink-2);grid-template-columns:24px 1fr;align-items:start;display:grid}.guide strong{color:var(--ink);font-weight:600}.guide__n{background:var(--gold-wash);width:24px;height:24px;color:var(--gold-text);font:600 var(--t-xs) var(--font-code);border-radius:50%;place-items:center;display:grid}.grid-view{gap:var(--s-8);display:grid}.year__head{align-items:center;gap:var(--s-3);margin-bottom:var(--s-3);min-height:32px;display:flex}.year__title{font:600 var(--t-xs) var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:0}.year__rule{background:var(--line);flex:1;height:1px}.year__units{font:400 var(--t-xs) var(--font-code);color:var(--muted)}.year__panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1);overflow:hidden}.term{grid-template-columns:72px 1fr 56px;align-items:stretch;display:grid}.term+.term{border-top:1px solid var(--line)}.term__label{align-items:flex-start;gap:var(--s-1);padding:var(--s-4) var(--s-3);background:var(--surface-2);border-right:1px solid var(--line);flex-direction:column;display:flex}.term__name{font:600 var(--t-sm) var(--font-code);color:var(--ink-2)}.term__units{font:400 var(--t-xs) var(--font-code);color:var(--muted)}.term__units--inline{display:none}.term__units--end{padding-right:var(--s-4);place-self:center end}.term__slots{gap:var(--s-2);padding:var(--s-3);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.term--summer .term__slots{grid-template-columns:repeat(4,minmax(0,1fr))}.term__remove{font:500 var(--t-xs) var(--font-ui);color:var(--muted);cursor:pointer;text-underline-offset:2px;background:0 0;border:0;padding:0;text-decoration:underline}.term__remove:hover{color:var(--danger)}.term__remove:focus-visible{box-shadow:var(--focus);border-radius:2px;outline:none}.add-summer{align-items:center;gap:var(--s-1);margin-top:var(--s-2);padding:var(--s-1) var(--s-2);border-radius:var(--r-sm);font:500 var(--t-sm) var(--font-ui);color:var(--muted);cursor:pointer;transition:color var(--d-fast) var(--ease), background-color var(--d-fast) var(--ease);background:0 0;border:0;display:inline-flex}.add-summer:hover{color:var(--ink);background:var(--info-wash)}.add-summer:focus-visible{box-shadow:var(--focus);outline:none}.grid-view__foot{justify-content:flex-start;display:flex}.grid-view__error{margin:0 0 var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);background:var(--danger-wash);color:var(--danger);font:500 var(--t-sm) var(--font-ui)}.confirm{justify-content:space-between;align-items:center;gap:var(--s-2) var(--s-3);margin-bottom:var(--s-3);padding:var(--s-3) var(--s-4);border:1px solid var(--danger-line);border-radius:var(--r-md);background:var(--danger-wash);font:500 var(--t-sm) var(--font-ui);color:var(--ink);flex-wrap:wrap;display:flex}.confirm__actions{gap:var(--s-2);display:flex}.slot{justify-content:center;align-items:center;gap:var(--s-1);min-height:76px;padding:var(--s-2);border:1px dashed var(--line-strong);border-radius:var(--r-sm);font:500 var(--t-sm) var(--font-ui);color:var(--muted);cursor:pointer;text-align:center;transition:border-color var(--d-fast) var(--ease), background-color var(--d-fast) var(--ease), color var(--d-fast) var(--ease);background:0 0;display:flex}.slot:hover,.slot[aria-expanded=true]{border-style:solid;border-color:var(--gold);background:var(--gold-wash);color:var(--gold-text)}.slot:focus-visible{box-shadow:var(--focus);border-color:var(--gold);background:var(--gold-wash);color:var(--gold-text);outline:none}.slot--drop{border-style:solid;border-color:var(--gold);background:var(--gold-wash);color:var(--gold-text)}.slot--hint{border-color:var(--gold);color:var(--gold-text);animation:slot-pulse 1.2s var(--ease) 1}@keyframes slot-pulse{0%{background:var(--surface)}50%{background:var(--gold-wash)}to{background:0 0}}@media (prefers-reduced-motion:reduce){.slot--hint{animation:none}}.card[draggable=true]{cursor:grab}.card__part{font:500 var(--t-xs) var(--font-ui);color:var(--gold-text);margin:0}.card--span{border-left:3px solid var(--gold)}.card--cont{background:var(--gold-wash)}.card--dragging{opacity:.45}.card{gap:var(--s-1);min-width:0;min-height:76px;padding:var(--s-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);cursor:default;transition:box-shadow var(--d-fast) var(--ease), transform var(--d-fast) var(--ease), opacity var(--d-slow) var(--ease), border-color var(--d-base) var(--ease);flex-direction:column;display:flex;position:relative}.card:hover{box-shadow:var(--shadow-2);transform:translateY(var(--lift))}.card:focus-visible{box-shadow:var(--focus);outline:none}.card--fresh{animation:card-in var(--d-slow) var(--ease) both}@keyframes card-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.card--fresh{animation:none}}.card__row1{justify-content:space-between;align-items:baseline;gap:var(--s-2);padding-right:var(--s-5);display:flex}.card__code{font:600 var(--t-sm) var(--font-code);color:var(--ink)}.card__units{font:400 var(--t-xs) var(--font-code);color:var(--muted)}.card__title{font:400 var(--t-sm) var(--font-ui);color:var(--ink-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.card__offer{gap:var(--s-1);padding-top:var(--s-1);flex-wrap:wrap;margin-top:auto;display:flex}.card__offer .chip{height:18px;font-family:var(--font-code);padding:0 5px}.card__issues{margin:var(--s-1) calc(-1 * var(--s-3)) calc(-1 * var(--s-3))}.card__strip{align-items:center;gap:var(--s-1);padding:6px var(--s-3);font:600 var(--t-xs) var(--font-ui);border-radius:0 0 var(--r-md) var(--r-md);margin:0;display:flex}.card__strip svg{flex:none}.card__strip-text{min-width:0}.card__strip--error{background:var(--danger-wash);color:var(--danger)}.card__strip--warning{background:var(--warn-wash);color:var(--warn)}.card__strip--info{background:var(--info-wash);color:var(--info);font-weight:500}.card__more{opacity:.85;flex:none;margin-left:auto;font-weight:500}.card--violation{border-color:var(--danger-line)}.card--violation:before{content:"";border-radius:var(--r-md) 0 0 var(--r-md);background:var(--danger-line);width:3px;position:absolute;top:-1px;bottom:-1px;left:-1px}.card--warning{border-style:dashed;border-color:var(--warn-line)}.card__remove{opacity:0;transition:opacity var(--d-fast) var(--ease);position:absolute;top:6px;right:6px}.card:hover .card__remove,.card:focus-within .card__remove,.card__remove:focus-visible{opacity:1}@media (hover:none),(pointer:coarse){.card__remove{opacity:1}}.card__edit{margin:-4px auto -4px calc(4px - var(--s-2));color:var(--muted);opacity:.7;align-self:center}.card__edit:hover,.card__edit:focus-visible{opacity:1;color:var(--gold-text)}.card[data-trace=dim]{opacity:.45}.card[data-trace=needs]{outline:2px solid var(--gold);outline-offset:1px}.card[data-trace=unlocks]{outline:2px dashed var(--gold);outline-offset:1px}.card[data-trace=clashes]{outline:2px solid var(--danger-line);outline-offset:1px}.card__tag{top:-9px;left:var(--s-2);border-radius:var(--r-sm);font:600 10px/16px var(--font-code);letter-spacing:.04em;text-transform:uppercase;animation:ui-fade-in var(--d-base) var(--ease) both;padding:0 6px;position:absolute}.card__tag--needs,.card__tag--unlocks{background:var(--gold);color:var(--ink)}.card__tag--clashes{background:var(--danger-line);color:var(--on-ink)}.detail{gap:var(--s-3);font:400 var(--t-sm) var(--font-ui);color:var(--ink-2);display:grid}.detail__head{gap:2px;display:grid}.detail__code{font:600 var(--t-sm) var(--font-code);color:var(--gold-text)}.detail__title{font:600 var(--t-md) var(--font-ui);color:var(--ink)}.detail__meta{font:400 var(--t-xs) var(--font-ui);color:var(--muted);margin:0}.detail__issues{gap:var(--s-1);margin:0;padding:0;list-style:none;display:grid}.detail__issue{gap:var(--s-2);padding:var(--s-2);border-radius:var(--r-sm);font:400 var(--t-xs) var(--font-ui);grid-template-columns:14px 1fr;align-items:start;display:grid}.detail__issue svg{margin-top:2px}.detail__issue strong{font-weight:600}.detail__issue--error{background:var(--danger-wash);color:var(--danger)}.detail__issue--warning{background:var(--warn-wash);color:var(--warn)}.detail__issue-more{color:var(--ink-2);margin-top:2px;display:block}.detail__section{gap:var(--s-1);display:grid}.detail__label{font:600 var(--t-xs) var(--font-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0}.detail__text{margin:0}.detail__chips{gap:var(--s-1);flex-wrap:wrap;display:flex}.detail__summary{-webkit-line-clamp:4;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.detail__official summary{cursor:pointer;color:var(--ink);font-weight:500}.detail__official p{margin:var(--s-1) 0 0;white-space:pre-line;color:var(--ink-2);font-size:12px}.detail__link{align-items:center;gap:var(--s-1);color:var(--gold-text);font-weight:500;display:inline-flex}.popover.detail-popover{max-width:min(340px,100vw - 16px)}.sheet .detail{padding:0 var(--s-4) var(--s-4)}.clauses,.clause__children{margin:0;padding:0;list-style:none}.clause__children{padding-left:var(--s-3);border-left:1px solid var(--line);margin-top:2px;margin-left:6px}.clause{margin:2px 0}.clause__row{gap:var(--s-2);grid-template-columns:14px 1fr;align-items:start;display:grid}.clause__mark{place-items:center;margin-top:3px;display:inline-grid}.clause__mark--met{color:var(--ink-2)}.clause__mark--unmet{color:var(--danger)}.clause__mark--unknown{color:var(--warn)}.clause__group{color:var(--ink);font-weight:600}.clause__text--unmet{color:var(--danger)}.clause__text--unknown{color:var(--warn)}.search{flex-direction:column;min-height:0;display:flex}.search__field{padding:var(--s-3);border-bottom:1px solid var(--line);position:relative}.search__icon{left:calc(var(--s-3) + 10px);color:var(--muted);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.search__input{padding-left:34px}.search__progress{background:var(--gold);transform-origin:0;height:2px;animation:search-progress .9s var(--ease) infinite;position:absolute;bottom:-1px;left:0;right:0}@keyframes search-progress{0%{transform:scaleX(0)}to{opacity:.3;transform:scaleX(1)}}.search__message{padding:var(--s-2) var(--s-4);background:var(--danger-wash);color:var(--danger);font:500 var(--t-xs) var(--font-ui);margin:0}.search__heading{padding:var(--s-3) var(--s-4) var(--s-1);font:600 var(--t-xs) var(--font-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0}.search__list{padding:var(--s-1) var(--s-1) var(--s-2);max-height:360px;margin:0;list-style:none;overflow-y:auto}.search__option{column-gap:var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);cursor:pointer;grid-template-columns:1fr auto;grid-template-areas:"row1 pill""title pill";align-items:center;display:grid}.search__option[data-active]{background:var(--gold-wash)}.search__option[aria-disabled=true]{cursor:not-allowed;opacity:.7}.search__option[aria-disabled=true][data-active]{background:var(--surface-2)}.search__row1{gap:var(--s-2);grid-area:row1;align-items:baseline;display:flex}.search__code{font:600 var(--t-sm) var(--font-code);color:var(--ink)}.search__units{font:400 var(--t-xs) var(--font-code);color:var(--muted)}.search__title{font:400 var(--t-sm) var(--font-ui);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;grid-area:title;overflow:hidden}.search__pill{grid-area:pill;justify-self:end}.search__pill .chip{text-overflow:ellipsis;max-width:170px;overflow:hidden}.search__empty{padding:var(--s-4);font:400 var(--t-sm) var(--font-ui);color:var(--ink-2);gap:var(--s-2);justify-items:start;margin:0;display:grid}.search__empty p{margin:0}.search-popover{flex-direction:column;display:flex;overflow:hidden}.planner__loading{padding:var(--s-10);text-align:center;color:var(--muted)}@media (width<=640px){.planner-head{margin-top:var(--s-6)}.toolbar{flex-direction:column;align-items:stretch}.toolbar__actions{justify-content:space-between}.toolbar__summary{order:2}.term{grid-template-columns:1fr}.term__label{align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border-right:0;border-bottom:1px solid var(--line);flex-direction:row}.term__units--inline{display:inline}.term__units--end{display:none}.term__remove{margin-left:auto}.term__slots,.term--summer .term__slots{grid-template-columns:repeat(2,minmax(0,1fr))}.first-run{padding:var(--s-4)}.search__list{max-height:none}}@media (pointer:coarse){.slot,.card{min-height:88px}.add-summer,.term__remove{min-height:44px}}
