* { box-sizing: border-box; }
:root { color-scheme: dark; --page:#171917; --panel:#222622; --text:#f9f7f2; --muted:#bdc0b8; --line:#3f453d; --accent:#ffad48; --ink:#201808; --wash:#342a1b; --radius:12px; --heading:"Arial Black","Segoe UI",sans-serif; --body:"Segoe UI",Arial,sans-serif; }
body[data-site=dodgegrid] { --page:#101822; --panel:#182533; --text:#f1faf6; --muted:#abc3c1; --line:#304553; --accent:#a8f4d1; --ink:#10271f; --wash:#203938; --radius:8px; }
body[data-site=gemchase] { color-scheme:light; --page:#fff8ef; --panel:#fffdf9; --text:#32263a; --muted:#62566a; --line:#e4d6db; --accent:#704997; --ink:#fffaf5; --wash:#f1e6fa; --radius:21px; --heading:Georgia,"Times New Roman",serif; }
body[data-site=bladeparty] { --page:#1b1017; --panel:#291a25; --text:#fff4e9; --muted:#ceb8c7; --line:#543849; --accent:#ffd36b; --ink:#281811; --wash:#432739; --radius:5px; }
body[data-site=checkpointx] { color-scheme:light; --page:#f2f6ff; --panel:#fff; --text:#162644; --muted:#4c5d76; --line:#d5dfee; --accent:#2156cf; --ink:#fff; --wash:#e2ebff; --radius:15px; --heading:"Segoe UI",Arial,sans-serif; }
html { scroll-behavior:smooth; }
body { margin:0; min-width:280px; font:16px/1.55 var(--body); background:var(--page); color:var(--text); }
a { color:inherit; text-decoration:none; }
button,input,select { font:inherit; color:inherit; }
button,select { cursor:pointer; }
button:disabled { cursor:default; }
img { max-width:100%; display:block; }
svg { flex:none; }
[hidden] { display:none !important; }
:focus-visible { outline:3px solid var(--accent); outline-offset:4px; }
.wrap { width:min(1280px, 100% - 80px); margin-inline:auto; }
.skip { position:fixed; top:8px; left:8px; z-index:10; transform:translateY(-180%); }
.skip:focus { transform:translateY(0); }
.masthead { border-bottom:1px solid var(--line); }
.masthead-inner { min-height:78px; display:flex; align-items:center; gap:32px; }
.brand { display:inline-flex; align-items:center; flex:none; gap:10px; font-size:21px; letter-spacing:-.045em; font-weight:850; }
.brand img { width:39px; height:39px; }
.nav { display:flex; flex-wrap:wrap; align-items:center; gap:22px; margin-left:auto; color:var(--muted); font-size:.9rem; }
.nav a:hover, .footlinks a:hover, .crumbs a:hover { color:var(--accent); }
.nav .library-link { display:inline-flex; align-items:center; gap:7px; color:var(--text); border:1px solid var(--line); border-radius:999px; padding:8px 12px; }
.btn { min-height:44px; width:fit-content; border:1px solid transparent; border-radius:7px; padding:10px 16px; font-weight:760; display:inline-flex; align-items:center; justify-content:center; gap:8px; line-height:1.25; text-align:center; background:var(--accent); color:var(--ink); }
.btn:hover { filter:brightness(1.1); }
.btn.secondary { background:var(--panel); border-color:var(--line); color:var(--text); }
.btn.secondary[aria-pressed=true] { border-color:var(--accent); color:var(--accent); }
.arrow { font-size:1.12em; }
.eyebrow { font:700 .73rem/1.4 ui-monospace,Consolas,monospace; letter-spacing:.15em; text-transform:uppercase; color:var(--accent); margin:0 0 12px; }
.muted { color:var(--muted); }
h1,h2,h3,p { margin-block:0; }
h1,h2,h3 { line-height:1.13; }
h1,h2 { font-family:var(--heading); font-weight:850; letter-spacing:-.045em; }
h1 { font-size:clamp(2.35rem,5vw,4.7rem); }
h2 { font-size:clamp(1.65rem,3.2vw,2.8rem); }
h3 { font-size:1.04rem; }
.home-hero { display:grid; grid-template-columns:minmax(0,.93fr) minmax(0,1.07fr); align-items:stretch; margin:35px 0 28px; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.hero-copy { min-width:0; display:flex; flex-direction:column; justify-content:center; align-items:flex-start; gap:17px; padding:clamp(24px,4vw,57px); }
.hero-copy .eyebrow { margin:0; }
.hero-copy h1 span { display:block; color:var(--accent); }
.hero-copy p:not(.eyebrow) { max-width:38ch; color:var(--muted); font-size:clamp(.98rem,1.5vw,1.14rem); }
.hero-copy .btn { margin-top:6px; }
.hero-feature { min-width:0; position:relative; display:flex; flex-direction:column; justify-content:flex-end; isolation:isolate; overflow:hidden; color:white; min-height:315px; }
.hero-feature > img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.hero-feature::after { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(180deg,#10101812 23%,#101018b8 76%,#101018f0 100%); }
.feature-caption { padding:23px 25px; display:flex; flex-wrap:wrap; align-items:end; justify-content:space-between; gap:10px; }
.feature-caption small { display:block; text-transform:uppercase; letter-spacing:.13em; color:#fff; font-size:.7rem; font-weight:800; }
.feature-caption strong { display:block; font-size:clamp(1.3rem,3vw,2.4rem); line-height:1.05; margin-top:5px; letter-spacing:-.04em; }
.feature-arrow { display:grid; place-items:center; border:1px solid #ffffffa0; width:37px; height:37px; border-radius:100%; }
.hero-feature:hover .feature-arrow { background:white; color:#181526; }
.hero-garage { border-color:#5d4d2e; background:repeating-linear-gradient(125deg,transparent 0 21px,#ffad4808 21px 24px),linear-gradient(130deg,#322718,#1e211f 60%); }
.hero-garage h1 { text-transform:uppercase; font-style:italic; font-size:clamp(2.5rem,5.45vw,5rem); }
.hero-garage .hero-feature { border-left:6px solid var(--accent); }
.hero-circuit { gap:8px; padding:10px; grid-template-columns:1fr 1.15fr .53fr; background:linear-gradient(#3b656321 1px,transparent 1px),linear-gradient(90deg,#3b656321 1px,transparent 1px),#14222c; background-size:23px 23px; }
.hero-circuit .hero-copy { padding:clamp(17px,3vw,42px); }
.hero-circuit h1 { font-size:clamp(2.15rem,4.1vw,4rem); }
.hero-circuit .hero-feature { border-radius:6px; }
.hero-circuit .hero-side { display:grid; gap:8px; min-width:0; }
.hero-circuit .hero-side .hero-feature { min-height:135px; }
.hero-circuit .hero-side .feature-caption { padding:11px; }
.hero-circuit .hero-side .feature-caption strong { font-size:1rem; }
.hero-circuit .hero-side .feature-caption small,.hero-circuit .hero-side .feature-arrow { display:none; }
.hero-parlour { background:radial-gradient(ellipse at 50% 0%,#f2e4fd 3%,#fff9ec 66%); gap:10px; padding:14px; grid-template-columns:1fr; }
.hero-parlour .hero-copy { padding:clamp(22px,4vw,42px); align-items:center; text-align:center; }
.hero-parlour .hero-copy p:not(.eyebrow) { max-width:60ch; }
.hero-parlour .hero-feature { border-radius:18px; }
.hero-parlour .hero-copy h1 { line-height:1; }
.hero-parlour .hero-copy h1 span { display:inline; }
.hero-parlour .hero-copy h1 span::before { content:" "; }
.parlour-features { display:grid; grid-template-columns:1.13fr .87fr; gap:10px; min-width:0; }
.parlour-features .hero-feature { min-height:260px; }
.hero-cabinet { background:repeating-linear-gradient(0deg,#ffd36b08 0 1px,transparent 1px 5px),linear-gradient(110deg,#331e2a,#231521); grid-template-columns:1.12fr .88fr; padding:0 16px 0 0; }
.hero-cabinet h1 { text-transform:uppercase; font-size:clamp(2.5rem,5.2vw,5.15rem); }
.hero-cabinet .hero-feature { margin:16px 0; border:1px solid #aa758f; outline:4px solid #21121c; }
.hero-cabinet .hero-feature::before { content:"01"; color:#fff; font:800 .8rem/1 monospace; position:absolute; inset:13px auto auto 14px; padding:9px; background:#1b1017; border:1px solid var(--accent); }
.hero-library { background:linear-gradient(120deg,#e3ecff,#f4f9ff 65%); padding:13px; border-radius:21px; margin-bottom:23px; }
.hero-library h1 { font-size:clamp(2.35rem,5vw,4.55rem); line-height:1.02; }
.hero-library .hero-feature { border-radius:13px; }
.quicksearch { width:min(100%,390px); display:flex; gap:8px; }
.quicksearch input { min-width:0; flex:1; }
.category-rail { display:grid; grid-template-columns:repeat(auto-fit,minmax(132px,1fr)); gap:9px; margin:18px 0 35px; }
.category-link { padding:12px 14px; min-width:0; min-height:63px; border:1px solid var(--line); border-radius:var(--radius); background:var(--panel); display:flex; flex-direction:column; gap:4px; justify-content:center; font-weight:760; line-height:1.18; }
.category-link small { color:var(--muted); font-size:.73rem; font-weight:600; }
.category-link:hover { border-color:var(--accent); }
.category-rail.compact { display:block; margin:0; }
.category-rail.compact .category-link { min-height:auto; margin-bottom:7px; flex-direction:row; align-items:center; justify-content:space-between; }
.library-layout { display:grid; grid-template-columns:212px minmax(0,1fr); gap:26px; margin-top:30px; }
.library-layout aside { align-self:start; border:1px solid var(--line); background:var(--panel); border-radius:var(--radius); padding:16px; }
.section { margin:30px 0 50px; }
.library-layout .section { margin-top:0; }
.section-top { display:flex; align-items:end; justify-content:space-between; gap:14px; margin-bottom:19px; }
.section-top .eyebrow { margin-bottom:6px; }
.more-link { white-space:nowrap; font-weight:750; color:var(--accent); }
.more-link:hover { text-decoration:underline; }
.games { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:15px; }
.games.all { grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; }
.library-layout .games { grid-template-columns:repeat(4,minmax(0,1fr)); }
.card { min-width:0; border:1px solid var(--line); background:var(--panel); border-radius:var(--radius); overflow:hidden; }
.card:hover { border-color:var(--accent); }
.card a { display:block; height:100%; }
.card a:focus-visible { outline-offset:-4px; }
.card img { width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; background:var(--wash); }
.card span { padding:11px 12px 13px; display:block; overflow-wrap:anywhere; }
.card small { display:block; font-weight:700; font-size:.72rem; color:var(--muted); margin-bottom:4px; }
.card strong { display:block; line-height:1.2; font-weight:780; }
.games.all .card strong { font-size:.9rem; }
.section-cabinet .games { grid-template-columns:repeat(2,minmax(0,1fr)); }
.section-cabinet .card a { display:grid; grid-template-columns:minmax(90px,36%) 1fr; align-items:center; }
.section-cabinet .card span { padding:15px; }
.section-parlour .card { box-shadow:0 8px 22px #4732540c; }
.section-parlour .card img { aspect-ratio:5/4; }
.hero-circuit h1 { letter-spacing:-.055em; }
.category-rail.compact .category-link small { white-space:nowrap; }
.footer { margin-top:55px; padding:30px 0 max(26px,env(safe-area-inset-bottom)); border-top:1px solid var(--line); background:var(--panel); }
.footer-inner { display:flex; justify-content:space-between; align-items:start; gap:20px; }
.footlinks { display:flex; flex-wrap:wrap; gap:10px 19px; color:var(--muted); font-size:.87rem; }
.footer p { margin-top:8px; font-size:.85rem; color:var(--muted); }
.crumbs { display:flex; flex-wrap:wrap; align-items:center; gap:7px; color:var(--muted); font-size:.9rem; margin:24px 0 14px; }
.page-title { margin-bottom:22px; }
.page-title p { max-width:65ch; margin-top:10px; color:var(--muted); }
.filter-bar { display:flex; flex-wrap:wrap; align-items:end; gap:11px; border:1px solid var(--line); padding:13px; border-radius:var(--radius); background:var(--panel); margin:22px 0 12px; }
.filter-bar label { display:flex; flex-direction:column; gap:4px; font-size:.85rem; font-weight:750; flex:1 1 180px; }
input[type=search],select { background:var(--page); color:var(--text); border:1px solid var(--line); border-radius:7px; padding:9px 10px; min-height:44px; }
.results { margin:0 0 13px; color:var(--muted); font-size:.85rem; }
.game-title { font-size:clamp(2rem,4vw,3.4rem); margin:9px 0 14px; }
.detail-layout { display:grid; grid-template-columns:minmax(0,1fr) 240px; gap:23px; align-items:start; }
.focus-layout { max-width:1090px; margin-inline:auto; }
.stage { display:flex; flex-direction:column; min-width:0; background:#11151b; color:#fff; overflow:hidden; border:1px solid var(--line); border-radius:var(--radius); }
.frame-slot { aspect-ratio:16/10; position:relative; display:grid; place-items:center; overflow:hidden; }
.stage.portrait .frame-slot { aspect-ratio:auto; height:min(76svh,640px); min-height:340px; }
.frame-slot iframe { width:100%; height:100%; border:0; position:absolute; inset:0; }
.frame-slot > .player-cover { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; filter:brightness(.57); }
.player-intro { z-index:1; display:grid; justify-items:center; text-align:center; gap:7px; padding:14px; }
.player-intro small { font-size:.83rem; color:#f3f3f3; text-shadow:0 1px 4px black; }
.player-bar { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:10px; flex-wrap:wrap; background:var(--panel); color:var(--text); }
.player-status { font-size:.85rem; color:var(--muted); flex:1 0 205px; }
.player-actions { display:flex; flex-wrap:wrap; gap:7px; }
.player-actions .btn { padding:8px 10px; font-size:.82rem; }
.stage:fullscreen { border:0; border-radius:0; background:#11151b; }
.stage:fullscreen .frame-slot { flex:1; width:100%; height:auto; min-height:0; aspect-ratio:auto; }
.stage:fullscreen .player-bar { padding-bottom:max(10px,env(safe-area-inset-bottom)); }
.game-side,.guide,.policy,.local-section { border:1px solid var(--line); border-radius:var(--radius); background:var(--panel); padding:18px; }
.game-side { display:grid; gap:13px; }
.game-side h2 { font-size:1.2rem; }
.game-side p { font-size:.88rem; color:var(--muted); }
.game-side label { display:grid; gap:5px; font-weight:700; font-size:.84rem; }
.game-side label small { font-weight:400; color:var(--muted); }
.tags { display:flex; flex-wrap:wrap; gap:5px; }
.tags a { border:1px solid var(--line); border-radius:999px; padding:3px 9px; font-size:.75rem; }
.tags a:hover { border-color:var(--accent); }
.guide { margin-top:22px; }
.guide h2,.policy h2,.local-section h2 { font-size:1.32rem; margin-bottom:10px; }
.guide p + h2,.policy p + h2,.policy ul + h2 { margin-top:20px; }
.guide p+p,.policy p+p { margin-top:8px; }
.guide p,.policy p,.policy li { max-width:77ch; }
.guide p,.policy p,.policy li,.local-section p { color:var(--muted); }
.policy { max-width:880px; }
.policy a { color:var(--accent); text-decoration:underline; }
.policy-nav { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 19px; }
.policy-nav a { border:1px solid var(--line); border-radius:7px; padding:8px 12px; background:var(--panel); }
.policy-nav a[aria-current=page] { background:var(--wash); border-color:var(--accent); font-weight:750; }
.policy-layout { display:grid; grid-template-columns:minmax(0,880px) minmax(185px,1fr); align-items:start; gap:18px; }
.policy-layout .policy { padding:clamp(18px,3vw,31px); }
.policy-date { margin-bottom:19px; font-size:.87rem; }
.policy section { scroll-margin-top:12px; }
.policy section + section { border-top:1px solid var(--line); margin-top:21px; padding-top:21px; }
.policy .btn { margin-block:10px 6px; }
.policy-hosts { overflow-wrap:anywhere; }
.policy-contents { border:1px solid var(--line); border-radius:var(--radius); padding:16px; background:var(--panel); }
.policy-contents h2 { font-size:1.12rem; }
.policy-contents ol { padding-left:1.3rem; margin-bottom:0; color:var(--muted); }
.policy-contents li + li { margin-top:6px; }
.policy-contents a:hover { text-decoration:underline; }
@media (max-width:820px) {
  .policy-layout { grid-template-columns:minmax(0,1fr); }
  .policy-contents { grid-row:1; }
}
.local-section { margin:16px 0; }
.local-section .games { margin:12px 0; }
.local-section + .btn { margin-top:4px; }
.ad-slot { width:100%; height:0; min-height:0; padding:0; margin:0; border:0; }
.ad-shell:not([data-filled=true]) { display:none; }
.ad-shell[data-requested=true]:not([data-filled=true]) { display:block; height:0; overflow:hidden; }
.ad-shell[data-filled=true] { text-align:center; padding:15px 0; margin:16px 0; }
.ad-shell[data-filled=true] .ad-slot { height:auto; }
.ad-shell[data-filled=true] .ad-slot > div { margin-inline:auto; }
.ad-shell .ad-caption { display:none; }
.ad-shell[data-filled=true] .ad-caption { display:block; color:var(--muted); font-size:.7rem; margin-bottom:8px; }
.play-ad[data-filled=true] { margin-top:200px; }
@media (max-width:1050px) {
  .wrap { width:calc(100% - 48px); }
  .games.all { grid-template-columns:repeat(5,minmax(0,1fr)); }
  .nav { gap:14px; }
}
@media (max-width:800px) {
  .wrap { width:calc(100% - 36px); }
  .masthead-inner { gap:15px; min-height:67px; flex-wrap:wrap; padding:10px 0; }
  .nav { gap:12px; }
  .nav .nav-extra { display:none; }
  .games.all { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .hero-circuit { grid-template-columns:1fr 1fr; }
  .hero-circuit .hero-side { display:none; }
  .hero-feature { min-height:250px; }
  .detail-layout { grid-template-columns:minmax(0,1fr); }
  .game-side { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .game-side .tags { grid-column:1/-1; }
  .library-layout { grid-template-columns:155px minmax(0,1fr); gap:14px; }
  .library-layout .games { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:560px) {
  .wrap { width:calc(100% - 28px); }
  .masthead-inner { gap:8px; }
  .brand { font-size:18px; }
  .brand img { width:33px; height:33px; }
  .nav { font-size:.82rem; gap:8px; }
  .nav .library-link { padding:6px 9px; }
  .nav .library-link svg { display:none; }
  .home-hero { grid-template-columns:minmax(0,1fr); margin:19px 0 15px; }
  .hero-copy { padding:23px 18px; gap:12px; }
  .hero-feature { min-height:220px; }
  .hero-garage .hero-feature { border-left:0; border-top:4px solid var(--accent); }
  .hero-cabinet { padding:0 9px 9px; }
  .hero-cabinet .hero-feature { margin:0; }
  .hero-parlour,.hero-library,.hero-circuit { padding:8px; }
  .parlour-features { grid-template-columns:1fr; }
  .parlour-features .hero-feature { min-height:185px; }
  .feature-caption { padding:15px; }
  .category-rail { grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; margin-bottom:22px; }
  .category-link { min-height:58px; }
  .games,.games.all { grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
  .section-cabinet .games { grid-template-columns:minmax(0,1fr); }
  .card span { padding:9px; }
  .card strong { font-size:.92rem; }
  .section { margin:22px 0 34px; }
  .section-top { align-items:start; flex-direction:column; gap:6px; }
  .library-layout { grid-template-columns:minmax(0,1fr); }
  .category-rail.compact { display:grid; }
  .category-rail.compact .category-link { margin:0; }
  .footer-inner { flex-direction:column; }
  .player-actions { width:100%; }
}
@media (max-height:500px) and (orientation:landscape) {
  .stage.portrait .frame-slot { height:74svh; min-height:200px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
}
