/* ============================================================================
   NEON CABINET — GeekPress GAME theme · FOUNDATION (geekui-vars.css)
   ----------------------------------------------------------------------------
   Loaded on EVERY GeekPress context alongside the per-context skin. Holds:
     1. the full --geekui-* token contract (dark + light)
     2. global CRT base (scan-line overlay, grid, focus, scrollbar)
     3. cross-context shared chrome (buttons, chips, badges, inputs, posters,
        info cards, cast, gallery, video/trailer tiles, profile head)
     4. the signature PIXEL-FRAME motif (chunky neon border + hard offset drop)

   CONCEPT — "NEON CABINET": a 1980s arcade cabinet brought to the web. Chunky
   pixel/neon frames, CRT scan-lines + bloom, hot-magenta on deep violet-black,
   electric-purple secondary, and "HIGH SCORE" pixel type (Press Start 2P) on
   scores, ranks and kickers. Bungee carries the signage titles; Chivo the body;
   DM Mono the data read-outs. Page-private tokens are namespaced --arc-*.
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Bungee&family=Chivo:wght@400;500;700;900&family=DM+Mono:wght@400;500&family=Press+Start+2P&display=swap');

/* ----------------------------------------------------------------------------
   THE CONTRACT — DARK (default)
   -------------------------------------------------------------------------- */
:root,
:root[data-theme="dark"],
body[data-theme="dark"]{
  --geekui-bg:            #0c0814;
  --geekui-bg-2:          #140d22;
  --geekui-surface:       #170f2a;
  --geekui-surface-2:     rgba(255,46,196,.10);
  --geekui-border:        rgba(255,46,196,.28);
  --geekui-border-strong: rgba(255,46,196,.62);
  --geekui-text:          #f6ecff;
  --geekui-text-dim:      #c3aede;
  --geekui-text-mute:     #8a7caa;
  --geekui-accent:        #ff2ec4;
  --geekui-accent-2:      #b15cff;
  --geekui-accent-d:      #c8179a;
  --geekui-accent-ink:    #18021c;
  --geekui-success:       #45f0a0;
  --geekui-warning:       #ffd23c;
  --geekui-danger:        #ff4d6d;
  --geekui-card-radius:   0px;
  --geekui-radius:        0px;
  --geekui-radius-lg:     0px;
  --geekui-card-shadow:        4px 4px 0 rgba(0,0,0,.55);
  --geekui-card-hover-shadow:  7px 7px 0 var(--geekui-accent-d), 0 0 22px rgba(255,46,196,.35);
  --geekui-glow:          0 0 16px rgba(255,46,196,.55);
  --geekui-hero-fade:     linear-gradient(0deg, var(--geekui-bg) 5%, rgba(12,8,20,.35) 50%, transparent);
  --geekui-hero-tint:     rgba(12,8,20,.45);
  --geekui-hero-text-shadow: 0 0 18px rgba(255,46,196,.55), 0 2px 2px rgba(0,0,0,.6);
  --geekui-modal-bg:      #170f2a;
  --geekui-modal-text:    #f6ecff;
  --geekui-font-base:     'Chivo', system-ui, sans-serif;
  --geekui-font-title:    'Bungee', 'Chivo', sans-serif;
  --geekui-font-mono:     'DM Mono', ui-monospace, monospace;
  /* rating tones */
  --geekui-tone-exceptional: #45f0a0;
  --geekui-tone-great:       #2ce4ff;
  --geekui-tone-good:        #ffe14d;
  --geekui-tone-mixed:       #ff9f3c;
  --geekui-tone-poor:        #ff4d6d;
  --geekui-tone-muted:       #8a7caa;
  /* page-private arcade tokens */
  --arc-pixel:    'Press Start 2P', monospace;
  --arc-cyan:     #2ce4ff;
  --arc-yellow:   #ffe14d;
  --arc-scanline: rgba(0,0,0,.32);
  --arc-grid:     rgba(255,46,196,.05);
  --arc-frame:    var(--geekui-border-strong);
  --arc-marquee:  linear-gradient(90deg, var(--geekui-accent), var(--geekui-accent-2), var(--arc-cyan), var(--geekui-accent));
  --arc-bevel:    inset 0 0 0 1px rgba(255,255,255,.06);
}

/* ----------------------------------------------------------------------------
   THE CONTRACT — LIGHT ("daytime arcade")
   -------------------------------------------------------------------------- */
