:root{--ink:#eef2f4;--mute:#9aa8b2;--glass:#090e13b8;--line:#ffffff1f;--amber:#ffc23d;--red:#ff3346;--blue:#3a7bff;--green:#38d98a;--d:"Saira Condensed", "Arial Narrow", Arial, sans-serif;--t:"Saira", system-ui, Arial, sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--t);-webkit-font-smoothing:antialiased;background:#0b0f14;margin:0;overflow:hidden}canvas#c{width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;-webkit-user-select:none;user-select:none;position:fixed;inset:0}#ui button,#ui a,#ui input,#ui select,#ui label{pointer-events:auto}.hidden{display:none!important}#hud{opacity:0;transition:opacity .5s;position:absolute;inset:0}#hud.on{opacity:1}.panel{background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:10px}#mapwrap{width:clamp(150px,16vw,216px);position:absolute;bottom:22px;left:22px}#map{aspect-ratio:1;background:#10161c;border:2px solid #ffffff38;border-radius:50%;width:100%;display:block;box-shadow:0 8px 28px #00000080}#street{text-align:center;font:600 15px var(--d);letter-spacing:.05em;text-shadow:0 1px 4px #000;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;margin-top:6px;overflow:hidden}#speed{aspect-ratio:1;width:clamp(170px,17vw,232px);position:absolute;bottom:18px;right:22px}#speed svg{filter:drop-shadow(0 4px 14px #0009);width:100%;height:100%;overflow:visible}#speed .num{text-align:center;font:800 clamp(46px, 5vw, 66px)/1 var(--d);font-variant-numeric:tabular-nums;text-shadow:0 2px 8px #000;position:absolute;top:33%;left:0;right:0}#speed .unit{text-align:center;font:600 13px var(--d);letter-spacing:.24em;color:var(--mute);position:absolute;top:60%;left:0;right:0}#speed .gear{text-align:center;font:800 19px var(--d);color:var(--amber);position:absolute;top:70%;left:0;right:0}#status{align-items:center;gap:6px;width:clamp(170px,17vw,232px);display:flex;position:absolute;bottom:calc(clamp(170px,17vw,232px) + 24px);right:22px}.pill{text-align:center;font:700 12.5px var(--d);letter-spacing:.1em;background:var(--glass);border:1px solid var(--line);color:var(--mute);border-radius:6px;flex:1;padding:5px 0 4px;transition:all .15s}.pill.on.sir{color:#fff;background:var(--red);box-shadow:0 0 14px var(--red);border-color:#0000}.pill.on.bal{color:#fff;background:var(--blue);box-shadow:0 0 14px var(--blue);border-color:#0000}#health{background:#ffffff26;border-radius:3px;width:clamp(170px,17vw,232px);height:5px;position:absolute;bottom:8px;right:22px;overflow:hidden}#health i{background:var(--green);width:100%;height:100%;transition:width .25s,background .25s;display:block}#obj{border-left:3px solid var(--amber);border-radius:4px 10px 10px 4px;max-width:min(380px,44vw);padding:11px 16px 12px;position:absolute;top:20px;right:22px}#obj .k{font:700 11.5px var(--d);letter-spacing:.24em;color:var(--amber)}#obj .t{font:700 21px/1.12 var(--d);margin-top:2px}#obj .s{color:var(--mute);margin-top:3px;font-size:12.5px}#obj .dist{font:800 17px var(--d);color:var(--amber);font-variant-numeric:tabular-nums;margin-top:5px}#radio{opacity:0;border-radius:10px;width:min(430px,46vw);padding:11px 15px 13px;transition:all .3s;position:absolute;top:20px;left:22px;transform:translate(-14px)}#radio.on{opacity:1;transform:none}#radio .h{font:800 12.5px var(--d);letter-spacing:.24em;color:var(--green);align-items:center;gap:8px;display:flex}#radio .h b{background:var(--green);border-radius:50%;width:8px;height:8px;animation:1s infinite blink}#radio .m{min-height:1.3em;margin-top:5px;font-size:15px;line-height:1.34}@keyframes blink{50%{opacity:.25}}#chase{text-align:center;width:min(340px,38vw);position:absolute;top:18px;left:50%;transform:translate(-50%)}#chase .l{font:800 15px var(--d);letter-spacing:.3em;color:var(--red);text-shadow:0 0 10px #ff3246b3}#chase .bars{font:600 11px var(--d);letter-spacing:.12em;color:var(--mute);grid-template-columns:1fr 1fr;gap:8px;margin-top:5px;display:grid}.bar{background:#ffffff26;border-radius:3px;height:6px;margin-top:2px;overflow:hidden}.bar i{background:var(--red);height:100%;transition:width .2s;display:block}.bar.c i{background:var(--amber)}#sub{text-align:center;max-width:62vw;font:600 19px/1.25 var(--t);text-shadow:0 2px 6px #000,0 0 2px #000;opacity:0;transition:opacity .2s;position:absolute;bottom:13%;left:50%;transform:translate(-50%)}#sub.on{opacity:1}#sub small{font:700 12px var(--d);letter-spacing:.2em;color:var(--amber);display:block}#prompt{font:700 16px var(--d);letter-spacing:.05em;opacity:0;white-space:nowrap;padding:7px 15px;transition:opacity .15s;position:absolute;bottom:6.5%;left:50%;transform:translate(-50%)}#prompt.on{opacity:1}kbd{background:var(--amber);color:#111;font:800 14px var(--d);border-radius:4px;margin:0 2px;padding:1px 7px;display:inline-block}#marker{text-align:center;font:800 14px var(--d);text-shadow:0 1px 4px #000;will-change:transform;position:absolute;top:0;left:0;transform:translate(-50%,-50%)}#marker svg{filter:drop-shadow(0 0 6px #000c);width:26px;height:26px;margin:0 auto 2px;display:block}#flash{opacity:0;background:radial-gradient(#0000 58%,#ff1e288c);transition:opacity .12s;position:absolute;inset:0}#strobe{opacity:0;box-shadow:inset 90px 0 110px -70px var(--red), inset -90px 0 110px -70px var(--blue);position:absolute;inset:0}#strobe.on{animation:.5s steps(2,end) infinite strobe}@keyframes strobe{0%{opacity:.55}to{opacity:.15}}.screen{pointer-events:none;display:flex;position:absolute;inset:0}#menu{background:linear-gradient(90deg,#060a0ee6,#060a0e59 48%,#060a0e00 72%);flex-direction:column;justify-content:space-between;padding:clamp(18px,4vh,44px) clamp(20px,5vw,72px) 14px;overflow-y:auto}#menu .studio{font:700 13px var(--d);letter-spacing:.34em;color:var(--mute)}#menu h1{font:900 clamp(58px, 9.5vw, 126px)/.86 var(--d);letter-spacing:-.012em;margin:6px 0 0}#menu h1 span{color:var(--amber);display:block}#menu .tag{color:#c3ced5;max-width:460px;margin-top:10px;font-size:15px;line-height:1.4}.pick{gap:12px;margin-top:clamp(14px,3vh,28px);display:flex}.pick button{text-align:left;color:var(--ink);border:1px solid var(--line);cursor:pointer;font-family:var(--t);background:#0c1218b8;border-radius:10px;flex:0 216px;padding:12px 14px;transition:all .15s}.pick button:hover{border-color:#fff6}.pick button.sel{border-color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber)}.pick b{font:800 21px var(--d);display:block}.pick small{color:var(--mute);margin-top:2px;font-size:12.5px;line-height:1.3;display:block}.stats{font:600 11px var(--d);letter-spacing:.1em;color:var(--mute);grid-template-columns:auto 1fr;align-items:center;gap:2px 8px;margin-top:8px;display:grid}.stats i{background:var(--amber);border-radius:2px;height:4px;display:block}.cta{flex-wrap:wrap;gap:10px;margin-top:clamp(14px,3vh,24px);display:flex}.btn{font:800 18px var(--d);letter-spacing:.08em;color:var(--ink);border:1px solid var(--line);cursor:pointer;background:#ffffff14;border-radius:8px;padding:12px 26px;transition:all .15s}.btn:hover{background:#ffffff2b}.btn.go{background:var(--amber);color:#111;border-color:#0000;padding-inline:46px}.btn.go:hover{background:#ffd370}.btn:focus-visible,.pick button:focus-visible,a:focus-visible{outline-offset:2px;outline:2px solid #fff}.keys{color:#b7c3cb;flex-wrap:wrap;gap:4px 14px;max-width:620px;margin-top:14px;font-size:12.5px;display:flex}.keys kbd{padding:0 5px;font-size:12px}.record{font:600 13px var(--d);letter-spacing:.1em;color:var(--mute);margin-top:10px}.credit{color:#b7c3cb;text-underline-offset:2px;font-size:12px;text-decoration:underline}.credit:hover{color:#fff}.foot{color:var(--mute);flex-wrap:wrap;align-items:baseline;gap:4px 16px;margin-top:14px;font-size:11.5px;display:flex}.modal{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto;background:#06090d9e;justify-content:center;align-items:center;padding:16px}.box{border:1px solid var(--line);background:#0c1117f2;border-radius:14px;width:min(520px,100%);max-height:92vh;padding:22px 26px;overflow:auto}.box h2{font:800 30px var(--d);letter-spacing:.02em;margin:0 0 10px}.box .col{flex-direction:column;gap:8px;display:flex}.box .foot{justify-content:center}.opt{border-top:1px solid #ffffff12;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:7px 0;font-size:14px;display:grid}.opt select,.opt input[type=range]{accent-color:var(--amber)}.opt select{color:var(--ink);border:1px solid var(--line);font:500 14px var(--t);background:#1a222a;border-radius:6px;padding:5px 8px}.opt input[type=checkbox]{width:18px;height:18px;accent-color:var(--amber)}#result .box{text-align:center;width:min(460px,100%)}#result .box .st{font:700 13px var(--d);letter-spacing:.3em;color:var(--mute)}#result h2{margin:4px 0 2px;font-size:40px}#result h2.completa{color:var(--green)}#result h2.parcial{color:var(--amber)}#result h2.fallida{color:var(--red)}#result .why{color:#c3ced5}#result .grid{text-align:left;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0 4px;display:grid}#result .grid div{color:var(--mute);background:#ffffff0d;border-radius:8px;padding:8px 12px;font-size:12.5px}#result .grid b{font:800 22px var(--d);color:var(--ink);display:block}#result{-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none;background:0 0;align-items:flex-start;padding-top:9vh}#result .box{background:#0c1117d6;padding:14px 22px}#result h2{font-size:30px}#load{pointer-events:auto;text-align:center;background:#0b0f14;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:20px;transition:opacity .5s}#load h1{font:900 clamp(46px, 8vw, 84px)/.9 var(--d);margin:0}#load h1 span{color:var(--amber)}#load .prog{background:#ffffff24;border-radius:2px;width:min(320px,74vw);height:4px;overflow:hidden}#load .prog i{background:var(--amber);width:0;height:100%;transition:width .2s;display:block}#load .msg{font:600 13px var(--d);letter-spacing:.2em;color:var(--mute);text-transform:uppercase}#fps{color:#cde;opacity:.75;text-shadow:0 1px 2px #000;font:500 11px ui-monospace,monospace;position:absolute;bottom:2px;left:50%;transform:translate(-50%)}@media (max-width:760px){#obj{padding:7px 10px;top:8px;right:8px}#obj .t{font-size:16px}#radio{width:50vw;padding:7px 10px;top:8px;left:8px}#radio .m{font-size:12.5px}#speed,#status,#health{right:8px}#sub{max-width:86vw;font-size:15px}.pick{flex-direction:column}.pick button{flex-basis:auto;width:100%}#menu{background:#060a0eb8}.keys{display:none}}#touch{display:none;position:absolute;inset:0}#touch.on{display:block}#rotate{display:none}.tb{color:#fff;font:800 15px var(--d);letter-spacing:.05em;touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0c121880;border:1.5px solid #ffffff57;place-items:center;padding:0;display:grid;position:absolute}.tb:active{background:#ffffff4d}.tb.big{border-radius:50%;width:92px;height:92px;font-size:24px}.tb.mid{border-radius:50%;width:70px;height:70px;font-size:13px}.tb.go{background:#38d98a52;border-color:#78f0b4b3}#tl{left:calc(14px + env(safe-area-inset-left));bottom:16px}#tr{left:calc(116px + env(safe-area-inset-left));bottom:16px}#tg{right:calc(14px + env(safe-area-inset-right));bottom:16px}#tbk{right:calc(116px + env(safe-area-inset-right));bottom:12px}#thb{right:calc(30px + env(safe-area-inset-right));bottom:120px}#tmini{gap:6px;display:flex;position:absolute;top:8px;left:50%;transform:translate(-50%)}.tb.sm{border-radius:9px;min-width:62px;height:38px;padding:0 9px;font-size:12px;position:static}#tsir.lit{background:var(--red);box-shadow:0 0 12px var(--red);border-color:#0000}#tbal.lit{background:var(--blue);box-shadow:0 0 12px var(--blue);border-color:#0000}.tb.act{color:#111;background:var(--amber);border:0;border-radius:12px;min-width:190px;max-width:46vw;height:54px;padding:0 18px;font-size:16px;animation:1s ease-in-out infinite actpulse;bottom:104px;left:50%;transform:translate(-50%);box-shadow:0 4px 18px #ffc23d8c}@keyframes actpulse{50%{box-shadow:0 4px 30px #ffc23df2}}body.touch #status,body.touch #fps{display:none}body.touch #mapwrap{width:104px;left:calc(14px + env(safe-area-inset-left));top:auto;bottom:118px}body.touch #street{display:none}body.touch #speed{width:96px;bottom:2px;left:50%;right:auto;transform:translate(-50%)}body.touch #speed .num{font-size:30px;top:30%}body.touch #speed .unit{font-size:9px;top:62%}body.touch #speed .gear{display:none}body.touch #health{width:96px;height:3px;bottom:2px;left:50%;right:auto;transform:translate(-50%)}body.touch #radio{top:54px;left:calc(10px + env(safe-area-inset-left));width:min(310px,38vw);padding:6px 10px}body.touch #radio .m{font-size:12.5px;line-height:1.25}body.touch #radio .h{font-size:10px}body.touch #obj{top:54px;right:calc(10px + env(safe-area-inset-right));max-width:30vw;padding:5px 9px 6px}body.touch #obj .t{font-size:14px}body.touch #obj .k{display:none}body.touch #obj .s{font-size:10.5px}body.touch #obj .dist{margin-top:2px;font-size:13px}body.touch #chase{width:26vw;top:50px}body.touch #chase .l{font-size:11px}body.touch #chase .bars{font-size:8px}body.touch #sub{max-width:46vw;font-size:14px;bottom:128px}body.touch .keys{display:none}body.touch #result{padding-top:46px}body.touch #result .box{width:min(360px,60vw);padding:8px 14px}body.touch #result h2{font-size:20px}body.touch #result .grid{display:none}@media (pointer:coarse) and (max-height:520px){#menu{background:linear-gradient(90deg,#060a0eeb,#060a0e80 60%,#0000);padding:10px 18px 8px}#menu h1{gap:10px;font-size:40px;display:flex}#menu .tag,#menu .studio,.stats{display:none}.pick{gap:8px;margin-top:6px}.pick button{flex:0 168px;padding:6px 10px}.pick b{font-size:15px}.pick small{font-size:10.5px}.cta{gap:6px;margin-top:8px}.btn{padding:7px 14px;font-size:14px}.btn.go{padding-inline:28px}.foot{margin-top:6px;font-size:9.5px}.credit{font-size:10px}.record{display:none}.box{max-height:96vh;padding:10px 16px}.box h2{margin-bottom:4px;font-size:20px}.opt{padding:3px 0;font-size:12.5px}}@media (pointer:coarse) and (orientation:portrait){#rotate{z-index:50;text-align:center;pointer-events:auto;background:#0b0f14;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex;position:fixed;inset:0}#rotate b{font:800 26px var(--d);letter-spacing:.04em}#rotate span{color:var(--mute);font-size:14px}}
