/* =========================================================================
   GOLD RUSH — UI styles
   Dark underground palette, warm gold accents, chunky readable type.
   All sizes inside #stage are in em: the stage font-size scales with the
   stage width (set in main.js), so the UI scales with the game.
   ========================================================================= */

/* Gold Rush is deliberately single-theme: a dark underground arcade look. */
:root {
  color-scheme: dark;
  --bg: #0b0806;
  --screen: #120d09;
  --panel: #1d1610;
  --panel-2: #2a2018;
  --line: #3f3024;
  --gold: #ffc531;
  --gold-hi: #ffe08a;
  --gold-dark: #a8700b;
  --text: #fff4df;
  --muted: #c4b398;
  --danger: #ff5f52;
  --ok: #6fdc74;
  --blue: #3d86f0;
  --token: #b78cff;
  --display: 'Lilita One', 'Arial Black', Impact, system-ui, sans-serif;
  --body: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --radius: 0.8em;
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  height: 100%;
  overflow: hidden;
  background: var(--bg);
  overscroll-behavior: none;
}

body {
  position: fixed;
  inset: 0;
  color: var(--text);
  font-family: var(--body);
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

#app {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  background:
    radial-gradient(ellipse at 50% 40%, rgba(255, 197, 49, 0.07), transparent 60%),
    repeating-linear-gradient(135deg, #0d0a07 0 14px, #0b0806 14px 28px);
}

#stage {
  position: relative;
  overflow: hidden;
  background: #000;
  touch-action: none;
  font-size: 16px;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.04), 0 30px 80px rgba(0, 0, 0, 0.6);
}

#game {
  position: absolute;
  inset: 0;
  display: block;
}

.ico { width: 1.2em; height: 1.2em; flex: none; display: inline-block; vertical-align: -0.2em; }
.ico.cur { width: 1.05em; height: 1.05em; }

button { font: inherit; color: inherit; }
input { font: inherit; }

/* ---------------------------------------------------------------- Buttons */

.btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45em;
  min-height: 3em;
  padding: 0.7em 1em;
  border: 0;
  border-radius: var(--radius);
  font-family: var(--display);
  font-size: 1.05em;
  letter-spacing: 0.03em;
  line-height: 1.1;
  color: var(--text);
  background: var(--panel-2);
  box-shadow: 0 0.25em 0 rgba(0, 0, 0, 0.5);
  cursor: pointer;
  transition: transform 0.08s ease, box-shadow 0.08s ease, filter 0.15s ease;
  touch-action: manipulation;
}
.btn:hover:not(:disabled) { filter: brightness(1.08); }
.btn:active:not(:disabled) { transform: translateY(0.18em); box-shadow: 0 0.06em 0 rgba(0, 0, 0, 0.5); }
.btn:disabled { opacity: 0.45; cursor: default; }
.btn small { font-size: 0.72em; opacity: 0.85; }
.btn:focus-visible, .icon-btn:focus-visible, .chip:focus-visible, .tab:focus-visible, .setting:focus-visible, .booster:focus-visible, .hud-btn:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 3px;
}