body[data-theme="light"]{
  --geekui-bg:            #f3eef9;
  --geekui-bg-2:          #fbf7ff;
  --geekui-surface:       #ffffff;
  --geekui-surface-2:     rgba(193,31,154,.08);
  --geekui-border:        rgba(193,31,154,.24);
  --geekui-border-strong: rgba(193,31,154,.52);
  --geekui-text:          #1c0f24;
  --geekui-text-dim:      #463350;
  --geekui-text-mute:     #6e5a7a;
  --geekui-accent:        #c81f9a;
  --geekui-accent-2:      #7d2ed6;
  --geekui-accent-d:      #99166f;
  --geekui-accent-ink:    #fff0fb;
  --geekui-success:       #1ba368;
  --geekui-warning:       #b87900;
  --geekui-danger:        #d12647;
  --geekui-card-shadow:        4px 4px 0 rgba(60,30,80,.18);
  --geekui-card-hover-shadow:  7px 7px 0 var(--geekui-accent-d), 0 0 18px rgba(200,31,154,.22);
  --geekui-glow:          0 0 14px rgba(200,31,154,.3);
  --geekui-hero-fade:     linear-gradient(0deg, rgba(18,8,26,.9) 5%, rgba(18,8,26,.34) 48%, transparent);
  --geekui-hero-tint:     rgba(18,8,26,.24);
  --geekui-hero-text-shadow: 0 0 16px rgba(255,46,196,.5), 0 2px 2px rgba(0,0,0,.5);
  --geekui-modal-bg:      #ffffff;
  --geekui-modal-text:    #1c0f24;
  --geekui-tone-exceptional: #1ba368;
  --geekui-tone-great:       #1597a0;
  --geekui-tone-good:        #b87900;
  --geekui-tone-mixed:       #c2631a;
  --geekui-tone-poor:        #d12647;
  --geekui-tone-muted:       #6e5a7a;
  --arc-cyan:     #1597a0;
  --arc-yellow:   #b87900;
  --arc-scanline: rgba(80,40,100,.07);
  --arc-grid:     rgba(193,31,154,.06);
  --arc-bevel:    inset 0 0 0 1px rgba(0,0,0,.04);
}

/* ============================================================================
   GLOBAL CRT BASE
   ========================================================================== */
body{
  background-color:var(--geekui-bg);
  background-image:
    radial-gradient(120% 80% at 50% 0%, rgba(177,92,255,.12), transparent 60%),
    linear-gradient(var(--arc-grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--arc-grid) 1px, transparent 1px);
  background-size:auto, 40px 40px, 40px 40px;
  background-attachment:fixed;
}
/* full-screen scan-line + bloom overlay — the CRT signature */
body::after{
  content:""; position:fixed; inset:0; z-index:9999; pointer-events:none;
  background:
    repeating-linear-gradient(0deg, transparent 0 2px, var(--arc-scanline) 2px 4px),
    radial-gradient(130% 130% at 50% 50%, transparent 62%, rgba(0,0,0,.4));
  mix-blend-mode:multiply;
}
body[data-theme="light"]::after{ mix-blend-mode:normal; opacity:.55; }

h1,h2,h3,h4{ letter-spacing:0; }
::selection{ background:var(--geekui-accent); color:var(--geekui-accent-ink); }
:focus-visible{ outline:2px solid var(--arc-cyan); outline-offset:2px; }

*::-webkit-scrollbar{ width:13px; height:13px; }
*::-webkit-scrollbar-track{ background:var(--geekui-bg-2); }
*::-webkit-scrollbar-thumb{ background:var(--geekui-accent); border:3px solid var(--geekui-bg-2); }
*::-webkit-scrollbar-thumb:hover{ background:var(--geekui-accent-2); }

/* ----------------------------------------------------------------------------
   SIGNATURE PIXEL-FRAME — chunky neon border + hard offset drop + bevel
   -------------------------------------------------------------------------- */
.geekui-info-card,
.gx-age-card,
.geekui-profile-head,
.gxg-box, .gxr-box,
.gxf-side,
.geekui-critic-card,
.geekui-episode-card,
.gxcm-meta__card,
.gxl-card,
.geekui-list-cover-container,
.gxen-row, .gxf-row, .gxpl-info-card,
.geekui-game-profile-status-board-items{
  border:2px solid var(--geekui-border-strong);
  box-shadow:var(--geekui-card-shadow), var(--arc-bevel);
  background-image:linear-gradient(180deg, rgba(255,46,196,.05), transparent 42%);
}

