/* RingSafe — shared design system. Vanilla CSS, dark + signal-green theme.
   Self-hosted fonts (no third-party network calls). */

/* ── Self-hosted fonts ─────────────────────────────────────────────── */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 300 700;          /* variable axis */
  font-display: swap;
  src: url('../fonts/2026/Geist-variable.woff2') format('woff2-variations'),
       url('../fonts/2026/Geist-variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('../fonts/2026/GeistMono-variable.woff2') format('woff2-variations'),
       url('../fonts/2026/GeistMono-variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/2026/InstrumentSerif-Regular.woff2') format('woff2');
}
@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/2026/InstrumentSerif-Italic.woff2') format('woff2');
}

/* ── Theme tokens (hardcoded — dark + signal-green) ──────────────────
   2026-05-11: "Option A" lift — bumped bg from #06080a → #0c1014 (slight
   elevation, page no longer feels flat); panel/elevated layers bumped
   proportionally so cards float visually; --ink-dim and --ink-mute lifted
   from 62%/42% opacity → 78%/62% so muted body text passes WCAG AA at
   smaller sizes. Accents (green/cyan) unchanged.
   2026-05-23: --ink-mute lifted 62% → 70% for tiny-text legibility on
   stat labels / eyebrows. Light-mode tokens added under [data-theme="light"]
   for the optional nav toggle (default stays dark for brand). */
:root{
  --bg:#0f1318;
  --bg-soft:#141a21;
  --panel:#191f27;
  --line:rgba(255,255,255,.10);
  --line-2:rgba(255,255,255,.17);
  --ink:#e8ece9;
  --ink-dim:rgba(232,236,233,.78);
  --ink-mute:rgba(232,236,233,.70);
  --accent:#9dff5e;
  --accent-2:#5ee7ff;
  --warn:#ff7a59;
  --violet:#c8b6ff;
  --shadow-primary:0 0 0 1px rgba(157,255,94,.4), 0 14px 40px -12px rgba(157,255,94,.45);
  --dot-glow:0 0 0 4px rgba(157,255,94,.18);
  --serif:"Instrument Serif", ui-serif, Georgia, serif;
  --sans:"Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;
  --mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  /* ── Type scale (1.25 minor third ratio, fluid via clamp) ──────────
     Use these tokens for any new heading/body styling instead of raw
     px/rem. Per-template overrides will still win on specificity for
     existing surfaces; new components inherit the scale automatically. */
  --text-2xs:    clamp(11px, 0.69rem, 12px);    /* captions, micro labels */
  --text-xs:     clamp(12px, 0.81rem, 13px);    /* small UI text, chips */
  --text-sm:     clamp(13px, 0.88rem, 14px);    /* secondary body */
  --text-base:   clamp(15px, 1rem, 16px);       /* default body (16px mobile-min) */
  --text-md:     clamp(16px, 1.13rem, 18px);    /* lede paragraph */
  --text-lg:     clamp(18px, 1.31rem, 21px);    /* h4 / large body */
  --text-xl:     clamp(22px, 1.7vw + 14px, 27px); /* h3 */
  --text-2xl:    clamp(28px, 2.5vw + 16px, 36px); /* h2 — section heads */
  --text-3xl:    clamp(36px, 4vw + 18px, 52px);   /* h1 — page heads */
  --text-display:clamp(48px, 6vw + 20px, 80px);   /* hero display */
  /* Weights */
  --w-regular:400;
  --w-medium:500;
  --w-semi:600;
  --w-bold:700;
  /* Line heights */
  --lh-display:1.02;
  --lh-tight:1.1;
  --lh-snug:1.25;
  --lh-normal:1.5;
  --lh-relaxed:1.65;
  /* Letter spacing */
  --tracking-tight:-0.025em;
  --tracking-snug:-0.015em;
  --tracking-normal:0;
  --tracking-wide:0.06em;
  --tracking-wider:0.12em;
  --tracking-widest:0.16em;
}

/* Light-mode token overrides. Activated by the nav toggle (sets
   data-theme="light" on <html>) or by prefers-color-scheme when no choice
   is stored. Accent darkens to keep ≥4.5:1 contrast on white backgrounds.

   IMPORTANT: this block also overrides LEGACY tokens from style.css
   (--white, --muted, --faint, --border, --cyan, --card, --bg2, --green,
   --cyan-dim, --cyan-glow, --glow). Legacy templates use those names
   literally for text/border/card colors, so without these overrides every
   non-2026 page renders broken in light mode (e.g., white text on white).
   Each override mirrors the dark token's semantic role rather than its
   literal colour, so cascade behaviour stays predictable. */
:root[data-theme="light"]{
  /* 2026 tokens */
  --bg:#fafbfa;
  --bg-soft:#f1f3f2;
  --panel:#ffffff;
  --line:rgba(10,12,14,.10);
  --line-2:rgba(10,12,14,.16);
  --ink:#0a0c0e;
  --ink-dim:rgba(10,12,14,.74);
  --ink-mute:rgba(10,12,14,.60);
  --accent:#00873d;
  --accent-2:#0075a6;
  --warn:#c93d18;
  --violet:#5a3ee0;
  --shadow-primary:0 0 0 1px rgba(0,135,61,.35), 0 12px 32px -14px rgba(0,135,61,.45);
  --dot-glow:0 0 0 4px rgba(0,135,61,.15);

  /* Legacy tokens (style.css) — semantic flip for light mode */
  --bg2:#f1f3f2;
  --white:#0a0c0e;                       /* legacy uses --white as text colour on dark bg → flip to dark on light */
  --muted:rgba(10,12,14,.66);            /* mid-grey muted text */
  --faint:rgba(10,12,14,.50);            /* even fainter, e.g. timestamps */
  --border:rgba(10,12,14,.12);           /* subtle dark border (legacy is cyan-tinted) */
  --cyan:#0075a6;                        /* deepened brand cyan for AA on white */
  --cyan-dim:rgba(0,117,166,.10);
  --cyan-glow:rgba(0,117,166,.18);
  --card:rgba(10,12,14,.025);            /* very subtle dark tint over white panel */
  --green:#00873d;                       /* deepened brand green */
  --glow:0 0 22px rgba(0,117,166,.14);   /* softer ambient glow */
  --brand-cyan:#00557a;                  /* darker logo-cyan variant for light bg use */
  --brand-amber:#b56a06;
  --brand-red:#b91c1c;
  --brand-violet:#7c3aed;
  --violet-dim:rgba(124,58,237,.10);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{overflow-x:hidden}
::selection{background:var(--accent);color:var(--bg)}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0}
img{max-width:100%;display:block}

/* Keyboard focus — visible everywhere, no ring on mouse clicks */
:focus{outline:none}
:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:2px;
  border-radius:4px;
}
.btn:focus-visible,
.nav-links a:focus-visible,
.nav-logo:focus-visible{
  outline-offset:3px;
  border-radius:999px;
}

/* ── Layout ────────────────────────────────────────────────────────── */
.wrap{max-width:1320px;margin:0 auto;padding:0 32px}
@media (max-width:720px){ .wrap{padding:0 20px} }

.eyebrow{font:500 11px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-mute)}
.eyebrow .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);
  margin-right:8px;vertical-align:1px;box-shadow:var(--dot-glow)}

.display{font-family:var(--sans);font-weight:500;letter-spacing:-.035em;line-height:.95;margin:0}
.display em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.02em;color:var(--ink)}
.display .mute{color:var(--ink-mute)}

