/* arcade.css: DweebArcade shared chrome (WebDweeb tokens, dark forest / sage palette). A DweebThings production.
 * Games never link this file: every game is self-contained. */

/* ---- Fonts: self-hosted woff2 (OFL, see assets/fonts); Fallback faces are metric-matched ---- */
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 900; font-display: swap;
    src: url('fonts/inter-latin-v20.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 900; font-display: swap;
    src: url('fonts/inter-latin-ext-v20.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Space Mono'; font-style: normal; font-weight: 400; font-display: swap;
    src: url('fonts/spacemono-400-latin-v17.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Space Mono'; font-style: normal; font-weight: 400; font-display: swap;
    src: url('fonts/spacemono-400-latin-ext-v17.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Space Mono'; font-style: normal; font-weight: 700; font-display: swap;
    src: url('fonts/spacemono-700-latin-v17.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Space Mono'; font-style: normal; font-weight: 700; font-display: swap;
    src: url('fonts/spacemono-700-latin-ext-v17.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Big Shoulders Display'; font-style: normal; font-weight: 100 900; font-display: swap;
    src: url('fonts/bigshoulders-latin-v24.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Big Shoulders Display'; font-style: normal; font-weight: 100 900; font-display: swap;
    src: url('fonts/bigshoulders-latin-ext-v24.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Inter Fallback'; src: local('Arial'), local('ArialMT');
    size-adjust: 106.56%; ascent-override: 90.91%; descent-override: 22.64%; line-gap-override: 0%; }
@font-face { font-family: 'Space Mono Fallback'; src: local('Courier New'), local('CourierNewPSMT');
    size-adjust: 101.98%; ascent-override: 109.83%; descent-override: 35.40%; line-gap-override: 0%; }

/* ---- Boot gate: html.da-boot hides [data-live] until arcade.revealPage() or a 2.5s backstop; visibility keeps the space ---- */
.da-boot [data-live] { visibility: hidden; }
.da-boot main.page-wrap { min-height: 100vh; }
/* ticker: hold its line height while booting so the page does not shift */
.da-boot .marquee { display: block; visibility: hidden; }
.da-boot .marquee-track:empty::before { content: '\200b'; }
.da-reveal [data-live] { animation: da-reveal 0.28s ease-out; }
@keyframes da-reveal { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .da-reveal [data-live] { animation: none; } }

:root {
    --bg-main: #0f1512;
    --text-main: #e7ece8;
    --accent: #5f9a7a;
    --base-shade: 255, 255, 255;
    --surface: #18201b;
    --border-soft: rgba(255, 255, 255, 0.13);
    --border-medium: rgba(255, 255, 255, 0.22);
    --glass-border: var(--border-soft); /* legacy alias kept for WebDweeb parity */
    /* Fallback faces are metric-matched stand-ins; system stacks are the last resort */
    --font-main: 'Inter', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --font-mono: 'Space Mono', 'Space Mono Fallback', ui-monospace, 'SF Mono', Menlo, monospace;
    /* display face (headings, titles, big numbers): condensed, so its slots run ~15% larger than Inter's */
    --font-display: 'Big Shoulders Display', 'Inter', 'Inter Fallback', system-ui, sans-serif;
    --track-display: 0.01em;
    --fs-marquee: clamp(38px, 7.2vw, 60px);
    --fs-marquee-md: clamp(26px, 3.4vw, 34px);
    --fs-marquee-sm: 24px;
    /* Type scale (WebDweeb): display, h2, h3, h4, lead, body, sm, meta, xs, label */
    /* xs is the floor for anything read; label is for mono caps data and eyebrows only */
    --fs-display: clamp(30px, 6vw, 48px);
    --fs-h2: clamp(22px, 3vw, 30px);
    --fs-h3: 20px;
    --fs-h4: 16px;
    --fs-lead: 18px;
    --fs-body: 16px;
    --fs-sm: 14px;
    --fs-meta: 13px;
    --fs-xs: 12px;
    --fs-label: 11px;
    --track-caps: 0.08em;
    --track-eyebrow: 0.14em;
    --fw-heading: 700;
    --header-bg: rgba(15, 21, 18, 0.85);
    --header-text: #e7ece8;
    --header-size: 15px;
    --radius-sm: 4px;
    --radius-md: 6px;
    --radius-lg: 8px;
    --radius-xl: 12px;
    --radius-window: 14px;
    --radius-pill: 9999px;
    --shadow-card: 0 8px 32px -4px rgba(0, 0, 0, 0.5);
    --shadow-pop: 0 14px 40px rgba(0, 0, 0, 0.45);
    --shadow-soft: 0 2px 8px rgba(0, 0, 0, 0.35);
    /* safe areas (viewport-fit=cover) and the phone chrome */
    --sat: env(safe-area-inset-top, 0px);
    --sab: env(safe-area-inset-bottom, 0px);
    --sal: env(safe-area-inset-left, 0px);
    --sar: env(safe-area-inset-right, 0px);
    --tap: 44px;
    --tabbar-h: 60px;
    --dock-gap: max(10px, env(safe-area-inset-bottom, 0px));
    --tk-bar-h: 44px;
}

* { box-sizing: border-box; }
/* site background lives on <html> so the seasonal layer (z-index:-1) paints above it */
html {
    background-color: var(--bg-main);
    scroll-behavior: smooth;
    background-image:
        linear-gradient(rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.14) 50%),
        radial-gradient(circle at 0% 0%, color-mix(in srgb, var(--accent), transparent 92%), transparent 45%),
        radial-gradient(circle at 100% 0%, color-mix(in srgb, var(--accent), transparent 94%), transparent 40%),
        radial-gradient(circle at 50% 100%, color-mix(in srgb, var(--accent), transparent 95%), transparent 35%);
    background-size: 100% 4px, auto, auto, auto;
    background-attachment: fixed;
}
body {
    font-family: var(--font-main);
    font-size: var(--fs-body);
    background: transparent;
    color: var(--text-main);
    -webkit-font-smoothing: antialiased;
    line-height: 1.6;
    margin: 0;
    min-height: 100vh;
    padding-top: var(--sat);
    overflow-x: hidden;   /* here, not on html: any html overflow keeps a body scroll lock from reaching the page */
}
::selection { background: color-mix(in srgb, var(--accent) 35%, transparent); }
a { color: inherit; }
h1, h2, h3, h4 { line-height: 1.2; margin: 0; }

/* --- STRUCTURAL BLOCKS (WebDweeb parity) --- */
.content-card {
    background-color: var(--bg-main);
    position: relative;
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
    overflow: hidden;
}
.content-card::before {
    content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
    background: var(--surface);
}
.content-card > * { position: relative; z-index: 1; }


/* --- NAV (same skeleton as WebDweeb's .top-bar) --- */
.top-bar {
    position: sticky; top: var(--sat); width: 100%; height: 70px;
    background: var(--header-bg); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--border-soft); z-index: 50;
}
.top-bar-inner {
    max-width: 1440px; width: 100%; margin: 0 auto; padding: 0 max(5vw, var(--sar)) 0 max(5vw, var(--sal));
    display: flex; align-items: center; justify-content: space-between; height: 100%;
}
.nav-logo-container { display: flex; align-items: center; gap: 12px; text-decoration: none; }
.nav-logo-icon {
    width: 12px; height: 12px; border-radius: var(--radius-sm); background: var(--accent); flex-shrink: 0;
    transform: rotate(45deg);
}
.nav-logo-text { font-size: var(--fs-lead); font-weight: 700; color: var(--text-main); letter-spacing: -0.02em; margin: 0; display: flex; }
/* nav wordmark logo */
.nav-logo-img { height: 28px; width: auto; display: block; }
@media (max-width: 420px) { .nav-logo-img { height: 24px; } }
.nav-logo-text .logo-arcade { color: var(--accent); }
.nav-tagline {
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.02em; text-transform: none;
    color: var(--text-main); opacity: 0.62; margin-left: 8px; display: none; white-space: nowrap;
}
/* tagline on wide screens only */
@media (min-width: 1000px) { .nav-tagline { display: inline; } }
.nav-links { display: flex; align-items: center; gap: 24px; font-size: var(--header-size); font-weight: 600; }
.nav-link { color: var(--text-main); opacity: 0.65; text-decoration: none; transition: 0.2s; padding: 6px 0; position: relative; }
.nav-link:hover, .nav-link.active { opacity: 1; color: var(--accent); }
.nav-link::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: -4px; height: 2px;
    background: var(--accent); border-radius: 2px; transform: scaleX(0); transition: transform 0.2s ease;
}
.nav-link:hover::after, .nav-link.active::after { transform: scaleX(1); }

.mobile-menu-btn { display: none; background: transparent; border: none; color: var(--text-main); cursor: pointer; padding: 6px; }
.mobile-menu-btn svg { width: 24px; height: 24px; }
#mobile-menu-overlay {
    position: fixed; inset: 0; z-index: 9000; background: var(--bg-main);
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2rem;
    transition: opacity 0.2s, visibility 0.2s;
}
.mobile-nav-link { font-size: var(--fs-h3); font-weight: 700; color: var(--text-main); text-decoration: none; transition: 0.2s; }
.mobile-nav-link:hover, .mobile-nav-link.active { color: var(--accent); }
.mobile-hidden { opacity: 0; visibility: hidden; pointer-events: none; }
.mobile-visible { opacity: 1; visibility: visible; pointer-events: auto; }
@media (max-width: 799px) { .mobile-menu-btn { display: block; } .nav-links { display: none; } }

/* --- PAGE SCAFFOLD --- */
.page-wrap { max-width: 1440px; margin: 0 auto; padding: 0 max(5vw, var(--sar)) 44px max(5vw, var(--sal)); }

/* hero title scale */
.hero { padding: 46px 0 34px; }
.hero-kicker {
    font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase;
    color: var(--accent); margin: 0 0 10px;
}
.hero-title { font-family: var(--font-display); font-size: var(--fs-marquee); font-weight: 800; letter-spacing: var(--track-display); line-height: 1; margin: 0 0 12px; }
.hero-sub { font-size: var(--fs-lead); max-width: 620px; opacity: 0.75; margin: 0; line-height: 1.6; }
/* reusable mascot hero: text column + art column, stacks on narrow screens */
.mascot-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(180px, 280px); align-items: center; gap: 30px; }
.mascot-hero-text { min-width: 0; }
.mascot-hero-art { position: relative; justify-self: center; width: 100%; max-width: 240px; }
.mascot-hero-art img { display: block; width: 100%; height: auto; }
@media (max-width: 760px) {
    .mascot-hero { grid-template-columns: 1fr; gap: 10px; }
    .mascot-hero-art { max-width: 176px; }
}
/* About header prominence, scoped by id */
#about-headline { font-family: var(--font-display); font-size: var(--fs-marquee); font-weight: 800; line-height: 1; letter-spacing: var(--track-display); margin: 0 0 12px; }
#about-sub { font-size: var(--fs-lead); max-width: 680px; opacity: 0.85; line-height: 1.6; }

/* bare page-section header */
.page-header-row { display: flex; align-items: center; gap: 14px; margin: 0 0 18px; }
.page-title-icon {
    width: 40px; height: 40px; border-radius: var(--radius-sm); background: var(--accent);
    color: var(--bg-main); display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.page-title-icon svg { width: 20px; height: 20px; }
.page-header-title { font-family: var(--font-display); font-size: var(--fs-marquee-md); font-weight: 800; margin: 0; letter-spacing: var(--track-display); line-height: 1; }
.page-header-sub { font-size: var(--fs-xs); opacity: 0.55; margin: 2px 0 0; }

/* module wrapper */
.wd-module {
    background: var(--surface); border: 1px solid var(--border-soft);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
    overflow: hidden; display: flex; flex-direction: column;
}
.wd-module-header {
    background: rgba(255, 255, 255, 0.03); padding: 13px 20px;
    border-bottom: 1px solid var(--border-soft);
    display: flex; justify-content: space-between; align-items: center; gap: 12px;
}
.wd-module-title { font-size: var(--fs-sm); font-weight: 700; margin: 0; text-transform: uppercase; letter-spacing: 0.04em; }
.wd-module-action { font-size: var(--fs-sm); font-weight: 600; opacity: 0.55; text-decoration: none; transition: 0.2s; flex-shrink: 0; }
.wd-module-action:hover { opacity: 1; color: var(--accent); }

/* community poll (homepage) */
.poll-strip { margin: 30px 0 46px; }
#poll-widget {   /* the question in the panel, the menu on a dark screen at the right, like a cabinet's title menu */
    position: relative; padding: 14px 14px 14px 32px; border-radius: var(--radius-xl);
    background: var(--surface); border: 1px solid var(--border-soft); box-shadow: var(--shadow-card);
}
#poll-widget > * { position: relative; z-index: 1; }
.poll-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 16px 40px; align-items: center; }
/* the screen is a monitor: a fixed width, the menu centered in it */
.poll-screen { display: flex; flex-direction: column; justify-content: center; min-height: 168px; border-radius: var(--radius-lg); padding: 20px 22px 18px; background: #070b09; border: 1px solid rgba(255, 255, 255, 0.12);
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.8), inset 0 0 70px color-mix(in srgb, var(--accent) 9%, transparent), 0 0 0 4px #0c120f; }
.poll-scr-k { margin: 0 0 10px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); }
@media (max-width: 760px) { #poll-widget { padding: 20px 14px 14px; } .poll-grid { grid-template-columns: 1fr; gap: 18px; } .poll-screen { padding: 18px 16px 16px; min-height: 0; } .poll-q { font-size: var(--fs-marquee-md); } }
.poll-lead { min-width: 0; }
.poll-eyebrow .poll-badge { width: 26px; height: 26px; border-radius: var(--radius-md); }
.poll-eyebrow .poll-badge svg { width: 15px; height: 15px; }
.poll-count { margin: 12px 0 0; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; opacity: 0.6; }
.poll-badge { flex-shrink: 0; width: 40px; height: 40px; border-radius: var(--radius-xl); display: grid; place-items: center;
    background: color-mix(in srgb, var(--accent) 16%, transparent); color: var(--accent); }
.poll-badge svg { width: 22px; height: 22px; }
.poll-head-txt { min-width: 0; }
.poll-eyebrow { display: flex; align-items: center; gap: 8px; margin: 2px 0 5px; font-family: var(--font-mono);
    font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); }
.poll-draft { font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
    color: #fbbf24; border: 1px solid rgba(251, 191, 36, 0.4); background: rgba(251, 191, 36, 0.1); padding: 1px 7px; border-radius: var(--radius-pill); }
.poll-q { font-family: var(--font-display); font-size: clamp(28px, 3.4vw, 44px); font-weight: 800; letter-spacing: var(--track-display); margin: 0; max-width: 22ch; text-wrap: balance; line-height: 1.02; }
/* the menu: a cursor on the row under the pointer, the number key at the right */
.poll-opts { display: flex; flex-direction: column; gap: 4px; }
.poll-opt { display: flex; align-items: center; gap: 12px; text-align: left; width: 100%; padding: 9px 12px; border-radius: var(--radius-md); border: 0; line-height: 1.35;
    background: none; color: var(--text-main); font: 700 var(--fs-body) var(--font-mono); cursor: pointer; transition: background 0.15s; }
.poll-opt:hover, .poll-opt:focus-visible { background: color-mix(in srgb, var(--accent) 12%, transparent); outline: none; }
.poll-cur { order: -2; width: 14px; flex: none; font-size: var(--fs-xs); color: var(--accent); opacity: 0; }
.poll-opt:hover .poll-cur, .poll-opt:focus-visible .poll-cur { opacity: 1; animation: poll-blink 1s steps(1) infinite; }
.poll-opt-txt { flex: 1; min-width: 0; }
/* Number-key hint, styled like the games' kbd pills. */
.poll-key { order: -1; flex-shrink: 0; display: grid; place-items: center; min-width: 26px; height: 24px; padding: 0 7px; border-radius: var(--radius-sm);
    font-family: var(--font-mono); font-size: var(--fs-xs); font-weight: 700; color: var(--text-main); opacity: 0.8;
    background: transparent; border: 1px solid rgba(255, 255, 255, 0.28); }
.poll-opt:hover .poll-key { background: color-mix(in srgb, var(--accent) 22%, transparent); }
/* results: LED bars, one segment per five percent, lit in order */
.poll-result { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; align-items: end; margin: 0 0 14px; font-family: var(--font-mono); font-size: var(--fs-sm); }
.poll-result .poll-led { grid-column: 1 / -1; }
.poll-opt-label { font-weight: 700; display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-width: 0; line-height: 1.35; }
.poll-you { white-space: nowrap; }
.poll-crown { color: var(--accent); font-size: var(--fs-xs); }
.poll-result.is-mine .poll-opt-label { color: var(--accent); }
.poll-you { font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--accent); border: 1px solid color-mix(in srgb, var(--accent) 40%, transparent); border-radius: var(--radius-pill); padding: 1px 6px; }
.poll-pct { grid-column: 2; grid-row: 1; font-weight: 700; text-align: right; opacity: 0.85; font-variant-numeric: tabular-nums; }
.poll-led { display: flex; gap: 3px; }
.poll-led i { flex: 1; height: 10px; border-radius: 2px; background: rgba(255, 255, 255, 0.08); transition: background 0.25s, box-shadow 0.25s; }
.poll-led i.on { background: color-mix(in srgb, var(--accent) 55%, #2a3a30); }
.poll-result.is-top .poll-led i.on { background: var(--accent); box-shadow: 0 0 8px color-mix(in srgb, var(--accent), transparent 45%); }
.poll-foot { margin: 14px 0 0; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.12em; text-transform: uppercase; opacity: 0.55; }
.poll-blink { animation: poll-blink-hard 1.6s steps(1) infinite; }   /* a hard blink: the dim phase of an opacity blink reads as low-contrast text */
@keyframes poll-blink-hard { 50% { visibility: hidden; } }
@keyframes poll-blink { 50% { opacity: 0.2; } }
.da-reduce .poll-blink, .da-reduce .poll-cur { animation: none; }
/* collapse control (results view) */
#poll-widget .poll-collapse-btn { position: absolute; top: 12px; right: 13px; z-index: 3; width: 26px; height: 26px;
    display: grid; place-items: center; border-radius: var(--radius-lg); background: transparent; border: 1px solid var(--border-soft);
    color: var(--text-main); opacity: 0.4; font-size: var(--fs-label); line-height: 1; cursor: pointer; transition: 0.15s; }
#poll-widget .poll-collapse-btn:hover { opacity: 1; color: var(--accent); border-color: color-mix(in srgb, var(--accent) 50%, var(--border-soft)); }
#poll-widget .poll-collapse-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; opacity: 1; }
/* collapsed: card becomes a clickable bar */
#poll-widget.is-collapsed { padding: 0; }
.poll-reopen { display: flex; align-items: center; gap: 13px; width: 100%; text-align: left; cursor: pointer;
    background: transparent; border: 0; color: var(--text-main); font: inherit; padding: 13px 18px; border-radius: var(--radius-xl); transition: background 0.15s; }
.poll-reopen:hover { background: color-mix(in srgb, var(--accent) 8%, transparent); }
.poll-reopen:focus-visible { outline: 2px solid var(--accent); outline-offset: -3px; }
.poll-reopen .poll-badge { width: 34px; height: 34px; }
.poll-reopen .poll-badge svg { width: 19px; height: 19px; }
.poll-reopen-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.poll-reopen-q { font-weight: 700; font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.poll-reopen-cta { flex-shrink: 0; font-family: var(--font-mono); font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.04em;
    color: var(--accent); display: inline-flex; align-items: center; gap: 5px; }
.poll-check { font-size: var(--fs-xs); font-weight: 700; }

/* ===== The one file (homepage, first-time visitors): today's cabinet's file, with the three promises hung off it ===== */
.onefile-strip { position: relative; display: grid; grid-template-columns: minmax(220px, 280px) minmax(0, 1fr); gap: 36px; align-items: center; margin: 30px 0 46px; padding: 30px 34px; min-height: 250px;
    background: #0a100c 100% 50% / cover no-repeat; border: 1px solid var(--border-soft); border-radius: var(--radius-window); box-shadow: var(--shadow-card); overflow: hidden; }
/* the banner stays readable: a scrim that opens up toward the right, and the art's focal middle sits under the last column */
.onefile-strip::before { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8, 12, 10, 0.96) 0%, rgba(8, 12, 10, 0.9) 42%, rgba(8, 12, 10, 0.5) 100%); }
.onefile-strip > * { position: relative; z-index: 1; }
.of-file { --ga: var(--accent); position: relative; display: flex; flex-direction: column; gap: 10px; width: 100%; max-width: 250px; margin: 0; padding: 14px; text-align: left; cursor: pointer;
    font: inherit; color: var(--text-main); background: var(--bg-main); border: 1px solid var(--border-medium); border-radius: var(--radius-md) 26px var(--radius-md) var(--radius-md); box-shadow: var(--shadow-card);
    transition: transform 0.2s ease, border-color 0.2s ease; }
.of-file:hover, .of-file:focus-visible { transform: translateY(-2px); border-color: var(--ga); }
/* the folded corner */
.of-file::before { content: ''; position: absolute; top: -1px; right: -1px; width: 26px; height: 26px; border-radius: 0 0 0 var(--radius-md);
    background: linear-gradient(225deg, var(--surface) 50%, var(--ga) 50%); }
.of-kicker { display: flex; align-items: center; gap: 6px; padding-right: 22px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--ga); }
.of-kicker > svg { margin: 0; width: 14px; height: 14px; flex: none; }
.of-reward { margin-left: auto; display: inline-flex; align-items: center; gap: 3px; letter-spacing: 0; color: #f2c14e; font-weight: 700; }
.of-reward .tix-ic { width: 13px; height: 13px; }
.of-fn { font-family: var(--font-mono); font-size: var(--fs-xs); font-weight: 700; word-break: break-all; }
.of-art { display: block; aspect-ratio: 2.1 / 1; border-radius: var(--radius-sm); border: 1px solid var(--border-soft);
    background: color-mix(in srgb, var(--ga) 18%, #0a100c) 50% 100% / cover no-repeat; }
.of-meta { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.06em; text-transform: uppercase; line-height: 1.6; opacity: 0.62; }
.of-meta b { color: var(--text-main); }
.of-claims { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 26px; }
.of-claim { display: flex; flex-direction: column; min-width: 0; }
.of-claim b { display: block; font-family: var(--font-display); font-size: var(--fs-marquee-sm); font-weight: 800; letter-spacing: var(--track-display); line-height: 1; }
.of-claim span { display: block; margin-top: 7px; font-size: var(--fs-sm); line-height: 1.5; opacity: 0.82; }
.of-claim small { order: -1; display: inline-block; margin: 0 0 8px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-caps); text-transform: uppercase; color: var(--accent); }

/* --- FILTERS + SEARCH (WebDweeb pill language) --- */
.grid-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 26px; }
/* #filter-row is the flex container that spaces the pills */
#filter-row { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; }
/* filter pill */
.filter-btn {
    font-size: var(--fs-xs); letter-spacing: 0.01em; cursor: pointer; outline: none;
    padding: 6px 16px; border-radius: var(--radius-pill); font-family: var(--font-main);
    border: 1px solid var(--border-soft); background: var(--surface);
    font-weight: 600; color: var(--text-main); opacity: 0.65; transition: 0.2s;
}
.filter-btn:hover { opacity: 1; border-color: var(--accent); }
.filter-btn.active {
    opacity: 1; background-color: var(--accent); color: #08100b; border-color: var(--accent);
}
.grid-search { position: relative; margin-left: auto; min-width: 200px; }
.grid-search input {
    width: 100%; padding: 9px 14px 9px 34px; border: 1px solid var(--border-soft); border-radius: var(--radius-pill);
    background: rgba(var(--base-shade), 0.04); color: var(--text-main); font-size: var(--fs-sm); outline: none;
    transition: 0.2s; font-family: var(--font-main);
}
.grid-search input:focus { border-color: var(--accent); }
.grid-search svg {
    position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
    width: 14px; height: 14px; opacity: 0.4; pointer-events: none;
}

/* --- CATALOG CONTROLS (games.html: sort select + status/layout segmented groups) --- */
/* two control rows: pills + search, then sort + status + layout */
.grid-controls-2 { margin-top: -14px; }
.sort-field { display: inline-flex; align-items: center; gap: 8px; }
.sort-label { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.08em; text-transform: uppercase; opacity: 0.55; }
.sort-select {
    appearance: none; -webkit-appearance: none;
    padding: 7px 32px 7px 14px; border-radius: var(--radius-pill); cursor: pointer; outline: none;
    border: 1px solid var(--border-soft); background-color: var(--surface); color: var(--text-main);
    font-family: var(--font-main); font-size: var(--fs-sm); font-weight: 600; transition: 0.2s;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5l5 5 5-5' fill='none' stroke='%23e7ece8' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat: no-repeat; background-position: right 12px center; background-size: 10px 7px;
}
.sort-select:hover, .sort-select:focus { border-color: var(--accent); }
/* segmented groups reuse the pill language */
.seg { display: inline-flex; align-items: center; padding: 3px; border-radius: var(--radius-pill);
    border: 1px solid var(--border-soft); background: rgba(var(--base-shade), 0.04); }
.seg-btn {
    border: none; background: none; cursor: pointer; color: var(--text-main); opacity: 0.6;
    font-family: var(--font-main); font-weight: 600; font-size: var(--fs-xs); line-height: 1;
    padding: 6px 14px; border-radius: var(--radius-pill); transition: 0.2s;
}
.seg-btn:hover { opacity: 1; }
.seg-btn.active { opacity: 1; background: var(--accent); color: #08100b; }
.seg-right { margin-left: auto; }                /* the layout toggle sits at the far right of its row */
.seg-right .seg-btn { font-size: var(--fs-h4); padding: 5px 12px; }

/* grid mode hides the body title on art cards (the banner carries it) */
/* grid cards are cartridges (rules further down): the title moves from the art to the label band */

/* --- LIST LAYOUT (games.html toggle; persisted in da_layout) --- */
/* one row per game: art tile in column 1, text in column 2, actions right */
.game-grid.is-list { display: flex; flex-direction: column; gap: 12px; }
.game-grid.is-list .game-card {
    /* minmax(0,1fr) lets column 2 shrink so text wraps */
    display: grid; grid-template-columns: clamp(112px, 30%, 220px) minmax(0, 1fr); align-items: stretch;
}
.game-grid.is-list .game-thumb { grid-column: 1; grid-row: 1 / 99; aspect-ratio: auto; height: 100%;
    border-bottom: none; border-right: 1px solid var(--border-soft); }
.game-grid.is-list .thumb-title,
.game-grid.is-list .thumb-scrim,
.game-grid.is-list .thumb-status { display: none; }             /* use the body's text title instead */
.game-grid.is-list .game-body,
.game-grid.is-list .game-meta,
.game-grid.is-list .game-actions,
.game-grid.is-list .game-guide-link { grid-column: 2; min-width: 0; }  /* min-width:0 = allow text to wrap */
.game-grid.is-list .game-body { padding: 14px 18px 2px; flex: 0 0 auto; }
.game-grid.is-list .game-blurb { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.game-grid.is-list .game-actions { width: auto; padding: 12px 18px 16px; }
.game-grid.is-list .game-actions .btn { flex: 0 0 auto; }
.game-grid.is-list .game-guide-link { padding: 12px 18px 14px; }  /* top pad clears the border-top divider */
/* narrow screens: actions stack under the body */
@media (max-width: 560px) {
    .game-grid.is-list .game-card { grid-template-columns: 96px minmax(0, 1fr); }
    .game-grid.is-list .game-blurb { -webkit-line-clamp: 3; }
    /* action buttons wrap on narrow rows */
    .game-grid.is-list .game-actions { flex-wrap: wrap; }
    .game-grid.is-list .game-meta { padding-right: 14px; }
}

/* --- SHOWCASE HEADER (index.html: "The games" + See all N games link) --- */
.showcase-header { flex-wrap: wrap; }
.see-all-link {
    margin-left: auto; align-self: center; white-space: nowrap;
    font-family: var(--font-mono); font-size: var(--fs-xs); letter-spacing: 0.06em; text-transform: uppercase;
    font-weight: 700; color: var(--accent); text-decoration: none;
    padding: 8px 16px; border-radius: var(--radius-pill); border: 1px solid var(--border-soft); transition: 0.2s;
}
.see-all-link:hover { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, transparent); }
/* showcase: fixed 3-up, 2 then 1 on narrow */
#showcase-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 900px) { #showcase-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { #showcase-strip { grid-template-columns: 1fr; } }
/* library: 3 per row in grid mode only, 2 then 1 on narrow */
#game-grid:not(.is-list) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 900px) { #game-grid:not(.is-list) { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { #game-grid:not(.is-list) { grid-template-columns: 1fr; } }

/* --- GAME GRID --- */
.game-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 20px; }
.game-card { display: flex; flex-direction: column; transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; }
.game-card:hover {
    /* card hover: lift, border warms to the game's accent */
    transform: translateY(-2px); border-color: color-mix(in srgb, var(--ga, var(--accent)) 45%, transparent);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35);
}
.game-card.is-unreleased { opacity: 0.62; }
.game-card.is-unreleased:hover { transform: none; border-color: var(--border-soft); }

