*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden;background:#0b0f16;color:#fff;font:15px/1.4 system-ui,sans-serif;touch-action:none;user-select:none}
#gl{position:fixed;inset:0;width:100%;height:100%;display:block}.hidden{display:none!important}
#hud{position:fixed;inset:0;pointer-events:none;z-index:10}#hud button{pointer-events:auto}
#scorebox{position:absolute;left:12px;top:10px;background:rgba(10,14,22,.72);border-radius:12px;padding:6px 14px;text-align:center;min-width:86px}
#score{font:900 34px/1 system-ui}#grade{font:900 22px/1.1 system-ui;color:#5cff8a}#scorelbl{font-size:10px;letter-spacing:.14em;opacity:.7}
#topbtns{position:absolute;right:10px;top:10px;display:flex;gap:6px}#topbtns button,.big{background:rgba(10,14,22,.72);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:10px;padding:8px 12px;font:700 12px system-ui}#topbtns button.on{background:rgba(53,182,255,.6)}
#toasts{position:absolute;left:10px;top:100px;width:min(310px,46vw);display:flex;flex-direction:column;gap:6px;align-items:stretch}
.toast{padding:6px 10px;border-radius:10px;font-weight:700;font-size:12.5px;line-height:1.25;opacity:.94;box-shadow:0 4px 18px #0008;animation:tin .18s ease-out;background:rgba(190,30,30,.93)}
.toast.good{background:rgba(25,140,70,.93)}.toast.minor{background:rgba(205,120,20,.95)}.toast .p{float:right;margin-left:10px;background:#0004;border-radius:8px;padding:0 8px}
@keyframes tin{from{transform:translateY(-10px);opacity:0}to{transform:none;opacity:1}}
#dash{position:absolute;left:12px;bottom:92px;display:flex;align-items:flex-end;gap:12px;background:rgba(10,14,22,.66);border-radius:14px;padding:8px 14px}
body:not(.touch) #dash{bottom:14px}
#limit{background:#fff;color:#111;border:3px solid #111;border-radius:6px;width:54px;text-align:center;padding:2px 0}#limit small{display:block;font:800 8px/1 Arial}#limit b{font:900 26px/1.1 Arial}
#spd b{font:900 38px/1 system-ui}#spd small{margin-left:4px;opacity:.7}#road{font-size:12px;opacity:.85;max-width:180px}#ok{font-size:11px;color:#8fe9a4;max-width:120px}
#sig span{display:inline-block;font-size:22px;opacity:.15;margin:0 3px}#sig span.on{opacity:1;color:#6dff6d}
#log{position:absolute;right:10px;top:56px;width:230px;font-size:11px;display:flex;flex-direction:column;gap:3px;opacity:.9}#log div{background:rgba(10,14,22,.6);border-radius:6px;padding:3px 7px}
@media(max-width:760px){#log{display:none}#scorebox{padding:4px 10px}#score{font-size:26px}#toasts{top:84px;left:8px;width:44vw}.toast{font-size:11.5px;padding:5px 8px}}
.toast .d{font-weight:500;font-size:11px;opacity:.92;margin-top:2px}.toast.c .d{display:none}
#hint{position:absolute;left:50%;bottom:150px;transform:translateX(-50%);font-weight:700;text-shadow:0 2px 6px #000;opacity:.9}
#touch{position:fixed;inset:0;pointer-events:none;z-index:12}#touch button{pointer-events:auto;position:absolute;width:min(78px,15vw);height:min(78px,15vw);border-radius:50%;background:rgba(255,255,255,.17);border:2px solid rgba(255,255,255,.4);color:#fff;font:800 13px system-ui;padding:0}
#touch button.on{background:rgba(53,182,255,.55)}
#touch .tl button:nth-child(1){left:14px;bottom:16px}#touch .tl button:nth-child(2){left:calc(14px + min(78px,15vw) + 12px);bottom:16px}
#touch .tr button:nth-child(1){right:calc(14px + min(78px,15vw) + 12px);bottom:16px}#touch .tr button:nth-child(2){right:14px;bottom:16px}
#touch .tc button{width:min(52px,11vw);height:min(52px,11vw);bottom:16px;font-size:20px}#touch #tsl{left:calc(50% - min(52px,11vw) - 6px)}#touch #tsr{left:calc(50% + 6px)}
#touch.tiltmode .tl button{opacity:.25}
.overlay{position:fixed;inset:0;z-index:30;background:rgba(5,8,14,.82);display:flex;align-items:center;justify-content:center;padding:14px;overflow:auto;touch-action:pan-y}
.card{background:#141b27;border:1px solid #2a3750;border-radius:16px;padding:20px;max-width:640px;width:100%}
h1{margin:0 0 6px;font:800 24px system-ui}.sub{opacity:.8;margin:0 0 12px}.rules{padding-left:18px;font-size:13px;opacity:.9}.fine{font-size:11px;opacity:.6}
#scen{display:grid;gap:10px;margin:12px 0}.sc{background:#1d2738;border:1px solid #33425e;border-radius:12px;padding:12px 14px;cursor:pointer;text-align:left;color:#fff;font:inherit}.sc:hover{border-color:#35b6ff}.sc b{display:block;font-size:16px}.sc span{opacity:.75;font-size:12.5px}.sc em{float:right;font-style:normal;font-size:12px;color:#8fe9a4}
.big{display:block;margin:14px auto 0;padding:12px 26px;font-size:15px}
#rbody{font-size:13.5px}#rbody .gr{font:900 64px/1 system-ui}#rbody table{width:100%;border-collapse:collapse;margin-top:10px}#rbody td{padding:5px 6px;border-top:1px solid #2a3750;vertical-align:top}
#mpbar{margin:10px 0 6px}#mmode{display:flex;gap:6px;flex-wrap:wrap}#mmode button,.join button{background:#1d2733;color:#cfe;border:1px solid #345;border-radius:8px;padding:8px 12px;font:600 13px system-ui;cursor:pointer}#mmode button.on{background:#1f6f4a;border-color:#5cff8a;color:#fff}
.join{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.join input{background:#0e141b;color:#fff;border:1px solid #345;border-radius:8px;padding:8px 10px;font:14px system-ui;min-width:0;flex:1}#jcode{text-transform:uppercase;max-width:110px;letter-spacing:2px}
#mpnote{font-size:12px;color:#9cb;margin-top:6px;min-height:14px}
#board{position:absolute;top:62px;right:10px;background:rgba(10,16,22,.72);border-radius:10px;padding:8px 10px;min-width:150px;font:13px system-ui;color:#fff;pointer-events:none}#board.hidden{display:none}#roomtag{font-size:10px;color:#9cb;margin-bottom:4px;letter-spacing:.5px}#plist div{display:flex;justify-content:space-between;gap:12px;padding:1px 0}#plist .me{color:#7ff}#plist b{font-variant-numeric:tabular-nums}
#mpfeed{position:absolute;top:170px;right:10px;font:12px system-ui;color:#fc8;text-align:right;text-shadow:0 1px 3px #000;pointer-events:none}
#touch #thorn{left:calc(50% - min(52px,11vw) / 2);bottom:calc(16px + min(52px,11vw) + 10px);font-size:12px;background:rgba(255,190,60,.25);border-color:rgba(255,200,90,.6)}
body.touch #dash{bottom:112px}
body.touch #dash{top:8px;bottom:auto;left:50%;transform:translateX(-50%);padding:4px 12px;gap:10px;background:rgba(10,14,22,.5)}
body.touch #dash #road{display:none}body.touch #dash #ok{font-size:11px}
body.touch #limit{transform:scale(.8);transform-origin:left bottom}

.bar{height:8px;border-radius:6px;background:#0e141b;overflow:hidden;margin:12px 0}.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#35b6ff,#5cff8a);transition:width .35s}.bar i.ind{width:35%;animation:ind 1.1s ease-in-out infinite alternate}@keyframes ind{from{margin-left:0}to{margin-left:65%}}
.steps{list-style:none;padding:0;margin:8px 0;font-size:14px}.steps li{padding:4px 0 4px 26px;position:relative;opacity:.45}.steps li.on{opacity:1;font-weight:700}.steps li.done{opacity:.9;color:#7fe3a3}.steps li:before{content:'';position:absolute;left:4px;top:9px;width:10px;height:10px;border-radius:50%;border:2px solid #4a5d80}.steps li.on:before{border-color:#35b6ff;animation:pls 1s infinite}.steps li.done:before{background:#5cff8a;border-color:#5cff8a}@keyframes pls{50%{box-shadow:0 0 0 5px rgba(53,182,255,.25)}}
#boot{background:#070b12;z-index:60}#mapbuild{z-index:55;background:rgba(5,8,14,.94)}#prep{z-index:50;background:rgba(5,8,14,.9)}.stage{font-weight:700;margin:6px 0}.err{color:#ff8a7a;font-size:13px;min-height:16px}
#area{margin:14px 0;padding:14px;border:1px solid #2a3750;border-radius:12px;background:#101826}#area h2{margin:0 0 4px;font:800 17px system-ui}#area p{margin:0 0 10px;font-size:13px;opacity:.8}.arow{display:flex;gap:6px;margin:6px 0;flex-wrap:wrap}.arow input{flex:1;min-width:0;background:#0e141b;color:#fff;border:1px solid #345;border-radius:8px;padding:10px;font:14px system-ui}.arow button{background:#1f6f4a;color:#fff;border:0;border-radius:8px;padding:10px 14px;font:700 14px system-ui;cursor:pointer}.arow button.alt{background:#1d2738;border:1px solid #345}#ares button,#arecent button{display:block;width:100%;text-align:left;background:#1d2738;border:1px solid #33425e;color:#fff;border-radius:8px;padding:9px 12px;margin:4px 0;font:14px system-ui;cursor:pointer}#anote{font-size:12px;color:#ffcf6a;margin-top:6px;min-height:14px}#arecent small{opacity:.6;display:block;margin-top:8px}
#osmcredit{position:absolute;left:8px;bottom:4px;font:10px system-ui;color:rgba(255,255,255,.7);pointer-events:none;text-shadow:0 1px 2px #000}

#near{position:absolute;left:50%;top:64px;transform:translateX(-50%);max-width:86vw;padding:3px 12px;border-radius:12px;background:rgba(0,0,0,.45);font:600 13px system-ui;color:#fff;text-shadow:0 1px 3px #000;pointer-events:none;opacity:0;transition:opacity .3s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Driving Simulator visual refresh */
.card{background:linear-gradient(145deg,#172635,#0c1621);border-color:#375369;box-shadow:0 24px 80px #0008}.sc{background:linear-gradient(120deg,#20364a,#152332);border-color:#385970}.sc:hover,.sc:focus-visible{border-color:#73d6ef;box-shadow:0 0 0 2px #73d6ef33}.sub,.fine{opacity:1;color:#bdcedd}button:focus-visible,input:focus-visible{outline:3px solid #79e0f5;outline-offset:3px}#topbtns button{min-height:40px;font-size:13px}#scorebox,#dash{border:1px solid #ffffff30;box-shadow:0 6px 24px #0004}#road{font-size:14px}#bquality{text-transform:capitalize}#boot{background:radial-gradient(ellipse at 50% 20%,#25455b,#080e17 75%)}
@media(max-width:600px){#topbtns{top:76px;right:8px;gap:4px}#topbtns button{padding:7px 8px;font-size:12px}#toasts{top:130px}.card{padding:18px}.sc span,.rules{font-size:14px}}

#driving-tools{position:absolute;right:12px;bottom:110px;display:flex;gap:5px;flex-wrap:wrap;max-width:340px;justify-content:flex-end}#driving-tools button{pointer-events:auto;min-height:42px;background:#122536e8;color:white;border:1px solid #7895aa;border-radius:8px;padding:7px;font-weight:650}#mirror-label{position:absolute;top:65px;left:50%;transform:translateX(-50%);font-size:11px;letter-spacing:.14em;color:#fff;text-shadow:0 1px 3px #000}.incident-map{width:100%;border:1px solid #496477;border-radius:8px}.drive-glare #gl{filter:brightness(1.12)}.drive-glare #hud:before{content:'';position:absolute;right:20%;top:0;width:220px;height:220px;background:radial-gradient(ellipse,#fff5ba70,transparent 65%);pointer-events:none}#results .card{max-height:90dvh;overflow:auto}#results .fine{font-size:13px}@media(max-width:600px){#driving-tools{bottom:155px;right:8px;max-width:230px}#driving-tools button{font-size:12px;min-height:38px}#mirror-label{top:115px}}
