:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--sky-0:#040817;--sky-1:#0a1436;--sky-2:#172763;--star:#ffd23f;--star-deep:#f2a60c;--star-ink:#2b1c00;--sign-red:#ff5a6e;--go-green:#42e08f;--rule-blue:#5b95ff;--amber:#ffb547;--ink:#f4f6ff;--ink-2:#dee6ffc2;--ink-3:#cdd6ff85;--line:#ffffff1a;--glass-top:#ffffff26;--glass-bottom:#ffffff0d;--glass-rim:#ffffff8c;--glass-blur:26px;--shadow-float:0 22px 44px -18px #000000a6, 0 2px 6px #0000002e;--font-display:ui-rounded, "SF Pro Rounded", "Nunito", system-ui, sans-serif;--font-body:-apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--step--1:.8125rem;--step-0:1rem;--step-1:1.1875rem;--step-2:1.5rem;--step-3:2rem;--step-4:2.625rem;--r-xl:34px;--r-lg:26px;--r-md:20px;--r-sm:14px;--spring:cubic-bezier(.34, 1.56, .64, 1);--ease-out:cubic-bezier(.22, 1, .36, 1);--gutter-l:max(16px, env(safe-area-inset-left,0px));--gutter-r:max(16px, env(safe-area-inset-right,0px));--tabbar-h:68px;--page-max:760px}*,:before,:after{box-sizing:border-box}html{background:var(--sky-0);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;height:100%}body{background:var(--sky-0);min-height:100%;color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;margin:0;line-height:1.5}#root{isolation:isolate;min-height:100dvh;position:relative}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;text-wrap:balance;margin:0;font-weight:800;line-height:1.15}p{text-wrap:pretty;margin:0}button{font:inherit;color:inherit}a{color:inherit;text-decoration:none}img{max-width:100%}[hidden]{display:none!important}:focus-visible{outline:2.5px solid var(--star);outline-offset:3px}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.eyebrow{font-size:var(--step--1);color:var(--ink-3);font-weight:600}.muted{color:var(--ink-2)}.sky{z-index:-1;background:radial-gradient(120% 70% at 85% -10%, #4968ff6b, transparent 60%), radial-gradient(90% 60% at -10% 105%, #ffaa3c57, transparent 62%), radial-gradient(70% 50% at 105% 85%, #c846ff33, transparent 60%), linear-gradient(180deg, var(--sky-1) 0%, var(--sky-0) 55%, #060b20 100%);position:fixed;inset:0;overflow:hidden}.sky canvas{width:100%;height:100%;position:absolute;inset:0}.sky:after{content:"";filter:blur(1.5px);opacity:.7;background:linear-gradient(90deg,#0000,#ffbe5a80 30%,#ffe6a0b3 50%,#ff8c3c66 70%,#0000) 0 30px/100% 2px no-repeat,linear-gradient(90deg,#0000 10%,#ffd27859 40%,#ff78504d 80%,#0000) 0 64px/100% 3px no-repeat,linear-gradient(90deg,#0000 20%,#78aaff40 55%,#0000 90%) 0 92px/100% 2px no-repeat;height:120px;position:absolute;bottom:9%;left:-20%;right:-20%;transform:rotate(-4deg)}.glass{background:linear-gradient(165deg, var(--glass-top), var(--glass-bottom) 45%, #ffffff14);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.9) brightness(1.06);backdrop-filter:blur(var(--glass-blur)) saturate(1.9) brightness(1.06);border-radius:var(--r-lg);box-shadow:inset 0 1px .5px #ffffff8c, inset 0 -1px 1px #ffffff1a, inset 0 0 24px #ffffff0a, var(--shadow-float);position:relative}.glass:before{content:"";border-radius:inherit;pointer-events:none;-webkit-mask-composite:xor;background:linear-gradient(135deg,#fff9,#ffffff1a 28%,#fff0 52%,#ffffff24 80%,#ffffff6b);padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.glass-thin{--glass-top:#ffffff1a;--glass-bottom:#ffffff08;--glass-blur:18px}.glass-tint-star{background:linear-gradient(165deg,#ffde6e4d,#ffbe281a 55%,#ffd25029)}.glass-tint-green{background:linear-gradient(165deg,#5af0a04d,#28c8781a 55%,#50e69629)}.glass-tint-red{background:linear-gradient(165deg,#ff6e8252,#e63c501f 55%,#ff5a6e29)}.glass-tint-blue{background:linear-gradient(165deg,#6ea0ff4d,#3c6ef01a 55%,#6496ff29)}.btn{--btn-h:50px;min-height:var(--btn-h);font-weight:700;font-size:var(--step-0);letter-spacing:-.005em;cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform .35s var(--spring), filter .2s, opacity .2s;border:0;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 22px;display:inline-flex;position:relative}.btn:active{transform:scale(.955)}.btn:disabled{opacity:.45;cursor:default;transform:none}.btn-star{color:var(--star-ink);background:linear-gradient(180deg, #ffe789 0%, var(--star) 45%, var(--star-deep) 100%);box-shadow:inset 0 1.5px .5px #ffffffd9,inset 0 -2px 3px #a05a0059,0 10px 26px -8px #ffbe1eb3,0 2px 4px #00000040}.btn-star:after{content:"";pointer-events:none;background:linear-gradient(#ffffff8c,#fff0);border-radius:999px;height:42%;position:absolute;inset:2px 12% auto}.btn-block{width:100%}.btn-sm{--btn-h:38px;font-size:var(--step--1);padding:0 14px}.icon-btn{cursor:pointer;width:44px;height:44px;transition:transform .35s var(--spring);border:0;border-radius:999px;place-items:center;padding:0;display:inline-grid}.icon-btn:active{transform:scale(.9)}.page{width:100%;max-width:var(--page-max);padding-left:var(--gutter-l);padding-right:var(--gutter-r);padding-block:8px calc(var(--tabbar-h) + 40px + env(safe-area-inset-bottom,0px));flex-direction:column;gap:22px;margin:0 auto;display:flex}.page.is-focus{padding-block-end:calc(28px + env(safe-area-inset-bottom,0px))}.stack{flex-direction:column;gap:12px;display:flex}.row{align-items:center;gap:12px;display:flex}.wrap{flex-wrap:wrap}.spacer{flex:1}.section-title{justify-content:space-between;align-items:baseline;gap:12px;padding-inline:4px;display:flex}.section-title h2{font-size:var(--step-1)}.lane-divider{background:repeating-linear-gradient(90deg,#ffffff52 0 22px,#0000 22px 40px);border:0;border-radius:2px;height:3px;margin:4px 0}.sign-no{font-family:var(--font-mono);letter-spacing:.02em;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;background:#ffffff1a;border-radius:7px;align-items:center;padding:1px 8px;font-size:.78rem;font-weight:700;display:inline-flex;box-shadow:inset 0 0 0 1px #ffffff29}.chip{font-size:var(--step--1);color:var(--ink-2);white-space:nowrap;background:#ffffff14;border-radius:999px;align-items:center;gap:6px;padding:5px 11px;font-weight:650;display:inline-flex;box-shadow:inset 0 0 0 1px #ffffff1a}.chip.is-am{color:#ffd9a8;background:#ff963c24;box-shadow:inset 0 0 0 1px #ffaa5a4d}.chip.is-rf{color:#c7d8ff;background:#5a8cff24;box-shadow:inset 0 0 0 1px #78a0ff4d}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.app-header{z-index:5;width:100%;max-width:var(--page-max);padding-left:var(--gutter-l);padding-right:var(--gutter-r);padding-block:calc(env(safe-area-inset-top,0px) + 14px) 10px;align-items:center;gap:12px;margin:0 auto;display:flex;position:relative}.brand{align-items:center;gap:12px;min-width:0;display:flex}.brand-icon{width:52px;height:52px;transition:transform .6s var(--spring);border-radius:50%;flex:none;position:relative}.brand-icon:before{content:"";filter:blur(9px);opacity:.6;z-index:-1;background:conic-gradient(from 210deg,#ffd23fbf,#ffa03c26,#7896ff66,#ffd23fbf);border-radius:50%;position:absolute;inset:-7px}.brand-icon img{border-radius:50%;width:100%;height:100%;display:block;box-shadow:0 0 0 1.5px #ffffff80,0 8px 20px -6px #0009}.brand-icon.is-bump{transform:rotate(-12deg)scale(1.12)}.brand-title{font-family:var(--font-display);letter-spacing:-.015em;white-space:nowrap;text-overflow:ellipsis;font-size:clamp(1.05rem,4.4vw,1.35rem);font-weight:800;line-height:1.1;overflow:hidden}.brand-title em{background:linear-gradient(180deg, #fff2b8, var(--star) 60%, var(--star-deep));color:#0000;-webkit-background-clip:text;background-clip:text;font-style:normal}.header-actions{flex:none;align-items:center;gap:8px;margin-left:auto;display:flex}.star-pill{height:38px;color:var(--star);transition:transform .5s var(--spring);border-radius:999px;align-items:center;gap:6px;padding:0 13px 0 11px;font-weight:700;display:inline-flex}.star-pill .mono{color:var(--ink);font-size:.95rem}.star-pill.is-bump{transform:scale(1.14)}.avatar-btn{border-radius:50%;place-items:center;width:40px;height:40px;font-size:20px;display:grid}@media (width<=440px){.brand-icon{width:44px;height:44px}.avatar-btn{display:none}.module-art{border-radius:17px;width:54px;height:54px}.module-art img,.module-art svg{width:40px;height:40px}.module-body p{font-size:.85rem}.due-badge{min-width:38px;height:38px}}.tabbar{z-index:20;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 12px);width:min(520px, calc(100% - 24px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));height:var(--tabbar-h);--glass-top:#ffffff29;--glass-bottom:#ffffff12;border-radius:999px;grid-template-columns:repeat(5,1fr);padding:6px;display:grid;position:fixed;transform:translate(-50%)}.tab{z-index:1;color:var(--ink-2);letter-spacing:.01em;transition:color .25s, transform .4s var(--spring);border-radius:999px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:.68rem;font-weight:650;display:flex;position:relative}.tab:active{transform:scale(.9)}.tab.is-active{color:var(--star)}.tab.is-active svg{transform:scale(1.08)}.tab svg{transition:transform .45s var(--spring)}.tab-lens{--cell:calc((100% - 12px) / 5);top:6px;bottom:6px;left:calc(6px + var(--tab) * var(--cell));right:calc(6px + (4 - var(--tab)) * var(--cell));transition:left .45s var(--ease-out), right .45s var(--ease-out);background:linear-gradient(#fff3,#ffffff12);border-radius:999px;position:absolute;box-shadow:inset 0 1px .5px #fff9,inset 0 -1px 1px #ffffff1f,0 4px 14px -4px #0006}.tabbar[data-move=right] .tab-lens{transition:right .3s var(--ease-out), left .55s var(--ease-out)}.tabbar[data-move=left] .tab-lens{transition:left .3s var(--ease-out), right .55s var(--ease-out)}.hello{flex-direction:column;gap:6px;padding:6px 4px 0;display:flex}.hello h1{font-size:var(--step-3)}.hello p{color:var(--ink-2);max-width:52ch}.today{border-radius:var(--r-xl);grid-template-columns:repeat(3,1fr);gap:8px;padding:18px;display:grid}.today-stat{flex-direction:column;gap:2px;padding:6px 8px;display:flex}.today-stat b{font-family:var(--font-display);font-size:var(--step-3);font-variant-numeric:tabular-nums;font-weight:800;line-height:1}.today-stat span{font-size:var(--step--1);color:var(--ink-2)}.today-stat+.today-stat{border-left:1px solid var(--line);padding-left:14px}.modules{gap:14px;display:grid}.module-tile{border-radius:var(--r-xl);transition:transform .45s var(--spring);grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:16px;display:grid}.module-tile:active{transform:scale(.98)}.module-art{background:#ffffff14;border-radius:20px;place-items:center;width:64px;height:64px;display:grid;box-shadow:inset 0 0 0 1px #ffffff1f}.module-art img,.module-art svg{width:46px;height:46px}.module-body{flex-direction:column;gap:4px;min-width:0;display:flex}.module-body h3{font-size:var(--step-1)}.module-body p{color:var(--ink-2);font-size:.9rem}.module-meter{font-size:var(--step--1);color:var(--ink-3);align-items:center;gap:8px;margin-top:4px;display:flex}.meter{background:#ffffff1a;border-radius:99px;flex:1;max-width:180px;height:6px;overflow:hidden}.meter>i{border-radius:inherit;background:linear-gradient(90deg, var(--star-deep), var(--star));height:100%;display:block;box-shadow:0 0 10px #ffd23f99}.due-badge{font-variant-numeric:tabular-nums;min-width:44px;height:44px;color:var(--star-ink);background:var(--star);border-radius:999px;place-items:center;padding:0 10px;font-weight:800;display:grid;box-shadow:0 6px 16px -4px #ffc82899}.due-badge.is-zero{color:var(--ink-3);box-shadow:none;background:#ffffff14}.panel{border-radius:var(--r-xl);flex-direction:column;gap:14px;padding:18px;display:flex}.list{flex-direction:column;display:flex}.list-row{align-items:center;gap:12px;padding:11px 2px;display:flex}.list-row+.list-row{border-top:1px solid var(--line)}.segmented{background:#ffffff12;border-radius:999px;grid-auto-columns:1fr;grid-auto-flow:column;padding:4px;display:inline-grid;box-shadow:inset 0 0 0 1px #ffffff14}.segmented button{color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:7px clamp(10px,3vw,16px);font-size:.88rem;font-weight:650;transition:background .25s,color .25s}.segmented button[aria-pressed=true]{color:var(--ink);background:linear-gradient(#ffffff38,#ffffff1a);box-shadow:inset 0 1px .5px #ffffff80}.session-top{top:env(safe-area-inset-top,0px);z-index:6;align-items:center;gap:12px;padding-block:10px;display:flex;position:sticky}.road{background:linear-gradient(#3a3f55,#2a2e40);border-radius:999px;flex:1;height:30px;position:relative;overflow:hidden;box-shadow:inset 0 1px 2px #00000080,inset 0 -1px #ffffff14,0 0 0 1px #ffffff1a}.road:before{content:"";background:repeating-linear-gradient(90deg,#ffffff8c 0 10px,#0000 10px 20px);height:2px;margin-top:-1px;position:absolute;top:50%;left:14px;right:14px}.road-done{transition:width .7s var(--ease-out);background:linear-gradient(90deg,#ffd23f00,#ffd23f40);position:absolute;inset:0 auto 0 0}.road-car{width:34px;height:34px;transition:left .8s var(--spring);filter:drop-shadow(0 3px 4px #00000080);margin-top:-17px;margin-left:-17px;position:absolute;top:50%}.road-car img{border-radius:50%;width:100%;height:100%}.road-star{color:var(--star);filter:drop-shadow(0 0 5px #ffd23fe6);animation:star-pop .6s var(--spring) both;margin-top:-6px;position:absolute;top:50%}.road-star.is-miss{color:var(--sign-red);filter:drop-shadow(0 0 4px #ff5a6ecc)}@keyframes star-pop{0%{transform:scale(0)rotate(-90deg)}to{transform:scale(1)rotate(0)}}.question-card{border-radius:var(--r-xl);flex-direction:column;gap:16px;padding:18px;display:flex}.question-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.question-text{font-family:var(--font-display);font-weight:800;font-size:var(--step-1);text-wrap:balance;line-height:1.3}.question-context{color:var(--ink-2);font-size:.95rem}.prompt-stage{border-radius:var(--r-lg);background:radial-gradient(80% 70% at 50% 40%,#ffffff1a,#0000 70%),#050a1e59;place-items:center;min-height:190px;padding:18px;display:grid;box-shadow:inset 0 0 0 1px #ffffff14}.prompt-stage .sign-big{filter:drop-shadow(0 12px 18px #00000073);width:min(56vw,210px);height:auto}.options{flex-direction:column;gap:10px;display:flex}.options.is-grid{grid-template-columns:repeat(2,1fr);display:grid}.option{text-align:left;border-radius:var(--r-md);cursor:pointer;--glass-top:#ffffff1c;--glass-bottom:#ffffff0a;--glass-blur:14px;width:100%;min-height:56px;transition:transform .4s var(--spring), opacity .3s;border:0;align-items:center;gap:12px;padding:12px 16px;font-size:.98rem;font-weight:600;line-height:1.35;display:flex;position:relative}.options.is-grid .option{text-align:center;flex-direction:column;justify-content:center;min-height:132px;padding:14px 10px}.option .option-sign{object-fit:contain;filter:drop-shadow(0 6px 10px #0006);width:84px;height:84px}.option:active:not(:disabled){transform:scale(.975)}.option:disabled{cursor:default}.option-key{width:28px;height:28px;color:var(--ink-2);background:#ffffff1a;border-radius:9px;flex:none;place-items:center;font-size:.8rem;font-weight:800;display:grid;box-shadow:inset 0 0 0 1px #ffffff24}.options.is-grid .option-key{position:absolute;top:10px;left:10px}.option.is-correct{--glass-top:#5af0a052;--glass-bottom:#28c8781f}.option.is-correct .option-key{color:#04140b;background:var(--go-green)}.option.is-wrong{--glass-top:#ff6e8257;--glass-bottom:#e63c501f;animation:.45s shake}.option.is-wrong .option-key{color:#22040a;background:var(--sign-red)}.option.is-dim{display:none}@keyframes shake{20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.feedback{border-radius:var(--r-xl);animation:rise .5s var(--ease-out) both;flex-direction:column;gap:12px;padding:18px;display:flex}.feedback-head{font-family:var(--font-display);font-weight:800;font-size:var(--step-1);align-items:center;gap:10px;display:flex}.feedback-head .badge{border-radius:50%;flex:none;place-items:center;width:34px;height:34px;display:grid}.feedback.is-ok .badge{background:var(--go-green);color:#04140b}.feedback.is-bad .badge{background:var(--sign-red);color:#22040a}.feedback p{color:var(--ink-2);line-height:1.55}.feedback .why-wrong{border-radius:var(--r-sm);color:var(--ink);background:#ff5a6e1a;padding:12px 14px;box-shadow:inset 0 0 0 1px #ff5a6e38}.feedback .note{align-items:flex-start;gap:10px;font-size:.9rem;display:flex}.feedback .note .chip{flex:none}@keyframes rise{0%{opacity:0;transform:translateY(14px)scale(.98)}to{opacity:1;transform:none}}.next-bar{bottom:calc(env(safe-area-inset-bottom,0px) + 12px);z-index:6;gap:10px;display:flex;position:sticky}.summary{text-align:center;align-items:center;padding:28px 20px}.summary-stars{color:var(--star);filter:drop-shadow(0 0 10px #ffd23fb3);justify-content:center;gap:6px;display:flex}.summary h2{font-size:var(--step-3)}.summary .big-num{font-family:var(--font-display);font-size:var(--step-4);font-weight:900;line-height:1}.mistake-list{text-align:left;flex-direction:column;gap:8px;width:100%;display:flex}.mistake{border-radius:var(--r-sm);background:#ffffff0f;align-items:center;gap:12px;padding:10px 12px;display:flex}.mistake img{object-fit:contain;width:40px;height:40px}.sign-missing{aspect-ratio:1;min-width:64px;font-family:var(--font-mono);color:var(--ink-3);background:#ffffff0f;border-radius:18px;place-items:center;font-weight:700;display:grid;box-shadow:inset 0 0 0 1px #ffffff1f}.sign-stack{flex-direction:column;align-items:center;padding-bottom:34px;display:flex;position:relative}.sign-stack-items{z-index:1;flex-direction:column;align-items:center;gap:6px;display:flex;position:relative}.sign-stack-row{justify-content:center;align-items:center;gap:8px;display:flex}.stack-sign{filter:drop-shadow(0 8px 12px #0006);width:min(34vw,132px);height:auto}.sign-stack-row:not(:first-child) .stack-sign{width:min(30vw,118px)}.text-plate{color:#111;letter-spacing:.01em;white-space:nowrap;background:#fff;border:3px solid #111;border-radius:6px;place-items:center;min-width:min(34vw,132px);padding:6px 12px;font-family:Arial Narrow,Roboto Condensed,Arial,sans-serif;font-size:1.05rem;font-weight:700;display:grid;box-shadow:0 0 0 2px #fff,0 8px 12px #00000059}.sign-pole{background:linear-gradient(90deg,#6c7389,#d6dbe8 45%,#8a90a5);border-radius:3px;width:9px;margin-left:-4.5px;position:absolute;top:30px;bottom:0;left:50%}.stage-loading{width:100%;min-height:240px;color:var(--ink-3);place-items:center;font-size:.92rem;display:grid}.prompt-stage.is-3d{aspect-ratio:16/11;background:radial-gradient(90% 80% at 50% 30%,#6e8cff2e,#0000 70%),#04081a66;grid-template:minmax(0,1fr)/minmax(0,1fr);width:100%;min-height:0;max-height:62vh;padding:0;overflow:hidden}.group-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;display:grid}.group-tile{border-radius:var(--r-lg);transition:transform .45s var(--spring);align-items:center;gap:10px;padding:12px 10px;display:flex}.group-tile:active{transform:scale(.97)}.group-cover img,.group-cover .sign-missing{object-fit:contain;filter:drop-shadow(0 4px 6px #00000059);width:44px;min-width:0;height:44px}.group-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.group-body b{overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;font-size:.9rem;line-height:1.2}.group-body .sign-no{align-self:flex-start}.group-body .module-meter{margin-top:2px}.combo-art img{width:46px;height:46px}.catalog-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;display:grid}.catalog-item{border-radius:var(--r-md);cursor:pointer;text-align:center;transition:transform .4s var(--spring);border:0;flex-direction:column;align-items:center;gap:6px;padding:12px 8px 10px;display:flex;position:relative}.catalog-item:active{transform:scale(.96)}.catalog-item img,.catalog-item .sign-missing{object-fit:contain;filter:drop-shadow(0 4px 8px #00000059);width:64px;min-width:0;height:64px}.catalog-name{color:var(--ink-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.78rem;line-height:1.25;display:-webkit-box;overflow:hidden}.learned-dot{background:var(--star);width:9px;height:9px;box-shadow:0 0 8px var(--star);border-radius:50%;position:absolute;top:9px;right:9px}.catalog-flag{padding:2px 7px;font-size:.66rem;position:absolute;top:6px;left:6px}.search{border-radius:999px;align-items:center;height:48px;padding:0 18px;display:flex}.search input{color:var(--ink);font:inherit;background:0 0;border:0;outline:none;flex:1;min-width:0}.search input::placeholder{color:var(--ink-3)}.search:focus-within{outline:2.5px solid var(--star);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sheet-backdrop{z-index:40;padding:12px max(12px, env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(12px, env(safe-area-inset-left,0px));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0205128c;justify-content:center;align-items:flex-end;animation:.25s both fade;display:flex;position:fixed;inset:0;overflow:hidden}.sheet{overscroll-behavior:contain;border-radius:var(--r-xl);--glass-top:#283878b8;--glass-bottom:#101840c7;width:min(560px,100%);max-height:calc(100dvh - 40px);animation:sheet-in .5s var(--spring) both;flex-direction:column;gap:14px;padding:22px 20px 20px;display:flex;position:relative;overflow:hidden auto}.sheet.glass{box-shadow:inset 0 1px .5px #ffffff8c, inset 0 0 0 1px #ffffff29, var(--shadow-float)}.sheet.glass:before{display:none}.sheet h2{font-size:var(--step-2)}.sheet .note{color:var(--ink-2);align-items:flex-start;gap:10px;font-size:.92rem;display:flex}.sheet .note .chip{flex:none}.sheet-close{background:#ffffff14;position:absolute;top:12px;right:12px}.sheet-hero{place-items:center;padding:12px 0 4px;display:grid}.sheet-hero .sign-big{filter:drop-shadow(0 12px 18px #00000073);width:150px;height:auto}.confuser{color:inherit;font:inherit;text-align:left;cursor:pointer;background:#ffffff0f;border:0;border-radius:14px;align-items:center;gap:8px;padding:6px 10px 6px 6px;font-size:.85rem;display:flex}.confuser:hover{background:#ffffff1c}.ref{font:inherit;color:inherit;white-space:nowrap;cursor:pointer;background:#ffffff17;border:0;border-radius:7px;padding:.05em .3em;transition:background .2s;display:inline;box-shadow:inset 0 -1.5px #ffd23f99}.ref:hover,.ref:active{background:#ffd23f33}.ref:focus-visible{outline:2px solid var(--star);outline-offset:1px}.ref-sign,.ref-marking{box-shadow:inset 0 0 0 1px #ffffff29}.ref-sign-img,.ref-marking-img{vertical-align:-.28em;width:auto;height:1.25em;margin-right:.25em;display:inline-block}.ref-marking-img{width:2em}.confuser-marking{flex:none;width:46px;height:29px}.clause-nav{gap:8px;display:flex}.clause-nav .btn{gap:2px;padding-inline:10px 14px}.clause-nav .clause-next{margin-left:auto;padding-inline:14px 10px}.sign-peek{cursor:zoom-in;transition:transform .35s var(--spring);background:0 0;border:0;border-radius:12px;place-items:center;padding:0;display:grid}.sign-peek:active{transform:scale(.95)}.sign-peek:focus-visible,.option.is-peek:focus-visible{outline:2px solid var(--star);outline-offset:2px}.option.is-peek{cursor:zoom-in}.board-refs{flex-wrap:wrap;align-items:center;gap:8px;padding:2px 4px;font-size:.9rem;display:flex}.marking-big{filter:drop-shadow(0 12px 18px #00000073);width:176px;height:110px}.ref-sheet:focus{outline:none}.ref-sheet.is-browsable{touch-action:pan-y pinch-zoom;transform-origin:50% 120%}.ref-sheet-head{z-index:2;-webkit-backdrop-filter:blur(14px)saturate(1.4);backdrop-filter:blur(14px)saturate(1.4);min-height:60px;box-shadow:0 1px 0 var(--line);background:#202e68d1;align-items:center;gap:6px;margin:-22px -20px -6px;padding:8px 8px 8px 20px;display:flex;position:sticky;top:-22px}.ref-sheet-head .icon-btn:first-child{margin-left:-12px}.ref-sheet-head .eyebrow{flex:1;min-width:0}.ref-sheet-close{background:#ffffff14}.clause{flex-direction:column;gap:8px;display:flex}.clause+.clause{border-top:1px solid var(--line);padding-top:14px}.clause h2{font-size:var(--step-1)}.clause-where{color:var(--ink-3);font-size:var(--step--1)}.clause-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.clause-list li{padding-left:18px;position:relative}.clause-list li:before{content:"";background:var(--star);opacity:.75;border-radius:50%;width:5px;height:5px;position:absolute;top:.66em;left:5px}.clause-list li.is-marked{padding-left:0}.clause-list li.is-marked:before{display:none}.confuser img,.confuser .sign-missing{object-fit:contain;width:36px;min-width:0;height:36px}.onboarding-hero{place-items:center;display:grid}.onboarding-hero img{border-radius:50%;animation:4s ease-in-out infinite float;box-shadow:0 0 0 2px #ffffff80,0 0 40px #ffd23f73}.is-onboarding .sheet{text-align:center}.is-onboarding .sheet .segmented{align-self:center}.link-btn{color:var(--ink-3);background:0 0;align-self:center}@keyframes fade{0%{opacity:0}}@keyframes sheet-in{0%{opacity:0;transform:translateY(40px)scale(.96)}}@keyframes float{50%{transform:translateY(-6px)rotate(-3deg)}}.field{text-align:left;color:var(--ink-2);flex-direction:column;gap:6px;font-size:.88rem;font-weight:650;display:flex}.field input,.text-input{height:50px;color:var(--ink);font:inherit;border:0;border-radius:16px;outline:none;min-width:0;padding:0 18px;font-size:1rem;font-weight:600}.text-input{flex:180px}.field input:focus,.text-input:focus{outline:2.5px solid var(--star);outline-offset:2px}.field input::placeholder{color:var(--ink-3);font-weight:500}.avatar-pick{border:0;grid-template-columns:repeat(9,minmax(0,1fr));gap:6px;min-width:0;margin:0;padding:0;display:grid}.avatar-pick legend{color:var(--ink-2);text-align:left;margin-bottom:6px;font-size:.88rem;font-weight:650}.avatar-option{aspect-ratio:1;cursor:pointer;min-width:0;transition:transform .35s var(--spring), background .2s;background:#ffffff0f;border:0;border-radius:14px;padding:0;font-size:clamp(1.1rem,5.4vw,1.35rem)}.avatar-option.is-active{box-shadow:inset 0 0 0 2px var(--star);background:#ffd23f3d;transform:scale(1.06)}.form-error{color:#ffd1d7;text-align:left;background:#ff5a6e24;border-radius:14px;padding:10px 14px;box-shadow:inset 0 0 0 1px #ff5a6e4d}.recovery-code{letter-spacing:.08em;color:var(--star);background:#ffd23f1a;border-radius:14px;padding:10px 16px;font-size:1.25rem;font-weight:700;box-shadow:inset 0 0 0 1px #ffd23f4d}.toast{left:50%;bottom:calc(var(--tabbar-h) + 26px + env(safe-area-inset-bottom,0px));z-index:30;animation:toast 2.6s var(--ease-out) both;border-radius:999px;padding:12px 20px;font-weight:650;position:fixed;transform:translate(-50%)}@keyframes toast{0%{opacity:0;transform:translate(-50%,16px)}12%,80%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,8px)}}.rank{text-align:center;width:26px;color:var(--ink-3);font-weight:800}.leader-avatar{background:#ffffff14;border-radius:50%;flex:none;place-items:center;width:36px;height:36px;font-size:1.15rem;display:grid}.leader-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:650;overflow:hidden}.leaderboard{flex-direction:column;display:flex}.leader-head,.leader-row{grid-template-columns:30px 1fr 64px 76px;align-items:center;gap:8px;display:grid}.leader-head{color:var(--ink-3);padding:0 8px 6px;font-size:.72rem;font-weight:600}.leader-head span:nth-child(n+3){text-align:right}.leader-row{border-radius:16px;padding:10px 8px}.leader-row+.leader-row{border-top:1px solid var(--line)}.leader-row>.mono{text-align:right}.leader-row.is-me{background:#ffd23f1a;box-shadow:inset 0 0 0 1px #ffd23f4d}.leader-row.is-top-1 .rank{color:var(--star)}.leader-row.is-top-2 .rank{color:#dfe6ff}.leader-row.is-top-3 .rank{color:#f0a56a}.leader-who{align-items:center;gap:10px;min-width:0;display:flex}.leader-stars{color:var(--star);justify-content:flex-end;align-items:center;gap:5px;font-weight:800;display:flex}.leader-stars .mono{color:var(--ink)}.hard-row{align-items:center}.hard-sign{object-fit:contain;flex:none;width:40px;min-width:0;height:40px}.hard-placeholder{background:#ffffff0f;border-radius:12px}.hard-title{font-size:.92rem;font-weight:600;line-height:1.3}.hard-rate{color:var(--sign-red);font-weight:800}.loading{color:var(--ink-3)}.stage{touch-action:pan-y;width:100%;height:100%;position:relative}.stage canvas{touch-action:pan-y;display:block}.stage.is-free canvas{touch-action:none}.stage-views{-webkit-backdrop-filter:blur(14px)saturate(1.6);backdrop-filter:blur(14px)saturate(1.6);background:#0a102880;border-radius:999px;gap:4px;padding:4px;display:flex;position:absolute;top:10px;left:10px;box-shadow:inset 0 1px .5px #ffffff4d,0 6px 16px -6px #00000080}.stage-views button{color:var(--ink-2);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;padding:6px 10px;font-size:.78rem;font-weight:650;display:inline-flex}.stage-views button[aria-pressed=true]{color:var(--ink);background:#ffffff2e;box-shadow:inset 0 1px .5px #ffffff73}.stage-replay{--btn-h:34px;padding:0 12px;font-size:.8rem;position:absolute;bottom:10px;right:10px}@media (width<=600px){.prompt-stage.is-3d{aspect-ratio:1}}.scene-label-wrap{pointer-events:none}.scene-label{font:700 12px/1.3 var(--font-body);color:#fff;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0c122cb8;border:2px solid #ffffff80;border-radius:999px;padding:3px 10px;display:inline-block;box-shadow:0 4px 10px #00000059}.scene-label.is-you{color:var(--star-ink);background:var(--star);border-color:#fff3c0}.scenario-list{flex-direction:column;gap:10px;display:flex}.scenario-item{border-radius:var(--r-md);transition:transform .4s var(--spring);grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:14px 16px;display:grid}.scenario-item:active{transform:scale(.98)}.scenario-status{border-radius:50%;place-items:center;width:28px;height:28px;display:grid;box-shadow:inset 0 0 0 2px #fff3}.scenario-status.is-ok{background:var(--go-green);color:#04140b;box-shadow:none}.scenario-status.is-bad{background:var(--sign-red);color:#22040a;box-shadow:none}.wrap-seg{border-radius:22px;flex-wrap:wrap;display:flex}.wrap-seg button{flex:auto}.side-table{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.side-row{text-align:left;cursor:pointer;background:#ffffff0f;border:0;border-radius:16px;flex-direction:column;gap:2px;padding:10px 12px;font-size:.86rem;transition:background .2s;display:flex}.side-row b{font-size:.92rem}.side-row.is-active{background:#ffd23f24;box-shadow:inset 0 0 0 1.5px #ffd23f80}.note-line{color:var(--ink-2);font-size:.92rem}.mnemonics{color:var(--ink-2);flex-direction:column;gap:8px;margin:0;padding-left:20px;display:flex}.mistake .sign-missing{width:40px;min-width:0;height:40px;font-size:.7rem}.stage[data-view=driver] .scene-label.is-you{display:none}.due-badge.is-missed{color:#fff;background:var(--sign-red);box-shadow:0 6px 16px -4px #ff465a8c}.prompt-stage.is-board{padding:12px;display:block}.lane-board,.curb-board{gap:12px;width:100%;display:grid;position:relative}.lane-board>svg{border-radius:var(--r-md);width:100%;max-height:min(56vh,460px);display:block}.curb-board>svg{border-radius:var(--r-md);touch-action:pan-y;-webkit-user-select:none;user-select:none;width:100%;display:block}.curb-board>svg.is-draggable{cursor:ew-resize}.board-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;font-size:.9rem;display:flex}.board-chip{justify-self:start}.lane-hit{fill:#0000;stroke:#0000;stroke-width:.25px;cursor:pointer;transition:fill .16s var(--ease-out,ease);outline:none}.lane-hit:hover{fill:#ffffff14}.lane-hit:focus-visible{stroke:var(--ink)}.lane-hit.is-picked{fill:#ffd23f52;stroke:var(--star)}.lane-hit.is-right{fill:#42e08f4d;stroke:var(--go-green)}.lane-hit.is-wrong{fill:#ff5a6e52;stroke:var(--sign-red)}.lane-hit.is-missed{fill:#0000;stroke:var(--go-green);stroke-dasharray:.8 .6}.lane-mark{fill:#fff;paint-order:stroke;stroke:#00000073;stroke-width:.35px}.lane-mark.is-wrong{fill:#ffb3bd}.lane-mark.is-missed{fill:#9ff0c4}.curb-car{outline:none}.curb-car:focus-visible rect:first-child{stroke:var(--ink);stroke-width:.2px}.curb-ruler line{stroke:#fff;stroke-width:.1px;stroke-dasharray:.4 .25}.curb-ruler text,.curb-label{fill:#fff;paint-order:stroke;stroke:#141828d9;stroke-width:.32px;stroke-linejoin:round;font-size:1.15px;font-weight:800}.curb-ruler.is-tight text{font-size:1px}.curb-label{fill:#2a2e38;stroke:#fff9}