/* ============================================================================
   SHARED CHROME
   ========================================================================== */
/* arcade button — chunky, hard-edged, presses down on click */
.geekui-btn{
  position:relative; flex:none; white-space:nowrap;
  font-family:var(--geekui-font-title); font-weight:400;
  text-transform:uppercase; letter-spacing:.02em; font-size:12px;
  padding:12px 20px; border-radius:0;
  background:var(--geekui-accent); color:var(--geekui-accent-ink);
  border:2px solid #000; box-shadow:4px 4px 0 var(--geekui-accent-d);
  transition:transform .08s, box-shadow .08s, background .15s;
}
.geekui-btn:hover{ transform:translate(-1px,-1px); box-shadow:5px 5px 0 var(--geekui-accent-d), var(--geekui-glow); background:var(--geekui-accent); }
.geekui-btn:active{ transform:translate(4px,4px); box-shadow:0 0 0 var(--geekui-accent-d); }
.geekui-btn--ghost{
  background:transparent; color:var(--geekui-accent);
  border:2px solid var(--geekui-border-strong); box-shadow:4px 4px 0 rgba(0,0,0,.4);
}
.geekui-btn--ghost:hover{ background:var(--geekui-surface-2); border-color:var(--geekui-accent); color:var(--geekui-text); box-shadow:5px 5px 0 rgba(0,0,0,.4); }

/* chips = arcade tokens */
.geekui-chip{
  border-radius:0; font-family:var(--geekui-font-mono); font-weight:500;
  font-size:11px; letter-spacing:.04em; text-transform:uppercase;
  background:var(--geekui-surface-2); border:2px solid var(--geekui-border-strong); color:var(--geekui-text-dim);
}
.geekui-chip--accent{ color:var(--geekui-accent); border-color:var(--geekui-accent); background:color-mix(in srgb, var(--geekui-accent) 14%, transparent); }

/* eyebrow / kickers in pixel type */
.geekui-eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--arc-pixel); font-size:9px; line-height:1.6; letter-spacing:0; color:var(--geekui-accent-2);
  text-shadow:0 0 10px rgba(177,92,255,.6);
}
.geekui-eyebrow::before{ content:"\25B6"; color:var(--geekui-accent); font-family:var(--geekui-font-base); }

/* section titles — marquee bar + neon glow */
.geekui-section-title,
.geekui-critics-heading,
.geekui-front-videos-header{
  display:flex; align-items:center; gap:12px; text-transform:uppercase;
  text-shadow:0 0 16px rgba(255,46,196,.35);
}
.geekui-section-title::before,
.geekui-critics-heading::before,
.geekui-front-videos-header::before{
  content:""; width:18px; height:.8em; flex:none;
  background:var(--arc-marquee); background-size:200% 100%; box-shadow:var(--geekui-glow);
  animation:arc-marquee 3s linear infinite;
}
@keyframes arc-marquee{ to{ background-position:200% 0; } }

/* rating badge — HIGH SCORE plate */
.geekui-rating-badge{
  border-radius:0; font-family:var(--arc-pixel); font-size:13px; letter-spacing:0;
  padding:8px 12px; background:#000; border:2px solid var(--geekui-accent);
  color:var(--arc-yellow); text-shadow:0 0 8px rgba(255,225,77,.7); box-shadow:var(--geekui-glow);
}
.geekui-rating-badge small{ font-family:var(--geekui-font-mono); color:var(--geekui-text-mute); text-shadow:none; }

/* inputs — terminal entry fields */
.geekui-form input, .geekui-form textarea, .geekui-form select,
.gxg-field input, .gxr-field input, .gxl-search input,
.geekui-catalog-searchbar input{
  border-radius:0; font-family:var(--geekui-font-mono); font-size:14px;
  border:2px solid var(--geekui-border-strong); background:var(--geekui-bg-2); color:var(--geekui-text);
}
.geekui-form input:focus, .gxg-field input:focus, .gxr-field input:focus,
.gxl-search input:focus, .geekui-catalog-searchbar input:focus{
  outline:none; border-color:var(--arc-cyan); box-shadow:0 0 0 2px rgba(44,228,255,.4), var(--geekui-glow);
}