.game-thumb {
    aspect-ratio: 16 / 9; position: relative; overflow: hidden;
    border-bottom: 1px solid var(--border-soft);
    display: flex; align-items: center; justify-content: center;
    background:
        radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 60%),
        linear-gradient(145deg, #17231c, #0a100c);
}
.game-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* CRT scanlines over the tile */
.game-thumb::after {
    content: ''; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(rgba(0,0,0,0) 50%, rgba(0,0,0,0.18) 50%);
    background-size: 100% 4px; mix-blend-mode: overlay;
}
/* tinted glass (per-game --ga) under the art */
.game-thumb.thumb-wall, .game-thumb.thumb-art {
    background:
        radial-gradient(58% 60% at 50% 42%, color-mix(in srgb, var(--ga, var(--accent)) 22%, transparent), transparent 70%),
        linear-gradient(150deg, color-mix(in srgb, var(--ga, var(--accent)) 13%, #0a0f0c), #06090b);
}
/* Card art states, set on the TILE (never the <img>) by arcade.watchCardArt():
   .art-idle = scrolled away, image hidden; .art-held = frozen on a canvas over the image.
   Rules key off these classes alone (doc-card covers share them). */
/* parked art: display:none, never visibility (WebKit keeps animating and leaks memory) */
.art-idle img { display: none; }
.art-held img { display: none; }
.thumb-freeze {
    position: absolute; inset: 0; width: 100%; height: 100%; display: block;
    visibility: hidden; pointer-events: none;
}
.art-held .thumb-freeze { visibility: visible; }
.thumb-wall .tw-name {
    position: relative; z-index: 1; max-width: 82%; padding: 12px 18px; border-radius: var(--radius-window); text-align: center;
    font-family: var(--font-display); font-size: clamp(22px, 2.6vw, 28px); font-weight: 800; line-height: 1; letter-spacing: var(--track-display);
    color: var(--ga, var(--accent)); background: rgba(4,8,6,0.5);
    border: 1px solid color-mix(in srgb, var(--ga, var(--accent)), transparent 55%);
    text-shadow: 0 0 22px color-mix(in srgb, var(--ga, var(--accent)), transparent 45%);
    transition: transform 0.25s ease;
}
.game-card:hover .thumb-wall .tw-name { transform: translateY(-3px); }

.game-body { padding: 16px 18px 6px; flex: 1; }
.game-title-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.game-title { font-family: var(--font-display); font-size: var(--fs-marquee-sm); font-weight: 800; letter-spacing: var(--track-display); line-height: 1; }
.game-blurb { font-size: var(--fs-sm); opacity: 0.7; margin: 0; line-height: 1.55; }
/* cover title over the card art */
.game-thumb .thumb-scrim { position: absolute; inset: 0; z-index: 1; pointer-events: none;
    background: linear-gradient(180deg, rgba(4,8,6,0.74) 0%, rgba(4,8,6,0.30) 28%, transparent 52%); }
.game-thumb .thumb-title { position: absolute; left: 14px; top: 11px; right: 70px; z-index: 3; margin: 0;
    font-family: var(--font-display); font-weight: 800; font-size: 26px;
    line-height: 0.9; letter-spacing: var(--track-display); color: #fff; text-shadow: 0 2px 14px rgba(0,0,0,0.62); }
.game-thumb .thumb-title span { color: var(--ga, var(--accent));
    text-shadow: 0 0 16px color-mix(in srgb, var(--ga, var(--accent)), transparent 45%); }
.game-thumb .status-badge.thumb-status { position: absolute; top: 10px; right: 10px; z-index: 3; }
.game-meta {
    display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 12px 18px 0;
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.06em;
}
/* tags: quiet outline pills */
.meta-chip {
    padding: 3px 9px; border-radius: var(--radius-pill); border: 1px solid var(--border-soft);
    opacity: 0.68; text-transform: uppercase;
}
/* a tag made of words reads in Inter, sentence case */
.meta-chip.meta-words { font-family: var(--font-main); font-size: var(--fs-xs); letter-spacing: 0; text-transform: none; }
/* live stats */
.meta-stat {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 3px 10px 3px 8px; border-radius: var(--radius-pill);
    border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 32%, transparent);
    background: color-mix(in srgb, var(--ga, var(--accent)) 12%, transparent);
}
.meta-stat .stat-ic { color: var(--ga, var(--accent)); font-size: var(--fs-label); line-height: 1; }
.meta-stat b { color: var(--text-main); font-weight: 700; letter-spacing: 0.02em; font-variant-numeric: tabular-nums; }
.status-badge {
    font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.12em;
    text-transform: uppercase; padding: 3px 9px; border-radius: var(--radius-pill); flex-shrink: 0;
}
.status-live { color: #34d399; border: 1px solid rgba(52, 211, 153, 0.35); background: rgba(52, 211, 153, 0.08); }
.status-in-development { color: #fbbf24; border: 1px solid rgba(251, 191, 36, 0.35); background: rgba(251, 191, 36, 0.08); }
.status-soon { color: var(--text-main); border: 1px solid var(--border-soft); opacity: 0.55; }

.game-actions { display: flex; gap: 10px; padding: 16px 18px 18px; }

/* --- BUTTONS (WebDweeb .btn-accent-fill + a ghost partner) --- */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    height: 40px; padding: 0 20px; border-radius: var(--radius-md);
    font-family: var(--font-main); font-weight: 700; font-size: var(--fs-xs); letter-spacing: 0.05em;
    text-transform: uppercase; text-decoration: none; cursor: pointer; transition: 0.2s;
    border: 1px solid transparent;
}
.btn svg { width: 14px; height: 14px; }
.btn-accent-fill { background: var(--accent); color: var(--bg-main); border-color: var(--accent); }
.btn-accent-fill:hover { background: color-mix(in srgb, var(--accent) 82%, white); transform: translateY(-1px); }
.btn-ghost { background: transparent; color: var(--text-main); border-color: var(--border-medium); }
.btn-ghost:hover { border-color: var(--accent); color: var(--accent); }
.btn-block { flex: 1; }

.item-hidden { display: none !important; }
.item-visible { animation: fadeIn 0.4s ease-out forwards; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

/* --- PLAYER OVERLAY --- */
#player-overlay {
    position: fixed; inset: 0; z-index: 10000;
    background: rgba(15, 21, 18, 0.92); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
    display: flex; align-items: center; justify-content: center; padding: 2vh 2vw;
    transition: opacity 0.2s ease, visibility 0.2s;
}
/* per-game backdrop wall: negative z-index between overlay and shell */
#player-overlay::before {
    content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
    background-image: var(--player-backdrop, none);
    background-size: cover; background-position: center;
    opacity: 0; transition: opacity 0.4s ease;
}
#player-overlay.has-backdrop::before { opacity: 1; }
/* vignette over the wall */
#player-overlay.has-backdrop::after {
    content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
    background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.30) 100%);
}
#player-overlay.player-hidden { opacity: 0; visibility: hidden; pointer-events: none; }
.player-shell {
    /* stadium framing: the game is a window inside the room */
    width: min(1680px, 100%); height: 100%;
    display: flex; flex-direction: column; overflow: hidden;
    box-shadow: 0 30px 80px rgba(0, 0, 0, 0.65);
}
@media (max-width: 700px) {
    /* phones: gameplay space wins over decoration */
    .player-shell { width: 100%; max-height: 94vh; }
}
.player-bar {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 14px; border-bottom: 1px solid var(--border-soft); flex-shrink: 0;
}
.player-title { font-size: var(--fs-sm); font-weight: 700; letter-spacing: -0.01em; margin-right: auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.player-title::before { content: '▮ '; color: var(--accent); }
.player-btn {
    display: inline-flex; align-items: center; gap: 6px;
    background: transparent; border: 1px solid var(--border-soft); border-radius: var(--radius-sm);
    color: var(--text-main); font-family: var(--font-mono); font-size: var(--fs-xs); letter-spacing: 0.08em;
    text-transform: uppercase; text-decoration: none; padding: 6px 11px; cursor: pointer; transition: 0.2s;
    flex-shrink: 0;
}
.player-btn:hover { border-color: var(--accent); color: var(--accent); }
.player-btn svg { width: 13px; height: 13px; }
/* phones: icon-only bar buttons so Close stays on screen */
@media (max-width: 560px) {
    .player-bar { gap: 6px; padding: 8px 10px; }
    .player-btn { padding: 0; min-width: 40px; height: 38px; justify-content: center; }
    .player-btn .btn-label { display: none; }
    .player-btn svg { width: 17px; height: 17px; }
}
.player-stage { flex: 1; min-height: 0; background: #000; }
.player-stage iframe { width: 100%; height: 100%; border: none; display: block; background: #000; }
/* fullscreened stage: shell fills it */
.player-shell:fullscreen { max-height: none; width: 100%; border-radius: 0; }
/* phones in landscape: drop margins, icon-only bar */
@media (orientation: landscape) and (max-height: 500px) {
    #player-overlay { padding: 0; }
    .player-shell { width: 100%; height: 100%; max-height: none; border-radius: 0; }
    .player-bar { gap: 6px; padding: 4px 10px; }
    .player-btn { padding: 0; min-width: 40px; height: 36px; justify-content: center; }
    .player-btn .btn-label { display: none; }
    .player-btn svg { width: 17px; height: 17px; }
}

/* --- ABOUT: open layout (no boxes); numbered sections, a hairline stats band, FAQ rows, an open closing CTA --- */
.prose-card { padding: 34px 36px; margin-bottom: 22px; }
.about-lead { max-width: 760px; margin: 6px 0 0; }
.about-lead p { font-size: var(--fs-lead); opacity: 0.9; margin: 0 0 12px; line-height: 1.6; }
#about-story { display: grid; grid-template-columns: 1fr 1fr; gap: 0 56px; align-items: start; margin-top: 30px; }
@media (max-width: 820px) { #about-story { grid-template-columns: 1fr; } }
.about-sec { padding: 26px 0 20px; border-top: 1px solid var(--border-soft); }
.about-sec h2 { display: flex; align-items: baseline; gap: 12px; margin: 0 0 14px;
    font-family: var(--font-display); font-size: var(--fs-marquee-md); font-weight: 800; letter-spacing: var(--track-display); line-height: 1.05; }
.about-sec h2 .h-index { flex: none; font-family: var(--font-mono); font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.1em; color: var(--accent); }
.about-sec p, .about-sec li { font-size: var(--fs-body); opacity: 0.8; line-height: 1.65; }
.about-sec p { margin: 0 0 12px; }
.about-sec p:last-child { margin-bottom: 0; }
.about-sec ul { margin: 0; padding-left: 20px; }
.about-sec li { margin-bottom: 6px; }

/* by the numbers: one band between two hairlines */
.about-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 34px 0 0; border-top: 1px solid var(--border-soft); border-bottom: 1px solid var(--border-soft); }
.about-stat { padding: 18px 20px 16px; border-right: 1px solid var(--border-soft); min-width: 0; }
.about-stat:last-child { border-right: 0; }
.about-stat b { display: block; font-family: var(--font-display); font-size: clamp(30px, 3.6vw, 40px); font-weight: 800; line-height: 1; color: var(--accent); font-variant-numeric: tabular-nums; }
.about-stat span { display: block; margin-top: 7px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.1em; text-transform: uppercase; opacity: 0.6; }
@media (max-width: 620px) {
    .about-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .about-stat:nth-child(2n) { border-right: 0; }
    .about-stat:nth-child(-n+2) { border-bottom: 1px solid var(--border-soft); }
}

/* FAQ: question and answer as hairline rows, two columns on the wide page */
.about-section-h { font-family: var(--font-display); font-size: var(--fs-marquee-md); font-weight: 800; letter-spacing: var(--track-display); line-height: 1; margin: 4px 0 0; }
.about-faq { margin-top: 48px; }
.faq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 56px; align-items: start; margin-top: 18px; }
@media (max-width: 760px) { .faq-grid { grid-template-columns: 1fr; } }
.faq-row { padding: 18px 0 16px; border-top: 1px solid var(--border-soft); }
.faq-row h3 { font-size: var(--fs-h4); font-weight: 700; margin: 0 0 6px; line-height: 1.3; }
.faq-a { font-size: var(--fs-body); opacity: 0.8; line-height: 1.6; }
.faq-a p { margin: 0 0 8px; }
.faq-a p:last-child { margin-bottom: 0; }
.faq-a a { color: var(--accent); }

/* closing CTA: open and centered under a hairline */
.about-cta { margin-top: 56px; padding-top: 36px; border-top: 1px solid var(--border-soft); }
.cta-open { max-width: 640px; margin: 0 auto; text-align: center; }
.cta-open .about-section-h { margin-top: 6px; }
.cta-sub { opacity: 0.8; margin: 10px 0 20px; font-size: var(--fs-body); }
.cta-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

.prose-card p { font-size: var(--fs-body); opacity: 0.8; margin: 0 0 12px; }
.prose-card p:last-child { margin-bottom: 0; }
.prose-card code {
    font-family: var(--font-mono); font-size: var(--fs-xs);
    background: rgba(var(--base-shade), 0.07); border: 1px solid var(--border-soft);
    border-radius: var(--radius-sm); padding: 1px 6px;
}
.prose-card ul { margin: 0 0 12px; padding-left: 20px; }
.prose-card li { font-size: var(--fs-body); opacity: 0.8; margin-bottom: 6px; }

/* About intro stays a plain prose card */

/* --- MARQUEE TICKER (arcade signage under the nav; hidden offline) --- */
.marquee { display: none; border-bottom: 1px solid var(--border-soft); background: rgba(0, 0, 0, 0.25); overflow: hidden;
    -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }   /* iOS inflates any ticker item wider than the screen */
.marquee.ticker-visible { display: block; }
.marquee-track {
    display: inline-flex; gap: 0; white-space: nowrap; padding: 7px 0;
    font-family: var(--font-mono); font-size: var(--fs-xs); letter-spacing: 0.12em; text-transform: uppercase;
    animation: marquee-scroll 30s linear infinite; will-change: transform;
}
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-track span { padding: 0 28px; opacity: 0.7; flex-shrink: 0; }
.marquee-track span b { color: var(--accent); font-weight: 700; }
.marquee-track span::before { content: '◆'; color: var(--accent); margin-right: 28px; opacity: 0.5; }
@keyframes marquee-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .marquee-track { animation: none; } }

/* ---- Hero rotator (assets/heroes/<slug>.svg; the empty .rot-stage in index.html is the first paint) ---- */
#hero-rotator[hidden] { display: none !important; }
#hero-rotator {
    position: relative; isolation: isolate; z-index: 10;   /* lifts the hanging winter lights over the content below (stays under the sticky header, z 50) */
    width: 100vw; left: 50%; transform: translateX(-50%); margin: 0 0 6px;
}
.rot-stage {
    position: relative; height: clamp(430px, 56vh, 540px); overflow: hidden; background: #040705;
    border-bottom: 1px solid var(--border-soft);
    box-shadow: inset 0 -80px 90px -60px #000, 0 0 60px -20px color-mix(in srgb, var(--accent), transparent 55%);
    --accent: var(--accent); /* overridden per slide */
}
.rot-slide {
    position: absolute; inset: 0; opacity: 0;
    transition: opacity 0.85s ease; pointer-events: none;
}
.rot-slide.on { opacity: 1; pointer-events: auto; }
/* parked slides: display:none, never visibility (WebKit keeps animating and leaks memory) */
.rot-slide.idle { display: none; }
/* banner fades in as it decodes; .art-now skips the fade for already-decoded art */
.rot-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; user-select: none;
    opacity: 0; transition: opacity 0.45s ease; }
.rot-slide.art .rot-bg { opacity: 1; }
.rot-slide.art-now .rot-bg { transition: none; }
.rot-veil { position: absolute; inset: 0; pointer-events: none; background:
    radial-gradient(90% 55% at 50% 4%, rgba(4,8,6,.35), transparent 60%),
    linear-gradient(180deg, rgba(4,8,6,.5) 0%, transparent 22%, transparent 52%, rgba(3,6,4,.92) 100%); }
.rot-front { position: absolute; left: 0; right: 0; top: 0; z-index: 2; text-align: center; padding: clamp(30px, 7%, 70px) 16px 0; }
.rot-kick { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.32em;
    text-transform: uppercase; color: rgba(255,255,255,.55); margin: 0 0 10px; }
.rot-name { font-family: var(--font-display); font-size: clamp(36px, 7.4vw, 70px); font-weight: 800; line-height: 0.9;
    letter-spacing: var(--track-display); margin: 0; text-shadow: 0 2px 34px rgba(0,0,0,.55); }
.rot-name span { color: var(--accent); text-shadow: 0 0 26px color-mix(in srgb, var(--accent), transparent 40%); }
/* scrim pill behind the tagline (:empty guard) */
.rot-tagline { font-family: var(--font-mono); font-size: clamp(12px, 1.5vw, 14px); color: #eef4f0;
    display: inline-block; max-width: 100%; margin: clamp(10px, 2.2%, 16px) 0 0;
    padding: 5px 15px; border-radius: var(--radius-pill);
    background: rgba(6,10,8,.42); border: 1px solid rgba(255,255,255,.1);
    -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
    text-shadow: 0 1px 3px rgba(0,0,0,.9); }
.rot-tagline:empty { display: none; }
.rot-arrow { position: absolute; top: calc(50% - 44px); z-index: 6; width: 44px; height: 44px; border-radius: 50%;
    border: 1px solid rgba(255,255,255,.22); background: rgba(6,10,8,.42); backdrop-filter: blur(3px);
    color: #fff; cursor: pointer; display: grid; place-items: center; font-size: 22px; line-height: 1; opacity: 0; transition: 0.18s; }
#hero-rotator:hover .rot-arrow, .rot-arrow:focus-visible { opacity: 0.92; }
.rot-arrow:hover { background: rgba(6,10,8,.8); border-color: var(--accent); color: var(--accent); }
.rot-arrow.l { left: clamp(10px, 2vw, 22px); } .rot-arrow.r { right: clamp(10px, 2vw, 22px); }
.rot-bar { position: absolute; left: 0; right: 0; bottom: 0; z-index: 5; display: flex; align-items: center;
    gap: 14px; flex-wrap: wrap; padding: 14px max(clamp(16px, 4vw, 44px), var(--sar)) 16px max(clamp(16px, 4vw, 44px), var(--sal)); }
.rot-now { display: flex; align-items: center; gap: 11px; min-width: 0; }
.rot-now .cat { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--accent); border: 1px solid var(--accent); border-radius: var(--radius-pill); padding: 3px 10px; white-space: nowrap; opacity: 0.9; }
.rot-now .lbl { font-family: var(--font-mono); font-size: var(--fs-xs); color: #cdd8d0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rot-now .lbl b { color: #fff; font-weight: 700; }
.rot-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-wrap: wrap; }
.rot-dots { display: flex; gap: 8px; align-items: center; margin-right: 4px; }
.rdot { width: 9px; height: 9px; border-radius: 50%; border: 1px solid rgba(255,255,255,.3); background: transparent; cursor: pointer; padding: 0; transition: 0.18s; }
.rdot:hover { border-color: #fff; }
.rdot.on { background: var(--accent); border-color: var(--accent); width: 22px; border-radius: var(--radius-md); box-shadow: 0 0 10px color-mix(in srgb, var(--accent), transparent 40%); }
.rot-prog { position: absolute; left: 0; bottom: 0; height: 3px; width: 0; z-index: 6; background: var(--accent);
    box-shadow: 0 0 10px var(--accent); opacity: 0.9; }
.rot-prog.run { transition: width var(--dur, 7s) linear; width: 100%; }
@media (prefers-reduced-motion: reduce) {
    .rot-slide { transition: opacity 0.3s; }
    .rot-prog.run { transition: none; width: 0; }
}
@media (max-width: 720px) {
    .rot-stage { height: clamp(380px, 66vh, 460px); }
    .rot-actions .btn .rl { display: none; }
    .rot-now .lbl { display: none; }
    /* dot strip shrinks/scrolls instead of wrapping the buttons */
    .rot-bar { flex-wrap: nowrap; gap: 10px; }
    .rot-actions { flex-wrap: nowrap; min-width: 0; }
    .rot-dots { gap: 6px; min-width: 0; overflow-x: auto; scrollbar-width: none; padding: 4px 0; }
    .rot-dots::-webkit-scrollbar { display: none; }
    .rdot { width: 7px; height: 7px; flex: none; }
    .rdot.on { width: 18px; }
    /* softer radius at phone widths */
    .rot-tagline { padding: 5px 12px; border-radius: var(--radius-window); }
}

/* ---- Seasonal specials: tag pill + edge glow on a holiday game's slide and card (--sea = game accent) ---- */
.season-tag {
    display: inline-block; pointer-events: none; white-space: nowrap;
    font-family: var(--font-mono); font-size: var(--fs-label); line-height: 14px; font-weight: 700;
    letter-spacing: 0.14em; text-transform: uppercase; color: var(--sea, var(--accent));
    padding: 3px 10px; border-radius: var(--radius-pill);
    background: rgba(12, 7, 4, 0.62); border: 1px solid color-mix(in srgb, var(--sea, var(--accent)) 55%, transparent);
    box-shadow: 0 0 14px -3px color-mix(in srgb, var(--sea, var(--accent)) 50%, transparent);
}
/* rotator: centered above the kicker */
.rot-season { display: table; margin: 0 auto 4px; }   /* a block of its own (no line-box strut), centered */
.rot-slide.seasonal .rot-front { padding-top: max(4px, calc(clamp(30px, 7%, 70px) - 26px)); }
.rot-slide.seasonal::after {
    content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--sea) 30%, transparent),
                inset 0 0 80px -18px color-mix(in srgb, var(--sea) 55%, transparent);
    animation: da-sea-breathe 7s ease-in-out infinite alternate;
}
@keyframes da-sea-breathe { from { opacity: 0.6; } to { opacity: 1; } }
/* on a card: bottom-left of the art */
.game-thumb .thumb-season { position: absolute; left: 10px; bottom: 10px; z-index: 3; font-size: var(--fs-label); line-height: 12px; padding: 3px 8px; }
@media (prefers-reduced-motion: reduce) { .rot-slide.seasonal::after { animation: none; opacity: 0.85; } }

