@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;700;800&display=swap');
:root{--purple:#7560dc;--ink:#30333c}*{box-sizing:border-box}body{margin:0;background:#f8f9fc;color:var(--ink);font:14px 'DM Sans',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #aa96ef;outline-offset:3px}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.topbar{height:65px;background:white;border-bottom:1px solid #eceaf1;display:flex;align-items:center;justify-content:space-between;padding:0 max(22px,calc((100vw - 1000px)/2))}.brand{display:flex;align-items:center;text-decoration:none;color:var(--ink);font:800 25px Manrope,sans-serif;letter-spacing:-1px}.brandbang{color:var(--purple)}.brandmark{position:relative;width:30px;height:30px;background:var(--purple);color:white;display:grid;place-items:center;margin-right:9px;border-radius:9px;font-size:26px}.brandmark span{position:absolute;right:4px;top:-4px;font-size:13px}.headright{display:flex;align-items:center;gap:13px}.scorepill{font-size:11px;color:#a194b8;background:#f1eefb;border-radius:20px;padding:8px 12px}.scorepill b{font-size:15px;color:#7c65c6;margin-right:4px}.iconbutton{border:0;width:29px;height:29px;border-radius:50%;background:#f0edf5;color:#9485ac;font-size:16px}main{max-width:1000px;padding:20px 22px 14px;margin:auto}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px}.viewbar>div,.difficulty{display:flex;gap:3px;padding:3px;background:#eeebf4;border-radius:9px}.toolbar button{border:0;background:none;border-radius:6px;color:#9b91aa;font-size:11px;padding:9px 13px}.toolbar button[aria-pressed=true]{color:#7961c9;background:white;box-shadow:0 2px 4px #34304b0c}.routeprogress{display:flex;align-items:center;gap:13px;margin:12px 2px;color:#aca3b6;font-size:10px}.routeprogress>span{min-width:28px}.progress{height:3px;flex:1;border-radius:3px;background:#e9e4f0;overflow:hidden}.progress>div{height:100%;background:#b09ae6;transition:width .4s}.routeprogress .iconbutton{width:22px;height:22px;background:none;font-size:19px}.playcard{border:1px solid #e2e0e8;background:white;border-radius:16px;overflow:hidden}.scene{position:relative;background:#cee0c4;overflow:hidden;isolation:isolate}.navigation{position:absolute;left:50%;top:18px;transform:translateX(-50%);z-index:2;pointer-events:none}.direction{display:grid;place-items:center;width:57px;height:62px;background:#fffffff0;border:1px solid #ffffff80;border-radius:17px;color:var(--purple);font-size:45px;box-shadow:0 5px 20px #55576e0d;line-height:1}#drivingView{height:clamp(390px,65vh,610px);overflow:hidden}#drivingCanvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}#drivingCanvas:active{cursor:grabbing}.scene.driving #road{display:none}.scene:not(.driving) #drivingView{display:none}#road{width:100%;display:block;height:clamp(390px,65vh,610px);touch-action:none}svg [hidden]{display:none}.mirror{position:absolute;bottom:16px;width:18%;max-width:155px;min-width:78px;padding:5px;border:2px solid #686171;background:#393748;box-shadow:0 4px 14px #28303c30;pointer-events:none}.leftmirror{left:15px;border-radius:20px 12px 20px 7px;transform:rotate(-3deg)}.rightmirror{right:15px;border-radius:12px 20px 7px 20px;transform:rotate(3deg)}.mirror span{display:block;text-align:center;font-size:7px;letter-spacing:1.4px;color:#d7d1e0;margin-bottom:3px}.mirror canvas{display:block;width:100%;height:67px;border-radius:8px}#roadSigns{position:absolute;top:22px;left:20px;z-index:2;display:flex;gap:8px;pointer-events:none}#roadSigns svg{height:42px;width:42px;filter:drop-shadow(0 3px 3px #2d344820)}#timer{position:absolute;top:20px;right:20px;z-index:2;background:#ffffffed;border:1px solid #ffffff;border-radius:50%;height:48px;width:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#8b75c8}#timer span{font-size:19px;font-weight:700;line-height:1}#timer small{font-size:8px;margin-top:3px;opacity:.7}#timer.urgent{color:#cb746b;background:#fff2ec}#timer.expired{color:#b36c66}.decision{padding:0 18px 8px}#swipeLane{display:flex;align-items:center;justify-content:space-between;height:61px;touch-action:none;user-select:none;-webkit-user-select:none}#swipeLane button{background:none;border:0;font-size:12px;color:#80758f;min-height:44px;min-width:90px;padding:0;text-align:left}#swipeLane button span{font-size:23px;vertical-align:middle;margin:0 9px 0 0;color:#a497bb}#swipeLane #go{text-align:right;color:#8871cd}#swipeLane #go span{margin:0 0 0 9px;color:#8b71d2}.swipegrip{font-size:21px;color:#c6bed4;letter-spacing:4px}.swipegrip span{font-size:11px;letter-spacing:3px;vertical-align:middle;color:#d0c9db}.feedback{min-height:19px;text-align:center;line-height:1.6;color:#a69bb4;font-size:11px;padding-bottom:2px}.feedback.success{color:#6b9b7c}.feedback.error{color:#bc7168}.gesturehint{font-size:9px;text-align:center;color:#aba0b8;margin:12px 0;line-height:1.5}.gesturehint span{margin:0 6px}#gestureCue{position:absolute;inset:0;z-index:3;pointer-events:none;display:flex;align-items:center;justify-content:center;font-size:35px;font-weight:600;color:white;background:none;opacity:0;transition:opacity .15s}#gestureCue.wait{background:#8b7bad26}#gestureCue.go{background:#7560dc29}#gestureCue.visible{opacity:1}#retry{position:absolute;left:50%;top:55%;transform:translate(-50%,-50%);border:1px solid #ede5fb;background:#fffcff;color:#8165ca;border-radius:12px;padding:14px 20px;z-index:4;font-size:13px;box-shadow:0 8px 40px #3d334f30}.completed .direction{color:#82a88a}#explanation{text-align:center;font-size:11px;color:#93849f;margin:4px 0}#explanation summary{cursor:pointer;color:#9785b5}#explanation p{line-height:1.7;margin:8px auto;max-width:550px}dialog{border:1px solid #e7e2f1;border-radius:20px;padding:30px;max-width:450px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 30px 120px #29233a40}dialog::backdrop{background:#26223470;backdrop-filter:blur(4px)}dialog h2{font:700 22px Manrope,sans-serif;margin:12px 0}dialog p{font-size:12px;line-height:1.8;color:#82798e}dialog a{color:var(--purple);font-size:12px}#closeHelp{position:absolute;right:15px;top:11px;border:0;background:none;font-size:25px;color:#9d92ac}@media(max-width:600px){.topbar{height:55px;padding:0 18px}.brand{font-size:23px}main{padding:12px 12px 6px}.toolbar button{font-size:10px;padding:8px 10px}.toolbar{gap:8px}.routeprogress{margin:9px 4px}.scene #drivingView,.scene #road{height:max(335px,calc(100svh - 250px));max-height:680px}.direction{width:48px;height:53px;font-size:38px;border-radius:14px}.navigation{top:15px}#roadSigns{top:20px;left:15px}#roadSigns svg{width:34px;height:34px}#timer{top:16px;right:15px;width:43px;height:43px}#timer span{font-size:17px}.mirror{bottom:15px;width:25%;min-width:75px}.leftmirror{left:11px}.rightmirror{right:11px}.mirror canvas{height:57px}.decision{padding:0 14px 8px}#swipeLane{height:57px}.gesturehint{margin:9px 0;font-size:8px}.feedback{font-size:10px}.playcard{border-radius:13px}}@media(prefers-reduced-motion:reduce){*,*::before{transition-duration:.01ms!important;animation-duration:.01ms!important}}

#road{display:none!important}#overheadCanvas{display:block;width:100%;height:clamp(390px,65vh,610px);touch-action:none}.scene.driving #overheadCanvas{display:none}@media(max-width:600px){.scene #overheadCanvas{height:max(335px,calc(100svh - 250px));max-height:680px}}
.toolbar{flex-wrap:wrap}.difficulty{margin-left:auto}.toolbar button{padding:9px 11px}#incident{position:absolute;z-index:4;top:30%;left:50%;transform:translateX(-50%);width:85%;padding:17px;background:#ffffffee;border-radius:14px;text-align:center;pointer-events:none;border:1px solid #ead8d4}#incident b{display:block;font-size:23px;color:#b7544b}#incident span{display:block;font-size:14px;line-height:1.5;margin-top:5px;color:#6c5354}.crashed .scene{box-shadow:inset 0 0 50px #ce514b35}.crashed #retry{top:64%}.feedback.error{font-size:12px}#explanation[open]{font-size:14px;color:#62596d}#explanation p{font-size:14px;line-height:1.5}.learning .scorepill{display:none}@media(max-width:600px){.toolbar button{padding:8px 8px}.toolbar{gap:7px}.difficulty{margin-left:0}#roadSigns{gap:3px}#roadSigns svg{height:30px;width:30px}#incident b{font-size:20px}}
