/* Custom app palette. Principles: restrained colour, neutral hierarchy, semantic states.
   Reference: https://developer.apple.com/design/human-interface-guidelines/color */
:root{
 --canvas:#111113;--plot:#161618;--surface:#1c1c1e;--raised:#28282b;
 --border:#48484c;--secondary:#aeaeb4;--text:#f5f5f7;--ink:#111113;
 --accent:#8abaff;--positive:#79ce96;--negative:#ff9299;--warning:#eac17b;
 --positive-surface:#213429;--negative-surface:#39262a;
 --flight:#82b8ff;--market:#79ce96;--cashout:#f4c16e;--cashout-hover:#ffd18c;
 color:var(--text);background:var(--canvas);accent-color:var(--accent);
}
body{background:var(--canvas)}
.brand strong span,.home-heading h1 span{color:var(--text)}
.symbol,html[data-theme="violet"] .symbol{background:var(--text);color:var(--ink)}
.pill{background:var(--raised);border-color:var(--border);color:var(--secondary)}
.balance div,.balance div small{color:var(--text)}
.top,.arena,.bet-panel,.history,.game-card,.game-card.market,.panel,.hero{background:var(--surface);box-shadow:none}
.game-card.flight{--game-colour:var(--flight)}
.game-card.market{--game-colour:var(--market)}
.game-card .game-tag,.game-card .art-word,.game-card .card-action{color:var(--game-colour)}
.game-card .flight-path,.game-card .market-path{stroke:var(--game-colour)}
.game-card .game-art circle{fill:var(--game-colour)}
.game-card:hover,.game-card:focus-visible{border-color:var(--game-colour)}
.game-card{border-top:2px solid var(--game-colour)}
.primary,html[data-theme="violet"] .primary:not(.cash){background:var(--accent);color:var(--ink)}
.primary.cash{background:var(--cashout);color:var(--ink);border:1px solid var(--cashout)}
.primary.cash:enabled:hover{background:var(--cashout-hover)}
.primary:enabled:active{transform:translateY(1px)}
.primary:disabled{background:var(--raised);color:var(--secondary);border:1px solid var(--border);opacity:1}
.chart{background:var(--plot)}
.gridlines{background-image:linear-gradient(#ffffff0a 1px,transparent 1px),linear-gradient(90deg,#ffffff0a 1px,transparent 1px)}
.crash-page #flight-craft{filter:drop-shadow(0 0 3px #82b8ff40)}
.crash-page .arena{border-top:2px solid var(--flight)}
.bullbear-page .arena{border-top:2px solid var(--market)}
.crash-page .arena:has(.chart[data-phase="crashed"]){border-top-color:var(--negative)}
.crash-page .arena:has(.chart[data-phase="flying"]) #status{color:var(--flight)}
.crash-page .arena:has(.chart[data-phase="crashed"]) #status{color:var(--negative)}
.crash-page .arena:has(.chart[data-phase="betting"]) #status{color:var(--secondary)}
.crash-page .chart[data-phase="crashed"] #shade{opacity:.15}
.bullbear-page #chart-head{filter:drop-shadow(0 0 2px #ffffff60)}
.bullbear-page #stop-line{stroke-width:2.5}
.bullbear-page #loss-gap{stroke:var(--text)}
.bullbear-page .team.active.bull{color:var(--positive)}
.bullbear-page .team.active.bear{color:var(--negative)}
.game-page .play-dock:has(.cash:enabled){border-top-color:var(--cashout)}
.game-page .loss-distance{color:var(--text)}
.game-page .loss-distance.near-loss{color:var(--negative)}
.center,.bb-index{text-shadow:none}
.center div span{color:var(--text)}
.game-page .team.active.bull{background:var(--positive-surface);border-color:var(--positive)}
.game-page .team.active.bear{background:var(--negative-surface);border-color:var(--negative)}
.round-progress .current{background:var(--raised);border-color:var(--accent);color:var(--text)}
.milestones span{color:var(--secondary)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(prefers-contrast:more){:root{--secondary:#d1d1d6;--border:#8e8e93}}
/* Keep existing saved appearance choices, with restrained names and colours. */
html[data-theme="violet"]{--accent:#d1d1d6}
html[data-theme="violet"] .brand strong span{color:var(--text)}
.outcome-strip{color:var(--positive)}
.outcome-strip.lost{color:var(--negative)}
#fill{color:var(--ink)}