/* --- ATTRACT MODE (homepage idle screen: game banners, arcade.js attractShow) --- */
#attract-overlay {
    position: fixed; inset: 0; z-index: 11000; background: #040705; overflow: hidden;
    display: none; cursor: pointer; --ga: var(--accent);
}
#attract-overlay.attract-on { display: block; animation: attract-in 0.8s ease-out; }
@keyframes attract-in { from { opacity: 0; } to { opacity: 1; } }
#attract-overlay::after {   /* CRT scanlines */
    content: ''; position: absolute; inset: 0; pointer-events: none; z-index: 4;
    background: linear-gradient(rgba(0,0,0,0) 50%, rgba(0,0,0,0.28) 50%); background-size: 100% 4px;
}
.attract-art { position: absolute; inset: 0; opacity: 0; transition: opacity 0.9s ease; }
.attract-art.on { opacity: 1; }
.attract-art .aa-fill { display: none; position: absolute; inset: -6%; background-size: cover; background-position: 50% 100%;
    filter: blur(20px) brightness(0.38) saturate(1.15); }
.attract-art .aa-pic { position: absolute; left: -3%; top: -3%; width: 106%; height: 106%; display: block;
    object-fit: cover; object-position: 50% 100%; background-size: cover; background-position: 50% 100%;
    -webkit-user-select: none; user-select: none; animation: attract-drift 16s ease-in-out infinite alternate; }
@keyframes attract-drift { from { transform: translate3d(-1.6%, 0.6%, 0); } to { transform: translate3d(1.6%, -0.6%, 0); } }
.attract-veil { position: absolute; inset: 0; z-index: 2; pointer-events: none; background:
    radial-gradient(90% 60% at 50% 0%, rgba(4,8,6,.62), transparent 62%),
    linear-gradient(180deg, rgba(4,8,6,.55) 0%, transparent 26%, transparent 58%, rgba(3,6,4,.94) 100%); }
.attract-copy { position: absolute; left: 0; right: 0; top: 0; z-index: 3; text-align: center;
    padding: clamp(48px, 11vh, 120px) 20px 0; }
.attract-copy.in { animation: attract-copy-in 0.9s ease-out both; }
@keyframes attract-copy-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.attract-kick { font-family: var(--font-mono); font-size: clamp(11px, 1.3vw, 12px); letter-spacing: 0.34em;
    text-transform: uppercase; color: rgba(255,255,255,.6); margin: 0 0 12px; }
