:root{
  --sky:#8ed0ff; --sky-2:#dff1ff;
  --ink:#1b2a41; --ink-soft:#546379;
  --paper:#ffffff; --cream:#fff9ec;
  --yellow:#ffd23f; --orange:#ff8a3d; --red:#ff5a5f;
  --green:#2fc66b; --blue:#3d8bfd; --violet:#8b5cf6;
  --shadow:0 6px 0 rgba(20,35,58,.22), 0 14px 30px rgba(20,35,58,.18);
  --shadow-sm:0 4px 0 rgba(20,35,58,.22);
  --radius:26px;
  --font:'Baloo Bhaijaan 2','Cairo',system-ui,-apple-system,'Segoe UI',sans-serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{
  font-family:var(--font); color:var(--ink); background:var(--sky);
  -webkit-font-smoothing:antialiased; -webkit-tap-highlight-color:transparent;
  user-select:none; touch-action:none;
}
#app{position:fixed;inset:0;overflow:hidden}
#gl{position:absolute;inset:0;width:100%;height:100%;display:block}
.is-hidden{display:none!important}
button{font-family:inherit;color:inherit}

/* ---------- HUD ---------- */
.hud{position:absolute;inset:0;pointer-events:none;padding:14px;display:flex;flex-direction:column;gap:10px}
.hud-row{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}
.pill{
  display:flex;flex-direction:column;gap:1px;min-width:96px;
  padding:8px 16px;background:var(--paper);
  border:3px solid var(--ink);border-radius:18px;box-shadow:var(--shadow-sm);
}
.pill-label{font-size:.68rem;font-weight:700;letter-spacing:.04em;color:var(--ink-soft);line-height:1.1}
.pill-value{font-size:1.5rem;font-weight:800;line-height:1.05;font-variant-numeric:tabular-nums}
.pill-value small{font-size:.65rem;font-weight:700;color:var(--ink-soft);margin-inline-start:4px}
.pill-score .pill-value{color:var(--blue)}
.pill-best .pill-value{color:var(--orange)}
.pill-speed .pill-value{color:var(--green)}
.hud-tools{margin-inline-start:auto;display:flex;gap:8px;pointer-events:auto}
.icon-btn{
  width:44px;height:44px;display:grid;place-items:center;cursor:pointer;
  background:var(--paper);border:3px solid var(--ink);border-radius:14px;
  box-shadow:var(--shadow-sm);transition:transform .12s ease,box-shadow .12s ease;
}
.icon-btn:hover{transform:translateY(-2px)}
.icon-btn:active{transform:translateY(3px);box-shadow:0 0 0 rgba(0,0,0,0)}
.icon-btn svg{width:20px;height:20px;stroke-width:2.6}
.icon-btn.is-off{opacity:.45}

/* ---------- Screens ---------- */
.screen{
  position:absolute;inset:0;display:grid;place-items:center;padding:18px;
  background:rgba(27,42,65,.34);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);
  z-index:5;overflow:auto;
}
.screen-clear{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;pointer-events:none}
.panel{
  width:min(520px,100%);background:var(--paper);border:4px solid var(--ink);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:26px 24px;text-align:center;
  animation:pop .28s cubic-bezier(.2,1.5,.5,1) both;
}
.panel-sm{width:min(360px,100%);display:flex;flex-direction:column;gap:12px}
@keyframes pop{from{transform:scale(.9) translateY(14px);opacity:0}to{transform:none;opacity:1}}
.logo-badge{
  width:78px;height:78px;margin:0 auto 12px;display:grid;place-items:center;
  background:linear-gradient(160deg,var(--yellow),var(--orange));
  border:4px solid var(--ink);border-radius:24px;box-shadow:var(--shadow-sm);
  animation:bob 2.4s ease-in-out infinite;
}
.logo-badge svg{width:40px;height:40px;stroke-width:2.4;color:var(--ink)}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-7px) rotate(3deg)}}
.crash-badge{
  width:78px;height:78px;margin:0 auto 10px;display:grid;place-items:center;
  background:linear-gradient(160deg,#ff8a8d,var(--red));
  border:4px solid var(--ink);border-radius:24px;box-shadow:var(--shadow-sm);
}
.crash-badge svg{width:40px;height:40px;stroke-width:2.4;color:#fff}
.title{font-size:clamp(1.7rem,5vw,2.4rem);font-weight:800;line-height:1.15;letter-spacing:-.01em}
.title-sm{font-size:1.5rem}
.subtitle{margin:8px 0 18px;color:var(--ink-soft);font-size:1rem;font-weight:600;line-height:1.55}
.foot-note{margin-top:16px;font-size:.82rem;font-weight:600;color:var(--ink-soft)}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:13px 26px;font-size:1.05rem;font-weight:800;cursor:pointer;
  background:var(--paper);border:4px solid var(--ink);border-radius:20px;
  box-shadow:var(--shadow-sm);transition:transform .12s ease,box-shadow .12s ease,filter .12s;
}
.btn svg{width:22px;height:22px;stroke-width:2.8}
.btn:hover{transform:translateY(-2px);filter:brightness(1.03)}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 rgba(20,35,58,.22)}
.btn-primary{background:linear-gradient(170deg,#5ff08c,var(--green))}
.btn-ghost{background:var(--cream)}
.btn-lg{padding:16px 34px;font-size:1.2rem;width:100%}
.panel-sm .btn{width:100%}

/* ---------- Controls list ---------- */
.keys{margin-top:20px;background:var(--cream);border:3px dashed var(--ink-soft);border-radius:18px;padding:14px 16px;text-align:start}
.keys h3{font-size:.95rem;font-weight:800;margin-bottom:8px}
.keys ul{list-style:none;display:flex;flex-direction:column;gap:6px}
.keys li{font-size:.9rem;font-weight:600;color:var(--ink-soft);display:flex;gap:8px;align-items:center}
.keys b{
  background:var(--paper);border:2px solid var(--ink);border-radius:8px;
  padding:1px 8px;font-size:.82rem;color:var(--ink);white-space:nowrap;
}

/* ---------- Countdown ---------- */
.count-num{
  font-size:clamp(5rem,22vw,11rem);font-weight:800;color:var(--paper);
  text-shadow:0 6px 0 var(--ink),0 12px 26px rgba(20,35,58,.45);
  animation:tick .9s ease both;
}
@keyframes tick{0%{transform:scale(.4);opacity:0}35%{transform:scale(1.08);opacity:1}100%{transform:scale(1);opacity:1}}

/* ---------- Score grid ---------- */
.score-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:4px 0 16px}
.score-cell{
  background:var(--cream);border:3px solid var(--ink);border-radius:16px;
  padding:10px;display:flex;flex-direction:column;gap:2px;
}
.sc-label{font-size:.72rem;font-weight:700;color:var(--ink-soft)}
.sc-value{font-size:1.5rem;font-weight:800;font-variant-numeric:tabular-nums}
#over-score .sc-value{color:var(--blue)}
.record{
  background:linear-gradient(170deg,var(--yellow),var(--orange));
  border:3px solid var(--ink);border-radius:16px;padding:9px 14px;
  font-weight:800;font-size:.98rem;margin-bottom:14px;
  animation:bob 1.6s ease-in-out infinite;
}

/* ---------- Touch controls ---------- */
.touch{position:absolute;inset:auto 0 0 0;padding:16px;display:flex;
  justify-content:space-between;align-items:flex-end;pointer-events:none;z-index:4}
.touch-side{display:flex;gap:12px;pointer-events:auto}
.tbtn{
  width:74px;height:74px;display:grid;place-items:center;cursor:pointer;
  background:rgba(255,255,255,.86);border:4px solid var(--ink);border-radius:22px;
  box-shadow:var(--shadow-sm);transition:transform .1s;
}
.tbtn svg{width:32px;height:32px;stroke-width:3}
.tbtn:active,.tbtn.on{transform:translateY(4px) scale(.96);background:var(--yellow)}
.tbtn-gas{background:rgba(160,245,190,.9)}
.tbtn-brake{background:rgba(255,190,190,.9)}

/* ---------- Toast / fatal / boot ---------- */
.toast{
  position:absolute;left:50%;top:18px;transform:translateX(-50%);z-index:20;
  background:var(--ink);color:var(--paper);border-radius:14px;padding:9px 18px;
  font-weight:700;font-size:.9rem;box-shadow:var(--shadow);
  animation:pop .25s ease both;max-width:88vw;text-align:center;
}
.fatal{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:30;
  background:#fff;border:4px solid var(--red);border-radius:20px;padding:20px;
  font-weight:700;max-width:90vw;text-align:center;color:var(--ink);
}
.boot{
  position:absolute;inset:0;display:grid;place-items:center;z-index:40;
  background:var(--sky);color:var(--ink);font-size:1.4rem;font-weight:800;
}

/* ---------- Responsive ---------- */
@media (max-width:560px){
  .pill{min-width:76px;padding:6px 12px;border-radius:15px}
  .pill-value{font-size:1.15rem}
  .icon-btn{width:38px;height:38px}
  .panel{padding:20px 16px}
  .tbtn{width:64px;height:64px;border-radius:19px}
  .score-grid{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important}
}
