html:has(.dashboard),.dashboard{overscroll-behavior:none}.dashboard{min-height:100dvh}.wrap{padding:0 var(--gutter) calc(72px + env(safe-area-inset-bottom,0px))}.bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;height:calc(68px + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) var(--gutter) 0;background:color-mix(in srgb,var(--paper) 84%,transparent);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%)}.bar__mark{font-size:22px}.bar__right{display:flex;align-items:center;gap:12px}.rule-pill{display:inline-flex;align-items:center;gap:10px;height:38px;padding:0 6px 0 16px;border:0;border-radius:999px;background:transparent;box-shadow:inset 0 0 0 1px var(--hair);font-size:14px;color:var(--muted);cursor:pointer;transition:transform .16s var(--ease-out),background-color .3s}.rule-pill:active{transform:scale(.97)}@media(hover:hover)and (pointer:fine){.rule-pill:hover{background:var(--accent-soft)}}.rule-pill__v{display:inline-flex;align-items:center;height:28px;padding:0 11px;border-radius:999px;background:var(--ink);color:var(--paper);font-size:13px}.summary{display:grid;gap:clamp(20px,3vw,32px);padding:clamp(28px,5vh,64px) 0 clamp(24px,4vh,40px)}.summary__lede{max-width:24ch;font-size:clamp(30px,4.2vw,60px);font-weight:600;line-height:1.02;letter-spacing:-.045em;text-wrap:balance}.summary__sub{margin-top:14px;max-width:62ch;font-size:clamp(15px,1.2vw,17px);color:var(--muted)}.sky{position:relative;isolation:isolate;padding:18px clamp(12px,2vw,24px) 10px;border-radius:var(--panel-r);background:var(--paper-2)}.sky[hidden]{display:none}.sky__canvas{display:block;width:100%;height:clamp(170px,24vh,240px);cursor:pointer}.sky__labels{display:grid;grid-template-columns:repeat(var(--n, 1),minmax(0,1fr));margin:8px 0 0;padding:0;list-style:none}.sky__label{transform-origin:50% 0;display:grid;justify-items:center;gap:1px;width:100%;padding:6px 0;border:0;border-radius:10px;background:transparent;cursor:pointer;transition:background-color .3s}@media(hover:hover)and (pointer:fine){.sky__label:hover{background:var(--paper-3)}}.sky__short{max-width:100%;overflow:hidden;font-size:13px;font-weight:600;letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap}.sky__pct{font-size:12px;color:var(--muted)}.sky__label[data-state=below] .sky__pct{color:var(--danger)}.sky__tip{position:absolute;left:var(--x, 0);top:var(--y, 0);z-index:2;display:grid;gap:2px;min-width:150px;max-width:240px;padding:10px 12px;border-radius:12px;background:var(--paper);box-shadow:0 12px 34px var(--shadow),0 0 0 1px var(--hair);font-size:13px;pointer-events:none;opacity:0;transform:translate(-50%,calc(-100% + 6px));transition:opacity .25s,transform .4s var(--ease-out)}.sky__tip.is-on{opacity:1;transform:translate(-50%,-100%)}.sky__tip b{font-weight:600}.sky__tip span{color:var(--muted)}.term{display:flex;flex-wrap:wrap;align-items:end;gap:14px 22px;padding:18px 0;border-top:1px solid var(--hair)}.term[hidden]{display:none}.term__field{display:grid;gap:6px;min-width:0}.term__field label,.field-label,.import label.field-label{font-size:13px;color:var(--muted)}.term__end{display:flex;align-items:center;gap:8px}.term input[type=date]{height:40px;padding:0 14px;border:0;border-radius:999px;box-shadow:inset 0 0 0 1px var(--hair);background:transparent;font-family:var(--mono);font-size:14px}.term__note{flex:1 1 220px;min-height:40px;display:flex;align-items:center;justify-content:flex-end;font-size:14px;color:var(--muted);text-align:right}.courses{border-top:1px solid var(--hair)}.courses__head,.row__sum{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(150px,1.05fr) repeat(3,minmax(84px,.62fr)) 32px;gap:20px 30px;align-items:center}.courses__head{padding:14px 0;font-size:12px;color:var(--muted)}.courses__head[hidden]{display:none}.rows{margin:0;padding:0;list-style:none}.row{border-top:1px solid var(--hair)}.row__sum{position:relative;isolation:isolate;width:100%;min-height:84px;padding:16px 0;border:0;background:none;text-align:left;cursor:pointer}.row__sum:before{content:"";position:absolute;top:4px;right:-16px;bottom:4px;left:-16px;z-index:-1;border-radius:18px;background:radial-gradient(320px circle at var(--sx, 50%) var(--sy, 50%),var(--accent-soft),transparent 70%);opacity:0;pointer-events:none;transition:opacity .5s var(--ease-out)}@media(hover:hover)and (pointer:fine){.row__sum:hover:before{opacity:1}.row__sum:hover .meter{transform:scaleY(1.5)}.row__sum:hover .row__v{transform:translateY(-2px)}.row__sum:hover .row__attend .row__v{transition-delay:.04s}.row__sum:hover .row__skip .row__v{transition-delay:.08s}}.row__sum:focus-visible{outline-offset:-2px;border-radius:12px}.row__title{display:grid;gap:2px;min-width:0}.row__name{overflow:hidden;font-size:17px;font-weight:500;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;transition:color .3s}@media(hover:hover)and (pointer:fine){.row__sum:hover .row__name{color:var(--accent-ink)}}.row__meta{display:flex;gap:10px;overflow:hidden;font-size:13px;color:var(--muted);white-space:nowrap}.row__parts{overflow:hidden;text-overflow:ellipsis}.row__flag{flex:none}.row__flag:empty{display:none}.row__flag[data-tone=danger]{color:var(--danger)}.row__flag[data-tone=edge]{color:var(--ink)}.row__level{display:flex;align-items:center;gap:14px}.meter{position:relative;flex:1;height:2px;background:var(--hair);transition:transform .5s var(--ease-out)}.meter__fill{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--accent);transform-origin:left;transform:scaleX(var(--fill, 0));transition:transform .9s var(--ease-out),background-color .4s}.meter__tick{position:absolute;top:-7px;bottom:-7px;left:calc(var(--tick, .75) * 100%);width:1.5px;background:var(--ink);transition:left .9s var(--ease-out)}.row__pct{min-width:6.4ch;font-size:15px;text-align:right}.row[data-state=empty] .row__pct{font-family:var(--sans);font-size:13px;color:var(--muted)}.row[data-state=below] .meter__fill{background:var(--danger)}.row[data-state=below] .row__pct{color:var(--danger)}.row__stat{display:grid;gap:2px;min-width:0}.row__k{display:none;font-size:12px;color:var(--muted)}.row__v{display:block;font-size:20px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.03em;line-height:1.15;transition:transform .5s var(--ease-out),color .3s}.row__skip .row__v[data-tone=good]{color:var(--accent-ink)}.row__v[data-tone=danger]{color:var(--danger)}.row__left{grid-template-columns:auto 1fr;align-items:baseline;column-gap:6px}.row__left .row__k{grid-column:1 / -1}.row__of{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.row__of:empty{display:none}.row__v[data-tone=muted]{color:var(--muted);font-size:14px;font-weight:400;letter-spacing:0}.row__chev{display:grid;place-items:center;width:32px;height:32px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--hair)}.row__chev svg{width:16px;height:16px;transition:transform .6s var(--ease-out)}.row.is-open .row__chev svg{transform:rotate(180deg)}.row__drawer{display:grid;grid-template-rows:0fr;transition:grid-template-rows .65s var(--ease-out)}.row.is-open .row__drawer{grid-template-rows:1fr}.drawer{min-height:0;overflow:hidden}.drawer__in{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:24px clamp(24px,4vw,56px);padding:2px 0 28px;opacity:0;transform:translateY(-8px);transition:opacity .35s,transform .65s var(--ease-out)}.row.is-open .drawer__in{opacity:1;transform:none;transition-delay:.08s}.drawer__col{display:grid;align-content:start;gap:10px;min-width:0}.drawer__name{height:44px;padding:0 16px;border:0;border-radius:999px;box-shadow:inset 0 0 0 1px var(--hair);background:transparent;font-size:16px;font-weight:500;transition:box-shadow .3s}.drawer__name:focus,.cnt:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--accent)}.drawer__parts-k{margin-top:10px}.parts{margin:0;padding:0;list-style:none}.part{display:grid;grid-template-columns:84px auto minmax(56px,1fr) auto;gap:12px;align-items:center;padding:8px 0;border-top:1px solid var(--hair)}.part:first-child{border-top:0}.part__kind{font-size:14px;font-weight:500}.part__counts{display:inline-flex;align-items:center;gap:4px}.part__of{font-family:var(--sans);font-size:13px;color:var(--muted)}.cnt{width:56px;height:40px;border:0;border-radius:10px;background:transparent;box-shadow:inset 0 0 0 1px transparent;font-family:var(--mono);font-size:17px;text-align:center;color:var(--ink);transition:background-color .3s,box-shadow .3s}@media(hover:hover)and (pointer:fine){.cnt:hover{background:var(--accent-soft)}}.part__pct{font-size:13px;color:var(--muted)}.part[data-state=below] .part__pct{color:var(--danger)}.part__act{display:flex;gap:6px}.part__del[hidden]{display:none}.parts__add{display:flex;flex-wrap:wrap;gap:4px 16px}.link{padding:4px 0;border:0;background:none;color:var(--accent-ink);font-size:14px;cursor:pointer;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:4px;transition:text-decoration-color .3s,color .3s}@media(hover:hover)and (pointer:fine){.link:hover{text-decoration-color:currentColor}}.link--danger{color:var(--muted)}@media(hover:hover)and (pointer:fine){.link--danger:hover{color:var(--danger)}}.plan{display:grid;gap:12px}.plan__modes{display:flex;flex-wrap:wrap;gap:6px}.plan__modes label{position:relative}.plan__modes .chip{height:32px;padding:0 12px;font-size:13px}.plan__inputs{display:flex;flex-wrap:wrap;gap:10px 16px}.plan__inputs:empty{display:none}.plan__field{display:inline-flex;align-items:center;gap:10px;font-size:14px;color:var(--muted)}.plan__field .wheel{min-width:92px}.plan__forecast{font-size:15px;line-height:1.55;max-width:56ch}.plan__forecast[data-tone=danger]{color:var(--danger)}.drawer__row{display:grid;gap:6px;margin-top:6px}.drawer__min{justify-self:start}.drawer__min .wheel{min-width:150px}.drawer__delete{justify-self:start;margin-top:8px}.empty{display:grid;gap:18px;padding:clamp(20px,4vh,40px) 0}.empty[hidden]{display:none}.empty__alt{display:flex;flex-wrap:wrap;gap:10px}.drop{display:grid;justify-items:center;gap:10px;width:100%;padding:clamp(32px,6vw,64px) 24px;border:1.5px dashed var(--paper-3);border-radius:var(--panel-r);background:var(--paper-2);text-align:center;cursor:pointer;transition:border-color .35s,background-color .35s,transform .5s var(--ease-out)}.drop:active{transform:scale(.99)}@media(hover:hover)and (pointer:fine){.drop:hover{border-color:var(--accent)}}.is-dragging .drop{border-color:var(--accent);background:var(--accent-soft);transform:scale(1.01)}.drop__icon{display:grid;place-items:center;width:56px;height:56px;margin-bottom:6px;border-radius:999px;background:var(--accent);color:var(--on-accent)}.drop__icon svg{width:26px;height:26px}.drop__title{font-size:clamp(20px,2.2vw,28px);font-weight:600;letter-spacing:-.035em}.drop__body{max-width:46ch;font-size:15px;color:var(--muted)}.drop__btn{margin-top:8px;pointer-events:none}.is-dragging:after{content:"Drop to import your report";position:fixed;top:12px;right:12px;bottom:12px;left:12px;z-index:60;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:24px;background:color-mix(in srgb,var(--paper) 82%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);font-size:clamp(22px,3vw,34px);font-weight:600;letter-spacing:-.035em;pointer-events:none}.courses__foot{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;padding:18px 0 0;border-top:1px solid var(--hair)}.courses__foot[hidden]{display:none}.courses__foot .link--danger{margin-left:auto}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:70;display:flex;align-items:center;gap:16px;max-width:calc(100vw - 32px);padding:8px 8px 8px 20px;border-radius:999px;background:var(--ink);color:var(--paper);font-size:14px;box-shadow:0 18px 50px var(--shadow);transform:translate(-50%,160%);opacity:0;transition:transform .7s var(--ease-out),opacity .4s;pointer-events:none}.toast.is-on{transform:translate(-50%);opacity:1;pointer-events:auto}.toast__msg{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast__undo{display:inline-flex;flex:none;align-items:center;gap:6px;height:34px;padding:0 14px;border:0;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:500;cursor:pointer}.toast__undo svg{width:15px;height:15px}.import[hidden]{display:none}.import{display:flex;flex-direction:column;min-height:0}.import__pick{display:grid;gap:16px}.import__pick .drop{padding:36px 20px}.paste summary{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--accent-ink);cursor:pointer;list-style:none}.paste summary::-webkit-details-marker{display:none}.paste summary svg{width:16px;height:16px}.paste[open] summary{margin-bottom:10px}.paste textarea{width:100%;margin-bottom:10px;padding:12px 14px;border:0;border-radius:14px;box-shadow:inset 0 0 0 1px var(--hair);background:var(--paper-2);font-family:var(--mono);font-size:13px;line-height:1.5;resize:vertical}.paste textarea:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--accent)}.import__error{font-size:14px;color:var(--danger)}.import__error:empty{display:none}.import__privacy{font-size:13px;color:var(--muted)}.import__busy{display:grid;justify-items:center;gap:18px;padding:56px 24px 64px;font-size:15px;color:var(--muted)}.busy__bar{position:relative;width:180px;height:3px;overflow:hidden;border-radius:999px;background:var(--paper-3)}.busy__bar span{position:absolute;top:0;right:0;bottom:0;left:0;width:40%;border-radius:inherit;background:var(--accent);animation:busy 1.1s var(--ease-io) infinite}@keyframes busy{0%{transform:translate(-110%)}to{transform:translate(260%)}}.import__review{display:grid;gap:14px}.review__lede{font-size:16px;font-weight:500}.review__facts{display:grid;gap:8px}.review__note{margin:0;font-size:13px;line-height:1.45;color:var(--muted)}.review__end{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:14px}.review__end input{height:34px;padding:0 10px;border:1px solid var(--hair);border-radius:9px;background:transparent;color:var(--ink);font:inherit;font-size:14px}.review__end-hint{font-size:12px;color:var(--muted)}.review__note[data-tone=edge]{padding:8px 12px;border-radius:10px;background:var(--accent-soft);color:var(--ink)}.review__note[data-tone=danger]{color:var(--danger)}.check{display:flex;align-items:flex-start;gap:10px;font-size:14px;line-height:1.4;cursor:pointer}.check input{flex:none;width:18px;height:18px;margin:0;accent-color:var(--accent)}.review__list{margin:0;padding:0;list-style:none;border-top:1px solid var(--hair)}.review__hint{margin:0;font-size:13px;line-height:1.45;color:var(--muted)}.review__item{display:grid;grid-template-columns:18px minmax(0,1fr) auto;grid-template-areas:"box name total" ". parts pct" ". wheel wheel";gap:2px 12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--hair)}.review__item input[type=checkbox]{grid-area:box;width:18px;height:18px;margin:0;accent-color:var(--accent)}.review__name{grid-area:name;min-width:0;min-height:36px;padding:7px 10px;border:0;border-radius:10px;background:transparent;font:inherit;font-size:15px;font-weight:500;line-height:22px;resize:none;overflow:hidden}.review__name:focus{outline:none;background:var(--accent-soft)}.review__parts{grid-area:parts;padding-left:10px;font-size:12px;color:var(--muted)}.review__pct{grid-area:pct;font-size:13px;text-align:right}.review__total{grid-area:total;justify-self:end;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px 0 12px;border:0;border-radius:999px;background:transparent;box-shadow:inset 0 0 0 1px var(--hair);font-size:13px;color:var(--muted);white-space:nowrap;cursor:pointer;transition:background-color .25s,color .25s}.review__total[data-set=yes]{color:var(--ink);background:var(--accent-soft);box-shadow:none}.review__total svg{width:12px;height:12px;transition:transform .35s var(--ease-out)}.review__total[aria-expanded=true] svg{transform:rotate(180deg)}.review__wheel{grid-area:wheel;display:flex;align-items:center;gap:18px;padding:10px 0 4px 10px}.review__wheel-side{display:grid;gap:4px;font-size:13px;color:var(--muted);max-width:30ch}.review__wheel-side b{font-weight:500;color:var(--ink)}.review__wheel-side .link{justify-self:start;margin-top:4px}.credit-picks{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.credit-pick{height:32px;padding:0 12px;font-size:13px}.credit-pick b{font-weight:500;color:inherit}.credit-pick span{opacity:.62}.review__min{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 14px;border-radius:14px;background:var(--paper-2)}.review__min>div{display:grid;gap:2px;font-size:13px;color:var(--muted)}.review__min b{font-size:15px;font-weight:500;color:var(--ink)}.review__min .wheel:before{background:var(--paper)}.review__pct[data-match=no]{color:var(--danger)}.sheet--narrow{width:min(480px,calc(100vw - 32px))}.rule{display:grid;gap:22px}.rule__group{display:grid;gap:10px;margin:0;padding:0;border:0}.rule__group legend{margin-bottom:10px;font-size:13px;color:var(--muted)}.rule__chips{display:flex;flex-wrap:wrap;gap:8px}.rule__other,.rule__lab{display:inline-flex;align-items:center;gap:10px;font-size:14px;color:var(--muted)}.rule__lab[hidden]{display:none}.rule__other input,.rule__lab input{width:76px;height:36px;padding:0 10px;border:0;border-radius:999px;box-shadow:inset 0 0 0 1px var(--hair);background:transparent;font-size:15px;color:var(--ink);text-align:center}.rule__other input:focus,.rule__lab input:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--accent)}.option{display:flex;gap:12px;padding:14px;border-radius:14px;box-shadow:inset 0 0 0 1px var(--hair);cursor:pointer;transition:box-shadow .3s,background-color .3s}.option:has(input:checked){background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}.option input{flex:none;width:18px;height:18px;margin:2px 0 0;accent-color:var(--accent)}.option__body{display:grid;gap:2px;font-size:14px}.option__body span{color:var(--muted)}.rule__note{font-size:13px;color:var(--muted)}@media(max-width:900px){.courses__head{display:none!important}.row__sum{grid-template-columns:repeat(3,minmax(0,1fr)) 32px;grid-template-areas:"title title title chev" "level level level level" "left attend skip skip";gap:12px 16px;padding:18px 0}.row__title{grid-area:title}.row__level{grid-area:level}.row__left{grid-area:left}.row__attend{grid-area:attend}.row__skip{grid-area:skip}.row__chev{grid-area:chev}.row__k{display:block}.drawer__in{grid-template-columns:1fr}}@media(max-width:767px){.bar{height:calc(60px + env(safe-area-inset-top,0px))}.bar__mark{font-size:19px}}@media(max-width:640px){.bar__right{gap:8px}.rule-pill{padding-left:12px}.rule-pill__k{font-size:13px}.bar__import{width:38px;padding:0}.bar__import span{display:none}.part{grid-template-columns:76px auto minmax(0,1fr);grid-template-areas:"kind counts pct" "act act act";row-gap:8px;padding:12px 0}.part__kind{grid-area:kind}.part__counts{grid-area:counts}.part__pct{grid-area:pct;text-align:right}.part__act{grid-area:act}.part__act [data-act=present],.part__act [data-act=absent]{flex:1}.term{display:grid;grid-template-columns:1fr 1fr}.term__field:nth-child(2){grid-column:1 / -1;order:2}.term__note{grid-column:1 / -1;order:3;justify-content:flex-start;min-height:0;text-align:left}.term input[type=date]{width:100%;min-width:0}.term__end{flex-wrap:wrap}.term__end input{flex:1 1 180px}.courses__foot .link--danger{margin-left:0}}@media(max-width:380px){.rule-pill__k{display:none}.rule-pill{padding-left:6px}}.sky:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;border-radius:inherit;background:radial-gradient(420px circle at var(--sx, 50%) var(--sy, 50%),color-mix(in srgb,var(--accent) 9%,transparent),transparent 70%);opacity:0;pointer-events:none;transition:opacity .6s var(--ease-out)}@media(hover:hover)and (pointer:fine){.sky:hover:before{opacity:1}}.term input[type=date].is-guess{color:var(--muted);box-shadow:inset 0 0 0 1px var(--hair),inset 0 0 0 999px var(--accent-soft)}.sheet__lede{margin:-4px 24px 14px;max-width:52ch;font-size:15px;color:var(--muted)}.foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 24px;margin-top:56px;padding-top:18px;border-top:1px solid var(--hair);font-size:13px;color:var(--muted)}
