.games-shell { --games-line: #ffffff14; --games-muted: #a6a3b6; color: #eeecf4; font-family: var(--clash, 'Clash Grotesk', sans-serif); max-width: 1220px; margin: 0 auto; padding: 10px 0 40px; }
.games-shell [hidden] { display: none !important; }
.games-shell button,.games-shell input { font: inherit; }
.games-shell button { cursor: pointer; }
.games-shell button:disabled { cursor: not-allowed; opacity: .5; }
.games-shell :focus-visible { outline: 3px solid #debcff; outline-offset: 4px; }
.games-shell h1,.games-shell h2,.games-shell p { margin: 0; }
.games-heading { margin: 10px 0 30px; }
.games-heading h1 { font-size: clamp(30px,3.1vw,46px); letter-spacing: -.035em; font-weight: 600; margin: 10px 0; }
.games-heading p { line-height: 1.6; }
.games-eyebrow { font: 11px 'JetBrains Mono',monospace; letter-spacing: .15em; color: #b8a5d3; }
.games-muted { color: var(--games-muted); line-height: 1.6; font-size: 14px; }
.games-practice { display: inline-flex; align-items: center; gap: 7px; color: #d4c2eb; border: 1px solid #b291dc3b; border-radius: 6px; padding: 7px 10px; font-size: 12px; white-space: nowrap; background: #ad7de50b; }
.games-practice::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: #bca0dd; }
.games-button { border: 1px solid #ffffff24; background: #ffffff07; color: #ece8f5; border-radius: 7px; padding: 11px 16px; min-height: 44px; line-height: 1.3; transition: background .15s,border-color .15s; }
.games-button:hover:not(:disabled) { border-color: #ba8be9; background: #a855f718; }
.games-primary { background: #b785eb; border-color: #b785eb; color: #1e102e; font-weight: 600; }
.games-primary:hover:not(:disabled) { background: #c69bf2; color: #1e102e; }
.games-danger { color: #ffc3ad; border-color: #de84604d; }
.games-back { border-color: transparent; background: transparent; padding-left: 0; color: #b6acbf; }
.games-setup { margin-top: 26px; padding: 28px; border: 1px solid var(--games-line); border-radius: 12px; background: #15131a; }
.games-shell fieldset { border: 0; padding: 0; min-width: 0; }
.games-shell legend { font-size: 15px; font-weight: 600; padding: 0; margin-bottom: 14px; }
.games-tiers { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; }
.games-tier { display: flex; align-items: start; gap: 11px; padding: 20px 16px; border: 1px solid #ffffff1c; border-radius: 8px; cursor: pointer; }
.games-tier:has(input:checked) { border-color: #b48adf; background: #a855f70c; }
.games-tier input { margin-top: 5px; accent-color: #b48adf; min-width: 17px; width: 17px; height: 17px; }
.games-tier strong,.games-tier span span { display: block; }
.games-tier strong { margin-bottom: 6px; }
.games-tier .games-muted { font-size: 13px; }
.games-setup-notes { display: grid; grid-template-columns: repeat(3,1fr); gap: 26px; padding: 34px 0; margin: 26px 0 14px; border-top: 1px solid var(--games-line); border-bottom: 1px solid var(--games-line); }
.games-setup-notes strong { display: block; margin: 12px 0 6px; font-size: 15px; }
.games-step { color: #b694d6; font: 12px 'JetBrains Mono',monospace; }
.games-sound { display: flex; align-items: center; gap: 13px; font-size: 12px; }
.games-sound .games-button { font-size: 12px; padding: 7px 12px; }
.games-sound label { display: flex; align-items: center; gap: 8px; color: #b5acc0; }
.games-sound input { width: 85px; height: 30px; accent-color: #b48adf; padding: 0; }
.games-setup > .games-primary { margin-top: 22px; }
.games-setup-screen { max-width: 850px; margin-inline: auto; --games-line: #b4bea52b; --games-muted: #adb7a5; }
.games-setup-screen .games-heading { margin: 8px 0 15px; }.games-setup-screen .games-heading h1 { font-size: 32px; margin-block: 7px; }
.games-setup-screen .games-eyebrow,.games-setup-screen .games-step { color: #c5be93; }
.games-setup-screen .games-setup { margin-top: 18px; padding: 22px; background: #1b2922; border: 2px solid #647557; border-radius: 3px; }
.games-setup-screen .games-tier { border-radius: 3px; padding: 15px; font-weight: 400; }.games-setup-screen .games-tier strong { color: #e6e8cc; font-weight: 600; }.games-setup-screen .games-tier:has(input:checked) { border-color: #d0bc7d; background: #cab9700c; }
.games-setup-screen .games-tier input,.games-setup-screen .games-sound input { accent-color: #d0bc7d; }
.games-setup-screen .games-setup-notes { margin-block: 20px 12px; padding-block: 22px; gap: 20px; }
.games-setup-screen .games-button { border-radius: 3px; }.games-setup-screen .games-primary { background: #d3bf7c; border-color: #dfd2a5; color: #25291c; box-shadow: inset 0 -3px #96875a; }
.games-setup-screen .games-primary:hover:not(:disabled) { background: #e4d397; color: #25291c; }
.games-setup-screen .games-practice { color: #d0d9bc; border-color: #afbb8a40; background: #97a7640b; border-radius: 3px; }
/* Minecart Dispatch session: a timber-framed board with brass controls. Layout
   metrics are unchanged; visual tokens live on the session. */
.games-shell:has(.games-session) { padding-block: 0 12px; }
.games-session { --games-line: #e8d9a61f; --games-muted: #b7bf9f; --mc-ink: #f5ecd0; --mc-panel: #18211b; --mc-panel-2: #212c24; --mc-edge: #0b100d; --mc-wood: #6b4a2d; --mc-wood-hi: #a97f4a; --mc-brass: #dcb75e; --mc-brass-hi: #f4d98f; --mc-brass-lo: #8f6c2c; --mc-go: #86f08f; --mc-hold: #ff6a4d; --mc-warn: #ffc247; --mc-iron: #c9d0d3; --mc-gold: #ffd25a; --mc-diamond: #86ecf2; max-width: min(960px,100%,calc((100dvh - 320px) * 1.6)); margin-inline: auto; }
.games-session-header { display: flex; align-items: center; justify-content: space-between; gap: 10px 20px; margin-bottom: 10px; }
.games-topline { display: flex; align-items: center; justify-content: flex-end; gap: 6px 12px; flex-wrap: wrap; max-width: 500px; }
.games-topline .games-back { font-size: 12px; min-height: 44px; padding: 7px 0; }
.games-topline .games-practice { order: 3; padding: 4px 7px; font-size: 10px; }
.games-topline .games-sound { gap: 8px; }
.games-topline .games-sound .games-button { min-height: 44px; padding-inline: 8px; }
.games-topline .games-sound input { width: 58px; }
.games-board-heading { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; flex: 1 0 auto; }
.games-board-heading .games-eyebrow { color: var(--mc-brass); font-size: 10px; letter-spacing: .18em; }
.games-board-heading h1 { font-size: clamp(20px,2vw,25px); margin-top: 3px; letter-spacing: -.02em; color: var(--mc-ink); }
.games-tier-label { font: 10px 'JetBrains Mono',monospace; color: #cfc59c; white-space: nowrap; padding: 3px 7px; border: 1px solid #dcb75e55; background: #dcb75e12; }
.games-session .games-practice { color: #e2dcbd; border-color: #dcb75e45; background: #dcb75e0d; border-radius: 0; }
.games-session .games-practice::before { background: var(--mc-brass); border-radius: 0; }
.games-session .games-button { border-radius: 0; border: 2px solid #3a4a3e; background: #222e26; color: var(--mc-ink); box-shadow: inset 0 2px #ffffff12, 0 3px var(--mc-edge); transition: transform .06s, box-shadow .06s, background .12s, border-color .12s; }
.games-session .games-button:hover:not(:disabled) { border-color: #6f8564; background: #2b3a30; }
.games-session .games-button:active:not(:disabled) { transform: translateY(2px); box-shadow: inset 0 2px #ffffff12, 0 1px var(--mc-edge); }
.games-session .games-back { border-color: transparent; background: transparent; box-shadow: none; color: #c9c3a8; }
.games-session .games-back:hover:not(:disabled) { background: transparent; border-color: transparent; color: var(--mc-ink); }
.games-session .games-primary { background: var(--mc-brass); border-color: var(--mc-brass-hi); color: #241c0c; font-weight: 600; box-shadow: inset 0 -3px var(--mc-brass-lo), inset 0 2px #fff3c855, 0 3px var(--mc-edge); }
.games-session .games-primary:hover:not(:disabled) { background: #e8c56d; border-color: #fbe6a6; color: #241c0c; }
.games-hud { display: grid; grid-template-columns: repeat(4,1fr); background: var(--mc-panel); border-bottom: 2px solid var(--mc-edge); }
.games-hud > div { position: relative; padding: 7px 13px; border-right: 2px solid var(--mc-edge); box-shadow: inset 0 1px #ffffff0d, inset 1px 0 #ffffff08; min-width: 0; }
.games-hud > div:last-child { border-right: 0; }
.games-hud span { display: block; font: 600 9px/1.3 var(--clash,sans-serif); letter-spacing: .14em; text-transform: uppercase; color: #a9b296; margin-bottom: 2px; }
.games-hud strong { display: inline-block; font: 18px/1.25 'JetBrains Mono',monospace; color: var(--mc-ink); font-variant-numeric: tabular-nums; text-shadow: 0 2px #000a; }
.games-hud > div:nth-child(2) strong { color: var(--mc-gold); }
.games-hud > div[data-trend=up] strong { animation: mc-score-up .45s steps(4) both; }
.games-hud > div[data-trend=down] strong { animation: mc-score-down .45s steps(4) both; }
.games-hud > div[data-urgent=true] strong { color: #ffb08a; animation: mc-urgent 1s steps(2) infinite; }
.games-hud > div[data-progress]::after { content: ''; position: absolute; left: 13px; right: 13px; bottom: 4px; height: 3px; background: linear-gradient(90deg,var(--mc-go) calc(var(--mc-progress,0) * 100%),#ffffff14 0); box-shadow: 0 1px var(--mc-edge); }
.games-hud > div[data-reached=true]::after { background: var(--mc-go); box-shadow: 0 0 6px #86f08f88; }
.games-hud > div[data-left] strong { letter-spacing: .1em; }
.games-hud > div[data-left]::after { content: ''; position: absolute; right: 12px; top: 50%; width: 30px; height: 8px; transform: translateY(-15%); background: linear-gradient(90deg,var(--mc-lamp-1) 0 8px,transparent 8px 11px,var(--mc-lamp-2) 11px 19px,transparent 19px 22px,var(--mc-lamp-3) 22px 30px); box-shadow: 0 2px var(--mc-edge); --mc-lamp-1: #3a2a26; --mc-lamp-2: #3a2a26; --mc-lamp-3: #3a2a26; }
.games-hud > div[data-left='1']::after { --mc-lamp-1: var(--mc-hold); }
.games-hud > div[data-left='2']::after { --mc-lamp-1: var(--mc-warn); --mc-lamp-2: var(--mc-warn); }
.games-hud > div[data-left='3']::after { --mc-lamp-1: var(--mc-go); --mc-lamp-2: var(--mc-go); --mc-lamp-3: var(--mc-go); }
@keyframes mc-score-up { 0% { transform: translateY(-3px) scale(1.18); color: #fff3b0; } 100% { transform: none; } }
@keyframes mc-score-down { 0%,50% { transform: translateX(-2px); color: #ff8a6a; } 25%,75% { transform: translateX(2px); color: #ff8a6a; } 100% { transform: none; } }
@keyframes mc-urgent { 50% { color: #ff6a4d; } }
.games-warning-text { color: #ffbe82; }
.games-railway { position: relative; border: 3px solid #2a1c11; border-radius: 0; overflow: hidden; background: var(--mc-panel); box-shadow: inset 0 0 0 2px var(--mc-wood), 0 0 0 2px var(--mc-edge), 0 6px 0 var(--mc-edge), 0 10px 26px #0006; }
.games-board-wrap { position: relative; align-self: start; background: #4f7040; border-block: 2px solid var(--mc-edge); overflow: hidden; }
.games-canvas { width: 100%; aspect-ratio: 8/5; position: relative; }
.games-canvas canvas { display: block; image-rendering: pixelated; touch-action: pan-y !important; max-width: 100%; }
.games-board-overlay { position: absolute; z-index: 3; inset: 0; background: #0c120ee6; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 12px; padding: 25px; text-align: center; pointer-events: none; }
.games-board-overlay strong { font: 600 26px/1.1 var(--clash,sans-serif); letter-spacing: .12em; text-transform: uppercase; color: var(--mc-brass-hi); text-shadow: 0 3px #000; }.games-board-overlay p { max-width: 370px; color: #d0d6c6; line-height: 1.5; }
.games-notice { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 8px 12px; background: var(--mc-panel-2); box-shadow: inset 0 1px #ffffff0d; }
.games-notice strong { font-size: 13px; color: var(--mc-ink); }.games-notice p { margin-top: 3px; font-size: 11px; line-height: 1.4; color: #aeb79f; }
.games-railway[data-phase=cleared] .games-notice strong { color: var(--mc-go); }
.games-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.games-actions .games-button { white-space: nowrap; font-size: 13px; }
.games-traffic { display: flex; align-items: start; justify-content: space-between; flex-wrap: wrap; gap: 2px 14px; margin: 0; border-top: 2px solid var(--mc-edge); border-left: 3px solid var(--mc-brass); padding: 5px 10px; min-height: 28px; color: #e2dbb8; background: #141c17; font: 10px/1.5 'JetBrains Mono',monospace; letter-spacing: .02em; }
.games-queue-summary { color: #a9b49c; }
.games-backlog { border-left-color: var(--mc-warn); color: #ffd9a0; background: #2a2012; }
/* In-yard plaques sit under their lamp or lever so the art stays visible. */
.games-yard-controls { position: absolute; z-index: 2; pointer-events: none; inset: 0; container-type: size; }
.games-yard-control.games-button { position: absolute; transform: translate(-50%,-50%); min-width: 48px; min-height: 46px; padding: 0 3px; border: 0; background: transparent; box-shadow: none; color: var(--mc-ink); border-radius: 0; pointer-events: auto; touch-action: pan-y; font: 600 10px var(--clash,sans-serif); line-height: 1.2; }
.games-yard-control.games-button:active:not(:disabled) { transform: translate(-50%,-50%); }
.games-yard-control.games-button span { position: absolute; left: 50%; top: calc(50% + 1.1cqw); transform: translateX(-50%); display: flex; align-items: center; gap: 4px; white-space: nowrap; padding: 3px 5px 3px 4px; border: 2px solid #c9b88a; background: #1a1f19f2; box-shadow: 0 2px #000b; font-variant-numeric: tabular-nums; letter-spacing: .04em; }
.games-yard-control.games-button span::before { content: ''; width: 6px; height: 6px; flex: none; background: var(--mc-brass); box-shadow: 0 0 0 1px #000; }
.games-yard-signal span::before { background: var(--mc-go) !important; box-shadow: 0 0 0 1px #000,0 0 6px var(--mc-go) !important; }
.games-yard-signal[data-go=false] span::before { background: var(--mc-hold) !important; box-shadow: 0 0 0 1px #000,0 0 6px var(--mc-hold) !important; }
.games-yard-signal[data-go=true] span { border-color: #7fcf86; }
.games-yard-control[data-go=false] span { background: #2a1813f2; border-color: #ef8a6c; color: #ffe3cf; }
.games-yard-control[data-locked=true] span { background: #2b2412f2; border-color: var(--mc-warn); color: #fff0b2; }
.games-yard-control[data-locked=true] span::after { content: ''; width: 5px; height: 5px; background: currentColor; box-shadow: 0 -3px 0 -1px currentColor; }
.games-yard-control.games-button:hover:not(:disabled) { background: #fff6d00f; border-color: transparent; }
.games-yard-control.games-button:hover:not(:disabled) span { border-color: #fff4cf; }
.games-yard-control.games-button:focus-visible { outline: 3px solid #fff8c9; outline-offset: 1px; background: #e4f1b722; z-index: 4; }
.games-yard-control.games-button:disabled { opacity: .7; }
.games-yard-signal-detail { position: absolute; top: calc(50% + 1.1cqw + 22px); left: 50%; transform: translateX(-50%); display: block; padding: 1px 4px; white-space: nowrap; color: #e9ecd5; background: #11160fe8; border: 1px solid #ffffff2a; font: 600 10px/1.2 'JetBrains Mono',monospace; pointer-events: none; }
.games-yard-signal-detail[data-cargo=gold] { color: var(--mc-gold); }.games-yard-signal-detail[data-cargo=diamond] { color: var(--mc-diamond); }.games-yard-signal-detail[data-cargo=iron] { color: var(--mc-iron); }
.games-yard-signal-detail.games-warning-text { color: #ffcf98; border-color: var(--mc-hold); animation: mc-urgent .8s steps(2) infinite; }
.games-yard-depot { position: absolute; transform: translate(-50%,-50%); padding: 3px 6px; background: #171c17f2; color: var(--mc-iron); border: 2px solid var(--mc-iron); font: 600 10px/1 var(--clash,sans-serif); letter-spacing: .08em; white-space: nowrap; box-shadow: 0 2px #000b; }
.games-yard-depot[data-cargo=gold] { border-color: var(--mc-gold); color: var(--mc-gold); }
.games-yard-depot[data-cargo=diamond] { border-color: var(--mc-diamond); color: var(--mc-diamond); }
.minecart-toast { position: absolute; z-index: 4; transform: translateX(-50%); padding: 6px 12px; background: #120f0cf0; border: 2px solid var(--mc-hold,#ff6a4d); box-shadow: 0 3px #000c; color: #ffe4d4; font: 600 12px/1.3 var(--clash,sans-serif); letter-spacing: .03em; white-space: nowrap; pointer-events: none; animation: mc-toast .22s steps(3) both; }
@keyframes mc-toast { from { transform: translate(-50%,-8px); opacity: 0; } to { transform: translate(-50%,0); opacity: 1; } }
.games-yard-guide { padding: 6px 12px; border-top: 2px solid var(--mc-edge); font-size: 11px; color: #b5bda9; background: var(--mc-panel); }
.games-yard-guide summary { cursor: pointer; width: fit-content; }
.games-yard-guide summary:focus-visible { outline: 2px solid #d2b5ec; outline-offset: 4px; }
.games-yard-guide p { line-height: 1.65; max-width: 760px; margin: 10px 0; }
.games-finished .games-hud,.games-finished .games-notice,.games-finished .games-traffic,.games-finished .games-yard-guide { visibility: hidden; }
.games-finished .games-canvas { pointer-events: none; }
.games-result-yard { position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; object-fit: contain; image-rendering: pixelated; pointer-events: none; }
.games-results { position: absolute; z-index: 6; inset: 0; display: grid; place-items: center; margin: 0; padding: 12px; background: radial-gradient(#0d1410a8,#0a0f0cdd); }
.games-report-panel { --mc-outcome: var(--mc-go); position: relative; width: min(100%,610px); box-sizing: border-box; padding: 22px 26px; background: #161d18f8; border: 3px solid #2a1c11; box-shadow: inset 0 0 0 2px var(--mc-wood), inset 0 4px 0 2px var(--mc-outcome), 0 0 0 2px var(--mc-edge), 0 8px 0 #000a; animation: games-report-arrive .24s steps(4) both; }
.games-results[data-outcome=unfinished] .games-report-panel { --mc-outcome: var(--mc-warn); }
.games-results[data-outcome=collision] .games-report-panel,.games-results[data-outcome=abandoned] .games-report-panel { --mc-outcome: var(--mc-hold); }
.games-results:focus { outline: none; }
.games-report-heading { display: flex; align-items: center; }
.games-report-heading .games-eyebrow { color: var(--mc-outcome,#dcb75e); letter-spacing: .2em; }
.games-report-location { color: #b9bf9e; font-size: 12px; }
.games-report-practice { margin-top: 10px; }
.games-report-practice .games-practice { color: #e2dcbd; border-color: #dcb75e45; background: #dcb75e0d; }
.games-results h2 { font-size: clamp(21px,2vw,27px); margin: 5px 0; color: var(--mc-ink,#f2f0d8); letter-spacing: -.025em; line-height: 1.15; }
.games-results .games-actions { margin-top: 14px; }
.games-results .games-actions .games-button { min-height: 44px; }
.games-result-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); margin: 14px 0 12px; gap: 8px; padding-top: 12px; border-top: 2px solid #ffffff12; }
.games-result-grid > div { padding: 7px 9px; background: #0f1411; box-shadow: inset 0 0 0 1px #ffffff10, 0 2px #000a; }
.games-result-grid dt { color: #aeb79f; font: 600 9px/1.3 var(--clash,sans-serif); letter-spacing: .1em; text-transform: uppercase; margin-bottom: 3px; }
.games-result-grid dd { margin: 0; font: 24px/1.15 'JetBrains Mono',monospace; color: var(--mc-ink,#e7ead6); font-variant-numeric: tabular-nums; }
.games-result-grid > div:first-child dd { color: var(--mc-gold,#e6d594); }
.games-report-note.games-muted { font-size: 11px; line-height: 1.4; color: #a9b49c; }
@keyframes games-report-arrive { from { transform: translateY(10px); opacity: 0; } to { transform: none; opacity: 1; } }
.games-confirm { max-width: min(460px,calc(100vw - 36px)); margin: auto; background: #201a2a; color: #eee9f6; border: 1px solid #aa85c6; border-radius: 12px; padding: 28px; font-family: var(--clash,sans-serif); }.games-confirm::backdrop { background: #08050bd1; }.games-confirm h2 { margin-bottom: 12px; }.games-confirm p { color: #baafc8; font-size: 14px; line-height: 1.7; }.games-confirm .games-actions { margin-top: 24px; }
.games-error { padding: 35px; background: #201a25; border: 1px solid #a377ae55; border-radius: 10px; }.games-error p { margin: 14px 0 24px; color: #b4a6bf; }.games-error button { margin-right: 12px; }
.games-screenreader { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
@media(max-width:900px) { .games-session { max-width: 100%; }.games-session-header { gap: 8px; }.games-topline { max-width: 340px; gap: 3px 10px; }.games-topline .games-practice { order: initial; }.games-topline .games-sound { margin-left: auto; }.games-notice { flex-wrap: wrap; } }
@media(max-width:600px) { .games-shell { padding: 8px 0 24px; }.games-heading { margin-bottom: 22px; }.games-tiers,.games-setup-notes { grid-template-columns: 1fr; }.games-setup { padding: 20px; }.games-setup-notes { gap: 20px; padding: 24px 0; }.games-tier { padding: 15px; } }
@media(max-width:600px) {
  .games-session-header { display: grid; grid-template-columns: 1fr; margin-bottom: 8px; }
  .games-board-heading { flex-direction: row; align-items: center; justify-content: space-between; padding-left: 9px; }
  .games-board-heading h1 { font-size: 22px; }.games-tier-label { font-size: 9px; }
  .games-topline { max-width: none; justify-content: space-between; gap: 0 6px; }
  .games-topline .games-practice { font-size: 10px; order: 3; margin-left: auto; }
  .games-topline .games-sound { gap: 7px; margin-left: auto; }
  .games-topline .games-sound label { font-size: 10px; gap: 5px; }.games-topline .games-sound input { width: 64px; }
  .games-hud > div { padding: 7px; }.games-hud span { font-size: 8px; letter-spacing: .08em; }.games-hud strong { font-size: 16px; }
  .games-hud > div[data-left]::after { width: 22px; height: 6px; right: 6px; top: auto; bottom: 7px; transform: none; background: linear-gradient(90deg,var(--mc-lamp-1) 0 6px,transparent 6px 8px,var(--mc-lamp-2) 8px 14px,transparent 14px 16px,var(--mc-lamp-3) 16px 22px); }
  .games-hud > div[data-progress]::after { left: 7px; right: 7px; bottom: 3px; }
  .games-notice { padding: 8px 10px; gap: 7px; }.games-notice strong { font-size: 12px; }
  .games-notice .games-actions { width: 100%; }.games-notice .games-actions button { flex: 1; padding: 9px; }
  .games-traffic { font-size: 9px; padding: 5px 8px; }
  .games-yard-control.games-button { font-size: 9px; }.games-yard-control.games-button span { padding: 2px 3px; gap: 3px; border-width: 1px; }.games-yard-control.games-button span::before { width: 4px; height: 4px; }
  .games-yard-signal-detail { font-size: 9px; top: calc(50% + 1.1cqw + 17px); }
  .games-yard-depot { font-size: 9px; padding: 2px 3px; border-width: 1px; }
  .minecart-toast { font-size: 10px; padding: 4px 8px; }
  .games-board-overlay strong { font-size: 21px; }.games-board-overlay p { font-size: 12px; }
  .games-results { padding: 8px; }.games-report-panel { padding: 14px; }
  .games-results h2 { font-size: 21px; }.games-report-location { font-size: 11px; }
  .games-report-practice .games-practice { font-size: 10px; padding: 5px 7px; }
  .games-result-grid { gap: 6px; margin-block: 11px; padding-top: 10px; }
  .games-result-grid > div { padding: 5px 6px; }
  .games-result-grid dt { font-size: 8px; line-height: 1.2; min-height: 20px; }.games-result-grid dd { font-size: 20px; }
  .games-results .games-actions .games-button { flex: 1; padding: 9px 7px; font-size: 12px; }
}
/* A wide, short window keeps the railway at 8:5 and moves its compact status
   column alongside it. Native controls use the same board rectangle as Phaser. */
@media(min-width:901px) and (max-height:700px) {
  .games-session { width: 100%; max-width: min(100%,calc((100dvh - 172px) * 1.6 + 222px)); }
  .games-session-header { margin-bottom: 7px; }
  .games-board-heading { flex-direction: column; align-items: flex-start; gap: 3px; }
  .games-board-heading h1 { font-size: 21px; }
  .games-topline { gap: 4px 10px; }.games-topline .games-practice { order: initial; }
  .games-topline .games-sound label { font-size: 0; gap: 0; }.games-topline .games-sound input { width: 45px; }
  .games-railway { display: grid; grid-template-columns: minmax(0,1fr) 218px; grid-template-rows: auto auto 1fr auto; }
  .games-board-wrap { grid-column: 1; grid-row: 1 / 5; border-block: 0; border-right: 2px solid var(--mc-edge); }
  .games-hud { grid-column: 2; grid-row: 1; grid-template-columns: repeat(2,1fr); }
  .games-hud > div { padding: 4px 9px 7px; }.games-hud > div:nth-child(2) { border-right: 0; }.games-hud > div:nth-child(-n+2) { border-bottom: 2px solid var(--mc-edge); }.games-hud span { font-size: 8px; }.games-hud strong { font-size: 16px; }
  .games-hud > div[data-left]::after { width: 22px; height: 6px; right: 7px; background: linear-gradient(90deg,var(--mc-lamp-1) 0 6px,transparent 6px 8px,var(--mc-lamp-2) 8px 14px,transparent 14px 16px,var(--mc-lamp-3) 16px 22px); }
  .games-hud > div[data-progress]::after { left: 9px; right: 9px; bottom: 3px; }
  .games-notice { grid-column: 2; grid-row: 2; flex-direction: column; align-items: stretch; padding: 6px 9px; gap: 6px; }
  .games-notice strong { font-size: 11px; }.games-notice p { font-size: 10px; line-height: 1.3; }
  .games-notice .games-actions { gap: 5px; }.games-notice .games-button { flex: 1; padding: 7px; font-size: 11px; }
  .games-traffic { grid-column: 2; grid-row: 3; flex-direction: column; justify-content: flex-start; align-content: start; font-size: 9px; line-height: 1.4; padding: 5px 8px; border-left-width: 0; border-top-width: 2px; }
  .games-yard-guide { grid-column: 2; grid-row: 4; padding: 5px 9px; font-size: 10px; }
  .games-yard-guide[open] { position: absolute; z-index: 5; inset: auto 0 0 auto; max-width: 330px; max-height: 90%; overflow: auto; background: var(--mc-panel); border: 2px solid var(--mc-wood); }
  .games-report-panel { display: grid; grid-template-columns: 1fr 1.2fr; gap: 8px 20px; padding: 14px 18px; max-width: 680px; }
  .games-report-heading { grid-column: 1; grid-row: 1; }.games-results h2 { font-size: 21px; }
  .games-report-practice { grid-column: 1; grid-row: 2; margin: 0; }.games-report-practice .games-practice { font-size: 10px; padding: 5px 7px; }
  .games-result-grid { grid-column: 2; grid-row: 1 / 4; margin: 0; padding: 0 0 0 14px; border-top: 0; border-left: 2px solid #ffffff12; align-content: center; gap: 6px; }
  .games-result-grid dt { font-size: 8px; line-height: 1.2; }.games-result-grid dd { font-size: 20px; }
  .games-report-note { grid-column: 1; grid-row: 3; }.games-report-note.games-muted { font-size: 10px; }
  .games-results .games-actions { grid-column: 1 / 3; grid-row: 4; margin-top: 2px; }
}
@media(prefers-reduced-motion:reduce) { .games-shell * { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }

/* Last Line: a matchday console around Indus Park. Layout metrics are
   unchanged; visual tokens live on the session and setup. */
.last-line-setup,.last-line-session { --ll-ink: #eef3e6; --ll-muted: #a8bfae; --ll-panel: #0e1714; --ll-panel-2: #13211c; --ll-panel-3: #1a2d26; --ll-edge: #050a08; --ll-bezel: #2a4037; --ll-bezel-hi: #4c6c5f;
  --ll-led: #ffc84a; --ll-led-lo: #a8741a; --ll-pitch: #8dffa2; --ll-pitch-lo: #3f9e5a; --ll-goal: #ff6a55; --ll-cyan: #7fe6ff; --ll-gold: #ffd877; --ll-chalk: #f2f6ea; --games-muted: var(--ll-muted); }
.last-line-setup .games-setup { background: var(--ll-panel-2); border-color: var(--ll-bezel-hi); box-shadow: inset 0 2px #ffffff0a, 0 4px var(--ll-edge); }
.last-line-setup .games-eyebrow,.last-line-setup .games-step { color: var(--ll-led); }.last-line-setup .games-tier:has(input:checked) { border-color: var(--ll-led); background: #ffc84a0d; }
.last-line-setup .games-tier input,.last-line-setup .games-sound input { accent-color: var(--ll-led); }
.last-line-setup .games-primary { background: #f2c45a; border-color: #ffe39a; color: #231904; font-weight: 600; box-shadow: inset 0 -3px var(--ll-led-lo), inset 0 2px #ffffff55, 0 3px var(--ll-edge); }
.last-line-setup .games-primary:hover:not(:disabled) { background: #ffd877; border-color: #fff0c4; color: #231904; }
.last-line-session { max-width: min(940px,100%); margin: 0 auto; }
.games-shell:has(.last-line-session) { padding-block: 0 10px; }
.last-line-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.last-line-header h1 { font-size: 26px; margin-block: 3px; letter-spacing: -.02em; color: var(--ll-ink); }.last-line-header .games-eyebrow { color: var(--ll-led); font-size: 10px; letter-spacing: .2em; }
.last-line-tier { font: 9px 'JetBrains Mono',monospace; color: #cfe6d4; padding: 3px 7px; border: 1px solid #8dffa24d; background: #8dffa20d; white-space: nowrap; }
.last-line-top { display: flex; gap: 5px 12px; align-items: center; flex-wrap: wrap; justify-content: flex-end; max-width: 460px; }.last-line-top .games-practice { font-size: 10px; }.last-line-top .games-sound input { width: 65px; accent-color: var(--ll-led); }
.last-line-session .games-practice { color: #e6efdf; border-color: #ffc84a40; background: #ffc84a0a; border-radius: 0; }
.last-line-session .games-practice::before { background: var(--ll-led); border-radius: 0; box-shadow: 0 0 6px var(--ll-led); }
.last-line-session .games-button { border-radius: 0; border: 2px solid var(--ll-bezel); background: var(--ll-panel-2); color: var(--ll-ink); box-shadow: inset 0 2px #ffffff10, 0 3px var(--ll-edge); transition: transform .06s, box-shadow .06s, background .12s, border-color .12s; }
.last-line-session .games-button:hover:not(:disabled) { border-color: var(--ll-bezel-hi); background: var(--ll-panel-3); }
.last-line-session .games-button:active:not(:disabled) { transform: translateY(2px); box-shadow: inset 0 2px #ffffff10, 0 1px var(--ll-edge); }
.last-line-session .games-back { border-color: transparent; background: transparent; box-shadow: none; color: #b7cbbd; }
.last-line-session .games-back:hover:not(:disabled) { background: transparent; border-color: transparent; color: var(--ll-ink); }
.last-line-session :focus-visible { outline-color: var(--ll-gold); }
.last-line-panel { position: relative; background: var(--ll-panel); border: 3px solid #08100d; border-radius: 0; overflow: hidden; box-shadow: inset 0 0 0 2px var(--ll-bezel), 0 0 0 2px var(--ll-edge), 0 6px 0 var(--ll-edge), 0 10px 26px #0006; }
/* The scoreboard: LED readouts, a score pulse, target and attack progress. */
.last-line-hud { display: grid; grid-template-columns: 1fr 1.6fr 1fr 1fr; background: #070d0b; border-bottom: 2px solid var(--ll-edge); }
.last-line-hud > div { position: relative; padding: 9px 14px; border-right: 2px solid var(--ll-edge); box-shadow: inset 0 1px #ffffff0d, inset 1px 0 #ffffff08; min-width: 0; }.last-line-hud > div:last-child { border-right: 0; }
.last-line-hud span { display: block; font: 600 10px/1.3 var(--clash,sans-serif); letter-spacing: .12em; color: var(--ll-muted); margin-bottom: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.last-line-hud strong { display: inline-block; font: 20px 'JetBrains Mono',monospace; color: var(--ll-led); font-variant-numeric: tabular-nums; text-shadow: 0 0 8px #ffc84a55, 0 2px #000a; white-space: nowrap; }
.last-line-hud [data-stat=saves] strong { color: var(--ll-chalk); text-shadow: 0 0 8px #f2f6ea40, 0 2px #000a; }.last-line-hud [data-stat=saves][data-met=true] strong { color: var(--ll-pitch); text-shadow: 0 0 8px #8dffa266, 0 2px #000a; }
.last-line-hud [data-stat=goals] strong { color: #cfd8cf; text-shadow: 0 2px #000a; }.last-line-hud [data-stat=goals][data-conceded=true] strong { color: var(--ll-goal); text-shadow: 0 0 8px #ff6a5555, 0 2px #000a; }
.last-line-hud [data-stat=attack] strong { color: var(--ll-cyan); text-shadow: 0 0 8px #7fe6ff44, 0 2px #000a; }
.last-line-hud [data-progress]::after { content: ''; position: absolute; left: 14px; right: 14px; bottom: 5px; height: 3px; background: linear-gradient(90deg,var(--ll-bar) var(--ll-fill,0%),#ffffff14 0); box-shadow: 0 1px var(--ll-edge); --ll-bar: var(--ll-chalk); }
.last-line-hud [data-stat=saves][data-met=true]::after { --ll-bar: var(--ll-pitch); box-shadow: 0 0 6px #8dffa288; }.last-line-hud [data-stat=attack]::after { --ll-bar: var(--ll-cyan); }
.last-line-hud [data-progress='1'] { --ll-fill: 10%; }.last-line-hud [data-progress='2'] { --ll-fill: 20%; }.last-line-hud [data-progress='3'] { --ll-fill: 30%; }.last-line-hud [data-progress='4'] { --ll-fill: 40%; }.last-line-hud [data-progress='5'] { --ll-fill: 50%; }
.last-line-hud [data-progress='6'] { --ll-fill: 60%; }.last-line-hud [data-progress='7'] { --ll-fill: 70%; }.last-line-hud [data-progress='8'] { --ll-fill: 80%; }.last-line-hud [data-progress='9'] { --ll-fill: 90%; }.last-line-hud [data-progress='10'] { --ll-fill: 100%; }
.last-line-hud [data-trend=up] strong { animation: ll-score-up .45s steps(4) both; }.last-line-hud [data-trend=down] strong { animation: ll-score-down .45s steps(4) both; }
@keyframes ll-score-up { 0% { transform: translateY(-3px) scale(1.18); color: #fff3b0; } 100% { transform: none; } }
@keyframes ll-score-down { 0%,50% { transform: translateX(-2px); color: var(--ll-goal); } 25%,75% { transform: translateX(2px); color: var(--ll-goal); } 100% { transform: none; } }
.last-line-pitch { position: relative; background: #3a763a; }.last-line-canvas { width: 100%; aspect-ratio: 8/5; }.last-line-canvas canvas { display: block; max-width: 100%; image-rendering: pixelated; touch-action: pan-y !important; }
.last-line-paused { position: absolute; inset: 0; display: flex; gap: 12px; flex-direction: column; justify-content: center; align-items: center; background: #050a08d9; padding: 20px; text-align: center; }
.last-line-paused strong { font: 600 26px/1.1 var(--clash,sans-serif); letter-spacing: .1em; color: var(--ll-led); text-shadow: 0 3px #000; }.last-line-paused p { font-size: 13px; color: #c6d6c8; }
/* The ticker: an LED strip whose lamp follows the phase the rules report. */
.last-line-strip { --ll-tone: var(--ll-led); display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; background: #070d0b; border-top: 2px solid var(--ll-edge); box-shadow: inset 0 1px #ffffff0a; }
.last-line-strip strong { position: relative; padding-left: 15px; font: 11px 'JetBrains Mono',monospace; letter-spacing: .06em; color: var(--ll-tone); text-shadow: 0 0 7px color-mix(in srgb,var(--ll-tone) 45%,transparent); }
.last-line-strip strong::before { content: ''; position: absolute; left: 0; top: 50%; width: 7px; height: 7px; transform: translateY(-50%); background: var(--ll-tone); box-shadow: 0 0 0 1px #000, 0 0 7px var(--ll-tone); }
.last-line-strip span { font: 11px 'JetBrains Mono',monospace; color: #b9cdbd; }
.last-line-strip[data-tone=approach],.last-line-strip[data-tone=reset] { --ll-tone: #c8d8cc; }.last-line-strip[data-tone=read] { --ll-tone: var(--ll-led); }.last-line-strip[data-tone=commit] { --ll-tone: var(--ll-pitch); }
.last-line-strip[data-tone=committed] { --ll-tone: var(--ll-gold); }.last-line-strip[data-tone=catch] { --ll-tone: var(--ll-pitch); }.last-line-strip[data-tone=parry] { --ll-tone: var(--ll-gold); }.last-line-strip[data-tone=goal] { --ll-tone: var(--ll-goal); }
.last-line-strip[data-tone=paused] { --ll-tone: #8fa597; }.last-line-strip[data-tone=paused] strong::before { animation: ll-blink 1s steps(2) infinite; }
@keyframes ll-blink { 50% { opacity: .3; } }
/* Controls: dark movement pads and gold save buttons with key hints. */
.last-line-controls { display: grid; grid-template-columns: 2fr 3fr; gap: 16px; padding: 10px 12px; background: var(--ll-panel-2); border-top: 2px solid var(--ll-edge); }.last-line-moves,.last-line-saves { display: flex; gap: 6px; }
.last-line-controls .games-button { position: relative; flex: 1; min-width: 0; min-height: 50px; font-size: 12px; padding: 8px 6px; font-weight: 600; letter-spacing: .02em; }
.last-line-move { touch-action: none; user-select: none; }
.last-line-session .last-line-move.games-button { background: #1b2c26; }
.last-line-session .last-line-move.games-button[data-held=true] { background: #24443a; border-color: var(--ll-pitch-lo); box-shadow: inset 0 2px #0006, 0 1px var(--ll-edge); transform: translateY(2px); }
.last-line-move::after { position: absolute; top: 4px; right: 5px; font: 600 8px/1 'JetBrains Mono',monospace; opacity: .5; }
.last-line-move[data-move=left]::after { content: 'A' / ''; }.last-line-move[data-move=right]::after { content: 'D' / ''; }
.last-line-save { touch-action: pan-y; }
.last-line-session .last-line-save.games-button { background: #e9b84a; color: #231904; border-color: #ffe39a; box-shadow: inset 0 -3px var(--ll-led-lo), inset 0 2px #ffffff55, 0 3px var(--ll-edge); }
.last-line-session .last-line-save.games-button:hover:not(:disabled) { background: #ffd877; border-color: #fff0c4; color: #231904; }
.last-line-session .last-line-save.games-button:disabled { opacity: 1; background: #2a3a33; border-color: #34483f; color: #8fa597; box-shadow: inset 0 2px #ffffff0a, 0 3px var(--ll-edge); }
.last-line-controls[data-window=open] .last-line-save.games-button:not(:disabled) { box-shadow: inset 0 -3px var(--ll-led-lo), inset 0 2px #ffffff55, 0 3px var(--ll-edge), 0 0 0 2px #ffc84a55; }
.last-line-session .last-line-controls[data-committed=left] [data-save=left].games-button,.last-line-session .last-line-controls[data-committed=center] [data-save=center].games-button,.last-line-session .last-line-controls[data-committed=right] [data-save=right].games-button { background: #2c5a44; border-color: var(--ll-pitch); color: #e8ffee; box-shadow: inset 0 2px #0006, 0 0 0 2px #8dffa244; }
.last-line-save small { display: block; font: 9px 'JetBrains Mono',monospace; margin-top: 3px; opacity: .8; }
.last-line-footer { display: flex; gap: 10px; justify-content: space-between; align-items: flex-start; padding: 8px 12px; background: var(--ll-panel); border-top: 2px solid var(--ll-edge); box-shadow: inset 0 1px #ffffff0a; }
.last-line-actions { display: flex; gap: 8px; flex-wrap: wrap; }.last-line-actions .games-button { min-height: 44px; font-size: 12px; padding: 9px 14px; }
.last-line-session .last-line-primary.games-button { background: #f2c45a; border-color: #ffe39a; color: #231904; font-weight: 600; box-shadow: inset 0 -3px var(--ll-led-lo), inset 0 2px #ffffff55, 0 3px var(--ll-edge); }
.last-line-session .last-line-primary.games-button:hover:not(:disabled) { background: #ffd877; border-color: #fff0c4; color: #231904; }
.last-line-guide { font-size: 11px; color: #b9cdbd; max-width: 340px; }.last-line-guide summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; color: #d4e4d6; }.last-line-guide[open] summary { color: var(--ll-led); }
.last-line-guide p { line-height: 1.6; padding: 0 0 8px 10px; border-left: 2px solid #ffc84a40; }
/* One persistent round report; its accent follows the outcome. */
.last-line-results { position: absolute; inset: 0; z-index: 10; display: grid; place-items: center; background: radial-gradient(#050a08a8,#050a08e0); padding: 18px; overflow: auto; }.last-line-results:focus { outline: none; }
.last-line-report { --ll-outcome: var(--ll-led); width: min(580px,100%); box-sizing: border-box; padding: 26px; background: #0f1a16fa; border: 3px solid #08100d; box-shadow: inset 0 0 0 2px var(--ll-bezel), inset 0 4px 0 2px var(--ll-outcome), 0 0 0 2px var(--ll-edge), 0 8px 0 #000a; animation: ll-report-arrive .24s steps(4) both; }
.last-line-results[data-outcome=met] .last-line-report { --ll-outcome: var(--ll-pitch); }.last-line-results[data-outcome=abandoned] .last-line-report { --ll-outcome: var(--ll-goal); }
.last-line-report .games-eyebrow { color: var(--ll-outcome); letter-spacing: .2em; }
.last-line-report h2 { font-size: 28px; margin: 10px 0; color: var(--ll-ink); line-height: 1.15; }.last-line-report-location { color: #b5ccb6; font-size: 12px; margin-bottom: 14px !important; text-transform: capitalize; }.last-line-report .games-practice { font-size: 11px; }
.last-line-report dl { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px; padding: 14px 0 0; margin: 18px 0; border-top: 2px solid #ffffff12; }
.last-line-report dl > div { padding: 7px 9px; background: #070d0b; box-shadow: inset 0 0 0 1px #ffffff10, 0 2px #000a; min-width: 0; }
.last-line-report dt { font: 600 10px/1.4 var(--clash,sans-serif); letter-spacing: .06em; color: var(--ll-muted); }
.last-line-report dd { font: 23px 'JetBrains Mono',monospace; margin: 7px 0 0; color: var(--ll-ink); font-variant-numeric: tabular-nums; }.last-line-report dl > div:first-child dd { color: var(--ll-led); }
.last-line-report-note { font-size: 11px; line-height: 1.5; color: #b9cdbd; margin-bottom: 16px !important; }
.last-line-report-target { display: block; margin-top: 5px; font: 10px/1.5 'JetBrains Mono',monospace; color: #bdcdb5; }
@keyframes ll-report-arrive { from { transform: translateY(10px); opacity: 0; } to { transform: none; opacity: 1; } }
@media(prefers-reduced-motion:reduce) { .last-line-session *,.last-line-session *::before,.last-line-session *::after { animation: none !important; transition: none !important; } }
@media(min-width:901px) { .last-line-session { max-width: min(860px,100%,calc((100dvh - 430px) * 1.6)); } }
@media(min-width:901px) and (max-height:700px) { .last-line-session { max-width: min(760px,100%); } }
@media(max-width:600px) {
  .last-line-hud { grid-template-columns: .9fr 1.35fr .75fr 1.1fr; }
  .last-line-header { display: block; margin-bottom: 6px; }.last-line-header > div:first-child { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; }.last-line-header h1 { font-size: 20px; }.last-line-tier { font-size: 8px; margin-left: auto; padding: 2px 5px; }.last-line-top { max-width: none; justify-content: space-between; gap: 0 5px; }.last-line-top .games-back { font-size: 11px; }.last-line-top .games-practice { order: 3; font-size: 9px; padding: 4px; margin-left: auto; }.last-line-top .games-sound { gap: 5px; }.last-line-top .games-sound label { font-size: 0; gap: 0; }.last-line-top .games-sound input { width: 44px; }.last-line-top .games-sound button { font-size: 11px; padding: 6px; }
  .last-line-hud > div { padding: 8px; }.last-line-hud span { font-size: 9px; letter-spacing: .06em; }.last-line-hud strong { font-size: 16px; }.last-line-hud [data-progress]::after { left: 8px; right: 8px; bottom: 3px; }
  .last-line-strip { padding: 9px 8px; gap: 4px; }.last-line-strip strong { font-size: 9px; padding-left: 12px; }.last-line-strip strong::before { width: 6px; height: 6px; }.last-line-strip span { font-size: 9px; }
  .last-line-controls { grid-template-columns: 1fr; gap: 7px; padding: 8px; }.last-line-controls .games-button { min-height: 46px; }.last-line-footer { flex-wrap: wrap; gap: 0; padding: 6px 8px; }.last-line-actions { width: 100%; }.last-line-actions .games-button { flex: 1; }.last-line-guide { width: 100%; max-width: none; }
  .last-line-results { padding: 8px; }.last-line-report { padding: 16px; }.last-line-report h2 { font-size: 23px; }.last-line-report dl { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; margin: 12px 0; padding: 10px 0 0; }.last-line-report dd { font-size: 21px; }
}
/* Tower Control: a tower-cab console around the coastal airport. Layout
   metrics are unchanged; visual tokens live on the session and setup. */
.tower-setup,.tower-session { --tw-ink: #e8f1ec; --tw-muted: #9fb6b4; --tw-panel: #111b20; --tw-panel-2: #16242a; --tw-panel-3: #1c2e35; --tw-edge: #060b0e; --tw-bezel: #2a3d45; --tw-bezel-hi: #4a6670;
  --tw-go: #7dffb0; --tw-go-lo: #3f9e70; --tw-amber: #ffc247; --tw-red: #ff5a45; --tw-cyan: #8fe3ff; --tw-gold: #ffe27a; --tw-narrow: #34b3bb; --tw-heavy: #e88a34; --games-muted: var(--tw-muted); }
.tower-setup .games-setup { background: var(--tw-panel-2); border-color: var(--tw-bezel-hi); box-shadow: inset 0 2px #ffffff0a, 0 4px var(--tw-edge); }
.tower-setup .games-eyebrow,.tower-setup .games-step { color: var(--tw-go); }.tower-setup .games-tier:has(input:checked) { border-color: var(--tw-go); background: #7dffb00d; }
.tower-setup .games-tier input { accent-color: var(--tw-go); }
.tower-setup .games-primary { background: #84e6b3; border-color: #b8f6d3; color: #062016; font-weight: 600; box-shadow: inset 0 -3px var(--tw-go-lo), inset 0 2px #ffffff55, 0 3px var(--tw-edge); }
.tower-setup .games-primary:hover:not(:disabled) { background: #a3f2c8; border-color: #d4fbe4; color: #062016; }
.tower-session { max-width: min(1120px,100%); margin-inline: auto; }
.games-shell:has(.tower-session) { padding-block: 0 10px; }
.tower-header { display: flex; justify-content: space-between; gap: 14px; align-items: center; margin: 0 0 10px; }
.tower-header h1 { font-size: 27px; letter-spacing: -.025em; margin: 3px 0; color: var(--tw-ink); }
.tower-tier { font: 10px 'JetBrains Mono',monospace; color: #c5ecd6; white-space: nowrap; padding: 3px 7px; border: 1px solid #7dffb04d; background: #7dffb00d; }
.tower-header .games-eyebrow { color: var(--tw-go); font-size: 10px; letter-spacing: .2em; }.tower-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 4px 12px; max-width: 470px; }
.tower-top .games-practice { font-size: 10px; padding: 5px 8px; }.tower-top .games-back { font-size: 12px; }.tower-top .games-sound input { width: 65px; accent-color: var(--tw-go); }
.tower-session .games-practice { color: #d6ebe0; border-color: #7dffb040; background: #7dffb00a; border-radius: 0; }
.tower-session .games-practice::before { background: var(--tw-go); border-radius: 0; box-shadow: 0 0 6px var(--tw-go); }
.tower-session .games-button { border-radius: 0; border: 2px solid var(--tw-bezel); background: var(--tw-panel-2); color: var(--tw-ink); box-shadow: inset 0 2px #ffffff10, 0 3px var(--tw-edge); transition: transform .06s, box-shadow .06s, background .12s, border-color .12s; }
.tower-session .games-button:hover:not(:disabled) { border-color: var(--tw-bezel-hi); background: var(--tw-panel-3); }
.tower-session .games-button:active:not(:disabled) { transform: translateY(2px); box-shadow: inset 0 2px #ffffff10, 0 1px var(--tw-edge); }
.tower-session .tower-primary.games-button { background: #84e6b3; border-color: #b8f6d3; color: #062016; font-weight: 600; box-shadow: inset 0 -3px var(--tw-go-lo), inset 0 2px #ffffff55, 0 3px var(--tw-edge); }
.tower-session .tower-primary.games-button:hover:not(:disabled) { background: #a3f2c8; border-color: #d4fbe4; color: #062016; }
.tower-session .games-back { border-color: transparent; background: transparent; box-shadow: none; color: #b3c7c4; }
.tower-session .games-back:hover:not(:disabled) { background: transparent; border-color: transparent; color: var(--tw-ink); }
.tower-session :focus-visible { outline-color: var(--tw-gold); }
.tower-airport { display: grid; grid-template-columns: minmax(0,1fr) 250px; grid-template-areas: 'hud hud' 'map desk' 'footer desk'; position: relative; border: 3px solid #0b1418; border-radius: 0; overflow: hidden; background: var(--tw-panel); box-shadow: inset 0 0 0 2px var(--tw-bezel), 0 0 0 2px var(--tw-edge), 0 6px 0 var(--tw-edge), 0 10px 26px #0006; }
/* Console readouts: score pulse, traffic progress, incident lamps, runway lamp. */
.tower-hud { grid-area: hud; display: grid; grid-template-columns: .75fr 1fr .85fr 2fr; background: var(--tw-panel); border-bottom: 2px solid var(--tw-edge); }
.tower-stat { position: relative; padding: 9px 12px; min-width: 0; border-right: 2px solid var(--tw-edge); box-shadow: inset 0 1px #ffffff0d, inset 1px 0 #ffffff08; }.tower-stat:last-child { border-right: 0; }
.tower-stat > span { display: block; font: 600 9px/1.3 var(--clash,sans-serif); letter-spacing: .14em; text-transform: uppercase; color: var(--tw-muted); margin-bottom: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tower-stat strong { display: inline-block; color: var(--tw-ink); font: 18px/1.2 'JetBrains Mono',monospace; font-variant-numeric: tabular-nums; text-shadow: 0 2px #000a; }
.tower-stat-score strong { color: var(--tw-gold); }
.tower-stat[data-trend=up] strong { animation: tw-score-up .45s steps(4) both; }
.tower-stat[data-trend=down] strong { animation: tw-score-down .45s steps(4) both; }
.tower-stat-handled[data-progress]::after { content: ''; position: absolute; left: 12px; right: 12px; bottom: 5px; height: 3px; background: linear-gradient(90deg,var(--tw-go) var(--tw-progress,0%),#ffffff14 0); box-shadow: 0 1px var(--tw-edge); }
.tower-stat-handled[data-progress='1'] { --tw-progress: 10%; }.tower-stat-handled[data-progress='2'] { --tw-progress: 20%; }.tower-stat-handled[data-progress='3'] { --tw-progress: 30%; }.tower-stat-handled[data-progress='4'] { --tw-progress: 40%; }.tower-stat-handled[data-progress='5'] { --tw-progress: 50%; }
.tower-stat-handled[data-progress='6'] { --tw-progress: 60%; }.tower-stat-handled[data-progress='7'] { --tw-progress: 70%; }.tower-stat-handled[data-progress='8'] { --tw-progress: 80%; }.tower-stat-handled[data-progress='9'] { --tw-progress: 90%; }
.tower-stat-handled[data-progress='10'] { --tw-progress: 100%; }.tower-stat-handled[data-progress='10']::after { box-shadow: 0 0 6px #7dffb088; }
.tower-stat-incidents strong { letter-spacing: .1em; }
.tower-stat-incidents[data-left]::after { content: ''; position: absolute; right: 12px; top: 50%; width: 30px; height: 8px; transform: translateY(-15%); background: linear-gradient(90deg,var(--tw-lamp-1) 0 8px,transparent 8px 11px,var(--tw-lamp-2) 11px 19px,transparent 19px 22px,var(--tw-lamp-3) 22px 30px); box-shadow: 0 2px var(--tw-edge); --tw-lamp-1: #33282a; --tw-lamp-2: #33282a; --tw-lamp-3: #33282a; }
.tower-stat-incidents[data-left='1']::after { --tw-lamp-1: var(--tw-red); }
.tower-stat-incidents[data-left='2']::after { --tw-lamp-1: var(--tw-amber); --tw-lamp-2: var(--tw-amber); }
.tower-stat-incidents[data-left='3']::after { --tw-lamp-1: var(--tw-go); --tw-lamp-2: var(--tw-go); --tw-lamp-3: var(--tw-go); }
.tower-stat-incidents[data-left='1'] strong,.tower-stat-incidents[data-left='0'] strong { color: #ffb08a; }
.tower-stat-runway strong { font-size: 13px; color: #c9f5dc; }
.tower-stat-runway strong::before { content: ''; display: inline-block; width: 7px; height: 7px; margin-right: 7px; vertical-align: 1px; background: var(--tw-go); box-shadow: 0 0 0 1px #000, 0 0 7px var(--tw-go); }
.tower-stat-runway[data-state=occupied] strong { color: #ffc4b4; }.tower-stat-runway[data-state=occupied] strong::before { background: var(--tw-red); box-shadow: 0 0 0 1px #000, 0 0 7px var(--tw-red); }
.tower-stat-runway[data-state=wake] strong { color: #ffe0a0; }.tower-stat-runway[data-state=wake] strong::before { background: var(--tw-amber); box-shadow: 0 0 0 1px #000, 0 0 7px var(--tw-amber); animation: tw-blink 1s steps(2) infinite; }
@keyframes tw-score-up { 0% { transform: translateY(-3px) scale(1.18); color: #fff3b0; } 100% { transform: none; } }
@keyframes tw-score-down { 0%,50% { transform: translateX(-2px); color: #ff8a6a; } 25%,75% { transform: translateX(2px); color: #ff8a6a; } 100% { transform: none; } }
@keyframes tw-blink { 50% { opacity: .35; } }
.tower-map { grid-area: map; position: relative; align-self: start; min-width: 0; background: #3f5c35; overflow: hidden; }
.tower-canvas { position: relative; width: 100%; aspect-ratio: 25/16; }.tower-canvas canvas { display: block; max-width: 100%; image-rendering: pixelated; touch-action: pan-y !important; }
.tower-targets { position: absolute; inset: 0; z-index: 3; pointer-events: none; }
.tower-aircraft-target.games-button { position: absolute; transform: translate(-50%,-50%); width: 44px; height: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; pointer-events: auto; touch-action: pan-y; }
.tower-aircraft-target.games-button:hover:not(:disabled) { background: #d9f3ee14; border: 0; }.tower-aircraft-target.games-button:active:not(:disabled) { transform: translate(-50%,-50%); box-shadow: none; }.tower-aircraft-target.games-button:disabled { opacity: 1; }
.tower-aircraft-target { --tower-art-radius: 22px; }.tower-aircraft-target[data-class=heavy] { --tower-art-radius: 30px; }
/* Selection: pixel corner brackets sized to the aircraft at the current scale. */
.tower-aircraft-target[aria-pressed=true]::before { content: ''; position: absolute; inset: calc(22px - (var(--tower-art-radius) + 6px) * var(--tower-world-scale,.5)); --c: var(--tw-gold); --l: 8px; --w: 2px;
  background: linear-gradient(var(--c),var(--c)) top left/var(--l) var(--w),linear-gradient(var(--c),var(--c)) top left/var(--w) var(--l),linear-gradient(var(--c),var(--c)) top right/var(--l) var(--w),linear-gradient(var(--c),var(--c)) top right/var(--w) var(--l),
    linear-gradient(var(--c),var(--c)) bottom left/var(--l) var(--w),linear-gradient(var(--c),var(--c)) bottom left/var(--w) var(--l),linear-gradient(var(--c),var(--c)) bottom right/var(--l) var(--w),linear-gradient(var(--c),var(--c)) bottom right/var(--w) var(--l);
  background-repeat: no-repeat; filter: drop-shadow(0 1px 0 #000); }
.tower-aircraft-target span { position: absolute; top: calc(25px + var(--tower-art-radius) * var(--tower-world-scale,.5)); left: 50%; transform: translateX(-50%); white-space: nowrap; background: #0b1418e8; border: 1px solid #d9f3ee40; border-left: 3px solid var(--tw-narrow); color: var(--tw-ink); padding: 2px 5px 2px 4px; font: 600 10px/1.2 'JetBrains Mono',monospace; pointer-events: none; box-shadow: 0 2px #000a; }
.tower-aircraft-target[data-class=heavy] span { border-left-color: var(--tw-heavy); }
.tower-aircraft-target[aria-pressed=true] { z-index: 4; }.tower-aircraft-target[aria-pressed=true] span { border-color: var(--tw-gold); border-left-color: var(--tw-gold); color: #fff6d0; }
.tower-aircraft-target[data-status=FINAL] span { color: #ffe5ad; }.tower-aircraft-target[data-status=GO-AROUND] span { color: #ffc9a8; }
.tower-aircraft-target[data-urgent=true] span { border-color: var(--tw-amber); animation: tw-blink 1s steps(2) infinite; }
.tower-landmarks { position: absolute; z-index: 2; inset: 0; pointer-events: none; }.tower-landmarks span { position: absolute; transform: translate(-50%,-50%); color: #d9f3ee; font: 600 8px/1.2 'JetBrains Mono',monospace; letter-spacing: .12em; padding: 3px 5px; background: #0b1418b8; border: 1px solid #d9f3ee30; white-space: nowrap; box-shadow: 0 2px #0007; }
.tower-landmarks .tower-direction { color: #ffe9b8; border-color: #ffe9b840; }.tower-landmarks .tower-hold-label { color: var(--tw-amber); border-color: #ffc24766; background: #1d160ad0; font-size: 8px; }.tower-landmarks .tower-final-label { background: #0b141880; color: #e6f7f1; }
.tower-paused { position: absolute; z-index: 5; inset: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 10px; text-align: center; background: #060b0ee0; padding: 16px; }
.tower-paused strong { font: 600 25px/1.1 var(--clash,sans-serif); letter-spacing: .12em; text-transform: uppercase; color: var(--tw-gold); text-shadow: 0 3px #000; }.tower-paused p { font-size: 13px; color: #c3d6cd; }
/* The desk: traffic as flight-progress strips, then the selected aircraft. */
.tower-desk { grid-area: desk; padding: 12px; background: var(--tw-panel-2); border-left: 2px solid var(--tw-edge); box-shadow: inset 1px 0 #ffffff0a; display: flex; flex-direction: column; gap: 10px; min-height: 0; min-width: 0; }
.tower-traffic-heading { display: flex; justify-content: space-between; align-items: center; }.tower-traffic-heading h2 { font: 600 11px/1.2 var(--clash,sans-serif); letter-spacing: .18em; text-transform: uppercase; color: var(--tw-go); }.tower-traffic-heading span { font-size: 10px; color: var(--tw-muted); }
.tower-traffic { display: flex; flex-direction: column; gap: 5px; overflow: auto; max-height: 234px; min-height: 62px; scrollbar-width: thin; scrollbar-color: #4a6670 #111b20; }
.tower-empty { font-size: 12px; line-height: 1.5; color: var(--tw-muted); padding: 10px 0; }
.tower-flight-row.games-button { --tw-strip: var(--tw-cyan); --tw-row: #1a2a31; display: grid; grid-template-columns: 1fr auto; text-align: left; padding: 7px 8px 7px 11px; min-height: 51px; border: 1px solid #ffffff14; border-radius: 0; background: linear-gradient(90deg,var(--tw-strip) 0 4px,var(--tw-row) 4px); box-shadow: 0 2px var(--tw-edge); flex: 0 0 auto; }
.tower-flight-row[data-operation=departure] { --tw-strip: var(--tw-go); }
.tower-flight-row.games-button:hover:not(:disabled) { --tw-row: #203238; background: linear-gradient(90deg,var(--tw-strip) 0 4px,var(--tw-row) 4px); border-color: #ffffff2a; }
.tower-flight-row strong { font: 600 12px 'JetBrains Mono',monospace; color: var(--tw-ink); letter-spacing: .03em; }
.tower-class { align-self: start; font: 600 8px/1 'JetBrains Mono',monospace; letter-spacing: .08em; color: #062016; background: var(--tw-narrow); padding: 2px 4px; }
.tower-flight-row[data-class=heavy] .tower-class { background: var(--tw-heavy); color: #1e0f02; }
.tower-flight-row small { grid-column: 1 / 3; font-size: 10px; color: #b2c8c2; line-height: 1.4; margin-top: 3px; }
.tower-session .tower-flight-row.games-button[aria-pressed=true] { --tw-strip: var(--tw-gold); --tw-row: #26393d; border-color: var(--tw-gold); background: linear-gradient(90deg,var(--tw-strip) 0 4px,var(--tw-row) 4px); box-shadow: 0 2px var(--tw-edge), inset 0 0 0 1px #ffe27a40; }
.tower-flight-row[data-status=QUEUED] strong,.tower-flight-row[data-status=QUEUED] small { opacity: .7; }
.tower-flight-row.games-button[data-urgent=true] { --tw-strip: var(--tw-amber); }.tower-flight-row[data-urgent=true] small { color: #ffd59a; }
.tower-flight-row[data-urgent=true]:not([aria-pressed=true]) { animation: tw-strip 1s steps(2) infinite; }
@keyframes tw-strip { 50% { border-color: #ffc24799; } }
.tower-flight-row.games-button:disabled { opacity: .85; }
.tower-selection { border-top: 2px solid var(--tw-edge); box-shadow: inset 0 1px #ffffff0a; padding-top: 12px; margin-top: auto; }
.tower-selection h2 { font: 600 17px 'JetBrains Mono',monospace; color: #fff3c8; letter-spacing: .03em; }.tower-selection > p:first-of-type { font-size: 11px; color: #b9d2cb; margin-top: 6px; min-height: 14px; }
.tower-selection[data-status=FINAL] h2 { color: #ffe5ad; }.tower-selection[data-status=GO-AROUND] h2 { color: #ffc9a8; }
.tower-eta { color: var(--tw-gold); font: 11px 'JetBrains Mono',monospace; min-height: 15px; margin-top: 7px !important; }
.tower-clearances { display: flex; gap: 6px; margin: 10px 0; flex-wrap: wrap; }.tower-clearances .games-button { position: relative; flex: 1; min-height: 46px; padding: 9px 6px; border-radius: 0; font-size: 12px; font-weight: 600; white-space: nowrap; letter-spacing: .02em; }
/* Keyboard shortcut hints; empty alternative text keeps accessible names unchanged. */
.tower-clearances .games-button::after { position: absolute; top: 3px; right: 4px; font: 600 8px/1 'JetBrains Mono',monospace; opacity: .55; }
.tower-clearances [data-clearance=approach]::after { content: 'A' / ''; }.tower-clearances [data-clearance=hold]::after { content: 'H' / ''; }.tower-clearances [data-clearance=land]::after { content: 'L' / ''; }
.tower-clearances [data-clearance=go-around]::after { content: 'G' / ''; }.tower-clearances [data-clearance=takeoff]::after { content: 'T' / ''; }
.tower-caution.games-button { background: var(--tw-amber); color: #2a1a02; border-color: #ffe0a0; box-shadow: inset 0 -3px #b9862a, inset 0 2px #ffffff55, 0 3px var(--tw-edge); }
.tower-caution.games-button:hover:not(:disabled) { background: #ffd273; border-color: #fff0c8; color: #2a1a02; }
.tower-command-help { font-size: 11px; line-height: 1.45; color: #a9c0bc; }
.tower-footer { grid-area: footer; padding: 8px 10px; display: grid; gap: 7px; background: var(--tw-panel); border-top: 2px solid var(--tw-edge); box-shadow: inset 0 1px #ffffff0a; min-width: 0; }
.tower-message { position: relative; min-height: 30px; padding-left: 14px; color: #cfe3d8; font-size: 11px; line-height: 1.4; }
.tower-message::before { content: ''; position: absolute; left: 0; top: 4px; width: 6px; height: 6px; background: var(--tw-go); box-shadow: 0 0 0 1px #000, 0 0 6px var(--tw-go); }
.tower-message[data-warning=true] { color: #ffd59a; }.tower-message[data-warning=true]::before { background: var(--tw-amber); box-shadow: 0 0 0 1px #000, 0 0 6px var(--tw-amber); animation: tw-blink .8s steps(2) infinite; }
.tower-airport[data-status=inspection] .tower-message::before,.tower-airport[data-status=paused] .tower-message::before { background: #4a6670; box-shadow: 0 0 0 1px #000; animation: none; }
.tower-next { font: 9px/1.4 'JetBrains Mono',monospace; color: var(--tw-cyan); min-height: 14px; letter-spacing: .02em; }
.tower-actions { display: flex; gap: 7px; flex-wrap: wrap; }.tower-actions .games-button { min-height: 44px; padding: 8px 13px; border-radius: 0; font-size: 12px; }
.tower-guide { color: #a7bebb; font-size: 11px; margin: 10px 0; }.tower-guide summary { cursor: pointer; width: fit-content; min-height: 24px; color: #c9ddd7; }.tower-guide[open] summary { color: var(--tw-go); }.tower-guide p { max-width: 900px; padding: 8px 0 8px 10px; line-height: 1.6; border-left: 2px solid #7dffb040; }
/* One persistent shift report; its accent follows the completion cause. */
.tower-results { position: absolute; inset: 0; z-index: 7; background: radial-gradient(#060b0ea8,#060b0ee0); display: grid; place-items: center; padding: 16px; }.tower-results:focus { outline: none; }
.tower-report { --tw-outcome: var(--tw-go); background: #101a1ffa; border: 3px solid #0b1418; padding: 24px; width: min(600px,100%); box-sizing: border-box; box-shadow: inset 0 0 0 2px var(--tw-bezel), inset 0 4px 0 2px var(--tw-outcome), 0 0 0 2px var(--tw-edge), 0 8px 0 #000a; animation: tw-report-arrive .24s steps(4) both; }
.tower-results[data-outcome=time-cap] .tower-report { --tw-outcome: var(--tw-amber); }.tower-results[data-outcome=incident-limit] .tower-report,.tower-results[data-outcome=abandoned] .tower-report { --tw-outcome: var(--tw-red); }
.tower-report .games-eyebrow { color: var(--tw-outcome); letter-spacing: .2em; }
.tower-report h2 { font-size: 27px; color: var(--tw-ink); margin: 8px 0; line-height: 1.15; }
.tower-report-location { font-size: 12px; color: #a7c5bd; margin-bottom: 12px !important; }.tower-report .games-practice { font-size: 11px; }
.tower-report dl { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px; margin: 20px 0; border-top: 2px solid #ffffff12; padding: 14px 0 0; }
.tower-report dl > div { padding: 7px 9px; background: #0b1418; box-shadow: inset 0 0 0 1px #ffffff10, 0 2px #000a; }
.tower-report dt { font: 600 9px/1.3 var(--clash,sans-serif); letter-spacing: .1em; text-transform: uppercase; color: var(--tw-muted); margin-bottom: 4px; }.tower-report dd { margin: 0; font: 24px/1.15 'JetBrains Mono',monospace; color: var(--tw-ink); font-variant-numeric: tabular-nums; }.tower-report dl > div:first-child dd { color: var(--tw-gold); }
.tower-report-note { font-size: 11px; line-height: 1.5; color: #a9c0bc; margin-bottom: 16px !important; }
@keyframes tw-report-arrive { from { transform: translateY(10px); opacity: 0; } to { transform: none; opacity: 1; } }
@media(prefers-reduced-motion:reduce) { .tower-session *,.tower-session *::before,.tower-session *::after { animation: none !important; transition: none !important; } }
@media(min-width:901px) and (max-height:700px) {
  .tower-session { max-width: min(100%,calc((100dvh - 310px) * 1.5625 + 250px)); }
  .tower-header { margin-bottom: 6px; }.tower-header h1 { font-size: 22px; }.tower-top .games-sound label { font-size: 0; }.tower-traffic { max-height: 105px; }.tower-desk { padding: 8px; gap: 6px; }.tower-selection { padding-top: 7px; }.tower-command-help { font-size: 10px; }.tower-traffic-heading span { display: none; }
  .tower-stat { padding: 6px 9px; }.tower-stat > span { letter-spacing: .06em; }.tower-stat-incidents > span { padding-right: 32px; }.tower-stat-handled[data-progress]::after { left: 9px; right: 9px; bottom: 3px; }.tower-footer { gap: 4px; }.tower-message { min-height: 26px; }.tower-report { padding: 16px; }.tower-report h2 { font-size: 23px; }.tower-report dl { margin: 10px 0; padding: 10px 0 0; gap: 6px; }.tower-report dd { font-size: 21px; }
}
@media(max-width:900px) {
  .tower-airport { grid-template-columns: minmax(0,1fr); grid-template-areas: 'hud' 'map' 'desk' 'footer'; }
  .tower-desk { border-left: 0; border-top: 2px solid var(--tw-edge); padding: 10px; gap: 8px; }
  .tower-traffic-heading { display: none; }.tower-traffic { flex-direction: row; max-height: none; min-height: 55px; padding-bottom: 3px; }.tower-flight-row.games-button { min-width: 150px; max-width: 180px; }
  .tower-selection { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 3px 10px; padding-top: 8px; margin-top: 0; }.tower-selection h2 { font-size: 15px; }.tower-selection > p:first-of-type { margin: 0; grid-column: 1; }.tower-eta { grid-column: 1; margin-top: 0 !important; min-height: 13px; }
  .tower-clearances { grid-column: 2; grid-row: 1 / 4; margin: 0; flex-wrap: nowrap; }.tower-clearances .games-button { min-width: 72px; padding-inline: 10px; }.tower-command-help { grid-column: 1 / 3; margin-top: 5px !important; min-height: 30px; }
  .tower-footer { grid-template-columns: 1fr auto; align-items: center; }.tower-message { grid-column: 1; }.tower-next { grid-column: 1; }.tower-actions { grid-column: 2; grid-row: 1 / 3; }.tower-actions .games-button { padding: 8px 10px; }
}
@media(max-width:600px) {
  .tower-header { display: block; margin-bottom: 6px; }.tower-header > div:first-child { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }.tower-header h1 { font-size: 21px; }.tower-header .games-eyebrow { font-size: 9px; }.tower-tier { font-size: 9px; margin-left: auto; padding: 2px 5px; }
  .tower-top { max-width: none; justify-content: space-between; gap: 0 4px; }.tower-top .games-back { min-height: 44px; padding: 7px 0; font-size: 11px; }.tower-top .games-practice { order: 3; width: fit-content; padding: 3px 5px; margin-left: auto; font-size: 9px; }.tower-top .games-sound { gap: 6px; }.tower-top .games-sound input { width: 45px; }.tower-top .games-sound label { font-size: 0; gap: 0; }.tower-top .games-sound .games-button { font-size: 11px; padding: 7px; }
  .tower-hud { grid-template-columns: repeat(3,1fr); }.tower-stat { padding: 6px 8px; }.tower-stat strong { font-size: 16px; }.tower-stat > span { font-size: 8px; letter-spacing: .08em; }.tower-stat-incidents[data-left]::after { width: 22px; height: 6px; right: 7px; top: auto; bottom: 8px; transform: none; background: linear-gradient(90deg,var(--tw-lamp-1) 0 6px,transparent 6px 8px,var(--tw-lamp-2) 8px 14px,transparent 14px 16px,var(--tw-lamp-3) 16px 22px); }
  .tower-stat-handled[data-progress]::after { left: 8px; right: 8px; bottom: 3px; }.tower-stat:nth-child(3) { border-right: 0; }
  .tower-stat-runway { grid-column: 1 / 4; border-top: 2px solid var(--tw-edge); display: flex; justify-content: space-between; align-items: center; padding-block: 6px; }.tower-stat-runway strong { font-size: 11px; }.tower-stat-runway > span { margin: 0; }
  .tower-landmarks span { font-size: 7px; padding: 2px 3px; letter-spacing: .06em; }.tower-landmarks .tower-hold-label { font-size: 7px; }.tower-aircraft-target span { font-size: 9px; padding: 1px 3px 1px 2px; border-left-width: 2px; }
  .tower-aircraft-target[aria-pressed=true]::before { --l: 6px; }.tower-desk { padding: 8px; gap: 6px; }.tower-flight-row.games-button { min-width: 132px; max-width: 155px; min-height: 48px; }.tower-flight-row strong { font-size: 11px; }.tower-flight-row small { font-size: 10px; }.tower-class { font-size: 8px; }
  .tower-selection { gap: 3px 6px; }.tower-selection h2 { font-size: 14px; }.tower-selection > p:first-of-type { font-size: 10px; }.tower-eta { font-size: 10px; }.tower-clearances { gap: 4px; }.tower-clearances .games-button { min-width: 65px; padding: 7px; font-size: 11px; }.tower-command-help { font-size: 10px; min-height: 28px; }
  .tower-footer { display: flex; flex-direction: column; align-items: stretch; gap: 5px; padding: 7px 8px; }.tower-message { min-height: 28px; font-size: 10px; }.tower-next { font-size: 8px; min-height: 12px; }.tower-actions .games-button { flex: 1; }.tower-guide { margin-block: 8px; font-size: 10px; }
  .tower-results { padding: 8px; }.tower-report { padding: 15px; }.tower-report h2 { font-size: 22px; }.tower-report dl { grid-template-columns: repeat(2,1fr); gap: 6px; padding: 10px 0 0; margin: 13px 0; }.tower-report dt { margin-bottom: 3px; }.tower-report dd { font-size: 22px; }
}

/* Rewards summaries share one presentation across the three game panels. */
.game-reward { --reward-accent: #e9d39c; color: #e4eddd; background: #10221cd9; border: 1px solid #a9c3a84d; border-left: 3px solid var(--reward-accent); padding: 14px 16px; margin: 14px 0; font: 13px/1.5 var(--clash,sans-serif); box-sizing: border-box; text-align: left; }
.game-reward[hidden] { display: none; }
.game-reward[data-reward-state=earned] { --reward-accent: #a4ecc1; }
.game-reward[data-reward-state=pending] { --reward-accent: #b9c8ec; }
.game-reward p { margin: 0 0 7px !important; }
.game-reward .game-reward-heading { font: 700 11px/1.4 'JetBrains Mono',monospace; letter-spacing: .12em; color: var(--reward-accent); }
.game-reward .game-reward-score { font-size: 17px; font-weight: 600; }
.game-reward-award { display: block; color: var(--reward-accent); font: 700 30px/1.25 'JetBrains Mono',monospace; margin: 4px 0 9px; }
.game-reward .game-reward-detail { color: #f2f0df; }
.game-reward .game-reward-note,.game-reward small { color: #b6c9bc; font-size: 11px; line-height: 1.5; }
.game-reward-tiers { display: flex; flex-wrap: wrap; gap: 7px; padding: 0; margin: 9px 0 12px; list-style: none; }
.game-reward-tiers li { flex: 1 1 130px; padding: 8px; border: 1px solid #bed3b637; font: 12px/1.5 'JetBrains Mono',monospace; }
.game-reward-amounts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; padding-top: 10px; margin-top: 12px; border-top: 1px solid #bed3b637; }
.game-reward-amounts span { display: block; color: #b6c9bc; font-size: 11px; }
.game-reward-amounts strong { font: 600 20px/1.5 'JetBrains Mono',monospace; color: #f0e9cf; }
.game-reward-status { padding: 8px 12px; margin: 6px 0 10px; }
.game-reward-status p { margin-bottom: 2px !important; }
/* Added receipt detail can exceed the frozen game's height, especially on phones. */
.games-results:has(.game-reward),.tower-results:has(.game-reward) { position: relative; grid-column: 1 / -1; padding: 12px; }
.games-finished:has(.game-reward) > :not(.games-results),.tower-airport[data-phase=results]:has(.game-reward) > :not(.tower-results) { display: none; }
.games-report-panel:has(.game-reward) { display: block; }
.games-report-panel:has(.game-reward) .games-result-grid { padding: 12px 0 0; margin: 14px 0; border-left: 0; border-top: 1px solid #b8c69d30; }
@media(max-width:480px) { .game-reward { padding: 12px; }.game-reward-award { font-size: 26px; }.game-reward-amounts { gap: 8px; }.game-reward-amounts strong { font-size: 18px; } }

/* Hub: hero band, game posters and the two ways to play. */
.games-shell .games-hub-hero { position: relative; overflow: hidden; isolation: isolate; display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 22px 32px; margin: 4px 0 22px; padding: 34px 36px; border: 1px solid #a855f72e; border-radius: 22px; background: radial-gradient(120% 160% at 0% 0%, #2a1250, #120a1f 50%, #0b0910); }
.games-hub-aura { position: absolute; inset: -60%; z-index: -1; pointer-events: none; background: conic-gradient(from 0deg at 70% 50%, transparent, #a855f724 60deg, transparent 120deg, #22d3ee14 200deg, transparent 260deg, #f59e0b16 320deg, transparent); filter: blur(40px); animation: games-spin 30s linear infinite; }
.games-shell .games-hub-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background-image: linear-gradient(#ffffff08 1px, transparent 1px), linear-gradient(90deg, #ffffff08 1px, transparent 1px); background-size: 44px 44px; -webkit-mask-image: radial-gradient(70% 100% at 80% 40%, #000, transparent 75%); mask-image: radial-gradient(70% 100% at 80% 40%, #000, transparent 75%); }
.games-hub-copy { max-width: 620px; }
.games-hub-copy h1 { font-size: clamp(32px, 3.6vw, 50px); line-height: 1.05; letter-spacing: -.045em; font-weight: 600; margin: 10px 0; }
.games-hub-copy .games-muted { font-size: 15px; line-height: 1.6; color: #cfc6dd; max-width: 52ch; }
.games-hub-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.games-hub-chips li { display: grid; gap: 3px; min-width: 128px; padding: 12px 16px; border-radius: 14px; border: 1px solid #ffffff17; background: #ffffff08; backdrop-filter: blur(6px); }
.games-hub-chips strong { font-size: 22px; font-weight: 600; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.games-hub-chips span { font-size: 11.5px; color: #b9b1c8; }

.games-shelf { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; perspective: 1400px; }
.games-shell .games-poster { --accent: #b785eb; --ink: #efe6ff; --tint: #0c0a12; position: relative; isolation: isolate; display: flex; flex-direction: column; justify-content: flex-end; min-height: 560px; border: 1px solid #ffffff14; border-radius: 20px; overflow: hidden; background: var(--tint);
  transform: rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg)); transition: transform .3s ease-out, border-color .3s, box-shadow .35s; animation: games-rise .7s cubic-bezier(.2,.8,.2,1) both; animation-delay: calc(var(--i, 0) * 90ms); }
.games-shell .games-poster:is(:hover, :focus-within) { border-color: color-mix(in srgb, var(--accent) 55%, transparent); box-shadow: 0 34px 60px -32px var(--accent), 0 0 0 1px color-mix(in srgb, var(--accent) 22%, transparent); }
.games-poster[data-game="minecart"] { --accent: #e2bd62; --ink: #f7e2a6; --tint: #0f150e; --art: url('/assets/games/minecart/minecart-cover.png'); }
.games-poster[data-game="tower"] { --accent: #7dd3e8; --ink: #d6f3fb; --tint: #07141a; --art: url('/assets/games/tower/tower-cover.png'); }
.games-poster[data-game="last-line"] { --accent: #a6e07f; --ink: #f2d795; --tint: #0b1d16; --art: url('/assets/games/last-line/last-line-cover.png'); }
.games-poster-art { position: absolute; inset: 0; z-index: -1; background: var(--art) center / cover, var(--tint); transform: scale(1.03); filter: saturate(.9) brightness(.86); transition: transform 6s cubic-bezier(.2,.8,.2,1), filter .4s; }
.games-poster:is([data-game="minecart"], [data-game="tower"], [data-game="last-line"]) .games-poster-art { image-rendering: pixelated; }
.games-poster:is(:hover, :focus-within) .games-poster-art { transform: scale(1.12); filter: saturate(1.05) brightness(.96); }
.games-poster-art::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, color-mix(in srgb, var(--tint) 35%, transparent) 0%, transparent 26%, color-mix(in srgb, var(--tint) 72%, transparent) 54%, var(--tint) 86%); }
.games-poster-glare { position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: 0; transition: opacity .3s; background: radial-gradient(520px circle at var(--glare-x, 50%) var(--glare-y, 0%), #ffffff1c, transparent 45%); }
.games-poster:hover .games-poster-glare { opacity: 1; }
.games-shell .games-poster::before { content: ""; position: absolute; inset: -40%; z-index: 2; pointer-events: none; background: linear-gradient(115deg, transparent 42%, #ffffff1f 50%, transparent 58%); transform: translateX(-100%); }
.games-shell .games-poster:hover::before { animation: games-sheen 1.1s ease-out; }
.games-poster-fx { position: absolute; pointer-events: none; }
.games-poster[data-game="minecart"] .games-poster-fx { right: 12%; top: 18%; width: 46%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, #ffd27a40, transparent 64%); animation: games-flicker 3.4s ease-in-out infinite; }
.games-poster[data-game="tower"] .games-poster-fx { right: -18%; top: 9%; width: 62%; aspect-ratio: 1; border-radius: 50%; border: 1px solid #7dd3e833; background: conic-gradient(from 0deg, #7dd3e850, transparent 22%, transparent); -webkit-mask-image: radial-gradient(circle, #000 69%, transparent 70%); mask-image: radial-gradient(circle, #000 69%, transparent 70%); animation: games-spin 4.5s linear infinite; }
.games-poster[data-game="last-line"] .games-poster-fx { inset: 0 0 45% 0; background: radial-gradient(55% 60% at 12% 0%, #fff6d030, transparent 70%), radial-gradient(55% 60% at 88% 0%, #fff6d030, transparent 70%); animation: games-flood 4.8s ease-in-out infinite; }
.games-poster-top { position: absolute; top: 18px; left: 18px; right: 18px; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.games-poster-number { font: 12px 'JetBrains Mono', monospace; letter-spacing: .1em; color: var(--ink); padding: 6px 10px; border-radius: 8px; border: 1px solid #ffffff22; background: #0a0a0f99; backdrop-filter: blur(6px); }
.games-shell .games-poster .games-practice { margin: 0; color: var(--ink); border-color: color-mix(in srgb, var(--accent) 40%, transparent); background: #0a0a0fb3; backdrop-filter: blur(6px); }
.games-shell .games-poster .games-practice::before { background: var(--accent); }
.games-poster-caption { position: absolute; top: 64px; left: 18px; z-index: 1; font: 10px 'JetBrains Mono', monospace; letter-spacing: .14em; color: var(--ink); opacity: .75; text-shadow: 0 1px 6px #000; }
.games-poster-body { position: relative; z-index: 1; display: flex; flex-direction: column; padding: 26px 24px 24px; }
.games-shell .games-poster .games-eyebrow { color: var(--accent); }
.games-shell .games-poster h2 { font-size: clamp(26px, 2.3vw, 34px); font-weight: 600; letter-spacing: -.03em; margin: 8px 0 10px; color: #fff; text-shadow: 0 2px 18px #000b; }
.games-shell .games-poster .games-feature-intro { font-size: 15px; line-height: 1.5; min-height: 3em; color: #ece8f3; }
.games-poster-detail { color: #d0cadb; font-size: 13px; line-height: 1.55; max-height: 0; opacity: 0; overflow: hidden; transition: max-height .45s ease, opacity .35s, margin .45s; }
.games-shell .games-poster:is(:hover, :focus-within) .games-poster-detail { max-height: 7em; opacity: 1; margin-top: 10px; }
.games-shell .games-poster .games-meta { display: flex; flex-wrap: wrap; gap: 6px; margin: 16px 0 18px; }
.games-shell .games-poster .games-meta span { padding: 4px 9px; border-radius: 99px; border: 1px solid #ffffff17; background: #ffffff10; color: #ddd6e8; font-size: 11px; }
.games-shell .games-poster .games-primary { align-self: flex-start; border-radius: 10px; background: var(--accent); border-color: color-mix(in srgb, var(--accent), #fff 35%); color: #15110a; box-shadow: 0 10px 26px -12px var(--accent); transition: transform .2s, box-shadow .2s, background .2s; }
.games-shell .games-poster .games-primary:hover:not(:disabled) { background: color-mix(in srgb, var(--accent), #fff 22%); color: #15110a; transform: translateY(-1px); box-shadow: 0 14px 30px -12px var(--accent); }

.games-modes { margin-top: 40px; padding-top: 30px; border-top: 1px solid var(--games-line); }
.games-modes h2 { font-size: 24px; font-weight: 600; letter-spacing: -.03em; margin-top: 8px; }
.games-modes-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 18px; }
.games-mode { --mode: #b785eb; padding: 22px 24px; border-radius: 18px; border: 1px solid var(--games-line); background: #ffffff05; animation: games-rise .6s cubic-bezier(.2,.8,.2,1) both .3s; }
.games-mode[data-mode="rewards"] { --mode: #f4c76a; border-color: #f4c76a40; background: radial-gradient(100% 80% at 100% 0%, #f4c76a14, transparent 60%), #ffffff05; animation-delay: .38s; }
.games-mode-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 12px; margin-bottom: 14px; }
.games-mode-head strong { font-size: 17px; font-weight: 600; }
.games-mode-head span { font: 10.5px 'JetBrains Mono', monospace; letter-spacing: .08em; color: var(--mode); text-transform: uppercase; }
.games-mode ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.games-mode li { position: relative; padding-left: 18px; font-size: 13.5px; line-height: 1.55; color: #d3ccdf; }
.games-mode li::before { content: ""; position: absolute; left: 0; top: .55em; width: 6px; height: 6px; border-radius: 2px; background: var(--mode); transform: rotate(45deg); }
.games-shell .games-link { margin-top: 14px; padding: 6px 0; border: 0; background: none; color: #c9a2ff; font-size: 13px; }
.games-shell .games-link:hover { color: #fff; }

@keyframes games-spin { to { transform: rotate(360deg); } }
@keyframes games-rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes games-sheen { from { transform: translateX(-100%); } to { transform: translateX(100%); } }
@keyframes games-flicker { 0%, 100% { opacity: .75; transform: scale(1); } 40% { opacity: 1; transform: scale(1.06); } 55% { opacity: .6; } 70% { opacity: .95; } }
@keyframes games-flood { 0%, 100% { opacity: .7; } 50% { opacity: 1; } }

@media (hover: none) { .games-poster-detail { max-height: none; opacity: 1; margin-top: 10px; } }
@media (max-width: 1180px) {
  .games-shelf { grid-template-columns: minmax(0, 1fr); }
  .games-shell .games-poster { min-height: 400px; }
  .games-poster-body { max-width: 620px; }
  .games-poster-detail { max-height: none; opacity: 1; margin-top: 10px; }
}
@media (max-width: 700px) {
  .games-shell .games-hub-hero { padding: 26px 20px; border-radius: 18px; }
  .games-hub-chips { width: 100%; }
  .games-hub-chips li { flex: 1 1 0; min-width: 0; padding: 10px 12px; }
  .games-hub-chips strong { font-size: 18px; }
  .games-shell .games-poster { min-height: 470px; border-radius: 18px; }
  .games-poster-body { padding: 22px 18px 20px; }
  .games-modes-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) { .games-shell .games-poster, .games-shell .games-poster:is(:hover, :focus-within) .games-poster-art { transform: none; } }
