/* A game is the hero. Actions have hierarchy; reference material is available on demand. */
body[data-game] .entry-panel { background:radial-gradient(ellipse at 15% 30%,color-mix(in srgb,var(--world-accent,var(--game-accent)) 9%,transparent),transparent 65%),#10151f; padding:clamp(18px,4vw,64px); }
body[data-game] .entry-panel .game-entry {
  width:min(1140px,100%); padding:0; gap:0; display:grid; grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);
  background:var(--world-panel,#211c3b); color:var(--world-text,#fff6df); border:1px solid color-mix(in srgb,var(--world-accent,var(--game-accent)) 30%,#303647);
  border-radius:22px; overflow:clip; box-shadow:0 32px 90px #0006; backdrop-filter:none;
}
.entry-visual { margin:0; position:relative; min-height:440px; overflow:hidden; background:#101624; }
.entry-canvas { display:block; width:100%; height:100%; position:absolute; inset:0; }
.entry-visual::after { content:''; position:absolute; inset:0; pointer-events:none; box-shadow:inset 0 0 60px #0002; }
.entry-preview-label { position:absolute; left:20px; top:20px; padding:7px 10px; border:1px solid #ffffff38; border-radius:6px; background:#10151dd9; color:#fff7df; font:600 10px/1.2 var(--font-mono); letter-spacing:.08em; text-transform:uppercase; }
.entry-visual .result-identity { position:absolute; bottom:22px; left:22px; margin:0; z-index:1; }
.entry-visual .game-logo { width:48px; height:48px; box-shadow:0 6px 22px #0008; }
.entry-copy { padding:clamp(24px,3.4vw,48px); display:flex; flex-direction:column; gap:18px; min-width:0; justify-content:center; }
body[data-game] .entry-copy .entry-kicker { margin:0; color:var(--world-muted,#c5bdd5); font:600 11px/1.5 var(--font-mono); letter-spacing:.13em; text-transform:uppercase; }
body[data-game] .entry-copy h2 { font-size:clamp(30px,3.5vw,48px); line-height:1.08; letter-spacing:-.025em; color:var(--world-text,#fff6df); }
.entry-copy p { margin:0; }
body[data-game] .entry-copy .entry-hook { color:var(--world-muted,#c5bdd5); font:400 16px/1.65 var(--font-body); }
body[data-game] .entry-copy .entry-controls { font:600 13px/1.6 var(--font-body); color:var(--world-text,#fff6df); }
body[data-game] .entry-copy .game-support { font-size:12px; color:var(--world-muted,#c5bdd5); }
.entry-actions { gap:12px; align-items:center; flex-wrap:wrap; }
body[data-game] .entry-actions .entry-play { min-height:56px; padding:15px 28px; font:800 17px/1.3 var(--font-body); border-radius:10px; }
.entry-play::before,.open-game-play::before { content:'▶'; font-size:.7em; display:inline-block; margin-right:12px; }
.entry-actions .status { flex-basis:100%; font-size:12px; }
.entry-actions .linkbtn { margin-left:auto; }
body[data-game] .entry-guide { color:var(--world-text,#fff6df); font:400 14px/1.7 var(--font-body); border-top:1px solid color-mix(in srgb,var(--world-text,#fff6df) 15%,transparent); }
.entry-guide summary,.entry-scores summary { min-height:44px; display:flex; align-items:center; cursor:pointer; font:600 13px/1.5 var(--font-body); list-style:none; gap:12px; }
.entry-guide summary::after,.entry-scores summary::after { content:'+'; margin-left:auto; font:400 20px/1 var(--font-body); }
.entry-guide[open] summary::after,.entry-scores[open] summary::after { content:'−'; }
.entry-guide summary::-webkit-details-marker,.entry-scores summary::-webkit-details-marker { display:none; }
body[data-game] .entry-copy .entry-instructions { font:400 14px/1.7 var(--font-body); color:var(--world-muted,#c5bdd5); margin:5px 0 12px; }
.entry-copy .modes { margin:0; }
.entry-extras { grid-column:1/-1; min-width:0; }
.entry-extras:empty { display:none; }
.entry-extras .intro-market:not([hidden]),.entry-scores { margin:0; padding:16px 26px; background:#101426; color:#ece8f4; border:0; border-top:1px solid #ffffff1f; }
.entry-scores summary { color:#ece8f4; }
.entry-scores .board { margin:8px 0 0; }
.entry-scores:not([open]) { padding-block:3px; }
/* Matchmaking keeps its distinct, honest set of alternatives. */
body[data-game="online-boxing"] #pBoxing .game-entry { background:#112a39; border-color:#47616c; }
#pBoxing .entry-visual { min-height:600px; }
#pBoxing .entry-copy { gap:14px; }
#pBoxing .entry-copy .boxing-options { display:grid; }
#pBoxing .entry-copy #boxQueue { grid-column:1/-1; }
#pBoxing .entry-copy .boxing-options .btn { min-height:48px; }
#pBoxing .entry-copy .fine { font-size:13px; }
#pBoxing .entry-copy>details summary { min-height:44px; }
/* The imported games have a proper entry, then give the whole stage to the game. */
body:is([data-game="progress-knight"],[data-game="a-dark-room"]) #pOpenGame {
  --entry-ink:#f7edd9; --entry-muted:#b6c8bc; --entry-accent:#e7c781; --entry-surface:#102c25; --entry-line:#9bb39235;
  display:grid; align-items:safe center; padding:clamp(18px,4vw,64px); background:radial-gradient(ellipse at 20% 20%,#36593b66,transparent 60%),#091b18; color:var(--entry-ink);
}
body[data-game="a-dark-room"] #pOpenGame { --entry-ink:#f5eddd; --entry-muted:#c5bdaf; --entry-accent:#f1be83; --entry-surface:#252721; --entry-line:#d8c8a935; background:#141713; }
body:is([data-game="progress-knight"],[data-game="a-dark-room"]) #pOpenGame .open-game-shell {
  width:min(1200px,100%); max-width:1200px; margin:0 auto; padding:0; background:var(--entry-surface); color:var(--entry-ink);
  border:1px solid var(--entry-line); border-radius:20px; box-shadow:0 32px 100px #0006; min-width:0;
}
.open-game-entry { display:grid; grid-template-columns:minmax(0,1.14fr) minmax(0,1fr); }
.open-game-cover { margin:0; min-height:520px; position:relative; overflow:hidden; border-radius:20px 0 0 0; background:#20382b; }
.open-game-cover img { display:block; width:100%; height:100%; position:absolute; object-fit:cover; object-position:58% center; }
.open-game-cover::after { content:''; position:absolute; inset:60% 0 0; background:linear-gradient(transparent,#061b15d9); pointer-events:none; }
.open-game-cover figcaption { position:absolute; bottom:20px; left:22px; right:22px; z-index:1; color:#fff5df; font:500 12px/1.5 var(--font-body); text-shadow:0 1px 3px #000; }
.open-game-copy { padding:clamp(28px,4vw,56px); display:flex; flex-direction:column; justify-content:center; align-items:flex-start; gap:22px; min-width:0; }
.open-game-copy .entry-kicker { color:var(--entry-accent); font:600 11px/1.5 var(--font-mono); text-transform:uppercase; letter-spacing:.16em; margin:0; }
body[data-game] #pOpenGame #openGameTitle { display:block; margin:0; color:var(--entry-ink); font:400 clamp(36px,4.5vw,62px)/1.04 Georgia,serif; letter-spacing:-.035em; text-wrap:balance; }
.open-game-pitch { font:400 16px/1.7 var(--font-body); margin:0; color:var(--entry-muted); max-width:36ch; }
.open-game-facts { display:flex; flex-wrap:wrap; gap:8px 18px; color:var(--entry-ink); font:600 11px/1.5 var(--font-body); }
.open-game-facts span+span::before { content:'·'; margin-right:14px; color:var(--entry-accent); }
body[data-game] #pOpenGame .open-game-play { min-height:58px; padding:16px 26px; border:1px solid #fff0bb; border-radius:9px; background:linear-gradient(140deg,#f6df9f,#ddb66b); color:#202b22; font:800 17px/1.4 var(--font-body); box-shadow:0 4px 0 #806139,0 8px 28px #e8c27918; }
body[data-game] #pOpenGame .open-game-play:disabled { background:#385347; border-color:#719381; color:#c6d3c4; box-shadow:none; }
#pOpenGame .open-game-save { margin:-8px 0 0; color:var(--entry-muted); font:400 12px/1.6 var(--font-body); }
#pOpenGame .open-game-byline { margin:5px 0 0; color:var(--entry-muted); font:400 12px/1.6 var(--font-body); }
.open-game-tools { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:8px 24px; border-top:1px solid var(--entry-line); position:relative; }
.open-game-tools a,.open-game-about summary { min-height:44px; display:inline-flex; align-items:center; font:600 12px/1.4 var(--font-body); color:var(--entry-ink); text-decoration:none; cursor:pointer; }
.open-game-tools>a:hover { text-decoration:underline; }
.open-game-about { min-width:0; }
.open-game-about summary { gap:12px; list-style:none; }
.open-game-about summary::before { content:'+'; color:var(--entry-accent); font-size:20px; }
.open-game-about[open] summary::before { content:'−'; }
.open-game-about summary::-webkit-details-marker { display:none; }
.open-game-notes { position:absolute; left:0; right:0; top:100%; padding:22px 26px; z-index:6; color:var(--entry-ink); background:var(--entry-surface); border:1px solid var(--entry-line); border-radius:0 0 16px 16px; box-shadow:0 22px 45px #0005; max-height:45dvh; overflow:auto; }
.open-game-notes p { font:400 14px/1.65 var(--font-body); color:var(--entry-muted); margin:0 0 16px; }
.open-game-links { display:flex; flex-wrap:wrap; gap:4px 22px; }
body:is([data-game="progress-knight"],[data-game="a-dark-room"]) #pOpenGame .open-game-links a { color:var(--entry-accent); font-size:13px; }
.open-game-session { color:var(--entry-muted); font:500 12px/1.5 var(--font-body); margin-right:auto; }
body[data-game] #pOpenGame[data-mode="play"] { padding:0; display:block; overflow:hidden; }
body[data-game] #pOpenGame .open-game-shell[data-mode="play"] { width:100%; height:100%; max-width:none; border:0; border-radius:0; display:grid; grid-template-rows:auto minmax(0,1fr); }
body[data-game] #pOpenGame #openGameArea { margin:0; min-height:0; border-radius:0; overflow:hidden; }
body[data-game] #pOpenGame #openGameArea iframe { height:100%; min-height:0; width:100%; border:0; }
body[data-game] #pOpenGame :is(button,a,summary):focus-visible { outline:3px solid var(--entry-accent); outline-offset:4px; }
@media(max-width:760px) {
  body[data-game] .entry-panel { padding:14px; align-items:start; }
  body[data-game] .entry-panel .game-entry { grid-template-columns:minmax(0,1fr); border-radius:16px; }
  .entry-visual,#pBoxing .entry-visual { min-height:0; height:180px; }
  .entry-preview-label { left:14px; top:14px; font-size:9px; }
  .entry-visual .result-identity { left:auto; right:14px; bottom:14px; }
  .entry-visual .game-logo { width:38px; height:38px; }
  .entry-copy { padding:24px 22px; gap:14px; }
  body[data-game] .entry-copy h2 { font-size:30px; }
  body[data-game] .entry-copy .entry-hook { font-size:15px; }
  .entry-actions .entry-play { flex:1; }
  .entry-actions .status { order:3; }
  .entry-extras .intro-market:not([hidden]),.entry-scores { padding-inline:20px; }
  body:is([data-game="progress-knight"],[data-game="a-dark-room"]) #pOpenGame { padding:14px; align-items:start; }
  .open-game-entry { grid-template-columns:minmax(0,1fr); }
  .open-game-cover { min-height:0; height:220px; border-radius:20px 20px 0 0; }
  .open-game-cover img { object-position:center 45%; }
  .open-game-cover figcaption { bottom:14px; left:18px; font-size:10px; }
  .open-game-copy { padding:26px 24px; gap:18px; }
  body[data-game] #pOpenGame #openGameTitle { font-size:40px; max-width:15ch; }
  .open-game-pitch { font-size:15px; }
  body[data-game] #pOpenGame .open-game-play { width:100%; }
  .open-game-tools { padding-inline:18px; gap:12px; }
  .open-game-session { display:none; }
  .open-game-notes { position:static; padding:12px 0; border:0; box-shadow:none; max-height:none; }
  .open-game-tools:has(.open-game-about[open]) { display:block; }
}
@media(max-height:550px) and (min-width:761px) {
  body[data-game] .entry-panel { align-items:start; padding:16px; }
}
@media(prefers-reduced-motion:no-preference) {
  .entry-play,.open-game-play { transition:transform .16s,box-shadow .16s; }
  .entry-play:hover,.open-game-play:hover { transform:translateY(-1px); }
}
@media(forced-colors:active) {
  body[data-game] .entry-panel .game-entry,body[data-game] #pOpenGame .open-game-shell { border:1px solid CanvasText; }
  body[data-game] #pOpenGame .open-game-play { color:ButtonText; background:ButtonFace; border-color:ButtonText; }
  .entry-preview-label,.open-game-cover figcaption { color:CanvasText; background:Canvas; text-shadow:none; }
}
/* A deliberate visual vocabulary for each native world, including the older cabinets. */
body[data-game="lane"]{--world-panel:#13283df5;--world-text:#e9f3ee;--world-muted:#b6c9d5;--world-accent:#f0c471;--world-font:var(--font-mono)}
body[data-game="glider"]{--world-panel:#163b49f5;--world-text:#fff2d4;--world-muted:#c0d8d6;--world-accent:#f4d08e;--world-font:Georgia,serif}
body[data-game="puffin"]{--world-panel:#442b36f5;--world-text:#fff0d5;--world-muted:#e4bcc1;--world-accent:#ffc6a0;--world-font:'Trebuchet MS',sans-serif}
body[data-game="hop"]{--world-panel:#2d3449f5;--world-text:#f7eed3;--world-muted:#c4c9d6;--world-accent:#e8d18d;--world-font:'Trebuchet MS',sans-serif}
body[data-game="spells"]{--world-panel:#302640f5;--world-text:#ffedda;--world-muted:#d8bed9;--world-accent:#d4b3fa;--world-font:Georgia,serif}
body[data-game="pew"]{--world-panel:#142b39f5;--world-text:#f5ecd7;--world-muted:#b4d2d6;--world-accent:#f8d789;--world-font:var(--font-mono)}
body[data-game="notes"]{--world-panel:#f0e7d4f5;--world-text:#25364c;--world-muted:#465b65;--world-accent:#e9bd6b;--world-font:Georgia,serif}
body[data-game="drag"]{--world-panel:#38242bf5;--world-text:#ffe7cf;--world-muted:#dfb9ba;--world-accent:#ffa883;--world-font:Impact,sans-serif}
body[data-game="colors"]{--world-panel:#fff0d6f5;--world-text:#243644;--world-muted:#53606a;--world-accent:#f5bdca;--world-font:'Trebuchet MS',sans-serif}
body[data-game="rope"]{--world-panel:#23352ef5;--world-text:#faf0ca;--world-muted:#bfd1ba;--world-accent:#e9d783;--world-font:Georgia,serif}
body[data-game="bubble"]{--world-panel:#123a44f5;--world-text:#e3f9ed;--world-muted:#b5d4d7;--world-accent:#b2edd7;--world-font:'Trebuchet MS',sans-serif}
body[data-game="lanterns"]{--world-panel:#302b32f5;--world-text:#ffebcc;--world-muted:#ddc4b6;--world-accent:#f2c88c;--world-font:Georgia,serif}
body[data-game="chop"]{--world-panel:#282b49f5;--world-text:#fff0d9;--world-muted:#c6c9e2;--world-accent:#e8c46c;--world-font:'Arial Black',sans-serif}
body[data-game="robot"]{--world-panel:#19343df5;--world-text:#e0f4ed;--world-muted:#b5d2d5;--world-accent:#a6dedb;--world-font:var(--font-mono)}
body[data-game="math"]{--world-panel:#f2ecd7f5;--world-text:#243c38;--world-muted:#52695f;--world-accent:#d5c688;--world-font:'Trebuchet MS',sans-serif}
body[data-game="mask"]{--world-panel:#493044f5;--world-text:#fff0df;--world-muted:#e6bfd9;--world-accent:#fac1dc;--world-font:Georgia,serif}
body[data-game="munch"]{--world-panel:#233e33f5;--world-text:#f5efca;--world-muted:#c4d5b5;--world-accent:#bee9ad;--world-font:'Trebuchet MS',sans-serif}
body[data-game="pilot"]{--world-panel:#152c3df5;--world-text:#e6f5fc;--world-muted:#b3d0de;--world-accent:#a9d9ef;--world-font:var(--font-mono)}
body[data-game="point"]{--world-panel:#372c40f5;--world-text:#ffe8e6;--world-muted:#dac2dc;--world-accent:#f1b9d6;--world-font:Impact,sans-serif}
body[data-game="dragon"]{--world-panel:#422c25f5;--world-text:#fff0d7;--world-muted:#e1c4b3;--world-accent:#ffc58d;--world-font:Georgia,serif}
body[data-game="captain"]{--world-panel:#163b4bf5;--world-text:#fff1cd;--world-muted:#c2d9d9;--world-accent:#e9cd87;--world-font:Georgia,serif}
body[data-game="shoutoff"]{--world-panel:#312c3cf5;--world-text:#fff0d4;--world-muted:#d5c1d6;--world-accent:#e9c47c;--world-font:Impact,sans-serif}
body[data-game="pong"]{--world-panel:#143b37f5;--world-text:#e9f8dd;--world-muted:#bfd6c5;--world-accent:#d8e79b;--world-font:var(--font-mono)}
body[data-game="tide-dash"]{--world-panel:#fff0d0f5;--world-text:#174b56;--world-muted:#3b6067;--world-accent:#f4d28d;--world-font:Georgia,serif;--world-radius:18px}
body[data-game="flux-parry"]{--world-panel:#103332f5;--world-text:#dff9e9;--world-muted:#bbd1c4;--world-accent:#9ce9dd;--world-font:var(--font-mono);--world-radius:6px}
body[data-game="lantern-keeper"]{--world-panel:#31252df5;--world-text:#ffebd0;--world-muted:#dec6c1;--world-accent:#ffd1a1;--world-font:Georgia,serif;--world-radius:12px}
body[data-game="glacier-glide"]{--world-panel:#dff5fcf5;--world-text:#183e54;--world-muted:#355d6f;--world-accent:#f3d391;--world-font:'Trebuchet MS',sans-serif;--world-radius:16px}
body[data-game="aurora-weave"]{--world-panel:#15363af5;--world-text:#dcfff0;--world-muted:#b9d8cd;--world-accent:#a2f0cc;--world-font:Georgia,serif;--world-radius:20px}
body[data-game] .entry-copy h2{font-family:var(--world-font,var(--font-display))}
body[data-game] .entry-copy .ai-status{color:var(--world-text,#fff6df);font:500 12px/1.6 var(--font-body);background:color-mix(in srgb,var(--world-text,#fff6df) 5%,transparent);padding:10px 12px;border-radius:8px}
body[data-game] .entry-copy :is(.status,.fine){color:var(--world-muted,#c5bdd5)}
/* Lite mode removes costly glass; it must preserve each world's opaque palette. */
html.lite body[data-game] .entry-panel .game-entry{background:var(--world-panel,#211c3b)}
