:root {
  --bg: #070914;
  --bg2: #0e1430;
  --ice: #bfe9f5;
  --ice-hi: #f2faff;
  --ink: #e8eefc;
  --dim: rgba(232, 238, 252, .58);
  --glass: rgba(150, 190, 255, .12);
  --glass-hi: rgba(190, 225, 255, .3);
  --edge: rgba(190, 225, 255, .26);
  color-scheme: dark;
}
* { box-sizing: border-box; }
html, body {
  margin: 0; height: 100%; width: 100%; overflow: hidden;
  background: var(--bg); color: var(--ink);
  font: 14px/1.4 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  -webkit-text-size-adjust: 100%;
}
body { position: fixed; inset: 0; }
#game {
  position: absolute; inset: 0; overflow: hidden; outline: none;
  background: radial-gradient(120% 90% at 50% 10%, var(--bg2) 0%, var(--bg) 62%);
  touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
  padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
#stage { position: absolute; }
#screen {
  position: absolute; display: block; background: #000;
  image-rendering: pixelated; image-rendering: crisp-edges;
  box-shadow: 0 0 0 1px rgba(190, 225, 255, .08), 0 18px 60px rgba(0, 0, 0, .55);
}

/* ---- HUD buttons (top right) */
#hud { position: absolute; top: calc(8px + env(safe-area-inset-top)); right: calc(8px + env(safe-area-inset-right)); display: flex; gap: 6px; z-index: 5; }
.hud-btn {
  width: 36px; height: 36px; border-radius: 10px; padding: 7px; cursor: pointer;
  background: rgba(10, 14, 32, .55); border: 1px solid var(--edge); color: var(--ink);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  opacity: .72; transition: opacity .15s, background .15s;
}
.hud-btn:hover, .hud-btn:focus-visible { opacity: 1; background: rgba(30, 44, 90, .7); outline: none; }
.hud-btn svg { width: 100%; height: 100%; fill: currentColor; stroke: currentColor; }
.hud-btn svg rect, .hud-btn svg circle:not([fill="none"]) { stroke: none; }
#btn-mute .off { display: none; }
#btn-mute[aria-pressed="true"] .on { display: none; }
#btn-mute[aria-pressed="true"] .off { display: block; }
#btn-pause[hidden], #btn-full[hidden] { display: none; }

/* ---- touch pads */
#touch { position: absolute; inset: 0; pointer-events: none; z-index: 4; }
.pad { position: absolute; display: flex; gap: 12px; align-items: center; justify-content: center; pointer-events: auto; }
.tbtn {
  position: relative; display: flex; align-items: center; justify-content: center;
  border-radius: 22px; color: var(--ice-hi); font-weight: 700; letter-spacing: .06em;
  background: linear-gradient(180deg, rgba(160, 205, 255, .16), rgba(120, 160, 255, .07));
  border: 1.5px solid var(--edge);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .12), 0 6px 18px rgba(0, 0, 0, .35);
  transition: transform .06s, background .06s, border-color .06s;
  touch-action: none;
}
.tbtn svg { width: 46%; height: 46%; fill: currentColor; }
.tbtn.round { border-radius: 50%; }
.tbtn.small { font-size: 13px; }
.tbtn.down {
  transform: scale(.94);
  background: linear-gradient(180deg, rgba(191, 233, 245, .5), rgba(160, 205, 255, .25));
  border-color: rgba(242, 250, 255, .8);
}
.tbtn.jump { background: radial-gradient(circle at 50% 35%, rgba(191, 233, 245, .3), rgba(90, 140, 255, .12)); font-size: 17px; }
.tbtn .lbl { pointer-events: none; }

