html,body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#000;height:100%;margin:0;overflow:hidden}canvas{touch-action:none;display:block}#hud,#menus,#coach{padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);pointer-events:none;position:fixed;inset:0}.hidden{display:none!important}@font-face{font-family:ZhMono;src:local(Menlo),local(Consolas),local("monospace")}.vignette{pointer-events:none;background:radial-gradient(#0000 55%,#0000008c);transition:box-shadow .25s ease-out;position:absolute;inset:0}.vignette.danger{animation:.8s ease-in-out infinite danger-pulse}@keyframes danger-pulse{0%,to{box-shadow:inset 0 0 120px #a112128c}50%{box-shadow:inset 0 0 190px #dc1e1ed9}}.danger-edge{pointer-events:none;opacity:0;width:clamp(16px,3.5vw,30px);transition:opacity .25s ease-out;position:absolute;top:0;bottom:0}.danger-edge.left{background:linear-gradient(90deg,#dc1e1ecc,#dc1e1e00);left:0}.danger-edge.right{background:linear-gradient(270deg,#dc1e1ecc,#dc1e1e00);right:0}.danger-edge.active{opacity:1}.hud-topleft{top:calc(10px + env(safe-area-inset-top,0px));left:calc(14px + env(safe-area-inset-left,0px));position:absolute}.hud-dist{letter-spacing:2px;color:#e8dcc8;text-shadow:0 0 6px #000000e6,0 1px #000;font-family:ZhMono,monospace;font-size:clamp(20px,4.5vw,30px);font-weight:700}.hud-topcenter{top:calc(8px + env(safe-area-inset-top,0px));flex-direction:column;align-items:center;display:flex;position:absolute;left:50%;transform:translate(-50%)}.hud-score{color:#ffd166;text-shadow:0 0 12px #ff8c2873,0 2px #000;font-family:ZhMono,monospace;font-size:clamp(34px,8vw,54px);font-weight:800;line-height:1}.hud-best{letter-spacing:3px;color:#e8dcc8bf;text-shadow:0 1px #000;margin-top:2px;font-family:ZhMono,monospace;font-size:13px}.tilt-gauge{box-sizing:border-box;background:#00000059;border:2px solid #e8dcc859;border-radius:8px;grid-template-columns:1fr auto 1fr;align-items:center;gap:5px;width:120px;height:64px;margin-top:6px;padding:0 7px;transition:border-color .15s linear,box-shadow .15s linear;display:grid;overflow:hidden}.tilt-flank{flex-direction:column-reverse;justify-content:center;align-self:stretch;gap:2px;min-width:0;display:flex}.wpip{background:#ffffff1f;border-radius:2px;flex:0 12px;min-height:6px;box-shadow:inset 0 0 3px #00000080}.wpip.full{background:linear-gradient(#ffe9a8,#d9a441);box-shadow:0 0 4px #ffd1668c}.tilt-gauge.critical .wpip.full{background:linear-gradient(#ff6a5a,#c81e1e);box-shadow:0 0 5px #dc2828b3}.tilt-gauge.dimmed{opacity:.35}.tilt-gauge.warn{border-color:#ffd166e6;box-shadow:0 0 12px #ffb42859,inset 0 0 10px #ffb4282e}.tilt-gauge.critical{border-color:#dc1e1e;animation:.5s steps(2,end) infinite gauge-flash}@keyframes gauge-flash{50%{border-color:#f54;box-shadow:0 0 14px #dc1e1ecc}}.tilt-car{clip-path:polygon(12% 100%,20% 42%,36% 12%,64% 12%,80% 42%,88% 100%);will-change:transform;background:linear-gradient(#7a8494,#3d4652);width:60px;height:26px}.hud-topright{top:calc(10px + env(safe-area-inset-top,0px));right:calc(14px + env(safe-area-inset-right,0px));flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute}#btn-pause{pointer-events:auto;color:#e8dcc8;visibility:hidden;background:#00000073;border:2px solid #e8dcc880;border-radius:8px;width:44px;height:44px;font-size:19px;line-height:1}#btn-pause.visible{visibility:visible}.hud-levelchip{letter-spacing:2px;color:#ffd166;background:#00000073;border:1px solid #ffd1668c;border-radius:999px;align-items:baseline;gap:2px;padding:3px 10px;font-family:ZhMono,monospace;font-size:13px;display:inline-flex}.level-progress{background:#ffffff24;border-radius:3px;width:96px;height:6px;overflow:hidden}.level-progress-fill{background:linear-gradient(90deg,#b8860b,#ffd166);width:0%;height:100%;transition:width .2s linear}.ammo-left-wrap,.ammo-right-wrap{bottom:calc(16px + env(safe-area-inset-bottom,0px));display:flex;position:absolute}.ammo-left-wrap{left:calc(16px + env(safe-area-inset-left,0px))}.ammo-right-wrap{right:calc(16px + env(safe-area-inset-right,0px))}.ammo-row{background:#00000052;border-radius:8px;gap:5px;padding:6px;display:flex;position:relative}.ammo-right{flex-direction:row-reverse}.pip{background:linear-gradient(#ffe9a8,#d9a441);border-radius:2px;width:9px;height:22px;box-shadow:0 0 4px #ffd16680}.pip.empty{box-shadow:none;background:#ffffff1f}.reload-arc{background:conic-gradient(#ffd166 var(--sweep,0deg), #ffffff26 0deg);border-radius:50%;width:26px;height:26px;display:none;position:absolute;top:-9px;right:-9px;-webkit-mask:radial-gradient(circle,#0000 58%,#000 60%);mask:radial-gradient(circle,#0000 58%,#000 60%)}.reload-arc.visible{animation:.9s linear infinite arc-spin;display:block}@keyframes arc-spin{to{transform:rotate(-360deg)}}.streak-badge{right:calc(18px + env(safe-area-inset-right,0px));color:#ff8c40;text-shadow:0 0 14px #ff5a1eb3,0 2px #000;opacity:0;font-family:ZhMono,monospace;font-size:clamp(28px,6vw,42px);font-weight:800;position:absolute;top:50%;transform:translateY(-50%)}.streak-badge.visible{opacity:1}.streak-badge.bump{animation:.3s cubic-bezier(.2,2.4,.4,1) streak-pop}@keyframes streak-pop{0%{transform:translateY(-50%)scale(2)}to{transform:translateY(-50%)scale(1)}}.score-popup{transform:translate(var(--px,0px), var(--py,0px)) translate(-50%, -100%);color:#ffd166;text-shadow:0 0 12px #ff7828cc,0 2px #000;white-space:nowrap;pointer-events:none;opacity:0;will-change:transform, opacity;font-family:ZhMono,monospace;font-size:clamp(16px,3.6vw,26px);font-weight:800;position:absolute;top:0;left:0}.score-popup.live{animation:popup-rise var(--popup-life,1s) ease-out forwards}@keyframes popup-rise{0%{opacity:0;transform:translate(var(--px,0px), var(--py,0px)) translate(-50%, -100%) translateY(12px) scale(.9)}14%{opacity:1}70%{opacity:1}to{opacity:0;transform:translate(var(--px,0px), var(--py,0px)) translate(-50%, -100%) translateY(-46px) scale(1.05)}}.toasts{z-index:20;flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;top:24%;left:50%;transform:translate(-50%)}.toast{letter-spacing:6px;color:#ffd166;text-shadow:0 0 18px #ff9628cc,0 2px #000;text-align:center;font-family:ZhMono,monospace;font-size:clamp(26px,6vw,44px);font-weight:800;animation:.4s cubic-bezier(.2,1.6,.4,1) toast-in,.35s ease-in .85s forwards toast-out}.toast-sub{letter-spacing:4px;color:#ffe9a8;text-shadow:0 0 10px #ff962899,0 1px #000;margin-top:6px;font-family:ZhMono,monospace;font-size:clamp(14px,3.2vw,20px);font-weight:700}.toast:before,.toast:after{content:"";background:linear-gradient(90deg,#0000,#a11212,#0000);width:70%;height:3px;margin:6px auto;display:block}@keyframes toast-in{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}@keyframes toast-out{to{opacity:0;transform:scale(1.15)}}.menu{pointer-events:auto;z-index:10;background:radial-gradient(at 50% 38%,#260c3099,#06020ab3);flex-direction:column;justify-content:center;align-items:center;gap:22px;display:flex;position:absolute;inset:0}.logo{text-transform:uppercase;letter-spacing:4px;text-align:center;background:linear-gradient(#ff6a4d 15%,#a11212 55%,#5c0000 95%);color:#0000;filter:drop-shadow(0 3px #000000d9)drop-shadow(0 0 26px #a112128c);-webkit-background-clip:text;background-clip:text;font-family:Arial Narrow,Helvetica Neue Condensed,Impact,sans-serif;font-size:clamp(44px,11vw,96px);font-weight:900;font-stretch:75%;line-height:.95}.menu button{letter-spacing:4px;cursor:pointer;border:none;border-radius:10px;min-width:220px;min-height:56px;padding:0 34px;font-family:ZhMono,monospace;font-weight:800}.play-btn{color:#fff;background:linear-gradient(#c41e1e,#7a0d0d);font-size:26px;box-shadow:0 0 24px #c41e1e80,0 4px #3f0606}.play-btn:active{transform:translateY(2px);box-shadow:0 0 18px #c41e1e99,0 2px #3f0606}.retry-btn{color:#1a0a05;background:linear-gradient(#ffd166,#cf9420);font-size:24px;box-shadow:0 4px #6e4d08}.retry-btn:focus-visible,.retry-btn:focus{outline-offset:3px;outline:3px solid #ffecaae6}.mute-btn{letter-spacing:1px;color:#e8dcc8;background:#ffffff12;min-width:0;min-height:56px;font-size:16px;border:1px solid #e8dcc84d!important}.howto{flex-direction:column;gap:8px;max-width:min(86vw,520px);display:flex}.howto-line{color:#e8dcc8eb;text-align:center;text-shadow:0 1px #000;font-family:ZhMono,monospace;font-size:clamp(15px,3.4vw,19px)}.best-line{letter-spacing:3px;color:#ffd166;text-shadow:0 1px #000;font-family:ZhMono,monospace;font-size:17px}.cause{text-transform:uppercase;letter-spacing:3px;color:#dc1e1e;text-shadow:0 0 22px #dc1e1e8c,0 2px #000;text-align:center;font-family:Arial Narrow,Helvetica Neue Condensed,Impact,sans-serif;font-size:clamp(30px,8vw,62px);font-weight:900;font-stretch:75%}.new-best{letter-spacing:4px;color:#1a0a05;background:linear-gradient(#ffe9a8,#ffd166);border-radius:999px;padding:10px 26px;font-family:ZhMono,monospace;font-size:24px;font-weight:800;animation:1s ease-in-out infinite alternate newbest-pulse}@keyframes newbest-pulse{0%{transform:scale(1);box-shadow:0 0 14px #ffd1668c}to{transform:scale(1.06);box-shadow:0 0 30px #ffd166e6}}.stats-grid{background:#00000073;border:1px solid #e8dcc838;border-radius:12px;grid-template-columns:repeat(2,minmax(140px,200px));gap:12px 26px;padding:18px 26px;display:grid}.stat{flex-direction:column;align-items:center;gap:2px;display:flex}.stat-label{letter-spacing:3px;color:#e8dcc8c7;font-family:ZhMono,monospace;font-size:13px}.stat-value{color:#f7f0df;text-shadow:0 0 10px #000000d9,0 1px #000;font-family:ZhMono,monospace;font-size:34px;font-weight:800}.retry-hint{letter-spacing:2px;color:#e8dcc8b3;font-family:ZhMono,monospace;font-size:13px}.coach{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:5;background:#06020ab8;border:1px solid #ffd16673;border-radius:14px;flex-direction:column;gap:10px;padding:16px 22px;animation:.5s ease-out coach-fade;display:flex;position:absolute;top:56%;left:50%;transform:translate(-50%)}.coach-line{color:#ffd166;text-align:center;text-shadow:0 1px #000;white-space:nowrap;font-family:ZhMono,monospace;font-size:clamp(16px,3.8vw,21px);font-weight:700}@keyframes coach-fade{0%{opacity:0;transform:translate(-50%)translateY(14px)}to{opacity:1;transform:translate(-50%)translateY(0)}}