/* poster placeholder — CRT scan + neon edge */
.gp-poster{
  border:2px solid var(--geekui-border-strong);
  background-image:
    linear-gradient(135deg, var(--geekui-surface-2), var(--geekui-bg-2)),
    repeating-linear-gradient(0deg, transparent 0 3px, var(--arc-scanline) 3px 4px);
}

/* info card */
.geekui-info-card h4{ font-family:var(--arc-pixel); font-size:9px; letter-spacing:0; color:var(--geekui-accent-2); }
.geekui-info-card h4::before{ content:"\25AE "; color:var(--geekui-accent); }
.geekui-info-card-icon{ display:none; }
.geekui-info-row{ font-family:var(--geekui-font-mono); font-size:13px; }
.geekui-info-row span:last-child{ color:var(--geekui-text); }

/* cast (movie + name) */
.geekui-cast-card .gp-poster{ border-radius:0; border:2px solid var(--geekui-accent); }
.geekui-cast-name{ font-family:var(--geekui-font-title); font-size:12px; text-transform:uppercase; }
.geekui-cast-role{ font-family:var(--geekui-font-mono); font-size:11px; }
.geekui-cast-arrow{ border-radius:0; border:2px solid var(--geekui-border-strong); color:var(--geekui-accent); }
.geekui-cast-arrow:hover{ background:var(--geekui-accent); color:var(--geekui-accent-ink); }

/* gallery + video/trailer tiles (movie + game + mediaviewer) */
.geekui-front-gallery img, .geekui-gallery img{ border-radius:0; border:2px solid var(--geekui-border-strong); }
.geekui-front-gallery img:hover{ border-color:var(--geekui-accent); }
.geekui-front-gallery-more{ border-radius:0; border:2px solid var(--geekui-border-strong); }
.geekui-front-gallery-num{ font-family:var(--arc-pixel); font-size:18px; color:var(--geekui-accent); text-shadow:var(--geekui-glow); }
.geekui-front-video, .geekui-trailer-side, .geekp-trailer-side{
  border-radius:0; border:2px solid var(--geekui-border-strong);
}
.geekui-front-video:hover, .geekp-trailer-side:hover{ border-color:var(--geekui-accent); box-shadow:var(--geekui-glow); }
.geekui-video-icon-big, .geekp-video-icon-big{
  border-radius:50%; border:3px solid #000; box-shadow:0 0 0 3px var(--geekui-accent), var(--geekui-glow);
}
.geekui-front-video-title, .geekp-trailer-side-title, .geekui-trailer-side-title{ font-family:var(--geekui-font-mono); font-size:12px; }

/* profile head + avatar (name / char / profile) */
.geekui-profile-avatar{ border-radius:0; border:2px solid var(--geekui-accent); box-shadow:var(--geekui-glow); }

/* hero title type — consistent everywhere it is reused */
.geekui-hero__title, .gx-hero__title{ text-transform:uppercase; }

/* LIGHT theme: heroes keep dark key-art behind text, so force light text/chips
   inside the hero only (the rest of the page stays on the light palette). */