.body-lg{font-size:var(--text-md);line-height:var(--lh-relaxed);color:var(--ink-dim);max-width:56ch}
.body-md{font-size:var(--text-base);line-height:var(--lh-relaxed);color:var(--ink-dim)}
.body-sm{font-size:var(--text-sm);line-height:var(--lh-normal);color:var(--ink-dim)}
.caption{font-size:var(--text-xs);line-height:var(--lh-normal);color:var(--ink-mute)}

/* ── Base typography — applies to bare h1-h6 / p / li / small wherever
   templates haven't defined their own. Per-template heading styles
   continue to win on specificity, so this is a safety net for the long
   tail (news posts, academy modules, default WP content). */
html{font-size:16px}
h1,h2,h3,h4,h5,h6{
  font-family:var(--sans);
  color:var(--ink);
  margin:0 0 .5em;
}
h1{font-size:var(--text-3xl);font-weight:var(--w-medium);letter-spacing:var(--tracking-tight);line-height:var(--lh-tight)}
h2{font-size:var(--text-2xl);font-weight:var(--w-medium);letter-spacing:var(--tracking-snug);line-height:var(--lh-snug)}
h3{font-size:var(--text-xl);font-weight:var(--w-medium);letter-spacing:var(--tracking-snug);line-height:var(--lh-snug)}
h4{font-size:var(--text-lg);font-weight:var(--w-semi);letter-spacing:var(--tracking-snug);line-height:var(--lh-snug)}
h5{font-size:var(--text-md);font-weight:var(--w-semi);line-height:var(--lh-normal)}
h6{font-size:var(--text-base);font-weight:var(--w-semi);letter-spacing:var(--tracking-wide);text-transform:uppercase;line-height:var(--lh-normal)}
/* Italic serif accent — works in any heading via <em> */
h1 em,h2 em,h3 em,h4 em{font-family:var(--serif);font-style:italic;font-weight:var(--w-regular);letter-spacing:var(--tracking-snug)}
/* Bare paragraphs / lists / table cells inherit a sensible default */
p,li,td,th,dd,dt{font-size:inherit;line-height:var(--lh-normal)}
small{font-size:var(--text-sm)}

.hr{height:1px;background:var(--line);width:100%}

/* ── Buttons ───────────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 18px;border-radius:999px;
  font-weight:500;font-size:14px;letter-spacing:-.005em;border:1px solid transparent;
  transition:transform .18s ease, background .18s ease, border-color .18s ease;
  cursor:pointer;white-space:nowrap;text-decoration:none}
.btn-primary{background:var(--accent);color:var(--bg);
  box-shadow:var(--shadow-primary)}
.btn-primary:hover{transform:translateY(-1px);filter:brightness(1.08)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-2)}
.btn-ghost:hover{border-color:rgba(255,255,255,.28);background:rgba(255,255,255,.02)}
.btn .arr{display:inline-block;transition:transform .2s ease}
.btn:hover .arr{transform:translateX(3px)}

/* ── Chip ──────────────────────────────────────────────────────────── */
.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;
  border:1px solid var(--line-2);border-radius:999px;font:500 11px/1 var(--mono);
  letter-spacing:.04em;color:var(--ink-dim);background:rgba(255,255,255,.02)}
.chip .dot-sm{width:5px;height:5px;border-radius:50%;background:var(--accent)}

/* ── Section header pattern ────────────────────────────────────────── */
.sec-head{display:grid;grid-template-columns:200px 1fr;gap:60px;align-items:start;padding-bottom:56px}
@media (max-width:900px){ .sec-head{grid-template-columns:1fr;gap:18px;padding-bottom:40px} }
.sec-head .num{font:500 12px/1 var(--mono);letter-spacing:.15em;color:var(--ink-mute);padding-top:12px}
.sec-head h2{margin:0;font-size:clamp(36px,5vw,64px);font-weight:500;letter-spacing:-.03em;line-height:1.02}
.sec-head h2 em{font-family:var(--serif);font-style:italic;font-weight:400}
.sec-head .lede{margin-top:18px;font-size:17px;line-height:1.55;color:var(--ink-dim);max-width:54ch}

