/* ============================================================
   theme-light.css — InkSight LIGHT theme layer (Cloud White)
   Additive only. Every rule is scoped to html[data-theme="light"],
   so the dark default is byte-identical when the attribute is absent.
   Applied today on the landing route; safe to link on any page.
   ============================================================ */

html[data-theme="light"]{
  color-scheme:light;

  /* Cloud White surfaces — LIGHT2 depth pass.
     The canvas steps down to a soft cool gray so white panels read as
     objects sitting ON a page rather than dissolving into it. Panels stay
     pure white; content is never grayed to create the separation. */
  --lt-bg:#E3EAF4;
  --lt-surface:#FFFFFF;
  --lt-surface-2:#DDE5F1;
  --lt-hair:#C2CCDE;
  --lt-hair-strong:#A5B2C8;
  --lt-text:#131A29;
  --lt-text-2:#333D52;
  --lt-dim:#465066;          /* 6.6:1 on the #EDF1F7 canvas */
  --lt-blue:#1D4FBF;         /* AA on white */
  --lt-blue-hi:#153B92;
  --lt-red:#B92D1B;
  --lt-violet:#6D4BD6;
  --lt-up:#0F6B42;
  --lt-down:#A32E1F;

  /* shared tokens (tokens.css / skin.css) */
  --ink-0:#E3EAF4;--ink-1:#FFFFFF;--ink-2:#F4F7FC;--ink-3:#FFFFFF;
  --ink-4:#EEF2F9;--ink-5:#DDE5F1;--ink-6:#CFD9E8;
  --void:#FFFFFF;--surface:#FFFFFF;--surface-2:#F4F7FC;--surface-3:#DDE5F1;
  --line:#C2CCDE;--hair:#C2CCDE;--hair-strong:#A5B2C8;
  --text:#131A29;--text-2:#333D52;--text-dim:#465066;--text-faint:#525D74;
  --amber:#1E56BE;

  /* premium.css "vault" overlay tokens (they win with !important site-wide) */
  --vault-bg:#E3EAF4; --vault-bg2:#FFFFFF;
  --vault-ink:#131A29; --vault-dim:#465066; --vault-faint:#525D74;
  --vault-gold:#1E56BE; --vault-gold-2:#16409A; --vault-gold-soft:#1E56BE;
  --vault-amber:#1E56BE; --vault-amethyst:#6D4BD6; --vault-emerald:#0F6B42;
  --vault-ruby:#A32E1F; --vault-sapphire:#2563D6; --vault-steel:#525D74;
  --vault-hair:rgba(16,24,40,.2); --vault-hair-2:rgba(16,24,40,.12);
  --vault-glass:rgba(16,24,40,.035);

}

/* ── global page canvas ─────────────────────────────────────────────────── */
html[data-theme="light"],
html[data-theme="light"] body{
  background:var(--lt-bg) !important;
  color:var(--lt-text) !important;
}
/* the dark page glow washes out a light canvas — replace with a faint tint */
html[data-theme="light"] body{
  background-image:
    radial-gradient(880px 540px at 88% 4%, rgba(37,99,214,.05), transparent 60%),
    radial-gradient(820px 560px at 10% 8%, rgba(109,75,214,.04), transparent 60%) !important;
}

/* Grain + vignette are dark-depth devices: soften on light so text stays crisp. */
html[data-theme="light"]::before{opacity:.035 !important;mix-blend-mode:multiply !important}
html[data-theme="light"]::after{background:none !important}