.attract-title { font-family: var(--font-main); font-size: clamp(40px, 8.5vw, 104px); font-weight: 900; line-height: 0.9;
    letter-spacing: -0.03em; margin: 0; color: #fff; text-shadow: 0 4px 44px rgba(0,0,0,.7); }
.attract-title span { color: var(--ga); text-shadow: 0 0 34px color-mix(in srgb, var(--ga), transparent 40%); }
.attract-blurb { display: inline-block; max-width: min(640px, 100%); margin: clamp(14px, 2.4vh, 22px) 0 0; padding: 6px 16px;
    font-family: var(--font-mono); font-size: clamp(12px, 1.5vw, 15px); color: #eef4f0; border-radius: var(--radius-pill);
    background: rgba(6,10,8,.5); border: 1px solid rgba(255,255,255,.1); text-shadow: 0 1px 3px rgba(0,0,0,.9); }
.attract-blurb:empty { display: none; }
.attract-foot { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; text-align: center;
    padding: 0 20px calc(26px + env(safe-area-inset-bottom, 0px)); }
.attract-press {
    font-family: var(--font-mono); font-size: var(--fs-sm); letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--ga); margin: 0 0 18px; text-shadow: 0 0 18px color-mix(in srgb, var(--ga), transparent 35%);
    animation: attract-blink 1.2s steps(1) infinite;
}
.attract-press .ap-tap { display: none; }
@media (hover: none) { .attract-press .ap-key { display: none; } .attract-press .ap-tap { display: inline; } }
@keyframes attract-blink { 50% { opacity: 0; } }
.attract-brand {
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.25em; text-transform: uppercase; opacity: 0.45; margin: 0;
}
/* portrait: the banner sits as a band over a blurred fill, like the rotator on a phone */
@media (max-aspect-ratio: 4/5) {
    .attract-art .aa-fill { display: block; }
    .attract-art .aa-pic { left: 0; width: 100%; top: 34%; height: 38%; animation: none;
        -webkit-mask-image: linear-gradient(180deg, transparent, #000 14%, #000 86%, transparent);
        mask-image: linear-gradient(180deg, transparent, #000 14%, #000 86%, transparent); }
    .attract-copy { padding-top: clamp(40px, 8vh, 80px); }
}
@media (prefers-reduced-motion: reduce) {
    .attract-art .aa-pic, .attract-copy.in, .attract-press { animation: none; }
    .attract-art { transition: opacity 0.3s; }
}

/* --- ANNOUNCEMENT TOP SHELF (WebDweeb's slim dismissible bar, verbatim DNA) --- */
.top-shelf { width: 100%; background: var(--accent); display: none; }
.top-shelf.shelf-visible { display: block; }
.top-shelf-inner { max-width: 1440px; margin: 0 auto; padding: 12px max(5vw, var(--sar)) 12px max(5vw, var(--sal)); display: flex; align-items: center; gap: 12px; font-size: var(--fs-sm); }
.top-shelf-badge { background: rgba(0,0,0,0.25); color: #fff; font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.05em; padding: 2px 7px; border-radius: var(--radius-sm); text-transform: uppercase; flex-shrink: 0; }
.top-shelf-title { font-weight: 700; color: #fff; flex-shrink: 0; }
.top-shelf-desc { color: rgba(255,255,255,0.9); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1; }
.top-shelf-cta { color: #fff; font-weight: 700; text-decoration: underline; text-underline-offset: 2px; flex-shrink: 0; white-space: nowrap; }
.top-shelf-cta:hover { opacity: 0.85; }
.top-shelf-close { background: none; border: none; color: rgba(255,255,255,0.9); font-size: var(--fs-h3); line-height: 1; cursor: pointer; padding: 0 2px; flex-shrink: 0; }

/* --- FEATURED SPOTLIGHT (admin-picked cabinet, big hero treatment) --- */
.spotlight { display: none; margin: 0 0 44px; }
.spotlight.spot-visible { display: block; }
.spotlight-inner { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 4fr); min-height: 250px; }
/* dialogue-box double frame around the featured game */
.spotlight-inner::after { content: ''; position: absolute; inset: 7px; border-radius: var(--radius-xl); pointer-events: none;
    z-index: 2; border: 1px solid color-mix(in srgb, var(--accent) 24%, transparent); }
.spotlight-copy { padding: 30px 34px; display: flex; flex-direction: column; align-items: flex-start; }
.spotlight-kicker { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.2em; text-transform: uppercase; color: var(--accent); margin: 0 0 10px; }
.spotlight-title { font-family: var(--font-display); font-size: var(--fs-marquee-md); font-weight: 800; letter-spacing: var(--track-display); line-height: 1; margin: 0 0 10px; }
.spotlight-desc { font-size: var(--fs-sm); opacity: 0.75; margin: 0 0 18px; max-width: 480px; }
.spotlight-actions { display: flex; gap: 10px; margin-top: auto; }
.spotlight-art {
    position: relative; display: flex; align-items: center; justify-content: center; overflow: hidden;
    border-left: 1px solid var(--border-soft);
    background:
        radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--accent) 26%, transparent), transparent 65%),
        linear-gradient(145deg, #17231c, #0a100c);
}
.spotlight-art img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.spotlight-art .spot-still { position: absolute; inset: 0; background-size: cover; background-position: 50% 100%; background-repeat: no-repeat; }
.spotlight-art::after {
    content: ''; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(rgba(0,0,0,0) 50%, rgba(0,0,0,0.18) 50%); background-size: 100% 4px; mix-blend-mode: overlay;
}
@media (max-width: 760px) {
    .spotlight-inner { grid-template-columns: 1fr; }
    .spotlight-art { min-height: 160px; border-left: none; border-top: 1px solid var(--border-soft); order: 2; }
}

/* --- TROPHIES (trophies.html: device-local medals + achievements dashboard) --- */
.tr-empty { text-align: center; padding: 60px 20px; }
.tr-empty-ring { font-size: 46px; margin-bottom: 8px; }
.tr-empty h2 { margin: 0 0 8px; font-family: var(--font-display); font-size: var(--fs-marquee-md); font-weight: 800; letter-spacing: var(--track-display); }
.tr-empty p { margin: 0 auto 20px; max-width: 420px; opacity: 0.7; line-height: 1.6; }

/* the overview tab: the control strip (no box) */
.tr-dash { padding: 0; }
.tr-tier { padding: 2px 9px; border-radius: var(--radius-pill); font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.11em; text-transform: uppercase;
    color: color-mix(in srgb, var(--ring, var(--accent)) 60%, #fff); background: color-mix(in srgb, var(--ring, var(--accent)) 16%, transparent);
    border: 1px solid color-mix(in srgb, var(--ring, var(--accent)) 40%, transparent); }
.tr-stat { position: relative; display: flex; flex-direction: column; min-width: 0; }
.tr-stat b { font-family: var(--font-display); font-weight: 800; line-height: 0.9; letter-spacing: 0; color: var(--sc, var(--accent)); font-variant-numeric: tabular-nums; }
.tr-stat-l { display: flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.09em; text-transform: uppercase; opacity: 0.62; line-height: 1.3; }
.tr-stat-ic { width: 14px; height: 14px; flex: none; color: var(--sc, var(--accent)); }
.tr-stat-ic svg { width: 100%; height: 100%; display: block; }
/* control strip: primary action left, utilities right */
.tr-actions { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
    margin-top: 4px; }
.tr-id-btn { box-shadow: 0 0 22px color-mix(in srgb, var(--accent), transparent 68%); }
.tr-actions-util { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.tr-actions-util .btn { height: 38px; padding: 0 16px; }
.tr-chime-btn { width: 38px; height: 38px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--border-soft); border-radius: var(--radius-lg); background: none; color: var(--text-main);
    font-size: var(--fs-body); line-height: 1; cursor: pointer; transition: 0.15s; }
.tr-chime-btn:hover { border-color: var(--accent); }
.tr-chime-btn[aria-pressed="true"] { opacity: 0.45; }   /* pressed = muted, so it reads as "off" */
.tr-note { margin: 16px 2px 0; font-size: var(--fs-meta); opacity: 0.55; line-height: 1.5; }

.tr-h2 { font-family: var(--font-display); font-size: var(--fs-h3); font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; margin: 34px 0 14px; display: flex; align-items: baseline; gap: 10px; }
.tr-count { font-family: var(--font-mono); font-size: var(--fs-xs); font-weight: 400; opacity: 0.55; letter-spacing: 0; text-transform: none; }

.tr-ach-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.tr-ach { display: flex; align-items: center; gap: 12px; padding: 13px 15px; border-radius: var(--radius-lg);
    background: var(--surface); border: 1px solid var(--border-soft); }
.tr-ach.is-locked { opacity: 0.5; }
.tr-ach.is-secret .tr-ach-desc { font-style: italic; }   /* a hidden trophy: masked until found */
.tr-ach-badge svg { width: 40px; height: 40px; display: block; flex: none; }
.tr-ach .rosette { fill: none; stroke: var(--text-main); stroke-width: 2; opacity: 0.3; }
.tr-ach .tick { stroke: var(--text-main); stroke-width: 2.4; opacity: 0.3; stroke-linecap: round; stroke-linejoin: round; }
.tr-ach.is-earned .rosette { fill: color-mix(in srgb, var(--accent) 18%, transparent); stroke: var(--accent); opacity: 1; }
.tr-ach.is-earned .tick { stroke: var(--accent); opacity: 1; }
.tr-ach-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tr-ach-name { font-size: var(--fs-sm); font-weight: 700; }
.tr-ach-desc { font-size: var(--fs-xs); opacity: 0.65; line-height: 1.4; }

/* the trophy case: a cartridge rack; every game is a cartridge in its accent, the cups sit on the label, the ledger is the game's Your best */
.tr-case { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 24px 18px; }
.tr-cart { position: relative; display: flex; flex-direction: column; padding: 0 12px; background: transparent; border-radius: 4px 4px 6px 6px;
    clip-path: polygon(0 16px, 16px 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 0 100%); }
.tr-cart::before { content: ''; position: absolute; inset: 0; z-index: 0; background: linear-gradient(180deg, #27322b 0%, #1a231d 100%); }
.tr-cart:hover { background: color-mix(in srgb, var(--ga, var(--accent)) 80%, transparent); }
.tr-cart:hover::before { inset: 2px; clip-path: polygon(0 15px, 15px 0, calc(100% - 15px) 0, 100% 15px, 100% 100%, 0 100%); }
.tr-cart > * { position: relative; z-index: 1; }
.tr-cart .cart-end { padding: 8px 10px 5px; }
.tr-cart .cart-label { flex: none; }
.tr-cart-art { position: relative; aspect-ratio: 2.1 / 1; background: color-mix(in srgb, var(--ga, var(--accent)) 14%, #0a100c) center / cover no-repeat; }
.tr-cart-art::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(4, 8, 6, 0.08), rgba(4, 8, 6, 0.18) 45%, rgba(4, 8, 6, 0.84)); }
.tr-cart:not(.is-lit) .tr-cart-art { filter: saturate(0.55) brightness(0.75); }
.tr-cart .tr-medals { position: absolute; left: 0; right: 0; bottom: 6px; z-index: 1; display: flex; justify-content: center; align-items: flex-end; gap: 9px; margin: 0; }
.tr-cart .tr-medal { width: 30px; }
.tr-cart .tr-medal svg { width: 30px; height: 37px; }
.tr-cart .is-top .tr-medal { width: 40px; }
.tr-cart .is-top .tr-medal svg { width: 40px; height: 49px; }
.tr-cart .tr-medal.is-earned svg { filter: drop-shadow(0 0 7px color-mix(in srgb, var(--ga, var(--accent)), transparent 40%)) drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5)); }
/* locked cups read as ghosts on the art */
.tr-cart .tr-medal.is-locked .cup { fill: rgba(255, 255, 255, 0.14); stroke: rgba(255, 255, 255, 0.22); }
.tr-cart .tr-medal.is-locked .handle { stroke: rgba(255, 255, 255, 0.26); }
.tr-cart .tr-medal.is-locked .init { fill: rgba(255, 255, 255, 0.35); }
.tr-cup, .tr-cupwrap { display: block; background: none; border: 0; padding: 0; margin: 0; cursor: default; border-radius: var(--radius-md); }
.tr-cup { cursor: pointer; }
.tr-cup:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.tr-cup .tr-medal { position: relative; }
.tr-cart-title { margin: 0; padding: 10px 14px 6px; font-family: var(--font-display); font-size: var(--fs-marquee-sm); font-weight: 800; letter-spacing: var(--track-display); line-height: 1;
    color: var(--ga, var(--accent)); text-shadow: 0 0 14px color-mix(in srgb, var(--ga, var(--accent)), transparent 60%); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tr-cart .best-strip { margin: 4px 10px 10px; }
.tr-cart-next { display: flex; flex-direction: column; gap: 6px; padding: 0 12px 12px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.04em; opacity: 0.72; }
.tr-cart-next .tr-bar { height: 4px; }
.tr-cart-foot { display: flex; align-items: center; justify-content: center; padding: 10px 0 8px; }
.tr-cart-play { width: 100%; height: 40px; }
.tr-cart::after { content: ''; position: relative; z-index: 1; flex: none; height: 20px; margin: 0 -12px;
    background: repeating-linear-gradient(90deg, transparent 0 10px, rgba(0, 0, 0, 0.42) 10px 13px); border-top: 1px solid rgba(255, 255, 255, 0.06); }
.tr-case-legend { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin: 14px 4px 0; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.08em; text-transform: uppercase; opacity: 0.55; }
.tr-unplayed { opacity: 0.55; }
.tr-play { background: none; border: 1px solid var(--border-soft); border-radius: var(--radius-lg); cursor: pointer;
    font-family: inherit; font-size: var(--fs-xs); font-weight: 600; color: var(--text-main); padding: 5px 10px; flex: none; transition: 0.15s; }
.tr-play:hover, .tr-play:focus-visible { border-color: var(--ga, var(--accent)); color: var(--ga, var(--accent)); outline: none; }
.tr-art { width: 38px; height: 38px; flex: none; border-radius: var(--radius-lg);
    background: color-mix(in srgb, var(--ga, var(--accent)) 16%, #0a100c) 50% 100% / cover no-repeat;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ga, var(--accent)), transparent 50%), 0 4px 12px -6px rgba(0,0,0,0.6); }
.tr-medals { display: flex; gap: 10px; margin: 14px 0 12px; }
.tr-medal { width: 42px; }
.tr-medal svg { width: 42px; height: 51px; display: block; }
.tr-medal .cup { stroke: rgba(0, 0, 0, 0.22); stroke-width: 0.75; }
.tr-medal .handle { stroke-width: 3; stroke-linecap: round; }
.tr-medal .init { font: 800 13px/1 Inter, system-ui, sans-serif; fill: rgba(0, 0, 0, 0.5); }
.tr-medal.is-locked .cup { fill: #2a332d; }
.tr-medal.is-locked .handle { stroke: #2a332d; }
.tr-medal.is-locked .init { fill: rgba(255, 255, 255, 0.2); }
.tr-medal.is-earned svg { filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.45)); }
.tr-medal.is-earned.tr-medal-bronze .cup { fill: #cd7f32; }
.tr-medal.is-earned.tr-medal-bronze .handle { stroke: #cd7f32; }
.tr-medal.is-earned.tr-medal-silver .cup { fill: #cbd5da; }
.tr-medal.is-earned.tr-medal-silver .handle { stroke: #cbd5da; }
.tr-medal.is-earned.tr-medal-gold .cup { fill: #f5c542; }
.tr-medal.is-earned.tr-medal-gold .handle { stroke: #f5c542; }
.tr-medal.is-earned.tr-medal-platinum .cup { fill: #7fe3d0; }
.tr-medal.is-earned.tr-medal-platinum .handle { stroke: #7fe3d0; }

.tr-next-label { font-size: var(--fs-xs); opacity: 0.65; margin-bottom: 6px; }
.tr-bar { height: 5px; border-radius: var(--radius-sm); background: rgba(255, 255, 255, 0.06); overflow: hidden; }
.tr-bar > i { display: block; height: 100%; border-radius: var(--radius-sm); background: var(--ga, var(--accent)); }
.tr-maxed { font-size: var(--fs-xs); opacity: 0.6; font-style: italic; }

@media (max-width: 1024px) { .tr-summary { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 560px) {
    .tr-id-btn { width: 100%; }
    .tr-actions-util { width: 100%; justify-content: space-between; }
}

/* ===== Trophies page: tabs, filter, groups, shelf, pins ===== */
.tr-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--border-soft); margin: 6px 0 22px; flex-wrap: wrap; }
.tr-tab { appearance: none; background: none; border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px;
    padding: 12px 16px; font-family: var(--font-display); font-size: var(--fs-h3); font-weight: 800; letter-spacing: var(--track-display); text-transform: uppercase; color: var(--text-main);
    opacity: 0.55; cursor: pointer; transition: opacity 0.15s, border-color 0.15s; display: inline-flex; align-items: baseline; gap: 7px; }
.tr-tab:hover { opacity: 0.85; }
.tr-tab.is-active { opacity: 1; border-bottom-color: var(--accent); }
.tr-tab-count { font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 400; opacity: 0.6; }
.tr-panel[hidden] { display: none; }

/* Recently earned strip (Overview) */
.tr-recent { margin-top: 26px; }
.tr-recent-h { font-family: var(--font-display); font-size: var(--fs-marquee-sm); font-weight: 800; letter-spacing: var(--track-display); line-height: 1; margin: 0 0 14px;
    display: flex; align-items: center; gap: 10px; }
/* accent tick before overview headers */
.tr-recent-h::before { content: ''; width: 4px; height: 20px; border-radius: 2px; background: var(--accent); flex: none; box-shadow: 0 0 8px color-mix(in srgb, var(--accent), transparent 55%); }
.tr-recent-row { display: flex; flex-wrap: wrap; gap: 10px; }
.tr-recent-chip { display: flex; align-items: center; gap: 10px; padding: 8px 10px 8px 8px; border-radius: var(--radius-lg);
    background: var(--surface); border: 1px solid var(--border-soft); border-left: 3px solid var(--ga, var(--accent)); }
.tr-recent-ic { flex: none; display: flex; align-items: center; }
.tr-recent-ic .tr-medal { width: 26px; } .tr-recent-ic .tr-medal svg { width: 26px; height: 31px; }
.tr-recent-ic .tr-ach-badge svg { width: 30px; height: 30px; }
/* badges in the recent strip and shelf are always earned: tint as earned */
.tr-recent-ic .rosette, .tr-shelf-ic .rosette { fill: color-mix(in srgb, var(--ga, var(--accent)) 18%, transparent); stroke: var(--ga, var(--accent)); opacity: 1; }
.tr-recent-ic .tick, .tr-shelf-ic .tick { stroke: var(--ga, var(--accent)); opacity: 1; }
.tr-recent-lab { display: flex; flex-direction: column; gap: 1px; font-size: var(--fs-meta); font-weight: 700; line-height: 1.2; }
.tr-recent-sub { font-weight: 400; opacity: 0.7; font-size: var(--fs-xs); }
.tr-recent-age { font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 400; opacity: 0.5; letter-spacing: 0.04em; }

/* Overview modules: Almost there, Jump back in, Activity heatmap */
.tr-ov-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; margin-top: 30px; }
@media (max-width: 720px) { .tr-ov-cols { grid-template-columns: 1fr; gap: 20px; } }
.tr-ov-sec { min-width: 0; }
.tr-ov-sec .tr-recent-h { margin-top: 0; }
.tr-recent, .tr-ov-cols + .tr-recent { margin-top: 30px; }
/* heatmap: wide bottom anchor with a hairline above */
.tr-heat-block { margin-top: 36px; padding-top: 30px; border-top: 1px solid var(--border-soft); }

/* Almost there: closest unearned tiers */
.tr-near-list { display: flex; flex-direction: column; gap: 10px; }
.tr-near { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: var(--radius-lg);
    background: var(--surface); border: 1px solid var(--border-soft); border-left: 3px solid var(--ga, var(--accent)); }
.tr-near-meta { display: flex; flex-direction: column; gap: 5px; min-width: 0; flex: 1; }
.tr-near-title { font-size: var(--fs-sm); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tr-near-goal { font-family: var(--font-mono); font-size: var(--fs-xs); opacity: 0.7; }
.tr-near .tr-bar { margin-top: 1px; }
.tr-near .tr-play { flex: none; }

/* Jump back in: most-played spotlight + surprise-me */
.tr-spot-card { display: flex; align-items: center; gap: 12px; padding: 14px; border-radius: var(--radius-lg);
    background: linear-gradient(150deg, color-mix(in srgb, var(--ga, var(--accent)) 12%, var(--surface)), var(--surface));
    border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 30%, var(--border-soft)); }
.tr-spot-meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.tr-spot-label { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.09em; text-transform: uppercase; opacity: 0.5; }
.tr-spot-title { font-size: var(--fs-h4); font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tr-spot-sub { font-family: var(--font-mono); font-size: var(--fs-xs); opacity: 0.7; }
.tr-surprise { margin-top: 10px; width: 100%; padding: 10px; border-radius: var(--radius-lg); cursor: pointer;
    background: none; border: 1px dashed var(--border-soft); color: var(--text-main); font-family: var(--font-main);
    font-size: var(--fs-meta); font-weight: 600; opacity: 0.8; transition: 0.15s; }
.tr-surprise:hover { opacity: 1; border-color: var(--accent); border-style: solid; }

/* Activity heatmap: fixed-size cells, 7 rows, column-by-column */
.tr-heat-wrap { overflow-x: auto; padding-bottom: 4px; }
.tr-heat-months { display: grid; grid-auto-flow: column; grid-auto-columns: 13px; gap: 3px; width: max-content; margin-bottom: 5px; }
.tr-heat-mon { font-family: var(--font-mono); font-size: var(--fs-label); line-height: 1; letter-spacing: 0.03em; opacity: 0.45; white-space: nowrap; overflow: visible; }
.tr-heat { display: grid; grid-template-rows: repeat(7, 13px); grid-auto-flow: column; grid-auto-columns: 13px; gap: 3px; width: max-content; }
.tr-heat-cell { border-radius: 2px; background: rgba(255, 255, 255, 0.05); }
/* played days muted; current streak full-bright */
.tr-heat-cell.is-on { background: color-mix(in srgb, var(--accent) 52%, transparent); }
.tr-heat-cell.is-streak { background: var(--accent); box-shadow: 0 0 7px color-mix(in srgb, var(--accent), transparent 42%); }
.tr-heat-cell.is-today { outline: 1.5px solid var(--text-main); outline-offset: 1px; }
.tr-heat-cell.is-future { visibility: hidden; }
.tr-heat-cap { margin: 14px 2px 0; font-family: var(--font-mono); font-size: var(--fs-xs); opacity: 0.55; }

/* spotlight hero-art wash */
.tr-spot-card { position: relative; overflow: hidden; }
.tr-spot-art { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0.16; z-index: 0;
    -webkit-mask-image: linear-gradient(105deg, transparent, #000 85%); mask-image: linear-gradient(105deg, transparent, #000 85%); }
.tr-spot-card.has-art > :not(.tr-spot-art) { position: relative; z-index: 1; }

/* Achievement filter + per-game accordion */
.tr-filter-row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.tr-filter { font-size: var(--fs-xs); cursor: pointer; padding: 6px 14px; border-radius: var(--radius-pill); font-family: var(--font-main);
    border: 1px solid var(--border-soft); background: var(--surface); font-weight: 600; color: var(--text-main); opacity: 0.65; transition: 0.2s; }
.tr-filter:hover { opacity: 1; border-color: var(--accent); }
.tr-filter.is-active { opacity: 1; background: var(--accent); color: #08100b; border-color: var(--accent); }   /* dark on sage, never white */
.tr-filter-n { font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.8; }
.tr-filter.is-active .tr-filter-n { opacity: 0.9; }
.tr-groups { display: flex; flex-direction: column; gap: 18px; }
.tr-group-head { width: 100%; display: flex; align-items: center; gap: 10px; background: none; border: 0; cursor: pointer;
    padding: 6px 2px; color: var(--text-main); text-align: left; border-bottom: 1px solid var(--border-soft); margin-bottom: 12px; }
.tr-group-chev { color: var(--ga, var(--accent)); font-size: var(--fs-xs); transition: transform 0.15s; transform: rotate(90deg); }
.tr-group.is-collapsed .tr-group-chev { transform: rotate(0deg); }
.tr-group.is-collapsed .tr-group-head { margin-bottom: 0; }
.tr-group-name { font-size: var(--fs-sm); font-weight: 700; }
.tr-group-count { margin-left: auto; font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.55; }
.tr-empty-line { opacity: 0.5; font-family: var(--font-mono); font-size: var(--fs-meta); padding: 20px 0; }

/* Pin star (on achievement cards + recent chips) */
.tr-pin { margin-left: auto; flex: none; appearance: none; background: none; border: 0; cursor: pointer; font-size: var(--fs-lead); line-height: 1;
    color: var(--ga, var(--accent)); opacity: 0.4; padding: 4px; border-radius: var(--radius-md); transition: opacity 0.15s, transform 0.15s; }
.tr-pin:hover { opacity: 0.9; transform: scale(1.12); }
.tr-pin.is-pinned { opacity: 1; }
.tr-pin:disabled { opacity: 0.18; cursor: default; transform: none; }
.tr-ach { position: relative; }

/* The shelf (top of the Trophy case tab) */
.tr-shelf { margin-bottom: 30px; }
.tr-shelf-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.tr-shelf-head h3 { margin: 0; font-family: var(--font-display); font-size: var(--fs-marquee-sm); font-weight: 800; letter-spacing: var(--track-display); line-height: 1; }
.tr-shelf-hint { font-size: var(--fs-xs); opacity: 0.55; }
.tr-shelf-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.tr-shelf-card { position: relative; display: flex; align-items: center; gap: 12px; padding: 14px; border-radius: var(--radius-lg);
    background: linear-gradient(150deg, color-mix(in srgb, var(--ga, var(--accent)) 12%, var(--surface)), var(--surface));
    border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 32%, var(--border-soft)); }
.tr-shelf-ic { flex: none; } .tr-shelf-ic .tr-medal { width: 34px; } .tr-shelf-ic .tr-medal svg { width: 34px; height: 41px; }
.tr-shelf-ic .tr-ach-badge svg { width: 38px; height: 38px; }
.tr-shelf-lab { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tr-shelf-tier { font-size: var(--fs-sm); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tr-shelf-sub { font-size: var(--fs-xs); opacity: 0.65; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.tr-unpin { position: absolute; top: 6px; right: 8px; background: none; border: 0; cursor: pointer; color: var(--text-main); opacity: 0.35;
    font-size: var(--fs-lead); line-height: 1; padding: 2px 5px; border-radius: var(--radius-md); transition: opacity 0.15s; }
.tr-unpin:hover { opacity: 0.85; }
.tr-shelf-empty { padding: 22px; border: 1px dashed var(--border-soft); border-radius: var(--radius-lg); text-align: center;
    font-size: var(--fs-meta); opacity: 0.55; }

/* Case card: hero art wash behind the content, and pinnable cups */
    -webkit-mask-image: linear-gradient(180deg, #000, transparent 78%); mask-image: linear-gradient(180deg, #000, transparent 78%); }
.tr-cup { appearance: none; background: none; border: 0; padding: 0; cursor: pointer; border-radius: var(--radius-lg); position: relative;
    transition: transform 0.15s; display: block; }
.tr-cup:hover { transform: translateY(-2px); }
.tr-cup:disabled { cursor: default; } .tr-cup:disabled:hover { transform: none; }
.tr-cup.is-pinned::after { content: '★'; position: absolute; top: -4px; right: -4px; font-size: var(--fs-xs); color: var(--ga, var(--accent));
    text-shadow: 0 1px 3px rgba(0,0,0,0.6); }
@media (prefers-reduced-motion: reduce) { .tr-pin, .tr-cup, .tr-group-chev { transition: none; } }

/* ===== Trophy toasts (shell-side; desktop top-right, phones bottom strip) ===== */
.da-toast-wrap {
    /* must outrank the player overlay (10000) and attract mode (11000), stay under the maintenance curtain (13000) */
    position: fixed; top: 84px; right: 18px; z-index: 12000;
    display: flex; flex-direction: column; gap: 10px;
    max-width: min(340px, 86vw); pointer-events: none;
}
.da-toast {
    pointer-events: auto; cursor: pointer;
    display: flex; align-items: center; gap: 12px;
    padding: 12px 14px; border-radius: var(--radius-xl);
    background: var(--surface); border: 1px solid var(--border-medium);
    border-left: 3px solid var(--accent);
    box-shadow: 0 14px 40px rgba(0, 0, 0, 0.45);
    transform: translateX(120%); opacity: 0;
    transition: transform 0.42s cubic-bezier(0.16, 0.9, 0.3, 1), opacity 0.42s;
}
.da-toast.is-in { transform: translateX(0); opacity: 1; }
.da-toast.is-out { transform: translateX(120%); opacity: 0; }
.da-toast-icon { flex: 0 0 auto; width: 34px; height: 40px; display: flex; align-items: center; justify-content: center; }
.da-toast-icon .tr-medal { width: 34px; }
.da-toast-icon .tr-medal svg { width: 34px; height: 40px; }
.da-toast-star { font-size: 26px; line-height: 1; color: var(--accent); }
.da-toast-body { min-width: 0; }
.da-toast-kicker {
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.14em;
    text-transform: uppercase; color: var(--accent); margin-bottom: 2px;
}
.da-toast-title { font-weight: 800; font-size: var(--fs-sm); color: var(--text-main); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.da-toast-sub { font-size: var(--fs-xs); opacity: 0.62; margin-top: 1px; color: var(--text-main); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 560px) {
    .da-toast-wrap { top: auto; bottom: 14px; left: 10px; right: 10px; max-width: none; }
    .da-toast { transform: translateY(140%); }
    .da-toast.is-in { transform: translateY(0); }
    .da-toast.is-out { transform: translateY(140%); }
}
@media (prefers-reduced-motion: reduce) {
    .da-toast, .da-toast.is-in, .da-toast.is-out { transform: none; transition: opacity 0.3s; }
}
@media (max-width: 560px) {
    .tr-summary { grid-template-columns: repeat(2, 1fr); }
    .tr-scoreboard { gap: 20px; justify-content: center; }
    .tr-ring-wrap { width: 100%; }
}

/* --- NEWS: cover cards (home strip + news.html list), filters, archive column, post page --- */
.news-strip { margin-top: 46px; display: none; }
.news-strip.news-visible { display: block; }
.wd-module:has(#news-strip-grid) { background: none; border: none; box-shadow: none; overflow: visible; }
.wd-module:has(#news-strip-grid) .wd-module-header { background: none; border-bottom: none; padding: 0 2px 16px; }
#news-strip-grid, .news-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); gap: 18px; align-items: stretch; }
/* the homepage strip fills its row: three across, four when the page is wide, never a lone card */
#news-strip-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
#news-strip-grid .news-card:nth-child(n+4) { display: none; }
@media (min-width: 1280px) { #news-strip-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } #news-strip-grid .news-card:nth-child(4) { display: flex; } }
@media (max-width: 900px) { #news-strip-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } #news-strip-grid .news-card:nth-child(3) { display: none; } }
@media (max-width: 620px) { #news-strip-grid { grid-template-columns: 1fr; } #news-strip-grid .news-card:nth-child(3) { display: flex; } }

/* a post card; --ga = the linked game's accent, else sage */
.news-card {
    position: relative; display: flex; flex-direction: column; overflow: hidden; text-decoration: none; color: var(--text-main);
    background: var(--surface); border: 1px solid var(--border-soft); border-radius: var(--radius-xl); box-shadow: var(--shadow-card);
    transition: transform 0.15s ease, border-color 0.15s ease;
}
.news-card:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--ga, var(--accent)) 45%, transparent); }
.news-card:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.nc-cover { position: relative; aspect-ratio: 16 / 9; overflow: hidden; border-bottom: 1px solid var(--border-soft); background: #0a0f0c; }
.nc-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nc-cover--art {
    background: radial-gradient(58% 60% at 50% 42%, color-mix(in srgb, var(--ga, var(--accent)) 22%, transparent), transparent 70%),
                linear-gradient(150deg, color-mix(in srgb, var(--ga, var(--accent)) 13%, #0a0f0c), #06090b);
}
.nc-cover--blank {
    display: flex; align-items: center; justify-content: center;
    background: radial-gradient(58% 60% at 50% 42%, color-mix(in srgb, var(--ga, var(--accent)) 20%, transparent), transparent 70%),
                repeating-linear-gradient(0deg, transparent 0 23px, rgba(255, 255, 255, 0.035) 23px 24px),
                repeating-linear-gradient(90deg, transparent 0 23px, rgba(255, 255, 255, 0.035) 23px 24px),
                linear-gradient(150deg, #17231c, #0a100c);
}
.nc-cover--blank span { font-family: var(--font-mono); font-size: 42px; line-height: 1; color: var(--ga, var(--accent)); opacity: 0.85; }
.nc-body { display: flex; flex-direction: column; gap: 6px; flex: 1; padding: 14px 16px 16px; }
.nc-meta { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.nc-cat {
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.06em; text-transform: uppercase; white-space: nowrap;
    color: color-mix(in srgb, var(--ga, var(--accent)) 82%, #fff); padding: 2px 8px; border-radius: var(--radius-pill);   /* lifted a step for 4.5:1 on the tinted pill */
    border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 45%, transparent); background: color-mix(in srgb, var(--ga, var(--accent)) 10%, transparent);
}
.nc-date { font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.62; white-space: nowrap; }
.nc-title { font-family: var(--font-display); font-size: var(--fs-marquee-sm); font-weight: 800; letter-spacing: var(--track-display); line-height: 1.05; margin: 2px 0 0; }
.nc-sum { font-size: var(--fs-sm); opacity: 0.74; line-height: 1.55; margin: 0; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
/* the cabinet a post is about: a banner still, a label, the name */
.nc-game { margin-top: auto; padding-top: 10px; display: flex; align-items: center; gap: 9px; font-size: var(--fs-xs); line-height: 1.2; }
.nc-art { width: 38px; height: 24px; flex: none; border-radius: var(--radius-sm); border: 1px solid var(--border-soft);
    background: linear-gradient(150deg, color-mix(in srgb, var(--ga, var(--accent)) 30%, #0a0f0c), #06090b) center / cover no-repeat; }
.nc-game > span { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.ncg-k { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.6; }
.nc-game b { color: var(--ga, var(--accent)); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* the lead card: the newest post of the unfiltered list goes wide */
.news-card.is-big { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); }
.news-card.is-big .nc-cover { aspect-ratio: auto; min-height: 260px; border-bottom: 0; border-right: 1px solid var(--border-soft); }
.news-card.is-big .nc-body { padding: 22px 24px; justify-content: center; gap: 8px; }
.news-card.is-big .nc-title { font-size: var(--fs-marquee-md); }
.news-card.is-big .nc-sum { font-size: var(--fs-body); -webkit-line-clamp: 5; }
.news-card.is-big .nc-cover--blank span { font-size: 64px; }
@media (max-width: 760px) {
    .news-card.is-big { display: flex; }
    .news-card.is-big .nc-cover { aspect-ratio: 16 / 9; min-height: 0; border-right: 0; border-bottom: 1px solid var(--border-soft); }
    .news-card.is-big .nc-body { padding: 14px 16px 16px; }
}

/* news.html: list beside the archive column */
.news-shell { display: grid; grid-template-columns: minmax(0, 1fr) 232px; gap: 30px; align-items: start; margin-top: 6px; }
.news-filters { display: flex; flex-wrap: wrap; gap: 9px; margin: 0 0 18px; }
.news-filters .filter-btn { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; }
.fb-n { font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.7; }
.news-showing { font-size: var(--fs-sm); opacity: 0.8; margin: -6px 0 16px; }
.news-showing a { color: var(--accent); }
.news-empty { padding: 34px 20px; text-align: center; border: 1px dashed var(--border-soft); border-radius: var(--radius-xl); }
.news-empty p { margin: 0; opacity: 0.75; }
.news-empty .hero-kicker { margin-bottom: 8px; opacity: 1; }
.news-more { display: flex; align-items: center; gap: 14px; margin-top: 22px; }
.news-count { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.6; }
.news-side { position: sticky; top: 84px; }
/* sidebar modules (list archive + post column): eyebrow over a hairline, flush rows with hairlines between, counts right in mono */
.news-side-h { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent);
    margin: 0 0 4px; padding-bottom: 8px; border-bottom: 1px solid color-mix(in srgb, var(--accent) 35%, var(--border-soft)); }
.news-month { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 9px 0; min-height: var(--tap);
    border-bottom: 1px solid var(--border-soft); text-decoration: none; color: var(--text-main); opacity: 0.82; font-size: var(--fs-sm); }
.news-month:hover { opacity: 1; color: var(--accent); }
.news-month.active { opacity: 1; color: var(--accent); font-weight: 700; }
.news-month .fb-n { opacity: 0.65; }
.news-year summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 10px; padding: 12px 0 6px; min-height: var(--tap);
    font-family: var(--font-display); font-size: var(--fs-marquee-sm); font-weight: 800; letter-spacing: var(--track-display); line-height: 1; }
.news-year summary::-webkit-details-marker { display: none; }
.news-year summary::after { content: '+'; font-family: var(--font-mono); font-size: var(--fs-sm); opacity: 0.55; }
.news-year[open] summary::after { content: '−'; }
.news-year .ny-n { margin-left: auto; font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 400; letter-spacing: 0; opacity: 0.6; }
.news-side-rss { display: inline-block; margin-top: 14px; font-size: var(--fs-xs); font-weight: 700; color: var(--accent); text-decoration: none; }
.news-side-rss:hover { text-decoration: underline; }
@media (max-width: 860px) {
    .news-shell { display: flex; flex-direction: column; gap: 0; }
    .news-side { position: static; order: 2; margin-top: 30px; padding-top: 22px; border-top: 1px solid var(--border-soft); }
}

/* a post's page (news.html?post=); the head snippet flips html.da-post before paint */
#news-post-view { display: none; }
.da-post #news-list-view { display: none; }
.da-post #news-post-view { display: block; padding-top: 34px; }
/* one centered shell: the header and cover span it, then the body column and the side column start on the same line */
.np-shell { max-width: 1120px; margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1fr) 300px; column-gap: 56px; row-gap: 0;
    grid-template-areas: "head head" "cover cover" "main side"; align-items: start; }
.news-post { min-width: 0; }
.news-post.is-laid { display: contents; }
.np-head { grid-area: head; max-width: 820px; }
.np-cover { grid-area: cover; }
.np-main { grid-area: main; min-width: 0; }
.nps { grid-area: side; position: static; }
.np-kicker a { color: inherit; text-decoration: none; }
.np-kicker a:hover { color: var(--text-main); }
.np-title { margin-bottom: 12px; overflow-wrap: anywhere; }
.np-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 0 0 16px; font-family: var(--font-mono); font-size: var(--fs-xs); opacity: 0.85; }
.np-meta .news-byline { margin: 0; }
.np-game { color: var(--ga, var(--accent)); font-weight: 700; text-decoration: none; }
.np-game:hover { text-decoration: underline; }
.np-lead { margin-bottom: 4px; }
.np-cover { margin: 26px 0 34px; border-radius: var(--radius-xl); overflow: hidden; border: 1px solid var(--border-soft); }
.np-cover img { width: 100%; max-height: 480px; object-fit: cover; display: block; }
.np-cover--art { aspect-ratio: 21 / 9; max-height: 480px; border-color: color-mix(in srgb, var(--ga, var(--accent)) 30%, var(--border-soft));
    background: linear-gradient(150deg, color-mix(in srgb, var(--ga, var(--accent)) 13%, #0a0f0c), #06090b); }
.np-cover--art img { height: 100%; }
/* no cover: the body still starts a step below the header */
.np-head + .np-main, .np-head + .nps { margin-top: 30px; }
.np-body { font-size: var(--fs-body); line-height: 1.75; opacity: 0.92; }
.np-body > :first-child { margin-top: 0; }
.np-body p { margin: 0 0 14px; }
.np-body h3 { font-size: var(--fs-h3); font-weight: 700; margin: 24px 0 8px; }
.np-body ul { margin: 0 0 14px; padding-left: 20px; }
.np-body li { margin: 0 0 5px; }
.np-body a { color: var(--accent); }
.np-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; padding-top: 20px; border-top: 1px solid var(--border-soft); }
.np-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 26px; }
.np-nav a { display: block; padding: 12px 14px; border: 1px solid var(--border-soft); border-radius: var(--radius-xl); text-decoration: none; color: var(--text-main); background: var(--surface); }
.np-nav a:hover { border-color: var(--accent); }
.np-nav .npn-k { display: block; margin-bottom: 4px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.6; }
.np-nav .npn-t { font-weight: 700; font-size: var(--fs-sm); }
.np-nav .is-older { text-align: right; }
@media (max-width: 560px) { .np-nav { grid-template-columns: 1fr; } .np-nav .is-older { text-align: left; } }
/* the side column's modules */
.nps-block + .nps-block { margin-top: 30px; }
.nps-cab { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 12px 14px; align-items: center; padding-top: 10px; }
.nps-cab-art { width: 72px; height: 45px; border-radius: var(--radius-md); }
.nps-cab-title { font-family: var(--font-display); font-size: var(--fs-marquee-sm); font-weight: 800; letter-spacing: var(--track-display); line-height: 1; margin: 0 0 4px; color: var(--ga, var(--accent)); }
.nps-cab-blurb { font-size: var(--fs-xs); opacity: 0.72; line-height: 1.45; margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.nps-play, .nps-soon { grid-column: 1 / -1; }
.nps-play { justify-content: center; }
.nps-soon { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.6; }
.nps-row { display: flex; flex-direction: column; gap: 3px; padding: 9px 0; border-bottom: 1px solid var(--border-soft); text-decoration: none; color: var(--text-main); }
.nps-row:hover b { color: var(--accent); }
.nps-row b { font-size: var(--fs-sm); font-weight: 700; line-height: 1.3; }
.nps-row span { font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.6; }
@media (max-width: 900px) {
    .np-shell { display: flex; flex-direction: column; }
    .news-post.is-laid { display: contents; }
    .np-head + .np-main, .np-head + .nps { margin-top: 24px; }
    .nps { margin-top: 36px; padding-top: 26px; border-top: 1px solid var(--border-soft); }
}

/* dialogue box (the popup card's nameplate) */
.news-dialog {
    position: relative; margin: 0; padding: 28px 22px 24px;
    background: linear-gradient(158deg, #16211b 0%, #0d1310 100%);
    border: 2px solid color-mix(in srgb, var(--accent) 62%, transparent);
    border-radius: var(--radius-window); box-shadow: 0 8px 26px rgba(0, 0, 0, 0.4);
}
.news-dialog::before {  /* inner hairline = the classic double-line game window */
    content: ''; position: absolute; inset: 5px; border-radius: calc(var(--radius-window) - 5px); pointer-events: none;
    border: 1px solid color-mix(in srgb, var(--accent) 26%, transparent);
}
.nd-tab {  /* speaker nameplate, straddling the top-left border */
    position: absolute; top: 0; left: 20px; transform: translateY(-52%); z-index: 2;
    display: inline-flex; align-items: center; gap: 7px; max-width: calc(100% - 44px);
    padding: 4px 12px 4px 8px; border-radius: var(--radius-lg); background: var(--accent); color: var(--bg-main);
    font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
}
.nd-tab .nd-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nd-face { font-size: var(--fs-meta); line-height: 1; }
.nd-face-img { width: 18px; height: 18px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
    box-shadow: 0 0 0 1.5px color-mix(in srgb, var(--bg-main) 55%, transparent); }
.nd-title { margin: 4px 0 8px; color: var(--text-main); font-weight: var(--fw-heading); letter-spacing: -0.015em; line-height: 1.28; }
h3.nd-title { font-size: var(--fs-h4); }
h2.nd-title { font-size: var(--fs-h2); }
.news-dialog .news-body { font-size: var(--fs-sm); opacity: 0.78; line-height: 1.6; }
.news-dialog .news-body p { margin: 0 0 8px; }
.news-dialog .news-body p:last-child { margin-bottom: 0; }
.news-body a { color: var(--accent); }

/* operator byline (post page meta) */
.news-byline { display: flex; align-items: center; gap: 9px; margin-top: 10px; }
.byline-avatar { width: 26px; height: 26px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
    border: 1.5px solid color-mix(in srgb, var(--accent), transparent 42%);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent), transparent 88%), 0 2px 6px rgba(0,0,0,0.3); }
.news-byline span { font-size: var(--fs-xs); font-weight: 700; opacity: 0.82; color: var(--text-main); letter-spacing: 0.01em; }

/* --- MAINTENANCE NOTICE --- */
.maintenance-note { padding: 40px; text-align: center; }
.maintenance-note h3 { font-size: var(--fs-h3); margin: 0 0 8px; color: var(--accent); }
.maintenance-note p { opacity: 0.7; margin: 0; }

/* --- CONTACT FORM (public page; module body) --- */
.contact-body { padding: 20px 22px; }
.cform-field { margin-bottom: 14px; }
.cform-field label {
    display: block; font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.05em; opacity: 0.6; margin-bottom: 6px;
}
.cform-field input, .cform-field textarea {
    width: 100%; padding: 10px 12px; border: 1px solid var(--border-soft); border-radius: var(--radius-md);
    background: rgba(var(--base-shade), 0.04); color: var(--text-main);
    font-size: var(--fs-sm); font-family: var(--font-main); outline: none; transition: 0.2s; resize: vertical;
}
.cform-field input:focus, .cform-field textarea:focus { border-color: var(--accent); }
/* honeypot far off-screen; display:none would let smarter bots skip it */
.hp-field { position: absolute; left: -9999px; top: -9999px; height: 0; overflow: hidden; }
.contact-note { font-size: var(--fs-sm); opacity: 0.75; line-height: 1.6; margin: 0 0 4px; }
.contact-error { font-size: var(--fs-sm); color: #e07a6a; margin: 0 0 12px; }
.contact-done-title { font-size: var(--fs-h4); font-weight: 700; color: var(--accent); margin: 0 0 8px; }

/* --- MAINTENANCE SPLASH (full-site curtain; admins never see it) --- */
#maintenance-splash {
    position: fixed; inset: 0; z-index: 13000; background: var(--bg-main);
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    text-align: center; padding: 30px;
    /* same CRT scanline language as the attract screen */
    background-image: linear-gradient(rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.18) 50%);
    background-size: 100% 4px;
}
/* wordmark logo */
#maintenance-splash .splash-logo {
    height: clamp(30px, 5.5vw, 42px); width: auto; margin: 0 0 6px;
    filter: drop-shadow(0 0 22px color-mix(in srgb, var(--accent), transparent 62%));
}
/* Jellybean and the groundhog under the logo */
#maintenance-splash .splash-scene { position: relative; display: inline-block; margin: 8px 0 20px; }
#maintenance-splash .splash-jb { width: min(230px, 52vw); height: auto; display: block; }
#maintenance-splash .splash-hog {
    position: absolute; width: 48%; height: auto; right: -16%; bottom: 9%; pointer-events: none;
}
#maintenance-splash .splash-line { font-size: var(--fs-h4); font-weight: 700; margin: 0 0 8px; }
#maintenance-splash .splash-msg { font-size: var(--fs-sm); opacity: 0.7; max-width: 460px; margin: 0; line-height: 1.6; }
#maintenance-splash .splash-brand {
    position: absolute; bottom: 26px; left: 0; right: 0;
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.25em; text-transform: uppercase; opacity: 0.4;
}

/* --- FOOTER --- */
.site-footer {
    border-top: 1px solid var(--border-soft); margin-top: 28px;
    padding: 26px max(5vw, var(--sar)) 26px max(5vw, var(--sal)); text-align: center;
}
/* muted via color (not opacity) so the link can override */
.site-footer p { font-size: var(--fs-xs); font-weight: 500; color: rgba(231, 236, 232, 0.5); margin: 0; }
.site-footer .footer-mono { font-family: var(--font-mono); letter-spacing: 0.08em; text-transform: uppercase; font-size: var(--fs-label); margin-top: 4px; }
.site-footer a { color: #8fd0ab; text-decoration: underline; text-underline-offset: 2px; font-weight: 600; }
.site-footer a:hover { color: #fff; }

/* --- MODAL CHROME (ID card) --- */
.popup-overlay {
    position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center;
    padding: 20px; background: rgba(6, 9, 8, 0.72); backdrop-filter: blur(4px);
    animation: popup-fade 0.2s ease;
}
@keyframes popup-fade { from { opacity: 0; } to { opacity: 1; } }
.popup-modal {
    position: relative; width: min(520px, 100%); max-height: 90vh; overflow-y: auto;
    background: var(--surface); border: 1px solid var(--border-soft); border-radius: 16px;
    box-shadow: 0 30px 80px -20px rgba(0,0,0,0.8); padding: 0 0 24px;
    animation: popup-pop 0.24s cubic-bezier(0.2,0.9,0.3,1.15);
}
@keyframes popup-pop { from { transform: translateY(10px) scale(0.98); opacity: 0; } to { transform: none; opacity: 1; } }
.popup-close {
    position: absolute; top: 12px; right: 12px; z-index: 2; width: 30px; height: 30px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center; cursor: pointer; line-height: 1;
    background: rgba(0,0,0,0.45); border: 1px solid var(--border-soft); color: var(--text-main); font-size: var(--fs-sm);
    transition: 0.15s;
}
.popup-close:hover { background: var(--accent); color: var(--bg-main); }

/* --- SITE POPUP (corner card, arcade.js showPopupCard) --- */
.pop-card {
    position: fixed; right: 22px; bottom: 22px; z-index: 190; width: min(380px, calc(100vw - 32px));
    max-height: calc(100dvh - 120px); display: flex; flex-direction: column;
    background: linear-gradient(158deg, #16211b 0%, #0d1310 100%);
    border: 2px solid color-mix(in srgb, var(--accent) 62%, transparent); border-radius: var(--radius-window);
    box-shadow: 0 24px 60px -18px rgba(0,0,0,0.85), 0 0 40px -18px color-mix(in srgb, var(--accent), transparent 40%);
    opacity: 0; transform: translateY(24px);
    transition: opacity 0.32s ease, transform 0.42s cubic-bezier(0.2, 0.9, 0.3, 1.12);
}
.pop-card.is-in { opacity: 1; transform: none; }
.pop-card::before {  /* double-line game window */
    content: ''; position: absolute; inset: 5px; border-radius: calc(var(--radius-window) - 5px); pointer-events: none; z-index: 1;
    border: 1px solid color-mix(in srgb, var(--accent) 26%, transparent);
}
.pop-tab { z-index: 3; }
.pop-close {
    position: absolute; top: 12px; right: 12px; z-index: 3; width: 32px; height: 32px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center; cursor: pointer; line-height: 1;
    background: rgba(6,10,8,0.62); border: 1px solid var(--border-soft); color: var(--text-main); font-size: var(--fs-meta);
    transition: 0.15s;
}
.pop-close:hover { background: var(--accent); color: var(--bg-main); border-color: var(--accent); }
.pop-media { position: relative; flex: none; height: 150px; overflow: hidden; border-radius: 12px 12px 0 0; background: #040705;
    border-bottom: 1px solid color-mix(in srgb, var(--accent) 30%, transparent); }
.pop-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 100%; display: block; }
.pop-media::after { content: ''; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(180deg, rgba(4,8,6,0.45) 0%, transparent 34%, transparent 66%, rgba(4,8,6,0.55) 100%); }
.pop-video { height: auto; aspect-ratio: 16 / 9; }
.pop-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.pop-video::after { display: none; }
.pop-inner { position: relative; z-index: 2; padding: 24px 22px 20px; overflow-y: auto; min-height: 0; }
.pop-card.has-media .pop-inner { padding-top: 16px; }
.pop-title { font-size: var(--fs-h4); font-weight: 800; letter-spacing: -0.015em; line-height: 1.25; margin: 0 34px 8px 0; }
.pop-card.has-media .pop-title { margin-right: 0; }
.pop-body { font-size: var(--fs-sm); line-height: 1.6; opacity: 0.8; }
.pop-body p { margin: 0 0 8px; }
.pop-body p:last-child { margin-bottom: 0; }
.pop-body ul { margin: 0 0 8px; padding-left: 18px; }
.pop-body a { color: var(--accent); }
.pop-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.pop-actions .btn { min-height: 44px; }
.pop-cta { flex: 1 1 auto; justify-content: center; }
@media (max-width: 560px) {
    .pop-card { left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); width: auto; max-height: 72dvh; }
    .pop-media { height: 120px; }
}
@media (prefers-reduced-motion: reduce) {
    .pop-card { transition: opacity 0.2s ease; transform: none; }
}

/* --- DOCS / GUIDES --- */
/* inline images inside markdown-lite bodies */
.md-img { max-width: 100%; height: auto; display: block; margin: 14px 0; border-radius: var(--radius-lg); border: 1px solid var(--border-soft); }

/* per-game "Read the guide" link on a game card */
/* card footer: divider, snug under Play */
.game-guide-link { display: block; margin: 0; padding: 13px 18px 15px; border-top: 1px solid var(--border-soft); font-size: var(--fs-xs); font-weight: 700; color: var(--accent); text-decoration: none; }
.game-guide-link:hover { text-decoration: underline; color: var(--accent); }
.game-actions:has(+ .game-guide-link) { padding-bottom: 12px; }

/* docs index */
.doc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.doc-card { display: flex; flex-direction: column; overflow: hidden; text-decoration: none; color: var(--text-main); transition: transform 0.15s ease, border-color 0.15s ease; }
.doc-card:hover { transform: translateY(-3px); border-color: var(--accent); }
.doc-card-cover { aspect-ratio: 16 / 9; overflow: hidden; border-bottom: 1px solid var(--border-soft); }
.doc-card-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.doc-card-cover--blank { display: flex; align-items: center; justify-content: center;
    background: radial-gradient(58% 60% at 50% 42%, color-mix(in srgb, var(--ga, var(--accent)) 22%, transparent), transparent 70%), linear-gradient(150deg, #17231c, #0a100c); }
.doc-card-cover--blank span { font-family: var(--font-mono); font-size: 42px; color: var(--ga, var(--accent)); }
/* guide cover: banner art over tinted glass (arcade.docBannerArt) */
.doc-card-cover--art { position: relative;
    background: radial-gradient(58% 60% at 50% 42%, color-mix(in srgb, var(--ga, var(--accent)) 22%, transparent), transparent 70%),
                linear-gradient(150deg, color-mix(in srgb, var(--ga, var(--accent)) 13%, #0a0f0c), #06090b); }
.doc-card-body { padding: 12px 15px 16px; flex: 1; }
.doc-card-top { margin-bottom: 6px; }
.doc-card-game { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.06em; text-transform: uppercase; color: var(--accent); }
.doc-card-game--page { color: var(--text-muted, #93a49a); }
.doc-card-title { font-size: var(--fs-h4); font-weight: var(--fw-heading); margin: 0 0 5px; letter-spacing: -0.01em; }
.doc-card-summary { font-size: var(--fs-xs); opacity: 0.7; margin: 0; line-height: 1.5; }

/* docs reader */
.doc-title { margin-bottom: 10px; }
.doc-cover { margin: 6px 0 20px; border-radius: var(--radius-xl); overflow: hidden; border: 1px solid var(--border-soft); }
.doc-cover img { width: 100%; display: block; }
/* reader cover fallback: same tinted ground, left animating */
.doc-cover--art { border-color: color-mix(in srgb, var(--ga, var(--accent)) 30%, var(--border-soft));
    background: linear-gradient(150deg, color-mix(in srgb, var(--ga, var(--accent)) 13%, #0a0f0c), #06090b); }
.doc-body { font-size: var(--fs-body); line-height: 1.75; }
.doc-body h3 { font-size: var(--fs-h3); font-weight: 700; margin: 24px 0 8px; }
.doc-body p { margin: 0 0 14px; }
.doc-body ul { margin: 0 0 14px; padding-left: 20px; }
.doc-body li { margin: 0 0 5px; }
.doc-body a { color: var(--accent); }
.doc-foot { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 26px; }

/* --- DOCS as a KNOWLEDGE BASE (docs.html two-column shell) --- */
.docs-shell { display: grid; grid-template-columns: 244px minmax(0, 1fr); gap: 30px; max-width: 1440px; margin: 0 auto; padding: 46px max(5vw, var(--sar)) 60px max(5vw, var(--sal)); align-items: start; }
/* single-guide reader keeps a readable measure */
.doc-article { max-width: 820px; }
.docs-solo { grid-template-columns: minmax(0, 1fr); max-width: 860px; }
.docs-solo .docs-sidebar { display: none; }
.docs-sidebar { position: sticky; top: 84px; align-self: start; }
.docs-search-wrap { margin-bottom: 14px; }
#docs-search { width: 100%; padding: 9px 12px; border-radius: var(--radius-lg); border: 1px solid var(--border-soft); background: var(--surface); color: var(--text-main); font-family: inherit; font-size: var(--fs-sm); }
#docs-search:focus { outline: none; border-color: var(--accent); }
#docs-nav { font-size: var(--fs-sm); max-height: calc(100vh - 150px); overflow-y: auto; }
.docs-nav-group { margin-bottom: 16px; }
.docs-nav-cat { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); opacity: 0.85; margin: 0 0 6px; }
.docs-nav-link { display: block; padding: 5px 10px; border-radius: var(--radius-md); color: var(--text-main); text-decoration: none; opacity: 0.8; border-left: 2px solid transparent; }
.docs-nav-link:hover { opacity: 1; background: rgba(var(--base-shade), 0.05); }
.docs-nav-link.active { opacity: 1; color: var(--accent); border-left-color: var(--accent); background: rgba(var(--base-shade), 0.05); font-weight: 700; }
.docs-nav-empty { font-size: var(--fs-sm); opacity: 0.6; }

.docs-cat-section { margin-top: 26px; }
.docs-cat-h { font-size: var(--fs-sm); font-weight: 700; margin: 0 0 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border-soft); }

/* in-article table of contents + backlinks + wiki links */
.doc-body h3 { scroll-margin-top: 84px; }
.doc-toc { border: 1px solid var(--border-soft); border-radius: var(--radius-xl); padding: 12px 16px; margin: 6px 0 22px; background: var(--surface); }
.doc-toc-h, .doc-back-h { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); margin: 0 0 8px; }
.doc-toc ul { margin: 0; padding-left: 16px; }
.doc-toc li { margin: 3px 0; font-size: var(--fs-sm); }
.doc-toc a { color: var(--text-main); opacity: 0.82; text-decoration: none; }
.doc-toc a:hover { color: var(--accent); opacity: 1; }
.doc-body a.wikilink { color: var(--accent); font-weight: 600; }
.doc-backlinks { margin-top: 26px; border-top: 1px solid var(--border-soft); padding-top: 16px; }
.doc-backlinks ul { margin: 0; padding-left: 18px; }
.doc-backlinks li { margin: 4px 0; font-size: var(--fs-sm); }
.doc-backlinks a { color: var(--accent); }

@media (max-width: 800px) {
    /* title and guides first, the search + index after */
    .docs-shell { display: flex; flex-direction: column; gap: 0; padding-top: 26px; }
    .docs-main { order: 1; }
    .docs-sidebar { order: 2; position: static; margin-top: 30px; padding-top: 22px; border-top: 1px solid var(--border-soft); }
    #docs-nav { max-height: none; }
}

/* ---- Konami + confetti (injected by arcade.js) ---- */

/* confetti canvas: fixed, non-interactive, above the toasts */
.da-confetti { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 12000; }
/* Konami reward canvas */
.da-jelly-dash { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 12000; }

/* ===== Seasonal chrome (site only, never games/cards); driven by body[data-season]; under the sticky header (z 50) ===== */
.da-season-particles { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 5; }
.da-season-decor { position: fixed; inset: 0; pointer-events: none; z-index: 11; }   /* above the rotator (z10), below the header (z50) */
.da-season-decor .season-wash { position: absolute; inset: 0; background: var(--season-wash, transparent); }
.da-season-decor .season-web { position: absolute; top: 54px; width: 132px; height: 132px; color: var(--season-accent, #888); opacity: 0; }
.da-season-decor .season-web.tl { left: 0; }
.da-season-decor .season-web.tr { right: 0; transform: scaleX(-1); }
/* per-season tokens */
body[data-season="halloween"]    { --season-accent: #e8863b; --season-wash: radial-gradient(120% 62% at 50% 0%, rgba(232,134,59,0.10), transparent 60%), linear-gradient(0deg, rgba(139,111,196,0.06), transparent 42%); }
body[data-season="thanksgiving"] { --season-accent: #c9752f; --season-wash: radial-gradient(120% 62% at 50% 0%, rgba(201,117,47,0.11), transparent 62%); }
body[data-season="winter"]       { --season-accent: #8fb9d6; --season-wash: radial-gradient(120% 70% at 50% 0%, rgba(143,185,214,0.12), transparent 60%); }
body[data-season="valentines"]   { --season-accent: #e05a86; --season-wash: radial-gradient(120% 62% at 50% 0%, rgba(224,90,134,0.12), transparent 60%); }
body[data-season="july4"]        { --season-accent: #4f7cd4; --season-wash: radial-gradient(90% 55% at 28% 0%, rgba(224,85,110,0.10), transparent 55%), radial-gradient(90% 55% at 72% 0%, rgba(79,124,212,0.12), transparent 55%); }
body[data-season="halloween"] .da-season-decor .season-web { opacity: 0.4; }   /* cobwebs are a Halloween thing */
/* corner props at the viewport base; string lights across the top; hidden unless the season is on */
/* BACK layer sits behind the page content */
.da-season-back { position: fixed; inset: 0; pointer-events: none; z-index: -1; }
.season-prop { position: absolute; height: auto; display: none; }
/* Single focal pieces, placed asymmetrically (not mirrored corner icons). */
.season-prop.pk    { bottom: -6px; left: 24px; width: 150px; }         /* jack-o-lantern, base-left (behind) */
.season-prop.ghost { bottom: 150px; right: 48px; width: 74px; animation: da-ghost-bob 4.8s ease-in-out infinite; }  /* floats in front */
.season-prop.tk    { bottom: -4px; right: 24px; width: 160px; }        /* turkey, base-right (behind) */
.season-prop.gifts { bottom: 0; left: 18px; width: 118px; }
.season-prop.tree  { bottom: 0; right: 18px; width: 96px; }
.season-prop.hballoon { bottom: 138px; right: 46px; width: 60px; animation: da-ghost-bob 5.2s ease-in-out infinite; }  /* Valentine's, floats in front */
.season-prop.bouquet  { bottom: -8px; left: 20px; width: 120px; }        /* Valentine's roses, base-left (behind) */
.season-prop.firecracker { bottom: -6px; right: 22px; width: 92px; }     /* July 4th, base-right (behind) */
/* July 4th fireworks in the hero sky (front) */
.season-firework { position: absolute; width: 132px; height: auto; display: none; transform-origin: center; }
.season-firework.fw-l { left: 26px; top: 124px; animation: da-fw-pulse 2.6s ease-in-out infinite; }
.season-firework.fw-r { right: 42px; top: 156px; width: 108px; animation: da-fw-pulse 2.6s ease-in-out infinite 1.3s; }
.season-prop .pk-flicker { animation: da-pk-flicker 3.4s ease-in-out infinite; }   /* candle glow */
/* winter light garland: repeat-x 400px tile (--xmas-lights) */
:root { --xmas-lights: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20400%2040%27%20width%3D%27400%27%20height%3D%2740%27%3E%3Cpath%20d%3D%27M0%206%20Q40%2015%2080%206%20Q120%2015%20160%206%20Q200%2015%20240%206%20Q280%2015%20320%206%20Q360%2015%20400%206%27%20stroke%3D%27%233a4a3f%27%20stroke-width%3D%272%27%20fill%3D%27none%27%2F%3E%3Cg%20transform%3D%27translate%2840%2015%29%27%3E%3Ccircle%20cx%3D%270%27%20cy%3D%279%27%20r%3D%2711%27%20fill%3D%27%23e8524a%27%20opacity%3D%270.28%27%2F%3E%3Crect%20x%3D%27-1.6%27%20y%3D%27-2%27%20width%3D%273.2%27%20height%3D%273%27%20rx%3D%271%27%20fill%3D%27%233a4a3f%27%2F%3E%3Cpath%20d%3D%27M0%201%20C%20-5%205%20-5%2013%200%2017%20C%205%2013%205%205%200%201%20Z%27%20fill%3D%27%23e8524a%27%2F%3E%3Cellipse%20cx%3D%27-1.6%27%20cy%3D%277%27%20rx%3D%271.5%27%20ry%3D%273%27%20fill%3D%27%23fff%27%20opacity%3D%270.55%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%28120%2015%29%27%3E%3Ccircle%20cx%3D%270%27%20cy%3D%279%27%20r%3D%2711%27%20fill%3D%27%23f0c94e%27%20opacity%3D%270.28%27%2F%3E%3Crect%20x%3D%27-1.6%27%20y%3D%27-2%27%20width%3D%273.2%27%20height%3D%273%27%20rx%3D%271%27%20fill%3D%27%233a4a3f%27%2F%3E%3Cpath%20d%3D%27M0%201%20C%20-5%205%20-5%2013%200%2017%20C%205%2013%205%205%200%201%20Z%27%20fill%3D%27%23f0c94e%27%2F%3E%3Cellipse%20cx%3D%27-1.6%27%20cy%3D%277%27%20rx%3D%271.5%27%20ry%3D%273%27%20fill%3D%27%23fff%27%20opacity%3D%270.55%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%28200%2015%29%27%3E%3Ccircle%20cx%3D%270%27%20cy%3D%279%27%20r%3D%2711%27%20fill%3D%27%2357b06a%27%20opacity%3D%270.28%27%2F%3E%3Crect%20x%3D%27-1.6%27%20y%3D%27-2%27%20width%3D%273.2%27%20height%3D%273%27%20rx%3D%271%27%20fill%3D%27%233a4a3f%27%2F%3E%3Cpath%20d%3D%27M0%201%20C%20-5%205%20-5%2013%200%2017%20C%205%2013%205%205%200%201%20Z%27%20fill%3D%27%2357b06a%27%2F%3E%3Cellipse%20cx%3D%27-1.6%27%20cy%3D%277%27%20rx%3D%271.5%27%20ry%3D%273%27%20fill%3D%27%23fff%27%20opacity%3D%270.55%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%28280%2015%29%27%3E%3Ccircle%20cx%3D%270%27%20cy%3D%279%27%20r%3D%2711%27%20fill%3D%27%236fa9d6%27%20opacity%3D%270.28%27%2F%3E%3Crect%20x%3D%27-1.6%27%20y%3D%27-2%27%20width%3D%273.2%27%20height%3D%273%27%20rx%3D%271%27%20fill%3D%27%233a4a3f%27%2F%3E%3Cpath%20d%3D%27M0%201%20C%20-5%205%20-5%2013%200%2017%20C%205%2013%205%205%200%201%20Z%27%20fill%3D%27%236fa9d6%27%2F%3E%3Cellipse%20cx%3D%27-1.6%27%20cy%3D%277%27%20rx%3D%271.5%27%20ry%3D%273%27%20fill%3D%27%23fff%27%20opacity%3D%270.55%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%28360%2015%29%27%3E%3Ccircle%20cx%3D%270%27%20cy%3D%279%27%20r%3D%2711%27%20fill%3D%27%23f0956a%27%20opacity%3D%270.28%27%2F%3E%3Crect%20x%3D%27-1.6%27%20y%3D%27-2%27%20width%3D%273.2%27%20height%3D%273%27%20rx%3D%271%27%20fill%3D%27%233a4a3f%27%2F%3E%3Cpath%20d%3D%27M0%201%20C%20-5%205%20-5%2013%200%2017%20C%205%2013%205%205%200%201%20Z%27%20fill%3D%27%23f0956a%27%2F%3E%3Cellipse%20cx%3D%27-1.6%27%20cy%3D%277%27%20rx%3D%271.5%27%20ry%3D%273%27%20fill%3D%27%23fff%27%20opacity%3D%270.55%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); }
/* hangs off the rotator's bottom edge (homepage) */
.da-rot-lights { position: absolute; left: 0; right: 0; top: calc(100% - 20px); height: 40px; pointer-events: none; z-index: 3;
    background: var(--xmas-lights) repeat-x left top; background-size: 400px 40px; }
/* under the header/ticker on every page; zero-height wrapper */
.da-header-lights { position: relative; z-index: 9; height: 0; pointer-events: none; }
.da-header-lights::before { content: ''; position: absolute; top: -2px; left: 0; right: 0; height: 40px;
    background-repeat: repeat-x; background-position: left top; }
/* garland tile is per-season */
body[data-season="winter"]     .da-header-lights::before,
body[data-season="winter"]     .da-rot-lights { background-image: var(--xmas-lights); background-size: 400px 40px; }
body[data-season="valentines"] .da-header-lights::before { background-image: var(--valentine-hearts); background-size: 200px 34px; }
:root { --valentine-hearts: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20200%2034%27%20width%3D%27200%27%20height%3D%2734%27%3E%3Cpath%20d%3D%27M0%205%20Q50%2015%20100%205%20Q150%2015%20200%205%27%20stroke%3D%27%23b57089%27%20stroke-width%3D%271.4%27%20fill%3D%27none%27%20opacity%3D%270.7%27%2F%3E%3Cg%20transform%3D%27translate%2825%2020%29%27%3E%3Cpath%20d%3D%27M0%202.1%20C%20-6.6%20-2.1%20-3.0%20-6.0%200%20-2.1%20C%203.0%20-6.0%206.6%20-2.1%200%202.1%20Z%27%20fill%3D%27%23e05a86%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%2850%2023%29%27%3E%3Cpath%20d%3D%27M0%202.1%20C%20-6.6%20-2.1%20-3.0%20-6.0%200%20-2.1%20C%203.0%20-6.0%206.6%20-2.1%200%202.1%20Z%27%20fill%3D%27%23f28bb0%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%2875%2020%29%27%3E%3Cpath%20d%3D%27M0%202.1%20C%20-6.6%20-2.1%20-3.0%20-6.0%200%20-2.1%20C%203.0%20-6.0%206.6%20-2.1%200%202.1%20Z%27%20fill%3D%27%23e0556e%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%28100%2013%29%27%3E%3Cpath%20d%3D%27M0%202.1%20C%20-6.6%20-2.1%20-3.0%20-6.0%200%20-2.1%20C%203.0%20-6.0%206.6%20-2.1%200%202.1%20Z%27%20fill%3D%27%23c94a72%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%28125%2020%29%27%3E%3Cpath%20d%3D%27M0%202.1%20C%20-6.6%20-2.1%20-3.0%20-6.0%200%20-2.1%20C%203.0%20-6.0%206.6%20-2.1%200%202.1%20Z%27%20fill%3D%27%23e05a86%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%28150%2023%29%27%3E%3Cpath%20d%3D%27M0%202.1%20C%20-6.6%20-2.1%20-3.0%20-6.0%200%20-2.1%20C%203.0%20-6.0%206.6%20-2.1%200%202.1%20Z%27%20fill%3D%27%23f28bb0%27%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%27translate%28175%2020%29%27%3E%3Cpath%20d%3D%27M0%202.1%20C%20-6.6%20-2.1%20-3.0%20-6.0%200%20-2.1%20C%203.0%20-6.0%206.6%20-2.1%200%202.1%20Z%27%20fill%3D%27%23e0556e%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); }
body[data-season="halloween"]    .for-halloween,
body[data-season="thanksgiving"] .for-thanksgiving,
body[data-season="winter"]       .for-winter,
body[data-season="valentines"]   .for-valentines,
body[data-season="july4"]        .for-july4 { display: block; }
@keyframes da-ghost-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-16px); } }
@keyframes da-pk-flicker { 0%, 100% { opacity: 0.14; } 45% { opacity: 0.32; } 60% { opacity: 0.2; } }
@keyframes da-fw-pulse { 0%, 100% { opacity: 0.3; transform: scale(0.9); } 50% { opacity: 0.92; transform: scale(1.05); } }
@media (max-width: 620px) {
    .season-prop.pk { width: 104px; }
    .season-prop.tk { width: 110px; }
    .season-prop.gifts { width: 84px; }
    .season-prop.tree { width: 68px; }
    .season-prop.ghost { width: 56px; bottom: 120px; right: 24px; }
    .season-prop.hballoon { width: 46px; bottom: 118px; right: 22px; }
    .season-prop.bouquet { width: 88px; }
    .season-prop.firecracker { width: 66px; }
    .season-firework.fw-l { width: 96px; left: 14px; }
    .season-firework.fw-r { width: 78px; right: 20px; }
    /* denser bulbs on narrow screens, full 40px height */
    .da-rot-lights, .da-header-lights::before { background-size: 300px 34px; }
}
/* chrome tint: safe accents only */
body[data-season] .hero-kicker { color: var(--season-accent); }
body[data-season] .nav-link.active { color: var(--season-accent); }
body[data-season] .nav-link.active::after { background: var(--season-accent); }
@media (prefers-reduced-motion: reduce) {
    .da-season-particles { display: none; }
    .season-prop.ghost, .season-prop.hballoon, .season-prop .pk-flicker, .season-firework { animation: none; }
}

/* Konami "cheat activated" banner. */
.da-cheat-banner {
    position: fixed; left: 50%; top: 24%; transform: translate(-50%, -8px);
    z-index: 12001; pointer-events: none; opacity: 0; transition: opacity 0.4s ease, transform 0.4s ease;
    padding: 12px 22px; border-radius: var(--radius-xl); white-space: nowrap;
    background: linear-gradient(158deg, #16211b, #0d1310);
    border: 2px solid var(--accent); color: var(--text-main);
    font-family: var(--font-mono); font-size: var(--fs-h4); font-weight: 700; letter-spacing: 0.06em;
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent), transparent 40%), 0 12px 40px rgba(0,0,0,0.5),
                0 0 26px color-mix(in srgb, var(--accent), transparent 55%);
}
.da-cheat-banner.show { opacity: 1; transform: translate(-50%, 0); }
@media (max-width: 560px) { .da-cheat-banner { font-size: var(--fs-xs); padding: 10px 14px; white-space: normal; max-width: 88vw; text-align: center; } }

/* ---- Arcade ID card modal (canvas, reuses popup chrome) ---- */
.arcade-id-modal { width: min(680px, 100%); padding: 24px; }
.arcade-id-h { font-size: var(--fs-h3); font-weight: 700; letter-spacing: -0.01em; margin: 0 0 14px; }
.arcade-id-canvas { display: block; width: 100%; height: auto; border-radius: var(--radius-xl); margin: 0 0 16px;
    box-shadow: 0 8px 26px rgba(0, 0, 0, 0.4); }
.arcade-id-field { display: flex; align-items: center; gap: 12px; margin: 0 0 16px; }
.arcade-id-field span { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: 0.08em;
    text-transform: uppercase; opacity: 0.6; flex-shrink: 0; }
.arcade-id-field input { flex: 1; min-width: 0; padding: 9px 12px; border-radius: var(--radius-lg);
    border: 1px solid var(--border-soft); background: var(--surface); color: var(--text-main);
    font-family: var(--font-main); font-size: var(--fs-sm); outline: none; transition: 0.15s; }
.arcade-id-field input:focus { border-color: var(--accent); }
.arcade-id-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.arcade-id-note { font-size: var(--fs-meta); opacity: 0.55; line-height: 1.5; margin: 14px 2px 0; }

/* ===== App shell: status strip, tab bar, sheets, takeover player, phone layout ===== */

/* status bar strip for the installed app (zero height in a browser tab) */
html::before {
    content: ''; position: fixed; top: 0; left: 0; right: 0; height: var(--sat); z-index: 9500; pointer-events: none;
    background: #0f1512;
}

/* page transitions between site pages; the bars hold still */
@view-transition { navigation: auto; }
.top-bar { view-transition-name: da-top; }
.da-tabbar { view-transition-name: da-tabs; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: 0.16s; }
@media (prefers-reduced-motion: reduce) {
    @view-transition { navigation: none; }
}

/* --- Tab bar (phones) --- */
.da-tabbar { display: none; }
.da-tab {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
    min-height: var(--tap); padding: 6px 0 4px; background: none; border: 0; cursor: pointer;
    color: var(--text-main); opacity: 0.58; text-decoration: none; transition: opacity 0.15s, color 0.15s;
    font-family: var(--font-main); font-size: var(--fs-xs); font-weight: 600; line-height: 1;
}
.da-tab svg { width: 24px; height: 24px; flex: none; transition: transform 0.12s ease; }
.da-tab:active svg { transform: scale(0.88); }
.da-tab.is-active { opacity: 1; color: var(--accent); }
.da-tab:focus-visible { outline: 2px solid var(--accent); outline-offset: -4px; border-radius: var(--radius-lg); }
@media (max-width: 760px) {
    .da-tabbar {
        display: grid; grid-template-columns: repeat(4, 1fr); position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
        height: calc(var(--tabbar-h) + var(--sab)); padding: 0 var(--sar) var(--sab) var(--sal);
        background: rgba(12, 17, 14, 0.94); border-top: 1px solid var(--border-soft);
        backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
    }
    body { padding-bottom: calc(var(--tabbar-h) + var(--sab)); }
    .mobile-menu-btn { display: none !important; }
    .pop-card { bottom: calc(12px + var(--tabbar-h) + var(--sab)); }
    .da-toast-wrap { bottom: calc(14px + var(--tabbar-h) + var(--sab)); }
    .da-season-back { bottom: calc(var(--tabbar-h) + var(--sab)); }
}
html.da-playing .da-tabbar { display: none; }

/* --- Bottom sheet (More menu, player options) --- */
.da-sheet-wrap {
    position: fixed; inset: 0; z-index: 10050; display: flex; align-items: flex-end; justify-content: center;
    background: rgba(4, 7, 5, 0.6); opacity: 0; transition: opacity 0.2s ease;
}
.da-sheet-wrap.is-in { opacity: 1; }
.da-sheet {
    width: min(520px, 100%); max-height: 86dvh; overflow-y: auto; position: relative;
    background: linear-gradient(170deg, #16211b 0%, #0f1512 100%);
    border: 1px solid color-mix(in srgb, var(--accent) 40%, var(--border-soft)); border-bottom: 0;
    border-radius: var(--radius-window) var(--radius-window) 0 0; box-shadow: 0 -18px 50px rgba(0, 0, 0, 0.55);
    padding: 8px max(12px, var(--sar)) calc(14px + var(--sab)) max(12px, var(--sal));
    transform: translateY(24px); transition: transform 0.26s cubic-bezier(0.2, 0.9, 0.3, 1.05);
}
.da-sheet-wrap.is-in .da-sheet { transform: none; }
.da-sheet-grab { width: 38px; height: 5px; border-radius: var(--radius-pill); background: var(--border-medium); margin: 2px auto 10px; }
.da-sheet-h {
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase;
    color: var(--accent); margin: 4px 8px 8px;
}
.da-sheet-row {
    display: flex; align-items: center; gap: 14px; width: 100%; min-height: 52px; padding: 0 10px;
    border: 0; border-radius: var(--radius-xl); background: none; color: var(--text-main); text-decoration: none; cursor: pointer;
    font-family: var(--font-main); font-size: var(--fs-body); font-weight: 600; text-align: left;
}
.da-sheet-row:hover, .da-sheet-row:focus-visible { background: rgba(255, 255, 255, 0.05); outline: none; }
.da-sheet-row:active { background: rgba(255, 255, 255, 0.09); }
.da-sheet-row.is-active { color: var(--accent); }
.da-sheet-ic {
    width: 36px; height: 36px; flex: none; display: grid; place-items: center; border-radius: var(--radius-lg);
    background: color-mix(in srgb, var(--accent) 14%, transparent); color: var(--accent);
}
.da-sheet-ic svg { width: 19px; height: 19px; }
.da-sheet-lab { flex: 1; min-width: 0; }
.da-sheet-sub { display: block; font-size: var(--fs-xs); font-weight: 500; opacity: 0.6; margin-top: 2px; }
.da-sheet-chev { opacity: 0.35; font-size: var(--fs-lead); }
.da-sheet-sep { height: 1px; background: var(--border-soft); margin: 8px 10px; }
.da-sheet-cancel { justify-content: center; color: var(--text-main); opacity: 0.75; }
.da-sheet-foot { margin: 10px 10px 2px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-caps);
    text-transform: uppercase; opacity: 0.4; text-align: center; }
@media (prefers-reduced-motion: reduce) {
    .da-sheet-wrap, .da-sheet { transition: none; }
}

/* --- Takeover player: one slim bar (portrait) or rail (landscape) on phones --- */
.tk-bar { display: none; }
.tk-bar {
    flex: none; align-items: center; justify-content: space-between; gap: 8px;
    height: calc(var(--tk-bar-h) + var(--sat)); padding: var(--sat) max(6px, var(--sar)) 0 max(6px, var(--sal));
    background: #070a08; border-bottom: 1px solid var(--border-soft);
}
.tk-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 2px; min-width: var(--tap); height: 40px; padding: 0 10px;
    background: none; border: 0; border-radius: var(--radius-lg); color: var(--text-main); cursor: pointer;
    font-family: var(--font-main); font-size: var(--fs-sm); font-weight: 600;
}
.tk-btn svg { width: 22px; height: 22px; flex: none; }
.tk-btn:active { background: rgba(255, 255, 255, 0.08); }
.tk-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.tk-back { padding-left: 4px; }
.tk-back svg { color: var(--accent); }
@media (max-width: 760px), (orientation: landscape) and (max-height: 500px) {
    #player-overlay { padding: 0; background: #000; -webkit-backdrop-filter: none; backdrop-filter: none; }
    #player-overlay::before, #player-overlay.has-backdrop::after { display: none; }
    .player-shell { width: 100%; height: 100%; max-height: none; border: 0; border-radius: 0; box-shadow: none; }
    .player-bar { display: none; }
    #player-shell .tk-bar { display: flex; }
    .player-stage { padding: 0 var(--sar) var(--sab) var(--sal); }

    html.da-takeover-page .top-bar, html.da-takeover-page .top-shelf, html.da-takeover-page .marquee,
    html.da-takeover-page .site-footer, html.da-takeover-page .da-season-decor, html.da-takeover-page .da-header-lights { display: none !important; }
    html.da-takeover-page body { padding: 0; overflow: hidden; }
    html.da-playing { overscroll-behavior: none; }
    html.da-takeover-page .play-wrap { padding: 0; max-width: none; }
    html.da-playing #play-stage {
        position: fixed; inset: 0; z-index: 70; height: auto; min-height: 0;
        border: 0; border-radius: 0; box-shadow: none; display: flex; flex-direction: column; background: #000;
    }
    html.da-playing .play-module-header { display: none; }
    html.da-playing #play-stage .tk-bar { display: flex; }
    html.da-playing #play-frame {
        flex: 1 1 auto; height: auto; min-height: 0; width: auto;
        margin: 0 var(--sar) var(--sab) var(--sal);
    }
}
@media (orientation: landscape) and (max-height: 500px) {
    .player-shell, html.da-playing #play-stage { flex-direction: row; }
    .tk-bar {
        flex-direction: column; justify-content: space-between; width: calc(var(--tk-bar-h) + 6px + var(--sal)); height: auto;
        padding: max(6px, var(--sat)) 0 max(6px, var(--sab)) var(--sal); border-bottom: 0; border-right: 1px solid var(--border-soft);
    }
    .tk-back .tk-l { display: none; }
    .tk-back { padding-left: 0; }
    .player-stage { padding-left: 0; }
    html.da-playing #play-frame { margin-left: 0; }
}

/* toasts during play: a compact pill at the top, never over a game's start button */
html.da-playing .da-toast-wrap {
    top: calc(var(--sat) + 10px); bottom: auto; left: 50%; right: auto;
    width: max-content; max-width: min(340px, calc(100vw - 24px)); transform: translateX(-50%);
}
html.da-playing .da-toast { padding: 9px 12px; transform: translateY(-160%); }
html.da-playing .da-toast.is-in { transform: translateY(0); }
html.da-playing .da-toast.is-out { transform: translateY(-160%); }
html.da-playing .da-toast-sub { display: none; }
@media (max-width: 760px) {
    html.da-playing .da-toast-wrap { top: calc(var(--sat) + var(--tk-bar-h) + 8px); bottom: auto; }
}
@media (prefers-reduced-motion: reduce) {
    html.da-playing .da-toast, html.da-playing .da-toast.is-in, html.da-playing .da-toast.is-out { transform: none; }
}

/* --- Catalog: four across on wide screens; the homepage shows full rows --- */
@media (min-width: 1280px) {
    #showcase-strip, #game-grid:not(.is-list) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    #showcase-strip .game-card:nth-child(n+9) { display: none; }
}
@media (min-width: 621px) and (max-width: 900px) {
    #showcase-strip .game-card:nth-child(n+9) { display: none; }
}

/* --- Phone layout: heroes, promise strip, catalog controls, inputs --- */
@media (max-width: 560px) {
    .hero:not(#hero-rotator) { padding: 26px 0 20px; }
    .hero-sub, #about-sub { font-size: var(--fs-body); }
    .mascot-hero-art { max-width: 132px; }
    .of-claim { padding: 9px 0 9px 18px; }
    .of-claim span { font-size: var(--fs-meta); }
    .tr-tabs { flex-wrap: nowrap; gap: 0; }
    .tr-tab { flex: 1 1 0; min-width: 0; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 8px 4px; text-align: center; }
}
@media (max-width: 620px) {
    .grid-controls { gap: 8px; margin-bottom: 12px; }
    .grid-search { order: -1; flex: 1 1 100%; margin-left: 0; min-width: 0; }
    #filter-row {
        flex-wrap: nowrap; width: 100%; overflow-x: auto; padding: 4px 0; scrollbar-width: none;
        -webkit-mask-image: linear-gradient(90deg, #000 88%, transparent); mask-image: linear-gradient(90deg, #000 88%, transparent);
    }
    #filter-row::-webkit-scrollbar { display: none; }
    .filter-btn { flex: none; }
    .grid-controls-2 { margin-top: 0; flex-wrap: nowrap; }
    .sort-label { display: none; }
    #layout-toggle { display: none; }
    .sort-field { flex: 1 1 auto; min-width: 0; }
    .sort-select { width: 100%; }
}
@media (max-width: 400px) {
    .seg-btn { padding: 6px 10px; }
}
@media (max-width: 760px) {
    .grid-search input, #docs-search, .cform-field input, .cform-field textarea, .arcade-id-field input, .sort-select { font-size: 16px; }
}

/* --- Touch targets --- */
@media (max-width: 760px), (pointer: coarse) {
    .btn { height: var(--tap); }
    .mobile-menu-btn { width: var(--tap); height: var(--tap); }
    .wd-module-action { min-height: var(--tap); display: inline-flex; align-items: center; }
    .see-all-link { display: inline-block; padding-top: 15px; padding-bottom: 15px; line-height: 14px; }
    .grid-search input { height: var(--tap); }
    .sort-select { min-height: 40px; }
    .filter-btn, .tr-filter { min-height: 40px; }
    .seg-btn { min-height: 36px; }
    .tr-tab { min-height: var(--tap); }
    .tr-play { min-height: 40px; padding: 8px 14px; }
    .tr-pin { min-width: 40px; min-height: 40px; display: inline-grid; place-items: center; }
    .tr-actions-util .btn { height: var(--tap); }
    .tr-chime-btn { width: var(--tap); height: var(--tap); }
    .tr-surprise { min-height: var(--tap); }
    .popup-close, .pop-close { width: 40px; height: 40px; }
    .poll-opt { min-height: var(--tap); }
    .rot-dots { padding: 10px 0; }
    .rdot { position: relative; }
    .rdot::after { content: ''; position: absolute; inset: -10px -3px; }
}

/* --- Phones held sideways: a shorter bar and a hero that fits the screen --- */
@media (orientation: landscape) and (max-height: 500px) {
    .top-bar { height: 52px; }
    .nav-logo-img { height: 22px; }
    #hero-rotator { padding: 0; }
    .rot-stage { height: calc(100vh - 86px); height: calc(100dvh - 86px); min-height: 250px; }
    .hero:not(#hero-rotator) { padding: 22px 0 16px; }
}

/* keyboard focus: one visible ring for every control that does not draw its own */
:where(a, button, select, summary, [role="button"], [tabindex]:not([tabindex="-1"])):focus-visible {
    outline: 2px solid var(--accent); outline-offset: 2px;
}

/* ===== Trophies: the den, Today strip, prize counter; homepage daily card; player daily chip ===== */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.tix-ic { width: 1.05em; height: 1.05em; vertical-align: -0.17em; flex: none; }
/* the other signature icons (daily cabinet, punch card) sit inline before their label */
.sig-ic { width: 1.15em; height: 1.15em; vertical-align: -0.22em; flex: none; margin-right: 0.35em; }
.td-kt { display: inline-flex; align-items: center; }
.wb-punch .sig-ic { width: 17px; height: 17px; margin-right: 0; opacity: 0.85; }
.ds-punch .sig-ic { width: 15px; height: 15px; vertical-align: -3px; margin-right: 3px; }

/* the ticket count pill (den hero) */
.tr-tix {
    display: inline-flex; align-items: center; gap: 7px; margin-top: 14px; min-height: 36px; padding: 0 14px;
    border-radius: var(--radius-pill); border: 1px solid color-mix(in srgb, #f2c14e 45%, var(--border-soft));
    background: color-mix(in srgb, #f2c14e 10%, transparent); color: var(--text-main); cursor: pointer;
    font-family: var(--font-main); font-size: var(--fs-sm); font-weight: 600;
}
.tr-tix .tix-ic { color: #f2c14e; }
.tr-tix b { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.tr-tix:hover { border-color: #f2c14e; }

/* the den is the hero (trophies.html): the room runs edge to edge, the title sits over its left wall (trophy-room.js starts the props past it) */
.den-hero { position: relative; margin: 0 calc(50% - 50vw); }
.den-hero .room-wrap { --room-h: 380px; margin: 0; border: 0; border-bottom: 1px solid var(--border-soft); border-radius: 0; box-shadow: none; }
/* no scrollbar under the hero: the arrows, a drag and the keyboard move the room */
.den-hero .room-scroll { scrollbar-width: none; }
.den-hero .room-scroll::-webkit-scrollbar { display: none; }
.den-hero-text { position: absolute; left: 0; top: 0; bottom: 34px; z-index: 3; width: min(44vw, 560px); padding: 0 24px 0 max(5vw, var(--sal));
    display: flex; flex-direction: column; justify-content: center; pointer-events: none; }
.den-hero-text::before { content: ''; position: absolute; inset: -40px -140px 0 0; z-index: -1; pointer-events: none;
    background: linear-gradient(90deg, rgba(10, 15, 12, 0.92) 0%, rgba(10, 15, 12, 0.84) 58%, rgba(10, 15, 12, 0) 100%); }
.den-hero-text > * { pointer-events: auto; }
.den-hero-text .hero-title { margin-bottom: 10px; }
.den-hero-text .hero-sub { font-size: var(--fs-body); max-width: 40ch; }
.den-hero .tr-tix { align-self: flex-start; }
.den-tag { position: absolute; right: max(5vw, var(--sar)); bottom: 46px; z-index: 3; pointer-events: none;
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; opacity: 0.55; }
/* the look-around arrows pair up at the room's right, above the strip's overlap */
.den-hero .room-nav { top: auto; bottom: 74px; }
.den-hero .room-nav.l { left: auto; right: calc(max(5vw, var(--sar)) + 48px); }
.den-hero .room-nav.r { right: max(5vw, var(--sar)); }
@media (max-width: 760px) {
    .den-hero .room-wrap { --room-h: 240px; }
    .den-hero-text { position: static; width: auto; padding: 26px max(5vw, var(--sar)) 16px max(5vw, var(--sal)); }
    .den-hero-text::before { display: none; }
    .den-hero-text .hero-sub { max-width: none; }
    .den-tag { display: none; }
    .den-hero .room-nav { top: calc(50% - 22px); bottom: auto; }
    .den-hero .room-nav.l { left: 8px; right: auto; }
    .den-hero .room-nav.r { right: 8px; }
}
.room-wrap { --room-h: 300px; position: relative; margin: 0 0 26px; border-radius: var(--radius-window); overflow: hidden;
    border: 1px solid var(--border-soft); box-shadow: var(--shadow-card); background: #0b100d; }
.room-scroll { height: var(--room-h); overflow-x: auto; overflow-y: hidden; scrollbar-width: thin; outline: none; overscroll-behavior-x: contain; }
.room-scroll:focus-visible { box-shadow: inset 0 0 0 2px var(--accent); }
.room-track { position: relative; height: 100%; }
.room-cv { position: sticky; left: 0; display: block; cursor: pointer; touch-action: pan-x pan-y; }
.room-cv.is-drag { cursor: grabbing; }
.room-nav {
    position: absolute; top: calc(50% - 22px); width: 40px; height: 44px; z-index: 2; display: grid; place-items: center;
    border: 1px solid rgba(255, 255, 255, 0.2); border-radius: var(--radius-xl); background: rgba(6, 10, 8, 0.6);
    color: #fff; font-size: 22px; line-height: 1; cursor: pointer; backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px);
}
.room-nav.l { left: 8px; } .room-nav.r { right: 8px; }
.room-nav:hover { border-color: var(--accent); color: var(--accent); }
.room-nav[hidden] { display: none; }
.room-pop { position: absolute; top: 10px; z-index: 3; }
.room-pop[hidden] { display: none; }
.rp-card {
    position: relative; padding: 14px 14px 12px; border-radius: var(--radius-xl);
    background: linear-gradient(158deg, #16211b, #0d1310); border: 2px solid color-mix(in srgb, var(--ga, var(--accent)) 60%, transparent);
    box-shadow: var(--shadow-pop);
}
.rp-x { position: absolute; top: 6px; right: 6px; width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--border-soft);
    background: rgba(0, 0, 0, 0.35); color: var(--text-main); cursor: pointer; font-size: var(--fs-meta); }
.rp-head { display: flex; align-items: center; gap: 10px; padding-right: 34px; }
.rp-art { width: 40px; height: 40px; flex: none; border-radius: var(--radius-lg); background: color-mix(in srgb, var(--ga) 18%, #0a100c) 50% 100% / cover no-repeat;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ga), transparent 50%); }
.rp-txt { display: flex; flex-direction: column; min-width: 0; }
.rp-txt b { font-size: var(--fs-body); }
.rp-txt span { font-size: var(--fs-xs); opacity: 0.7; font-family: var(--font-mono); }
.rp-cups { display: flex; gap: 6px; margin: 10px 0 8px; }
.rp-cups .tr-medal { width: 28px; } .rp-cups .tr-medal svg { width: 28px; height: 34px; }
.rp-daily { margin: 0 0 10px; font-size: var(--fs-xs); color: var(--ga); font-weight: 700; }
.rp-play { width: 100%; }

/* Today strip */
/* the scoreboard under the den: the earned lead cell, the five counts, then today's cabinet, the punch card and the tickets */
.tr-board { position: relative; z-index: 2; display: grid; grid-template-columns: 1.5fr repeat(5, minmax(0, 1fr)); grid-template-rows: auto auto; margin: -34px 0 30px;
    border: 1px solid rgba(255, 255, 255, 0.16); border-radius: var(--radius-lg); overflow: hidden; background: linear-gradient(180deg, #0d1310, #0a0f0c);
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.6), inset 0 24px 50px rgba(0, 0, 0, 0.45), 0 14px 30px rgba(0, 0, 0, 0.5); }
.tr-board > * { min-width: 0; border-right: 1px solid rgba(255, 255, 255, 0.08); border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.tb-lead { grid-row: 1 / 3; display: flex; flex-direction: column; justify-content: center; gap: 10px; padding: 22px 24px;
    background: linear-gradient(180deg, color-mix(in srgb, var(--ring, var(--accent)) 12%, transparent), transparent 65%); }
.tb-k { font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; opacity: 0.6; }
.tb-n { font-family: var(--font-display); font-size: clamp(64px, 7.5vw, 110px); font-weight: 800; line-height: 0.85; letter-spacing: 0; color: var(--ring, var(--accent)); font-variant-numeric: tabular-nums; }
.tb-n i { font-style: normal; font-size: var(--fs-lead); font-weight: 700; opacity: 0.55; margin-left: 8px; color: var(--text-main); }
.tb-track { height: 6px; border-radius: 3px; background: rgba(255, 255, 255, 0.08); overflow: hidden; }
.tb-track > i { display: block; height: 100%; background: var(--ring, var(--accent)); box-shadow: 0 0 12px color-mix(in srgb, var(--ring, var(--accent)), transparent 40%); transition: width 0.7s ease; }
.tb-line { font-size: var(--fs-xs); line-height: 1.5; opacity: 0.8; }
.tb-line b { color: var(--ring, var(--accent)); }
.tr-board .tr-stat { padding: 18px 18px 14px; gap: 8px; justify-content: flex-end; }
.tr-board .tr-stat b { font-size: clamp(36px, 3.4vw, 48px); }
.tr-board .tr-stat:nth-child(6) { border-right: 0; }
/* today's row: kicker across the top, the content left, the action right */
.tr-board .td-card { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px 14px; padding: 14px 18px 16px; border-bottom: 0; }
.tr-board .td-card > .td-kicker { grid-column: 1 / -1; }
.tr-board .td-daily .td-foot .td-meta { white-space: nowrap; }
.tr-board .td-punch { grid-template-columns: auto minmax(0, 1fr); }
.tr-board .td-punch .td-foot { align-items: flex-start; text-align: left; }
.tr-board .td-daily, .tr-board .td-punch { grid-column: span 2; }
.tr-board .td-tix { grid-column: span 1; border-right: 0; }
.td-card.is-done { opacity: 0.85; }
.td-kicker { margin: 0; display: flex; align-items: center; justify-content: space-between; gap: 8px;
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--ga, var(--accent)); }
.td-reward { display: inline-flex; align-items: center; gap: 4px; letter-spacing: 0; font-size: var(--fs-xs); font-weight: 700; color: #f2c14e; }
.td-row { display: flex; align-items: center; gap: 12px; }
.td-art { width: 48px; height: 48px; flex: none; border-radius: var(--radius-lg); background: color-mix(in srgb, var(--ga) 18%, #0a100c) 50% 100% / cover no-repeat;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ga), transparent 50%); }
.td-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.td-txt b { font-size: var(--fs-body); line-height: 1.2; }
.td-txt span { font-family: var(--font-mono); font-size: var(--fs-xs); opacity: 0.8; }
.td-foot { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; margin: 0; text-align: right; }
.td-btn { min-width: 110px; }
.td-meta { font-size: var(--fs-xs); opacity: 0.65; }
.td-done { font-size: var(--fs-sm); font-weight: 700; color: var(--ga, var(--accent)); }
.td-bal { margin: 0; display: flex; align-items: center; gap: 8px; color: #f2c14e; }
/* the tickets cell: the balance over the button; the explainer sentence stays off the board, the saving-up goal stays */
.tr-board .td-tix { grid-template-columns: minmax(0, 1fr); align-content: start; }
.td-tix .td-bal { grid-row: 2; }
.td-tix .td-btn { grid-row: 3; width: 100%; min-width: 0; }
.tr-board .td-tix > .td-meta { display: none; }
.td-tix .td-goal { grid-row: 4; margin: 0; }
.td-bal .tix-ic { width: 26px; height: 26px; }
.td-bal b { font-family: var(--font-display); font-size: clamp(32px, 3.4vw, 42px); font-weight: 800; line-height: 1; color: var(--text-main); font-variant-numeric: tabular-nums; }
.td-tix { --ga: #f2c14e; }
.pc-holes { display: grid; grid-template-columns: repeat(5, 32px); gap: 6px; }
.pc-hole { aspect-ratio: 1; border-radius: 50%; border: 2px dashed var(--border-medium); display: grid; place-items: center; overflow: hidden; }
.pc-hole.is-punched { border: 2px solid var(--ga, var(--accent)); box-shadow: 0 0 12px -2px color-mix(in srgb, var(--ga, var(--accent)), transparent 40%); }
.pc-art { width: 100%; height: 100%; background: color-mix(in srgb, var(--ga) 30%, #0a100c) 50% 100% / cover no-repeat; }
.td-punch.is-flash { animation: td-flash 1.1s ease; }
@keyframes td-flash { 30% { box-shadow: 0 0 0 3px var(--accent); } }
@media (max-width: 1100px) {   /* under this the today cells are too narrow beside the five counts */
    .tr-board { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: auto; }
    .tb-lead { grid-row: auto; grid-column: 1 / -1; border-right: 0; }
    .tr-board .tr-stat:nth-child(4) { border-right: 0; }
    .tr-board .tr-stat:nth-child(6) { border-right: 1px solid rgba(255, 255, 255, 0.08); }
    .tr-board .td-daily, .tr-board .td-punch, .tr-board .td-tix { grid-column: 1 / -1; border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
    .tr-board .td-tix { border-bottom: 0; }
}
@media (max-width: 760px) { .tr-board { margin-top: 18px; } }
@media (max-width: 560px) {
    .tr-board { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .tr-board .td-card, .tr-board .td-punch, .tr-board .td-tix { grid-template-columns: minmax(0, 1fr); gap: 10px; }
    .tr-board .td-card .td-foot { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: flex-start; text-align: left; gap: 8px 14px; }
    .tr-board .td-daily .td-foot .td-meta { white-space: normal; }
    .tr-board .td-punch .pc-holes { grid-template-columns: repeat(5, minmax(0, 36px)); }
    .td-tix .td-bal { grid-row: auto; } .td-tix .td-btn { grid-row: auto; width: auto; } .td-tix .td-goal { grid-row: auto; }
    .tr-board .tr-stat:nth-child(odd) { border-right: 0; }
    .tr-board .tr-stat:nth-child(even) { border-right: 1px solid rgba(255, 255, 255, 0.08); }
    .tr-board .tr-stat:nth-child(4) { border-right: 0; }
    .tr-board .tr-stat:nth-child(6) { grid-column: 1 / -1; border-right: 0; }
}

/* empty state actions */
.tr-empty-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }

/* prize counter */
.pz-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 0 0 18px; }
.pz-bal { margin: 0; display: inline-flex; align-items: center; gap: 8px; font-size: var(--fs-lead); color: #f2c14e; }
.pz-bal b { font-family: var(--font-mono); color: var(--text-main); }
.pz-note { margin: 0; font-size: var(--fs-xs); opacity: 0.6; }
.pz-sec { margin: 0 0 28px; }
.pz-sub { margin: -4px 0 12px; font-size: var(--fs-xs); opacity: 0.6; }
.pz-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; }
.pz-card { display: flex; flex-direction: column; border-radius: var(--radius-xl); overflow: hidden; background: var(--surface); border: 1px solid var(--border-soft); }
.pz-card.is-on { border-color: color-mix(in srgb, var(--accent) 70%, transparent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 50%, transparent); }
.pz-prev { display: block; width: 100%; aspect-ratio: 2 / 1; background: #0b100d; border-bottom: 1px solid var(--border-soft); }
.pz-txt { display: flex; flex-direction: column; gap: 3px; padding: 10px 12px 6px; flex: 1; }
.pz-txt b { font-size: var(--fs-sm); }
.pz-txt span { font-size: var(--fs-xs); opacity: 0.65; line-height: 1.4; }
.pz-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 12px 12px; min-height: 52px; }
.pz-price { display: inline-flex; align-items: center; gap: 4px; font-family: var(--font-mono); font-size: var(--fs-meta); font-weight: 700; color: #f2c14e; }
.pz-owned, .pz-state { font-size: var(--fs-xs); opacity: 0.65; font-weight: 600; }
.pz-state { color: var(--accent); opacity: 1; }
.pz-need { font-size: var(--fs-xs); opacity: 0.62; }
.pz-foot:has(.pz-save) { flex-wrap: wrap; row-gap: 2px; }
.pz-foot:has(.pz-save) .pz-need { order: 3; flex: 0 0 100%; }
.pz-btn.pz-save { white-space: nowrap; }
.pz-btn { height: 36px; padding: 0 14px; margin-left: auto; }
.pz-foot.is-confirm { flex-wrap: wrap; row-gap: 8px; }
.pz-confirm { flex: 1 1 100%; display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-sm); font-weight: 700; color: #f2c14e; }
.pz-foot.is-confirm .pz-btn { flex: 1 1 0; margin-left: 0; }

/* homepage: today's cabinet */
.daily-strip { margin: 0 0 30px; }
.daily-strip[hidden] { display: none; }
.ds-card {
    display: flex; align-items: center; gap: 16px; padding: 14px 18px; border-radius: var(--radius-window);
    background: linear-gradient(110deg, color-mix(in srgb, var(--ga, var(--accent)) 16%, var(--surface)), var(--surface) 70%);
    border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 40%, var(--border-soft));
}
.ds-art { width: 64px; height: 64px; flex: none; border-radius: var(--radius-xl); background: color-mix(in srgb, var(--ga) 18%, #0a100c) 50% 100% / cover no-repeat;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ga), transparent 50%); }
.ds-txt { min-width: 0; flex: 1; }
.ds-kicker { margin: 0; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--ga, var(--accent)); }
.ds-title { margin: 2px 0; font-size: var(--fs-h4); font-weight: 800; }
.ds-line { margin: 0; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: var(--fs-xs); }
.ds-target { font-family: var(--font-mono); opacity: 0.85; }
.ds-reward { display: inline-flex; align-items: center; gap: 4px; font-weight: 700; color: #f2c14e; }
.ds-done { opacity: 0.8; }
.ds-side { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; flex: none; }
.ds-play { min-width: 110px; }
.ds-punch { font-size: var(--fs-xs); font-weight: 600; color: var(--text-main); opacity: 0.7; text-decoration: none; white-space: nowrap; }
.ds-punch:hover { opacity: 1; color: var(--accent); }
@media (max-width: 560px) {
    .ds-card { flex-wrap: wrap; gap: 12px; padding: 14px; }
    .ds-art { width: 52px; height: 52px; }
    .ds-side { flex-direction: row; align-items: center; justify-content: space-between; width: 100%; }
    .ds-play { flex: 1; }
}

/* player: the daily chip */
.daily-chip {
    display: inline-flex; align-items: center; flex: none; max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    padding: 4px 10px; border-radius: var(--radius-pill); border: 1px solid color-mix(in srgb, #f2c14e 50%, transparent);
    background: color-mix(in srgb, #f2c14e 12%, transparent); color: #f2c14e;
    font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.02em;
}
.daily-chip.is-done { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 50%, transparent); background: color-mix(in srgb, var(--accent) 12%, transparent); }
.player-bar .daily-chip, .play-module-header .daily-chip { margin-right: 4px; }
.tk-bar .daily-chip { display: block; max-width: calc(100% - 150px); line-height: 1.2; }
@media (orientation: landscape) and (max-height: 500px) { .tk-bar .daily-chip { display: none; } }

/* toasts: ticket badge and the note kind */
.da-toast-tix { display: inline-flex; align-items: center; gap: 3px; margin-left: 6px; flex: none; color: #f2c14e;
    font-family: var(--font-mono); font-size: var(--fs-xs); font-weight: 700; }
.da-toast-note .da-toast-icon { color: #f2c14e; }
.da-toast-note .da-toast-icon .tix-ic { width: 26px; height: 26px; }

@media (max-width: 560px) {
    .room-wrap, .den-hero .room-wrap { --room-h: 230px; margin-bottom: 0; }
    .room-nav { width: 36px; height: 40px; }
}
@media (orientation: landscape) and (max-height: 500px) {
    .room-wrap, .den-hero .room-wrap { --room-h: 220px; }
}
.tr-tix:empty { display: none; }
@media (max-width: 560px) {
    .tr-tab { white-space: nowrap; font-size: var(--fs-meta); padding: 8px 4px; }
}

/* site controls: no double-tap zoom swallowing a second tap (pinch zoom still works) */
:where(a, button, input, select, textarea, label, summary, [role="button"]) { touch-action: manipulation; }

/* phone tab bar: a floating dock; the active tab is a filled sage pill */
@media (max-width: 760px) {
    .da-tabbar {
        left: 12px; right: 12px; bottom: var(--dock-gap); height: var(--tabbar-h); padding: 6px; gap: 4px;
        border-radius: 22px; border: 1px solid color-mix(in srgb, var(--accent) 38%, transparent);
        background: rgba(13, 19, 15, 0.9);
        box-shadow: 0 14px 34px rgba(0, 0, 0, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.06);
    }
    .da-tab { border-radius: 16px; min-height: 0; height: 100%; padding: 0; gap: 4px; opacity: 0.62; }
    .da-tab.is-active {
        opacity: 1; background: var(--accent); color: #0f1512; font-weight: 800;
        box-shadow: 0 0 18px -4px color-mix(in srgb, var(--accent), transparent 30%);
    }
    body { padding-bottom: calc(var(--tabbar-h) + var(--dock-gap) + 14px); }
    .pop-card { bottom: calc(var(--tabbar-h) + var(--dock-gap) + 12px); }
    .da-toast-wrap { bottom: calc(var(--tabbar-h) + var(--dock-gap) + 12px); }
    .da-season-back { bottom: calc(var(--tabbar-h) + var(--dock-gap)); }
    /* the menu lives at the bottom, so the logo takes the center of a slimmer top bar */
    .top-bar { height: 60px; }
    .top-bar-inner { justify-content: center; }
}

/* homepage: on phones the See all link becomes a full-width button after the cards */
.see-all-cta { display: none; }
@media (max-width: 620px) {
    .showcase-header .see-all-link { display: none; }
    .see-all-cta {
        display: block; margin: 14px 0 0; padding: 13px 16px; text-align: center; border-radius: var(--radius-xl);
        border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--border-soft)); background: color-mix(in srgb, var(--accent) 8%, transparent);
        color: var(--accent); font-size: var(--fs-sm); font-weight: 700; text-decoration: none;
    }
}


/* ===== Game cards: art (the info button opens the quick view), tagline, difficulty, stats, Your best, actions ===== */
.game-tagline { margin: 0; font-size: var(--fs-sm); line-height: 1.5; opacity: 0.88;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.game-diff { margin: 6px 0 0; font-size: var(--fs-xs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: 0.55; }
/* stats row: one line; whatever does not fit wraps onto a hidden second line, the version first */
.game-stats { display: flex; flex-wrap: wrap; align-content: flex-start; align-items: center; column-gap: 14px; row-gap: 0; height: 20px; margin-top: 8px;
    overflow: hidden; font-size: var(--fs-meta); line-height: 20px; white-space: nowrap; }
.gs-item { display: inline-flex; align-items: center; gap: 5px; font-variant-numeric: tabular-nums; }
.gs-item svg { width: 15px; height: 15px; flex: none; color: var(--ga, var(--accent)); }
.gs-item b { font-weight: 700; }
.gs-item i { font-style: normal; opacity: 0.6; }
.gs-ver { margin-left: auto; font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.5; }
.game-grid:not(.is-list) .game-blurb, .game-grid:not(.is-list) .game-meta { display: none; }
.game-grid:not(.is-list) .game-body { flex: none; padding: 10px 14px 12px; }
.game-grid:not(.is-list) .game-tagline { min-height: 3em; }
.game-thumb[data-qv] { cursor: pointer; }
.thumb-info {
    position: absolute; right: 10px; bottom: 10px; z-index: 3; width: 34px; height: 34px; padding: 0; border-radius: 50%;
    display: grid; place-items: center; cursor: pointer; color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.28); background: rgba(6, 10, 8, 0.62);
    -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); transition: border-color 0.15s, color 0.15s, transform 0.15s;
}
.thumb-info svg { width: 20px; height: 20px; }
.game-card:hover .thumb-info, .thumb-info:focus-visible { border-color: var(--ga, var(--accent)); color: var(--ga, var(--accent)); transform: scale(1.06); }
@media (pointer: coarse) { .thumb-info { width: 40px; height: 40px; } }

/* footer: Your best (a two-row ledger: label + headline, trophy + detail) over the buttons; pinned so every row lines up */
.game-foot { margin-top: auto; display: flex; flex-direction: column; gap: 10px; padding: 0 0 14px; }
.best-strip {
    --tier: var(--ga, var(--accent));
    position: relative; display: flex; flex-direction: column; justify-content: center; gap: 4px; margin: 0 16px; height: 58px; padding: 0 14px;
    border-radius: var(--radius-lg); background: #070b09; border: 1px solid rgba(255, 255, 255, 0.07); box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.55);
}
.best-strip.tier-bronze, .qv-best.tier-bronze { --tier: #cd7f32; }
.best-strip.tier-silver, .qv-best.tier-silver { --tier: #cbd5da; }
.best-strip.tier-gold, .qv-best.tier-gold { --tier: #f5c542; }
.best-strip.tier-platinum, .qv-best.tier-platinum { --tier: #7fe3d0; }
.bs-row { display: flex; align-items: center; gap: 8px; min-width: 0; }
.bs-label { flex: none; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-caps); text-transform: uppercase; opacity: 0.5; }
.bs-tier { flex: none; display: inline-flex; align-items: center; gap: 5px; font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 700; letter-spacing: var(--track-caps); text-transform: uppercase; color: var(--tier); }
.bs-val { display: flex; align-items: center; gap: 6px; min-width: 0; margin-left: auto; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    font-family: var(--font-mono); font-size: var(--fs-sm); font-weight: 700; color: var(--tier); }
.bs-val svg { width: 15px; height: 15px; flex: none; }
.bs-tier svg { width: 13px; height: 13px; flex: none; }
/* the padding gives the glow room inside the ellipsis clip (a tight clip shows as a box) */
.bs-num { min-width: 0; overflow: hidden; text-overflow: ellipsis; padding: 4px 6px; margin: -4px -6px;
    font-family: var(--font-display); font-size: var(--fs-lead); font-weight: 800; letter-spacing: var(--track-display); line-height: 1;
    text-shadow: 0 0 8px color-mix(in srgb, var(--tier), transparent 55%); }
.bs-detail { flex: 1 1 auto; min-width: 0; text-align: right; font-size: var(--fs-xs); line-height: 1.35; opacity: 0.68; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.best-strip.is-empty .bs-val { color: var(--text-main); opacity: 0.55; font-family: var(--font-main); font-weight: 600; }
.best-strip.is-empty .bs-detail { opacity: 0.62; }
.game-grid .game-foot > .game-actions { display: flex; align-items: center; gap: 8px; padding: 0 16px; }
.game-foot .btn { height: 44px; }
.game-foot .btn-play { flex: 1 1 auto; min-width: 0; }
.game-foot .btn-guide { flex: none; width: auto; padding: 0 14px; }
/* WebKit sizes a flex row from content, not flex-basis: icon buttons carry an explicit width */
.game-foot .btn-dl { flex: none; width: 44px; padding: 0; }
.game-foot .btn-dl .dl-l { display: none; }
.game-foot .btn-shop { flex: 1 1 auto; opacity: 0.45; cursor: default; }

@media (max-width: 620px) {
    #showcase-strip .game-card:nth-child(n+7) { display: none; }
    .game-grid:not(.is-list) .game-card:hover { transform: none; }
}

/* ===== Cartridge card (grid view): a shell with notched shoulders, the art as the label sticker, a grip ridge below ===== */
.game-grid:not(.is-list) .game-card {
    padding: 0 14px; background: transparent; border: 0; border-radius: 4px 4px 6px 6px; box-shadow: none; overflow: visible;
    clip-path: polygon(0 18px, 18px 0, calc(100% - 18px) 0, 100% 18px, 100% 100%, 0 100%);
}
/* the shell itself; on hover it steps in 2px and the accent behind it becomes the stroke, notches included */
.game-grid:not(.is-list) .game-card::before, .pick-strip::before { display: block; content: ''; position: absolute; inset: 0; z-index: 0; border-radius: 0;
    background: linear-gradient(180deg, #27322b 0%, #1a231d 100%); }
.game-grid:not(.is-list) .game-card:hover { border-color: transparent; box-shadow: none; }
.game-grid:not(.is-list) .game-card:not(.is-unreleased):hover, .pick-strip:hover { background: color-mix(in srgb, var(--ga, var(--accent)) 80%, transparent); }
.game-grid:not(.is-list) .game-card:not(.is-unreleased):hover::before, .pick-strip:hover::before { inset: 2px; clip-path: polygon(0 17px, 17px 0, calc(100% - 17px) 0, 100% 17px, 100% 100%, 0 100%); }
.game-grid:not(.is-list) .game-card::after { content: ''; position: relative; z-index: 1; flex: none; height: 24px; margin: 6px -14px 0;
    background: repeating-linear-gradient(90deg, transparent 0 10px, rgba(0, 0, 0, 0.42) 10px 13px); border-top: 1px solid rgba(255, 255, 255, 0.06); }
.cart-end { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 9px 12px 6px; min-width: 0;
    font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; opacity: 0.62; white-space: nowrap; }
.cart-end span { overflow: hidden; text-overflow: ellipsis; }
.cart-label { display: flex; flex-direction: column; flex: 1; min-width: 0; border-radius: 4px; overflow: hidden; background: var(--bg-main);
    border: 1px solid rgba(0, 0, 0, 0.6); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08); transition: box-shadow 0.2s ease; }
.game-grid:not(.is-list) .game-thumb { aspect-ratio: 2.1 / 1; border-bottom: 0; }
.game-grid:not(.is-list) .game-thumb .thumb-title, .game-grid:not(.is-list) .thumb-scrim, .game-grid:not(.is-list) .thumb-status, .game-grid:not(.is-list) .tw-name { display: none; }   /* beats the .game-title display rule below */
.game-grid:not(.is-list) .game-title-row { margin-bottom: 8px; }
.game-grid:not(.is-list) .game-title { color: var(--ga, var(--accent)); text-shadow: 0 0 14px color-mix(in srgb, var(--ga, var(--accent)), transparent 60%);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.game-grid:not(.is-list) .best-strip { margin: 0 14px; }
.game-grid:not(.is-list) .game-foot > .game-actions { padding: 0 14px; }
.game-grid.is-list .cart-end { display: none; }
.game-grid.is-list .cart-label { display: contents; }
.game-grid.is-list .cart-label > * { position: relative; z-index: 1; }
@media (max-width: 620px) {
    .game-grid:not(.is-list) .game-card { padding: 0 10px; clip-path: polygon(0 14px, 14px 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 0 100%); }
    .game-grid:not(.is-list) .game-card:not(.is-unreleased):hover::before, .pick-strip:hover::before { clip-path: polygon(0 13px, 13px 0, calc(100% - 13px) 0, 100% 13px, 100% 100%, 0 100%); }
    .game-grid:not(.is-list) .game-card::after { height: 18px; margin: 4px -10px 0; }
    .cart-end { padding: 7px 8px 4px; }
}

/* list view: chips and the description in the text column, the footer in one row under them */
.game-grid.is-list .game-tagline, .game-grid.is-list .game-diff, .game-grid.is-list .game-stats, .game-grid.is-list .thumb-info { display: none; }
.game-grid.is-list .game-foot { grid-column: 2; min-width: 0; margin: 0; flex-direction: row; align-items: center; gap: 12px; padding: 10px 18px 14px; }
.game-grid.is-list .best-strip { margin: 0; flex: 0 1 320px; }
.game-grid.is-list .game-foot > .game-actions { padding: 0; margin-left: auto; }
.game-grid.is-list .game-foot .btn-play { flex: none; padding: 0 18px; }
@media (max-width: 560px) { .game-grid.is-list .game-foot { flex-wrap: wrap; } .game-grid.is-list .best-strip { flex: 1 1 100%; } .game-grid.is-list .game-foot > .game-actions { margin-left: 0; } }

/* ===== Quick view: one game, roomy (window on desktop, sheet on phones) ===== */
.qv-overlay { z-index: 210; }
.qv-modal { width: min(720px, 100%); max-height: 90vh; padding: 0; overflow: hidden; display: flex; flex-direction: column;
    border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 40%, var(--border-soft)); }
.qv-art { position: relative; flex: none; aspect-ratio: 800 / 330; max-height: 300px; overflow: hidden;
    background: radial-gradient(58% 60% at 50% 42%, color-mix(in srgb, var(--ga, var(--accent)) 22%, transparent), transparent 70%),
        linear-gradient(150deg, color-mix(in srgb, var(--ga, var(--accent)) 13%, #0a0f0c), #06090b); }
.qv-art img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 100%; display: block; }
.qv-art::after { content: ''; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(180deg, rgba(4, 8, 6, 0.72) 0%, rgba(4, 8, 6, 0.1) 34%, transparent 60%, rgba(24, 32, 27, 0.9) 100%); }
.qv-name { position: absolute; left: 22px; top: 16px; right: 120px; z-index: 2; margin: 0; font-family: var(--font-display); font-weight: 800;
    font-size: clamp(30px, 5vw, 46px); line-height: 0.92; letter-spacing: var(--track-display); color: #fff; text-shadow: 0 2px 16px rgba(0, 0, 0, 0.6); }
.qv-name span { color: var(--ga, var(--accent)); }
.qv-art .status-badge { position: absolute; right: 60px; top: 18px; z-index: 2; }
.qv-body { padding: 16px 24px 22px; overflow-y: auto; display: flex; flex-direction: column; gap: 14px; }
.qv-tagline { margin: 0; font-size: var(--fs-lead); font-weight: 700; line-height: 1.35; }
.qv-desc { margin: 0; font-size: var(--fs-body); line-height: 1.7; opacity: 0.88; }
.qv-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.qv-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border-radius: var(--radius-pill);
    border: 1px solid var(--border-soft); background: rgba(255, 255, 255, 0.03); font-size: var(--fs-meta); }
.qv-chip b { font-variant-numeric: tabular-nums; }
.qv-chip.is-daily { border-color: color-mix(in srgb, #f2c14e 55%, transparent); color: #f2c14e; background: color-mix(in srgb, #f2c14e 10%, transparent); }
.qv-best { --tier: var(--ga, var(--accent)); display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 12px 16px; border-radius: var(--radius-xl);
    background: #070b09; border: 1px solid rgba(255, 255, 255, 0.07); box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.55); }
.qv-best-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 200px; }
.qv-best-main .bs-val { margin: 0; font-size: var(--fs-h4); white-space: normal; }
.qv-best-main .bs-num { overflow: visible; font-size: var(--fs-h2); }
.qv-best-main .bs-detail { flex: none; padding-left: 24px; text-align: left; font-size: var(--fs-sm); white-space: normal; }
.qv-best-main .bs-val svg { width: 18px; height: 18px; }
.qv-next { font-size: var(--fs-xs); opacity: 0.65; }
.qv-clear { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 14px; margin-top: 2px; font-size: var(--fs-xs); }
.qv-clear > span { opacity: 0.75; }
.qv-link { min-height: 28px; padding: 0; border: 0; background: none; font: inherit; color: var(--text-main); opacity: 0.55; cursor: pointer;
    text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(255, 255, 255, 0.3); }
.qv-link:hover, .qv-link:focus-visible { opacity: 1; }
.qv-link.is-danger { color: #ec8a74; opacity: 0.95; font-weight: 700; }
.qv-ladder { display: flex; gap: 10px; }
.qv-cup { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.qv-cup .tr-medal { width: 30px; } .qv-cup .tr-medal svg { width: 30px; height: 36px; }
.qv-cup span { font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.6; white-space: nowrap; }
.qv-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.qv-actions .btn { height: 46px; }
.qv-actions .qv-play { flex: 1 1 200px; }
@media (max-width: 620px) {
    .qv-overlay { align-items: flex-end; padding: 0; }
    .qv-modal { width: 100%; max-height: 94dvh; border-radius: 18px 18px 0 0; border-bottom: 0; }
    .qv-name { left: 16px; right: 96px; }
    .qv-body { padding: 14px 16px calc(18px + var(--sab)); }
    .qv-actions .btn { flex: 1 1 auto; }
}

/* ===== Returning players: the NEW / UPDATED pill, Welcome back, what's new, challenges ===== */
.status-badge.is-fresh { color: #ff8fc4; border: 1px solid color-mix(in srgb, #ff8fc4 55%, transparent);
    background: color-mix(in srgb, #ff8fc4 16%, rgba(4, 8, 6, 0.7)); box-shadow: 0 0 12px color-mix(in srgb, #ff8fc4 35%, transparent); opacity: 1; }

/* Welcome back: one slim full-width bar between the ticker and the banner */
.welcome-strip { position: relative; width: 100vw; left: 50%; transform: translateX(-50%); margin: 0;
    background: linear-gradient(90deg, color-mix(in srgb, var(--accent) 9%, #0b120e), #0b120e 55%); border-bottom: 1px solid var(--border-soft); }
.welcome-strip[hidden] { display: none; }
.wb-in { max-width: 1440px; margin: 0 auto; padding: 9px max(5vw, var(--sar)) 9px max(5vw, var(--sal)); display: flex; align-items: center; gap: 10px; }
.wb-hi { flex: none; display: flex; flex-direction: column; line-height: 1.15; margin-right: 8px; }
.wb-hi small { white-space: nowrap; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: var(--accent); }
.wb-hi b { font-size: var(--fs-sm); font-weight: 800; max-width: 16ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wb-pills { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 2px; overflow-x: auto; scrollbar-width: none; }
.wb-pills::-webkit-scrollbar { display: none; }
.wb-pill {
    flex: none; display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 12px 0 4px; border-radius: var(--radius-pill);
    font: inherit; font-size: var(--fs-meta); color: var(--text-main); text-decoration: none; white-space: nowrap; cursor: pointer;
    border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 40%, var(--border-soft)); background: color-mix(in srgb, var(--ga, var(--accent)) 10%, transparent);
    transition: border-color 0.15s, background-color 0.15s;
}
.wb-pill:hover, .wb-pill:focus-visible { border-color: var(--ga, var(--accent)); background: color-mix(in srgb, var(--ga, var(--accent)) 16%, transparent); }
.wb-art { width: 28px; height: 28px; flex: none; border-radius: 50%; background: color-mix(in srgb, var(--ga, var(--accent)) 18%, #0a100c) 50% 100% / cover no-repeat; }
.wb-k { opacity: 0.62; }
.wb-pl b { font-weight: 700; }
.wb-go { width: 15px; height: 15px; flex: none; margin-left: -2px; color: var(--ga, var(--accent)); }
.wb-gold { display: inline-flex; align-items: center; gap: 3px; color: #f2c14e; font-weight: 700; }
.wb-gold .tix-ic { width: 14px; height: 14px; }
.wb-ok { color: var(--accent); font-weight: 700; }
.wb-pill.is-done { opacity: 0.75; }
.wb-pill.is-chal { --ga: #ff9a6b; }
.wb-newp { --ga: #ff8fc4; padding-left: 6px; }
.wb-newp:not(:has(.wb-stack)) { padding-left: 14px; }
.wb-stack { display: inline-flex; }
.wb-stack i { width: 24px; height: 24px; margin-left: -8px; border-radius: 50%; border: 2px solid #0c130f;
    background: color-mix(in srgb, var(--ga, var(--accent)) 30%, #0a100c) 50% 100% / cover no-repeat; }
.wb-stack i:first-child { margin-left: 0; }
.wb-count { min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; display: inline-grid; place-items: center;
    font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 700; color: #1a0b12; background: #ff8fc4; }
.wb-stat { flex: none; display: inline-flex; align-items: center; gap: 16px; margin-left: auto; padding-left: 6px; font-size: var(--fs-meta); }
.wb-stat .wb-newp { margin-right: 2px; }
.wb-punch { display: inline-flex; align-items: center; gap: 6px; color: var(--text-main); text-decoration: none; }
.wb-dots { display: inline-flex; gap: 4px; }
.wb-dots i { width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid rgba(255, 255, 255, 0.3); }
.wb-dots i.is-on { border: 0; background: var(--ga, var(--accent)); box-shadow: 0 0 6px color-mix(in srgb, var(--ga, var(--accent)) 60%, transparent); }
.wb-pn { font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.65; }
.wb-tix { display: inline-flex; align-items: center; gap: 5px; color: #f2c14e; text-decoration: none; font-variant-numeric: tabular-nums; }
.wb-tix .tix-ic { width: 17px; height: 17px; }
.wb-tix b { font-family: var(--font-display); font-size: var(--fs-lead); font-weight: 800; line-height: 1; letter-spacing: var(--track-display); }
.wb-punch:hover .wb-pn, .wb-tix:hover b { text-decoration: underline; text-underline-offset: 3px; }
@media (min-width: 621px) and (min-height: 501px) { .welcome-strip:not([hidden]) + #hero-rotator { padding-top: 16px; } }
@media (max-width: 1199px) and (min-width: 621px) { .wb-hi { display: none; } }
@media (max-width: 979px) and (min-width: 621px) { .wb-k-c { display: none; } }
@media (max-width: 620px) {
    .wb-in { flex-wrap: wrap; row-gap: 8px; padding-top: 10px; padding-bottom: 10px; }
    .wb-hi { flex-direction: row; align-items: baseline; gap: 6px; min-width: 0; flex: 1 1 0; }
    .wb-hi b { min-width: 0; }
    .wb-stat { margin-left: 0; gap: 10px; padding-left: 0; }
    .wb-punch { display: none; }
    .wb-newp { height: 32px; padding: 0 8px 0 10px; }
    .wb-newp .wb-stack { display: none; }
    .wb-newp:not(:has(.wb-stack)) { padding-left: 10px; }
    .wb-hi.has-name small { display: none; }
    .wb-hi.has-name b::before { content: 'Hi, '; font-weight: 600; opacity: 0.7; }
    .wb-pills { order: 3; flex: 1 1 100%; margin: 0 calc(-1 * max(5vw, var(--sal))); padding: 2px max(5vw, var(--sal)); }
}

/* What's new: a dropdown under its pill; a bottom sheet on phones */
.wn-wrap { position: fixed; inset: 0; z-index: 10040; }
.wn-pop { position: absolute; width: min(400px, calc(100vw - 24px)); max-height: 70vh; overflow-y: auto; padding: 10px;
    border-radius: var(--radius-window); background: linear-gradient(170deg, #16211b 0%, #0f1512 100%);
    border: 1px solid color-mix(in srgb, #ff8fc4 30%, var(--border-soft)); box-shadow: 0 18px 50px rgba(0, 0, 0, 0.55);
    opacity: 0; transform: translateY(-6px); transition: opacity 0.16s ease, transform 0.16s ease; }
.wn-wrap.is-in .wn-pop { opacity: 1; transform: none; }
.wn-h { margin: 2px 6px 8px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; opacity: 0.6; }
.wn-row { width: 100%; display: flex; align-items: center; gap: 10px; padding: 8px; border: 0; border-radius: var(--radius-lg); background: none;
    font: inherit; color: var(--text-main); text-align: left; text-decoration: none; cursor: pointer; }
.wn-row:hover, .wn-row:focus-visible { background: rgba(255, 255, 255, 0.05); outline: none; }
.wn-art { width: 40px; height: 40px; flex: none; border-radius: var(--radius-md); background: color-mix(in srgb, var(--ga, var(--accent)) 18%, #0a100c) 50% 100% / cover no-repeat; }
.wn-ic { display: grid; place-items: center; color: var(--accent); }
.wn-ic svg { width: 20px; height: 20px; }
.wn-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.wn-txt b { font-size: var(--fs-sm); }
.wn-txt b em { font-style: normal; font-weight: 600; opacity: 0.6; font-size: var(--fs-xs); }
.wn-txt span { font-size: var(--fs-xs); opacity: 0.72; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.wn-flag { flex: none; font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #ff8fc4; }
.wn-go { flex: none; padding: 5px 12px; border-radius: var(--radius-pill); font-size: var(--fs-xs); font-weight: 700; color: #1a0f08; background: #ff9a6b; }
@media (max-width: 620px) {
    .wn-wrap { background: rgba(4, 7, 5, 0.6); display: flex; align-items: flex-end; justify-content: center; }
    .wn-pop { position: relative; width: 100%; max-height: 80dvh; border-radius: var(--radius-window) var(--radius-window) 0 0; border-bottom: 0;
        padding: 12px max(12px, var(--sar)) calc(16px + var(--sab)) max(12px, var(--sal)); transform: translateY(24px); }
}

/* quick view: what's new, a friend's challenge, the one-time name for challenges */
.qv-new { padding: 10px 14px; border-radius: var(--radius-lg);
    border: 1px solid color-mix(in srgb, #ff8fc4 35%, var(--border-soft)); background: color-mix(in srgb, #ff8fc4 7%, transparent); }
.qv-new-k { font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 700; letter-spacing: var(--track-caps); text-transform: uppercase; color: #ff8fc4; }
.qv-new p { margin: 3px 0 0; font-size: var(--fs-sm); line-height: 1.55; }
.qv-chip.is-chal { border-color: color-mix(in srgb, #ff9a6b 55%, transparent); color: #ff9a6b; background: color-mix(in srgb, #ff9a6b 10%, transparent); }
.qv-name-form { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: var(--radius-lg); background: #070b09; border: 1px solid rgba(255, 255, 255, 0.07); }
.qv-name-form[hidden] { display: none; }
.qv-name-form label { font-size: var(--fs-sm); font-weight: 600; }
.qv-name-row { display: flex; gap: 8px; }
.qv-name-row input { flex: 1; min-width: 0; height: 44px; padding: 0 12px; border-radius: var(--radius-md); border: 1px solid var(--border-soft);
    background: var(--bg-main); color: var(--text-main); font: inherit; }
.qv-name-row .btn { flex: none; height: 44px; }
.qv-name-form p { margin: 0; font-size: var(--fs-xs); opacity: 0.6; }

/* player: a friend's challenge, next to the daily chip */
.chal-chip { display: inline-block; cursor: pointer; line-height: 1.2; color: #ff9a6b; border-color: color-mix(in srgb, #ff9a6b 50%, transparent); background: color-mix(in srgb, #ff9a6b 12%, transparent); }
.chal-chip.is-won { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 55%, transparent); background: color-mix(in srgb, var(--accent) 14%, transparent); }
.chal-chip:hover { filter: brightness(1.15); }

/* ===== Weekly recap receipt, Start here, More like this ===== */
.recap-modal { width: min(460px, 100%); max-height: 94dvh; overflow-y: auto; }
.recap-canvas { display: block; width: 100%; max-width: 380px; height: auto; margin: 0 auto 16px; border-radius: var(--radius-lg); }
.recap-modal .arcade-id-actions { justify-content: center; }
.recap-modal .arcade-id-note { text-align: center; }
.recap-empty { margin: 0; font-size: var(--fs-sm); line-height: 1.6; opacity: 0.8; }

/* the Welcome slot for first-timers */
.welcome-strip.is-start .wb-hi small { color: #f2c14e; }
.welcome-strip.is-start .wb-hi b { max-width: none; }
.wb-start-copy { font-size: var(--fs-sm); opacity: 0.75; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.wb-start { --ga: #f2c14e; margin-left: auto; padding-left: 6px; }
.wb-start b { color: #f2c14e; }
.wb-x { flex: none; width: 32px; height: 32px; border: 0; border-radius: 50%; background: none; color: var(--text-main); opacity: 0.45; font-size: var(--fs-lead); line-height: 1; cursor: pointer; }
.wb-x:hover, .wb-x:focus-visible { opacity: 0.9; background: rgba(255, 255, 255, 0.06); }
@media (max-width: 620px) {
    .welcome-strip.is-start .wb-in { flex-wrap: nowrap; }
    .welcome-strip.is-start .wb-hi { flex-direction: column; align-items: flex-start; gap: 0; }
    .welcome-strip.is-start .wb-hi small { display: block; }
    .welcome-strip.is-start .wb-hi b::before { content: none; }
    .wb-start-copy { display: none; }
    .wb-start .wb-stack { display: none; }
    .wb-start { padding-left: 14px; }
}

/* the picker */
.sh-overlay { z-index: 212; }
.sh-modal { width: min(560px, 100%); padding: 24px; max-height: 92dvh; overflow-y: auto; border: 1px solid color-mix(in srgb, #f2c14e 35%, var(--border-soft)); }
.sh-kick { margin: 0; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; color: #f2c14e; }
.sh-q { margin: 4px 0 16px; font-size: var(--fs-h3); font-weight: 800; letter-spacing: -0.01em; }
.sh-opts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.sh-opts.is-moods { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sh-opt { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; min-height: 76px; padding: 14px; border-radius: var(--radius-xl); text-align: left;
    font: inherit; color: var(--text-main); cursor: pointer; background: rgba(255, 255, 255, 0.03); border: 1px solid var(--border-soft); transition: border-color 0.15s, background-color 0.15s; }
.sh-opt b { font-size: var(--fs-body); }
.sh-opt span { font-size: var(--fs-xs); opacity: 0.65; }
.sh-opt:hover, .sh-opt:focus-visible { border-color: #f2c14e; background: color-mix(in srgb, #f2c14e 8%, transparent); outline: none; }
.sh-back { margin-top: 14px; padding: 6px 0; border: 0; background: none; color: var(--text-main); opacity: 0.6; font: inherit; font-size: var(--fs-sm); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.sh-back:hover { opacity: 1; }
.sh-picks { display: flex; flex-direction: column; gap: 10px; }
.sh-pick { display: flex; align-items: center; gap: 14px; padding: 10px; border-radius: var(--radius-xl);
    background: color-mix(in srgb, var(--ga, var(--accent)) 8%, #0b110d); border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 30%, var(--border-soft)); }
.sh-art { flex: none; width: 112px; aspect-ratio: 800 / 330; border: 0; padding: 0; border-radius: var(--radius-lg); cursor: pointer;
    background: color-mix(in srgb, var(--ga, var(--accent)) 18%, #0a100c) 50% 100% / cover no-repeat; }
.sh-ptxt { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.sh-ptxt b { font-size: var(--fs-body); }
.sh-ptxt span { font-size: var(--fs-xs); opacity: 0.75; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sh-ptxt small { font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.55; }
.sh-play { flex: none; height: 44px; }
@media (max-width: 620px) {
    .sh-overlay { align-items: flex-end; padding: 0; }
    .sh-modal { width: 100%; border-radius: 18px 18px 0 0; border-bottom: 0; padding: 18px 16px calc(18px + var(--sab)); }
    .sh-opts, .sh-opts.is-moods { grid-template-columns: minmax(0, 1fr); }
    .sh-opt { min-height: 0; padding: 12px 14px; }
    .sh-art { width: 84px; }
    .sh-pick { flex-wrap: wrap; }
    .sh-play { width: 100%; }
}

/* quick view: More like this */
.qv-more-h { margin: 0 0 8px; font-family: var(--font-mono); font-size: var(--fs-label); letter-spacing: var(--track-eyebrow); text-transform: uppercase; opacity: 0.6; }
.qv-more-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.qv-more-g { display: flex; flex-direction: column; gap: 4px; padding: 0 0 8px; border-radius: var(--radius-lg); overflow: hidden; text-align: left; cursor: pointer;
    font: inherit; color: var(--text-main); background: rgba(255, 255, 255, 0.03); border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 25%, var(--border-soft)); }
.qv-more-g:hover, .qv-more-g:focus-visible { border-color: var(--ga, var(--accent)); outline: none; }
.qv-more-art { display: block; width: 100%; aspect-ratio: 800 / 330; background: color-mix(in srgb, var(--ga, var(--accent)) 18%, #0a100c) 50% 100% / cover no-repeat; }
.qv-more-g b { padding: 0 10px; font-size: var(--fs-meta); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qv-more-g small { padding: 0 10px; font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.55; }

/* ===== Favorites, rest days, Pick for me ===== */
.thumb-fav { position: absolute; left: 10px; bottom: 10px; z-index: 3; width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center;
    color: #f2c14e; background: rgba(6, 10, 8, 0.62); border: 1px solid color-mix(in srgb, #f2c14e 45%, transparent);
    -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); pointer-events: none; }
.thumb-fav svg { width: 16px; height: 16px; }
.thumb-fav.has-season { bottom: 44px; }
.game-grid.is-list .thumb-fav { display: none; }
.qv-fav { position: absolute; right: 14px; bottom: 14px; z-index: 3; width: 44px; height: 44px; padding: 0; border-radius: 50%; display: grid; place-items: center; cursor: pointer;
    color: #fff; background: rgba(6, 10, 8, 0.62); border: 1px solid rgba(255, 255, 255, 0.28); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
    transition: color 0.15s, border-color 0.15s, transform 0.15s; }
.qv-fav svg { width: 22px; height: 22px; }
.qv-fav:hover, .qv-fav:focus-visible { border-color: #f2c14e; color: #f2c14e; transform: scale(1.06); }
.qv-fav.is-on { color: #f2c14e; border-color: color-mix(in srgb, #f2c14e 60%, transparent); }
.filter-btn.filter-fav { display: inline-flex; align-items: center; gap: 6px; }
.filter-btn.filter-fav svg { width: 14px; height: 14px; color: #f2c14e; }
.tr-heat-cell.is-rest { background: transparent; box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--accent) 70%, transparent); }
/* Library: the mystery cartridge (Pick for me), a sideways cartridge strip above the grid; a question mark stands in for the art */
.pick-art { position: relative; display: grid; place-items: center; width: 100%; aspect-ratio: 2.1 / 1; padding: 0; border: 0; cursor: pointer; color: #f2c14e;
    background: radial-gradient(58% 60% at 50% 42%, color-mix(in srgb, #f2c14e 22%, transparent), transparent 70%), linear-gradient(150deg, color-mix(in srgb, #f2c14e 13%, #0a0f0c), #06090b); }
.pick-art::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(rgba(0,0,0,0) 50%, rgba(0,0,0,0.18) 50%); background-size: 100% 4px; mix-blend-mode: overlay; }
.pick-art:focus-visible { outline: 2px solid #f2c14e; outline-offset: -2px; }
.pick-q { font-family: var(--font-display); font-weight: 800; font-size: clamp(64px, 9vw, 96px); line-height: 1; text-shadow: 0 0 28px color-mix(in srgb, #f2c14e, transparent 45%); transition: transform 0.25s ease; }
.pick-strip:hover .pick-q { transform: translateY(-3px) rotate(-6deg); }
.btn-pick { background: #f2c14e; border-color: #f2c14e; color: #08100b; }
.btn-pick:hover, .btn-pick:focus-visible { background: #f6d272; border-color: #f6d272; color: #08100b; }
.pick-strip { position: relative; display: flex; flex-direction: column; margin: 0 0 20px; padding: 0 14px; --ga: #f2c14e; background: transparent; border-radius: 4px 4px 6px 6px;
    clip-path: polygon(0 18px, 18px 0, calc(100% - 18px) 0, 100% 18px, 100% 100%, 0 100%); }
.pick-strip::after { content: ''; position: relative; z-index: 1; flex: none; height: 14px; margin: 6px -14px 0;
    background: repeating-linear-gradient(90deg, transparent 0 10px, rgba(0, 0, 0, 0.42) 10px 13px); border-top: 1px solid rgba(255, 255, 255, 0.06); }
.pick-strip > * { position: relative; z-index: 1; }
.ps-label { flex-direction: row; align-items: center; gap: 18px; padding-right: 16px; }
.ps-label .pick-art { width: 150px; flex: none; align-self: stretch; aspect-ratio: auto; min-height: 86px; }
.ps-label .pick-q { font-size: 48px; }
.ps-txt { flex: 1 1 200px; min-width: 0; padding: 12px 0; }
.ps-txt .game-title { color: var(--ga); text-shadow: 0 0 14px color-mix(in srgb, var(--ga), transparent 60%); margin-bottom: 4px; }
.ps-txt .game-tagline { -webkit-line-clamp: 3; }
.ps-label .btn-pick { flex: none; height: 44px; padding: 0 22px; margin-left: auto; }
#pick-strip[hidden] { display: none; }
@media (max-width: 620px) {
    .pick-strip { padding: 0 10px; clip-path: polygon(0 14px, 14px 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 0 100%); }
    .pick-strip::after { margin: 4px -10px 0; }
    .ps-label { flex-wrap: wrap; gap: 12px; padding: 0 0 12px; }
    .ps-label .pick-art { width: 96px; min-height: 72px; }
    .ps-label .pick-q { font-size: 40px; }
    .ps-txt { padding: 10px 12px 0 0; }
    .ps-label .btn-pick { flex: 1 1 100%; margin: 0 12px; }
}

/* ===== Tips, Up next, saving up, Settings, reduce motion ===== */
.da-toast-tip { border-color: color-mix(in srgb, var(--accent) 45%, var(--border-soft)); }
.da-toast-tip .da-toast-icon { color: var(--accent); }
.da-toast-tip .da-toast-icon svg { width: 22px; height: 22px; }
.da-toast-cta { display: inline-block; margin-top: 6px; font-size: var(--fs-xs); font-weight: 700; color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }

.upnext-pill { display: inline-flex; align-items: center; gap: 7px; flex: none; max-width: 60%; height: 32px; padding: 0 10px 0 4px; border-radius: var(--radius-pill); cursor: pointer;
    font: inherit; font-size: var(--fs-xs); color: var(--text-main); white-space: nowrap; overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--ga, var(--accent)) 55%, transparent); background: color-mix(in srgb, var(--ga, var(--accent)) 14%, rgba(4, 8, 6, 0.6)); }
.upnext-pill > span:not(.upnext-art) { overflow: hidden; text-overflow: ellipsis; }
.upnext-pill:hover, .upnext-pill:focus-visible { border-color: var(--ga, var(--accent)); }
.upnext-art { width: 24px; height: 24px; flex: none; border-radius: 50%; background: color-mix(in srgb, var(--ga, var(--accent)) 18%, #0a100c) 50% 100% / cover no-repeat; }
.upnext-k { opacity: 0.65; }
.upnext-pill svg { width: 13px; height: 13px; flex: none; color: var(--ga, var(--accent)); }
.player-bar .upnext-pill, .play-module-header .upnext-pill { margin-right: 4px; }
.tk-bar .upnext-pill { max-width: calc(100% - 150px); }
@media (orientation: landscape) and (max-height: 500px) { .tk-bar .upnext-pill { display: none; } }
/* phone bar: a challenge chip and Up next share the space */
.tk-bar .daily-chip, .tk-bar .upnext-pill { flex: 0 1 auto; min-width: 0; }
.tk-bar:has(.upnext-pill):has(.chal-chip) .tk-l, .tk-bar:has(.chal-chip) .upnext-k, .tk-bar:has(.chal-chip) .upnext-pill svg, .tk-bar:has(.upnext-pill) .cc-pre { display: none; }
.cc-alt { display: none; }
.tk-bar:has(.upnext-pill) .cc-alt { display: inline; }

.goal { display: flex; flex-direction: column; gap: 5px; }
.goal-t { margin: 0; font-size: var(--fs-xs); }
.goal-n { margin: 0; font-family: var(--font-mono); font-size: var(--fs-label); opacity: 0.65; }
.goal-bar { display: block; height: 6px; border-radius: var(--radius-pill); background: rgba(255, 255, 255, 0.08); overflow: hidden; }
.goal-bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #d9a93a, #f2c14e); }
.pz-goal { order: 3; flex: 0 0 100%; margin: 2px 0 0; padding: 12px 14px; border-radius: var(--radius-lg);
    background: color-mix(in srgb, #f2c14e 7%, transparent); border: 1px solid color-mix(in srgb, #f2c14e 30%, var(--border-soft)); }
.pz-goal .goal-t { font-size: var(--fs-sm); }
.pz-goal .goal-bar, .pz-goal .goal-n { max-width: 420px; }
.pz-btn.pz-save.is-on { color: #f2c14e; border-color: color-mix(in srgb, #f2c14e 55%, transparent); }
.td-goal { margin-top: 2px; }
.tr-tix .goal-bar { width: 64px; margin-left: 8px; display: inline-block; vertical-align: middle; }
.wb-tix.has-goal { gap: 6px; }
.wb-goal-of { font-size: var(--fs-xs); opacity: 0.75; }
.wb-tix .goal-bar { width: 42px; height: 5px; }
@media (max-width: 620px) { .wb-goal-of, .wb-tix .goal-bar { display: none; } }

.nav-gear { display: grid; place-items: center; width: 36px; height: 36px; padding: 0; border: 0; border-radius: 50%; background: none; color: var(--text-main); opacity: 0.7; cursor: pointer; }
.nav-gear svg { width: 20px; height: 20px; }
.nav-gear:hover, .nav-gear:focus-visible { opacity: 1; background: rgba(255, 255, 255, 0.06); }
.mobile-nav-settings { background: none; border: 0; font: inherit; cursor: pointer; }
.st-overlay { z-index: 214; }
.st-modal { width: min(520px, 100%); padding: 24px; max-height: 92dvh; overflow-y: auto; display: flex; flex-direction: column; gap: 4px; }
.st-h { margin: 0 0 10px; font-size: var(--fs-h3); font-weight: 800; }
.st-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--border-soft); }
.st-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.st-txt b { font-size: var(--fs-body); }
.st-txt span, .st-sec > span { font-size: var(--fs-xs); opacity: 0.7; line-height: 1.5; }
.st-name input { flex: none; width: 180px; height: 44px; padding: 0 12px; border-radius: var(--radius-md); border: 1px solid var(--border-soft); background: var(--bg-main); color: var(--text-main); font: inherit; }
.st-name input:focus { border-color: var(--accent); outline: none; }
.st-switch { flex: none; position: relative; width: 52px; height: 30px; padding: 0; border-radius: var(--radius-pill); cursor: pointer;
    border: 1px solid var(--border-soft); background: rgba(255, 255, 255, 0.08); transition: background-color 0.15s, border-color 0.15s; }
.st-switch i { position: absolute; top: 3px; left: 3px; width: 22px; height: 22px; border-radius: 50%; background: #e7ece8; transition: transform 0.15s; }
.st-switch.is-on { background: var(--accent); border-color: var(--accent); }
.st-switch.is-on i { transform: translateX(22px); }
.st-switch:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.st-sec { display: flex; flex-direction: column; gap: 4px; padding: 14px 0; border-bottom: 1px solid var(--border-soft); }
.st-sec > b { font-size: var(--fs-body); }
.st-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.st-btns .btn { height: 44px; }
.st-clear { color: #ec8a74; border-color: color-mix(in srgb, #ec8a74 45%, var(--border-soft)); }
.st-erase { color: #1a0b08; background: #ec8a74; border: 1px solid #ec8a74; }
.st-foot { margin: 12px 0 0; font-size: var(--fs-xs); opacity: 0.6; }
@media (max-width: 620px) {
    .st-overlay { align-items: flex-end; padding: 0; }
    .st-modal { width: 100%; border-radius: 18px 18px 0 0; border-bottom: 0; padding: 18px 16px calc(18px + var(--sab)); }
    .st-name { flex-direction: column; align-items: stretch; }
    .st-name input { width: 100%; }
}

.onefile-strip[hidden], .da-ret .onefile-strip { display: none; }
@media (max-width: 760px) {
    .onefile-strip { grid-template-columns: 1fr; gap: 18px; padding: 16px; margin: 18px 0 32px; min-height: 0; }
    .onefile-strip::before { background: rgba(8, 12, 10, 0.9); }
    .of-claims { grid-template-columns: 1fr; gap: 16px; }
    .of-file { max-width: none; display: grid; grid-template-columns: 42% minmax(0, 1fr); grid-template-areas: 'kick kick' 'art fn' 'art meta'; column-gap: 12px; row-gap: 6px; align-items: start; }
    .of-kicker { grid-area: kick; } .of-art { grid-area: art; } .of-fn { grid-area: fn; } .of-meta { grid-area: meta; }
}

/* the site's own Reduce motion switch, on top of the device setting */
html.da-reduce *, html.da-reduce *::before, html.da-reduce *::after {
    animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
html.da-reduce::view-transition-group(*), html.da-reduce::view-transition-old(*), html.da-reduce::view-transition-new(*) { animation: none !important; }