body[data-theme="light"] .geekui-hero__body,
body[data-theme="light"] .gx-hero__body,
body[data-theme="light"] .geekui-hero__title,
body[data-theme="light"] .gx-hero__title,
body[data-theme="light"] .geekui-hero__tagline,
body[data-theme="light"] .gx-hero__sub{ color:#f6ecff; }
body[data-theme="light"] .gx-hero .geekui-eyebrow,
body[data-theme="light"] .geekui-hero .geekui-eyebrow{ color:#c98bff; }
body[data-theme="light"] .gx-hero .geekui-chip,
body[data-theme="light"] .geekui-hero .geekui-chip{ color:#f6ecff; border-color:rgba(255,255,255,.5); background:rgba(18,8,26,.42); }
body[data-theme="light"] .gx-hero .geekui-chip--accent,
body[data-theme="light"] .geekui-hero .geekui-chip--accent{ color:#ff8fe0; border-color:#ff8fe0; }

/* generic text helpers */
.geekui-plot{ font-family:var(--geekui-font-base); }
.geekui-eyebrow + .geekui-hero__title{ margin-top:6px; }

@media (prefers-reduced-motion:reduce){
  .geekui-section-title::before,.geekui-critics-heading::before,.geekui-front-videos-header::before{ animation:none; }
}

/* =====================================================================
 * LOADER — the plugin's spinner.
 *
 * Deliberately NOT scoped to .geekui-container: the first-paint loader mounts
 * outside it, so a scoped rule leaves the plugin's own teal icon showing.
 *
 * The wrapper div AND the inner <svg> both carry .geekfp-spinner, so the
 * layout rules must exclude .geekfp-rotating or the icon inherits the wrapper's
 * min-height and inflates the box. The visible ring is drawn with ::after.
 * ===================================================================== */
.geekfp-spinner:not(.geekfp-rotating) {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 120px;
  width: 100%;
}
/* Hide the plugin's own icon — we draw our own ring. */
.geekfp-spinner .geekfp-rotating,
.geekfp-spinner svg {
  opacity: 0;
  width: 0;
  height: 0;
  min-height: 0;
  position: absolute;
}
.geekfp-spinner:not(.geekfp-rotating)::after {
  content: "";
  position: absolute;
  width: 42px;
  height: 42px;
  border: 3px solid var(--geekui-surface-2);
  border-top-color: var(--geekui-accent);
  border-right-color: var(--geekui-accent-2);
  border-radius: 50%;
  animation: nc-spin 0.8s linear infinite;
  box-shadow: 0 0 18px rgba(255, 46, 196, 0.35);
}
@keyframes nc-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .geekfp-spinner:not(.geekfp-rotating)::after { animation-duration: 2.4s; }
}

/* ----------------------------------------------------------------------------
   MODE-AGNOSTIC TOKENS — declared on <body>, deliberately.

   The plugin ships neutral --geekui-* defaults on :root, and its stylesheets
   are enqueued after the theme's, so at equal specificity the plugin's :root
   wins. The dark block above survives that only because body[data-theme="dark"]
   outranks :root — the LIGHT block does not restate the fonts or the radii, so
   in light mode the titles fell back to the plugin's empty font tokens and lost
   Bungee entirely.

   A declaration on <body> always beats one inherited from :root, whatever the
   selector's weight, so anything that must hold in BOTH modes belongs here.
   -------------------------------------------------------------------------- */
body{
  --geekui-font-base:  'Chivo', system-ui, sans-serif;
  --geekui-font-title: 'Bungee', 'Chivo', sans-serif;
  --geekui-font-mono:  'DM Mono', ui-monospace, monospace;
  --geekui-card-radius: 0px;
  --geekui-radius:      0px;
  --geekui-radius-lg:   0px;
  --arc-pixel:  'Press Start 2P', monospace;
  --arc-cyan:   #2ce4ff;
  --arc-yellow: #ffe14d;
}

/* ============================================================================
   PLUGIN SUB-PALETTE BRIDGES
   ----------------------------------------------------------------------------
   Several GeekPress surfaces do NOT read --geekui-*. They ship their own token
   set, declared on :root in the plugin's own stylesheet with a NEUTRAL LIGHT
   skin (grey cards / dark text), and the contract is that the theme re-binds
   them. Left alone, those pages ignore the cabinet completely and render light
   grey — which is what happened here on the game and profile pages.

       --gxpl-*  platform.css     --gxl-*   lists.css
       --gxen-*  engine.css       --gxcm-*  company.css
       --gxf-*   fields.css       --gxr-*   register.css / login.css
       --gem-*   articles.css (critic/review chrome)

   (--gx-* and --gxp-* are bridged in geekui-game.css / geekui-profile.css,
   next to the rest of those skins. --gxa-* already resolves to --geekui-*.)

   Declared on `body` on purpose: a declaration on <body> always beats one
   inherited from the plugin's :root, no matter which stylesheet loads last.
   ========================================================================== */
body,
[id^="geekui-root"] {
  /* platform pages */
  --gxpl-bg:        var(--geekui-bg);
  --gxpl-bg-2:      var(--geekui-bg-2);
  --gxpl-bg-card:   var(--geekui-surface);
  --gxpl-bg-deep:   var(--geekui-bg-2);
  --gxpl-accent:    var(--geekui-accent);
  --gxpl-accent-2:  var(--geekui-accent-2);
  --gxpl-hot:       var(--geekui-accent);
  --gxpl-hot-2:     var(--geekui-accent-2);
  --gxpl-border:    var(--geekui-border);
  --gxpl-border-2:  var(--geekui-border-strong);
  --gxpl-text:      var(--geekui-text);
  --gxpl-text-dim:  var(--geekui-text-dim);
  --gxpl-text-mute: var(--geekui-text-mute);

  /* list pages */
  --gxl-bg:        var(--geekui-bg);
  --gxl-bg-2:      var(--geekui-bg-2);
  --gxl-bg-card:   var(--geekui-surface);
  --gxl-bg-deep:   var(--geekui-bg-2);
  --gxl-accent:    var(--geekui-accent);
  --gxl-accent-2:  var(--geekui-accent-2);
  --gxl-border:    var(--geekui-border);
  --gxl-border-2:  var(--geekui-border-strong);
  --gxl-text:      var(--geekui-text);
  --gxl-text-dim:  var(--geekui-text-dim);
  --gxl-text-mute: var(--geekui-text-mute);

  /* engine pages */
  --gxen-bg:        var(--geekui-bg);
  --gxen-bg-2:      var(--geekui-bg-2);
  --gxen-bg-card:   var(--geekui-surface);
  --gxen-bg-deep:   var(--geekui-bg-2);
  --gxen-accent:    var(--geekui-accent);
  --gxen-accent-2:  var(--geekui-accent-2);
  --gxen-hot:       var(--geekui-accent);
  --gxen-hot-2:     var(--geekui-accent-2);
  --gxen-border:    var(--geekui-border);
  --gxen-border-2:  var(--geekui-border-strong);
  --gxen-text:      var(--geekui-text);
  --gxen-text-dim:  var(--geekui-text-dim);
  --gxen-text-mute: var(--geekui-text-mute);

  /* company pages */
  --gxcm-bg:        var(--geekui-bg);
  --gxcm-bg-2:      var(--geekui-bg-2);
  --gxcm-bg-card:   var(--geekui-surface);
  --gxcm-bg-deep:   var(--geekui-bg-2);
  --gxcm-accent:    var(--geekui-accent);
  --gxcm-accent-2:  var(--geekui-accent-2);
  --gxcm-hot:       var(--geekui-accent);
  --gxcm-hot-2:     var(--geekui-accent-2);
  --gxcm-border:    var(--geekui-border);
  --gxcm-border-2:  var(--geekui-border-strong);
  --gxcm-text:      var(--geekui-text);
  --gxcm-text-dim:  var(--geekui-text-dim);
  --gxcm-text-mute: var(--geekui-text-mute);

  /* field pages (genres, keywords, jobs…) */
  --gxf-bg:        var(--geekui-bg);
  --gxf-bg-2:      var(--geekui-bg-2);
  --gxf-bg-card:   var(--geekui-surface);
  --gxf-bg-deep:   var(--geekui-bg-2);
  --gxf-accent:    var(--geekui-accent);
  --gxf-accent-2:  var(--geekui-accent-2);
  --gxf-accent-d:  var(--geekui-accent-d);
  --gxf-border:    var(--geekui-border);
  --gxf-border-2:  var(--geekui-border-strong);
  --gxf-text:      var(--geekui-text);
  --gxf-text-dim:  var(--geekui-text-dim);
  --gxf-text-mute: var(--geekui-text-mute);

  /* register / login */
  --gxr-bg:        var(--geekui-bg);
  --gxr-bg-2:      var(--geekui-bg-2);
  --gxr-bg-card:   var(--geekui-surface);
  --gxr-accent:    var(--geekui-accent);
  --gxr-accent-2:  var(--geekui-accent-2);
  --gxr-border:    var(--geekui-border);
  --gxr-border-2:  var(--geekui-border-strong);
  --gxr-danger:    var(--geekui-danger);
  --gxr-text:      var(--geekui-text);
  --gxr-text-dim:  var(--geekui-text-dim);
  --gxr-text-mute: var(--geekui-text-mute);

  /* articles (critic / review chrome) */
  --gem-dark:   var(--geekui-bg);
  --gem-panel:  var(--geekui-surface);
  --gem-panel2: var(--geekui-bg-2);
  --gem-gold:   var(--geekui-accent);
  --gem-gold2:  var(--geekui-accent-d);
  --gem-ink:    var(--geekui-text);
  --gem-ink2:   var(--geekui-text-dim);
  --gem-mute:   var(--geekui-text-mute);
  --gem-line:   var(--geekui-border);
  --gem-line2:  var(--geekui-border-strong);
  --gem-border: var(--geekui-border-strong);
}