.btn-primary, .btn-play {
  background: var(--gold);
  color: #2b1a00;
  box-shadow: 0 0.3em 0 var(--gold-dark);
}
.btn-primary:active:not(:disabled), .btn-play:active:not(:disabled) { box-shadow: 0 0.08em 0 var(--gold-dark); }
.btn-secondary { background: #3a2c20; box-shadow: 0 0.25em 0 #1a120c; }
.btn-ghost { background: transparent; box-shadow: none; border: 2px solid rgba(255, 255, 255, 0.16); }
.btn-ghost:active:not(:disabled) { box-shadow: none; }
.btn-reward { background: var(--blue); box-shadow: 0 0.25em 0 #1d4a94; }
.btn-danger { background: #b3291f; box-shadow: 0 0.25em 0 #5e130e; }
.big { font-size: 1.35em; min-height: 3.1em; }

.badge {
  position: absolute;
  top: -0.45em;
  right: -0.35em;
  min-width: 1.6em;
  height: 1.6em;
  padding: 0 0.4em;
  border-radius: 1em;
  display: grid;
  place-items: center;
  background: var(--danger);
  color: #fff;
  font: 0.75em/1 var(--display);
  font-style: normal;
  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.4);
}
.badge.ok { background: var(--ok); color: #0b2a0c; }
.badge .ico { width: 1em; height: 1em; }

.icon-btn {
  width: 2.7em;
  height: 2.7em;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 0.7em;
  background: var(--panel-2);
  box-shadow: 0 0.2em 0 rgba(0, 0, 0, 0.5);
  cursor: pointer;
}

.pill {
  display: inline-flex;
  align-items: center;
  gap: 0.3em;
  height: 2.1em;
  padding: 0 0.65em 0 0.45em;
  border-radius: 2em;
  background: rgba(16, 11, 8, 0.82);
  border: 2px solid rgba(255, 255, 255, 0.1);
  font-family: var(--display);
  font-size: 0.95em;
  white-space: nowrap;
}
.pill small { font-size: 0.7em; color: var(--muted); }
.wallet { display: flex; gap: 0.35em; justify-content: flex-end; }

.ok { color: var(--ok); font-style: normal; }
.muted { color: var(--muted); }
kbd {
  font: 0.7em var(--display);
  padding: 0.1em 0.4em;
  border-radius: 0.3em;
  background: rgba(0, 0, 0, 0.18);
}
@media (pointer: coarse) { kbd, .booster .key { display: none !important; } }

/* ------------------------------------------------------------------- HUD */

.hud {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s;
}
.hud.is-open { opacity: 1; visibility: visible; }
.hud button { pointer-events: auto; }

/* Booster screen tint: a CSS layer so it costs nothing on the canvas. */
.hud-tint {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 0.35s;
  --tc: 255, 255, 255;
  background: radial-gradient(ellipse at center, rgba(var(--tc), 0) 52%, rgba(var(--tc), 0.5) 100%);
}
.hud-tint[data-tint="freeze"] { --tc: 160, 230, 255; opacity: 0.9; }
.hud-tint[data-tint="frenzy"] { --tc: 255, 120, 30; opacity: 0.7; animation: tintPulse 0.6s ease-in-out infinite; }
.hud-tint[data-tint="double"] { --tc: 255, 210, 60; opacity: 0.5; }
.hud-tint[data-tint="magnet"] { --tc: 90, 180, 255; opacity: 0.45; }
@keyframes tintPulse { 0%, 100% { opacity: 0.5; } 50% { opacity: 0.85; } }

.hud-top {
  position: absolute;
  top: calc(var(--safe-top) + 0.55em);
  left: 0.6em;
  right: 0.6em;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: start;
  gap: 0.4em;
}
.hud-left { display: flex; align-items: center; gap: 0.45em; }
.hud-btn {
  width: 2.6em;
  height: 2.6em;
  display: grid;
  place-items: center;
  border: 2px solid rgba(255, 255, 255, 0.14);
  border-radius: 0.75em;
  background: rgba(16, 11, 8, 0.75);
  cursor: pointer;
}
.hud-level { line-height: 1; text-shadow: 0 2px 0 rgba(0, 0, 0, 0.6); }
.hud-level small { display: block; font: 0.62em var(--display); letter-spacing: 0.1em; color: var(--muted); }
.hud-level b { font: 1.45em/1 var(--display); }

.hud-timer {
  justify-self: center;
  display: flex;
  align-items: center;
  gap: 0.3em;
  padding: 0.25em 0.65em;
  border-radius: 0.8em;
  background: rgba(16, 11, 8, 0.78);
  border: 2px solid rgba(255, 255, 255, 0.14);
  font: 1.65em/1.1 var(--display);
  font-variant-numeric: tabular-nums;
}
.hud-timer .ico { width: 0.8em; height: 0.8em; opacity: 0.8; }
.hud-timer.warn { color: #ff6b5f; border-color: #ff6b5f; animation: pulse 1s ease-in-out infinite; }
.hud-timer.frozen { color: #9fe8ff; border-color: #9fe8ff; animation: none; }

.hud-money { justify-self: end; text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 0.15em; }
.hud-money b {
  font: 1.75em/1 var(--display);
  color: var(--gold);
  text-shadow: 0 2px 0 #5a3a00, 0 0 0.6em rgba(0, 0, 0, 0.6);
  font-variant-numeric: tabular-nums;
}
.hud-money b.bump { animation: bump 0.18s ease-out; }
.hud-goal { font: 0.78em var(--display); color: var(--text); text-shadow: 0 1px 0 #000, 0 0 0.5em #000; display: inline-flex; align-items: center; gap: 0.2em; }
.hud-goal .ico { width: 1em; height: 1em; color: var(--ok); }
.hud-bar { width: 6.5em; height: 0.45em; border-radius: 1em; background: rgba(0, 0, 0, 0.55); border: 1px solid rgba(255, 255, 255, 0.18); overflow: hidden; }
.hud-bar i { display: block; height: 100%; background: var(--gold); transform-origin: left; transform: scaleX(0); transition: transform 0.35s ease-out; }
.hud.reached .hud-bar i { background: var(--ok); }
.hud.reached .hud-goal { color: var(--ok); }

.hud-combo {
  position: absolute;
  top: calc(var(--safe-top) + 4.4em);
  left: 50%;
  transform: translateX(-50%) scale(0);
  padding: 0.3em 0.9em;
  border-radius: 2em;
  background: #ff8a2a;
  color: #2b1200;
  font: 1.1em var(--display);
  box-shadow: 0 0.2em 0 #9c4a0c;
  opacity: 0;
  transition: opacity 0.2s, transform 0.2s;
}
.hud-combo.on { opacity: 1; transform: translateX(-50%) scale(1); animation: pop 0.3s ease-out; }

.hud-banner {
  position: absolute;
  left: 0;
  right: 0;
  top: 30%;
  text-align: center;
  opacity: 0;
  pointer-events: none;
}
.hud-banner b { display: block; font: 2.6em/1 var(--display); color: var(--gold); text-shadow: 0 0.08em 0 #5a3a00, 0 0 0.5em rgba(0, 0, 0, 0.7); }
.hud-banner span { display: inline-block; margin-top: 0.4em; padding: 0.3em 0.8em; border-radius: 2em; background: rgba(10, 7, 5, 0.75); font: 1.05em var(--display); }
.hud-banner span b { display: inline; font-size: 1em; color: var(--gold); text-shadow: none; }
.hud-banner.on { animation: banner 1.9s ease-out forwards; }
.hud-banner.long.on { animation-duration: 3.2s; }

.hud-hint {
  position: absolute;
  left: 50%;
  bottom: calc(var(--safe-bottom) + 6.6em);
  transform: translateX(-50%);
  padding: 0.55em 1em;
  border-radius: 2em;
  background: rgba(10, 7, 5, 0.82);
  border: 2px solid var(--gold);
  color: var(--gold-hi);
  font: 1.05em var(--display);
  letter-spacing: 0.04em;
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.25s;
}
.hud-hint.on { opacity: 1; animation: hint 1.4s ease-in-out infinite; }

.hud-done {
  position: absolute;
  top: calc(var(--safe-top) + 4.9em);
  right: 0.6em;
  display: inline-flex;
  align-items: center;
  gap: 0.3em;
  padding: 0.45em 0.8em;
  border: 0;
  border-radius: 2em;
  background: var(--ok);
  color: #0b2a0c;
  font: 0.95em var(--display);
  box-shadow: 0 0.2em 0 #2d7a31;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: scale(0.8);
  transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
}
.hud-done.on { opacity: 1; visibility: visible; transform: scale(1); }

.hud-boosters {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--safe-bottom) + 0.8em);
  display: flex;
  justify-content: center;
  gap: 0.8em;
}
.hud-boosters[hidden] { display: none; }
.booster {
  position: relative;
  width: 3.5em;
  height: 3.5em;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 3px solid var(--c);
  background: rgba(14, 10, 7, 0.82);
  color: var(--c);
  cursor: pointer;
  transition: transform 0.1s, opacity 0.2s;
}
.booster .ico { width: 1.6em; height: 1.6em; }
.booster:active { transform: scale(0.92); }
.booster .count {
  position: absolute;
  right: -0.35em;
  top: -0.35em;
  min-width: 1.5em;
  height: 1.5em;
  padding: 0 0.3em;
  display: grid;
  place-items: center;
  border-radius: 1em;
  background: var(--c);
  color: #120c06;
  font: 0.78em var(--display);
}
.booster .key {
  position: absolute;
  bottom: -0.55em;
  left: 50%;
  transform: translateX(-50%);
  padding: 0 0.35em;
  border-radius: 0.3em;
  background: #000;
  color: var(--muted);
  font: 0.62em/1.4 var(--display);
}
.booster.empty { opacity: 0.38; }
.booster.active { box-shadow: 0 0 0 0.25em rgba(255, 255, 255, 0.08), 0 0 1em var(--c); }
.booster.active::before {
  content: '';
  position: absolute;
  inset: -0.45em;
  border-radius: 50%;
  background: conic-gradient(var(--c) calc(var(--p, 1) * 360deg), transparent 0);
  -webkit-mask: radial-gradient(circle, transparent 62%, #000 64%);
  mask: radial-gradient(circle, transparent 62%, #000 64%);
}
.hud-note {
  position: absolute;
  left: 50%;
  bottom: calc(var(--safe-bottom) + 1.1em);
  transform: translateX(-50%);
  padding: 0.35em 0.8em;
  border-radius: 2em;
  background: rgba(10, 7, 5, 0.7);
  color: var(--muted);
  font: 0.75em var(--display);
  letter-spacing: 0.06em;
  white-space: nowrap;
}
.hud-note[hidden] { display: none; }

/* ---------------------------------------------------------------- Screens */

.screen {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  background: var(--screen);
  opacity: 0;
  visibility: hidden;
  transform: translateY(0.6em);
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
  z-index: 5;
}
.screen.is-open { opacity: 1; visibility: visible; transform: none; }

.screen-head {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 0.6em;
  padding: calc(var(--safe-top) + 0.7em) 0.8em 0.6em;
  border-bottom: 2px solid var(--line);
  background: var(--panel);
}
.screen-head h2 { margin: 0; font: 1.35em var(--display); letter-spacing: 0.04em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.scroll {
  flex: 1;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-y;
  padding: 0.8em 0.8em calc(var(--safe-bottom) + 1.4em);
  display: flex;
  flex-direction: column;
  gap: 0.7em;
}

.note { margin: 0; color: var(--muted); font-size: 0.85em; line-height: 1.4; }
.eyebrow { font: 0.78em var(--display); letter-spacing: 0.12em; color: var(--muted); }

.card {
  padding: 1em;
  border-radius: 1em;
  background: var(--panel);
  border: 2px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 0.65em;
}
.card h3 { margin: 0; font: 2em/1 var(--display); color: var(--gold); }
.card h4 { margin: 0; font: 1.05em var(--display); letter-spacing: 0.04em; display: flex; align-items: center; gap: 0.35em; }
.card p { margin: 0; }

.stats2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5em; }
.stats2 > div {
  padding: 0.55em 0.7em;
  border-radius: 0.7em;
  background: rgba(0, 0, 0, 0.3);
  display: flex;
  flex-direction: column;
  gap: 0.15em;
  min-width: 0;
}
.stats2 small { font: 0.72em var(--display); letter-spacing: 0.1em; color: var(--muted); }
.stats2 b { font: 1.35em var(--display); display: flex; align-items: center; gap: 0.25em; flex-wrap: wrap; }
.stats2 em { font: 0.75em var(--display); display: inline-flex; align-items: center; gap: 0.2em; }

/* ------------------------------------------------------------------ Home */

.screen-home {
  background: linear-gradient(to bottom,
    rgba(8, 6, 4, 0.6) 0%,
    rgba(8, 6, 4, 0.1) 26%,
    rgba(8, 6, 4, 0) 40%,
    rgba(8, 6, 4, 0.8) 62%,
    rgba(8, 6, 4, 0.96) 100%);
  z-index: 4;
}
.home { flex: 1; display: flex; flex-direction: column; min-height: 0; padding: calc(var(--safe-top) + 0.6em) 0.8em calc(var(--safe-bottom) + 0.9em); }
.topbar { display: flex; align-items: center; gap: 0.4em; }
.topbar .wallet { order: 0; }
.player { flex: 1; display: flex; align-items: center; gap: 0.35em; min-width: 0; justify-content: center; }
.lvl-badge { padding: 0.25em 0.5em; border-radius: 0.5em; background: var(--gold); color: #2b1a00; font: 0.85em var(--display); white-space: nowrap; }
.xp { flex: 1; max-width: 5em; height: 0.5em; border-radius: 1em; background: rgba(0, 0, 0, 0.6); border: 1px solid rgba(255, 255, 255, 0.15); overflow: hidden; }
.xp i { display: block; height: 100%; background: var(--gold); }
.streak .ico { color: #6b5a48; }
.streak.hot .ico { color: #ff8a2a; }

.logo { margin: 1.1em auto 0; text-align: center; transform: rotate(-4deg); line-height: 0.82; }
.logo span { display: block; font-family: var(--display); paint-order: stroke fill; }
.logo-a {
  font-size: 4.6em;
  color: var(--gold);
  -webkit-text-stroke: 0.09em #2b1700;
  text-shadow: 0 0.07em 0 #2b1700, 0 0.16em 0.25em rgba(0, 0, 0, 0.55);
}
.logo-b {
  font-size: 3.6em;
  margin-top: 0.05em;
  color: var(--text);
  -webkit-text-stroke: 0.09em #2b1700;
  text-shadow: 0 0.07em 0 #2b1700, 0 0.16em 0.25em rgba(0, 0, 0, 0.55);
  letter-spacing: 0.06em;
}

.home-spacer { flex: 1; min-height: 1em; }
.home-actions { display: flex; flex-direction: column; gap: 0.65em; }
.best { align-self: center; display: inline-flex; align-items: center; gap: 0.35em; font: 0.9em var(--display); color: var(--muted); letter-spacing: 0.06em; }
.best b { color: var(--gold); }
.best .ico { color: var(--gold); }
.btn-play { font-size: 2em; min-height: 2.2em; width: 100%; gap: 0.35em; border-radius: 0.5em; }
.btn-play .ico { width: 1em; height: 1em; }
.btn-play span { display: flex; flex-direction: column; align-items: flex-start; line-height: 0.95; }
.btn-play small { font-size: 0.36em; letter-spacing: 0.12em; opacity: 0.75; }
.checkpoints { display: flex; align-items: center; justify-content: center; gap: 0.35em; flex-wrap: wrap; font: 0.75em var(--display); color: var(--muted); letter-spacing: 0.08em; }
.chip {
  min-width: 2.8em;
  height: 2.3em;
  padding: 0 0.6em;
  border-radius: 2em;
  border: 2px solid var(--line);
  background: var(--panel);
  font: 1.1em var(--display);
  cursor: pointer;
}
.chip.on { background: var(--gold); border-color: var(--gold); color: #2b1a00; }
.tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.55em; }
.tile { flex-direction: column; gap: 0.3em; min-height: 4.4em; font-size: 0.95em; padding: 0.6em 0.3em; }
.tile .ico { width: 1.6em; height: 1.6em; color: var(--gold); }
.row3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.55em; }
.row3 .btn { font-size: 0.85em; min-height: 2.8em; padding: 0.5em; }

/* --------------------------------------------------------------- Daily */

.daily-hero { text-align: center; align-items: stretch; }
.daily-hero p { color: var(--muted); }
.streak-track { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(7, 1fr); gap: 0.3em; }
.streak-track li {
  padding: 0.45em 0.1em;
  border-radius: 0.6em;
  background: rgba(0, 0, 0, 0.3);
  border: 2px solid transparent;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.2em;
  font-family: var(--display);
  text-align: center;
}
.streak-track small { font-size: 0.6em; color: var(--muted); letter-spacing: 0.05em; }
.streak-track b { font-size: 0.72em; }
.streak-track .ico { width: 1.1em; height: 1.1em; }
.streak-track li.done { background: rgba(111, 220, 116, 0.14); }
.streak-track li.done .ico { color: var(--ok); }
.streak-track li.today { border-color: var(--gold); }
.streak-track li.special .ico { color: var(--token); }

/* ----------------------------------------------------------- Lists/rows */

.tabs { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 0.3em; padding: 0.6em 0.8em 0; }
.tab {
  height: 2.6em;
  border: 0;
  border-radius: 0.6em 0.6em 0 0;
  background: var(--panel);
  color: var(--muted);
  font: 0.92em var(--display);
  letter-spacing: 0.05em;
  cursor: pointer;
}
.tab.on { background: var(--gold); color: #2b1a00; }

.grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.6em; }
.item {
  position: relative;
  padding: 0.5em;
  border-radius: 0.9em;
  background: var(--panel);
  border: 2px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 0.4em;
}
.item.is-equipped { border-color: var(--ok); }
.item .preview { width: 100%; height: auto; border-radius: 0.55em; background: #000; display: block; }
.grid.claws .preview { background: radial-gradient(circle at 50% 40%, #3a2c20, #17110c); }
.item-name { font: 1em var(--display); text-align: center; }
.item-btn { min-height: 2.5em; font-size: 0.9em; padding: 0.4em 0.5em; }
.item-btn.buy { background: var(--gold); color: #2b1a00; box-shadow: 0 0.22em 0 var(--gold-dark); }
.is-equipped .item-btn { background: rgba(111, 220, 116, 0.18); color: var(--ok); box-shadow: none; opacity: 1; }
.is-locked .item-btn, .is-exclusive .item-btn { font-size: 0.78em; }
.item .tag {
  position: absolute;
  top: 0.9em;
  left: 0.9em;
  z-index: 1;
  padding: 0.2em 0.5em;
  border-radius: 0.4em;
  font: 0.68em var(--display);
  letter-spacing: 0.08em;
  background: #000;
}
.is-equipped .tag { background: var(--ok); color: #0b2a0c; }
.is-owned .tag { background: #3d86f0; }
.is-locked .tag { background: #5c5249; }
.is-exclusive .tag { background: var(--token); color: #1b0b3a; }
.poor { filter: grayscale(0.6) brightness(0.8); }

.row-card {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 0.7em;
  padding: 0.75em;
  border-radius: 0.9em;
  background: var(--panel);
  border: 2px solid var(--line);
}
.row-card.flash { animation: flash 0.6s ease-out; }
.row-icon {
  width: 2.8em;
  height: 2.8em;
  display: grid;
  place-items: center;
  border-radius: 0.7em;
  background: rgba(0, 0, 0, 0.35);
  color: var(--c, var(--gold));
}
.row-icon .ico { width: 1.6em; height: 1.6em; }
.row-body { display: flex; flex-direction: column; gap: 0.2em; min-width: 0; }
.row-body b { font: 1.02em var(--display); letter-spacing: 0.03em; display: flex; align-items: center; gap: 0.4em; flex-wrap: wrap; }
.row-body span { font-size: 0.84em; color: var(--muted); line-height: 1.3; }
.row-body small { font-size: 0.78em; color: var(--muted); }
.row-body .lv { font-size: 0.75em; color: var(--muted); }
.row-body .effect em { color: var(--gold); font-style: normal; font-weight: 700; }
.row-btns { display: flex; flex-direction: column; gap: 0.35em; }
.btn-buy { min-height: 2.6em; font-size: 0.92em; padding: 0.4em 0.7em; background: var(--gold); color: #2b1a00; box-shadow: 0 0.22em 0 var(--gold-dark); white-space: nowrap; }
.btn-buy.maxed { background: rgba(111, 220, 116, 0.18); color: var(--ok); box-shadow: none; opacity: 1; }
.pips { display: flex; gap: 0.25em; margin: 0.15em 0; }
.pips i { flex: 1; max-width: 2em; height: 0.45em; border-radius: 1em; background: rgba(255, 255, 255, 0.12); }
.pips i.on { background: var(--gold); }

.ach.done { border-color: rgba(111, 220, 116, 0.45); }
.ach.done .row-icon { color: var(--gold); }
.ach:not(.done) .row-icon { color: #6b5d50; }
.ach .ok { display: inline-flex; align-items: center; gap: 0.15em; font-size: 0.72em; }
.ach .reward { font: 0.85em var(--display); display: flex; flex-direction: column; align-items: flex-end; gap: 0.2em; white-space: nowrap; }
.bar { height: 0.45em; border-radius: 1em; background: rgba(255, 255, 255, 0.1); overflow: hidden; margin-top: 0.2em; }
.bar i { display: block; height: 100%; background: var(--gold); }

.pack {
  position: relative;
  padding: 1em;
  border-radius: 1em;
  background: linear-gradient(160deg, #2a2018, #1a130e);
  border: 2px solid #5a4430;
  display: flex;
  flex-direction: column;
  gap: 0.5em;
}
.pack h4 { margin: 0; font: 1.3em var(--display); color: var(--gold); }
.pack ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.3em; font-size: 0.9em; }
.pack li { display: flex; align-items: center; gap: 0.4em; }
.pack li .ico { color: var(--ok); width: 1em; height: 1em; }
.pack .tag { position: absolute; top: -0.6em; right: 0.8em; padding: 0.2em 0.6em; border-radius: 0.4em; background: var(--danger); font: 0.7em var(--display); letter-spacing: 0.08em; }
.row-card.free { border-color: var(--token); }

.lb { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.35em; }
.lb li {
  display: grid;
  grid-template-columns: 2.2em 1fr auto;
  align-items: center;
  gap: 0.5em;
  padding: 0.6em 0.75em;
  border-radius: 0.7em;
  background: var(--panel);
  border: 2px solid transparent;
  font-family: var(--display);
}
.lb.mini li { background: rgba(0, 0, 0, 0.3); padding: 0.45em 0.6em; }
.lb li.muted { display: block; text-align: center; font-family: var(--body); }
.lb .rank { width: 1.9em; height: 1.9em; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, 0.08); font-size: 0.9em; }
.lb .top1 .rank { background: var(--gold); color: #2b1a00; }
.lb .top2 .rank { background: #c9cdd3; color: #222; }
.lb .top3 .rank { background: #cd8a4a; color: #2b1500; }
.lb .name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; letter-spacing: 0.03em; }
.lb .name em { font-style: normal; font-size: 0.7em; padding: 0.1em 0.4em; border-radius: 0.3em; background: var(--gold); color: #2b1a00; }
.lb b { color: var(--gold); }
.lb li.me { border-color: var(--gold); }

.banner-note {
  display: flex;
  gap: 0.6em;
  align-items: flex-start;
  padding: 0.8em;
  border-radius: 0.9em;
  background: rgba(61, 134, 240, 0.12);
  border: 2px dashed rgba(61, 134, 240, 0.6);
  font-size: 0.85em;
  line-height: 1.4;
}
.banner-note .ico { color: #7fb2ff; width: 1.6em; height: 1.6em; }
.banner-note b { display: block; font-family: var(--display); letter-spacing: 0.06em; color: #a9cbff; }

/* --------------------------------------------------------------- Settings */

.setting {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 0.75em;
  width: 100%;
  padding: 0.85em;
  border: 2px solid var(--line);
  border-radius: 0.9em;
  background: var(--panel);
  text-align: left;
  cursor: pointer;
}
.setting > .ico { width: 1.5em; height: 1.5em; color: var(--gold); }
.setting span { display: flex; flex-direction: column; gap: 0.15em; }
.setting b { font: 1.05em var(--display); letter-spacing: 0.04em; }
.setting small { font-size: 0.8em; color: var(--muted); }
.switch {
  min-width: 3.6em;
  padding: 0.4em 0.6em;
  border-radius: 2em;
  text-align: center;
  background: #3a2f27;
  color: var(--muted);
  font: 0.9em var(--display);
  font-style: normal;
}
.switch.on { background: var(--ok); color: #0b2a0c; }
.setting.name { grid-template-columns: 1fr; cursor: default; }
.setting input {
  width: 100%;
  padding: 0.6em 0.75em;
  border-radius: 0.6em;
  border: 2px solid var(--line);
  background: #0c0907;
  color: var(--text);
  font: 1.1em var(--display);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  -webkit-user-select: text;
  user-select: text;
}
.setting input:focus { outline: none; border-color: var(--gold); }
.help p { color: var(--muted); font-size: 0.9em; line-height: 1.45; }
.help b { color: var(--text); }

/* --------------------------------------------------------------- Overlays */

.overlay {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding: calc(var(--safe-top) + 0.8em) 0.8em calc(var(--safe-bottom) + 0.8em);
  background: rgba(6, 4, 3, 0.66);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s, visibility 0.2s;
  z-index: 6;
}
.overlay.is-open { opacity: 1; visibility: visible; }
.overlay.arming .panel { pointer-events: none; }
.overlay-top { z-index: 20; background: rgba(6, 4, 3, 0.85); }
.panel {
  width: min(100%, 25em);
  max-height: 100%;
  overflow-y: auto;
  overscroll-behavior: contain;
  touch-action: pan-y;
  padding: 1.1em;
  border-radius: 1.2em;
  background: var(--panel);
  border: 2px solid #4a3828;
  box-shadow: 0 1em 3em rgba(0, 0, 0, 0.6);
  display: flex;
  flex-direction: column;
  gap: 0.6em;
  text-align: center;
  transform: scale(0.94);
  transition: transform 0.22s cubic-bezier(.2, 1.4, .4, 1);
}
.overlay.is-open .panel { transform: none; }
.panel h2 { margin: 0; font: 2.2em/1 var(--display); color: var(--gold); text-shadow: 0 0.07em 0 #5a3a00; }
.panel h2.lose { color: #ff7a6b; text-shadow: 0 0.07em 0 #5a1208; }
.panel .sub { margin: 0; color: var(--muted); font-size: 0.92em; line-height: 1.4; }
.panel .row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5em; }

.stars { display: flex; justify-content: center; gap: 0.3em; }
.star { width: 2.8em; height: 2.8em; color: #3a2f27; }
.star .ico { width: 100%; height: 100%; }
.star:nth-child(2) { transform: translateY(-0.35em) scale(1.12); }
.star.on { color: var(--gold); animation: starIn 0.4s cubic-bezier(.2, 1.6, .4, 1) both; animation-delay: calc(0.25s + var(--i) * 0.18s); filter: drop-shadow(0 0.1em 0 #8a5a06); }
.star:nth-child(2).on { animation-name: starIn2; }

.big-money { font: 2.6em/1 var(--display); color: var(--gold); text-shadow: 0 0.06em 0 #5a3a00; display: flex; flex-direction: column; gap: 0.15em; }
.big-money small { font-size: 0.32em; color: var(--muted); letter-spacing: 0.1em; text-shadow: none; }
.coins-earned { display: inline-flex; align-items: center; gap: 0.25em; color: var(--gold-hi); font-family: var(--display); }
.breakdown { list-style: none; margin: 0; padding: 0.5em 0.7em; border-radius: 0.7em; background: rgba(0, 0, 0, 0.3); font-size: 0.85em; display: flex; flex-direction: column; gap: 0.25em; }
.breakdown li { display: flex; justify-content: space-between; color: var(--muted); }
.breakdown b { color: var(--text); font-family: var(--display); }

.new-best {
  display: inline-flex;
  align-self: center;
  align-items: center;
  gap: 0.4em;
  padding: 0.35em 0.9em;
  border-radius: 2em;
  background: var(--gold);
  color: #2b1a00;
  font: 1.05em var(--display);
  animation: pop 0.5s ease-out;
}
.share-card {
  padding: 0.9em;
  border-radius: 0.9em;
  background:
    radial-gradient(circle at 80% 0%, rgba(255, 197, 49, 0.25), transparent 55%),
    repeating-linear-gradient(135deg, #2a1d12 0 10px, #24190f 10px 20px);
  border: 2px solid var(--gold-dark);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.1em;
}
.share-card small { font: 0.75em var(--display); letter-spacing: 0.3em; color: var(--gold); }
.share-card .sc-title { font: 0.9em var(--display); letter-spacing: 0.1em; color: var(--muted); }
.share-card b { font: 2.6em/1.05 var(--display); color: var(--gold); text-shadow: 0 0.06em 0 #5a3a00; }
.share-card em { font-style: normal; font-size: 0.8em; color: var(--muted); }
.streak-reward {
  display: flex;
  align-items: center;
  gap: 0.6em;
  padding: 0.6em 0.8em;
  border-radius: 0.8em;
  background: rgba(255, 138, 42, 0.14);
  border: 2px solid rgba(255, 138, 42, 0.5);
  text-align: left;
}
.streak-reward > .ico { width: 2em; height: 2em; color: #ff8a2a; }
.streak-reward b { display: block; font-family: var(--display); }
.streak-reward span { font: 0.9em var(--display); color: var(--gold-hi); display: inline-flex; gap: 0.4em; align-items: center; }

.ad-panel { align-items: center; }
.ad-ring {
  --p: 0;
  width: 6em;
  height: 6em;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: conic-gradient(var(--blue) calc(var(--p) * 360deg), rgba(255, 255, 255, 0.08) 0);
}
.ad-ring b {
  /* font-size 2em, so 2.4em here = 4.8em of the ring */
  width: 2.4em;
  height: 2.4em;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--panel);
  font: 2em var(--display);
}

/* ----------------------------------------------------- Perks, goals, missions */

.hud-perks {
  position: absolute;
  top: calc(var(--safe-top) + 3.6em);
  left: 0.6em;
  display: flex;
  gap: 0.25em;
  flex-wrap: wrap;
  max-width: 40%;
}
.hud-perks span {
  width: 1.75em;
  height: 1.75em;
  display: grid;
  place-items: center;
  border-radius: 0.5em;
  background: rgba(14, 10, 7, 0.8);
  border: 2px solid var(--c);
  color: var(--c);
}
.hud-perks .ico { width: 1em; height: 1em; }

.perk-panel { gap: 0.7em; }
.perk-cards { display: flex; flex-direction: column; gap: 0.55em; }
.perk-card {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 0.75em;
  padding: 0.8em 0.9em;
  border: 3px solid var(--c);
  border-radius: 1em;
  background: var(--panel-2);
  box-shadow: 0 0.25em 0 rgba(0, 0, 0, 0.5);
  text-align: left;
  cursor: pointer;
  transition: transform 0.1s ease, filter 0.15s ease;
  animation: perkIn 0.35s cubic-bezier(.2, 1.4, .4, 1) both;
}
.perk-card:nth-child(2) { animation-delay: 0.08s; }
.perk-card:nth-child(3) { animation-delay: 0.16s; }
.perk-card:hover { filter: brightness(1.12); }
.perk-card:active { transform: translateY(0.15em) scale(0.98); }
.perk-card:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.perk-ico {
  width: 2.8em;
  height: 2.8em;
  display: grid;
  place-items: center;
  border-radius: 0.8em;
  background: rgba(0, 0, 0, 0.35);
  color: var(--c);
}
.perk-ico .ico { width: 1.7em; height: 1.7em; }
.perk-txt { display: flex; flex-direction: column; gap: 0.2em; min-width: 0; }
.perk-txt b { font: 1.1em var(--display); letter-spacing: 0.03em; color: var(--c); }
.perk-txt span { font-size: 0.86em; color: var(--text); line-height: 1.3; }
.perk-card kbd { position: absolute; top: 0.45em; right: 0.55em; color: var(--muted); }
@keyframes perkIn { 0% { opacity: 0; transform: translateY(0.8em) scale(0.92); } 100% { opacity: 1; transform: none; } }

.perk-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35em; }
.perk-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.3em;
  padding: 0.25em 0.6em;
  border-radius: 2em;
  border: 2px solid var(--c);
  color: var(--c);
  font: 0.78em var(--display);
  letter-spacing: 0.03em;
}
.perk-chip .ico { width: 1.1em; height: 1.1em; }

.goals { display: flex; flex-direction: column; gap: 0.4em; text-align: left; }
.goal {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 0.15em 0.6em;
  padding: 0.5em 0.7em;
  border-radius: 0.7em;
  background: rgba(0, 0, 0, 0.3);
}
.goal-lbl { grid-column: 1 / -1; display: flex; align-items: center; gap: 0.3em; font: 0.68em var(--display); letter-spacing: 0.1em; color: var(--muted); }
.goal-lbl .ico { width: 1.1em; height: 1.1em; color: var(--gold); }
.goal-txt { font: 0.95em var(--display); min-width: 0; }
.goal-num { font: 0.85em var(--display); color: var(--gold-hi); display: inline-flex; align-items: center; gap: 0.25em; white-space: nowrap; }
.goal-bar { grid-column: 1 / -1; height: 0.4em; border-radius: 1em; background: rgba(255, 255, 255, 0.1); overflow: hidden; }
.goal-bar b { display: block; height: 100%; background: var(--gold); }
.goal.ready .goal-num { color: var(--ok); }
.goal.ready .goal-bar b { background: var(--ok); }

.missions { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5em; }
.missions li {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 0.6em;
  padding: 0.6em 0.7em;
  border-radius: 0.8em;
  background: rgba(0, 0, 0, 0.3);
}
.missions .m-ico { color: var(--gold); }
.missions .m-ico .ico { width: 1.4em; height: 1.4em; }
.missions li.done .m-ico { color: var(--ok); }
.missions .m-body { display: flex; flex-direction: column; gap: 0.25em; min-width: 0; }
.missions .m-body b { font: 0.95em var(--display); }
.missions .m-body small { font-size: 0.75em; color: var(--muted); }
.missions .m-bar { display: block; height: 0.4em; border-radius: 1em; background: rgba(255, 255, 255, 0.1); overflow: hidden; }
.missions .m-bar em { display: block; height: 100%; background: var(--gold); }
.missions .m-reward { font: 0.85em var(--display); display: inline-flex; align-items: center; gap: 0.2em; white-space: nowrap; }
.missions li.done { opacity: 0.7; }

/* ----------------------------------------------------------------- Toasts */

.toasts {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(var(--safe-top) + 6.6em);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4em;
  pointer-events: none;
  z-index: 30;
}
#stage:not([data-state="PLAYING"]) .toasts {
  top: auto;
  bottom: calc(var(--safe-bottom) + 0.9em);
  flex-direction: column-reverse;
}
.toast {
  display: flex;
  align-items: center;
  gap: 0.6em;
  max-width: 92%;
  padding: 0.6em 0.9em;
  border-radius: 0.9em;
  background: rgba(20, 14, 10, 0.95);
  border: 2px solid var(--gold);
  box-shadow: 0 0.5em 1.5em rgba(0, 0, 0, 0.5);
  opacity: 0;
  transform: translateY(-0.6em) scale(0.96);
  transition: opacity 0.22s, transform 0.22s;
}
.toast.in { opacity: 1; transform: none; }
.toast > .ico { width: 1.7em; height: 1.7em; color: var(--gold); }
.toast strong { display: block; font: 0.95em var(--display); letter-spacing: 0.03em; }
.toast span { display: inline-flex; align-items: center; gap: 0.35em; font-size: 0.82em; color: var(--muted); }

.boot-error, .noscript {
  position: absolute;
  inset: auto 1em 1em;
  padding: 1em;
  border-radius: 0.8em;
  background: #3a0f0b;
  color: #fff;
  font-family: var(--body);
  z-index: 50;
}
.noscript { position: fixed; }

/* ------------------------------------------------------------- Animations */

@keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.08); } }
@keyframes bump { 0% { transform: scale(1); } 50% { transform: scale(1.14); } 100% { transform: scale(1); } }
@keyframes pop { 0% { transform: translateX(-50%) scale(0.6); } 60% { transform: translateX(-50%) scale(1.12); } 100% { transform: translateX(-50%) scale(1); } }
.new-best { animation-name: popc; }
@keyframes popc { 0% { transform: scale(0.6); } 60% { transform: scale(1.1); } 100% { transform: scale(1); } }
@keyframes banner {
  0% { opacity: 0; transform: translateY(0.6em) scale(0.9); }
  12% { opacity: 1; transform: none; }
  78% { opacity: 1; transform: none; }
  100% { opacity: 0; transform: translateY(-0.6em); }
}
@keyframes hint { 0%, 100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-0.25em); } }
@keyframes starIn { 0% { transform: scale(0) rotate(-40deg); } 100% { transform: none; } }
@keyframes starIn2 { 0% { transform: translateY(-0.35em) scale(0) rotate(-40deg); } 100% { transform: translateY(-0.35em) scale(1.12); } }
@keyframes flash { 0% { background: rgba(255, 197, 49, 0.35); } 100% { background: var(--panel); } }

/* Reduced motion: keep feedback, drop movement. */
.reduced-motion *, .reduced-motion *::before, .reduced-motion *::after {
  animation-duration: 0.001s !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.001s !important;
}
.reduced-motion .hud-banner.on { animation: bannerStill 1.9s linear forwards !important; }
@keyframes bannerStill { 0%, 85% { opacity: 1; } 100% { opacity: 0; } }

/* ------------------------------------------------------------- Responsive */

/* Phones held sideways still work (letterboxed); suggest portrait. */
.rotate-hint { display: none; }
@media (orientation: landscape) and (max-height: 500px) and (pointer: coarse) {
  .rotate-hint {
    display: block;
    position: fixed;
    left: 1em;
    top: 50%;
    width: calc(50vw - 30vh - 2em);
    transform: translateY(-50%);
    margin: 0;
    color: var(--muted);
    font: 0.95em/1.3 var(--display);
    letter-spacing: 0.04em;
    text-align: center;
  }
}

@media (min-aspect-ratio: 3/4) and (min-width: 700px) {
  #stage { border-radius: 14px; }
}
@media (max-height: 600px) {
  .logo { margin-top: 0.4em; }
  .logo-a { font-size: 3.6em; }
  .logo-b { font-size: 2.8em; }
}