/* ---- overlays */
#loader {
  position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px;
  background: var(--bg); z-index: 20; transition: opacity .35s;
}
#loader.done { opacity: 0; pointer-events: none; }
.loader-title { font: 800 clamp(22px, 6vw, 40px)/1 system-ui, sans-serif; letter-spacing: .12em; color: var(--ice-hi); text-shadow: 0 0 24px rgba(191, 233, 245, .45); }
.loader-title span { color: #ff4a4a; text-shadow: 0 0 18px rgba(255, 60, 60, .45); }
.loader-bar { width: min(320px, 70vw); height: 6px; border-radius: 6px; background: rgba(190, 225, 255, .12); overflow: hidden; }
#loader-fill { height: 100%; width: 0; background: linear-gradient(90deg, var(--ice), #fff); border-radius: 6px; transition: width .2s; }
#loader-text { color: var(--dim); font-size: 13px; }
/* climbing-tower loader: the floor counter is the progress bar (site v2) */
.loader-tower { position: relative; width: 120px; height: 180px; image-rendering: pixelated;
  background: url("data:image/png;base64,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") 0 0 / 120px 180px repeat-y;
  border-left: 6px solid #2b2d5a; border-right: 6px solid #2b2d5a; box-shadow: 0 0 0 1px #0b0b1c, 0 18px 40px -16px #000;
  animation: loader-climb 1.1s linear infinite; }
@keyframes loader-climb { to { background-position: 0 180px; } }
.loader-car { position: absolute; left: 50%; bottom: 46px; width: 64px; height: 26px; margin-left: -32px; image-rendering: pixelated;
  background: url("data:image/png;base64,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") -320px 0 / 512px 26px no-repeat; animation: loader-hop .55s ease-in-out infinite alternate; }
@keyframes loader-hop { from { transform: translateY(0); background-position: -320px 0; } to { transform: translateY(-22px); background-position: -384px 0; } }
.loader-floor { font: 600 12px/1 ui-monospace, Menlo, Consolas, monospace; letter-spacing: .22em; color: var(--dim); }
.loader-floor b { font-size: 22px; letter-spacing: .08em; color: var(--ice-hi); margin-left: .5em; font-variant-numeric: tabular-nums; }
.loader-bar { width: min(180px, 50vw); height: 3px; }
@media (prefers-reduced-motion: reduce) { .loader-tower, .loader-car { animation: none; } }

#tap-hint {
  position: absolute; left: 50%; transform: translateX(-50%); top: calc(10px + env(safe-area-inset-top));
  padding: 6px 12px; border-radius: 999px; font-size: 12px; color: var(--ink);
  background: rgba(10, 14, 32, .7); border: 1px solid var(--edge); z-index: 6; pointer-events: none;
  animation: pulse 1.6s ease-in-out infinite;
}
@keyframes pulse { 50% { opacity: .55; } }
#toast {
  position: absolute; left: 50%; top: 18%; transform: translateX(-50%); max-width: min(440px, 86vw);
  padding: 12px 16px; border-radius: 12px; z-index: 30; text-align: center;
  background: rgba(10, 14, 32, .92); border: 1px solid var(--edge); box-shadow: 0 12px 40px rgba(0, 0, 0, .5);
}
#name-entry {
  position: absolute; left: 50%; top: 10%; transform: translateX(-50%); z-index: 25;
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: center;
  padding: 12px 14px; border-radius: 14px; width: min(360px, 92vw);
  background: rgba(10, 14, 32, .95); border: 1px solid var(--edge); box-shadow: 0 12px 40px rgba(0, 0, 0, .55);
}
#name-entry label { width: 100%; text-align: center; color: var(--ice-hi); font-weight: 600; }
#name-input {
  flex: 1; min-width: 0; font: 600 20px/1.2 ui-monospace, Menlo, monospace; letter-spacing: .15em; text-transform: uppercase;
  padding: 8px 10px; border-radius: 9px; border: 1px solid var(--edge); background: #0b1024; color: #fff;
}
#name-entry button, #info-close {
  font: 600 15px system-ui, sans-serif; padding: 9px 16px; border-radius: 9px; cursor: pointer;
  color: #06101e; background: var(--ice); border: 0;
}
#info {
  position: absolute; inset: 0; z-index: 28; display: flex; align-items: center; justify-content: center;
  background: rgba(4, 6, 14, .72); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); padding: 16px;
}
.info-card {
  width: min(520px, 100%); max-height: 100%; overflow: auto; padding: 20px 22px; border-radius: 16px;
  background: #0c1128; border: 1px solid var(--edge); box-shadow: 0 20px 60px rgba(0, 0, 0, .6);
}
.info-card h2 { margin: 0 0 10px; font-size: 22px; letter-spacing: .06em; color: var(--ice-hi); }
.info-card h2 span { color: #ff4a4a; }
.info-card a { color: var(--ice); }
.credit { margin: 0 0 14px; }
.keys { width: 100%; border-collapse: collapse; margin-bottom: 12px; font-size: 13px; }
.keys th { text-align: left; color: var(--ice); font-weight: 600; padding: 4px 10px 4px 0; white-space: nowrap; vertical-align: top; }
.keys td { color: var(--dim); padding: 4px 0; }
.fine { color: var(--dim); font-size: 12px; margin: 0 0 14px; }
#credit-line {
  position: absolute; left: 0; right: 0; bottom: calc(4px + env(safe-area-inset-bottom)); margin: 0; padding: 0 12px;
  text-align: center; font-size: 11px; color: rgba(232, 238, 252, .42); pointer-events: none; z-index: 3;
  line-height: 1.3;
}
/* The full credit must always be readable: wrap on narrow screens, never ellipsize. */
@media (max-width: 700px) {
  #credit-line { font-size: 10px; }
}
@media (max-height: 500px) and (orientation: landscape) {
  #credit-line { font-size: 9.5px; bottom: calc(2px + env(safe-area-inset-bottom)); }
}
#credit-line[hidden] { display: none; }
.noscript { position: absolute; top: 45%; width: 100%; text-align: center; }
[hidden] { display: none !important; }