/* ── header ─────────────────────────────────────────────────────────────── */
html[data-theme="light"] .is-nav,
html[data-theme="light"] header.is-nav{
  background:rgba(255,255,255,.88) !important;
  background-color:rgba(255,255,255,.88) !important;
  border-bottom:1px solid var(--lt-hair) !important;
  box-shadow:0 1px 0 rgba(16,24,40,.04),0 8px 24px -20px rgba(16,24,40,.35) !important;
}
/* the "pill" treatment paints the inner row, not the header element */
html[data-theme="light"] .is-nav-in,
html[data-theme="light"] body .is-nav-in,
html[data-theme="light"] body header.is-nav .is-nav-in,
html[data-theme="light"] html body header.is-nav .is-nav-in,
html[data-theme="light"] .nav-in{
  background:rgba(255,255,255,.94) !important;
  border-color:var(--lt-hair) !important;
  box-shadow:0 1px 2px rgba(16,24,40,.05),0 10px 30px -24px rgba(16,24,40,.4) !important;
}
html[data-theme="light"] .is-nav-brand,
html[data-theme="light"] body .is-nav-brand{color:var(--lt-text) !important}
html[data-theme="light"] .is-brand-mark .line,
html[data-theme="light"] .is-brand-mark .pt,
html[data-theme="light"] .lp-lockup-mark .line,
html[data-theme="light"] .lp-lockup-mark .pt{stroke:#FFFFFF;fill:none}
html[data-theme="light"] .lp-lockup-mark .pt,
html[data-theme="light"] .is-brand-mark .pt{fill:#FFFFFF}
html[data-theme="light"] .is-brand-tcg{border-color:var(--lt-hair-strong);color:var(--lt-dim)}
html[data-theme="light"] .is-nav-tag,
html[data-theme="light"] body .is-nav-brand .is-nav-tag{border-left-color:var(--lt-hair) !important;color:var(--lt-dim) !important}
html[data-theme="light"] body .is-nav-links a,
html[data-theme="light"] body .is-nav-group-summary,
html[data-theme="light"] body .is-nav-panel a,
html[data-theme="light"] body .is-nav-acct,
html[data-theme="light"] body .ink-ss-nav-btn{color:var(--lt-text-2) !important}
html[data-theme="light"] .is-nav-links a:hover,
html[data-theme="light"] .is-nav-group-summary:hover,
html[data-theme="light"] .is-nav-group-summary:focus-visible{color:var(--lt-text);background:var(--lt-surface-2)}
html[data-theme="light"] .is-nav-links a:not(.is-active):hover,
html[data-theme="light"] nav a:not(.is-active):hover{color:var(--lt-blue)}
html[data-theme="light"] .is-nav-links a.is-active,
html[data-theme="light"] .is-nav-group.is-active>.is-nav-group-summary{color:var(--lt-blue) !important;background:color-mix(in oklab,var(--lt-blue) 8%,transparent) !important;box-shadow:none}
html[data-theme="light"] .is-nav-links a.is-active::after{background:var(--lt-blue);box-shadow:none}
html[data-theme="light"] .is-nav-panel{background:var(--lt-surface);border-color:var(--lt-hair);box-shadow:0 18px 36px -14px rgba(16,24,40,.22)}
html[data-theme="light"] .is-nav-panel a:hover,
html[data-theme="light"] .is-nav-panel a:focus-visible{color:var(--lt-blue);background:var(--lt-surface-2)}
html[data-theme="light"] .is-nav-panel-head,
html[data-theme="light"] .is-nav-panel-desc{color:var(--lt-dim)}
html[data-theme="light"] body .is-nav-cta{background:var(--lt-blue) !important;color:#FFFFFF !important;border-color:transparent !important}
/* Ko-fi pill: keep the gold, restore dark-on-gold text on a light canvas */
html[data-theme="light"] body .is-nav-kofi{
  background:linear-gradient(180deg,#FFD98A,#F0B03A 60%,#D2932A) !important;
  color:#3A2A05 !important;border-color:rgba(190,140,40,.55) !important;
  box-shadow:0 6px 16px -10px rgba(190,140,40,.6) !important;animation:none !important;
}
html[data-theme="light"] .is-nav-cta:hover{box-shadow:0 8px 22px -10px rgba(37,99,214,.55)}
html[data-theme="light"] .is-nav-burger,
html[data-theme="light"] .is-nav-acct,
html[data-theme="light"] .is-nav-theme{border-color:var(--lt-hair-strong);color:var(--lt-text-2);background:var(--lt-surface)}
html[data-theme="light"] body .is-nav-burger,
html[data-theme="light"] body .is-nav-burger *{color:var(--lt-text) !important}
html[data-theme="light"] .is-nav-burger:hover,
html[data-theme="light"] .is-nav-acct:hover,
html[data-theme="light"] .is-nav-theme:hover{background:var(--lt-surface-2);border-color:var(--lt-blue);color:var(--lt-text)}
/* mobile drawer (premium.css / SiteChrome force dark values) */
html[data-theme="light"] .is-nav-links.is-open,
html[data-theme="light"] .is-nav-drawer,
html[data-theme="light"] body header.is-nav .is-nav-in:has(.is-nav-burger) .is-nav-links.is-open,
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-links{
  background:var(--lt-surface) !important;border-color:var(--lt-hair) !important;
}
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-drawer-close{
  background:var(--lt-surface-2) !important;border-color:var(--lt-hair) !important;color:var(--lt-text) !important;
}
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-panel{border-left-color:var(--lt-hair-strong) !important}
html[data-theme="light"] body header.is-nav .is-nav-in:has(.is-nav-burger) .is-nav-group-summary{color:var(--lt-dim) !important;border-top-color:var(--lt-hair) !important}
html[data-theme="light"] body header.is-nav .is-nav-in:has(.is-nav-burger) .is-nav-links>a::after,
html[data-theme="light"] body header.is-nav .is-nav-in:has(.is-nav-burger) .is-nav-panel a::after{color:var(--lt-dim)}

/* ── footer ─────────────────────────────────────────────────────────────── */
html[data-theme="light"] .is-foot{background:var(--lt-surface-2) !important;border-top:1px solid var(--lt-hair) !important;color:var(--lt-dim) !important}
html[data-theme="light"] .is-foot-nav a{color:var(--lt-text-2) !important}
html[data-theme="light"] .is-foot-nav a:hover{color:var(--lt-blue) !important;background:rgba(16,24,40,.05) !important}
html[data-theme="light"] .is-foot-disc,
html[data-theme="light"] .is-foot-copy,
html[data-theme="light"] .is-foot-support{color:var(--lt-dim) !important}
html[data-theme="light"] .is-foot-disc b{color:var(--lt-text-2) !important}
html[data-theme="light"] .is-foot a{color:var(--lt-blue)}

/* ── landing page ───────────────────────────────────────────────────────── */
html[data-theme="light"]{
  --lp-bg:var(--lt-bg);
  --lp-surface:var(--lt-surface);
  --lp-hair:var(--lt-hair);
  --lp-text:var(--lt-text);
  --lp-dim:var(--lt-dim);
  --lp-blue:var(--lt-blue);
  --lp-red:var(--lt-red);
}
html[data-theme="light"] .lp-lockup{color:var(--lt-text);--is-brand:var(--lt-blue);--is-brand-hi:var(--lt-blue-hi)}
html[data-theme="light"] .lp-lockup-word{color:var(--lt-text)}
html[data-theme="light"] .lp-lockup-word::after{display:none}
html[data-theme="light"] .lp-lockup-tcg{border-color:var(--lt-hair-strong);color:var(--lt-dim)}
/* the shorthand must re-declare clipping, or the gradient paints as a block */
html[data-theme="light"] .lp-hero h1 .accent{
  background-image:linear-gradient(90deg,#1E56BE,#2F86E8);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
/* announcement / promo band above the header */
html[data-theme="light"] #aotv-bar-slot{background:var(--lt-surface-2) !important}
html[data-theme="light"] #aotv-bar{color:var(--lt-text)}
html[data-theme="light"] .lp-riftbound .lp-arrow,
html[data-theme="light"] .lp-news-riftbound .lp-news-link{color:var(--lt-violet)}

/* card surfaces: white on the page tint, hairline carries the structure */
html[data-theme="light"] .lp-pick-card,
html[data-theme="light"] .lp-game,
html[data-theme="light"] .lp-news-link,
html[data-theme="light"] .lp-plat,
html[data-theme="light"] .lp-cta,
html[data-theme="light"] .lp-why-card,
html[data-theme="light"] .lp-faq-item,
html[data-theme="light"] .lp-show-a,
html[data-theme="light"] .lp-st,
html[data-theme="light"] .lp-strip-links a{
  background:var(--lt-surface);
  border-color:var(--lt-hair);
  box-shadow:0 1px 2px rgba(16,24,40,.04),0 10px 24px -20px rgba(16,24,40,.28);
}
html[data-theme="light"] .lp-pick-card:hover,
html[data-theme="light"] .lp-pick-card:focus-visible,
html[data-theme="light"] .lp-game:hover,
html[data-theme="light"] .lp-news-link:hover,
html[data-theme="light"] a.lp-st:hover,
html[data-theme="light"] a.lp-st:focus-visible,
html[data-theme="light"] .lp-show-a:hover,
html[data-theme="light"] .lp-show-a:focus-visible,
html[data-theme="light"] .lp-strip-links a:hover,
html[data-theme="light"] .lp-strip-links a:focus-visible{
  border-color:var(--lt-hair-strong);
  box-shadow:0 2px 4px rgba(16,24,40,.06),0 18px 34px -22px rgba(16,24,40,.34);
}
html[data-theme="light"] .lp-game-links{background:var(--lt-surface-2);border-top-color:var(--lt-hair)}
html[data-theme="light"] .lp-game-link{background:var(--lt-surface-2);color:var(--lt-text)}
html[data-theme="light"] .lp-game-link:hover{background:#E6ECF6;border-color:var(--lt-hair-strong)}
html[data-theme="light"] .lp-lorcana .lp-game-link:hover{color:#1E56BE}
html[data-theme="light"] .lp-op .lp-game-link:hover{color:#A6371F}
html[data-theme="light"] .lp-riftbound .lp-game-link:hover{color:#5537B8}
html[data-theme="light"] .lp-pick-stats,
html[data-theme="light"] .lp-game-stats{border-top-color:var(--lt-hair)}
html[data-theme="light"] .lp-st-art{background:var(--lt-surface-2)}
html[data-theme="light"] .lp-st-sk-b{background:#E4E9F1}
html[data-theme="light"] .lp-show-frame{background:var(--lt-surface-2);border-bottom-color:var(--lt-hair)}
html[data-theme="light"] .lp-show-chrome{background:#E9EEF6}
html[data-theme="light"] .lp-show-chrome i{background:#C6CFDD}
html[data-theme="light"] .lp-fan-card{background:var(--lt-surface-2);border-color:var(--lt-hair);box-shadow:0 10px 22px -14px rgba(16,24,40,.45),0 1px 2px rgba(16,24,40,.10)}
html[data-theme="light"] .lp-fan-blue .lp-fan-card,
html[data-theme="light"] .lp-fan-red .lp-fan-card{box-shadow:0 10px 22px -14px rgba(16,24,40,.45),0 0 0 1px var(--lt-hair)}
html[data-theme="light"] .lp-game-art svg{filter:drop-shadow(0 10px 20px rgba(16,24,40,.22))}
html[data-theme="light"] .lp-halo,
html[data-theme="light"] .lp-halo-lorcana{background:radial-gradient(closest-side,rgba(37,99,214,.16),rgba(37,99,214,0) 70%)}
html[data-theme="light"] .lp-halo-op{background:radial-gradient(closest-side,rgba(196,68,47,.16),rgba(196,68,47,0) 70%)}
html[data-theme="light"] .lp-halo-riftbound{background:radial-gradient(closest-side,rgba(109,75,214,.16),rgba(109,75,214,0) 70%)}
html[data-theme="light"] .lp-plat-icon{background:color-mix(in oklab,var(--lt-blue) 10%,transparent);color:var(--lt-blue)}
html[data-theme="light"] .lp-why-ico{background:color-mix(in oklab,var(--lt-blue) 8%,transparent);border-color:color-mix(in oklab,var(--lt-blue) 24%,transparent);color:var(--lt-blue)}
html[data-theme="light"] .lp-beta{background:rgba(196,68,47,.10);color:#A6371F}
html[data-theme="light"] .lp-st-chip-lorcana{color:#1E56BE}
html[data-theme="light"] .lp-st-chip-op{color:#A6371F}
html[data-theme="light"] .lp-st-chip-riftbound{color:#0E6B62}
html[data-theme="light"] .lp-st-delta.is-up{color:var(--lt-up);background:rgba(18,122,75,.10)}
html[data-theme="light"] .lp-st-delta.is-down{color:var(--lt-down);background:rgba(178,58,42,.10)}
html[data-theme="light"] .lp-st.is-foil .lp-st-art::after{opacity:.35;mix-blend-mode:normal}
html[data-theme="light"] .lp-news-lorcana .lp-news-link{color:#1E56BE}
html[data-theme="light"] .lp-news-op .lp-news-link{color:#A6371F}
html[data-theme="light"] .lp-foot a{border-bottom-color:rgba(90,101,124,.35)}

/* Founding-Pro ambient strip + generic dark glass blocks that land on the page */
html[data-theme="light"] [data-ink-pro-strip] .pro-strip,
html[data-theme="light"] .ink-report-cta,
html[data-theme="light"] .lift,
html[data-theme="light"] .gcard,
html[data-theme="light"] .tile{
  background:var(--lt-surface) !important;
  border-color:var(--lt-hair) !important;
  color:var(--lt-text);
  box-shadow:0 1px 2px rgba(16,24,40,.04),0 10px 24px -20px rgba(16,24,40,.28) !important;
}


/* ── sitewide surfaces (market, cards, collection, sets, tools) ─────────── */
html[data-theme="light"] body{
  --bg:#FAFBFC;
  --surface:#FFFFFF;
  --surface-2:#F4F6FA;
  --surface-3:#EEF1F7;
  --hair:#DDE3EC;
  --hair-strong:#C6CFDD;
  --line:#DDE3EC;
  --text:#1B2233;
  --text-2:#3C465C;
  --muted:#46506A;   /* 8.1:1 on #FFF */
  --dim:#5A657C;     /* was #9AA4B8 — a DARK-mode grey left in the light block: 2.4:1 */
  --faint:#56617A;   /* 5.9:1 on the LIGHT2 canvas */
  --accent:#2563D6;
  --accent-hi:#5EA0FF;
  --accent-contrast:#FFFFFF;
  --gold:#1E56BE;
  --up:#127A4B;
  --down:#B23A2A;
  --panel:#FFFFFF;
  --panel-2:#F4F6FA;
}
html[data-theme="light"] .wrap,
html[data-theme="light"] .shell,
html[data-theme="light"] .page,
html[data-theme="light"] .inner,
html[data-theme="light"] .container,
html[data-theme="light"] .content,
html[data-theme="light"] .section,
html[data-theme="light"] .main{
  background:var(--lt-bg) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] h1,
html[data-theme="light"] h2,
html[data-theme="light"] h3,
html[data-theme="light"] h4,
html[data-theme="light"] h5,
html[data-theme="light"] h6,
html[data-theme="light"] .h1,
html[data-theme="light"] .h2,
html[data-theme="light"] .h3,
html[data-theme="light"] .title,
html[data-theme="light"] .heading{
  color:var(--lt-text) !important;
}
html[data-theme="light"] p,
html[data-theme="light"] li,
html[data-theme="light"] dd,
html[data-theme="light"] td,
html[data-theme="light"] th,
html[data-theme="light"] .body,
html[data-theme="light"] .copy,
html[data-theme="light"] .caption{
  color:var(--lt-text-2);
}
html[data-theme="light"] a:not(.is-nav-cta):not(.is-nav-kofi):not(.btn):not(.button):not(.pill):not(.chip){
  color:var(--lt-blue);
}
html[data-theme="light"] a:hover:not(.is-nav-cta):not(.is-nav-kofi):not(.btn):not(.button):not(.pill):not(.chip){
  color:var(--lt-blue-hi);
}

/* ── cards, panels, tiles, grids ─────────────────────────────────────────── */
html[data-theme="light"] .card,
html[data-theme="light"] .panel,
html[data-theme="light"] .module,
html[data-theme="light"] .widget,
html[data-theme="light"] .box,
html[data-theme="light"] .pill,
html[data-theme="light"] .chip,
html[data-theme="light"] .tile,
html[data-theme="light"] .badge,
html[data-theme="light"] .well,
html[data-theme="light"] .stat,
html[data-theme="light"] .metric,
html[data-theme="light"] .c-card,
html[data-theme="light"] .market-card,
html[data-theme="light"] .set-tile,
html[data-theme="light"] .set-card,
html[data-theme="light"] .binder-card,
html[data-theme="light"] .pocket-card,
html[data-theme="light"] .collection-card,
html[data-theme="light"] .deck-card,
html[data-theme="light"] .guide-card,
html[data-theme="light"] .news-card,
html[data-theme="light"] .article-card,
html[data-theme="light"] .result-card,
html[data-theme="light"] .search-card{
  background:var(--lt-surface) !important;
  border-color:var(--lt-hair) !important;
  color:var(--lt-text) !important;
  box-shadow:0 1px 2px rgba(16,24,40,.04),0 10px 24px -20px rgba(16,24,40,.28) !important;
}
html[data-theme="light"] .card:hover,
html[data-theme="light"] .panel:hover,
html[data-theme="light"] .tile:hover,
html[data-theme="light"] .set-tile:hover,
html[data-theme="light"] .binder-card:hover,
html[data-theme="light"] .result-card:hover,
html[data-theme="light"] .search-card:hover{
  border-color:var(--lt-hair-strong) !important;
  box-shadow:0 2px 4px rgba(16,24,40,.06),0 18px 34px -22px rgba(16,24,40,.34) !important;
}

/* ── tables, lists, separators ──────────────────────────────────────────── */
html[data-theme="light"] table,
html[data-theme="light"] .table{
  background:var(--lt-surface);
  border-color:var(--lt-hair);
}
html[data-theme="light"] th,
html[data-theme="light"] .th,
html[data-theme="light"] .table-header{
  background:var(--lt-surface-2);
  color:var(--lt-text);
  border-color:var(--lt-hair);
}
html[data-theme="light"] td,
html[data-theme="light"] .td,
html[data-theme="light"] tr,
html[data-theme="light"] .table-row{
  border-color:var(--lt-hair);
  color:var(--lt-text-2);
}
html[data-theme="light"] hr,
html[data-theme="light"] .divider,
html[data-theme="light"] .separator,
html[data-theme="light"] .border{
  border-color:var(--lt-hair) !important;
  background:var(--lt-hair) !important;
}

/* ── inputs, forms, buttons ─────────────────────────────────────────────── */
html[data-theme="light"] input,
html[data-theme="light"] textarea,
html[data-theme="light"] select,
html[data-theme="light"] .input,
html[data-theme="light"] .select,
html[data-theme="light"] .textarea{
  background:var(--lt-surface);
  color:var(--lt-text);
  border-color:var(--lt-hair-strong);
}
html[data-theme="light"] input::placeholder,
html[data-theme="light"] textarea::placeholder{
  color:var(--lt-dim);
}
html[data-theme="light"] input:focus,
html[data-theme="light"] textarea:focus,
html[data-theme="light"] select:focus,
html[data-theme="light"] .input:focus{
  border-color:var(--lt-blue);
  outline-color:var(--lt-blue);
  box-shadow:0 0 0 3px rgba(37,99,214,.12);
}
html[data-theme="light"] button,
html[data-theme="light"] .btn,
html[data-theme="light"] .button:not(.is-nav-cta):not(.is-nav-burger):not(.is-nav-theme):not(.ink-ss-nav-btn){
  background:var(--lt-surface-2);
  color:var(--lt-text);
  border-color:var(--lt-hair-strong);
}
html[data-theme="light"] button:hover,
html[data-theme="light"] .btn:hover,
html[data-theme="light"] .button:hover{
  background:var(--lt-hair);
  border-color:var(--lt-hair-strong);
}
html[data-theme="light"] .btn-primary,
html[data-theme="light"] .button-primary,
html[data-theme="light"] .primary-btn{
  background:var(--lt-blue) !important;
  color:#FFF !important;
  border-color:var(--lt-blue) !important;
}
html[data-theme="light"] .btn-primary:hover,
html[data-theme="light"] .button-primary:hover{
  background:var(--lt-blue-hi) !important;
  border-color:var(--lt-blue-hi) !important;
}

/* ── search modal / site search ─────────────────────────────────────────── */
html[data-theme="light"] .search-modal,
html[data-theme="light"] .search-overlay,
html[data-theme="light"] .search-dropdown,
html[data-theme="light"] [data-search-modal],
html[data-theme="light"] [data-search="modal"]{
  background:rgba(255,255,255,.96) !important;
  color:var(--lt-text) !important;
  border-color:var(--lt-hair) !important;
  backdrop-filter:saturate(160%) blur(18px);
}
html[data-theme="light"] .search-result:hover,
html[data-theme="light"] .search-result.is-active,
html[data-theme="light"] .search-result:focus{
  background:var(--lt-surface-2) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] .search-empty,
html[data-theme="light"] .search-help{
  color:var(--lt-dim) !important;
}

/* ── collection / binder / pocket / portfolio / deck lab ──────────────────── */
html[data-theme="light"] .binder,
html[data-theme="light"] .pocket,
html[data-theme="light"] .list-view,
html[data-theme="light"] .compact-view,
html[data-theme="light"] .portfolio,
html[data-theme="light"] .watchlist,
html[data-theme="light"] .decklab,
html[data-theme="light"] .collection{
  background:var(--lt-bg) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] .binder-set-header,
html[data-theme="light"] .pocket-header,
html[data-theme="light"] .list-header,
html[data-theme="light"] .portfolio-header,
html[data-theme="light"] .deck-header{
  background:var(--lt-surface-2) !important;
  border-color:var(--lt-hair) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] .binder-card .qty,
html[data-theme="light"] .pocket-card .qty,
html[data-theme="light"] .card-count,
html[data-theme="light"] .count-pill{
  background:var(--lt-surface-2) !important;
  color:var(--lt-text) !important;
  border-color:var(--lt-hair) !important;
}

/* ── price / market accents (keep semantic meaning) ──────────────────────── */
html[data-theme="light"] .price-up,
html[data-theme="light"] .is-up,
html[data-theme="light"] .positive,
html[data-theme="light"] .gain{
  color:var(--lt-up) !important;
}
html[data-theme="light"] .price-down,
html[data-theme="light"] .is-down,
html[data-theme="light"] .negative,
html[data-theme="light"] .loss{
  color:var(--lt-down) !important;
}
html[data-theme="light"] .market-price,
html[data-theme="light"] .market,
html[data-theme="light"] .value,
html[data-theme="light"] .worth{
  color:var(--lt-text) !important;
}
html[data-theme="light"] .lowest-ask,
html[data-theme="light"] .ask{
  color:var(--lt-dim) !important;
}

/* ── overlays / modals / toasts ──────────────────────────────────────────── */
html[data-theme="light"] .modal,
html[data-theme="light"] .dialog,
html[data-theme="light"] .overlay,
html[data-theme="light"] .toast,
html[data-theme="light"] .notification,
html[data-theme="light"] .popup,
html[data-theme="light"] .tooltip{
  background:var(--lt-surface) !important;
  color:var(--lt-text) !important;
  border-color:var(--lt-hair) !important;
  box-shadow:0 20px 50px -20px rgba(16,24,40,.25) !important;
}
html[data-theme="light"] .modal-backdrop,
html[data-theme="light"] .overlay-backdrop,
html[data-theme="light"] .dialog-backdrop{
  background:rgba(16,24,40,.45) !important;
}

/* ── nav game switcher in light mode ─────────────────────────────────────── */
html[data-theme="light"] .is-nav-switcher-head,
html[data-theme="light"] body .is-nav-switcher-head{
  background:var(--lt-surface) !important;
  border-color:var(--lt-hair) !important;
  color:var(--lt-text-2) !important;
}
html[data-theme="light"] .is-nav-switcher-row,
html[data-theme="light"] body .is-nav-switcher-row{
  background:rgba(255,255,255,.98) !important;
  border-color:var(--lt-hair) !important;
  box-shadow:0 18px 36px -10px rgba(16,24,40,.22) !important;
}
html[data-theme="light"] .is-nav-switcher-btn,
html[data-theme="light"] body .is-nav-switcher-btn{
  color:var(--lt-text-2) !important;
}
html[data-theme="light"] .is-nav-switcher-btn:hover,
html[data-theme="light"] .is-nav-switcher-btn:focus-visible{
  background:var(--lt-surface-2) !important;
  color:var(--lt-blue) !important;
}
html[data-theme="light"] .is-nav-switcher-btn.is-active,
html[data-theme="light"] .is-nav-switcher-btn.is-active .is-nav-switcher-label{
  color:var(--lt-blue) !important;
}

/* ── code / pre / subtle details ─────────────────────────────────────────── */
html[data-theme="light"] code,
html[data-theme="light"] pre,
html[data-theme="light"] .code,
html[data-theme="light"] .mono{
  background:var(--lt-surface-2) !important;
  color:var(--lt-text) !important;
  border-color:var(--lt-hair) !important;
}

/* ── hide dark-only decorative glows on light canvas ─────────────────────── */
html[data-theme="light"] .glow,
html[data-theme="light"] .orb,
html[data-theme="light"] .flare,
html[data-theme="light"] .aurora,
html[data-theme="light"] .nebula,
/* `.spotlight` is a decorative glow on heroes, but the game hubs also use
   `.spot.spotlight` for a real product card — never fade actual content. */
html[data-theme="light"] .spotlight:not(.spot):not(a):not(section):not(article){
  opacity:.35 !important;
}
html[data-theme="light"] body .vault-grad,
/* `.g` is a gradient-text span in headings only. A blanket rule made every
   `.g` grid cell (e.g. guide "at a glance" keys) transparent + invisible. */
html[data-theme="light"] h1 .g,
html[data-theme="light"] h2 .g,
html[data-theme="light"] h3 .g{
  background:linear-gradient(100deg,var(--lt-blue),var(--lt-violet) 52%,var(--lt-blue-hi))!important;
  -webkit-background-clip:text!important;
  background-clip:text!important;
}


/* ── mobile / small screens: keep the header readable ─────────────────────── */
@media (max-width:1449px){
  html[data-theme="light"] .is-nav-links.is-open,
  html[data-theme="light"] body header.is-nav .is-nav-in:has(.is-nav-burger) .is-nav-links.is-open,
  html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-links{
    background:var(--lt-surface) !important;
    border-color:var(--lt-hair) !important;
    box-shadow:0 18px 36px -10px rgba(16,24,40,.22) !important;
  }
  html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-links a,
  html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-panel a{
    color:var(--lt-text-2) !important;
  }
  html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-links a:hover,
  html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-panel a:hover,
  html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-links a.is-active{
    background:var(--lt-surface-2) !important;
    color:var(--lt-blue) !important;
  }
}


/* ── cards.index.tsx (React route) — hardcoded dark surfaces adapted ─────── */
html[data-theme="light"] .lede,
html[data-theme="light"] .lede .trust,
html[data-theme="light"] .mkb-sub,
html[data-theme="light"] .mkb-count,
html[data-theme="light"] .fs-credit,
html[data-theme="light"] .fs-credit a,
html[data-theme="light"] .mkb-kwhint,
html[data-theme="light"] .mkb-ta-mt,
html[data-theme="light"] .sm,
html[data-theme="light"] .sptag,
html[data-theme="light"] .mkb-csub,
html[data-theme="light"] .mkb-delta{
  color:var(--lt-text-2) !important;
}
html[data-theme="light"] .mkb-k,
html[data-theme="light"] .mkb-price,
html[data-theme="light"] .mkb-addcart,
html[data-theme="light"] .mkb-ta-pr,
html[data-theme="light"] .fs-tag,
html[data-theme="light"] .spval,
html[data-theme="light"] .crumb a:hover,
html[data-theme="light"] .mkb-addcart:hover{
  color:var(--lt-blue) !important;
}
html[data-theme="light"] .mkb-h2,
html[data-theme="light"] .mkb-count b,
html[data-theme="light"] .mkb-cname,
html[data-theme="light"] .mkb-ta-nm,
html[data-theme="light"] .sn,
html[data-theme="light"] .fs-go,
html[data-theme="light"] .crumb span,
html[data-theme="light"] .sets a,
html[data-theme="light"] .mkb-chip,
html[data-theme="light"] .mkb-loadmore,
html[data-theme="light"] .mkb-search input{
  color:var(--lt-text) !important;
}
html[data-theme="light"] .mkb-controls,
html[data-theme="light"] .mkb-search,
html[data-theme="light"] .mkb-controls select,
html[data-theme="light"] .mkb-ta,
html[data-theme="light"] .mkb-ta-th{
  background:var(--lt-surface) !important;
  border-color:var(--lt-hair) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] .mkb-chip{
  background:var(--lt-surface-2) !important;
  border-color:var(--lt-hair) !important;
}
html[data-theme="light"] .mkb-chip.on{
  background:rgba(37,99,214,.12) !important;
  border-color:var(--lt-blue) !important;
  color:var(--lt-blue) !important;
}
html[data-theme="light"] .mkb-chip:hover{
  background:var(--lt-hair) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] .mkb-shell,
html[data-theme="light"] .mkb-core,
html[data-theme="light"] .mkb-ta-row a{
  background:var(--lt-surface) !important;
  border-color:var(--lt-hair) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] .mkb-shell:hover{
  border-color:var(--lt-blue) !important;
}
html[data-theme="light"] .mkb-ta-row.is-active a,
html[data-theme="light"] .mkb-ta-row a:hover,
html[data-theme="light"] .sets a:hover{
  background:var(--lt-surface-2) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] .mkb-addcart{
  background:rgba(37,99,214,.10) !important;
  border-color:var(--lt-blue) !important;
}
html[data-theme="light"] .mkb-addcart:hover{
  background:rgba(37,99,214,.18) !important;
}
html[data-theme="light"] .mkb-shell .qa-add{
  color:var(--lt-gold) !important;
  background:rgba(245,181,61,.09) !important;
  border-color:rgba(245,181,6,.32) !important;
}
html[data-theme="light"] .mkb-shell .wl-star{
  color:var(--lt-text-2) !important;
  background:rgba(244,246,250,.8) !important;
  border-color:var(--lt-hair) !important;
}
html[data-theme="light"] .mkb-shell .wl-star:hover,
html[data-theme="light"] .mkb-shell .wl-star.on{
  color:var(--lt-gold) !important;
  background:rgba(245,181,61,.12) !important;
  border-color:rgba(245,181,61,.5) !important;
}
html[data-theme="light"] .mkb-art{
  background:var(--lt-surface-3) !important;
  box-shadow:inset 0 0 0 1px var(--lt-hair) !important;
}
html[data-theme="light"] .mkb-rchip{
  color:var(--lt-text) !important;
  background:rgba(255,255,255,.75) !important;
  border:1px solid var(--lt-hair) !important;
}
html[data-theme="light"] .mkb-loadmore{
  background:var(--lt-surface-2) !important;
  border-color:var(--lt-hair) !important;
}
html[data-theme="light"] .mkb-loadmore:hover{
  border-color:var(--lt-blue) !important;
}
html[data-theme="light"] .mkb-chipsep{
  background:var(--lt-hair) !important;
}
html[data-theme="light"] .fsCard a,
html[data-theme="light"] .fsCard{
  background:var(--lt-surface) !important;
  border-color:var(--lt-hair) !important;
  box-shadow:0 1px 2px rgba(16,24,40,.04),0 10px 24px -20px rgba(16,24,40,.28) !important;
}
html[data-theme="light"] .fsCard.is-new a{
  border-color:var(--lt-blue) !important;
  box-shadow:0 0 0 1px rgba(37,99,214,.35),0 10px 24px -12px rgba(37,99,214,.4) !important;
}
html[data-theme="light"] .fs-logo-wrap img{
  filter:drop-shadow(0 4px 14px rgba(16,24,40,.25)) !important;
}

/* ── market.html (static hub) — hardcoded dark shell pieces adapted ─────── */
html[data-theme="light"] body::before{
  background:radial-gradient(900px 520px at 50% -240px,rgba(37,99,214,.08),transparent 65%) !important;
}
html[data-theme="light"] .stickybar,
html[data-theme="light"] .is-nav,
html[data-theme="light"] #aotv-bar-slot{
  background:rgba(255,255,255,.92) !important;
  border-color:var(--lt-hair) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] .tf,
html[data-theme="light"] .tabs,
html[data-theme="light"] .rar-chips,
html[data-theme="light"] .search-hero,
html[data-theme="light"] .idx,
html[data-theme="light"] .panel,
html[data-theme="light"] .mrow,
html[data-theme="light"] .drow,
html[data-theme="light"] .nl-card,
html[data-theme="light"] .mcrd,
html[data-theme="light"] .empty,
html[data-theme="light"] .coming{
  background:var(--lt-surface) !important;
  border-color:var(--lt-hair) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] .mrow:hover,
html[data-theme="light"] .drow:hover,
html[data-theme="light"] .nl-card:hover,
html[data-theme="light"] .mcrd:hover,
html[data-theme="light"] .mrow-thumb{
  background:var(--lt-surface-2) !important;
  border-color:var(--lt-hair) !important;
}
html[data-theme="light"] .mrow-thumb::before,
html[data-theme="light"] .mrow-thumb::after{
  background:rgba(255,255,255,.9) !important;
}
html[data-theme="light"] .subnav a:hover,
html[data-theme="light"] .tf button.is-on,
html[data-theme="light"] .tabs button.active,
html[data-theme="light"] .rar-chips button.active,
html[data-theme="light"] .idx-soon{
  background:var(--lt-surface-2) !important;
  color:var(--lt-text) !important;
  border-color:var(--lt-hair) !important;
}
html[data-theme="light"] .idx-num,
html[data-theme="light"] .idx-lbl,
html[data-theme="light"] .lede,
html[data-theme="light"] .snap,
html[data-theme="light"] .idx-sub,
html[data-theme="light"] .idx-help,
html[data-theme="light"] .panel h3 small,
html[data-theme="light"] .mrow-meta,
html[data-theme="light"] .mrow-sub,
html[data-theme="light"] .mrow-rank,
html[data-theme="light"] .nl-card p,
html[data-theme="light"] .mcrd small,
html[data-theme="light"] .subnav a{
  color:var(--lt-text-2) !important;
}
html[data-theme="light"] .idx-num.muted,
html[data-theme="light"] .empty,
html[data-theme="light"] .coming{
  color:var(--lt-dim) !important;
}
html[data-theme="light"] .panel h3,
html[data-theme="light"] .mrow-px,
html[data-theme="light"] .mrow-nm,
html[data-theme="light"] .drow-nm,
html[data-theme="light"] .nl-card strong,
html[data-theme="light"] .mcrd strong,
html[data-theme="light"] .tabs button,
html[data-theme="light"] .tf button,
html[data-theme="light"] .rar-chips button,
html[data-theme="light"] .crumb a,
html[data-theme="light"] .snap b{
  color:var(--lt-text) !important;
}
html[data-theme="light"] .crumb a:hover,
html[data-theme="light"] .idx-help a,
html[data-theme="light"] .mrow:hover .mrow-px,
html[data-theme="light"] .drow:hover .drow-px{
  color:var(--lt-blue) !important;
}
html[data-theme="light"] .idx-spark{
  border-color:var(--lt-hair) !important;
  color:var(--lt-dim) !important;
}
html[data-theme="light"] .mrow-thumb{
  box-shadow:0 6px 18px -10px rgba(16,24,40,.35),0 0 0 1px rgba(16,24,40,.08) inset !important;
}
html[data-theme="light"] .search-hero input{
  background:var(--lt-surface) !important;
  color:var(--lt-text) !important;
  border-color:var(--lt-hair) !important;
}
html[data-theme="light"] .search-hero input::placeholder{
  color:var(--lt-dim) !important;
}
html[data-theme="light"] .search-hero button{
  background:var(--lt-blue) !important;
  color:#FFF !important;
  border-color:var(--lt-blue) !important;
}

/* ============================================================
   NAV DRAWER — light-theme conversion (tokenized surfaces)
   The shared nav CSS (unify-nav.mjs / SiteChrome / home.html /
   premium.css) now resolves every drawer surface, border and
   foreground from --is-nav-* tokens with dark fallbacks. Setting
   them here converts the drawer in one place for all games.
   ============================================================ */
html[data-theme="light"],
html[data-theme="light"] body,
html[data-theme="light"] body header.is-nav{
  --is-nav-fg:#1B2233;            /* body/tile text  → 15.9:1 on #FFF */
  --is-nav-fg-2:#3C465C;          /* secondary       → 9.5:1  */
  --is-nav-fg-dim:#5A657C;        /* section heads   → 5.9:1  */
  --is-nav-fg-faint:#6B768C;      /* disabled label  → 4.6:1  */
  --is-nav-surface:#FFFFFF;
  --is-nav-surface-2:#EEF2F8;
  --is-nav-sunken:#F1F4F9;
  --is-nav-drawer-bg:#FFFFFF;
  --is-nav-drawer-bg-solid:#FFFFFF;
  --is-nav-switcher-bg:#F6F8FC;
  --is-nav-line:#DDE3EC;
  --is-nav-line-2:#C6CFDD;
  --is-nav-line-3:#AEBACB;
  --is-nav-on-accent:#FFFFFF;
  --is-nav-burger-a:#FFFFFF;
  --is-nav-burger-b:#F4F6FA;
  --is-nav-open-fg:#1E56BE;
  --is-nav-open-line:#1E56BE;
}

/* B. ACCENT RAMP FOR LIGHT SURFACES ─────────────────────────────
   The dark-tuned accents (gold #F5B53D 1.9:1, purple #A78BFA 2.0:1,
   red #EE5340 3.5:1 on white) are re-mapped to AA-safe siblings.
   Dark-mode values are untouched. Keyed off the same attributes so
   per-game theming survives in both modes. */
html[data-theme="light"] body header.is-nav[data-nav-context="lorcana"]  {--is-brand:#1E56BE;--is-brand-hi:#16409A;--is-nav-ring:#1E56BE}
html[data-theme="light"] body header.is-nav[data-nav-context="op"]       {--is-brand:#B92D1B;--is-brand-hi:#8F2214;--is-nav-ring:#B92D1B}
html[data-theme="light"] body header.is-nav[data-nav-context="riftbound"]{--is-brand:#6D4BD6;--is-brand-hi:#5636B4;--is-nav-ring:#6D4BD6}
html[data-theme="light"] body header.is-nav[data-nav-context="landing"]  {--is-brand:#2563D6;--is-brand-hi:#1B4CAB;--is-nav-ring:#2563D6}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn[data-game="lorcana"]  {--sw:#1E56BE;--sw-hi:#16409A}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn[data-game="op"]       {--sw:#B92D1B;--sw-hi:#8F2214}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn[data-game="riftbound"]{--sw:#6D4BD6;--sw-hi:#5636B4}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn{--sw:#2563D6;--sw-hi:#1B4CAB}

/* game tiles: white surface, AA text, accent droplet */
html[data-theme="light"] body header.is-nav .is-nav-switcher{
  background:var(--is-nav-switcher-bg) !important;border-color:var(--lt-hair) !important;
}
html[data-theme="light"] body header.is-nav .is-nav-switcher-head{color:var(--lt-dim) !important}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn{
  background:var(--lt-surface) !important;border-color:var(--lt-hair-strong) !important;
  color:var(--lt-text) !important;box-shadow:0 1px 2px rgba(16,24,40,.05) !important;
}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn .is-nav-switcher-label{color:var(--lt-text) !important}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn .is-nav-switcher-mark{filter:none !important}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn .is-nav-switcher-mark .line{stroke:#FFFFFF !important}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn:hover,
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn:focus-visible{
  background:var(--is-nav-surface-2) !important;border-color:var(--sw) !important;color:var(--lt-text) !important;
}
/* active tile: darker accent fill, white label (>=4.5:1 for all three) */
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn.is-active{
  background:var(--sw) !important;border-color:var(--sw-hi) !important;color:#FFFFFF !important;
  box-shadow:0 6px 16px -10px color-mix(in oklab,var(--sw) 55%,transparent) !important;
}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn.is-active .is-nav-switcher-label{color:#FFFFFF !important}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn.is-active .is-nav-switcher-mark{color:#FFFFFF !important}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn.is-active .is-nav-switcher-mark .line{stroke:var(--sw) !important}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn.is-active .is-nav-switcher-dot{background:#FFFFFF !important;box-shadow:0 0 0 2px rgba(255,255,255,.5) !important}
html[data-theme="light"] body header.is-nav .is-nav-switcher-btn.is-disabled{
  background:var(--is-nav-sunken) !important;color:var(--is-nav-fg-faint) !important;border-color:var(--lt-hair) !important;
}
html[data-theme="light"] body header.is-nav .is-nav-switcher-soon{
  background:var(--is-nav-sunken) !important;border-color:var(--lt-hair) !important;color:var(--lt-dim) !important;
}
/* "All games →" row: was a mid-grey band (1.87:1) */
html[data-theme="light"] body header.is-nav .is-nav-switcher-all{
  background:transparent !important;color:var(--lt-text-2) !important;
}
html[data-theme="light"] body header.is-nav .is-nav-switcher-all:hover,
html[data-theme="light"] body header.is-nav .is-nav-switcher-all:focus-visible{
  color:var(--is-brand-hi,var(--lt-blue)) !important;background:var(--is-nav-surface-2) !important;
}
/* drawer secondary rows */
html[data-theme="light"] body header.is-nav .is-nav-drawer-kofi{
  background:var(--lt-surface) !important;border-color:var(--lt-hair-strong) !important;color:var(--lt-text-2) !important;
}
/* D. the drawer must read as a layer above the page (defect 4) */
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-links,
html[data-theme="light"] body header.is-nav .is-nav-in:has(.is-nav-burger) .is-nav-links.is-open{
  background:#FFFFFF !important;
  border:1px solid var(--lt-hair-strong) !important;border-top:0 !important;
  box-shadow:0 24px 48px -18px rgba(16,24,40,.32),0 2px 6px rgba(16,24,40,.08) !important;
}
/* E. focus/hover ring on the trigger uses the per-game brand token, never UA blue */
html[data-theme="light"] body header.is-nav .is-nav-burger:hover,
html[data-theme="light"] body header.is-nav .is-nav-burger[aria-expanded="true"]{
  border-color:var(--is-nav-ring,var(--is-brand)) !important;color:var(--lt-text) !important;
}
html[data-theme="light"] body header.is-nav .is-nav-burger:focus-visible{
  outline:2px solid var(--is-nav-ring,var(--is-brand)) !important;outline-offset:2px !important;
}

/* drawer-scoped tiles: the mobile :has(.is-nav-burger) rules outrank the
   generic .is-nav-links a.is-active link styling, so restate them here. */
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-switcher-btn,
html[data-theme="light"] body header.is-nav .is-nav-in:has(.is-nav-burger) .is-nav-switcher-btn{
  background:var(--lt-surface) !important;border:1px solid var(--lt-hair-strong) !important;
  color:var(--lt-text) !important;
}
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-switcher-btn.is-active,
html[data-theme="light"] body header.is-nav .is-nav-in:has(.is-nav-burger) .is-nav-switcher-btn.is-active{
  background:var(--sw) !important;border-color:var(--sw-hi) !important;color:#FFFFFF !important;
}
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-switcher-btn.is-active .is-nav-switcher-label,
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-switcher-btn.is-active .is-nav-switcher-mark{color:#FFFFFF !important}
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-switcher-btn.is-active .is-nav-switcher-mark .line{stroke:var(--sw) !important}
html[data-theme="light"] body .is-nav-in:has(.is-nav-burger) .is-nav-switcher-all{color:var(--lt-text-2) !important;background:transparent !important}

/* ============================================================
   LIGHT MODE — mechanism layer (2026-07-25)

   ROOT CAUSE of "stranded dark components inside light pages":
   every page ships its own <style> block that (a) re-declares a DARK
   palette in a page-local :root {--bg,--panel,--panel-2,--muted,--dim,…}
   — which beats /tokens.css and was invisible to this file — and
   (b) hardcodes dark literals such as linear-gradient(#13161F,#0E111A)
   or color:#EAEDF6 that no theme layer could reach.

   scripts/tokenize-theme.mjs rewrote those literals to
   var(--is-*, <original dark value>), so dark output is unchanged and
   ONE definition below re-themes every page at once. New pages inherit
   the fix automatically as long as they use the same palette; re-run the
   script after adding page-local styles.
   ============================================================ */
html[data-theme="light"]{
  /* text — all ratios on #FFFFFF */
  --is-fg:#1B2233;          /* 15.9:1 */
  --is-fg-2:#3C465C;        /*  9.5:1 */
  --is-fg-3:#46506A;        /*  8.1:1 */
  --is-fg-dim:#525D74;      /*  6.6:1 on the LIGHT2 canvas */
  --is-fg-faint:#56617A;    /*  5.9:1 on the LIGHT2 canvas — floor for body copy */

  /* canvas + panels — LIGHT2 depth pass.
     The first light build put #FAFBFC page bg behind #FFFFFF panels: a 1.5%
     value gap, so nothing read as a card and the whole page glared ("white
     overload washout"). The canvas now steps down to a soft cool gray while
     panels stay pure white, so cards lift off the page instead of dissolving
     into it. Panels keep white — the depth comes from the canvas, not from
     graying the content. */
  --is-bg:#EDF1F7;
  --is-panel:#FFFFFF;
  --is-panel-2:#F6F8FC;
  --is-surface:#FFFFFF;
  --is-surface-2:#E7ECF4;
  --is-surface-3:#DCE3EE;
  --is-sunken:#E4EAF3;

  /* hairlines — one notch stronger so panel edges survive low zoom */
  --is-line:#D2DAE6;
  --is-line-2:#BAC5D6;
  --is-line-3:#A3B0C4;

  /* Depth system, tokenized (LIGHT2). Dark mode builds elevation out of
     white alpha fills and near-black scrims; on white those are invisible
     (a 6% white fill on #FFF) or keep dark-on-dark text (a #06070C scrim).
     scripts/tokenize-theme2.mjs rewrites those literals to these tokens. */
  --is-wash-1:rgba(27,34,51,.035);
  --is-wash-2:rgba(27,34,51,.055);
  --is-wash-3:rgba(27,34,51,.085);
  --is-wash-4:rgba(27,34,51,.12);
  --is-scrim:rgba(255,255,255,.86);
  --is-scrim-strong:rgba(255,255,255,.95);
  --is-shadow-1:0 1px 2px rgba(16,24,40,.05), 0 1px 3px rgba(16,24,40,.06);
  --is-shadow-2:0 2px 4px rgba(16,24,40,.06), 0 6px 16px rgba(16,24,40,.08);


  /* ACCENT RAMP FOR LIGHT SURFACES.
     The dark-tuned accents (#F5B53D gold 1.9:1, #EE5340 red 3.3:1,
     #A78BFA violet 2.4:1) all fail AA as text on white. These darker
     siblings keep the hue and pass. Accent *fills* are deliberately NOT
     re-mapped — a gold or red fill still carries dark text fine. */
  --is-gold:#1E56BE;        /* 5.7:1 — brand blue replaces dark gold in light mode */
  --is-gold-hi:#16409A;     /* 8.0:1 */
  --is-red:#B92D1B;         /* 5.3:1 */
  --is-red-hi:#8F2214;      /* 7.8:1 */
  --is-violet:#6D4BD6;      /* 5.4:1 */
  --is-violet-hi:#5636B4;   /* 7.4:1 */
  --is-blue:#2563D6;        /* 5.3:1 */
  --is-blue-hi:#1B4CAB;     /* 7.6:1 */
  --is-green:#0F6B42;       /* 5.6:1 */
  --is-warn:#7A4B00;        /* 6.9:1 — the dark #f5b04c amber is 1.9:1 here */

  /* Wash fills + hairlines for the price / delta pills. The dark build used
     10%-alpha neons over a near-black panel; the same alphas over white read
     as almost-nothing and drag the pill ink toward its own washed background.
     These are tinted-on-white equivalents with a visible hairline. */
  --is-green-wash:rgba(15,107,66,.10);   --is-green-line:rgba(15,107,66,.34);
  --is-red-wash:rgba(143,34,20,.09);     --is-red-line:rgba(143,34,20,.32);
  --is-neutral-wash:rgba(56,68,90,.07);  --is-neutral-line:rgba(56,68,90,.24);
  --is-violet-wash:rgba(109,75,214,.09); --is-violet-line:rgba(109,75,214,.30);
  --is-accent-wash:rgba(138,92,0,.09);   --is-accent-line:rgba(138,92,0,.32);
  --is-warn-wash:rgba(122,75,0,.10);     --is-warn-line:rgba(122,75,0,.32);
  --is-on-accent:#1B2233;

  /* NEWSCTA1 — newsletter CTA on light surfaces: brand blue, white ink. */
  --is-cta-bg:#1E56BE;
  --is-cta-fg:#FFFFFF;
  --is-cta-shadow:0 6px 16px -8px rgba(30,86,190,.55);

  /* Ink for text sitting ON an accent fill. Accent fills keep their
     dark-tuned hue in light mode, so this ink stays dark — it just must not
     be the page canvas, which is what the dark build used. */
  --is-on-fill:#FFFFFF;


  /* Card-detail analytics: gauge + canvas chart. The dark build drew the
     needle, ticks, grid and dot rings in white / near-black — invisible on a
     white canvas. These are the light-surface equivalents. */
  --is-needle:#1B2233;
  --is-tick:rgba(27,34,51,.30);
  --is-tip-shadow:rgba(16,24,40,.16);
  --is-chart-m:#3F3AAE;                  /* market line — 6.8:1 on white */
  --is-chart-a:#0F6B42;                  /* ask line */
  --is-chart-grid:rgba(27,34,51,.10);
  --is-chart-axis:#5A657C;
  --is-chart-crosshair:rgba(27,34,51,.32);
  --is-chart-fill:rgba(63,58,174,.16);
  --is-chart-fill-0:rgba(63,58,174,0);
  --is-chart-glow:rgba(63,58,174,.45);
  --is-dot-ring:#FFFFFF;





  /* page-local palettes (the :root blocks in each page's <style>) */
  --bg:var(--is-bg);--void:var(--is-bg);
  --panel:var(--is-panel);--panel-2:var(--is-panel-2);
  --card:var(--is-panel);--card2:var(--is-panel-2);
  --muted:var(--is-fg-3);--dim:var(--is-fg-dim);--dim2:var(--is-fg-faint);
  --faint:var(--is-fg-faint);--steel:var(--is-fg-dim);--neutral:var(--is-fg-dim);
  --flat:var(--is-fg-dim);--txt:var(--is-fg);--ink:var(--is-fg);
  --line-2:var(--is-line-2);--line-strong:var(--is-line-2);--line-legacy:var(--is-line);
  --hair-2:rgba(16,24,40,.06);--glass:rgba(16,24,40,.03);--glass-hi:rgba(16,24,40,.06);
}

/* PER-GAME ACCENT, DOCUMENT-WIDE.
   Keyed off the same header[data-nav-context] the drawer ramp uses, so a page
   never has to opt in. Retargeting --lt-blue here converts every existing
   light-mode interactive rule in this file to the game's own accent in one
   move — links, chips, active states, CTAs. */
html[data-theme="light"]:has(header.is-nav[data-nav-context="lorcana"]),
html[data-theme="light"]:has(header.is-nav[data-nav-context="landing"]){
  --lt-accent:#1E56BE;--lt-accent-hi:#16409A;--lt-accent-fill:#1E56BE;
}
html[data-theme="light"]:has(header.is-nav[data-nav-context="op"]){
  --lt-accent:#B92D1B;--lt-accent-hi:#8F2214;--lt-accent-fill:#B92D1B;
}
html[data-theme="light"]:has(header.is-nav[data-nav-context="riftbound"]){
  --lt-accent:#6D4BD6;--lt-accent-hi:#5636B4;--lt-accent-fill:#6D4BD6;
}
html[data-theme="light"]:has(header.is-nav[data-nav-context]){
  --lt-blue:var(--lt-accent);
  --lt-blue-hi:var(--lt-accent-hi);
}

/* Buttons: the hero CTAs kept near-white text from the page-local styles while
   this layer only softened their background, leaving white-on-white. Give both
   variants an explicit light treatment. */
html[data-theme="light"] body .btn-solid,
html[data-theme="light"] body .btn.btn-primary,
html[data-theme="light"] body a.cta-primary{
  background:var(--lt-accent-fill,var(--lt-blue)) !important;
  border-color:var(--lt-accent-fill,var(--lt-blue)) !important;
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF;
}
html[data-theme="light"] body .btn-ghost,
html[data-theme="light"] body .btn.btn-secondary,
html[data-theme="light"] body a.cta-ghost{
  background:var(--lt-surface) !important;
  border-color:var(--lt-hair-strong) !important;
  color:var(--lt-text) !important;
  -webkit-text-fill-color:var(--lt-text);
}
html[data-theme="light"] body .btn-ghost:hover,
html[data-theme="light"] body .btn.btn-secondary:hover{
  border-color:var(--lt-accent,var(--lt-blue)) !important;
  color:var(--lt-accent-hi,var(--lt-blue)) !important;
}

/* Affiliate / shop CTAs must read as the primary action, not a tinted ghost. */
html[data-theme="light"] body [data-aff-placement] .buy,
html[data-theme="light"] body [data-aff-placement] a.aff,
html[data-theme="light"] body a.buy-tcg,
html[data-theme="light"] body .spot .shop{
  background:var(--lt-accent-fill,var(--lt-blue)) !important;
  border-color:var(--lt-accent-fill,var(--lt-blue)) !important;
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF;
}

/* Trust bar / eyebrow chips: tint follows the game accent instead of a fixed
   dark-mode rgba wash that disappears on white. */
html[data-theme="light"] body .trust{
  background:var(--lt-surface) !important;
  border-color:var(--lt-hair) !important;
  color:var(--lt-text-2) !important;
}
html[data-theme="light"] body .trust b{color:var(--lt-accent-hi,var(--lt-blue)) !important}
html[data-theme="light"] body .kicker,
html[data-theme="light"] body .eyebrow{
  background:color-mix(in oklab,var(--lt-accent,var(--lt-blue)) 10%,transparent) !important;
  border-color:color-mix(in oklab,var(--lt-accent,var(--lt-blue)) 30%,transparent) !important;
  color:var(--lt-accent-hi,var(--lt-blue)) !important;
}

/* --- light-surface follow-ups (measured, not guessed) --- */
html[data-theme="light"]{
  --is-fg-faint:#56617A;    /* LIGHT2: 4.41:1 on the old canvas, 5.9:1 now */
  --is-teal:#0F6B6B;        /* 5.4:1 */
}

/* Game switcher tiles: the wash was a fixed dark rgba(), so the label kept
   fighting a near-black plate on a white page. */
html[data-theme="light"] body .gb-bar{
  background:var(--lt-surface-2) !important;border-color:var(--lt-hair) !important;
}
html[data-theme="light"] body .gb-seg{color:var(--lt-text-2) !important}
html[data-theme="light"] body .gb-seg:hover{background:rgba(16,24,40,.05) !important;color:var(--lt-text) !important}
html[data-theme="light"] body .gb-seg[aria-current="page"]{
  background:var(--lt-surface) !important;color:var(--lt-text) !important;box-shadow:inset 0 0 0 1px rgba(16,24,40,.05) !important;
}

/* Announcement strip (announce.js) — dark green plate + near-white text. */
html[data-theme="light"] body #aotv-bar,
html[data-theme="light"] body .aotv-bar{
  background:var(--lt-surface) !important;border-color:var(--lt-hair) !important;color:var(--lt-text) !important;
}
html[data-theme="light"] body #aotv-bar b,
html[data-theme="light"] body .aotv-bar b{color:var(--is-green) !important}
html[data-theme="light"] body .aotv-bar-sub,
html[data-theme="light"] body .aotv-bar i{color:var(--lt-dim) !important}
html[data-theme="light"] body .aotv-bar-cta{
  background:var(--is-green) !important;border-color:var(--is-green) !important;color:#FFFFFF !important;
}

/* Cart drawer (cart.js) */
html[data-theme="light"] body .inkcart-panel,
html[data-theme="light"] body .inkcart-ft{background:var(--lt-surface) !important;color:var(--lt-text) !important}
html[data-theme="light"] body .inkcart-panel h3{color:var(--lt-text) !important}
html[data-theme="light"] body .inkcart-note{color:var(--lt-dim) !important}
html[data-theme="light"] body .inkcart-go{
  background:var(--lt-accent-fill,var(--lt-blue)) !important;border-color:transparent !important;color:#FFFFFF !important;
}

/* Delta / confidence pills: dark-mode neons on white. */
html[data-theme="light"] body .deltapill,
html[data-theme="light"] body .conf-badge,
html[data-theme="light"] body .up,
html[data-theme="light"] body .gain{color:var(--is-green) !important}
html[data-theme="light"] body .down,
html[data-theme="light"] body .loss{color:var(--is-red-hi) !important}

/* Landing "Enter <game>" links (src/routes/index.tsx --pk) */
html[data-theme="light"] .lp-pick-blue{--pk:#2563D6}
html[data-theme="light"] .lp-pick-red{--pk:#B92D1B}
html[data-theme="light"] .lp-pick-teal{--pk:#0F6B6B}

/* Brand chip beside the wordmark */
html[data-theme="light"] body .is-brand-tcg{color:var(--lt-dim) !important;border-color:var(--lt-hair-strong) !important}

/* On-accent ink. These controls paint text with var(--is-bg) so it reads as
   "page colour on brand fill" — correct in dark, white-on-gold in light. */
html[data-theme="light"] body .deskbuy,
html[data-theme="light"] body .deskbuy .l,
html[data-theme="light"] body .deskbuy .r,
html[data-theme="light"] body .rbtn.on,
html[data-theme="light"] body .sh-tab[aria-pressed="true"]{color:#10131D !important;-webkit-text-fill-color:#10131D}

/* Wordmark: the "Sight" half uses the brand-hi accent, unreadable on white. */
html[data-theme="light"] .lp-lockup,
html[data-theme="light"] body .is-nav-brand{
  --is-brand:var(--lt-accent,#1E56BE);
  --is-brand-hi:var(--lt-accent-hi,#16409A);
}

/* ── LIGHT2 final sweep ───────────────────────────────────────────────────
   Individually measured offenders the token passes could not reach: raw #fff
   ink that only made sense on a dark panel, and accent fills whose hue stays
   bright in light mode (so their ink must be dark, not the white --is-on-fill).
   Every value below was picked to clear WCAG AA at 320/390/412/1280.        */
html[data-theme="light"] .stat .v,
html[data-theme="light"] .pf-name,
html[data-theme="light"] .sx .val{color:var(--is-fg) !important}

/* Selected CTA / tab fills: brand blue in light, not gold (LIGHTGOLD1 — gold on a
   light canvas reads as washed-out mustard and fails AA). White ink on blue. */
html[data-theme="light"] .pa-strip-cta,
html[data-theme="light"] .tfb.on,
html[data-theme="light"] .subtab.on{
  background:linear-gradient(180deg,#2A63D0,#1E56BE) !important;
  border-color:transparent !important;
  color:#FFFFFF !important;
}

/* dark accent fills in light mode read best with white ink */
html[data-theme="light"] .boxrow .bbuy{
  background:var(--lt-blue) !important;
  background-image:none !important;
  color:#FFFFFF !important;
}
html[data-theme="light"] .ix-breadth .bseg[data-b="fa"],
html[data-theme="light"] .ix-breadth .bseg[data-b="sf"]{
  background:var(--lt-down) !important;color:#FFFFFF !important;
}

/* faint labels that lean on opacity instead of a token */
html[data-theme="light"] .ix-trend .tchip .tlab{opacity:1 !important;color:var(--is-fg-dim) !important}
html[data-theme="light"] .boxrow .bmlabels .bratio{color:var(--is-fg-dim) !important}
html[data-theme="light"] #ixSentLab.lab{color:#6E1409 !important}

/* the dismiss "✕" on the Pro strip and the card-grid arrows */
html[data-theme="light"] .pa-strip-x{color:var(--is-fg-dim) !important}
html[data-theme="light"] .fsArrow{
  background:var(--is-panel) !important;border-color:var(--is-line-2) !important;color:var(--is-fg) !important;
}
html[data-theme="light"] #exampleHide{
  color:var(--is-fg) !important;background:var(--is-scrim-strong) !important;border-color:var(--is-line-2) !important;
}
html[data-theme="light"] .is-crumbs .sep,
html[data-theme="light"] .crumbs .sep{color:var(--is-fg-dim) !important}

/* Opacity-dimmed glyphs: on a dark canvas a .35 alpha still reads, on a light
   one it dissolves. Restore alpha and let the token carry the dimming. */
html[data-theme="light"] .trust .sep,
html[data-theme="light"] .tc-vrow .sep{opacity:1 !important;color:var(--is-fg-dim) !important}
html[data-theme="light"] .boxrow .bmlabels .bratio{opacity:1 !important}
html[data-theme="light"] .wl-star{
  /* the star floats over card art, so it carries its own scrim rather than
     relying on whatever pixel sits behind it */
  color:var(--is-fg) !important;opacity:1 !important;
  background:var(--is-scrim-strong) !important;border-radius:999px !important;
  box-shadow:var(--is-shadow-1) !important;
}
html[data-theme="light"] .empty-art{
  color:#1E56BE !important;border-color:var(--is-line-2) !important;box-shadow:var(--is-shadow-1) !important;
}

/* ── LIGHT3: measured stragglers from scripts/qa/light-sweep.py ────────────
   Every rule below replaces ink or a plate that only ever made sense on a
   dark canvas. Values chosen to clear WCAG AA at 390 and 1280. Dark mode is
   untouched — these are all scoped to html[data-theme="light"].          */

/* Attack of the Vine: card-tile meta was a mint keyline colour (1.9:1 here),
   hero body copy and buttons were dark-canvas ink. */
html[data-theme="light"] .aotv-cardtile-meta,
html[data-theme="light"] .aotv-hero p,
html[data-theme="light"] .aotv-sub,
html[data-theme="light"] .aotv-note{color:var(--is-fg-dim) !important}
html[data-theme="light"] .aotv-cardtile,
html[data-theme="light"] .aotv-panel{
  background:var(--is-panel) !important;border-color:var(--is-line) !important;
}

/* Buttons whose fill keeps a bright hue in light mode: dark-gold plate, white
   ink. `.btn.primary` was painting white on white on /attack-of-the-vine. */
html[data-theme="light"] .btn.primary,
html[data-theme="light"] .aotv-btn.primary,
html[data-theme="light"] .inline-cta a.primary,
html[data-theme="light"] body .inkcart-go{
  background:var(--is-gold-hi) !important;background-image:none !important;
  border-color:var(--is-gold-hi) !important;
  color:#FFFFFF !important;-webkit-text-fill-color:#FFFFFF;
}

/* Ghost / pill buttons that carried a dark plate into light mode. */
html[data-theme="light"] .nf-btn.nf-btn-ghost,
html[data-theme="light"] .mf-pill{
  background:var(--is-panel) !important;
  border-color:var(--is-line-2) !important;
  color:var(--is-gold) !important;
}

/* Ink-pair tiles (/guides/best-lorcana-decks.html): white name + pastel neon
   role labels. The gradient stripe still carries the pair's colours. */
html[data-theme="light"] .pair-tile .pt-name{color:var(--is-fg) !important}
html[data-theme="light"] .pair-tile .pt-role,
html[data-theme="light"] .pair-tile strong{color:var(--is-fg-3) !important}
html[data-theme="light"] .pair-tile .pt-cta{color:var(--is-blue-hi) !important}

/* Long-form blog / guide prose: pull-quotes and emphasis kept dark-mode ink. */
html[data-theme="light"] .pull{color:var(--is-fg-2) !important}
html[data-theme="light"] .pull em,
html[data-theme="light"] .pull i,
html[data-theme="light"] .prose em{color:var(--is-gold-hi) !important}
html[data-theme="light"] .credit,
html[data-theme="light"] .is-foot-credits,
html[data-theme="light"] .is-foot-social span,
html[data-theme="light"] .is-social span{color:var(--is-fg-dim) !important}

/* Prerendered market rows ship inline styles, so these need !important to
   land. Row ink and the gainer delta were both dark-canvas values. */
html[data-theme="light"] .grid-h a,
html[data-theme="light"] .grid-h > div,
html[data-theme="light"] #static-fallback a{color:var(--is-fg) !important}
html[data-theme="light"] .grid-h span[style*="5be3a3"],
html[data-theme="light"] .grid-h span[style*="5BE3A3"]{color:var(--is-green) !important}

/* Wordmark: the "Sight" half still resolved to the dark-mode brand-hi on the
   surfaces that don't carry .is-nav-brand / .lp-lockup. */
html[data-theme="light"] .brand b,
html[data-theme="light"] .is-nav-brand b,
html[data-theme="light"] .lp-lockup b{color:var(--is-blue-hi) !important}

/* ── LIGHT4: second measured pass ──────────────────────────────────────── */

/* Ink-pair table rows (guides): bold name was pure white, the role label is an
   inline pastel hex, so both need !important to be overridden here. */
html[data-theme="light"] .row > b,
html[data-theme="light"] .row > span > strong{color:var(--is-fg) !important}
html[data-theme="light"] .row > span > strong[style]{color:var(--is-fg-2) !important}

/* Long-form article emphasis (blog + guides) was a dark-mode gold. */
html[data-theme="light"] article em,
html[data-theme="light"] .prose em{color:var(--is-gold-hi) !important}

/* Attack of the Vine: product tags, live banner and float pills all used
   neon-on-dark hues; body copy kept a dark-canvas grey. */
html[data-theme="light"] .aotv-body p,
html[data-theme="light"] .aotv p,
html[data-theme="light"] .prod p{color:var(--is-fg-dim) !important}
html[data-theme="light"] .prod .tag{
  color:var(--is-fg-2) !important;border-color:var(--is-line-2) !important;
  background:var(--is-wash-2) !important;
}
html[data-theme="light"] .cd-live{color:var(--is-green) !important}
/* Float pills sit on card art: give them an opaque plate instead of a blur. */
html[data-theme="light"] .fr,
html[data-theme="light"] .fr.up,
html[data-theme="light"] .fr.tr{
  background:var(--is-panel) !important;color:var(--is-fg) !important;
  border-color:var(--is-line-2) !important;backdrop-filter:none !important;
  box-shadow:var(--is-shadow-1) !important;
}
/* Hero labels over the ink-art plate need the same treatment. */
html[data-theme="light"] .aotv-hero-art b,
html[data-theme="light"] .aotv-hero-art span{color:var(--is-fg) !important}

/* Wordmark: the app-route lockups use their own class names. */
html[data-theme="light"] .lp-lockup-word b,
html[data-theme="light"] .is-nav-brand span b,
html[data-theme="light"] .is-foot-brand b{color:var(--is-blue-hi) !important}

/* Footer "love letter" link and any bare accent link on a light plate. */
html[data-theme="light"] .is-foot a[style*="F5A524"],
html[data-theme="light"] .is-foot span[style*="F5A524"],
html[data-theme="light"] .is-love a,
html[data-theme="light"] .is-love span{color:var(--is-gold-hi) !important}

/* 404 page (rendered by the app shell) shipped a fixed dark plate. */
html[data-theme="light"] .nf-wrap{
  background:var(--is-bg) !important;color:var(--is-fg) !important;
}
html[data-theme="light"] .nf-h1{color:var(--is-fg) !important}
html[data-theme="light"] .nf-eyebrow{color:var(--is-blue-hi) !important}
html[data-theme="light"] .nf-sub,
html[data-theme="light"] .nf-hint{color:var(--is-fg-dim) !important}
html[data-theme="light"] .nf-btn-primary{
  background:var(--is-blue-hi) !important;color:#FFFFFF !important;
}
html[data-theme="light"] .nf-btn-ghost{
  background:var(--is-panel) !important;color:var(--is-fg) !important;
  border-color:var(--is-line-2) !important;
}
html[data-theme="light"] .nf-btn-quiet{color:var(--is-fg-dim) !important}

/* ── LIGHT5: final measured stragglers ─────────────────────────────────── */
/* Attack of the Vine quick-facts plate was a dark translucent panel. */
html[data-theme="light"] .aotv-qf{
  background:var(--is-panel) !important;border-color:var(--is-line-2) !important;
}
html[data-theme="light"] .aotv-qf b{color:var(--is-fg) !important}
html[data-theme="light"] .aotv-qf span{color:var(--is-fg-dim) !important}
/* Newsletter block: dim body copy + white-on-white submit. */
html[data-theme="light"] .nl p,
html[data-theme="light"] .nl em{color:var(--is-fg-dim) !important}
html[data-theme="light"] .nl-form button{
  background:var(--is-blue-hi) !important;color:#FFFFFF !important;
}
/* "Beta" chip and inline movers deltas kept neon-on-dark values. */
html[data-theme="light"] .beta{color:#7E170E !important;background:var(--is-wash-2) !important}
html[data-theme="light"] .row strong,
html[data-theme="light"] article strong{color:var(--is-fg) !important}

/* ── LIGHT6: hub CTAs, gradient headline text, glance grids ─────────────── */
/* premium.css/skin-pages.css win on specificity with
   `.btn:not(.primary):not(.btn-primary):not(.btn-amz)` and flatten solid CTAs
   to a 3.5% glass wash. Restore a real accent fill for the solid variants. */
html[data-theme="light"] body a.btn.btn-solid:not(.btn-ghost):not(.ghost):not(.secondary),
html[data-theme="light"] body a.btn.btn-primary:not(.btn-ghost):not(.ghost):not(.secondary),
html[data-theme="light"] body button.btn.btn-solid:not(.btn-ghost):not(.ghost):not(.secondary),
html[data-theme="light"] body a.cta.primary:not(.btn-ghost):not(.ghost):not(.secondary),
html[data-theme="light"] body a.cta-primary:not(.btn-ghost):not(.ghost):not(.secondary){
  background:var(--lt-accent-fill,var(--lt-blue)) !important;
  background-image:none !important;
  border-color:var(--lt-accent-fill,var(--lt-blue)) !important;
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
  box-shadow:0 10px 24px -14px rgba(16,24,40,.45) !important;
}
/* Gradient headline words (light cyan/violet ramps) wash out on the light
   canvas: use the per-game high-contrast accent as solid ink instead. */
html[data-theme="light"] h1 .grad,
html[data-theme="light"] h2 .grad,
html[data-theme="light"] body .grad{
  background:none !important;
  background-image:none !important;
  -webkit-background-clip:border-box !important;
  background-clip:border-box !important;
  color:var(--lt-accent-hi,var(--is-fg)) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,var(--is-fg)) !important;
}
/* Guide "at a glance" cells: guarantee real ink regardless of inherited clip. */
html[data-theme="light"] .glance .g,
html[data-theme="light"] .glance .k,
html[data-theme="light"] .glance .v,
html[data-theme="light"] .tl .step .k,
html[data-theme="light"] .tl .step .v{
  background:none !important;
  -webkit-background-clip:border-box !important;
  background-clip:border-box !important;
}
html[data-theme="light"] .glance .k,
html[data-theme="light"] .tl .step .k{
  color:var(--is-fg-dim) !important;-webkit-text-fill-color:var(--is-fg-dim) !important;
}
html[data-theme="light"] .glance .v,
html[data-theme="light"] .tl .step .v{
  color:var(--is-fg) !important;-webkit-text-fill-color:var(--is-fg) !important;
}

/* ── LIGHT7: card-detail buy controls + neon icon ink (all three games) ──── */
/* Accent-on-accent: the big buy button and the sticky bar painted accent text
   on an accent fill (1:1). Ink on any accent fill is always white. */
html[data-theme="light"] body a.gobig,
html[data-theme="light"] body a.gobig *,
html[data-theme="light"] body .stickyb .l,
html[data-theme="light"] body .stickyb .r,
html[data-theme="light"] body .sticky .gobig,
html[data-theme="light"] body a.gobig span{
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}
html[data-theme="light"] body a.gobig{
  background:var(--lt-accent-fill,var(--lt-blue)) !important;
  background-image:none !important;
  border-color:var(--lt-accent-hi,var(--lt-blue-hi)) !important;
}
/* Range buttons: selected pill needs white ink; idle pill needs real contrast. */
html[data-theme="light"] body button.rbtn{
  color:var(--is-fg) !important;-webkit-text-fill-color:var(--is-fg) !important;
  border-color:var(--is-line-2) !important;
}
html[data-theme="light"] body button.rbtn.on{
  background:var(--lt-accent-fill,var(--lt-blue)) !important;
  border-color:var(--lt-accent-hi,var(--lt-blue-hi)) !important;
  color:#FFFFFF !important;-webkit-text-fill-color:#FFFFFF !important;
}
/* Neon glyph ink (watch star, add, ink diamond, compare, alert bell rows). */
html[data-theme="light"] body span.icn,
html[data-theme="light"] body span.icn.wl-ico,
html[data-theme="light"] body .alertbtn,
html[data-theme="light"] body .alertbtn span,
html[data-theme="light"] body .cd-alert span{
  color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
}
/* Rarity chip + "no image" caption + 30D badge were sub-4.5:1 muted values. */
html[data-theme="light"] body .rarity,
html[data-theme="light"] body .chip.rar{
  color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
}
html[data-theme="light"] body .noimg,
html[data-theme="light"] body .noart{color:var(--is-fg-dim) !important}
/* Cart drawer CTA: white on #16409A measured 3.37:1 at 14.5px. */
html[data-theme="light"] body a.inkcart-go{
  background:#3F2900 !important;background-image:none !important;
  border-color:#3F2900 !important;color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}

/* ── LIGHT8: sticky buy bar, alert buttons, chart ranges, art placeholder ── */
html[data-theme="light"] body .stickybuy a .l,
html[data-theme="light"] body .stickybuy a .r,
html[data-theme="light"] body a.deskbuy .l,
html[data-theme="light"] body a.deskbuy .r{
  color:#FFFFFF !important;-webkit-text-fill-color:#FFFFFF !important;
}
html[data-theme="light"] body .stickybuy a,
html[data-theme="light"] body a.deskbuy{
  background:var(--lt-accent-fill,var(--lt-blue)) !important;
  background-image:none !important;
  border-color:var(--lt-accent-hi,var(--lt-blue-hi)) !important;
}
html[data-theme="light"] body button.ink-alert-btn,
html[data-theme="light"] body button.ink-alert-btn span{
  color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
}
/* Idle range pill relied on opacity .55 for "off" state (3.5:1). */
html[data-theme="light"] body button.rbtn{
  opacity:1 !important;color:var(--is-fg-dim) !important;
  -webkit-text-fill-color:var(--is-fg-dim) !important;
}
/* Art placeholder: neon rarity + faint caption inside the empty slab. */
html[data-theme="light"] body .card-art-ph > div{
  color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
}
html[data-theme="light"] body .card-art-ph > div:last-child{
  color:var(--is-fg-dim) !important;-webkit-text-fill-color:var(--is-fg-dim) !important;
}
/* Delta pill window label was 78% opacity mid-green on a green wash. */
html[data-theme="light"] body .deltapill small{
  opacity:1 !important;color:var(--is-green-hi,#0B5136) !important;
  -webkit-text-fill-color:var(--is-green-hi,#0B5136) !important;
}
/* Fan-finds pills: neutral ink (a Lorcana gold literal leaked onto OP/RB). */
html[data-theme="light"] body .mf-pill{color:var(--is-fg) !important}
html[data-theme="light"] body .mf-arr{color:var(--is-fg-dim) !important}
/* Brand wordmark: the "Sight" half kept a light blue (2.6:1 on white) and also
   drifted from the per-game accent. Pin it to the game's high-contrast accent. */
html[data-theme="light"] body header.is-nav b,
html[data-theme="light"] body header.is-nav .is-nav-brand b,
html[data-theme="light"] body a.is-nav-logo b{
  color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,var(--is-violet-hi)) !important;
}

/* ── LIGHT9: vault/skin page token ramp (profit calculators, blog, guides) ──
   skin-pages.css + vault-pages.css ship a dark-only --vp-* token set: inputs
   were a 35% black wash, "ink" was near-white, hairlines were white-alpha and
   the accent was a pale blue. Retargeting the tokens converts every rule in
   those two sheets at once instead of chasing individual selectors. */
html[data-theme="light"]{
  --vp-ink:var(--is-fg);
  --vp-dim:var(--is-fg-dim);
  --vp-faint:var(--is-fg-faint);
  --vp-steel:var(--is-fg-dim);
  --vp-input:#FFFFFF;
  --vp-glass:var(--is-wash-1);
  --vp-hair:var(--is-line);
  --vp-hair-2:var(--is-line);
  --vp-gold:var(--lt-accent,#1E56BE);
  --vp-gold-soft:var(--lt-accent-hi,#16409A);
  --vp-amber:var(--lt-accent,#1E56BE);
  --vp-sapphire:var(--is-blue-hi,#1F63C8);
  --vp-amethyst:#6D4BD6;
  --vp-emerald:var(--is-green-hi,#137A4F);
  --vp-ruby:var(--is-red-hi,#B3261E);
}
/* The two sheets also hard-set the page canvas + panels to near-black. */
html[data-theme="light"] body{ background:var(--is-bg) !important; color:var(--vp-ink) !important; }
html[data-theme="light"] body .pc-field input,
html[data-theme="light"] body .pc-field select,
html[data-theme="light"] body input[type="text"],
html[data-theme="light"] body input[type="number"],
html[data-theme="light"] body input[type="email"],
html[data-theme="light"] body select,
html[data-theme="light"] body textarea{
  background:#FFFFFF !important;
  color:var(--is-fg) !important;
  border-color:var(--is-line-2) !important;
}
/* Tool-hero chips sit on a deliberately dark art stage: keep the chip dark and
   restore light ink (the global ink flip made the numbers near-invisible). */
html[data-theme="light"] body .th-chip .gv-mid{ color:#F2F5FC !important;-webkit-text-fill-color:#F2F5FC !important }
html[data-theme="light"] body .th-chip .gv-low{ color:#BFD4F5 !important;-webkit-text-fill-color:#BFD4F5 !important }
html[data-theme="light"] body .th-chip .gv-top{ color:#5BE0A4 !important;-webkit-text-fill-color:#5BE0A4 !important }
/* Set tiles (all three games): the tag kept a generic blue and the tracked-value
   figure a pale gold (1.9:1 on white). Both follow the game accent now. */
html[data-theme="light"] body .setTile-tag{
  color:var(--lt-accent,#1E56BE) !important;-webkit-text-fill-color:var(--lt-accent,#1E56BE) !important;
}
html[data-theme="light"] body .setTile-val{
  color:var(--lt-accent-hi,#16409A) !important;-webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}

/* ── LIGHT10: grading calculator + affiliate buttons ─────────────────────────
   grading-profit-calculator.html hard-sets near-white ink (#F4F6FC/#E0E5F2)
   and a #222739 input fill with !important; and .aff-btn relied on a light
   gradient under white ink. */
html[data-theme="light"] body .panel h2,
html[data-theme="light"] body .kpi .v,
html[data-theme="light"] body .toggle b,
html[data-theme="light"] body .check h3,
html[data-theme="light"] body .brk .row,
html[data-theme="light"] body .brk .row:last-child,
html[data-theme="light"] body .brk .row span,
html[data-theme="light"] body .brk .row b{
  color:var(--is-fg) !important;-webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .fld input,
html[data-theme="light"] body .fld select{
  background:#FFFFFF !important;border:1px solid var(--is-line-2) !important;
  color:var(--is-fg) !important;-webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .aff-btn{
  background:var(--lt-accent-fill,#1E56BE) !important;background-image:none !important;
  color:#FFFFFF !important;-webkit-text-fill-color:#FFFFFF !important;
  border-color:var(--lt-accent-hi,#16409A) !important;box-shadow:none !important;
}
html[data-theme="light"] body .aff-btn.eby{
  background:#FFFFFF !important;color:var(--is-fg) !important;
  -webkit-text-fill-color:var(--is-fg) !important;border:1px solid var(--is-line-2) !important;
}
html[data-theme="light"] body .ch-streak{ color:var(--is-fg-dim) !important;-webkit-text-fill-color:var(--is-fg-dim) !important }
/* Bright dark-mode up/down greens/reds are unreadable as text on the light
   canvas; retarget the page-local tokens at body level so every consumer
   (breakdown amounts, verdicts, kpis) inherits AA-safe ink. */
html[data-theme="light"] body{
  --up:var(--is-green-hi,#137A4F);
  --down:var(--is-red-hi,#B3261E);
  --faint:var(--is-fg-dim);
  --dim:var(--is-fg-dim);
}
html[data-theme="light"] body .kpi{
  background:#FFFFFF !important;border:1px solid var(--is-line) !important;box-shadow:none !important;
}
html[data-theme="light"] body .kpi .k{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .kpi .v,
html[data-theme="light"] body .faq summary{ color:var(--is-fg) !important;-webkit-text-fill-color:var(--is-fg) !important }
html[data-theme="light"] body .gp-sl-svc,
html[data-theme="light"] body .aff-disc,
html[data-theme="light"] body .aff-disc b{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .verdict.good .vval{ color:var(--is-green-hi,#137A4F) !important }
html[data-theme="light"] body .verdict.bad .vval{ color:var(--is-red-hi,#B3261E) !important }
html[data-theme="light"] body .verdict.warn .vval{ color:var(--is-blue-hi,#1F63C8) !important }
/* Gold-filled kit buttons need their dark ink back (the on-fill pass lifted it). */
html[data-theme="light"] body a.gk-btn,
html[data-theme="light"] body a.dk-btn{
  color:#1F1500 !important;-webkit-text-fill-color:#1F1500 !important;
}
html[data-theme="light"] body{ --pc-up:#137A4F; --pc-down:#B3261E; }
html[data-theme="light"] body .verdict.good .vval{ color:#0F6A44 !important }
html[data-theme="light"] body .aff-disc b,
html[data-theme="light"] body p b[style*="AAB2C6"]{ color:var(--is-fg) !important }

/* ── LIGHT11: collection hero (.pf-hero) — stranded dark stage ───────────────
   The portfolio hero shipped a fixed dark gradient stage with light ink baked
   into its children. Under the global ink flip that became dark-on-dark: the
   "My" half of the headline, the lede and the Deck Lab / My-decks tiles were
   effectively invisible. Convert the whole stage to light surfaces; shared by
   Lorcana, One Piece and Riftbound (same classes, per-game accent tokens). */
html[data-theme="light"] body .pf-hero{
  background:linear-gradient(180deg,#FFFFFF,var(--is-wash-1)) !important;
  border-color:var(--is-line) !important;
  box-shadow:var(--is-shadow-1,0 10px 30px -22px rgba(16,24,40,.35)) !important;
}
html[data-theme="light"] body .pf-hero::before,
html[data-theme="light"] body .pf-hero::after{ opacity:.16 !important }
html[data-theme="light"] body .pf-hero h1,
html[data-theme="light"] body .pf-hero h1 .accent{
  color:var(--is-fg) !important;-webkit-text-fill-color:var(--is-fg) !important;
  background:none !important;animation:none !important;
}
html[data-theme="light"] body .pf-hero h1 .accent{
  color:var(--lt-accent-hi,#16409A) !important;-webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}
html[data-theme="light"] body .pf-hero .lede{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .pf-hero .kicker{
  background:var(--is-wash-2) !important;border-color:var(--is-line-2) !important;
  color:var(--lt-accent-hi,#16409A) !important;
}
html[data-theme="light"] body .pf-inks span{ border-color:var(--is-line-2) !important;box-shadow:none !important }
/* Feature tiles */
html[data-theme="light"] body .pf-fc{
  background:#FFFFFF !important;border-color:var(--is-line) !important;color:var(--is-fg) !important;
}
html[data-theme="light"] body .pf-fc::before{ opacity:.22 !important }
html[data-theme="light"] body .pf-fc h3,
html[data-theme="light"] body .dk-n,
html[data-theme="light"] body .dk-v{ color:var(--is-fg) !important }
html[data-theme="light"] body .pf-fc p,
html[data-theme="light"] body .dk-empty,
html[data-theme="light"] body .dk-m{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .pf-fc-cta{ color:var(--lt-accent-hi,#16409A) !important }
html[data-theme="light"] body .dk-row{
  background:var(--is-wash-1) !important;border-color:var(--is-line) !important;color:var(--is-fg) !important;
}
html[data-theme="light"] body .dk-o{ color:var(--is-green-hi,#137A4F) !important }
html[data-theme="light"] body .dk-o.part{ color:var(--lt-accent-hi,#16409A) !important }
html[data-theme="light"] body .dk-o.none{ color:var(--is-fg-dim) !important }
/* Unavailable tiles: keep them visibly quiet, but readable. */
html[data-theme="light"] body .pf-fc-off{ opacity:1 !important;background:var(--is-wash-1) !important }
html[data-theme="light"] body .pf-fc-off h3,
html[data-theme="light"] body .pf-fc-off .dk-empty{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .pf-fc-off p{ color:var(--is-fg-faint) !important }
html[data-theme="light"] body .pf-fc-off .pf-fc-ico,
html[data-theme="light"] body .pf-fc-off .pf-fc-art{ filter:grayscale(.5) !important }

/* ================= LIGHT12 — Pack Lab surfaces (light only; dark untouched) ================= */
/* 1. Hero: dark-mode text glow smears on light backgrounds */
html[data-theme="light"] body .h1-hero,
html[data-theme="light"] body .h1-hero .g,
html[data-theme="light"] body .h1-sub,
html[data-theme="light"] body .pl-hero p,
html[data-theme="light"] body .pl-hero span{ text-shadow:none !important }
html[data-theme="light"] body .h1-sub{ color:var(--is-fg-dim) !important }

/* 2. Stranded dark panels */
html[data-theme="light"] body .vault-panel,
html[data-theme="light"] body .share-panel,
html[data-theme="light"] body .kofi-card,
html[data-theme="light"] body .ink-pwa-banner{
  background:linear-gradient(180deg,#FFFFFF,var(--is-wash-2,#F4F6FA)) !important;
  border-color:var(--is-line,rgba(20,28,48,.14)) !important;
  box-shadow:var(--is-shadow-1,0 2px 10px rgba(16,24,40,.07)) !important;
}
html[data-theme="light"] body .vault-panel h2,
html[data-theme="light"] body .vault-panel h3,
html[data-theme="light"] body .share-panel h2,
html[data-theme="light"] body .share-panel h3,
html[data-theme="light"] body .kofi-card strong,
html[data-theme="light"] body .ink-pwa-banner strong{ color:var(--is-fg,#141C30) !important; -webkit-text-fill-color:var(--is-fg,#141C30) !important; background:none !important; text-shadow:none !important }
html[data-theme="light"] body .vault-panel p,
html[data-theme="light"] body .vault-panel li,
html[data-theme="light"] body .vault-panel summary,
html[data-theme="light"] body .vault-panel small,
html[data-theme="light"] body .share-panel p,
html[data-theme="light"] body .share-panel li,
html[data-theme="light"] body .share-panel summary,
html[data-theme="light"] body .share-panel small,
html[data-theme="light"] body .kofi-card p,
html[data-theme="light"] body .kofi-card span,
html[data-theme="light"] body .ink-pwa-banner p,
html[data-theme="light"] body .ink-pwa-banner span{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .vault-panel input,
html[data-theme="light"] body .share-panel input{
  background:#fff !important; color:var(--is-fg,#141C30) !important; border-color:var(--is-line,rgba(20,28,48,.18)) !important;
}
html[data-theme="light"] body .vault-panel details,
html[data-theme="light"] body .share-panel details{
  background:var(--is-wash-3,#EEF2F8) !important; border-color:var(--is-line,rgba(20,28,48,.12)) !important;
}

/* 3. Ghost controls: chips, odds links, save-data buttons */
html[data-theme="light"] body .pl-langchip,
html[data-theme="light"] body .pl-sd-btn,
html[data-theme="light"] body .oddslink{
  color:var(--is-fg,#141C30) !important;
  border-color:var(--is-line,rgba(20,28,48,.18)) !important;
}
html[data-theme="light"] body .pl-langchip:not(.is-on){ opacity:.72 !important }
html[data-theme="light"] body .oddslink{ text-decoration-color:var(--is-line) }

/* 4. Disclaimer aside (inline dark gradient) */
html[data-theme="light"] body .pl-disclaimer{
  background:var(--is-wash-2,#F4F6FA) !important;
  border-color:var(--is-line,rgba(20,28,48,.14)) !important;
  color:var(--is-fg-dim) !important;
}
html[data-theme="light"] body .pl-disclaimer b{ color:var(--is-fg,#141C30) !important }
html[data-theme="light"] body .pl-disclaimer a{ color:var(--lt-accent-hi,#1E56BE) !important }

/* 5. Newsletter / footer inline CTA inputs that inherited the dark fill */
html[data-theme="light"] body .ir-cta input,
html[data-theme="light"] body .nl-inline input,
html[data-theme="light"] body input[placeholder="you@email.com"]{
  background:#fff !important; color:var(--is-fg,#141C30) !important; border:1px solid var(--is-line,rgba(20,28,48,.18)) !important;
}

/* LIGHT12b — remaining Pack Lab strays */
html[data-theme="light"] body .is-foot-credits{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .is-foot-credits a,
html[data-theme="light"] body .is-foot-credits span{ color:var(--lt-accent-hi,#1E56BE) !important; border-bottom-color:var(--is-line,rgba(20,28,48,.25)) !important }
html[data-theme="light"] body .pl-quickbar a b,
html[data-theme="light"] body .pl-quickbar a{ color:var(--is-fg,#141C30) !important; -webkit-text-fill-color:var(--is-fg,#141C30) !important }
html[data-theme="light"] body [data-go] b{ color:inherit !important; -webkit-text-fill-color:currentColor !important }

/* LIGHT12c — Pack Lab parity value bar (OP / Riftbound): white ink on white card */
html[data-theme="light"] body .plp-valbar .stat b,
html[data-theme="light"] body .plp-valbar .stat span,
html[data-theme="light"] body .plp-valbar b{ color:var(--is-fg,#141C30) !important; -webkit-text-fill-color:var(--is-fg,#141C30) !important }
html[data-theme="light"] body .plp-valbar .stat small,
html[data-theme="light"] body .plp-valbar .stat i{ color:var(--is-fg-dim) !important }

/* ================= LIGHT13 — sitewide sweep remediation (light only) ================= */
/* struck-through reference prices: dark-mode opacity trick kills contrast */
html[data-theme="light"] body s,
html[data-theme="light"] body del{ color:var(--is-fg-3) !important; opacity:1 !important }

/* pale-gold / neon prices on light cards */
html[data-theme="light"] body .price,
html[data-theme="light"] body span.price,
html[data-theme="light"] body .s-price,
html[data-theme="light"] body .ch.thin,
html[data-theme="light"] body .grank,
html[data-theme="light"] body .hub-go,
html[data-theme="light"] body .kw-tag{
  color:var(--lt-accent-hi,#16409A) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
  opacity:1 !important;
}

/* market-sets movers strip: near-white ink + neon deltas */
html[data-theme="light"] body .mkm-nm,
html[data-theme="light"] body .mkm-val{ color:var(--is-fg) !important }
html[data-theme="light"] body .mkm-sub{ color:var(--is-fg-faint) !important }
html[data-theme="light"] body .mkm-dl{ color:var(--is-fg-2) !important }
html[data-theme="light"] body .mkm-dl.up,
html[data-theme="light"] body .mkm-dl[data-dir="up"]{ color:var(--lt-up) !important }
html[data-theme="light"] body .mkm-dl.down,
html[data-theme="light"] body .mkm-dl[data-dir="down"]{ color:var(--lt-down) !important }

/* stranded dark set-health / shop strip (OP + Riftbound market-sets) */
html[data-theme="light"] body .sh-card,
html[data-theme="light"] body .sh-panel,
html[data-theme="light"] body .set-health,
html[data-theme="light"] body #setHealth,
html[data-theme="light"] body .sh-wrap{
  background:linear-gradient(180deg,#FFFFFF,#F4F6FA) !important;
  border-color:var(--is-line) !important;
  color:var(--is-fg) !important;
}
html[data-theme="light"] body .sh-name,
html[data-theme="light"] body .sh-val{ color:var(--is-fg) !important }
html[data-theme="light"] body .sh-blabel,
html[data-theme="light"] body .sh-mover,
html[data-theme="light"] body .sh-sub{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .sh-trend.sh-up{ color:var(--lt-up) !important }
html[data-theme="light"] body .sh-trend.sh-down{ color:var(--lt-down) !important }

/* white ink stranded on the light canvas */
html[data-theme="light"] body .ptile-title,
html[data-theme="light"] body .ptile h3,
html[data-theme="light"] body .setchip{ color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important }

/* rarity-band panels (market-rarity) */
html[data-theme="light"] body .rp-band-h,
html[data-theme="light"] body .rp-band-l,
html[data-theme="light"] body .rp-vf{ color:var(--is-fg) !important }
html[data-theme="light"] body .rp-tp.up,
html[data-theme="light"] body .v.up{ color:var(--lt-up) !important }
html[data-theme="light"] body .rp-tp.down,
html[data-theme="light"] body .v.down{ color:var(--lt-down) !important }

/* dark market subnav strip */
html[data-theme="light"] body .mk-subnav{
  background:var(--is-wash-3,#EEF2F8) !important; border-color:var(--is-line) !important;
}
html[data-theme="light"] body .mk-subnav-link{ color:var(--is-fg-2) !important }
html[data-theme="light"] body .mk-subnav-link.is-on{ color:var(--lt-accent-hi) !important }

/* editorial / marketing pages: neon inline emphasis */
html[data-theme="light"] body .lede span.n,
html[data-theme="light"] body span.n,
html[data-theme="light"] body p.source,
html[data-theme="light"] body .lg{ color:var(--lt-accent-hi,var(--is-fg-2)) !important }
html[data-theme="light"] body .chglbl{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .chglbl.up{ color:var(--lt-up) !important }
html[data-theme="light"] body .chglbl.down{ color:var(--lt-down) !important }
html[data-theme="light"] body .tc-disc,
html[data-theme="light"] body .disc,
html[data-theme="light"] body .aff-disc{ color:var(--is-fg-2) !important }

/* ================= LIGHT14 — sweep pass 2 ================= */
/* Set Health rows/tabs kept a hardcoded dark fill */
html[data-theme="light"] body .sh-row,
html[data-theme="light"] body .sh-tab{
  background:#FFFFFF !important; border-color:var(--is-line) !important; color:var(--is-fg) !important;
}
html[data-theme="light"] body .sh-tab[aria-pressed="true"]{ color:#FFFFFF !important; background:var(--lt-accent-fill,#1E56BE) !important; border-color:var(--lt-accent-fill,#1E56BE) !important }
html[data-theme="light"] body .sh-thin{ color:var(--lt-accent-hi) !important; border-color:var(--is-line-2) !important; background:var(--is-wash-2) !important }

/* Rarity Pulse cards were a dark gradient stage */
html[data-theme="light"] body .rp-card{
  background:linear-gradient(180deg,#FFFFFF,#F4F6FA) !important; border-color:var(--is-line) !important; color:var(--is-fg) !important;
}
html[data-theme="light"] body .rp-tile{ background:#FFFFFF !important; border-color:var(--is-line) !important }
html[data-theme="light"] body .rp-band,
html[data-theme="light"] body .rp-band-h,
html[data-theme="light"] body .rp-band-l,
html[data-theme="light"] body .rp-stat .l,
html[data-theme="light"] body .rp-card .l{ color:var(--is-fg-2) !important }
html[data-theme="light"] body .rp-stat .v{ color:var(--is-fg) !important }

/* market-sets chart chrome + shop tiles: pale ink on the light canvas */
html[data-theme="light"] body .mkc-chip,
html[data-theme="light"] body .mkc-range,
html[data-theme="light"] body .mkc-cap,
html[data-theme="light"] body .plshare-state,
html[data-theme="light"] body .plshare-honesty,
html[data-theme="light"] body .share-honesty,
html[data-theme="light"] body .notice,
html[data-theme="light"] body .ptile-stat{ color:var(--is-fg-2) !important }
html[data-theme="light"] body .mkc-view.on{ color:#FFFFFF !important; background:var(--lt-accent-fill,#1E56BE) !important; border-color:var(--lt-accent-fill,#1E56BE) !important }
html[data-theme="light"] body .mkm-flag,
html[data-theme="light"] body .fxb-vault-eye,
html[data-theme="light"] body .delta,
html[data-theme="light"] body .pk,
html[data-theme="light"] body .pick-cta,
html[data-theme="light"] body .kw-chev,
html[data-theme="light"] body .when,
html[data-theme="light"] body .tchip-verified{ color:var(--lt-accent-hi,var(--is-fg-2)) !important; -webkit-text-fill-color:var(--lt-accent-hi,var(--is-fg-2)) !important }

/* white ink stranded on light: titles, tags, CTAs, pack faces */
html[data-theme="light"] body .pick-title,
html[data-theme="light"] body .p-title,
html[data-theme="light"] body .go,
html[data-theme="light"] body .tag,
html[data-theme="light"] body .s-buy,
html[data-theme="light"] body .sub,
html[data-theme="light"] body .l,
html[data-theme="light"] body summary,
html[data-theme="light"] body .lede strong,
html[data-theme="light"] body article strong,
html[data-theme="light"] body .prose strong,
html[data-theme="light"] body .body strong{ color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important }
html[data-theme="light"] body .p-sub,
html[data-theme="light"] body .p-foot{ color:var(--is-fg-2) !important; -webkit-text-fill-color:var(--is-fg-2) !important }

/* accent-filled controls need white ink, not dark accent ink */
html[data-theme="light"] body .cta-btn.primary,
html[data-theme="light"] body .tab.is-on,
html[data-theme="light"] body button#t-open[aria-selected="true"],
html[data-theme="light"] body .plshare-btn{ color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important }
html[data-theme="light"] body .plshare-btn{ background:var(--lt-accent-fill,#1E56BE) !important; border-color:var(--lt-accent-fill,#1E56BE) !important }
html[data-theme="light"] body button#t-open{ color:var(--is-fg) !important }

/* remaining stranded dark strips */
html[data-theme="light"] body .trade-gap,
html[data-theme="light"] body .tr-side,
html[data-theme="light"] body .plshare-wrap{
  background:var(--is-wash-3,#EEF2F8) !important; border-color:var(--is-line) !important; color:var(--is-fg) !important;
}

/* editorial numeric emphasis (characters, shop, curators, packs odds) */
html[data-theme="light"] body .chars b,
html[data-theme="light"] body .ch-card b,
html[data-theme="light"] body .odds b,
html[data-theme="light"] body .shop b,
html[data-theme="light"] body .stile b,
html[data-theme="light"] body .ptile b{ color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important }

/* ================= LIGHT15 — final stragglers ================= */
html[data-theme="light"] body details b,
html[data-theme="light"] body summary b,
html[data-theme="light"] body .odds-body b,
html[data-theme="light"] body li b,
html[data-theme="light"] body p b,
html[data-theme="light"] body p strong,
html[data-theme="light"] body li strong,
html[data-theme="light"] body td b{ color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important }
html[data-theme="light"] body p span,
html[data-theme="light"] body li span,
html[data-theme="light"] body .liq,
html[data-theme="light"] body .notice,
html[data-theme="light"] body .ptile-stat,
html[data-theme="light"] body .hub-kick,
html[data-theme="light"] body .plshare-eyebrow,
html[data-theme="light"] body .p-crest,
html[data-theme="light"] body .req{ color:var(--is-fg-2) !important }
html[data-theme="light"] body .trade-panel,
html[data-theme="light"] body .tside,
html[data-theme="light"] body .gap,
html[data-theme="light"] body [class*="tr-"] > span{ color:var(--is-fg) !important }
html[data-theme="light"] body .trade-panel,
html[data-theme="light"] body .tside{ background:#FFFFFF !important; border-color:var(--is-line) !important }

/* ================= LIGHT16 — Ink Market Index panel (was a stranded dark stage) ================= */
html[data-theme="light"] body .index{
  background:linear-gradient(180deg,#FFFFFF,#F3F6FB) !important;
  border-color:var(--is-line) !important;
  box-shadow:var(--is-shadow-1,0 1px 2px rgba(16,24,40,.06)) !important;
  color:var(--is-fg) !important;
}
html[data-theme="light"] body .index::before{
  background:radial-gradient(70% 130% at 100% 0%,rgba(138,92,0,.06),transparent 55%) !important;
}
html[data-theme="light"] body .ix-name,
html[data-theme="light"] body .ix-s .v,
html[data-theme="light"] body .ix-interp b,
html[data-theme="light"] body .idx-num{ color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important }
html[data-theme="light"] body .ix-sub,
html[data-theme="light"] body .ix-interp,
html[data-theme="light"] body .ix-cap,
html[data-theme="light"] body .btake,
html[data-theme="light"] body .bh,
html[data-theme="light"] body .tnote,
html[data-theme="light"] body .idx-sub,
html[data-theme="light"] body .idx-help{ color:var(--is-fg-2) !important }
html[data-theme="light"] body .ix-s .l,
html[data-theme="light"] body .idx-lbl{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .ix-tk{
  color:var(--lt-accent-hi,#16409A) !important; border-color:var(--is-line-2) !important; background:var(--is-wash-2) !important;
}
html[data-theme="light"] body .ix-interp .u,
html[data-theme="light"] body .ix-s .v.up{ color:var(--lt-up) !important }
html[data-theme="light"] body .ix-interp .d,
html[data-theme="light"] body .ix-s .v.down{ color:var(--lt-down) !important }
html[data-theme="light"] body .ix-interp .f{ color:var(--is-fg-2) !important }
html[data-theme="light"] body .ix-sent,
html[data-theme="light"] body .tchip{ background:#FFFFFF !important; border-color:var(--is-line) !important; color:var(--is-fg) !important }
html[data-theme="light"] body .ix-sent .lab,
html[data-theme="light"] body .tchip .tlab{ color:var(--is-fg-dim) !important }
html[data-theme="light"] body .ix-spark{ border-top-color:var(--is-line) !important }
html[data-theme="light"] body .ix-s .meter{ border-color:var(--is-line) !important; background:var(--is-wash-2) !important }
html[data-theme="light"] body .bseg{ color:#FFFFFF !important }
html[data-theme="light"] body .bseg[data-b="fl"]{ color:var(--is-fg) !important }

/* ================= LIGHT17 — Pack Lab binder tabs, share panel, Ko-fi ================= */
/* binder sort tabs: inactive labels were white-on-white; active pill was a blue clash */
html[data-theme="light"] body .bsort{ background:var(--is-wash-2) !important; border-color:var(--is-line) !important }
html[data-theme="light"] body .bsort button{ color:var(--is-fg-2) !important }
html[data-theme="light"] body .bsort button.on,
html[data-theme="light"] body .plp-btabs button.on{
  background:var(--lt-accent-fill,#1E56BE) !important; color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important; box-shadow:none !important;
}
html[data-theme="light"] body .plp-btabs{ background:var(--is-wash-2) !important; border-color:var(--is-line) !important }
html[data-theme="light"] body .plp-btabs button{ color:var(--is-fg-2) !important }
html[data-theme="light"] body .plp-btabs button:hover{ color:var(--is-fg) !important }

/* share-pack panel inherited near-white ink on the light card */
html[data-theme="light"] body .share-panel,
html[data-theme="light"] body .share-panel *:not(a):not(button){ color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important }
html[data-theme="light"] body .share-panel .share-honesty,
html[data-theme="light"] body .share-panel .sub,
html[data-theme="light"] body .share-panel small{ color:var(--is-fg-2) !important; -webkit-text-fill-color:var(--is-fg-2) !important }

/* Ko-fi support card: blue-on-dark pill clashed with the gold accent */
html[data-theme="light"] body .kofi-card{ border-color:var(--is-line-2) !important; box-shadow:var(--is-shadow-1,0 1px 2px rgba(16,24,40,.06)) !important }
html[data-theme="light"] body .kofi-card .kofi-btn,
html[data-theme="light"] body .kofi-line .kofi-btn{
  background:var(--lt-accent-fill,#1E56BE) !important; border-color:var(--lt-accent-fill,#1E56BE) !important; color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
}

/* ================= LIGHT18 — Pack Lab route sweep (light only) ================= */
/* Section tabs: the dark-mode selected state is a faint blue wash + white ink,
   which reads as invisible on the light canvas. Give it the game accent fill. */
html[data-theme="light"] body .pl-tabs [role="tab"]{
  color:var(--is-fg-2) !important; -webkit-text-fill-color:var(--is-fg-2) !important;
}
html[data-theme="light"] body .pl-tabs [role="tab"][aria-selected="true"],
html[data-theme="light"] body .pl-tabs button#t-open[aria-selected="true"]{
  background:var(--lt-accent-fill,#1E56BE) !important;
  box-shadow:none !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
}
html[data-theme="light"] body .pl-tabs [role="tab"] .tab-ico{
  color:inherit !important; -webkit-text-fill-color:currentColor !important; opacity:1 !important;
}
html[data-theme="light"] body .pl-tabs{
  background:var(--is-wash-2,#F4F6FA) !important; border-color:var(--is-line) !important;
}

/* Language selector: accent fill needs white ink; the "Language" label was white */
html[data-theme="light"] body .pl-langgroup .pl-langchip.on,
html[data-theme="light"] body .pl-langgroup .pl-langchip[aria-checked="true"]{
  background:var(--lt-accent-fill,#1E56BE) !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important; opacity:1 !important;
}
html[data-theme="light"] body .pl-langbar-lbl,
html[data-theme="light"] body .pl-lang-txt{ color:var(--is-fg-2) !important; -webkit-text-fill-color:var(--is-fg-2) !important; opacity:1 !important }

/* Rip hint + vault/share panel copy that kept dark-stage ink */
html[data-theme="light"] body .unlim-hint{ color:var(--is-fg-2) !important; opacity:1 !important }
html[data-theme="light"] body .vault-eyebrow{
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
  background:var(--is-wash-3,#EEF2F8) !important; border-color:var(--is-line-2,rgba(20,28,48,.18)) !important;
}
html[data-theme="light"] body .vault-honesty{
  background:var(--is-wash-3,#EEF2F8) !important; border-color:var(--is-line,rgba(20,28,48,.12)) !important;
  color:var(--is-fg-2) !important;
}
html[data-theme="light"] body .vault-honesty b{ color:var(--is-fg) !important }

/* Share row: outline buttons had near-white ink on a white card */
html[data-theme="light"] body .share-btn,
html[data-theme="light"] body .share-btn.reddit,
html[data-theme="light"] body .share-btn.x,
html[data-theme="light"] body .share-btn.fb,
html[data-theme="light"] body .share-open{
  color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important;
  background:#FFFFFF !important; border-color:var(--is-line-2,rgba(20,28,48,.18)) !important;
}
html[data-theme="light"] body .share-btn.primary{
  background:var(--lt-accent-fill,#1E56BE) !important; border-color:var(--lt-accent-fill,#1E56BE) !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
}
/* Vault odds disclosure: translucent dark fills stacked into a gray wash */
html[data-theme="light"] body .vault-disclosure,
html[data-theme="light"] body .vault-disclosure .vault-honesty{
  background:#FFFFFF !important; border-color:var(--is-line,rgba(20,28,48,.12)) !important;
}
html[data-theme="light"] body .vault-odds,
html[data-theme="light"] body .vault-odds li{ color:var(--is-fg) !important }
/* Reveal strip + post-rip buy panel: dark-stage ink on the light canvas */
html[data-theme="light"] body .revmeta,
html[data-theme="light"] body .revmeta .rp,
html[data-theme="light"] body .revname,
html[data-theme="light"] body #rcName,
html[data-theme="light"] body #rcMeta{ color:var(--is-fg-2) !important; -webkit-text-fill-color:var(--is-fg-2) !important; opacity:1 !important }
html[data-theme="light"] body #rcName{ color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important }
html[data-theme="light"] body .pl-bb-head{ color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important }

/* ================= LIGHT19 — long-tail editorial pages (light only) =================
   Guides / price guides / blog posts kept a few dark-mode idioms: white or pale ink
   on the light canvas, gold-on-gold affiliate buttons, and one card grid whose inline
   background stayed dark. Text tokens only; dark mode is untouched. */

/* Tier list — archetype tiles and the methodology cards */
html[data-theme="light"] body .arch .a-name{
  color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .arch .a-role{
  color:var(--is-fg-3) !important; -webkit-text-fill-color:var(--is-fg-3) !important;
}
html[data-theme="light"] body .method .m{
  background:var(--is-panel) !important; border-color:var(--is-line) !important;
}
html[data-theme="light"] body .method .m b{
  color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .method .m span{
  color:var(--is-fg-3) !important; -webkit-text-fill-color:var(--is-fg-3) !important;
}
html[data-theme="light"] body .aff-buy h3{
  color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .aff-buy .aff-eyb{
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}

/* "Cards under $50" tiles ship an inline dark surface; the ink was already tokenized,
   so only the surface + status chips need the light treatment. */
html[data-theme="light"] body a.c50-tile{
  background:var(--is-panel) !important; border-color:var(--is-line) !important;
  color:var(--is-fg) !important;
}
html[data-theme="light"] body a.c50-tile .tag{
  background:color-mix(in oklab,var(--is-fg) 6%,transparent) !important;
  border-color:var(--is-line) !important;
  color:var(--is-fg-2) !important; -webkit-text-fill-color:var(--is-fg-2) !important;
}

/* Blog card carousel: rank badge needs white ink on the accent fill, and the
   scroll arrows were a dark pill (invisible glyph) on the light canvas. */
html[data-theme="light"] body .bc-badge{
  background:var(--lt-accent-fill,#1E56BE) !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
  box-shadow:0 2px 6px rgba(16,24,40,.18) !important;
}
html[data-theme="light"] body .bc-arrow{
  background:var(--is-panel) !important;
  border-color:var(--lt-accent,#1E56BE) !important;
  color:var(--lt-accent-hi,#16409A) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
  box-shadow:0 2px 10px rgba(16,24,40,.16) !important;
}

/* Price-guide section numbers + stat cells: neon gold on a pale page */
html[data-theme="light"] body h2 .num.inkpill,
html[data-theme="light"] body .num.inkpill{
  color:var(--lt-accent-hi,#16409A) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
  background:color-mix(in oklab,var(--lt-accent,#1E56BE) 10%,transparent) !important;
  border-color:color-mix(in oklab,var(--lt-accent,#1E56BE) 32%,transparent) !important;
}
html[data-theme="light"] body .stat-v.gold,
html[data-theme="light"] body .setTile-val{
  color:var(--lt-accent-hi,#16409A) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}

/* Affiliate button inside price-guide card tiles: gold ink on a gold fill */
html[data-theme="light"] body .mkc-tile .mkc-buy{
  background:var(--lt-accent-fill,#1E56BE) !important;
  border-color:var(--lt-accent-fill,#1E56BE) !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
}

/* Rotation table: the "rotates out" salmon fails on white */
html[data-theme="light"] body article td.out{
  color:var(--is-red-hi,#B42318) !important; -webkit-text-fill-color:var(--is-red-hi,#B42318) !important;
}

/* Cross-link rails sit on a wash, so the mid-tone accent lands just under AA */
html[data-theme="light"] body .xlinks a{
  color:var(--lt-accent-hi,#16409A) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}

/* Disabled carousel arrows: 35% ink reads as a smudge on the light canvas.
   Keep the "unavailable" cue but land the glyph above 3:1 for large text. */
html[data-theme="light"] body .bc-arrow[disabled]{ opacity:.7 !important }

/* ================= LIGHT20 — editorial long-tail, second pass (light only) =================
   Promo-card timeline, ink guide, keyword guide, price-guide chips and the blog index. */

/* Promo cards: tiles, timeline copy and the affiliate chips */
html[data-theme="light"] body .tile-price,
html[data-theme="light"] body .tl-eg b,
html[data-theme="light"] body .mkt-stat b{
  color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .tl-card .how{
  color:var(--is-fg-3) !important; -webkit-text-fill-color:var(--is-fg-3) !important;
}
html[data-theme="light"] body .tl-tag{
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
  background:color-mix(in oklab,var(--lt-accent,#1E56BE) 8%,transparent) !important;
  border-color:color-mix(in oklab,var(--lt-accent,#1E56BE) 28%,transparent) !important;
}
html[data-theme="light"] body .chip .ct,
html[data-theme="light"] body .chip.active .ct{ opacity:.9 !important }
html[data-theme="light"] body .tile-aff a.e,
html[data-theme="light"] body .tile-aff a.t{
  background:var(--is-wash-2,#F1F4F9) !important;
  border-color:var(--is-line) !important;
  color:var(--is-fg-2) !important; -webkit-text-fill-color:var(--is-fg-2) !important;
}
html[data-theme="light"] body .cta-btn.primary{
  background:var(--lt-accent-fill,#1E56BE) !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
}

/* Ink guide: keep the ink hue legible instead of washing it out.
   The glyph disc stays dark so the bright ink colour reads; the word chips and
   role labels move to high-contrast ink on the light card. */
html[data-theme="light"] body .ink .glyph{
  background:#141926 !important; border-color:rgba(255,255,255,.16) !important;
}
html[data-theme="light"] body .ink .role{
  color:color-mix(in oklab,var(--c1,#1E56BE) 42%,#0B0E16) !important;
  -webkit-text-fill-color:color-mix(in oklab,var(--c1,#1E56BE) 42%,#0B0E16) !important;
}
html[data-theme="light"] body .ink .swl span{
  background:var(--is-wash-2,#F1F4F9) !important; border-color:var(--is-line) !important;
  color:var(--is-fg-2) !important; -webkit-text-fill-color:var(--is-fg-2) !important;
}
html[data-theme="light"] body .ink .swl span.w{
  color:var(--is-red-hi,#8F2214) !important; -webkit-text-fill-color:var(--is-red-hi,#8F2214) !important;
  border-color:color-mix(in oklab,var(--is-red-hi,#8F2214) 30%,transparent) !important;
}

/* Keyword guide: the hero panel and tip callouts stayed dark-mode */
html[data-theme="light"] body .kw-hero{
  background:var(--is-panel) !important; border-color:var(--is-line) !important;
}
html[data-theme="light"] body .kw-tip{
  background:color-mix(in oklab,var(--lt-accent,#1E56BE) 6%,transparent) !important;
  border-left-color:var(--lt-accent,#1E56BE) !important;
  color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .kw-tip b,
html[data-theme="light"] body .kw-updated{
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}
html[data-theme="light"] body .kw-updated{
  background:color-mix(in oklab,var(--lt-accent,#1E56BE) 10%,transparent) !important;
  border-color:color-mix(in oklab,var(--lt-accent,#1E56BE) 30%,transparent) !important;
}

/* Price guides: trend chips, iconic card names, video credit */
html[data-theme="light"] body .hot{
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
  background:color-mix(in oklab,var(--lt-accent,#1E56BE) 10%,transparent) !important;
  border-color:color-mix(in oklab,var(--lt-accent,#1E56BE) 30%,transparent) !important;
}
html[data-theme="light"] body .mkc-tile.is-iconic .mkc-nm{
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}
html[data-theme="light"] body .yt-credit{
  color:var(--is-fg-3) !important; -webkit-text-fill-color:var(--is-fg-3) !important;
}

/* Blog index: category tag sits on the accent fill */
html[data-theme="light"] body .post .thumb .tag{
  background:var(--lt-accent-fill,#1E56BE) !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
}

/* LIGHT21 — last long-tail editorial stragglers (light only) */
html[data-theme="light"] body .sd-card b,
html[data-theme="light"] body .sdlist b,
html[data-theme="light"] body .opx-hero h1,
html[data-theme="light"] body .opx-hero p,
html[data-theme="light"] body .cardstrip .nm,
html[data-theme="light"] body .nm{
  color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .cardstrip .num,
html[data-theme="light"] body figcaption,
html[data-theme="light"] body .num{
  color:var(--is-fg-3) !important; -webkit-text-fill-color:var(--is-fg-3) !important;
}
html[data-theme="light"] body .opx-hero{ background:var(--is-panel) !important }
html[data-theme="light"] body .opx-pill{
  background:var(--lt-accent-fill,#1E56BE) !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
}
html[data-theme="light"] body .deck-card b,
html[data-theme="light"] body .meta .nm{
  color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .meta .num{
  color:var(--is-fg-3) !important; -webkit-text-fill-color:var(--is-fg-3) !important;
}
html[data-theme="light"] body .cardgrid>a{
  background:var(--is-panel) !important; border-color:var(--is-line) !important;
}
html[data-theme="light"] body .cardgrid .pr{
  color:var(--is-fg) !important; -webkit-text-fill-color:var(--is-fg) !important;
}
html[data-theme="light"] body .conf-b.conf-verified{
  background:color-mix(in oklab,var(--is-green-hi,#1B7A45) 12%,transparent) !important;
  border-color:color-mix(in oklab,var(--is-green-hi,#1B7A45) 34%,transparent) !important;
  color:var(--is-green-hi,#1B7A45) !important; -webkit-text-fill-color:var(--is-green-hi,#1B7A45) !important;
}

/* ─────────────────────────────────────────────────────────────────────────
   LIGHTGOLD1 — owner call: no gold in light mode.
   The dark-tuned brand gold (#F5B53D) is stamped as a literal into the
   unify-nav header block and a few CTA styles, at a specificity that beats the
   token remap. Restate those surfaces in the light-mode brand blue.
   Dark mode is untouched — every rule is html[data-theme="light"]-scoped.
   ───────────────────────────────────────────────────────────────────────── */
html[data-theme="light"]{
  --gold:var(--lt-accent,#1E56BE); --Amber:var(--lt-accent,#1E56BE); --amber:var(--lt-accent,#1E56BE);
  --is-gold:var(--lt-accent,#1E56BE); --is-gold-hi:var(--lt-accent-hi,#16409A);
}
html[data-theme="light"] body header.is-nav .is-nav-cta{
  background:var(--lt-accent,#1E56BE) !important; background-image:none !important;
  border:1px solid var(--lt-accent,#1E56BE) !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
}
html[data-theme="light"] body header.is-nav .is-nav-cta:hover{
  background:var(--lt-accent-hi,#16409A) !important; border-color:var(--lt-accent-hi,#16409A) !important;
  box-shadow:0 8px 22px -8px rgba(30,86,190,.45) !important;
}
html[data-theme="light"] body header.is-nav .is-nav-cta .is-nav-cta-icon{
  background:rgba(255,255,255,.22) !important; color:#FFFFFF !important;
}
/* Newsletter CTA panel button (ink-report-cta.js literal). */
html[data-theme="light"] body .irc-form button{
  background:var(--lt-accent,#1E56BE) !important; color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
  box-shadow:0 6px 16px -8px rgba(30,86,190,.55) !important;
}
/* Ghost buttons / segment pills / soft chips that carried a gold hairline. */
html[data-theme="light"] body .btn.btn-ghost{
  border-color:color-mix(in oklab,var(--lt-accent,#1E56BE) 45%,transparent) !important;
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}
html[data-theme="light"] body .btn.btn-ghost:hover{ border-color:var(--lt-accent,#1E56BE) !important }
html[data-theme="light"] body .gb-seg[aria-current],
html[data-theme="light"] body .gb-seg.on,
html[data-theme="light"] body .gb-seg[aria-selected="true"]{
  border-color:var(--lt-accent,#1E56BE) !important; color:#123A85 !important;
}

/* premium.css/vault-pages.css put a gold hairline on every generic .btn with a
   :not() chain that outranks a plain override — match its specificity here. */
html[data-theme="light"] body .cta:not(.primary),
html[data-theme="light"] body .btn:not(.primary):not(.btn-primary):not(.btn-amz){
  border-color:color-mix(in oklab,var(--lt-accent,#1E56BE) 42%,transparent) !important;
}
html[data-theme="light"] body .cta:not(.primary):hover,
html[data-theme="light"] body .btn:not(.primary):not(.btn-primary):not(.btn-amz):hover{
  border-color:var(--lt-accent,#1E56BE) !important;
  background:color-mix(in oklab,var(--lt-accent,#1E56BE) 8%,transparent) !important;
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}
/* Streak pill kept a gold gradient wash. */
html[data-theme="light"] body header.is-nav .ink-ss-nav-btn,
html[data-theme="light"] body .ink-ss-nav-btn{
  background-image:linear-gradient(135deg,color-mix(in oklab,var(--lt-accent,#1E56BE) 14%,transparent),color-mix(in oklab,var(--lt-accent,#1E56BE) 8%,transparent)) !important;
  border-color:color-mix(in oklab,var(--lt-accent,#1E56BE) 45%,transparent) !important;
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}

/* Streak pill (streak.js writes an inline style attribute, so this needs
   !important via its slot). */
html[data-theme="light"] body #streakSlot > a{
  border-color:color-mix(in oklab,var(--lt-accent,#1E56BE) 42%,transparent) !important;
  background:linear-gradient(135deg,color-mix(in oklab,var(--lt-accent,#1E56BE) 12%,transparent),color-mix(in oklab,var(--lt-accent,#1E56BE) 6%,transparent)) !important;
  color:var(--lt-accent-hi,#16409A) !important; -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}

/* Remaining chrome that still carried the dark-mode gold in light mode:
   game dots, portfolio/binder tabs, and the pack CTA. Decorative pack foil /
   ink-tape gradients are left alone — that's artwork, not UI colour. */
html[data-theme="light"] body .gb-seg:not([href*="/op/"]):not([href*="/riftbound/"]),
html[data-theme="light"] body #pf-tabs-strip .pf-tab:not([href*="/op/"]):not([href*="/riftbound/"]){
  --gb-accent:var(--lt-accent,#1E56BE) !important;
  --pf-accent:var(--lt-accent,#1E56BE) !important;
}
html[data-theme="light"] body .pf-tab[aria-current],
html[data-theme="light"] body .pf-tab.on,
html[data-theme="light"] body .pf-tab[aria-selected="true"]{
  border-color:var(--lt-accent,#1E56BE) !important;
  color:var(--lt-accent-hi,#16409A) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}
html[data-theme="light"] body .opencta,
html[data-theme="light"] body .opencta.opencta-pulse,
html[data-theme="light"] body button.opencta{
  background:var(--lt-accent,#1E56BE) !important; background-image:none !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
}

/* Binder / view tabs on the collection surfaces kept gold label ink. */
html[data-theme="light"] body [data-cview],
html[data-theme="light"] body [data-cview][aria-selected="true"]{
  color:var(--lt-accent-hi,#16409A) !important;
  -webkit-text-fill-color:var(--lt-accent-hi,#16409A) !important;
}
html[data-theme="light"] body .kofi-btn{
  border-color:color-mix(in oklab,var(--lt-accent,#1E56BE) 40%,transparent) !important;
}

/* ============================================================
   PACKLAB LIGHT — session stats + achievements shelf (#rxShelf)
   The shelf was authored dark-first with literal #fff ink, white-alpha
   fills and pale gradients, so on the light canvas every title/value
   vanished and the tiles washed out. Re-seat ink, borders and accents.
   ============================================================ */
html[data-theme="light"] body #rxShelf{
  background:var(--lt-surface,#FFFFFF) !important;
  border-color:var(--lt-hair,#D2DAE6) !important;
  box-shadow:0 10px 30px -22px rgba(20,32,60,.28) !important;
}
html[data-theme="light"] body #rxShelf h3,
html[data-theme="light"] body #rxShelf .rx-life .rx-stat b,
html[data-theme="light"] body #rxShelf .rx-ach .rx-ach-name,
html[data-theme="light"] body #rxShelf .rx-best b,
html[data-theme="light"] body #rxShelf .rx-hero-best .rx-hb-name{
  color:var(--lt-text,#1B2233) !important;
  -webkit-text-fill-color:var(--lt-text,#1B2233) !important;
  background-image:none !important;
}
html[data-theme="light"] body #rxShelf .rx-shelf-sub,
html[data-theme="light"] body #rxShelf .rx-life .rx-stat span,
html[data-theme="light"] body #rxShelf .rx-ach .rx-ach-desc,
html[data-theme="light"] body #rxShelf .rx-ach .rx-ach-prog-lbl,
html[data-theme="light"] body #rxShelf .rx-ach-tier-ct{
  color:var(--lt-dim,#525D74) !important;
}
html[data-theme="light"] body #rxShelf h4{ color:var(--lt-blue-hi,#1B4CAB) !important; }

/* tiles: white cards on a tinted shelf, with a real hairline */
html[data-theme="light"] body #rxShelf .rx-life .rx-stat,
html[data-theme="light"] body #rxShelf .rx-ach{
  background:var(--lt-surface,#FFFFFF) !important;
  border-color:var(--lt-hair,#D2DAE6) !important;
  box-shadow:0 4px 14px -12px rgba(20,32,60,.35) !important;
}
html[data-theme="light"] body #rxShelf .rx-ach.unlocked{
  border-color:color-mix(in oklab,var(--lt-blue,#2563D6) 38%,var(--lt-hair,#D2DAE6)) !important;
  background:color-mix(in oklab,var(--lt-blue,#2563D6) 4%,#FFFFFF) !important;
}
html[data-theme="light"] body #rxShelf .rx-ach.locked{
  background:var(--lt-surface-2,#E7ECF4) !important;
}
html[data-theme="light"] body #rxShelf .rx-ach.locked .rx-ach-name{
  color:var(--lt-text-2,#3C465C) !important;
  -webkit-text-fill-color:var(--lt-text-2,#3C465C) !important;
}

/* icon chips: solid tinted squares instead of near-white gradients */
html[data-theme="light"] body #rxShelf .rx-life .rx-stat .rx-stat-ico,
html[data-theme="light"] body #rxShelf .rx-ach .rx-ach-ico{
  background:color-mix(in oklab,var(--lt-blue,#2563D6) 12%,#FFFFFF) !important;
  background-image:none !important;
  border-color:color-mix(in oklab,var(--lt-blue,#2563D6) 34%,transparent) !important;
  color:var(--lt-blue-hi,#1B4CAB) !important;
}
html[data-theme="light"] body #rxShelf .rx-life .rx-stat[data-acc="purple"] .rx-stat-ico{
  background:color-mix(in oklab,var(--lt-violet,#6D4BD6) 13%,#FFFFFF) !important;
  border-color:color-mix(in oklab,var(--lt-violet,#6D4BD6) 34%,transparent) !important;
}
html[data-theme="light"] body #rxShelf .rx-life .rx-stat[data-acc="green"] .rx-stat-ico{
  background:color-mix(in oklab,var(--lt-up,#0F6B42) 13%,#FFFFFF) !important;
  border-color:color-mix(in oklab,var(--lt-up,#0F6B42) 34%,transparent) !important;
}
html[data-theme="light"] body #rxShelf .rx-life .rx-stat[data-acc="red"] .rx-stat-ico{
  background:color-mix(in oklab,var(--lt-red,#B92D1B) 13%,#FFFFFF) !important;
  border-color:color-mix(in oklab,var(--lt-red,#B92D1B) 34%,transparent) !important;
}

/* progress bars: readable track + single accent fill (no pale rainbow) */
html[data-theme="light"] body #rxShelf .rx-ach .rx-ach-prog{
  background:var(--lt-surface-2,#E7ECF4) !important;
  border-color:var(--lt-hair-strong,#BAC5D6) !important;
}
html[data-theme="light"] body #rxShelf .rx-ach .rx-ach-prog>span,
html[data-theme="light"] body #rxShelf .rx-ach.unlocked .rx-ach-prog>span{
  background:var(--lt-blue,#2563D6) !important; background-image:none !important;
}

/* unlocked check badge */
html[data-theme="light"] body #rxShelf .rx-ach.unlocked .rx-ach-check{
  background:var(--lt-blue,#2563D6) !important; background-image:none !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
  box-shadow:none !important;
}

/* tier pills */
html[data-theme="light"] body #rxShelf .rx-ach-tier-lbl{
  background:var(--lt-surface,#FFFFFF) !important;
  border-color:var(--lt-hair-strong,#BAC5D6) !important;
}
html[data-theme="light"] body #rxShelf .rx-ach-tier-lbl.rxt-starter{ color:#1B4CAB !important; border-color:rgba(27,76,171,.4) !important; }
html[data-theme="light"] body #rxShelf .rx-ach-tier-lbl.rxt-collector{ color:#0F6B42 !important; border-color:rgba(15,107,66,.4) !important; }
html[data-theme="light"] body #rxShelf .rx-ach-tier-lbl.rxt-elite{ color:#5A3BC4 !important; border-color:rgba(90,59,196,.4) !important; }
html[data-theme="light"] body #rxShelf .rx-ach-tier-lbl.rxt-legendary{ color:#8A5A05 !important; border-color:rgba(138,90,5,.45) !important; box-shadow:none !important; }

/* best-pull hero + note */
html[data-theme="light"] body #rxShelf .rx-hero-best{
  background:linear-gradient(135deg,color-mix(in oklab,var(--bc,#2563D6) 12%,#FFFFFF),#FFFFFF 72%) !important;
  border-color:color-mix(in oklab,var(--bc,#2563D6) 34%,var(--lt-hair,#D2DAE6)) !important;
  box-shadow:0 12px 30px -24px rgba(20,32,60,.4) !important;
}
html[data-theme="light"] body #rxShelf .rx-hero-best::before,
html[data-theme="light"] body #rxShelf .rx-hero-best .rx-hb-disc,
html[data-theme="light"] body #rxShelf .rx-hero-best .rx-hb-meta{ color:var(--lt-dim,#525D74) !important; }
html[data-theme="light"] body #rxShelf .rx-hero-best .rx-hb-price{
  color:var(--lt-text,#1B2233) !important; -webkit-text-fill-color:var(--lt-text,#1B2233) !important;
  background-image:none !important; text-shadow:none !important;
}
html[data-theme="light"] body #rxShelf .rx-hero-best .rx-hb-buy{
  background:var(--lt-blue,#2563D6) !important; background-image:none !important;
  color:#FFFFFF !important; -webkit-text-fill-color:#FFFFFF !important;
  border-color:var(--lt-blue-hi,#1B4CAB) !important; box-shadow:none !important;
}
html[data-theme="light"] body #rxShelf .rx-best{
  background:color-mix(in oklab,var(--lt-blue,#2563D6) 6%,#FFFFFF) !important;
  border-color:color-mix(in oklab,var(--lt-blue,#2563D6) 38%,transparent) !important;
  color:var(--lt-text-2,#3C465C) !important;
}

/* ============================================================
   LIGHT-CONTRAST — sitewide definition pass
   The light theme read as one flat sheet of white: panels, hero washes and
   tool tiles all landed within a few percent of the canvas, so nothing
   signalled "this is the thing to click". This pass gives every container a
   real hairline + elevation, darkens supporting ink, and lets accent chips
   carry saturation instead of near-white tints. Tokens only — dark untouched.
   ============================================================ */

/* 1. Panels / cards: white objects on a tinted canvas with a visible edge. */
html[data-theme="light"] body .pf-hero,
html[data-theme="light"] body .panel,
html[data-theme="light"] body .card,
html[data-theme="light"] body .module,
html[data-theme="light"] body .box,
html[data-theme="light"] body section[class*="-panel"],
html[data-theme="light"] body .note,
html[data-theme="light"] body .signin-strip{
  background:var(--lt-surface) !important;
  background-image:none !important;
  border:1px solid var(--lt-hair) !important;
  box-shadow:0 1px 2px rgba(19,26,41,.05),0 12px 28px -22px rgba(19,26,41,.45) !important;
}

/* 2. Interactive tool tiles are the primary affordance — give them weight,
      a tinted face and a clear hover lift so they out-rank plain text. */
html[data-theme="light"] body .pf-fc{
  background:linear-gradient(180deg,#FFFFFF,#F3F7FD) !important;
  border:1px solid var(--lt-hair-strong) !important;
  box-shadow:0 1px 2px rgba(19,26,41,.06),0 14px 30px -24px rgba(19,26,41,.5) !important;
  transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease !important;
}
html[data-theme="light"] body .pf-fc:hover,
html[data-theme="light"] body .pf-fc:focus-visible{
  border-color:var(--lt-blue) !important;
  box-shadow:0 2px 4px rgba(19,26,41,.08),0 18px 34px -22px rgba(29,79,191,.55) !important;
  transform:translateY(-2px) !important;
}
html[data-theme="light"] body .pf-fc h3{
  color:var(--lt-text) !important;-webkit-text-fill-color:var(--lt-text) !important;
}
html[data-theme="light"] body .pf-fc p{ color:var(--lt-text-2) !important; }
html[data-theme="light"] body .pf-fc .pf-fc-cta{
  color:var(--lt-blue-hi) !important;-webkit-text-fill-color:var(--lt-blue-hi) !important;
  font-weight:700 !important;
}
/* icon chips: saturated tint + real border instead of a pale ghost square */
html[data-theme="light"] body .pf-fc .pf-fc-ico,
html[data-theme="light"] body .pf-fc .pf-fc-art{
  background:color-mix(in oklab,var(--lt-blue) 14%,#FFFFFF) !important;
  background-image:none !important;
  border:1px solid color-mix(in oklab,var(--lt-blue) 40%,transparent) !important;
  color:var(--lt-blue-hi) !important;
}
html[data-theme="light"] body .pf-fc .pf-fc-ico .isi,
html[data-theme="light"] body .pf-fc .pf-fc-art .isi{
  stroke:var(--lt-blue-hi) !important;color:var(--lt-blue-hi) !important;
}
html[data-theme="light"] body .pf-fc[data-feat="chase"] .pf-fc-art{
  background:color-mix(in oklab,var(--lt-violet) 14%,#FFFFFF) !important;
  border-color:color-mix(in oklab,var(--lt-violet) 40%,transparent) !important;
}
html[data-theme="light"] body .pf-fc[data-feat="chase"] .pf-fc-art .isi{ stroke:#553BB0 !important;color:#553BB0 !important; }
html[data-theme="light"] body .pf-fc[data-feat="dash"] .pf-fc-ico{
  background:color-mix(in oklab,var(--lt-up) 14%,#FFFFFF) !important;
  border-color:color-mix(in oklab,var(--lt-up) 40%,transparent) !important;
}
html[data-theme="light"] body .pf-fc[data-feat="dash"] .pf-fc-ico .isi{ stroke:#0C5836 !important;color:#0C5836 !important; }

/* 3. Headings and supporting copy: stop the mid-gray drift. */
html[data-theme="light"] body h1,
html[data-theme="light"] body h2,
html[data-theme="light"] body h3,
html[data-theme="light"] body h4{ color:var(--lt-text) !important; }
html[data-theme="light"] body .lede,
html[data-theme="light"] body .sub,
html[data-theme="light"] body .muted,
html[data-theme="light"] body .dim{ color:var(--lt-text-2) !important; }

/* 4. Eyebrow / kicker chips: readable brand ink on a tinted pill. */
html[data-theme="light"] body .kicker,
html[data-theme="light"] body .eyebrow,
html[data-theme="light"] body .chip{
  color:var(--lt-blue-hi) !important;
  background:color-mix(in oklab,var(--lt-blue) 9%,#FFFFFF) !important;
  border-color:color-mix(in oklab,var(--lt-blue) 32%,transparent) !important;
}

/* 5. Hairlines everywhere else — one strong step so edges actually read. */
html[data-theme="light"] body hr,
html[data-theme="light"] body .hairline{ border-color:var(--lt-hair-strong) !important; }

/* 6. The hero's dark-mode ink-glow gradients still bled a muddy tan wash over
      the white stage at 16% — drop them to a whisper so the headline, lede and
      tool tiles carry the contrast instead of a beige fog. */
html[data-theme="light"] body .pf-hero::before,
html[data-theme="light"] body .pf-hero::after{ opacity:.05 !important; }
html[data-theme="light"] body .pf-hero{
  background:linear-gradient(180deg,#FFFFFF,#F5F8FD) !important;
  border-color:var(--lt-hair-strong) !important;
}

/* ============================================================
   PANELGLOW1 (light theme) — a coloured backlight reads as a stain on a
   light canvas, so light mode consumes the SAME tokens with neutral
   values off the existing light elevation ramp (--is-shadow-1/2) plus a
   white top edge. Dark-mode values are untouched (parity gate safe).
   ============================================================ */
html[data-theme="light"]{
  --panel-glow:0 1px 2px rgba(16,24,40,.05);
  --panel-glow-hi:0 2px 4px rgba(16,24,40,.07);
  --panel-edge:inset 0 1px 0 rgba(255,255,255,.9);
  --panel-edge-hi:inset 0 1px 0 rgba(255,255,255,.95);
  --panel-lift:0 6px 16px -10px rgba(16,24,40,.16);
  --panel-lift-hi:0 10px 24px -12px rgba(16,24,40,.20);
  --panel-border:var(--is-line-2,#BAC5D6);
  --panel-border-hi:var(--is-line-3,#A3B0C4);
}
