:root{color-scheme:dark;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;background:#090e13;color:#d9e0e4;--yellow:#d7b43c;--muted:#82919d}*{box-sizing:border-box}html,body{height:100%;width:100%;padding:0;margin:0;overflow:hidden;overscroll-behavior:none}body{height:100vh;height:100dvh;display:grid;place-items:center;background:radial-gradient(ellipse at center,#1a252e,#090e13 70%)}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:0}button:focus-visible{outline:2px solid var(--yellow);outline-offset:3px}[hidden]{display:none!important}main{width:min(100vw,460px);height:100%;background:#0c1218;display:grid;grid-template-rows:auto auto minmax(0,1fr) 48px 90px 46px;padding:max(16px,env(safe-area-inset-top)) 18px max(6px,env(safe-area-inset-bottom));gap:8px;overflow:hidden}header{display:flex;justify-content:space-between;align-items:center}.eyebrow{color:#8494a1;font:9px ui-monospace,monospace;letter-spacing:2px}h1{font-size:20px;letter-spacing:1px;margin:6px 0 10px;font-weight:500}.icon{background:#18232c;width:42px;height:42px;border:1px solid #31404d;border-radius:50%;font-size:21px}.icon[aria-pressed="true"]{color:#6b7984}.stats{display:flex;justify-content:space-between;padding:0 2px 8px}.stats div{display:flex;align-items:baseline;gap:5px}.stats small{font-size:10px;color:var(--muted)}.stats strong{font:22px ui-monospace,monospace;font-weight:500;color:#e3d39e}.stats span{font-size:10px;color:var(--muted)}#board{position:relative;min-height:0;display:grid;place-items:center;overflow:hidden}canvas{display:block;max-width:100%;max-height:100%;touch-action:none}.sheet{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0c1218cc;backdrop-filter:blur(2px)}.intro-card,.result-card{text-align:center;padding:22px;width:min(310px,95%);background:#101923f2;border:1px solid #354452;border-radius:12px;box-shadow:0 12px 30px #0005}h2{font-size:21px;font-weight:500;margin:14px 0}p{font-size:13px;line-height:1.8;color:#b3c0c9}.mini-mark{font-size:27px;color:var(--yellow)}.primary{background:var(--yellow);color:#171c20;width:100%;padding:13px;border-radius:6px;font-weight:600;margin:8px 0}.secondary{background:#27343f;width:100%;padding:12px;border-radius:6px}.intro-card small{display:block;color:#81929e;font-size:10px;margin-top:8px}.feedback{position:relative;display:flex;align-items:center;justify-content:center}.feedback p{font-size:11px;text-align:center;margin:0;color:#a5b5c1;letter-spacing:.2px}#power{position:absolute;right:0;bottom:0;color:#90bfd9;font:11px ui-monospace,monospace}nav{display:flex;justify-content:center;align-items:center;gap:12px}nav>div{display:flex;flex-direction:column;gap:4px}nav button{width:52px;height:40px;border-radius:6px;background:#1e2b36;border:1px solid #435362;color:#c4d0d9;font-size:23px}nav button:active{background:#34495a;color:#e5c95d}nav .stop{width:36px;height:36px;font-size:13px;opacity:.8}footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #22303b;gap:6px}footer button{background:transparent;color:#96a8b6;font-size:11px;padding:10px 0;min-height:40px}#seed{font:8px ui-monospace,monospace;color:#536674;letter-spacing:1px}dialog{width:min(360px,90vw);border:1px solid #415461;border-radius:12px;background:#121d27;padding:24px}dialog::backdrop{background:#000b}dialog h2{font-size:20px}.muted{color:#8395a3;font-size:12px}#record{color:#d7b43c;font-size:12px}@media(max-height:650px){main{padding-top:6px;grid-template-rows:auto auto minmax(0,1fr) 32px 76px 34px;gap:4px}h1{font-size:17px;margin-bottom:5px}header .eyebrow{font-size:8px}.stats{padding-bottom:3px}.stats strong{font-size:18px}nav button{height:34px;width:46px}footer button{min-height:32px}.feedback p{font-size:10px}}@media(max-width:340px){main{padding-left:12px;padding-right:12px}.stats{gap:4px}.stats small{font-size:9px}.stats strong{font-size:18px}}

#scene{position:absolute;top:0;left:0;width:100%;height:70px;pointer-events:none}#scene:not([hidden])~#canvas{max-height:calc(100% - 74px);margin-top:74px}#giftDialog{text-align:center;max-height:95dvh;overflow:auto}#giftCanvas{width:100%;height:250px}.intro-card h2{font-size:18px}

#memoryBanner{position:absolute;inset:0 0 auto;height:70px;z-index:1}#scene{position:static;display:block;width:100%;height:70px}#memoryBanner:not([hidden])~#canvas{max-height:calc(100% - 74px);margin-top:74px}

#moonMeeting{height:180px;display:flex;align-items:center;justify-content:center;gap:22px;color:#d7b43c;font:46px monospace}

#board[data-mode="journey"]{grid-template-rows:70px minmax(0,1fr);row-gap:4px}#memoryBanner{position:static;inset:auto;width:100%;height:70px;grid-row:1;align-self:start}#board #canvas{margin:0;max-height:100%}#board[data-mode="journey"] #canvas{grid-row:2}
#board[data-mode="journey"] #canvas{max-height:100%!important;margin:0!important;align-self:center}

#encounter{z-index:4;background:#151c24bb}#encounter[data-type="bump"] .result-card{border-color:#ba7867}#encounter[data-type="bump"] h2{color:#e39780}#encounter[data-type="catch"] h2{color:#9dd7ee}

.sheet{z-index:3}

main:has(#ownership:not([hidden])){grid-template-rows:auto auto auto minmax(0,1fr) 48px 90px 46px}#ownership{padding:0 2px 4px}.race-count{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px}.race-count>span:first-child{color:#d7b43c}.race-count>span:last-child{color:#bf897e}.race-count small{font-size:9px;text-align:center;color:#8e9ba5}.race-track{height:5px;background:#27333e;margin-top:7px;display:flex;border-radius:3px;overflow:hidden}#youShare{background:#d7b43c}#ghostShare{background:#b8786c}@media(max-height:650px){main:has(#ownership:not([hidden])){grid-template-rows:auto auto auto minmax(0,1fr) 32px 76px 34px}}

@media(max-height:650px){.intro-card,.result-card{padding:12px}.intro-card .mini-mark{display:none}.intro-card h2,.result-card h2{font-size:18px;margin:8px 0}.intro-card p,.result-card p{font-size:12px;line-height:1.5;margin:8px 0}.intro-card .primary,.result-card .primary{padding:10px;margin:6px 0}.intro-card small{margin-top:4px}}

#cashout{position:absolute;bottom:0;width:auto;padding:8px 12px;font-size:11px;z-index:2;background:#35434d}#sameMap{margin-bottom:8px;font-size:12px}.race-count small{max-width:150px}#resultStats{font-size:12px}#record{font-size:11px}

#resultPercent{display:block;font:46px ui-monospace,monospace;color:#d7b43c;margin:12px 0}.result-card{max-height:100%;overflow:auto}#youBeans{white-space:nowrap}@media(max-height:650px){#resultPercent{font-size:32px;margin:6px 0}}

#result .result-card{padding:14px 18px}#result h2{font-size:18px;margin:8px 0}#resultPercent{font-size:36px;margin:8px 0}#resultStats{line-height:1.5;margin:8px 0}#result #record{line-height:1.45;margin:8px 0}#result button{padding:10px;margin:5px 0}

body[data-mode="challenge"]{font-family:monospace}body[data-mode="challenge"] header .eyebrow,body[data-mode="challenge"] .stats>div:nth-child(2),body[data-mode="challenge"] #bestLabel,body[data-mode="challenge"] #bestUnit,body[data-mode="challenge"] #raceGoal,body[data-mode="challenge"] #seed,body[data-mode="challenge"] #status,body[data-mode="challenge"] #mode,body[data-mode="challenge"] #record,body[data-mode="challenge"] #resultPercent{display:none!important}
body[data-mode="challenge"] main{grid-template-rows:auto auto auto minmax(0,1fr) 22px 90px 30px!important}body[data-mode="challenge"] header{padding-bottom:10px}body[data-mode="challenge"] h1{font-size:20px;letter-spacing:1px}body[data-mode="challenge"] .stats{display:flex;justify-content:space-between;border:0;padding:4px 0 12px}body[data-mode="challenge"] .stats>div:first-child{display:flex;align-items:center;gap:10px}body[data-mode="challenge"] .stats small{font-size:11px}body[data-mode="challenge"] #remaining{font-size:16px}body[data-mode="challenge"] #best{font-size:18px;color:#e87f77;letter-spacing:5px}body[data-mode="challenge"] .race-count{font-size:12px;letter-spacing:0}body[data-mode="challenge"] .race-count b{font-weight:normal}body[data-mode="challenge"] .race-track{height:4px;border-radius:0;margin-top:9px}body[data-mode="challenge"] .feedback{justify-content:center;padding:0}body[data-mode="challenge"] #power{font-size:10px;padding:2px 0;border:0;background:none}body[data-mode="challenge"] footer{justify-content:flex-end;border:0}body[data-mode="challenge"] button,body[data-mode="challenge"] .intro-card,body[data-mode="challenge"] .result-card{border-radius:0;box-shadow:none}body[data-mode="challenge"] .intro-card,body[data-mode="challenge"] .result-card{border:2px solid #8fa3b4;background:#0c141f;padding:24px!important}body[data-mode="challenge"] #resultLabel{font-size:20px;letter-spacing:1px;color:#e87f77}body[data-mode="challenge"] #resultTitle{font-size:14px;margin:22px 0!important;color:#d7b43c}body[data-mode="challenge"] #resultStats>span{display:block;margin:13px 0;font-size:12px}body[data-mode="challenge"] .result-you{color:#d7b43c}body[data-mode="challenge"] .result-ghost{color:#e87f77}body[data-mode="challenge"] #resultStats{margin-bottom:22px}body[data-mode="challenge"] .sheet{background:rgba(5,10,17,.8);backdrop-filter:none}body[data-mode="challenge"] #introText{font:11px/2.2 monospace;color:#a7b5c1}body[data-mode="challenge"] .intro-card h2{font-size:22px}body[data-mode="challenge"] #intro small{font-size:9px}body[data-mode="challenge"] .primary,body[data-mode="challenge"] .secondary{font-size:12px;letter-spacing:1px}
.pixel-letter{display:inline-block;width:.72em;height:1em;background-repeat:no-repeat;background-position:center;background-size:auto 100%;color:transparent;vertical-align:-.08em;white-space:pre}.pixel-word{display:inline-block;white-space:nowrap}.pixel-text{font-family:monospace!important;line-height:1.4}
@media(max-height:650px){body[data-mode="challenge"] main{grid-template-rows:auto auto auto minmax(0,1fr) 18px 76px 24px!important}body[data-mode="challenge"] .intro-card,body[data-mode="challenge"] .result-card{padding:14px!important}body[data-mode="challenge"] #resultTitle{margin:12px 0!important}}

.race-count em{font-style:normal}

.pixel-readable{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pixel-space{display:inline-block;width:.72em}

.pixel-word,.pixel-letter,.pixel-space{font-size:inherit!important}#best .pixel-letter{margin-left:5px}

/* Bitmap titles use whole 2px or 3px units; small HUD text uses native font rendering. */
body[data-mode="challenge"]{font-family:Consolas,"Courier New",monospace}body[data-mode="challenge"] .race-count{font:700 14px/1.5 Consolas,"Courier New",monospace}body[data-mode="challenge"] .stats small{font:12px Consolas,"Courier New",monospace}body[data-mode="challenge"] #remaining{font:700 20px Consolas,"Courier New",monospace}body[data-mode="challenge"] #power{font:700 12px Consolas,"Courier New",monospace}body[data-mode="challenge"] #introText{font:13px/1.8 Consolas,"Courier New",monospace}body[data-mode="challenge"] #intro small{font:11px Consolas,"Courier New",monospace}body[data-mode="challenge"] #resultStats>span{font:700 14px/1.6 Consolas,"Courier New",monospace}
.pixel-letter{width:12px;height:14px;background-size:10px 14px;vertical-align:0}.pixel-space{width:8px}.pixel-text{letter-spacing:0!important;line-height:1.6}h1.pixel-text .pixel-letter,#introTitle.pixel-text .pixel-letter,#resultLabel.pixel-text .pixel-letter{width:18px;height:21px;background-size:15px 21px}#best .pixel-letter{width:14px;height:14px;margin-left:5px;background-size:10px 14px}.pixel-word{vertical-align:middle}

/* Rival counts grow toward one another; the middle is unclaimed stock. */
body[data-mode="challenge"] .race-track{position:relative;display:block}body[data-mode="challenge"] #youShare,body[data-mode="challenge"] #ghostShare{position:absolute;top:0;height:100%;display:block}body[data-mode="challenge"] #youShare{left:0}body[data-mode="challenge"] #ghostShare{right:0}body[data-mode="challenge"] #resultStats{display:flex;justify-content:space-between;gap:20px;margin:18px 0 24px}body[data-mode="challenge"] #resultStats>span{margin:0;white-space:nowrap}

body[data-mode="challenge"] .stats>div:first-child>span{font:11px Consolas,"Courier New",monospace;color:#7c8996;margin-left:6px;white-space:nowrap}

body[data-mode="challenge"]{background:#101113}body[data-mode="challenge"] main{background:#141517}body[data-mode="challenge"] #power{display:none!important}body[data-mode="challenge"] .race-track{background:#353638}body[data-mode="challenge"] #youShare{background:#f7dc3c}body[data-mode="challenge"] #ghostShare{background:#a4a5a7}body[data-mode="challenge"] .race-count>span:last-child{color:#d3d4d6}body[data-mode="challenge"] .result-ghost{color:#d3d4d6}body[data-mode="challenge"] .intro-card,body[data-mode="challenge"] .result-card{background:#17181a;border-color:#737579}

/* Shared castle palette, with a clear, sparse maze during play. */
body{background:radial-gradient(ellipse at center,#25283d,#0d1221 70%)}main{background:#0d1221}body[data-mode="challenge"] .intro-card,body[data-mode="challenge"] .result-card{background:#11182b;border-color:#626881}body[data-mode="challenge"] nav button{background:#25283d;border-color:#515b76}body[data-mode="challenge"] .race-track{background:#2a3148}body[data-mode="challenge"] #youShare{background:#f7dc3c}body[data-mode="challenge"] #ghostShare{background:#b87883}

/* Native iOS long-press must not select game controls or open a callout. */
button,button *,#canvas,nav,nav *,.pixel-text,.pixel-text *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
nav,nav *{touch-action:none}
