@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Rubik:wght@400;500;700&display=swap');

body[data-theme="night"]{
  --page-bg:#0a0b10;
  --bg-dots:rgba(255,255,255,0.035);
  --panel-bg:#14151d;
  --panel-border:#22232e;
  --road:#2b2e38;
  --road-edge:#1f4d34;
  --lane-line:#e8b93f;
  --title-white:#f2f4f8;
  --title-gold:#e8b93f;
  --text:#e8f9ff;
  --text-dim:#8a8f9c;
  --green:#4fdc8c;
  --orange:#ff9d3d;
  --red:#ff5c6a;
  --font-display:'Press Start 2P', monospace;
}
body[data-theme="day"]{
  --page-bg:#eaf6ff;
  --bg-dots:rgba(0,0,0,0.03);
  --panel-bg:#ffffff;
  --panel-border:#d7e6f2;
  --road:#5b6472;
  --road-edge:#2f8f57;
  --lane-line:#ffffff;
  --title-white:#173a5e;
  --title-gold:#e0932a;
  --text:#173a5e;
  --text-dim:#5e7690;
  --green:#2fbf71;
  --orange:#ff8a3d;
  --red:#e6485c;
  --font-display:'Press Start 2P', monospace;
}

*{ box-sizing:border-box; }

body{
  margin:0;
  min-height:100vh;
  background:
    radial-gradient(var(--bg-dots) 1px, transparent 1px) 0 0/16px 16px,
    var(--page-bg);
  font-family:'Rubik', sans-serif;
  color:var(--text);
  display:flex;
  justify-content:center;
  transition:background .3s ease, color .3s ease;
}

#page{ width:420px; max-width:100vw; padding:24px 10px 10px; }

#page-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  margin-bottom:16px;
}
.title-block h1{
  font-family:var(--font-display);
  font-size:26px;
  line-height:1.4;
  color:var(--title-white);
  margin:0;
}
.title-block h1 span{ color:var(--title-gold); }
.tagline{ color:var(--text-dim); font-size:13px; margin:6px 0 0; }

#corner-controls{
  display:flex;
  flex-direction:column;
  gap:4px;
  background:var(--panel-bg);
  border:1px solid var(--panel-border);
  border-radius:8px;
  padding:6px;
}
.corner-btn{
  width:44px; height:38px;
  border-radius:6px;
  border:1px solid var(--panel-border);
  background:transparent;
  color:var(--text);
  font-size:18px;
  cursor:pointer;
}
.corner-btn:first-child{ color:var(--green); border-color:rgba(79,220,140,.4); }
.corner-btn:last-child{ color:var(--red); border-color:rgba(255,92,106,.4); }

/* ---------- Stat panel ---------- */
#stat-panel{
  display:flex;
  align-items:center;
  gap:20px;
  background:var(--panel-bg);
  border:1px solid var(--panel-border);
  border-radius:10px;
  padding:16px 20px;
  margin-bottom:8px;
}
.stat-label{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--text-dim);
  margin-bottom:6px;
}
.stat-value{ font-size:26px; font-weight:700; }
.stat-block-right .stat-value{ color:var(--title-gold); }
.stat-block-mid{ flex:1; }
#distance-track{
  width:100%;
  height:7px;
  border-radius:5px;
  background:rgba(255,255,255,0.08);
  overflow:hidden;
}
#distance-fill{
  height:100%;
  width:0%;
  border-radius:5px;
  background:linear-gradient(90deg,#ff8a3d,#ffd93d,#4fdc8c);
  transition:width .15s linear;
}
#hud-lives{
  text-align:right;
  font-size:16px;
  margin-bottom:10px;
  min-height:20px;
}

/* ---------- Game area ---------- */
#game-wrap{ position:relative; width:100%; }
canvas#gameCanvas{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio: 400 / 640;
  background:var(--road);
  border:3px solid var(--road-edge);
  border-radius:10px;
}
.hidden{ display:none !important; }

/* ---------- Overlays ---------- */
.overlay{
  position:absolute;
  inset:0;
  background:rgba(10,11,16,0.55);
  border-radius:10px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:20px;
  text-align:center;
  backdrop-filter: blur(2px);
}
body[data-theme="day"] .overlay{ background:rgba(234,246,255,0.7); }

.field-label{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--text-dim);
  margin-top:8px;
}
#player-name, #save-name{
  width:80%;
  padding:9px 10px;
  border-radius:6px;
  border:1px solid var(--panel-border);
  background:var(--panel-bg);
  color:var(--text);
  text-align:center;
  font-size:14px;
}

.segmented{ display:flex; gap:6px; }
.seg-btn{
  padding:6px 14px;
  border-radius:6px;
  border:1px solid var(--panel-border);
  background:var(--panel-bg);
  color:var(--text);
  cursor:pointer;
  font-size:12px;
}
.seg-btn.active{ background:var(--green); color:#0a0a0a; border-color:var(--green); }

.green-btn, .orange-btn, .ghost-btn{
  margin-top:10px;
  padding:12px 30px;
  border-radius:8px;
  border:none;
  font-size:14px;
  font-weight:700;
  cursor:pointer;
}
.green-btn{ background:var(--green); color:#0a0a0a; }
.orange-btn{ background:var(--orange); color:#0a0a0a; padding:12px 20px; }
.ghost-btn{ background:transparent; border:1px solid var(--panel-border); color:var(--text); }
.full-width{ width:90%; margin-top:8px; }

#save-row{ display:flex; gap:8px; width:90%; align-items:center; }
#save-row input{ flex:1; width:auto; }

#mini-leaderboard, #full-leaderboard{
  width:90%;
  margin-top:12px;
  max-height:120px;
  overflow-y:auto;
}
.lb-title{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--text-dim);
  margin-bottom:4px;
}
#mini-lb-list, #full-lb-list{
  list-style:decimal-leading-zero;
  padding-left:22px;
  margin:0;
  font-size:12px;
  text-align:left;
}

.modal-card{
  background:var(--panel-bg);
  border:1px solid var(--panel-border);
  border-radius:14px;
  padding:26px 22px;
  width:88%;
  display:flex;
  flex-direction:column;
  align-items:center;
}
#gameover-title{
  font-family:var(--font-display);
  font-size:16px;
  color:var(--red);
  margin-bottom:8px;
}
#gameover-sub{ font-size:16px; font-weight:700; margin-bottom:10px; }
.final-score-label{ font-size:13px; color:var(--text-dim); margin-bottom:6px; }
.final-score-label span{ color:var(--title-gold); font-size:20px; font-weight:700; }
#rank-line{ font-size:12px; color:var(--text-dim); margin-top:4px; min-height:16px; }

/* ---------- Touch controls ---------- */
#touch-controls{
  position:absolute;
  bottom:10px; left:10px; right:10px;
  display:flex;
  justify-content:space-between;
  pointer-events:none;
}
.touch-btn{
  pointer-events:auto;
  width:52px; height:52px;
  border-radius:50%;
  border:1px solid var(--panel-border);
  background:var(--panel-bg);
  color:var(--text);
  font-size:18px;
  opacity:.85;
}
@media (min-width: 700px){ #touch-controls{ display:none; } }
