@font-face{font-family:Saira;font-style:normal;font-display:swap;font-weight:500;src:url(./saira-latin-500-normal-BUkaYXVh.woff2)format("woff2")}@font-face{font-family:Saira;font-style:normal;font-display:swap;font-weight:500;src:url(./saira-vietnamese-500-normal-DnkVjnpC.woff2)format("woff2")}@font-face{font-family:Saira;font-style:normal;font-display:swap;font-weight:600;src:url(./saira-latin-600-normal-DYxBFP1f.woff2)format("woff2")}@font-face{font-family:Saira;font-style:normal;font-display:swap;font-weight:600;src:url(./saira-vietnamese-600-normal-D5gszP3k.woff2)format("woff2")}@font-face{font-family:Saira Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(./saira-condensed-latin-500-normal-DIdKjHXc.woff2)format("woff2")}@font-face{font-family:Saira Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(./saira-condensed-vietnamese-500-normal-BO-iw4YA.woff2)format("woff2")}@font-face{font-family:Saira Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(./saira-condensed-latin-600-normal-0taFJMb7.woff2)format("woff2")}@font-face{font-family:Saira Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(./saira-condensed-vietnamese-600-normal-DdheDV3O.woff2)format("woff2")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(./be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2)format("woff2")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(./be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2)format("woff2")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(./be-vietnam-pro-latin-600-normal-BZDkUTrt.woff2)format("woff2")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(./be-vietnam-pro-vietnamese-600-normal-nyU-ZL2p.woff2)format("woff2")}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0d10;--s1:#14181d;--s2:#1a1f25;--s3:#222831;--well:#0f1215;--scrim:#080a0db8;--line:#ffffff17;--line2:#ffffff26;--tx:#e8ecef;--tx2:#8a939c;--tx3:#838d96;--teal:#3dd6c6;--teal-ink:#062521;--teal-dim:#3dd6c624;--green:#6fd39a;--green-dim:#6fd39a21;--amber:#ffb020;--amber-dim:#ffb02021;--red:#ff4d4f;--red-dim:#ff4d4f21;--r1:12px;--r2:16px;--f-head:"Saira", system-ui, sans-serif;--f-num:"Saira Condensed", "Saira", system-ui, sans-serif;--f-body:"Be Vietnam Pro", system-ui, sans-serif;--navy:var(--bg);--panel:#14181deb;--panel-solid:var(--s1);--white:var(--tx);--muted:var(--tx2);--cyan:var(--teal);--yellow:var(--amber);--orange:var(--amber);--mark:var(--red);--hero:var(--red);--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-expo:cubic-bezier(.16, 1, .3, 1);--ease-io:cubic-bezier(.65, 0, .35, 1);--ease-spring:linear(0, .06 2.5%, .22 5.5%, .5 10%, .78 15.5%, .95 21%, 1.03 27%, 1.05 32%, 1.04 38%, 1.01 48%, .995 60%, 1);--d-fast:.14s;--d:.22s;--d-slow:.48s;--stagger-step:55ms;--elev1:0 1px 0 #ffffff0a inset, 0 1px 2px #0000004d, 0 8px 24px -12px #00000080;--elev2:0 1px 0 #ffffff0f inset, 0 2px 4px #0000004d, 0 24px 48px -16px #0009}.num{font-family:var(--f-num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.lbl{font:500 12px/1.2 var(--f-head);letter-spacing:.08em;text-transform:uppercase;color:var(--tx2)}.i{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px;transition:transform var(--d) var(--ease-out);flex:none;display:block;overflow:visible}.i *{vector-effect:non-scaling-stroke}[data-i]{align-items:center}@media (hover:hover){:is(a,button,summary):hover>:is([data-i=chevR],[data-i=next])>.i,:is(a,button):hover>svg.i:last-child:not(:first-child){transform:translate(3px)}:is(a,button):hover>[data-i=back]>.i,:is(a,button)[data-i=back]:hover>.i{transform:translate(-3px)}}.btn{isolation:isolate;border-radius:var(--r1);min-height:48px;font:500 15px/1 var(--f-head);letter-spacing:.01em;color:var(--tx);background:var(--s2);border:1px solid var(--line2);white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color var(--d) var(--ease-out), border-color var(--d) var(--ease-out), color var(--d) var(--ease-out), box-shadow var(--d) var(--ease-out), transform var(--d-fast) var(--ease-out), outline-offset var(--d-fast) var(--ease-out);justify-content:center;align-items:center;gap:10px;padding:0 18px;text-decoration:none;display:inline-flex;position:relative}.btn:hover{background:var(--s3);border-color:#ffffff38}.btn:active{transition-duration:60ms;transform:scale(.97)}.btn:focus-visible,.ib:focus-visible{outline:2px solid var(--teal);outline-offset:3px}.btn.pri{background:linear-gradient(180deg, color-mix(in oklab, var(--teal), #fff 16%), var(--teal));color:var(--teal-ink);box-shadow:inset 0 1px 0 #fff6, inset 0 -1px 0 #0000001f, 0 1px 2px #00000059, 0 10px 28px -12px color-mix(in srgb, var(--teal) 75%, transparent);border-color:#0000;font-weight:600;overflow:hidden}.btn.pri:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(105deg,#0000 30%,#ffffff73 50%,#0000 70%);position:absolute;inset:0;transform:translate(-110%)}.btn.pri:hover{background:linear-gradient(180deg, color-mix(in oklab, var(--teal), #fff 24%), color-mix(in oklab, var(--teal), #fff 6%));box-shadow:inset 0 1px 0 #ffffff73, inset 0 -1px 0 #0000001f, 0 1px 2px #00000059, 0 14px 36px -10px color-mix(in srgb, var(--teal) 90%, transparent)}@media (hover:hover){.btn.pri:hover:before{transition:transform .8s var(--ease-out);transform:translate(110%)}}.btn.ghost{background:0 0}.btn.ghost:hover{background:var(--s2)}.btn.danger{color:var(--red);background:0 0;border-color:#ff4d4f59}.btn.danger:hover{background:var(--red-dim);border-color:var(--red)}.btn .i{width:20px;height:20px}.btn>:is(.i,[data-i]):first-child:not(:only-child){margin-inline-start:-2px}.btn>:is([data-i=chevR],[data-i=next]):last-child,.btn>svg.i:last-child:not(:first-child){margin-inline-end:-4px}.ib{border-radius:var(--r1);width:48px;height:48px;color:var(--tx);cursor:pointer;transition:background-color var(--d) var(--ease-out), transform var(--d-fast) var(--ease-out);background:0 0;border:0;flex:none;justify-content:center;place-items:center;text-decoration:none;display:inline-grid}.ib:hover{background:var(--s2)}.ib:active{transform:scale(.92)}.ib.s{background:var(--s2);border:1px solid var(--line)}.ib.s:hover{background:var(--s3)}@keyframes rise{0%{opacity:0;filter:blur(6px);transform:translateY(12px)}}@keyframes pop{0%{opacity:0;transform:scale(.94)}}@keyframes fade{0%{opacity:0}}.rise{animation:rise var(--d-slow) var(--ease-expo) both;animation-delay:calc(var(--n,0) * var(--stagger-step))}.pop{animation:pop var(--d-slow) var(--ease-spring) both;animation-delay:calc(var(--n,0) * var(--stagger-step))}.chip{height:26px;font:500 12.5px/1 var(--f-head);letter-spacing:.02em;background:var(--s3);color:var(--tx2);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.chip.ok{background:var(--green-dim);color:var(--green)}.chip.warn{background:var(--amber-dim);color:var(--amber)}.chip.bad{background:var(--red-dim);color:var(--red)}.chip.cur{background:var(--teal-dim);color:var(--teal)}.chip.pro{color:var(--amber);border:1px solid var(--amber);background:0 0;font-weight:600}.chip .i{width:14px;height:14px}.cmap{position:relative;overflow:hidden}.cmap svg{display:block}.cmap .asphalt{fill:#2a2f36}.cmap .curb{fill:#3a4049}.cmap .paint{fill:#e8ecef8c}.cmap .ln{stroke:#e8ecef9e;fill:none;stroke-linecap:butt}.cmap .zone{fill:var(--teal-dim);stroke:var(--teal);stroke-width:.25px}.cmap .stop-hi{fill:var(--amber)}.cmap .lamp{fill:var(--red)}.cmap .route{fill:none;stroke-linecap:round;stroke-linejoin:round}.cmap .route.model{stroke:var(--teal);opacity:.9}.cmap .route.done{stroke:var(--green);opacity:.5}.cmap .chev{fill:none;stroke:var(--teal);stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.cmap .trail{fill:none;stroke:var(--tx);stroke-opacity:.85;stroke-linecap:round;stroke-linejoin:round}.cmap .node circle{fill:var(--s2);stroke:var(--line2);stroke-width:.3px}.cmap .node text,.cmap .fault text{fill:var(--tx2);font-family:var(--f-num);text-anchor:middle;font-weight:600}.cmap .node.ok circle{fill:#1d2c25;stroke:var(--green)}.cmap .node.ok text{fill:var(--green)}.cmap .node.warn circle{fill:#2e2716;stroke:var(--amber)}.cmap .node.warn text{fill:var(--amber)}.cmap .node.bad circle{fill:#2f1a1b;stroke:var(--red)}.cmap .node.bad text{fill:var(--red)}.cmap .node.cur circle{fill:var(--teal);stroke:none}.cmap .node.cur text{fill:var(--teal-ink)}.cmap .node .halo{opacity:.45;fill:none!important;stroke:var(--teal)!important}.cmap .fault circle{fill:var(--amber)}.cmap .fault.bad circle{fill:var(--red)}.cmap .fault text{fill:#111}.cmap .car rect{fill:var(--tx)}.cmap .car .glass{fill:#39424c}.cmap .car.ghost rect{fill:none;stroke:var(--teal);stroke-width:.18px;stroke-dasharray:.5 .4}.cmap .car.ghost .glass{display:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}html,body{background:var(--bg);height:100%;color:var(--tx);font:400 13px var(--f-body);touch-action:none;margin:0;overflow:hidden}:root{--tap:48px;--sa-t:env(safe-area-inset-top,0px);--sa-r:env(safe-area-inset-right,0px);--sa-b:env(safe-area-inset-bottom,0px);--sa-l:env(safe-area-inset-left,0px);--mir:min(10vw, 24vh);--row:calc(var(--sa-t) + var(--mir) + 14px);--below:calc(var(--row) + var(--tap) + 8px);--bottom:calc(var(--sa-b) + 16px);--wheel:min(42vh, 30vw, calc(100vh - var(--below) - 54px - var(--bottom)));--mm:min(30vh, 19vw);--brake-w:min(17vh, 13vw);--gas-w:max(var(--tap), min(11vh, 8vw));--gears-r:calc(var(--brake-w) + var(--gas-w) + 34px + var(--sa-r));--gears-w:calc(2 * 52px + 6px);--free-l:calc(var(--sa-l) + 12px + var(--wheel) + 14px + var(--mm) + 8px);--free-r:calc(var(--gears-r) + var(--gears-w) + 8px);--hud:#0f1216eb;--hud-line:#ffffff1f}body.top-view,body.no-minimap{--free-l:calc(var(--sa-l) + 12px + var(--wheel) + 14px)}@media (max-width:760px){:root{--mm:min(24vh, 15vw)}}#view{width:100vw;height:100vh;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui button,#ui select,#ui .pedal,#wheel,#result{pointer-events:auto}button{background:var(--hud);color:var(--tx);border:1px solid var(--hud-line);border-radius:var(--r1);font:500 14px var(--f-head);cursor:pointer;padding:6px 10px}button .i{pointer-events:none}button:focus-visible,select:focus-visible{outline:2px solid var(--teal);outline-offset:2px}button.on{color:var(--teal);border-color:var(--teal)}#ui button{white-space:nowrap}#hud{left:var(--free-l);right:var(--free-r);bottom:var(--bottom);flex-direction:column;align-items:center;gap:6px;line-height:1;display:flex;position:absolute}#hud .row{justify-content:center;align-items:flex-end;gap:8px;display:flex}#hud .spd{font:500 clamp(44px, 15vh, 64px)/.8 var(--f-num);font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 1px 3px #000000b3}#hud .u{flex-direction:column;align-items:flex-start;gap:5px;padding-bottom:1px;display:flex}#hud .unit{color:#c9d0d6;text-shadow:0 1px 2px #000000b3;font-size:11px}#hud .gear{background:var(--hud);border:1px solid var(--line2);width:30px;height:28px;font:600 18px/1 var(--f-num);border-radius:8px;place-items:center;display:grid}#hud .gear.rev{color:var(--amber);border-color:var(--amber)}#hud .sub{flex-wrap:wrap;justify-content:center;gap:4px;max-width:100%;display:flex}#hud .sub:empty{display:none}#hud .sub .chip{background:var(--hud);border:1px solid var(--hud-line);height:22px;padding:0 8px;font-size:11.5px}#hud .sub .chip.warn{background:#2a2312;border-color:#ffb02059}#hud .sub .chip.bad{background:#2b1416;border-color:#ff4d4f59}#hud .sub .chip.cur{background:#0f2725;border-color:#3dd6c666}#hud .sub .chip .num{color:var(--tx);font-size:13px}#hud .tech{color:var(--tx2);background:var(--hud);text-align:center;border-radius:6px;padding:3px 8px;font-size:11px;line-height:1.3;display:none}#hud.debug .tech{display:block}#status{left:50%;bottom:calc(var(--sa-b) + 2px);color:var(--tx3);white-space:nowrap;font-size:10px;display:none;position:absolute;transform:translate(-50%)}#hud.debug~#status{display:block}.bad{color:var(--red)}.ok{color:var(--green)}#toasts{left:50%;top:var(--below);flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;transform:translate(-50%)}.toast{background:var(--hud);border:1px solid var(--hud-line);border-left:3px solid var(--tx3);min-height:34px;font:500 13px/1.25 var(--f-head);animation:toastin .42s var(--ease-spring);border-radius:10px;align-items:center;gap:8px;max-width:min(60vw,460px);padding:6px 12px 6px 10px;display:flex}.toast.info{border-left-color:var(--teal)}.toast.warn{border-left-color:var(--amber)}.toast.warn .i{color:var(--amber)}.toast.bad{border-left-color:var(--red)}.toast.bad .i{color:var(--red)}.toast .i{width:16px;height:16px}@keyframes toastin{0%{opacity:0;transform:translateY(-10px)scale(.96)}}#topbar{top:var(--row);max-width:calc(100vw - 2 * (var(--tap) * 2 + 104px) - var(--sa-l) - var(--sa-r));gap:6px;display:flex;position:absolute;left:50%;transform:translate(-50%)}#topbar button,#left-col button,#right-col button{min-width:var(--tap);height:var(--tap);flex:none;justify-content:center;align-items:center;gap:6px;padding:0 12px;display:inline-flex}#topbar #view-toggle span{font-size:13px}@media (max-width:760px){#topbar #view-toggle span{display:none}}#left-col{left:calc(8px + var(--sa-l));top:var(--row);gap:6px;display:flex;position:absolute}#right-col{right:calc(8px + var(--sa-r));top:var(--row);gap:6px;display:flex;position:absolute}#left-col button,#right-col button{width:var(--tap);padding:0}.ind.on{color:var(--green);border-color:var(--green);background:#12241b}#hazard.on{color:#fff;background:var(--red);border-color:#0000}#hazard{color:var(--red)}#belt{color:var(--tx2)}#belt.on{color:var(--green);border-color:#6fd39a80}body.top-view #mirror-toggle{display:none}#mirrors{top:var(--below);background:var(--s1);border:1px solid var(--line2);border-radius:var(--r2);z-index:7;pointer-events:auto;flex-direction:column;gap:6px;padding:10px;display:none;position:absolute;left:50%;transform:translate(-50%)}#mirrors .tip{color:var(--tx2);text-align:center;font-size:12px}#mirrors.open{display:flex}#mirrors .row{gap:6px;display:flex}#mirrors button{min-width:var(--tap);min-height:var(--tap);background:var(--s2);flex:1;justify-content:center;align-items:center;gap:4px;font-size:13.5px;display:inline-flex}#mirrors button .i{width:18px;height:18px}#mirrors .seg{border-radius:var(--r1);background:var(--well);border:1px solid var(--line);gap:3px;padding:3px}#mirrors .seg button{min-height:var(--tap);color:var(--tx2);background:0 0;border-color:#0000}#mirrors .seg button.on{background:var(--s3);color:var(--tx);border-color:#0000}#mirror-close.on{background:var(--teal);color:var(--teal-ink);border-color:#0000;font-weight:600}body.paused #ui>:not(#pause),body.paused #ui>:not(#pause) *,body.mirror-adjust #ui>:not(#mirrors),body.mirror-adjust #ui>:not(#mirrors) *{pointer-events:none!important}body.mirror-adjust #ui>:not(#mirrors){opacity:.3}#minimap{left:calc(var(--sa-l) + 12px + var(--wheel) + 14px);bottom:var(--bottom);width:var(--mm);aspect-ratio:1;border:1px solid var(--hud-line);background:var(--well);pointer-events:none;border-radius:14px;position:absolute}body.top-view #minimap,body.no-minimap #minimap{display:none}#wheel{left:calc(var(--sa-l) + 12px);bottom:var(--bottom);width:var(--wheel);aspect-ratio:1;touch-action:none;border-radius:50%;position:absolute}#wheel-img{will-change:transform;width:100%;height:100%;display:block}#wheel-turns{font:500 clamp(12px, 3.6vh, 16px)/1 var(--f-num);color:var(--tx);pointer-events:none;white-space:nowrap;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#wheel.lock #wheel-turns{color:var(--amber)}#wheel.lock #wheel-img .rim{stroke:#3a2a10}#wheel.lock #wheel-img .top{stroke:var(--amber)}#course{left:calc(8px + var(--sa-l));top:var(--below);max-width:calc(var(--wheel) + 14px + var(--mm));border-radius:var(--r1);background:var(--hud);border:1px solid var(--hud-line);font:500 12.5px/1.3 var(--f-head);pointer-events:none;flex-direction:column;gap:3px;padding:7px 10px;display:flex;position:absolute}#course .t{color:var(--tx);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#course .t small{color:var(--tx2);text-transform:uppercase;letter-spacing:.06em;margin-right:4px;font-size:11px}#course .m{color:var(--tx2);white-space:nowrap;align-items:center;gap:6px;display:flex}#course .m .num{color:var(--tx);font-size:15px}#course .m .i{width:14px;height:14px}#course .over,#course .over .num{color:var(--amber)}#course .lamp{border-radius:50%;width:9px;height:9px;display:inline-block}#course .lamp.green{background:var(--green)}#course .lamp.yellow{background:var(--amber)}#course .lamp.red{background:var(--red)}body.top-view #course{top:calc(var(--sa-t) + 8px + var(--tap) + 8px)}#alarm{z-index:4;border-radius:var(--r2);pointer-events:none;border:1px solid var(--red);color:#fff;background:#96161af2;align-items:center;gap:12px;padding:10px 18px 10px 14px;animation:1s steps(2,end) infinite alarm;display:flex;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}#alarm[hidden],#course[hidden],#ui [hidden]{display:none!important}#alarm .i{width:30px;height:30px}#alarm span{font:400 13px/1.25 var(--f-body);flex-direction:column;gap:2px;display:flex}#alarm b{font:600 17px/1.15 var(--f-head);text-transform:uppercase;letter-spacing:.04em}@keyframes alarm{50%{background:#5a0e10f2}}#gears{right:var(--gears-r);bottom:var(--bottom);grid-template-columns:52px 52px;grid-auto-flow:column;grid-template-rows:repeat(4, var(--tap));gap:4px 6px;display:grid;position:absolute}#gears [data-gear]{grid-column:2}#gears button{width:52px;min-height:var(--tap);font:600 18px var(--f-num);color:var(--tx2);padding:0}#gears button.on{background:var(--tx);color:var(--bg);border-color:#0000}#gears button[data-gear=R].on{background:var(--amber);color:#1d1300}#gears #pbrake{grid-area:4/1;place-items:center;display:grid}#gears #pbrake small{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}#pbrake .pb{width:24px;height:24px;font:600 13px/1 var(--f-num);border:1.6px solid;border-radius:50%;place-items:center;display:grid;position:relative}#pbrake .pb:before,#pbrake .pb:after{content:"";border:1.6px solid #0000;border-color:#0000 currentColor;border-radius:50%;width:5px;position:absolute;top:3px;bottom:3px}#pbrake .pb:before{border-right:0;left:-9px}#pbrake .pb:after{border-left:0;right:-9px}#gears #pbrake.on{color:var(--amber);background:#2a2312;border-color:#ffb02080}#pedals{right:calc(12px + var(--sa-r));bottom:var(--bottom);align-items:flex-end;gap:10px;display:flex;position:absolute}.pedal{background:var(--hud);border:1px solid var(--hud-line);touch-action:none;border-radius:14px;justify-content:center;align-items:flex-end;display:flex;position:relative;overflow:hidden}.pedal span{font:500 11.5px var(--f-head);letter-spacing:.08em;text-transform:uppercase;color:var(--tx2);padding-bottom:9px;position:relative}.pedal .fill{height:0;position:absolute;top:0;left:0;right:0}#brake{background-image:repeating-linear-gradient(0deg,#0000 0 14px,#ffffff12 14px 16px);background-position:50% 10px;background-repeat:no-repeat;background-size:56% 100%;width:min(17vh,13vw);height:min(34vh,26vw)}#brake .fill{border-bottom:2px solid var(--red);background:#ff4d4f52}#brake:before{content:"vào số";left:0;right:0;top:var(--shift-at,55%);font:500 9.5px var(--f-head);letter-spacing:.06em;text-transform:uppercase;color:var(--tx3);text-align:right;z-index:1;pointer-events:none;border-top:1px dashed #e8ecef73;padding:2px 6px 0 0;position:absolute}#brake.armed:before{border-top:2px solid var(--teal);color:var(--teal)}#brake.nudge{animation:.3s ease-in-out 3 brake-nudge}@keyframes brake-nudge{50%{border-color:var(--red);box-shadow:0 0 0 3px #ff4d4f59}}#gears.armed [data-gear]{border-color:#3dd6c68c}#gas{width:var(--gas-w);background-image:repeating-linear-gradient(0deg,#0000 0 14px,#ffffff12 14px 16px);background-position:50% 10px;background-repeat:no-repeat;background-size:50% 100%;height:min(36vh,27vw)}#gas .fill{border-bottom:2px solid var(--teal);background:#3dd6c647}#hint{top:var(--below);background:var(--s1);border-radius:var(--r2);border:1px solid #3dd6c673;width:min(60vw,520px);padding:10px 14px;font-size:13px;line-height:1.45;display:none;position:absolute;left:50%;transform:translate(-50%)}#hint.open{display:block}body.top-view #topbar,body.top-view #left-col,body.top-view #right-col{top:calc(8px + var(--sa-t))}body.top-view #hint,body.top-view #mirrors,body.top-view #toasts{top:calc(var(--sa-t) + 8px + var(--tap) + 8px)}#steer-zone{width:50vw;bottom:0;left:0;top:var(--below);pointer-events:auto;touch-action:none;position:absolute}body.paused #steer-zone,body.mirror-adjust #steer-zone,body.briefing #steer-zone{pointer-events:none}#wheel.held #wheel-img .rim{stroke:#14282cf5}body.free-mode #course,body.free-mode #brake:before,body.free-mode #gears [data-gear=N]{display:none!important}body.free-mode #gears [data-gear=R]{color:var(--amber);border-color:#ffb0208c}#gears [data-gear].want{border-color:var(--teal);color:var(--teal)}body.free-mode #gas span:after{content:" · giữ";text-transform:none;letter-spacing:0}body.chase-view #mirror-toggle{display:none}.rs-mode{vertical-align:middle;margin-left:6px;font-size:12px}:root{--ez:max(64px, min(84px, 21vh))}.ez{display:none}body.easy-mode .ez{bottom:var(--bottom);pointer-events:none;gap:10px;display:flex;position:absolute}body.easy-mode #wheel,body.easy-mode #gears,body.easy-mode #pedals,body.easy-mode #left-col,body.easy-mode #right-col,body.easy-mode #steer-zone{display:none!important}body.easy-mode.briefing .ez,body.easy-mode.paused .ez{visibility:hidden}@media not (any-pointer:coarse){body.easy-mode .ez{display:none}}#ez-steer{left:calc(var(--sa-l) + 12px);flex-direction:column;align-items:flex-start}#ez-pedal{right:calc(var(--sa-r) + 12px);align-items:flex-end}.ez-row,.ez-ind{gap:10px;display:flex}.ez button{width:var(--ez);height:var(--ez);touch-action:none;background:#0c0f13db;border:1px solid #ffffff38;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:0;display:inline-flex}.ez button .i{stroke-width:2.4px;width:34px;height:34px}.ez button small{font:600 10px var(--f-body);color:var(--tx);text-shadow:0 1px 2px #000c;text-transform:uppercase;letter-spacing:.04em}#ez-pedal [data-ez=up]{height:calc(var(--ez) * 1.25)}.ez button.on{border-color:var(--teal);color:var(--teal);background:#3dd6c638}.ez-ind{background:#0c0f1399;border:1px dashed #ffb02073;border-radius:999px;padding:4px}.ez-ind button{width:var(--tap);height:var(--tap);color:var(--amber);background:#ffb02014;border-color:#ffb02080;border-radius:50%}.ez-ind button .i{width:22px;height:22px}.ez-ind button.on{color:#111;border-color:var(--amber);background:var(--amber);animation:.8s step-end infinite ez-blink}@keyframes ez-blink{50%{color:var(--amber);background:#ffb02040}}@media (prefers-reduced-motion:reduce){.ez-ind button.on{animation:none}}body.easy-mode{--free-l:calc(var(--sa-l) + 12px + 2 * var(--ez) + 22px);--free-r:calc(var(--sa-r) + 12px + 2 * var(--ez) + 22px)}body.easy-mode #minimap{left:var(--free-l)}body.easy-mode.mm-alt #minimap{left:auto;right:calc(var(--sa-r) + 10px);bottom:auto;top:var(--below);width:clamp(72px, calc(100vh - var(--below) - var(--bottom) - 1.25 * var(--ez) - 12px), var(--mm))}body.mm-off #minimap{display:none}body.easy-mode:is(.chase-view,.top-view) #minimap{left:auto;right:calc(var(--sa-r) + 10px);bottom:auto;top:calc(var(--sa-t) + 8px);width:min(26vh,17vw)}body.chase-view #topbar{top:calc(8px + var(--sa-t))}body.chase-view #hint,body.chase-view #toasts{top:calc(var(--sa-t) + 8px + var(--tap) + 8px)}body.easy-mode #course{left:calc(8px + var(--sa-l));top:calc(var(--sa-t) + 8px);max-width:34vw}body.easy-mode:not(.chase-view):not(.top-view) #course{top:var(--below)}#yard{left:calc(8px + var(--sa-l));top:calc(var(--sa-t) + 8px);border-radius:var(--r2);background:var(--hud);border:1px solid var(--hud-line);pointer-events:auto;cursor:pointer;flex-direction:column;gap:6px;width:min(34vw,330px);padding:8px 10px;display:flex;position:absolute}#yard.mini{width:auto;max-width:min(34vw,330px);padding:6px 10px}#yard.mini :is(.yt span,[data-yard=ex]){display:none}#yard.mini .ya button{min-height:32px;font-size:12px}#yard.in{border-color:#3dd6c699}#yard .yt b{font:600 14px var(--f-head);color:var(--tx);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}#yard.in .yt b{color:var(--teal)}#yard .yt span{color:var(--tx2);margin-top:2px;font-size:12px;line-height:1.35;display:block}#yard .ya{flex-wrap:wrap;gap:6px;display:flex}#yard .ya button{min-height:40px;padding:0 10px;font-size:13px}body:not(.chase-view):not(.top-view) #yard{top:var(--below);width:auto;max-width:min(34vw,330px)}body:not(.chase-view):not(.top-view) #yard :is(.yt span,.ya){display:none}.toast.coach{border-color:#3dd6c680}.toast.coach b{color:var(--teal);margin-right:4px}#brief{z-index:20;color:var(--tx);background:var(--scrim);touch-action:pan-y;flex-direction:column;display:none;position:fixed;inset:0}body.briefing #brief{display:flex}body:not(.scene-ready) #brief{background:linear-gradient(var(--scrim), var(--scrim)), url(../scenes/hero-b7-land.webp) center / cover no-repeat, var(--bg)}body.briefing #ui,body.flying #ui{visibility:hidden}.bf-top{padding:calc(var(--sa-t) + 6px) max(16px, var(--sa-r)) 6px max(10px, var(--sa-l));flex:none;grid-template-columns:48px 1fr auto;align-items:center;gap:10px;display:grid}.bf-top .ib{color:var(--tx)}.bf-ttl{flex-direction:column;gap:3px;min-width:0;display:flex}.bf-ttl .lbl{font-size:11px}.bf-ttl h1{font:500 19px/1.2 var(--f-head);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.bf-step{font:500 26px/1 var(--f-num)}.bf-step small{color:var(--tx2);font-size:16px}.bf-prog{background:var(--line);flex:none;height:2px}.bf-prog i{background:var(--teal);width:0;height:100%;display:block}.bf-body{min-height:0;padding:14px max(16px, var(--sa-r)) 12px max(16px, var(--sa-l));flex:1;grid-template-columns:minmax(190px,.95fr) 1fr 1fr;gap:20px;display:grid}.bf-map{border-radius:var(--r2);border:1px solid var(--line2);background:var(--well);min-height:0;overflow:hidden}.bf-col{flex-direction:column;gap:8px;min-height:0;display:flex;overflow:auto}.bf-col>.lbl{flex:none}.bf-goal p{font:400 14.5px/1.5 var(--f-body);color:var(--tx);-webkit-line-clamp:7;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.bf-goal.open p{display:block}.bf-guide{flex-direction:column;gap:6px;margin-top:6px;display:flex}.bf-guide ol,.bf-guide ul{font:400 13.5px/1.45 var(--f-body);color:var(--tx);margin:0;padding-left:18px}.bf-guide li+li{margin-top:4px}.bf-guide ul b{font-weight:600}.bf-guide .bf-exam{font:400 12.5px/1.4 var(--f-body);color:var(--tx3);margin:2px 0 0}.bf-more{min-height:48px;color:var(--teal);font:500 13px var(--f-head);background:0 0;border:0;flex:none;align-self:flex-start;padding:0 2px}#brief-faults{margin:0;padding:0;list-style:none}#brief-faults li{border-bottom:1px solid var(--line);font:400 13.5px/1.35 var(--f-body);grid-template-columns:1fr auto;align-items:baseline;gap:10px;padding:8px 0;display:grid}#brief-faults li:first-child{padding-top:2px}#brief-faults b{font:500 17px/1 var(--f-num);color:var(--amber)}.bf-fail .lbl{color:var(--red);margin:6px 0 4px}.bf-fail p{font:400 13.5px/1.45 var(--f-body);color:var(--tx);margin:0}.bf-foot{border-top:1px solid var(--line);padding:10px max(16px, var(--sa-r)) calc(10px + var(--sa-b)) max(16px, var(--sa-l));flex:none;justify-content:space-between;align-items:center;gap:16px;display:flex}.bf-meta{flex-direction:column;gap:3px;min-width:0;display:flex}#brief-pass{font:500 12px var(--f-head);letter-spacing:.08em;text-transform:uppercase;color:var(--tx2);white-space:nowrap}#brief-pass .num{color:var(--teal);letter-spacing:0;margin-left:6px;font-size:20px}#brief-pass .num small{color:var(--tx2);font-size:13px}.bf-meta small{color:var(--tx3);font-size:11px;line-height:1.3}.bf-acts{flex:none;gap:8px;display:flex}#brief-go{min-width:168px;height:52px;font-size:16px}#rotate{display:none}@media (max-height:400px){.bf-top{padding-top:calc(var(--sa-t) + 2px);padding-bottom:2px}.bf-ttl h1{font-size:17px}.bf-body{gap:16px;padding-top:10px}.bf-foot{padding-top:8px;padding-bottom:calc(8px + var(--sa-b))}.bf-goal p{-webkit-line-clamp:6;font-size:13.5px}}@media (max-width:760px) and (orientation:landscape){.bf-body{grid-template-columns:minmax(170px,.85fr) 1fr 1fr;gap:14px}.bf-meta small{display:none}#brief-go{min-width:140px}.bf-acts .btn:not(.pri){padding:0 12px}}@media (orientation:portrait){body:not(.briefing) #brief{display:flex}#brief{overflow:auto}.bf-top{padding-top:calc(var(--sa-t) + 10px);grid-template-columns:48px 1fr auto}.bf-ttl h1{white-space:normal;font-size:18px}.bf-body{flex-direction:column;flex:none;gap:18px;display:flex}.bf-map{flex:none;height:44vh;min-height:220px}.bf-col{overflow:visible}.bf-goal p{-webkit-line-clamp:5}.bf-foot{background:var(--bg);flex-direction:column;align-items:stretch;margin-top:auto;position:sticky;bottom:0}.bf-acts{flex-wrap:wrap}.bf-acts .btn{flex:1}#brief-go{display:none}#rotate{border-radius:var(--r1);background:var(--teal);height:52px;color:var(--teal-ink);font:600 16px var(--f-head);flex:1 0 100%;justify-content:center;align-items:center;gap:12px;display:flex}#rotate .i{width:24px;height:24px}}#pause{z-index:7;pointer-events:auto;padding:calc(8px + var(--sa-t)) max(12px, var(--sa-r)) calc(8px + var(--sa-b)) max(12px, var(--sa-l));-webkit-backdrop-filter:blur(12px)saturate(.7);backdrop-filter:blur(12px)saturate(.7);background:#06080a9e;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}#pause[hidden]{display:none}.pz-main,.pz-side{border-radius:var(--r2);border:1px solid var(--line2);background:#14181deb;max-height:100%;overflow:auto}.pz-main{flex-direction:column;flex:0 300px;gap:10px;min-width:250px;padding:16px;display:flex}.pz-main>.lbl b{font-weight:500}.pz-main h2{font:500 18px/1.25 var(--f-head);margin:0}.pz-stat{grid-template-columns:1fr 1fr;padding:2px 0 4px;display:grid}.pz-stat div{flex-direction:column;gap:3px;display:flex}.pz-stat div+div{border-left:1px solid var(--line);padding-left:14px}.pz-stat b{font:500 26px/1 var(--f-num)}#resume{width:100%;height:54px;font-size:16px}.pz-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pz-row .btn{padding:0 10px}.pz-lesson{align-items:center;gap:10px;display:flex}.pz-lesson .lbl{flex:none}#lesson{min-width:0;height:var(--tap);font:400 13.5px var(--f-body);border-radius:var(--r1);background:var(--well);color:var(--tx);border:1px solid var(--line2);flex:1;padding:0 10px}.pz-side{flex-direction:column;flex:0 470px;gap:8px;min-width:0;padding:14px;display:flex}.pz-side>.lbl,.pz-dbg summary{margin-top:2px}#pause .opts{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;display:grid}#pause .opts button{min-height:var(--tap);text-align:left;background:var(--s2);border-color:var(--line);font:500 13.5px var(--f-head);grid-template-columns:20px 1fr auto;align-items:center;gap:10px;padding:0 12px;display:grid;overflow:hidden}#pause .opts button .i{width:19px;height:19px;color:var(--tx2)}#pause .opts button span{text-overflow:ellipsis;overflow:hidden}#pause .opts button em{color:var(--tx2);font-size:12.5px;font-style:normal}#pause .opts button:disabled{opacity:.55}.pz-dbg summary{cursor:pointer;align-items:center;min-height:36px;list-style:none;display:flex}.pz-dbg summary::-webkit-details-marker{display:none}.pz-dbg summary:after{content:"";border:solid var(--tx2);border-width:0 1.6px 1.6px 0;width:7px;height:7px;margin-left:8px;transform:rotate(45deg)translateY(-2px)}.pz-dbg[open] summary:after{transform:rotate(-135deg)}@media (max-width:760px){.pz-main{min-width:230px;padding:14px}#pause .opts{grid-template-columns:1fr 1fr}}#result:not(.bench){z-index:8;background:var(--bg);color:var(--tx);flex-direction:column;display:flex;position:absolute;inset:0}#result[hidden]{display:none!important}.rs-top{border-bottom:1px solid var(--line);padding:calc(var(--sa-t) + 4px) max(16px, var(--sa-r)) 4px max(10px, var(--sa-l));flex:none;grid-template-columns:48px 1fr auto;align-items:center;gap:10px;display:grid}.rs-top h2{font:500 18px/1.2 var(--f-head);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.rs-step{font:500 24px/1 var(--f-num)}.rs-step small{color:var(--tx2);font-size:15px}.rs-body{min-height:0;padding:12px max(16px, var(--sa-r)) 10px max(16px, var(--sa-l));flex:1;grid-template-columns:minmax(150px,.7fr) minmax(180px,1fr) minmax(220px,1.25fr);gap:18px;display:grid}.rs-score{flex-direction:column;gap:6px;min-height:0;display:flex;overflow:auto}.rs-verdict{letter-spacing:.08em;text-transform:uppercase;align-self:flex-start;height:32px;padding:0 12px;font-size:14px;font-weight:600}.rs-big{align-items:baseline;gap:4px;margin:2px 0 4px;display:flex}.rs-big b{font:500 clamp(54px, 19vh, 84px)/.9 var(--f-num)}.rs-big small{font:500 20px var(--f-num);color:var(--tx2)}#result.fail .rs-big b{color:var(--red)}.rs-kv{border-top:1px solid var(--line);justify-content:space-between;align-items:baseline;padding:7px 0;display:flex}.rs-kv .num{font-size:18px}.rs-map{border-radius:var(--r2);border:1px solid var(--line2);background:var(--well);min-height:0;position:relative;overflow:hidden}.rs-map .cm{position:absolute;inset:0 0 26px}.rs-legend{font:400 11.5px var(--f-body);color:var(--tx2);pointer-events:none;gap:12px;display:flex;position:absolute;bottom:6px;left:10px}.rs-legend i{border-top:2px solid var(--tx);vertical-align:middle;width:16px;height:0;margin-right:5px;display:inline-block}.rs-legend i.m{border-top:2px dotted var(--teal)}.rs-list{min-height:0;overflow:auto}.rs-list ol{margin:0;padding:0;list-style:none}.rs-list li{border-bottom:1px solid var(--line);font:400 13.5px/1.35 var(--f-body);grid-template-columns:24px 40px 1fr auto;align-items:center;gap:10px;padding:8px 0;display:grid}.rs-list li .n{background:var(--amber);color:#111;width:24px;height:24px;font:600 13px/1 var(--f-num);border-radius:50%;place-items:center;display:grid}.rs-list li.term .n{background:var(--red)}.rs-list li .tm{color:var(--tx2);font-size:15px}.rs-list li .chip{height:24px;font-family:var(--f-num);padding:0 8px;font-size:14px}.rs-list li small{color:var(--tx3);grid-column:3/-1;font-size:11.5px}.rs-none{color:var(--green);font:500 15px var(--f-head);align-items:center;gap:10px;padding:8px 0;display:flex}.rs-src{color:var(--tx3);margin-top:8px;font-size:11.5px;line-height:1.4}.rs-src summary{cursor:pointer;min-height:32px;color:var(--tx2);align-items:center;display:flex}.rs-acts{border-top:1px solid var(--line);padding:10px max(16px, var(--sa-r)) calc(10px + var(--sa-b)) max(16px, var(--sa-l));flex:none;gap:8px;display:flex}.rs-acts .btn.pri{min-width:180px;height:52px;margin-left:auto;font-size:16px}.rs-acts .btn:not(.pri){height:52px}@media (max-width:760px){.rs-body{grid-template-columns:minmax(130px,.6fr) minmax(160px,1fr) minmax(200px,1.2fr);gap:12px}.rs-acts .btn:not(.pri){gap:8px;padding:0 12px}.rs-acts .btn.pri{min-width:140px}}@media (max-height:400px){.rs-body{padding-top:10px}.rs-list li{padding:6px 0}}@media (orientation:portrait){#result:not(.bench){overflow:auto}.rs-body{flex-direction:column;flex:none;display:flex}.rs-map{flex:none;height:40vh}.rs-acts{flex-wrap:wrap}.rs-acts .btn{flex:1}.rs-acts .btn.pri{flex:1 0 100%;order:-1}}#result.bench{z-index:8;background:var(--s1);border-radius:var(--r2);border:1px solid var(--line2);border-top:3px solid var(--teal);width:min(70vw,560px);max-height:82vh;padding:14px 18px;font-size:13.5px;position:absolute;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%)}#result.bench .verdict{font:600 20px var(--f-head)}#result.bench .score{color:var(--tx2);margin:4px 0 8px}#result.bench ul{margin:0 0 10px;padding:0;list-style:none}#result.bench li{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;gap:0 10px;padding:6px 0;display:grid}#result.bench li b{font-family:var(--f-num);font-weight:500}#result.bench .acts{gap:8px;margin-bottom:8px;display:flex}#result.bench .acts button{min-height:var(--tap);flex:1}#result.bench small{color:var(--tx3)}#onboard{z-index:6;background:var(--s1);width:min(420px,62vw);color:var(--tx);border-radius:var(--r2);pointer-events:auto;border:1px solid #3dd6c680;padding:14px 16px;animation:.18s ease-out obin;position:absolute;top:22%;left:50%;transform:translate(-50%)}#onboard[hidden]{display:none}@keyframes obin{0%{opacity:0;margin-top:8px}}#onboard .k{color:var(--teal);align-items:center;gap:8px;margin-bottom:6px;display:flex}#onboard .k .i{width:18px;height:18px}#onboard p{font:400 14px/1.45 var(--f-body);margin:0 0 12px}#onboard .acts{align-items:center;gap:8px;display:flex}#onboard .n{color:var(--tx2);font:500 14px var(--f-num);flex:1}#onboard button{min-height:var(--tap);background:var(--s2);padding:0 16px}#onboard button.primary{background:var(--teal);color:var(--teal-ink);border-color:#0000;font-weight:600}.ob-lit{outline:2px solid var(--teal);outline-offset:4px;z-index:6;border-radius:14px}#onboard.low{top:40%}#brief [hidden]{display:none!important}@media (max-height:420px){.pz-side{gap:4px;padding:10px 12px}#pause .opts{gap:4px}.pz-side>.lbl,.pz-dbg summary{margin-top:0}}.bf-col>*{flex-shrink:0}body.briefing .bf-top,body.briefing .bf-foot{animation:fade var(--d-slow) var(--ease-out) both}body.briefing .bf-map{animation:pop .6s var(--ease-expo) both}body.briefing .bf-col{animation:rise var(--d-slow) var(--ease-expo) both;animation-delay:90ms}body.briefing .bf-col+.bf-col{animation-delay:.16s}body.briefing #brief-go{animation:pop var(--d-slow) var(--ease-spring) .26s both}.bf-prog i{transition:width var(--d-slow) var(--ease-expo)}#pause:not([hidden]){animation:fade var(--d) var(--ease-out) both}#pause:not([hidden]) .pz-main{animation:pop var(--d-slow) var(--ease-spring) both}#pause:not([hidden]) .pz-side{animation:rise var(--d-slow) var(--ease-expo) 60ms both}#pause .opts button{transition:background-color var(--d-fast) var(--ease-out), border-color var(--d-fast) var(--ease-out), transform var(--d-fast) var(--ease-out)}#pause .opts button:active:not(:disabled){transform:scale(.97)}#result:not(.bench):not([hidden]){animation:fade var(--d) var(--ease-out) both}#result:not([hidden]) .rs-score>*{animation:rise var(--d-slow) var(--ease-expo) both}#result:not([hidden]) .rs-score>:nth-child(2){animation-delay:60ms}#result:not([hidden]) .rs-score>:nth-child(n+3){animation-delay:.14s}#result:not([hidden]) .rs-verdict{animation:pop .5s var(--ease-spring) .75s both}#result:not([hidden]) .rs-map{animation:pop .6s var(--ease-expo) .12s both}#result:not([hidden]) .rs-list li,#result:not([hidden]) .rs-none{animation:rise var(--d-slow) var(--ease-expo) both;animation-delay:.22s}#result:not([hidden]) .rs-list li:nth-child(2){animation-delay:.27s}#result:not([hidden]) .rs-list li:nth-child(3){animation-delay:.32s}#result:not([hidden]) .rs-list li:nth-child(4){animation-delay:.37s}#result:not([hidden]) .rs-list li:nth-child(n+5){animation-delay:.42s}#result.pass:not([hidden]) .rs-big b{text-shadow:0 0 32px #3dd6c659}#result:not([hidden]) .rs-acts{animation:fade var(--d-slow) var(--ease-out) .3s both}#onboard{animation:ob-pop var(--d-slow) var(--ease-spring)}@keyframes ob-pop{0%{opacity:0;translate:0 8px;scale:.94}}@view-transition{navigation:auto}
