:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--color-bg:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0b1220);--color-surface:var(--lightningcss-light,#f3f6fb)var(--lightningcss-dark,#121b2e);--color-surface-strong:var(--lightningcss-light,#e5ecf7)var(--lightningcss-dark,#1a2640);--color-border:var(--lightningcss-light,#d3dbe8)var(--lightningcss-dark,#2a3956);--color-text:var(--lightningcss-light,#0f172a)var(--lightningcss-dark,#e8edf6);--color-text-muted:var(--lightningcss-light,#475569)var(--lightningcss-dark,#aab6cb);--color-primary:var(--lightningcss-light,#1d4ed8)var(--lightningcss-dark,#8ab4ff);--color-primary-hover:var(--lightningcss-light,#1e40af)var(--lightningcss-dark,#b3ceff);--color-on-primary:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0b1220);--color-focus:var(--lightningcss-light,#1d4ed8)var(--lightningcss-dark,#8ab4ff);--color-badge-bg:var(--lightningcss-light,#fef3c7)var(--lightningcss-dark,#3b2a06);--color-badge-text:var(--lightningcss-light,#78350f)var(--lightningcss-dark,#fcd34d);--color-notice-bg:var(--lightningcss-light,#fff7e6)var(--lightningcss-dark,#1d1a10);--color-notice-border:var(--lightningcss-light,#e9c46a)var(--lightningcss-dark,#6b5a22);--color-danger:var(--lightningcss-light,#b91c1c)var(--lightningcss-dark,#f87171);--color-on-danger:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0b1220);--color-danger-bg:var(--lightningcss-light,#fee2e2)var(--lightningcss-dark,#450a0a);--color-success:var(--lightningcss-light,#15803d)var(--lightningcss-dark,#4ade80);--color-on-success:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0b1220);--color-success-bg:var(--lightningcss-light,#dcfce7)var(--lightningcss-dark,#052e16);--color-road:var(--lightningcss-light,#334155)var(--lightningcss-dark,#475569);--color-road-line:var(--lightningcss-light,#f8fafc)var(--lightningcss-dark,#e2e8f0);--color-grass:var(--lightningcss-light,#dbeafe)var(--lightningcss-dark,#16233d);--color-car:var(--lightningcss-light,#1d4ed8)var(--lightningcss-dark,#8ab4ff);--color-cone:var(--lightningcss-light,#ea580c)var(--lightningcss-dark,#fb923c);--color-scrim:var(--lightningcss-light,#0f172a8c)var(--lightningcss-dark,#020617b8);--color-tour-ring:#facc15;--color-tour-halo:#020617d9;--color-hud-bg:#0f172ad1;--color-hud-surface:#0f172a;--color-hud-card:#0f172aeb;--color-hud-line:#334155;--color-hud-text:#f8fafc;--color-hud-muted:#cbd5e1;--color-hud-accent:#38bdf8;--color-hud-on-accent:#0f172a;--color-hud-ok:#4ade80;--color-hud-bad:#f87171;--color-hud-warn:#f97316;--color-hud-on-warn:#111827;--color-hud-danger:#dc2626;--color-hud-on-danger:#fff;--color-hud-brake:#b91c1c;--color-hud-throttle:#15803d;--font-sans:"Be Vietnam Pro", "Be Vietnam Pro Fallback", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:clamp(1.25rem, 1.1rem + .6vw, 1.5rem);--text-2xl:clamp(1.5rem, 1.25rem + 1.2vw, 2rem);--text-3xl:clamp(1.875rem, 1.4rem + 2.4vw, 3rem);--leading-tight:1.2;--leading-body:1.6;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--radius-sm:.5rem;--radius-md:.875rem;--radius-lg:1.25rem;--radius-xl:1.75rem;--container:68rem;--gutter:clamp(1rem, 4vw, 2rem);--tap-min:3rem;--tabbar-h:4rem;--shadow-card:0 1px 2px var(--lightningcss-light,#0f172a0f)var(--lightningcss-dark,#0006), 0 4px 16px var(--lightningcss-light,#0f172a0f)var(--lightningcss-dark,#0000004d);--shadow-raised:0 2px 4px var(--lightningcss-light,#0f172a14)var(--lightningcss-dark,#00000073), 0 12px 32px var(--lightningcss-light,#0f172a1f)var(--lightningcss-dark,#0006)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-block-start:var(--space-8)}body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,ol,ul{margin:0}ol,ul{padding:0;list-style:none}img,picture,video,canvas{max-inline-size:100%;display:block}img,video{block-size:auto}input,button,textarea,select{font:inherit;color:inherit}button,[role=button],label[for],select{cursor:pointer}button:disabled,[aria-disabled=true]{cursor:not-allowed}[hidden]:not([hidden=until-found]){display:none!important}body{background:var(--color-bg);min-block-size:100dvh;color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-body);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{line-height:var(--leading-tight);text-wrap:balance}p{text-wrap:pretty}a{color:var(--color-primary);text-underline-offset:.2em}a:hover{color:var(--color-primary-hover)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px;border-radius:2px}.skip-link{z-index:1000;min-block-size:var(--tap-min);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-on-primary);align-items:center;font-weight:600;text-decoration:none;display:inline-flex;position:absolute;inset-block-start:var(--space-2);inset-inline-start:var(--space-2);transform:translateY(-200%)}.skip-link:focus{transform:none}.visually-hidden:not(:focus):not(:active){clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}kbd{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);min-inline-size:1.75em;color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:600;line-height:var(--leading-tight);text-align:center;white-space:nowrap;border-block-end-width:2px;padding:.1em .45em;display:inline-block}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.main-nav{display:none}.main-nav__list{align-items:center;gap:var(--space-1);display:flex}.main-nav__link{min-block-size:var(--tap-min);padding-inline:var(--space-3);border-radius:var(--radius-sm);color:var(--color-text-muted);white-space:nowrap;align-items:center;font-weight:600;text-decoration:none;display:inline-flex}.main-nav__link:hover{background:var(--color-surface-strong);color:var(--color-text)}.main-nav__link[aria-current=page]{color:var(--color-primary);text-underline-offset:.45em;text-decoration:underline;text-decoration-thickness:2px}.tabbar{z-index:40;padding-block-end:env(safe-area-inset-bottom,0px);padding-inline:env(safe-area-inset-left,0px) env(safe-area-inset-right,0px);border-block-start:1px solid var(--color-border);background:var(--color-bg);position:fixed;inset-block-end:0;inset-inline:0}.tabbar__list{min-block-size:calc(var(--tabbar-h) - 1px);grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.tabbar__item{display:flex}.tabbar__link{min-block-size:var(--tap-min);min-inline-size:var(--tap-min);padding:var(--space-1) .125rem;color:var(--color-text-muted);font-size:var(--text-xs);font-weight:600;line-height:var(--leading-tight);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.125rem;text-decoration:none;display:flex}.tabbar__icon{border-radius:var(--radius-lg);justify-content:center;align-items:center;block-size:1.75rem;inline-size:3.5rem;display:inline-flex}.tabbar__label{text-overflow:ellipsis;white-space:nowrap;max-inline-size:100%;overflow:hidden}.tabbar__link:hover{color:var(--color-text)}.tabbar__link[aria-current=page]{color:var(--color-primary)}.tabbar__link[aria-current=page] .tabbar__icon{background:var(--color-surface-strong)}.tabbar__link:focus-visible{outline-offset:-3px}@media (width>=48rem){.main-nav{display:block}.tabbar{display:none}}:root{--app-header-h:calc(var(--tap-min) + max(var(--space-1), env(safe-area-inset-top,0px)) + var(--space-1) + 1px)}.app-header{z-index:50;align-items:center;gap:var(--space-2) var(--space-3);min-block-size:var(--app-header-h);--header-inset:max(var(--gutter), calc((100% - var(--container)) / 2 + var(--gutter)));padding:var(--space-1) var(--header-inset);padding-inline:max(var(--header-inset), env(safe-area-inset-left,0px)) max(var(--header-inset), env(safe-area-inset-right,0px));border-block-end:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);flex-wrap:wrap;padding-block-start:max(var(--space-1), env(safe-area-inset-top,0px));display:flex;position:sticky;inset-block-start:0}.app-header__brand{align-items:center;gap:var(--space-2);min-block-size:var(--tap-min);color:var(--color-text);font-size:var(--text-lg);white-space:nowrap;flex:none;margin-inline-end:var(--space-3);font-weight:700;text-decoration:none;display:inline-flex}.app-header__brand:hover{color:var(--color-primary)}.app-header__logo{flex:none;block-size:1.75rem;inline-size:1.75rem}.app-header__account{justify-content:flex-end;align-items:center;gap:var(--space-1) var(--space-2);min-inline-size:0;min-block-size:var(--tap-min);flex:1;margin-inline-start:auto;display:flex}.app-header__email{min-inline-size:0;max-inline-size:14rem;color:var(--color-text-muted);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;overflow:hidden}.app-header__button{min-block-size:var(--tap-min);padding:0 var(--space-3);border:1px solid var(--color-primary);border-radius:var(--radius-sm);color:var(--color-primary);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;align-items:center;font-weight:600;text-decoration:none;display:inline-flex}.app-header__button:hover{background:var(--color-surface-strong);color:var(--color-primary-hover)}.app-header__link{min-block-size:var(--tap-min);padding:0 var(--space-1);color:var(--color-primary);white-space:nowrap;flex:none;align-items:center;font-weight:600;display:none}.app-header__button:disabled{cursor:progress;opacity:.7}.app-header__error{color:var(--color-danger);font-size:var(--text-sm);text-align:end;flex-basis:100%;margin:0}@media (width>=48rem){.app-header__account{flex-wrap:wrap;flex:auto;min-inline-size:10.5rem}.app-header__email{display:none}.app-header .main-nav__link{padding-inline:var(--space-1)}}@media (width>=64rem){.app-header__link{display:inline-flex}.app-header__email{flex:1;inline-size:0;min-inline-size:5rem;max-inline-size:max-content;display:block}}@media (width>=64rem) and (width<=79.99rem){.app-header .main-nav__link{padding-inline:var(--space-2)}}@media (width>=80rem){.app-header .main-nav__link{padding-inline:var(--space-3)}}.dcs-button{justify-content:center;align-items:center;gap:var(--space-2);min-block-size:var(--tap-min);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--text-base);font-weight:600;line-height:var(--leading-tight);text-align:center;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.dcs-button:hover{background:var(--color-surface-strong);color:var(--color-text)}.dcs-button:disabled,.dcs-button[aria-disabled=true]{opacity:.55}.dcs-button--primary{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary)}.dcs-button--primary:hover{border-color:var(--color-primary-hover);background:var(--color-primary-hover);color:var(--color-on-primary)}.dcs-button--danger{border-color:var(--color-danger);background:var(--color-danger);color:var(--color-on-danger)}.dcs-button--danger:hover{background:var(--color-danger);color:var(--color-on-danger);filter:brightness(.92)}.dcs-card{min-block-size:var(--tap-min);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text)}@media (width>=48rem){.dcs-card{padding:var(--space-5)}}.dcs-progress{inline-size:100%;block-size:var(--space-2);border-radius:var(--radius-sm);background:var(--color-surface-strong);overflow:hidden}.dcs-progress__bar{border-radius:inherit;background:var(--color-primary);block-size:100%;transition:inline-size .2s}.dcs-segmented{max-inline-size:100%;padding:var(--space-1);gap:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);display:inline-flex}.dcs-segmented__option{justify-content:center;align-items:center;gap:var(--space-2);min-block-size:var(--tap-min);min-inline-size:var(--tap-min);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);color:var(--color-text);font-size:var(--text-base);font-weight:600;line-height:var(--leading-tight);white-space:nowrap;background:0 0;border:0;flex:auto;display:inline-flex}.dcs-segmented__option:hover{background:var(--color-surface-strong)}.dcs-segmented__option[aria-checked=true]{background:var(--color-primary);color:var(--color-on-primary)}@media (forced-colors:active){.dcs-segmented__option[aria-checked=true]{outline:2px solid highlight}}.loading{background:var(--color-bg);flex-direction:column;min-block-size:100dvh;display:flex}.loading__header{block-size:calc(var(--tap-min) + 2 * var(--space-1) + 1px);border-block-end:1px solid var(--color-border);flex:none}.loading__main{min-inline-size:0;flex:1;padding-block-end:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}.loading[data-framed=false] .loading__main{padding-block-end:0}.loading__page{gap:var(--space-4);inline-size:100%;max-inline-size:var(--container);padding:var(--space-5) var(--gutter) var(--space-6);margin-inline:auto;display:grid}.loading__bar{border-radius:var(--radius-sm);background:var(--color-surface-strong);animation:1.4s ease-in-out infinite loading-pulse}.loading__bar--title{block-size:2rem;inline-size:50%;max-inline-size:20rem}.loading__bar--lead{block-size:1.5rem;inline-size:80%;max-inline-size:32rem}.loading__cards{gap:var(--space-4);grid-template-columns:minmax(0,1fr);display:grid}.loading__card{border-radius:var(--radius-md);block-size:9rem}@media (width>=48rem){.loading__main{padding-block-end:0}}@media (width>=64rem){.loading__cards{grid-template-columns:repeat(3,minmax(0,1fr))}}@keyframes loading-pulse{50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.loading__bar{animation:none}}.route-error-page{justify-items:center;padding-block-start:var(--space-6)}main.route-error-page{min-block-size:100dvh;padding:var(--space-5) var(--gutter);background:var(--color-bg);color:var(--color-text);place-content:center;display:grid}.route-error{justify-items:center;gap:var(--space-3);text-align:center;inline-size:100%;max-inline-size:30rem;display:grid}.route-error__art{block-size:auto;max-inline-size:100%;margin-block-end:var(--space-2)}.route-error__title{font-size:var(--text-xl);line-height:var(--leading-tight)}.route-error__lead{color:var(--color-text-muted)}.route-error__actions{justify-content:center;gap:var(--space-3);flex-wrap:wrap;margin-block-start:var(--space-2);display:flex}.app-shell{flex-direction:column;min-block-size:100dvh;display:flex}.app-shell__main{min-inline-size:0;flex:1;padding-block-end:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}.app-shell__main:focus{outline:none}@media (width>=48rem){.app-shell__main{padding-block-end:0}}.app-page{align-content:start;gap:var(--space-4);inline-size:100%;max-inline-size:var(--container);padding:var(--space-5) var(--gutter) var(--space-6);margin-inline:auto;display:grid}.app-page__lead{max-inline-size:40rem;color:var(--color-text-muted)}.app-page__section{gap:var(--space-3);max-inline-size:40rem;display:grid}.app-page__section h2{font-size:var(--text-lg)}.home{gap:var(--space-5)}.home__controls{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.home__class{align-items:center;gap:var(--space-3);min-inline-size:0;display:flex}.home__class-label{color:var(--color-text-muted);font-size:var(--text-sm);font-weight:600}.home__class .dcs-segmented__option{padding-inline:var(--space-3)}.home__chip{min-block-size:2rem;padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-strong);color:var(--color-text);font-size:var(--text-sm);white-space:nowrap;align-items:center;font-weight:600;display:inline-flex}.home__continue-link{inline-size:100%;min-block-size:calc(var(--tap-min) + var(--space-3));padding-inline:var(--space-5);border-radius:var(--radius-md);font-size:var(--text-lg);text-align:start;justify-content:space-between}.home__continue-link svg{flex:none}.home__continue-at{white-space:nowrap}@media (width>=64rem){.home__continue-link{justify-content:flex-start;gap:var(--space-4);inline-size:auto;min-inline-size:24rem}}.home__cards{gap:var(--space-4);grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}@media (width>=64rem){.home__cards{grid-template-columns:repeat(3,minmax(0,1fr))}}.home-card{gap:var(--space-2);grid-template-rows:auto auto 1fr auto;transition:border-color .15s;display:grid;position:relative}.home-card:hover{border-color:var(--color-primary)}.home-card:has(.home-card__primary:focus-visible){outline:3px solid var(--color-focus);outline-offset:2px}.home-card__title{align-items:center;gap:var(--space-2);font-size:var(--text-lg);line-height:var(--leading-tight);margin:0;display:flex}.home-card__title svg{color:var(--color-primary);flex:none}.home-card__stat{align-content:start;gap:var(--space-2);color:var(--color-text-muted);font-variant-numeric:tabular-nums;margin:0;display:grid}.home-card__stat p{margin:0}.home-card__notice{align-items:center;gap:var(--space-2);display:flex}.home-card__notice svg{flex:none}.home-card__links{align-content:start;align-items:center;gap:0 var(--space-4);flex-wrap:wrap;display:flex}.home-card__primary,.home-card__link{min-block-size:var(--tap-min);align-items:center;font-weight:600;display:inline-flex}.home-card__primary{justify-content:space-between;gap:var(--space-2);border-block-start:1px solid var(--color-border);color:var(--color-primary);padding-block-start:var(--space-2);text-decoration:none}.home-card__primary svg{flex:none}.home-card__primary:focus-visible{outline:none}.home-card__primary:after{border-radius:inherit;content:"";position:absolute;inset:0}.home-card__link{z-index:1;color:var(--color-text);text-underline-offset:.2em;text-decoration:underline;position:relative}.home-skeleton{border-radius:var(--radius-sm);background:var(--color-surface-strong);block-size:1lh;inline-size:70%;animation:1.4s ease-in-out infinite home-pulse}@keyframes home-pulse{50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.home-skeleton{animation:none}}