/* ── Nav ───────────────────────────────────────────────────────────── */
.nav{position:fixed;top:14px;left:0;right:0;z-index:50;pointer-events:none}
.nav::before{content:"";position:fixed;top:0;left:0;right:0;height:88px;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg, rgba(6,8,10,.92) 0%, rgba(6,8,10,.78) 60%, rgba(6,8,10,0) 100%);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  -webkit-mask-image:linear-gradient(180deg, #000 0%, #000 70%, transparent 100%);
          mask-image:linear-gradient(180deg, #000 0%, #000 70%, transparent 100%)}
.nav-inner{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;
  height:54px;padding:0 14px 0 18px;border:1px solid var(--line-2);border-radius:999px;
  background:rgba(8,11,13,.94);
  -webkit-backdrop-filter:blur(24px) saturate(160%);backdrop-filter:blur(24px) saturate(160%);
  box-shadow:0 10px 32px -12px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.02) inset}
@supports not (backdrop-filter: blur(1px)){
  .nav-inner{background:rgba(8,11,13,.98)}
}
.nav-logo{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-.015em;font-size:15px;color:var(--ink)}

/* ── Brand tagline tricolor — "Cybersecurity for INDIA" ────────────────
   Bigger font + solid bright colors instead of subtle gradients so the
   colour pops at the small monospace size. INDIA gets per-letter flag
   colours (alternating saffron / white / green) which read MUCH better
   than horizontal-stripe gradient at this point size.
   Used in both .nav-logo .tag and .ftr-tag. */
.tag-cyber{
  color:var(--accent) !important;
  -webkit-text-fill-color:var(--accent);
  font-weight:600;
  letter-spacing:.14em;
}
.tag-india{
  font-weight:800;
  font-size:1.12em;
  letter-spacing:.06em;
  margin-left:3px;
  display:inline-block;
}
.tag-india .l1{color:#FF9933 !important;-webkit-text-fill-color:#FF9933;}
.tag-india .l2{color:#FFFFFF !important;-webkit-text-fill-color:#FFFFFF;}
.tag-india .l3{color:#138808 !important;-webkit-text-fill-color:#138808;}
.tag-india .l4{color:#FF9933 !important;-webkit-text-fill-color:#FF9933;}
.tag-india .l5{color:#138808 !important;-webkit-text-fill-color:#138808;}
@media (prefers-reduced-motion:no-preference){
  .tag-india span{transition:filter .25s ease}
  .nav-logo:hover .tag-india span,
  .ftr:hover .tag-india span{filter:drop-shadow(0 0 4px currentColor)}
}
.nav-links{display:flex;gap:4px}
.nav-links a{padding:8px 12px;font-size:13.5px;color:var(--ink-dim);border-radius:999px}
.nav-links a:hover, .nav-links a.active{color:var(--ink);background:rgba(255,255,255,.04)}
@media (max-width:880px){ .nav-links{display:none} }

/* ── Inner page header ─────────────────────────────────────────────── */
.phead{padding:112px 0 44px;border-bottom:1px solid var(--line);position:relative;overflow:hidden;isolation:isolate}
.phead .glow{position:absolute;inset:-30% -10% auto -10%;height:140%;
  background:radial-gradient(50% 50% at 50% 30%, rgba(157,255,94,.08), transparent 70%);
  pointer-events:none;filter:blur(20px)}
/* Atmospheric mesh backdrop (added 2026-05-24): anchored right, masked to fade
   out over the left text column. Dark mode shows it; light mode keeps a hint. */
.phead::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:url(../img/hero-mesh.webp) right center/cover no-repeat;opacity:.55;
  -webkit-mask-image:linear-gradient(90deg,transparent 20%,#000 72%);
          mask-image:linear-gradient(90deg,transparent 20%,#000 72%)}
:root[data-theme="light"] .phead::after{opacity:.16}
.phead .crumbs{font:500 11.5px/1 var(--mono);letter-spacing:.08em;color:var(--ink-mute);margin-bottom:18px;position:relative}
.phead .crumbs a{color:var(--ink-mute)}
.phead .crumbs a:hover{color:var(--ink)}
.phead .crumbs .sep{margin:0 10px;opacity:.5}
.phead h1{margin:0;font-size:clamp(34px,4.4vw,60px);font-weight:500;letter-spacing:-.035em;line-height:1.04;max-width:22ch;position:relative}
.phead h1 em{font-family:var(--serif);font-style:italic;font-weight:400}
.phead h1 .mute{color:var(--ink-mute)}
.phead .lede{margin-top:16px;font-size:16px;line-height:1.55;color:var(--ink-dim);max-width:60ch;position:relative}

@media (max-width:760px){
  .phead{padding:96px 0 36px}
  .phead h1{font-size:clamp(30px,7.4vw,42px)}
  .phead .lede{font-size:15px}
}

/* ── Page-head modifiers (used by all-modules etc.) ────────────────── */
.phead.phead-tight{padding:104px 0 36px}
.phead.phead-tight .crumbs{margin-bottom:24px}
.phead.phead-tight h1{font-size:clamp(40px,6vw,80px);line-height:1}
.phead.phead-tight .lede{margin-top:20px;font-size:17px}

/* ── CTA band ──────────────────────────────────────────────────────── */
.cta-band{padding:90px 0;border-top:1px solid var(--line);position:relative;isolation:isolate;
  background:var(--bg) url('../img/cta-band-bg.webp') center center / cover no-repeat}
/* Homepage featured-card hover — CSP-safe replacement for inline onmouseover/onmouseout */
.rs-feat-card:hover{border-color:var(--accent,#9dff5e)!important;transform:translateY(-3px)}
.cta-band::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,8,10,.55) 0%,rgba(6,8,10,.35) 50%,rgba(6,8,10,.55) 100%)}
.cta-band .inner{display:flex;align-items:center;justify-content:space-between;gap:40px;flex-wrap:wrap;position:relative}
.cta-band h3{font-size:clamp(32px,4.5vw,52px);font-weight:500;letter-spacing:-.03em;line-height:1.05;margin:0;max-width:18ch}
.cta-band h3 em{font-family:var(--serif);font-style:italic;font-weight:400}
.cta-band .cta-buttons{display:flex;gap:12px;flex-wrap:wrap}
.cta-band.cta-tight{padding:80px 0}
.cta-band.cta-tight h3{font-size:clamp(30px,4vw,48px)}
@media (max-width:760px){
  .cta-band{background-position:center center;background-size:cover}
  .cta-band::before{background:linear-gradient(180deg,rgba(6,8,10,.7) 0%,rgba(6,8,10,.55) 50%,rgba(6,8,10,.7) 100%)}
}

/* ── Stats band ────────────────────────────────────────────────────── */
.stats-band{padding:80px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
@media (max-width:760px){ .stat-grid{grid-template-columns:repeat(2,1fr);gap:32px 0} }
.stat{padding:0 28px;border-left:1px solid var(--line)}
.stat:first-child{border-left:0;padding-left:0}
.stat .num{font-size:clamp(48px,5.4vw,76px);font-weight:500;letter-spacing:-.04em;line-height:1;color:var(--ink)}
.stat .num em{font-family:var(--serif);font-style:italic;font-weight:400}
.stat .lbl{margin-top:14px;color:var(--ink-dim);font-size:14px;line-height:1.5;max-width:24ch}

/* ── Accessibility: skip link ──────────────────────────────────────── */
.skip-link{position:absolute;left:-9999px;top:0;width:1px;height:1px;overflow:hidden;
  background:var(--accent);color:var(--bg);padding:10px 16px;font:500 13px/1 var(--sans);
  border-radius:0 0 12px 0;z-index:9999}
.skip-link:focus,.skip-link:focus-visible{left:0;width:auto;height:auto;overflow:visible;outline:0}

/* ── Footer ────────────────────────────────────────────────────────── */
.ftr{padding:60px 0 50px;color:var(--ink-mute);font-size:13px}
.ftr-top{display:grid;grid-template-columns:1fr 2fr;gap:40px;padding-bottom:40px;border-bottom:1px solid var(--line)}
@media (max-width:760px){ .ftr-top{grid-template-columns:1fr} }
.ftr-cols{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
@media (max-width:760px){ .ftr-cols{grid-template-columns:repeat(2,1fr)} }
.ftr h6{margin:0 0 14px;font:500 11px/1 var(--mono);letter-spacing:.12em;color:var(--ink);text-transform:uppercase}
.ftr ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.ftr ul a{color:var(--ink-mute)}
.ftr ul a:hover{color:var(--ink)}
.ftr-bot{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:32px;flex-wrap:wrap}
.ftr-mark{display:flex;align-items:center;gap:12px;color:var(--ink)}
/* ── Card ──────────────────────────────────────────────────────────── */
.card{border:1px solid var(--line);border-radius:14px;padding:24px;background:rgba(255,255,255,.012);
  transition:background .2s, border-color .2s}
.card:hover{background:rgba(255,255,255,.025);border-color:var(--line-2)}

/* ── Reduced-motion: pause sweeps, marquees, blips, pulses ─────────── */
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* ── Theme toggle button (nav) ─────────────────────────────────────── */
.rs-theme-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:38px;margin:0 8px 0 6px;border-radius:50%;
  background:transparent;border:1px solid var(--line-2);color:var(--ink-dim);
  cursor:pointer;transition:color .18s ease, border-color .18s ease, background .18s ease, transform .18s ease;
}
.rs-theme-toggle:hover{color:var(--ink);border-color:var(--ink-mute);background:rgba(255,255,255,.04)}
.rs-theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.rs-theme-toggle .rs-theme-icon{display:none}
.rs-theme-toggle .rs-theme-icon-moon{display:block}
:root[data-theme="light"] .rs-theme-toggle .rs-theme-icon-moon{display:none}
:root[data-theme="light"] .rs-theme-toggle .rs-theme-icon-sun{display:block}
:root[data-theme="light"] .rs-theme-toggle:hover{background:rgba(0,0,0,.04)}

/* ── Light-mode polish: nav chrome + section backgrounds ───────────── */
:root[data-theme="light"] .nav::before{
  background:linear-gradient(180deg, rgba(250,251,250,.94) 0%, rgba(250,251,250,.80) 60%, rgba(250,251,250,0) 100%);
}
:root[data-theme="light"] .nav-inner{
  background:rgba(255,255,255,.94);
  box-shadow:0 10px 32px -16px rgba(10,12,14,.18), 0 0 0 1px rgba(10,12,14,.04) inset;
}
@supports not (backdrop-filter: blur(1px)){
  :root[data-theme="light"] .nav-inner{background:rgba(255,255,255,.99)}
}
:root[data-theme="light"] .nav-links a:hover,
:root[data-theme="light"] .nav-links a.active{background:rgba(10,12,14,.05)}
:root[data-theme="light"] .btn-ghost:hover{border-color:rgba(10,12,14,.28);background:rgba(10,12,14,.04)}
:root[data-theme="light"] .card{background:rgba(10,12,14,.02)}
:root[data-theme="light"] .card:hover{background:rgba(10,12,14,.04)}
:root[data-theme="light"] .chip{background:rgba(10,12,14,.03)}
:root[data-theme="light"] ::selection{background:var(--accent);color:#fff}
:root[data-theme="light"] .phead .glow{
  background:radial-gradient(50% 50% at 50% 30%, rgba(0,135,61,.10), transparent 70%);
}
:root[data-theme="light"] .cta-band::before{
  background:linear-gradient(180deg,rgba(250,251,250,.55) 0%,rgba(250,251,250,.35) 50%,rgba(250,251,250,.55) 100%);
}
@media (max-width:760px){
  :root[data-theme="light"] .cta-band::before{
    background:linear-gradient(180deg,rgba(250,251,250,.78) 0%,rgba(250,251,250,.62) 50%,rgba(250,251,250,.78) 100%);
  }
}

/* India-flag tag stays brand-accurate in light mode (white letter gets a thin border for visibility) */
:root[data-theme="light"] .tag-cyber{color:var(--accent) !important;-webkit-text-fill-color:var(--accent)}
:root[data-theme="light"] .tag-india .l2{color:#0a0c0e !important;-webkit-text-fill-color:#0a0c0e}

/* Mobile: keep toggle visible but slightly tighter */
@media (max-width:520px){
  .rs-theme-toggle{width:36px;height:36px;margin:0 4px}
}

/* ── Light-mode dropdown + mega-menu overrides ─────────────────────────
   The inline <style id="rs2026-nav-dd"> in rs2026-nav.php hardcodes dark
   backgrounds for .nav-dd / .nav-mega / hover states. These selectors win
   on specificity (root attr + class > class alone) so they correctly flip
   the chrome to a light surface in light mode. */
:root[data-theme="light"] .nav-item:hover .nav-top,
:root[data-theme="light"] .nav-item.active .nav-top,
:root[data-theme="light"] .nav-item:focus-within .nav-top{
  background:rgba(10,12,14,.05);
}
:root[data-theme="light"] .nav-dd,
:root[data-theme="light"] .nav-mega{
  background:rgba(255,255,255,.97);
  border-color:rgba(10,12,14,.10);
  box-shadow:0 24px 60px -20px rgba(10,12,14,.18), 0 0 0 1px rgba(10,12,14,.04);
}
@supports not (backdrop-filter: blur(1px)){
  :root[data-theme="light"] .nav-dd,
  :root[data-theme="light"] .nav-mega{background:rgba(255,255,255,.995)}
}
:root[data-theme="light"] .nav-dd a:hover,
:root[data-theme="light"] .mega-col a:hover{
  background:rgba(10,12,14,.05);
  color:var(--ink);
}
:root[data-theme="light"] .nav-dd .dd-all{
  color:var(--accent) !important;
  background:rgba(0,135,61,.06);
  border-color:rgba(0,135,61,.22);
}
:root[data-theme="light"] .nav-dd .dd-all:hover{
  background:rgba(0,135,61,.12);
  border-color:rgba(0,135,61,.4);
}
:root[data-theme="light"] .mega-col .mega-col-cap{
  color:var(--accent);
  border-bottom-color:rgba(0,135,61,.20);
}
:root[data-theme="light"] .mega-foot .is-feature{
  background:linear-gradient(135deg,rgba(0,135,61,.08),rgba(0,117,166,.05));
  border-color:rgba(0,135,61,.30);
  color:var(--ink);
}
:root[data-theme="light"] .mega-foot .is-feature:hover{
  background:linear-gradient(135deg,rgba(0,135,61,.14),rgba(0,117,166,.08));
  border-color:rgba(0,135,61,.45);
}
:root[data-theme="light"] .mega-foot .mega-actions a{
  color:var(--accent);
  background:rgba(0,135,61,.06);
  border-color:rgba(0,135,61,.20);
}
:root[data-theme="light"] .mega-foot .mega-actions a:hover{
  background:rgba(0,135,61,.12);
  border-color:rgba(0,135,61,.4);
}
/* "NEW" pill — accent flips dark in light mode, so flip the pill text to white for contrast */
:root[data-theme="light"] .dd-new::after{color:#fff}
/* "Soon" muted pill */
:root[data-theme="light"] .dd-soon::after{
  background:rgba(10,12,14,.06);color:var(--ink-mute);
}
/* News pulse dot — keep glow but in light-mode accent (animation end-state
   defined by the original @keyframes rs-pulse-nav fading to transparent) */
:root[data-theme="light"] .nav-pulse{box-shadow:0 0 0 4px rgba(0,135,61,.18)}
/* Auth pills — sign in/up CTAs */
:root[data-theme="light"] .nav-signin{
  color:var(--ink);
  border-color:rgba(10,12,14,.18);
}
:root[data-theme="light"] .nav-signin:hover{
  color:var(--accent);
  border-color:rgba(0,135,61,.45);
  background:rgba(0,135,61,.04);
}
:root[data-theme="light"] .nav-signup{
  color:#fff;background:var(--accent-2);border-color:var(--accent-2);
}
:root[data-theme="light"] .nav-signup:hover{
  background:#005f87;border-color:#005f87;
}
:root[data-theme="light"] .nav-cta{
  color:#fff;background:var(--accent);border-color:var(--accent);
}
:root[data-theme="light"] .nav-cta:hover{
  background:#006d31;border-color:#006d31;
}
:root[data-theme="light"] .nav-cta::before{background:rgba(10,12,14,.16)}
:root[data-theme="light"] .nav-avatar > a{border-color:rgba(10,12,14,.14)}
:root[data-theme="light"] .nav-avatar > a:hover{border-color:rgba(0,135,61,.45)}
:root[data-theme="light"] .nav-avatar .acc-meta{background:rgba(10,12,14,.025)}
/* Mobile open-menu sheet — needs light surface too */
:root[data-theme="light"] body.rs2026-nav-open .nav-links{
  background:rgba(255,255,255,.98);
  border-color:rgba(10,12,14,.10);
}
/* Burger button — already uses tokens but explicitly bind colour for clarity */
:root[data-theme="light"] .nav-burger{color:var(--ink);border-color:rgba(10,12,14,.14)}

/* ── Light-mode overrides for cross-page card patterns ─────────────────
   Each rule targets a class whose dark-mode background is hardcoded with
   dark rgba(...) — without these the card surface stays dark while the
   body flips to light, producing dark-on-light contrast islands. */

/* Academy module cards (page-academy-2026.php) — replace dark gradient with white panel */
:root[data-theme="light"] .mod-card{
  background:var(--panel);
  border-color:var(--line);
}
:root[data-theme="light"] .mod-card:hover{
  background:#ffffff;
  border-color:var(--line-2);
  box-shadow:0 8px 24px -12px rgba(10,12,14,.14);
}
:root[data-theme="light"] .mod-card .mod-tier.is-free{
  color:var(--accent);
  background:rgba(0,135,61,.08);
  border-color:rgba(0,135,61,.32);
}

/* Guide-body inline code blocks (used across all /academy/* and /*-guide/ posts) */
:root[data-theme="light"] .guide-body code,
:root[data-theme="light"] .post-content code,
:root[data-theme="light"] .entry-content code{
  background:rgba(10,12,14,.06);
  color:#b85800;
  border-color:rgba(10,12,14,.10);
}
:root[data-theme="light"] .guide-body pre,
:root[data-theme="light"] .post-content pre,
:root[data-theme="light"] .entry-content pre{
  background:rgba(10,12,14,.04);
  color:var(--ink);
  border-color:rgba(10,12,14,.10);
}

/* Generic callout / CTA cards using brand-cyan/violet/amber tints — bump
   alpha slightly so the tint is still visible against white. */
:root[data-theme="light"] .guide-callout,
:root[data-theme="light"] .dpdp-cta-card,
:root[data-theme="light"] .guide-cta-card{
  background:linear-gradient(135deg,rgba(0,117,166,.06),rgba(124,58,237,.04));
  border-color:rgba(0,117,166,.32);
}
:root[data-theme="light"] .guide-callout.warn{
  background:linear-gradient(135deg,rgba(185,28,28,.06),rgba(181,106,6,.04));
  border-color:rgba(185,28,28,.32);
}

/* Site-wide news/post card patterns. Most use var(--card) which we already
   flipped, but some have explicit dark backgrounds — neutralise here. */
:root[data-theme="light"] .post-card,
:root[data-theme="light"] .news-card,
:root[data-theme="light"] .article-card,
:root[data-theme="light"] .rs-card,
:root[data-theme="light"] .track-card{
  background:var(--panel);
  border-color:var(--line);
  color:var(--ink);
}
:root[data-theme="light"] .post-card:hover,
:root[data-theme="light"] .news-card:hover,
:root[data-theme="light"] .article-card:hover,
:root[data-theme="light"] .rs-card:hover,
:root[data-theme="light"] .track-card:hover{
  border-color:var(--line-2);
  background:#ffffff;
  box-shadow:0 8px 24px -12px rgba(10,12,14,.12);
}

/* Sidebars / filter rails commonly use dark surface */
:root[data-theme="light"] .sidebar,
:root[data-theme="light"] .academy-sidebar,
:root[data-theme="light"] .rs-sidebar{
  background:transparent;
  color:var(--ink);
}
:root[data-theme="light"] .sidebar a,
:root[data-theme="light"] .academy-sidebar a{color:var(--ink-dim)}
:root[data-theme="light"] .sidebar a:hover,
:root[data-theme="light"] .academy-sidebar a:hover{color:var(--ink)}

/* Body class set by the rs2026 chrome — when legacy templates render inside
   the 2026 nav/footer, anything inside <main> that didn't get tokenised
   inherits this fallback so text is at least readable. */
:root[data-theme="light"] body.rs2026 main{
  color:var(--ink);
}
:root[data-theme="light"] body.rs2026 main p,
:root[data-theme="light"] body.rs2026 main li,
:root[data-theme="light"] body.rs2026 main td{color:var(--ink-dim)}

/* ── Brand-accent conform for legacy templates (added 2026-05-24) ─────────
   Legacy pages (style.css) use --cyan (#00F0FF) as their PRIMARY accent for
   links, eyebrows, borders, badges and focus rings. The 2026 brand primary is
   the signal-green --accent. Remap the legacy cyan family to --accent so every
   legacy page rendered inside the 2026 chrome adopts the brand accent in BOTH
   light and dark modes — without rewriting each template. Placed after both
   :root blocks so it wins on equal specificity. 2026-native pages use --accent
   directly (unaffected); the distinct SECONDARY cyan lives in --accent-2 and is
   left alone, so intentionally-cyan accents (e.g. cloud pages) still read cyan. */
body.rs2026{
  --cyan: var(--accent);
  --cyan-dim: color-mix(in srgb, var(--accent) 12%, transparent);
  --cyan-glow: color-mix(in srgb, var(--accent) 22%, transparent);
  /* Sitewide ambient depth so the dark canvas doesn't read flat/heavy (dark mode). */
  background:
    radial-gradient(120% 58% at 82% -6%, rgba(157,255,94,.05), transparent 55%),
    radial-gradient(90% 46% at 8% 2%, rgba(94,231,255,.032), transparent 55%),
    linear-gradient(180deg, rgba(255,255,255,.02), transparent 30%),
    var(--bg);
  background-attachment:fixed;
}
:root[data-theme="light"] body.rs2026{ background:var(--bg) }

/* ── Light-mode patches for pages with inline-style dark panels ─────────
   Each page below has CSS or inline styles using hardcoded rgba(15,20,24)
   / rgba(8,11,13) / rgba(0,0,0,0.3+) backgrounds that don't swap on theme.
   Rather than rewriting each template, override the visible offenders by
   targeting the page-scope class (.tools-page, .penalty-page, .ai-hub,
   .trust-hero etc.) so the patch is contained and obvious. !important is
   used only where it has to outrank inline style="" attributes. */

/* Generic: any tool-page panel / pre / textarea / input — swap dark
   background to a light surface with subtle contrast border. */
:root[data-theme="light"] .tools-page pre,
:root[data-theme="light"] .tools-page textarea,
:root[data-theme="light"] .tools-page input[type="text"],
:root[data-theme="light"] .tools-page input[type="email"],
:root[data-theme="light"] .tools-page input[type="number"],
:root[data-theme="light"] .penalty-page pre,
:root[data-theme="light"] .penalty-page textarea,
:root[data-theme="light"] .penalty-page input[type="text"],
:root[data-theme="light"] .penalty-page input[type="email"],
:root[data-theme="light"] .penalty-page input[type="number"]{
  background:rgba(10,12,14,.04) !important;
  color:var(--ink) !important;
  border-color:rgba(10,12,14,.16) !important;
}
:root[data-theme="light"] .tools-page pre,
:root[data-theme="light"] .penalty-page pre{
  border:1px solid rgba(10,12,14,.12);
}
/* Eyebrow / label pill on tool pages (uses cyan tint) — flip via tokens */
:root[data-theme="light"] .tools-hero .eyebrow,
:root[data-theme="light"] .penalty-page .section-eyebrow .label,
:root[data-theme="light"] .tools-page .section-eyebrow .label{
  background:rgba(0,117,166,.08);
  border-color:rgba(0,117,166,.32);
  color:var(--accent-2);
}
/* Penalty calculator result card — red/amber accent stays valid in light mode */
:root[data-theme="light"] #dpc-result{
  background:linear-gradient(135deg,rgba(185,28,28,.06),rgba(181,106,6,.04)) !important;
  border-color:rgba(185,28,28,.32) !important;
}
/* Penalty calculator modal — bg + form fields */
:root[data-theme="light"] #dpc-modal{
  background:rgba(10,12,14,.55) !important;
}
:root[data-theme="light"] #dpc-modal input{
  background:#ffffff !important;
  color:var(--ink) !important;
}

/* Trust page (page-trust-2026.php) — dark panel/step/code surfaces */
:root[data-theme="light"] .trust-hero,
:root[data-theme="light"] .trust-step,
:root[data-theme="light"] .trust-card,
:root[data-theme="light"] .trust-frame{
  background:var(--panel);
  border-color:var(--line);
  color:var(--ink);
}

/* AI Hub page (page-ai-path.php) — multiple dark gradient panels */
:root[data-theme="light"] .ai-hub .ai-hero,
:root[data-theme="light"] .ai-hub .ai-level,
:root[data-theme="light"] .ai-hub .ai-card,
:root[data-theme="light"] .ai-hub .ai-panel{
  background:var(--panel);
  border-color:var(--line);
  color:var(--ink);
}
:root[data-theme="light"] .ai-hero .btn-ghost{
  background:transparent;
  border-color:var(--line-2);
  color:var(--ink);
}
:root[data-theme="light"] .ai-hero .btn-ghost:hover{
  background:rgba(10,12,14,.04);
  border-color:var(--ink-mute);
}

/* Auth modal (inc/ringsafe-auth-modal.php) — opens over any page, must
   read correctly in both modes. Selector covers common wrapper classes. */
:root[data-theme="light"] #rs-auth-modal,
:root[data-theme="light"] .rs-auth-modal,
:root[data-theme="light"] .auth-modal-overlay{
  background:rgba(10,12,14,.45) !important;
}
:root[data-theme="light"] .rs-auth-modal__panel,
:root[data-theme="light"] .auth-modal__panel,
:root[data-theme="light"] .rs-auth-card{
  background:#ffffff !important;
  color:var(--ink) !important;
  border-color:var(--line);
  box-shadow:0 32px 80px -20px rgba(10,12,14,.30);
}
:root[data-theme="light"] .rs-auth-modal input,
:root[data-theme="light"] .auth-modal input,
:root[data-theme="light"] .rs-auth-card input{
  background:#ffffff !important;
  color:var(--ink) !important;
  border-color:rgba(10,12,14,.18) !important;
}
:root[data-theme="light"] .rs-auth-modal label,
:root[data-theme="light"] .auth-modal label,
:root[data-theme="light"] .rs-auth-card label{color:var(--ink-dim)}

/* Homepage stat numbers (front-page-2026.php) use white→accent gradient
   text. In light mode the white top is invisible on white bg → flip to
   ink→accent (dark to brand color) so digits stay legible. */
:root[data-theme="light"] .rs-stat .rs-num{
  background:linear-gradient(180deg, var(--ink) 0%, #00873d 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}
:root[data-theme="light"] .rs-stat:nth-child(2) .rs-num{
  background:linear-gradient(180deg, var(--ink) 0%, #0075a6 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}
:root[data-theme="light"] .rs-stat:nth-child(3) .rs-num{
  background:linear-gradient(180deg, var(--ink) 0%, #5a3ee0 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}
:root[data-theme="light"] .rs-stat:nth-child(4) .rs-num{
  background:linear-gradient(180deg, var(--ink) 0%, #c93d18 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}
:root[data-theme="light"] .rs-stats{
  background:linear-gradient(180deg, rgba(0,135,61,.04), transparent 50%);
}

/* ── Homepage private token system (front-page-2026.php uses .rs-home as
   a token scope with --rs-bg/--rs-ink/--rs-line/--rs-accent etc.). These
   tokens are hardcoded dark; without a light-mode override every section
   of the homepage that consumes them stays dark. */
:root[data-theme="light"] .rs-home{
  --rs-bg:#fafbfa;
  --rs-bg-1:#f4f5f6;
  --rs-bg-2:#eaecee;
  --rs-bg-3:#dee0e3;
  --rs-ink:#0a0c0e;
  --rs-ink-1:#1c232d;
  --rs-ink-2:rgba(10,12,14,.66);
  --rs-ink-3:rgba(10,12,14,.50);
  --rs-line:rgba(10,12,14,.08);
  --rs-line-2:rgba(10,12,14,.14);
  --rs-line-3:rgba(10,12,14,.22);
  --rs-accent:#00873d;
  --rs-accent-2:#0075a6;
  --rs-accent-3:#5a3ee0;
  --rs-warn:#c93d18;
  --rs-crit:#b91c1c;
  --rs-ok:#16a34a;
}

/* Translucent-white hover/elevation patterns used throughout front-page —
   in light mode flip the alpha to dark so the elevation reads correctly. */
:root[data-theme="light"] .rs-home .rs-card:hover,
:root[data-theme="light"] .rs-home .rs-btn--ghost:hover,
:root[data-theme="light"] .rs-home .rs-comp-cell:hover,
:root[data-theme="light"] .rs-home .rs-proc-step:hover,
:root[data-theme="light"] .rs-home .rs-case:hover{
  background:rgba(10,12,14,.04);
}
:root[data-theme="light"] .rs-home .rs-svc,
:root[data-theme="light"] .rs-home .rs-svc-grid > *{
  background:rgba(10,12,14,.012);
}
:root[data-theme="light"] .rs-home .rs-svc:hover{
  background:rgba(0,135,61,.05);
}
:root[data-theme="light"] .rs-home .rs-form input,
:root[data-theme="light"] .rs-home .rs-form textarea,
:root[data-theme="light"] .rs-home .rs-form select{
  background:#ffffff;
  color:var(--ink);
  border-color:rgba(10,12,14,.16);
}
/* Chip with dark hardcoded bg */
:root[data-theme="light"] .rs-home [style*="background:rgba(15,20,24"]{
  background:rgba(10,12,14,.04) !important;
}
/* Stat finding-severity pills — keep colour semantics but readable on white */
:root[data-theme="light"] .rs-home .rs-find-sev.crit{
  background:rgba(185,28,28,.10);color:#b91c1c;border-color:rgba(185,28,28,.30);
}
:root[data-theme="light"] .rs-home .rs-find-sev.high{
  background:rgba(181,106,6,.10);color:#92400e;border-color:rgba(181,106,6,.30);
}
:root[data-theme="light"] .rs-home .rs-find-sev.med{
  background:rgba(0,117,166,.10);color:#0075a6;border-color:rgba(0,117,166,.30);
}
/* News-card thumbnail backdrop (inline style on line 1140) — too narrow to
   target without !important on the parent; the dark backdrop is mostly
   covered by the image so we accept it for now. */
/* Find-panel — header section uses dark gradient bg-2→bg-1 which now resolves correctly via tokens */

/* ── Hero radar visualisation (.rs-topo) — light-mode polish ──────────
   The SVG uses hardcoded rgba(8,11,13,.88) pill backgrounds with
   #e6edf3 text fills. In light mode flip the pills to light with dark
   text so they read as "data tags" instead of harsh dark patches against
   a white hero. Stroke colours stay accent-tinted in both modes. */
:root[data-theme="light"] .rs-topo svg g[transform] > rect{
  fill:rgba(255,255,255,.92) !important;
  stroke-width:1.2;
}
:root[data-theme="light"] .rs-topo svg g[transform] > text{
  fill:#0a0c0e !important;
}
/* Concentric range rings + crosshair — darken AND boost opacity so they're
   visible on white (original SVG uses neon green at 10-22% opacity which
   completely washes out in light mode). CSS stroke-opacity overrides the
   SVG attribute. */
:root[data-theme="light"] .rs-topo svg > g[fill="none"][stroke="#9dff5e"] circle{
  stroke:#00873d !important;
  stroke-opacity:.55 !important;
  stroke-width:1.2 !important;
}
:root[data-theme="light"] .rs-topo svg > g[stroke="#9dff5e"] line{
  stroke:#00873d !important;
  stroke-opacity:.35 !important;
  stroke-width:1.2 !important;
}
:root[data-theme="light"] .rs-topo svg > g[fill="#9dff5e"] text{
  fill:#00873d !important;
  fill-opacity:.70 !important;
  font-weight:600;
}
/* Sweep wedges + leading arm + sonar dot — use a punchier green so the
   sweep is still the visual anchor. */
:root[data-theme="light"] .rs-topo svg .sweep path,
:root[data-theme="light"] .rs-topo svg .sweep line,
:root[data-theme="light"] .rs-topo svg .sweep circle{
  fill:#00873d;
  stroke:#00873d;
}
/* Connection lines (animated dash flow) */
:root[data-theme="light"] .rs-topo svg g[stroke="rgba(157,255,94,.45)"] line{
  stroke:rgba(0,135,61,.55) !important;
}
/* Center hub — three concentric circles with hardcoded neon */
:root[data-theme="light"] .rs-topo svg > circle[fill="rgba(157,255,94,.06)"]{
  fill:rgba(0,135,61,.08) !important;stroke:rgba(0,135,61,.5) !important;
}
:root[data-theme="light"] .rs-topo svg > circle[fill="rgba(157,255,94,.18)"]{
  fill:rgba(0,135,61,.22) !important;
}
:root[data-theme="light"] .rs-topo svg > circle[fill="#9dff5e"]{
  fill:#00873d !important;
}
/* Subtle backing panel so the radar feels grounded inside the hero */
:root[data-theme="light"] .rs-topo{
  background:radial-gradient(60% 60% at 50% 50%, rgba(0,135,61,.05), transparent 70%);
  border-radius:24px;
}

/* ── Academy listing page (page-academy-2026.php) ─────────────────────
   The template has ~10 surfaces with hardcoded rgba(15,20,24,*) or
   rgba(8,11,13,*) backgrounds. Each is overridden below with a light
   surface + token-based border. */
:root[data-theme="light"] .continue-card{
  background:var(--panel);
  border-color:var(--line-2);
}
:root[data-theme="light"] .aca-sidebar{scrollbar-color:rgba(10,12,14,.18) transparent}
:root[data-theme="light"] .aca-sidebar::-webkit-scrollbar-thumb{background:rgba(10,12,14,.14)}
@media (max-width:980px){
  :root[data-theme="light"] .aca-sidebar{
    background:var(--panel);
    border-color:var(--line);
  }
}
:root[data-theme="light"] .aca-sb-search input{
  background:#ffffff;
  color:var(--ink);
  border-color:rgba(10,12,14,.16);
}
:root[data-theme="light"] .aca-sb-search input:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(0,135,61,.12);
}
:root[data-theme="light"] .aca-sb-search button[type=submit]:hover{
  background:rgba(0,135,61,.10);
}
:root[data-theme="light"] .aca-sb-diffs a:hover{
  border-color:rgba(10,12,14,.30);
  color:var(--ink);
}
:root[data-theme="light"] .aca-sb-diffs a.is-active{
  color:#ffffff;
}
:root[data-theme="light"] .aca-sb-diffs a.is-active .dot{
  background:#ffffff;opacity:.5;
}
:root[data-theme="light"] .aca-sb-list li a:hover{
  background:rgba(10,12,14,.04);
}
:root[data-theme="light"] .aca-sb-list li a.is-active{
  background:rgba(10,12,14,.06);
}
:root[data-theme="light"] .aca-sb-pinned{
  background:linear-gradient(180deg,rgba(0,135,61,.05),rgba(0,135,61,.015));
}
:root[data-theme="light"] .aca-sb-pinned a:hover{
  background:rgba(0,135,61,.07);
}
:root[data-theme="light"] .aca-active-filters a{
  background:rgba(0,135,61,.08);
  border-color:rgba(0,135,61,.30);
  color:var(--accent);
}
:root[data-theme="light"] .aca-active-filters a:hover{
  background:rgba(0,135,61,.14);
  border-color:rgba(0,135,61,.50);
}
:root[data-theme="light"] .mod-card{
  background:var(--panel) !important;
  border-color:var(--line);
}
:root[data-theme="light"] .mod-card:hover{
  background:#ffffff !important;
  border-color:var(--line-2);
  box-shadow:0 12px 28px -10px rgba(10,12,14,.18);
}
:root[data-theme="light"] .mod-empty{
  background:rgba(10,12,14,.03);
  border-color:rgba(10,12,14,.16);
}
:root[data-theme="light"] .mod-pager a,
:root[data-theme="light"] .mod-pager span{
  background:var(--panel);
  border-color:var(--line-2);
  color:var(--ink-dim);
}
:root[data-theme="light"] .mod-pager a:hover{
  border-color:var(--accent);
  color:var(--ink);
}
:root[data-theme="light"] .mod-pager .is-current{
  background:var(--accent);
  color:#ffffff;
  border-color:var(--accent);
}

/* ── All-Modules page (page-all-modules-2026.php) ────────────────────── */
:root[data-theme="light"] .am-toolbar{
  background:rgba(255,255,255,.88);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-color:var(--line);
}
:root[data-theme="light"] .am-search input{
  background:#ffffff;
  color:var(--ink);
  border-color:rgba(10,12,14,.16);
}
:root[data-theme="light"] .am-card,
:root[data-theme="light"] .am-row{
  background:var(--panel) !important;
  border-color:var(--line);
}
:root[data-theme="light"] .am-card:hover,
:root[data-theme="light"] .am-row:hover{
  background:#ffffff !important;
  border-color:var(--line-2);
}

/* ── single.php (every news post + academy module) ──────────────────── */
:root[data-theme="light"] .rs-single .article pre{
  background:rgba(10,12,14,.04);
  color:var(--ink);
  border-color:rgba(10,12,14,.10);
}
:root[data-theme="light"] .rs-single .article code{
  background:rgba(10,12,14,.06);
  color:#b85800;
  border-color:rgba(10,12,14,.10);
}
:root[data-theme="light"] .rs-single .toc-floating,
:root[data-theme="light"] .rs-single [class*="floating"]{
  background:rgba(255,255,255,.95);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  color:var(--ink);
  border-color:var(--line);
}

/* ── Footer surface treatment (both modes) ─────────────────────────────
   The 2026 footer (.ftr) had no explicit background, so it inherited
   body bg with no visual separation from the page content above it.
   Give it a subtle distinct surface — slightly off-bg in both modes —
   so the boundary reads as intentional. */
.ftr{
  background:var(--bg-soft);
  border-top:1px solid var(--line);
}
/* The brand-tagline "N" in INDIA was hardcoded #FFFFFF inline — invisible
   on a white footer in light mode. Override via the inline style attribute
   selector with !important since inline styles win on specificity. */
:root[data-theme="light"] .ftr [style*="color:#FFFFFF"]{
  color:#0a0c0e !important;
  -webkit-text-fill-color:#0a0c0e !important;
}
:root[data-theme="light"] .ftr-socials a{
  background:rgba(10,12,14,.03);
  border-color:rgba(10,12,14,.10);
}
:root[data-theme="light"] .ftr-socials a:hover{
  background:rgba(0,135,61,.06);
  border-color:rgba(0,135,61,.30);
}
:root[data-theme="light"] .ftr-meta a:hover{color:#00a85a}

/* ── Blog archive template (home.php) — kb-* classes ─────────────────
   Visible-on-light overrides for cards, sidebar, hero. The legacy
   --white/--muted/--card tokens are already flipped, but the cards
   themselves render too faint because the card bg uses var(--card)
   at .025 alpha — invisible against page bg. Bump card surface +
   strengthen text colors for readability. */
:root[data-theme="light"] .kb-page{color:var(--ink)}
:root[data-theme="light"] .kb-hero h1{color:var(--ink)}
:root[data-theme="light"] .kb-hero h1 .grad{
  background:linear-gradient(135deg, var(--accent), var(--accent-2));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
:root[data-theme="light"] .kb-hero p{color:var(--ink-dim)}
:root[data-theme="light"] .kb-hero .eyebrow{
  background:rgba(0,117,166,.08);
  border-color:rgba(0,117,166,.30);
  color:var(--accent-2);
}
/* Search input — readable on white */
:root[data-theme="light"] .kb-search-mini input{
  background:#ffffff;
  color:var(--ink);
  border-color:rgba(10,12,14,.18);
}
:root[data-theme="light"] .kb-search-mini input::placeholder{
  color:rgba(10,12,14,.50);
}
:root[data-theme="light"] .kb-search-mini button{color:rgba(10,12,14,.60)}
:root[data-theme="light"] .kb-search-mini button:hover{color:var(--accent-2)}
/* Sidebar — make group headers and links readable */
:root[data-theme="light"] .kb-sb-group-head .label{color:var(--accent-2);font-weight:700}
:root[data-theme="light"] .kb-sb-list a{color:rgba(10,12,14,.70)}
:root[data-theme="light"] .kb-sb-list a:hover{
  background:rgba(10,12,14,.04);
  color:var(--ink);
}
:root[data-theme="light"] .kb-sb-list a.active{
  background:rgba(0,117,166,.08);
  color:var(--ink);
}
:root[data-theme="light"] .kb-sb-list .sb-count{
  background:rgba(10,12,14,.06);
  color:rgba(10,12,14,.60);
}
:root[data-theme="light"] .kb-sb-pinned-head{color:#7c3aed}
/* Article cards — solid white surface, dark title, readable description */
:root[data-theme="light"] .kb-card{
  background:#ffffff !important;
  border-color:rgba(10,12,14,.10) !important;
  box-shadow:0 1px 2px rgba(10,12,14,.03);
}
:root[data-theme="light"] .kb-card:hover{
  border-color:rgba(10,12,14,.18) !important;
  box-shadow:0 12px 28px -10px rgba(10,12,14,.18);
}
:root[data-theme="light"] .kb-card h3{
  color:var(--ink) !important;
  font-weight:600;
}
:root[data-theme="light"] .kb-card p{
  color:rgba(10,12,14,.66) !important;
}
:root[data-theme="light"] .kb-card .kb-card-meta{
  color:rgba(10,12,14,.50) !important;
  border-top-color:rgba(10,12,14,.08);
}
/* Feed header (Latest articles + subtitle) */
:root[data-theme="light"] .kb-feed-header h2{color:var(--ink)}
:root[data-theme="light"] .kb-feed-header p{color:var(--ink-dim)}
/* Pagination */
:root[data-theme="light"] .kb-pagination a,
:root[data-theme="light"] .kb-pagination span{
  background:#ffffff;
  border-color:rgba(10,12,14,.14);
  color:rgba(10,12,14,.70);
}
:root[data-theme="light"] .kb-pagination a:hover{
  border-color:var(--accent-2);
  color:var(--ink);
}
/* Mobile filter button */
:root[data-theme="light"] .kb-mobile-filter{
  background:#ffffff;
  border-color:rgba(10,12,14,.14);
  color:var(--ink);
}

/* ── Gradient text — used across many pillar pages (.cih-, .dpdp-, .ai-,
   compliance, news, front-page) as `.grad` or inline gradient text. In
   dark mode the gradient (cyan→purple, white→accent) reads beautifully;
   in light mode the high-saturation colors are washed out. Replace with
   solid deep accent in light mode so headlines pop. */
:root[data-theme="light"] .grad,
:root[data-theme="light"] h1 .grad,
:root[data-theme="light"] h2 .grad,
:root[data-theme="light"] h3 .grad{
  background:none !important;
  -webkit-background-clip:initial !important;
  background-clip:initial !important;
  -webkit-text-fill-color:initial !important;
  color:var(--accent) !important;
}

/* ── Compliance India pillar page (page-compliance-india.php) ───────── */
:root[data-theme="light"] .cih{color:var(--ink)}
:root[data-theme="light"] .cih-hero .eyebrow,
:root[data-theme="light"] .cih-section-heading .label,
:root[data-theme="light"] .cih-cta-card .eyebrow{
  background:rgba(0,117,166,.08);
  border-color:rgba(0,117,166,.30);
  color:var(--accent-2);
}
:root[data-theme="light"] .cih-hero p,
:root[data-theme="light"] .cih-section-heading p{color:var(--ink-dim)}
/* The dark "alt" sections (#0e141b) become subtle light tint */
:root[data-theme="light"] .cih-section.alt{
  background:linear-gradient(180deg, rgba(0,117,166,.04), transparent 40%, rgba(124,58,237,.04)), var(--bg-soft) !important;
}
:root[data-theme="light"] .cih-section + .cih-section::before{
  background:linear-gradient(90deg, transparent, rgba(10,12,14,.20), transparent);
}
:root[data-theme="light"] .cih-card{
  background:#ffffff !important;
  border-color:rgba(10,12,14,.10) !important;
}
:root[data-theme="light"] .cih-card:hover{
  border-color:rgba(0,117,166,.45) !important;
}
:root[data-theme="light"] .cih-card h3{color:var(--ink) !important}
:root[data-theme="light"] .cih-card p{color:rgba(10,12,14,.66) !important}
:root[data-theme="light"] .cih-card-tier{color:rgba(10,12,14,.60)}
:root[data-theme="light"] .cih-card-applies{
  background:rgba(0,117,166,.08) !important;
  color:var(--accent-2) !important;
}
:root[data-theme="light"] .cih-card-meta{
  color:rgba(10,12,14,.50) !important;
  border-top-color:rgba(10,12,14,.10) !important;
}
:root[data-theme="light"] .cih-card-meta strong{color:var(--ink) !important}
:root[data-theme="light"] .cih-card-actions .a-primary{
  background:var(--accent-2) !important;color:#ffffff !important;
}
:root[data-theme="light"] .cih-card-actions .a-secondary{
  color:rgba(10,12,14,.66);border-color:rgba(10,12,14,.16);
}
:root[data-theme="light"] .cih-card-actions .a-secondary:hover{
  color:var(--ink);border-color:var(--accent-2);
}
:root[data-theme="light"] .cih-card-soon{background:rgba(10,12,14,.03) !important}
:root[data-theme="light"] .cih-summary-table{
  background:#ffffff !important;
  border-color:rgba(10,12,14,.12) !important;
}
:root[data-theme="light"] .cih-summary-table thead th{
  background:rgba(0,117,166,.06) !important;
  color:var(--ink) !important;
}
:root[data-theme="light"] .cih-summary-table td{color:rgba(10,12,14,.74) !important}
:root[data-theme="light"] .cih-summary-table strong{color:var(--ink) !important}
:root[data-theme="light"] .cih-cta-card{
  background:linear-gradient(135deg, rgba(0,117,166,.06), rgba(124,58,237,.04)) !important;
  border-color:rgba(0,117,166,.30) !important;
}

/* ── Generic catch-alls for any pillar page using common naming conventions
   (cih-, dpdp-, ai-, cs-, vapt-, sebi-, rbi-, nist-, gdpr-, ita-, pci-,
   acmd-, irdai-, trai-).  Catches *-section.alt dark bands, *-card dark
   surfaces, *-cta-card panels. */
:root[data-theme="light"] [class*="-section"].alt,
:root[data-theme="light"] [class*="-band"].dark,
:root[data-theme="light"] [class*="-bg-dark"]{
  background:var(--bg-soft) !important;
  color:var(--ink);
}
:root[data-theme="light"] [class*="-card"][class*="dpdp"],
:root[data-theme="light"] [class*="-card"][class*="cih"],
:root[data-theme="light"] [class*="-card"][class*="dag"],
:root[data-theme="light"] [class*="-card"][class*="cs-"],
:root[data-theme="light"] [class*="-card"][class*="nist"],
:root[data-theme="light"] [class*="-card"][class*="sebi"]{
  background:#ffffff !important;
  border-color:rgba(10,12,14,.10) !important;
  color:var(--ink);
}
