/* ============================================================
   memoryglyph — the observatory. GENERATED by tools/gen-worlds.py; edit the spec
   there, not this file.

   Tokens for both themes, then the game's own --me-<role> tokens
   re-pointed at them. Shared scaffolding (card, board, cells, buttons,
   readouts) is in lib/gv-world.css and reads these same tokens.
   ============================================================ */

:root body.gv-world{
  --w-font: 'Orbitron', 'Outfit', system-ui, sans-serif;
  --w-radius: 20px;
  --w-bg-0: #04061a;
  --w-bg-1: #080c28;
  --w-bg-2: #0d1338;
  --w-bg-3: #141b48;
  --w-edge-hi: rgba(255,255,255,.08);
  --w-edge-lo: rgba(0,0,0,.55);
  --w-ink: #eef0ff;
  --w-dim: #9ea6d6;
  --w-accent: #9d7bff;
  --w-accent-hi: #d6c8ff;
  --w-accent-lo: #5a3fc0;
  --w-accent-ink: #ffffff;
  --w-accent-text: #bda6ff;
  --w-fill-tint: #ffffff;
  --w-good: #5ee8a8;
  --w-good-text: #5ee8a8;
  --w-bad: #ff6b8a;
  --w-bad-text: #ff9ab0;
  --w-warn: #ffd36b;
  --w-warn-text: #ffd36b;
  --w-blue: #5aa8ff;
  --w-violet: #9d7bff;
  --w-line: rgba(157,123,255,.32);
  --w-line-soft: rgba(157,123,255,.14);
  --w-glow: rgba(157,123,255,.5);
  --w-glow-soft: rgba(157,123,255,.15);
  --w-drop: rgba(0,0,0,.55);
  --w-glow-scale: 1;
  --w-cell: #121a4a;
  --w-cell-hi: #1b2660;
  --w-cell-lo: #0a1030;
  --w-cell-br: #3a4a9a;
  --w-cell-ink: #eef0ff;
  --w-hole: rgba(0,0,0,.45);
  --w-texture: radial-gradient(rgba(255,255,255,.35) 1px, transparent 1.5px) 13px 7px / 97px 83px, radial-gradient(rgba(255,255,255,.35) 0.8px, transparent 1.3px) 41px 53px / 71px 59px, radial-gradient(rgba(255,255,255,.35) 1.2px, transparent 1.8px) 67px 29px / 131px 109px;
  --w-fill-a: #5a3fc0;
  --w-fill-b: #5a3fc0;
}

:root[data-theme="light"] body.gv-world{
  --w-bg-0: #dfe2f5;
  --w-bg-1: #ecefFa;
  --w-bg-2: #f4f6fd;
  --w-bg-3: #ffffff;
  --w-edge-hi: rgba(255,255,255,.9);
  --w-edge-lo: rgba(20,16,8,.14);
  --w-ink: #141b48;
  --w-dim: #4f5a8c;
  --w-accent: #5a3fc0;
  --w-accent-hi: #c9b8ff;
  --w-accent-lo: #3a2690;
  --w-accent-ink: #ffffff;
  --w-accent-text: #4a30a8;
  --w-fill-tint: #0b0f14;
  --w-good: #1a9d54;
  --w-good-text: #0f6b3a;
  --w-bad: #c8402e;
  --w-bad-text: #a3301f;
  --w-warn: #c98a10;
  --w-warn-text: #7a5008;
  --w-blue: #2a63d8;
  --w-violet: #5a3fc0;
  --w-line: rgba(90,63,192,.34);
  --w-line-soft: rgba(90,63,192,.15);
  --w-glow: rgba(90,63,192,.3);
  --w-glow-soft: rgba(90,63,192,.12);
  --w-drop: rgba(20,16,8,.16);
  --w-glow-scale: 0.5;
  --w-cell: #ffffff;
  --w-cell-hi: #ffffff;
  --w-cell-lo: #e6e9f7;
  --w-cell-br: #a9b1dc;
  --w-cell-ink: #141b48;
  --w-hole: rgba(20,27,72,.07);
  --w-texture: radial-gradient(rgba(90,63,192,.14) 1px, transparent 1.5px) 13px 7px / 97px 83px, radial-gradient(rgba(90,63,192,.14) 0.8px, transparent 1.3px) 41px 53px / 71px 59px, radial-gradient(rgba(90,63,192,.14) 1.2px, transparent 1.8px) 67px 29px / 131px 109px;
  --w-fill-a: #5a3fc0;
  --w-fill-b: #3a2690;
}

/* ---- the game's own roles, in this world ---- */
:root body.gv-world{
  --mgAccent: var(--w-accent);
  --mgBadBorder: color-mix(in srgb, var(--w-bad) 62%, transparent);
  --mgCardBg2: linear-gradient(180deg, var(--w-bg-3), var(--w-bg-1));
  --mgTileBg: var(--w-cell);
  --mgTileBorder: var(--w-cell-br);
  --mgTileInset: color-mix(in srgb, var(--w-accent) 12%, transparent);
}
:root[data-theme="light"] body.gv-world{
  --mgAccent: var(--w-accent);
  --mgBadBorder: color-mix(in srgb, var(--w-bad) 62%, transparent);
  --mgCardBg2: linear-gradient(180deg, var(--w-bg-3), var(--w-bg-1));
  --mgTileBg: var(--w-cell);
  --mgTileBorder: var(--w-cell-br);
  --mgTileInset: color-mix(in srgb, var(--w-accent) 10%, transparent);
}

/* ---- the observatory ---- */
:root body.gv-world .gvArcCell{ border-radius: 50%; }

/* ---- carried over from the game's earlier skin, re-pointed ---- */
/* A memory game is all about the flip — the reveal is the moment, and a
   matched pair should stay visibly banked. */
:root body.gv-world .mgBtn{
  border: 1px solid var(--w-line);
  color: var(--w-ink);
  transition: transform .12s ease, box-shadow .2s ease, border-color .2s ease;
}
:root body.gv-world .mgBtn:active{ transform: scale(.94); }
:root body.gv-world .mgBtn.primary,
:root body.gv-world .mgCtaBtn.primary{
  background: linear-gradient(180deg, var(--w-fill-a), var(--w-fill-b));
  border-color: transparent;
  color: var(--w-accent-ink);
  font-weight: 900;
  box-shadow: 0 0 24px color-mix(in srgb, var(--w-accent) calc(42% * var(--w-glow-scale)), transparent);
}
:root body.gv-world .mgVal{
  color: var(--w-accent-text);
  font-weight: 900;
  text-shadow: 0 0 14px color-mix(in srgb, var(--w-accent) calc(90% * var(--w-glow-scale)), transparent);
}
