/* ==========================================================================
   NETAPHOR DARK THEME ("Blue", file name kept as theme-noir.css).
   Activated via html[data-theme="noir"]. Loads after site-polish.css and
   wins conflicts through higher selector specificity.
   Palette: friendly mid-blue canvas (#1a2d4f), raised blue cards, teal
   actions (#5cc6de) from the "Signal to Sense" theme. The --nx-violet*
   token names are historical; they now hold the teal family.
   ========================================================================== */

html[data-theme="noir"] {
  /* Core noir tokens */
  --nx-black: #1a2d4f;
  --nx-s1: #152846;            /* page alt surface */
  --nx-s2: #22395f;            /* card surface */
  --nx-s3: #2a4470;            /* raised surface */
  --nx-text: #f1f5fb;
  --nx-secondary: #c3d0e3;
  --nx-muted: #a3b5ce;
  --nx-border: rgba(255, 255, 255, .10);
  --nx-border-strong: rgba(255, 255, 255, .18);
  --nx-violet: #5cc6de;
  --nx-violet-light: #8bd8ea;
  --nx-violet-deep: #1f7fa0;
  --nx-grad: linear-gradient(90deg, #2c88d9, #5cc6de);
  --nx-panel-grad: radial-gradient(120% 90% at 18% 8%, #5cb4dc 0%, #3d8fc4 32%, #2f7fb0 58%, #1f5f86 100%);
  --nx-shadow: 0 24px 60px rgba(0, 0, 0, .55);

  /* Remap the site's shared dark tokens */
  --theme-950: #1a2d4f;
  --theme-900: #1a2d4f;
  --theme-850: #152846;
  --theme-800: #22395f;
  --theme-700: #2a4470;
  --theme-text: var(--nx-text);
  --theme-secondary: var(--nx-secondary);
  --theme-muted: var(--nx-muted);
  --brand-cyan: #5cc6de;

  /* Remap the light-surface token set: bright sections become black glass */
  --light-0: #22395f;
  --light-50: #1a2d4f;
  --light-100: #152846;
  --light-200: #2f4b7a;
  --light-300: #3a5888;
  --light-text: var(--nx-text);
  --light-secondary: var(--nx-secondary);
  --light-muted: var(--nx-muted);
  --light-border: var(--nx-border);
  --light-border-strong: var(--nx-border-strong);
  --light-shadow: 0 18px 44px rgba(0, 0, 0, .55);
  --color-surface-light: #1a2d4f;
  --color-surface-light-alt: #152846;
  --color-text-on-light: var(--nx-text);
  --color-text-on-light-secondary: var(--nx-secondary);
}

/* Remap per-page critical tokens (inline :root on every page) */
html[data-theme="noir"] body {
  --color-primary-950: #1a2d4f;
  --color-primary-900: #1a2d4f;
  --color-primary-800: #22395f;
  --color-primary-700: #2a4470;
  --color-primary-600: #2f4b7a;
  --color-primary-500: #5cc6de;
  --color-accent-400: #8bd8ea;
  --color-accent-500: #5cc6de;
  --color-accent-600: #3fb0cc;
  --color-accent-700: #2a93ae;
  --color-gold-400: #d6b25e;
  --color-surface-dark: #1a2d4f;
  --color-surface-darker: #1a2d4f;
  --color-surface-card: rgba(255, 255, 255, .035);
  --color-surface-card-hover: rgba(255, 255, 255, .06);
  --color-border-subtle: rgba(255, 255, 255, .09);
  --color-border-medium: rgba(255, 255, 255, .16);
  --color-text-secondary: var(--nx-secondary);
  --color-text-muted: var(--nx-muted);
}

html[data-theme="noir"],
html[data-theme="noir"] body {
  background: #1a2d4f;
  color: var(--nx-text);
}
html[data-theme="noir"] ::selection { background: rgba(92, 198, 222, .35); color: #ffffff; }
html[data-theme="noir"] :where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 3px solid var(--nx-violet) !important;
  box-shadow: 0 0 0 2px #1a2d4f !important;
}

/* Smooth cross-fade while switching themes */
html.theme-anim, html.theme-anim body,
html.theme-anim *, html.theme-anim *::before, html.theme-anim *::after {
  transition: background-color .45s ease, background .45s ease, color .45s ease,
              border-color .45s ease, box-shadow .45s ease !important;
}

/* --------------------------------------------------------------------------
   Header / navigation: black glass with a blue→violet signature line
   -------------------------------------------------------------------------- */
html[data-theme="noir"] .site-header {
  background: rgba(26, 45, 79, .9) !important;
  border-bottom: 1px solid rgba(255, 255, 255, .08) !important;
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
}
html[data-theme="noir"] .site-header::before {
  background: var(--nx-grad);
  opacity: .9;
}
html[data-theme="noir"] .nav-link { color: var(--nx-secondary); }
html[data-theme="noir"] .nav-link:hover { color: #ffffff; }
html[data-theme="noir"] .nav-link[aria-current="page"],
html[data-theme="noir"] .nav-mobile__link[aria-current="page"] {
  color: #ffffff !important;
  background: rgba(92, 198, 222, .16) !important;
}
html[data-theme="noir"] .nav-link[aria-current="page"]::after { background: var(--nx-violet) !important; }
html[data-theme="noir"] .nav-mobile { background: rgba(26, 45, 79, .98) !important; }
html[data-theme="noir"] body.article-site-page .site-header,
html[data-theme="noir"] body.requirements-page .site-header {
  background: rgba(26, 45, 79, .92) !important;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
}

/* --------------------------------------------------------------------------
   Heroes: aurora glow on pure black, Codex-scale headlines
   -------------------------------------------------------------------------- */
html[data-theme="noir"] :is(.hero, .story-hero, .comic-hero, .cta-section, .platform-req-hero) {
  background:
    radial-gradient(60% 46% at 72% 8%, rgba(92, 198, 222, .20), transparent 70%),
    radial-gradient(46% 40% at 12% 88%, rgba(44, 136, 217, .12), transparent 70%),
    #1a2d4f !important;
}
html[data-theme="noir"] :is(.hero__bg, .hero__bg-gradient, .cta-section__bg) { opacity: .35; }
html[data-theme="noir"] :is(.hero h1, .story-hero h1, .section-title, .cta-section__title) {
  color: #ffffff;
  letter-spacing: -0.02em;
}
html[data-theme="noir"] .story-kicker,
html[data-theme="noir"] .section-label { color: var(--nx-violet-light) !important; }
html[data-theme="noir"] .story-kicker::before,
html[data-theme="noir"] .section-label::before { background: var(--nx-grad) !important; }
html[data-theme="noir"] .story-proof span {
  border-color: var(--nx-border) !important;
  background: rgba(255, 255, 255, .04) !important;
  color: var(--nx-secondary) !important;
}

/* --------------------------------------------------------------------------
   Buttons: white pill primaries, glass pill secondaries (Codex language)
   -------------------------------------------------------------------------- */
html[data-theme="noir"] .btn {
  border-radius: 999px !important;
}
html[data-theme="noir"] .btn--primary {
  background: #ffffff !important;
  border-color: #ffffff !important;
  color: #152846 !important;
  box-shadow: 0 8px 30px rgba(92, 198, 222, .25) !important;
}
html[data-theme="noir"] .btn--primary:hover {
  background: #e6edf7 !important;
  border-color: #e6edf7 !important;
  color: #1a2d4f !important;
  transform: translateY(-1px);
}
html[data-theme="noir"] .btn--secondary {
  background: rgba(255, 255, 255, .06) !important;
  border: 1px solid rgba(255, 255, 255, .16) !important;
  color: #ffffff !important;
}
html[data-theme="noir"] .btn--secondary:hover {
  background: rgba(255, 255, 255, .11) !important;
  border-color: rgba(255, 255, 255, .28) !important;
}
html[data-theme="noir"] .lang-tag {
  border-radius: 999px !important;
  background: rgba(255, 255, 255, .05) !important;
  border: 1px solid rgba(255, 255, 255, .14) !important;
  color: var(--nx-text) !important;
}
html[data-theme="noir"] .lang-tag:hover {
  background: rgba(92, 198, 222, .18) !important;
  border-color: rgba(92, 198, 222, .5) !important;
  color: #ffffff !important;
}

/* --------------------------------------------------------------------------
   Bright sections & cards → black glass
   -------------------------------------------------------------------------- */
html[data-theme="noir"] :is(.section--light, .story-section--light, .bg-light, .milestone-section) {
  background: linear-gradient(180deg, #1a2d4f 0%, #152846 100%) !important;
  border-block: 1px solid rgba(255, 255, 255, .07) !important;
  color: var(--nx-text) !important;
}
html[data-theme="noir"] .bg-light-alt { background: #172a4b !important; color: var(--nx-text) !important; }
html[data-theme="noir"] .section { background-color: transparent; }

html[data-theme="noir"] :is(.section--light, .story-section--light, .bg-light, .bg-light-alt) :is(h1, h2, h3, h4, h5, h6, dt, th) {
  color: var(--nx-text) !important;
}
html[data-theme="noir"] :is(.section--light, .story-section--light, .bg-light, .bg-light-alt) :is(p, li, dd, td, label, .section-desc, .card__desc, .feature-list__text) {
  color: var(--nx-secondary) !important;
}
html[data-theme="noir"] :is(.section--light, .story-section--light, .bg-light, .bg-light-alt) .section-label,
html[data-theme="noir"] :is(.section--light, .story-section--light, .bg-light, .bg-light-alt) .story-kicker {
  color: var(--nx-violet-light) !important;
}
html[data-theme="noir"] :is(.section--light, .story-section--light, .bg-light, .bg-light-alt) .section-label::before {
  background: var(--nx-grad) !important;
}
html[data-theme="noir"] :is(.section--light, .story-section--light, .bg-light, .bg-light-alt) a:not(.btn):not(.lang-link):not(.lang-tag) { color: var(--nx-violet-light); }
html[data-theme="noir"] :is(.section--light, .story-section--light, .bg-light, .bg-light-alt) a:not(.btn):not(.lang-link):not(.lang-tag):hover { color: #ffffff; }
html[data-theme="noir"] .text-on-light { color: var(--nx-text) !important; }
html[data-theme="noir"] .text-on-light-secondary { color: var(--nx-secondary) !important; }

/* Every card family */
html[data-theme="noir"] :is(
  .card, .solution-card, .leader-card, .award-card, .download-card, .resource-card,
  .whitepaper-card, .event-card, .dl-card, .yt-card, .contact-info, .contact-form,
  .partner-logo, .value-step, .cap-card, .feature-split__visual, .feature-row__visual,
  .requirement-section, .platform-req-sidebar__card, .sidebar-block, .kb-article-card,
  .milestone-card, .addon-card
) {
  background: linear-gradient(180deg, #22395f 0%, #152846 100%) !important;
  border: 1px solid var(--nx-border) !important;
  color: var(--nx-text) !important;
  box-shadow: 0 18px 44px rgba(0, 0, 0, .45) !important;
}
html[data-theme="noir"] :is(
  .card, .solution-card, .leader-card, .award-card, .download-card, .resource-card,
  .whitepaper-card, .event-card, .dl-card, .yt-card, .partner-logo, .value-step, .cap-card
):hover {
  background: linear-gradient(180deg, #2a4470 0%, #22395f 100%) !important;
  border-color: rgba(92, 198, 222, .45) !important;
  box-shadow: 0 22px 54px rgba(0, 0, 0, .6), 0 0 0 1px rgba(92, 198, 222, .18) !important;
}
html[data-theme="noir"] :is(.card__title, .leader-card__name, .award-card__title, .dl-card__name, .yt-card__title) {
  color: var(--nx-text) !important;
}
html[data-theme="noir"] :is(.leader-card__role, .leader-card__bio, .award-card__year, .dl-card__meta, .yt-card__meta) {
  color: var(--nx-secondary) !important;
}
html[data-theme="noir"] :is(.card, .solution-card) { border-top-color: rgba(92, 198, 222, .55) !important; }
html[data-theme="noir"] .theme-card--blue { border-top-color: #2c88d9 !important; }
html[data-theme="noir"] .theme-card--cyan { border-top-color: var(--nx-violet) !important; }
html[data-theme="noir"] .milestone-card__year { color: var(--nx-violet-light) !important; }
html[data-theme="noir"] .milestone-card--cyan { border-top-color: var(--nx-violet) !important; }
html[data-theme="noir"] .milestone-card h3 { color: var(--nx-text) !important; }
html[data-theme="noir"] .milestone-card p { color: var(--nx-secondary) !important; }

/* Product visuals become violet gradient panels (the Codex window look) */
html[data-theme="noir"] :is(.story-visual, .feature-split__visual, .feature-row__visual) {
  background: var(--nx-panel-grad) !important;
  border: 1px solid rgba(255, 255, 255, .14) !important;
  box-shadow: 0 30px 80px rgba(80, 76, 220, .35) !important;
}
html[data-theme="noir"] :is(.story-visual, .feature-split__visual, .feature-row__visual) img {
  background: #152846;
  box-shadow: 0 18px 50px rgba(0, 0, 0, .45);
}
html[data-theme="noir"] .partner-node,
html[data-theme="noir"] .story-visual__badge {
  background: rgba(10, 10, 16, .92) !important;
  color: var(--nx-text) !important;
  border: 1px solid rgba(255, 255, 255, .18) !important;
  box-shadow: 0 16px 36px rgba(0, 0, 0, .5) !important;
}
html[data-theme="noir"] .partner-hub { background: var(--nx-panel-grad) !important; }

/* --------------------------------------------------------------------------
   Forms
   -------------------------------------------------------------------------- */
html[data-theme="noir"] input,
html[data-theme="noir"] select,
html[data-theme="noir"] textarea {
  color: var(--nx-text) !important;
  background: #152846 !important;
  border-color: rgba(255, 255, 255, .16) !important;
  accent-color: var(--nx-violet);
}
html[data-theme="noir"] input::placeholder,
html[data-theme="noir"] textarea::placeholder { color: var(--nx-muted) !important; }
html[data-theme="noir"] input:focus,
html[data-theme="noir"] select:focus,
html[data-theme="noir"] textarea:focus {
  border-color: var(--nx-violet) !important;
  box-shadow: 0 0 0 3px rgba(92, 198, 222, .22) !important;
}
html[data-theme="noir"] select option { color: var(--nx-text) !important; background: #22395f !important; }

/* --------------------------------------------------------------------------
   Articles / knowledge base / platform requirements
   -------------------------------------------------------------------------- */
html[data-theme="noir"] .article-page,
html[data-theme="noir"] .platform-req-page {
  background: linear-gradient(180deg, #1a2d4f 0%, #152846 100%) !important;
  color: var(--nx-text) !important;
}
html[data-theme="noir"] .article-content {
  background: #152846 !important;
  border: 1px solid var(--nx-border) !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .5) !important;
}
html[data-theme="noir"] .article-page :is(.article-title, .article__body h2, .article-body h2, .article__body h3, .article-body h3, .article-sidebar__title, .sidebar-block__title) {
  color: var(--nx-text) !important;
}
html[data-theme="noir"] .article-page :is(.article-subtitle, .article__body p, .article-body p, .article__body li, .article-body li, .article__date, .article-breadcrumb, .article-breadcrumb__current) {
  color: var(--nx-secondary) !important;
}
html[data-theme="noir"] .article-page :is(.article-sidebar__section, .sidebar-block, .article-back, .article-next) {
  background: #22395f !important;
  border-color: var(--nx-border) !important;
  color: var(--nx-text) !important;
  box-shadow: none !important;
}
html[data-theme="noir"] .article-page :is(.article-toc a, .sidebar-toc a, .sidebar-related a, .article-back, .article-next) { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .article-page :is(.article-toc a, .sidebar-toc a, .sidebar-related a, .article-back, .article-next):hover { color: var(--nx-violet-light) !important; }
html[data-theme="noir"] .article-page :is(.article__note, .callout--info) {
  background: rgba(92, 198, 222, .10) !important;
  color: var(--nx-secondary) !important;
  border-color: rgba(92, 198, 222, .35) !important;
}
html[data-theme="noir"] .article-page :is(.article__body pre, .article-body pre) { background: #1a2d4f !important; border-color: #33507e !important; }
html[data-theme="noir"] .article-page :is(.article__body pre code, .article-body pre code) { color: #d6f0f7 !important; }
html[data-theme="noir"] .article-page :is(.article__body code, .article-body code) {
  background: rgba(92, 198, 222, .12) !important;
  color: var(--nx-violet-light) !important;
  border-color: rgba(92, 198, 222, .3) !important;
}
html[data-theme="noir"] :is(.article-page, .platform-req-page) :is(table, .article-table, .requirement-table-wrap) {
  background: #152846 !important;
  border-color: var(--nx-border) !important;
}
html[data-theme="noir"] :is(.article-page, .platform-req-page) :is(th, td) { border-color: var(--nx-border) !important; }
html[data-theme="noir"] :is(.article-page th, .requirement-table th) { background: #2a4470 !important; color: var(--nx-text) !important; }
html[data-theme="noir"] :is(.article-page td, .requirement-table td) { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .requirement-table td:first-child,
html[data-theme="noir"] .addon-card h3 { color: var(--nx-text) !important; }
html[data-theme="noir"] .platform-req-summary__item { background: rgba(255, 255, 255, .04) !important; border-color: var(--nx-border) !important; }
html[data-theme="noir"] .platform-req-note {
  background: rgba(214, 178, 94, .10) !important;
  color: var(--nx-secondary) !important;
  border-color: rgba(214, 178, 94, .35) !important;
}
html[data-theme="noir"] :is(.platform-req-toc a, .platform-req-related a, .platform-req-page .platform-req-breadcrumb, .platform-req-page .platform-req-breadcrumb a) {
  color: var(--nx-secondary) !important;
}

/* --------------------------------------------------------------------------
   Planner, admin, archive, error pages
   -------------------------------------------------------------------------- */
html[data-theme="noir"] body.planner-page {
  --ink: var(--nx-text);
  --muted: var(--nx-secondary);
  --bg: #1a2d4f;
  --bg2: #152846;
  --surface: #22395f;
  --chip: rgba(92, 198, 222, .12);
  --border: rgba(255, 255, 255, .14);
  --shadow: 0 18px 44px rgba(0, 0, 0, .5);
  background: linear-gradient(180deg, #1a2d4f 0%, #152846 100%) !important;
  color: var(--nx-text) !important;
}
html[data-theme="noir"] .planner-page > nav { background: rgba(26, 45, 79, .96) !important; }
html[data-theme="noir"] .planner-page :is(.sidebar, main > .card, .results .section) {
  background: #22395f !important;
  border-color: rgba(255, 255, 255, .14) !important;
  color: var(--nx-text) !important;
  box-shadow: 0 18px 44px rgba(0, 0, 0, .5) !important;
}
html[data-theme="noir"] .planner-page :is(.title, .side-title, .section h3, .section h4, label, td) { color: var(--nx-text) !important; }
html[data-theme="noir"] .planner-page :is(.desc, .hint, .muted) { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .planner-page .step { color: var(--nx-secondary) !important; border-color: rgba(255, 255, 255, .14) !important; }
html[data-theme="noir"] .planner-page .step.active { color: #ffffff !important; background: rgba(92, 198, 222, .16) !important; }
html[data-theme="noir"] .planner-page .opt { background: #22395f !important; color: var(--nx-text) !important; border-color: rgba(255, 255, 255, .14) !important; }
html[data-theme="noir"] .planner-page .opt.active { background: rgba(92, 198, 222, .16) !important; border-color: rgba(92, 198, 222, .5) !important; }
html[data-theme="noir"] .planner-page :is(input[type="text"], input[type="email"], input[type="tel"]) { background: #152846 !important; color: var(--nx-text) !important; }
html[data-theme="noir"] .planner-page .btn-subtle { background: rgba(255, 255, 255, .06) !important; color: var(--nx-text) !important; border-color: rgba(255, 255, 255, .16) !important; }
html[data-theme="noir"] .planner-page .btn-ghost { color: var(--nx-text) !important; border-color: rgba(255, 255, 255, .16) !important; }
html[data-theme="noir"] .planner-page tr:nth-child(even) td { background: rgba(255, 255, 255, .03) !important; }
html[data-theme="noir"] .planner-page .infobox { background: rgba(92, 198, 222, .10) !important; color: var(--nx-secondary) !important; }
html[data-theme="noir"] .planner-page .warn { background: rgba(214, 178, 94, .10) !important; }
html[data-theme="noir"] .planner-page footer,
html[data-theme="noir"] .planner-page footer a { color: var(--nx-secondary) !important; }

html[data-theme="noir"] body.archive-page {
  background: linear-gradient(180deg, #1a2d4f 0 34%, #152846 34% 100%) !important;
  color: var(--nx-text) !important;
}
html[data-theme="noir"] .archive-page .archive-card {
  background: #22395f !important;
  border-color: var(--nx-border) !important;
  color: var(--nx-text) !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .6) !important;
}
html[data-theme="noir"] .archive-page .archive-card h1 { color: var(--nx-text) !important; }
html[data-theme="noir"] .archive-page .archive-card p { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .archive-page .secondary { color: var(--nx-text) !important; border-color: var(--nx-border-strong) !important; }
html[data-theme="noir"] .archive-page .primary { background: var(--nx-violet-deep) !important; }

html[data-theme="noir"] body.admin-page {
  --bg: #1a2d4f;
  --bg2: #152846;
  --card: #22395f;
  --line: rgba(255, 255, 255, .14);
  --ink: var(--nx-text);
  --muted: var(--nx-secondary);
  background: #1a2d4f !important;
  color: var(--nx-text) !important;
}
html[data-theme="noir"] .admin-page header.top { background: #1a2d4f !important; color: var(--nx-text) !important; }
html[data-theme="noir"] .admin-page .card { background: #22395f !important; border-color: var(--nx-border) !important; }
html[data-theme="noir"] .admin-page :is(input, select, textarea) { background: #152846 !important; color: var(--nx-text) !important; }
html[data-theme="noir"] .admin-page dialog { background: #22395f !important; color: var(--nx-text) !important; }
html[data-theme="noir"] .admin-page button.ghost { color: var(--nx-text) !important; border-color: var(--nx-border-strong) !important; }
html[data-theme="noir"] .admin-page .tabs button { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .admin-page .tabs button.active { color: var(--nx-violet-light) !important; }

html[data-theme="noir"] .error-page main {
  background: radial-gradient(60% 46% at 72% 8%, rgba(92, 198, 222, .18), transparent 70%), #1a2d4f !important;
  color: var(--nx-text);
}
html[data-theme="noir"] .error-page main > .container {
  background: #152846 !important;
  border: 1px solid var(--nx-border) !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .6) !important;
}
html[data-theme="noir"] .error-page main h1 { color: var(--nx-text) !important; }
html[data-theme="noir"] .error-page main p { color: var(--nx-secondary) !important; }

/* --------------------------------------------------------------------------
   Content hub (product updates, video, attachments)
   -------------------------------------------------------------------------- */
html[data-theme="noir"] .support-updates {
  background: linear-gradient(135deg,#173a5e,#1d4a66,#22567a) !important;
  box-shadow: 0 24px 60px rgba(80, 76, 220, .3) !important;
}
html[data-theme="noir"] .kb-article-card__title { color: var(--nx-text) !important; }
html[data-theme="noir"] .kb-article-card__excerpt { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .kb-article-card__date { color: var(--nx-muted) !important; }
html[data-theme="noir"] .kb-article-card--soon { opacity: .85 !important; }
html[data-theme="noir"] .kb-cat-btn { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .kb-cat-btn.active { color: var(--nx-violet-light) !important; background: rgba(92, 198, 222,.14) !important; }
html[data-theme="noir"] .kb-sidebar__title { color: var(--nx-muted) !important; }
html[data-theme="noir"] .kb-results-info { color: var(--nx-secondary) !important; }
html[data-theme="noir"] :is(.update-card, .updates-page-grid .update-card) {
  background: rgba(8, 8, 12, .88) !important;
  color: var(--nx-text) !important;
  border-color: rgba(255, 255, 255, .12) !important;
}
html[data-theme="noir"] .update-card h3 { color: var(--nx-text) !important; }
html[data-theme="noir"] :is(.update-card p, .update-card__meta) { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .update-card__link { color: var(--nx-violet-light) !important; }
html[data-theme="noir"] .content-video { background: #152846 !important; border-color: var(--nx-border) !important; }
html[data-theme="noir"] .attachment-card { background: #22395f !important; border-color: var(--nx-border) !important; }
html[data-theme="noir"] .attachment-card__title { color: var(--nx-text) !important; }
html[data-theme="noir"] .attachment-card__meta { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .attachment-card[aria-disabled="true"] { background: #152846 !important; color: var(--nx-muted) !important; }
html[data-theme="noir"] .updates-filter button { background: #22395f !important; border-color: rgba(255, 255, 255, .16) !important; color: var(--nx-secondary) !important; }
html[data-theme="noir"] .updates-filter button[aria-pressed="true"] { background: var(--nx-violet-deep) !important; border-color: var(--nx-violet-deep) !important; color: #ffffff !important; }

/* --------------------------------------------------------------------------
   Sign-in bar, scroll-to-top, footer, misc
   -------------------------------------------------------------------------- */
html[data-theme="noir"] .kb-signin-bar {
  background: rgba(255, 255, 255, .04) !important;
  border-color: var(--nx-border) !important;
}
html[data-theme="noir"] .kb-signin-bar.is-authenticated,
html[data-theme="noir"] [data-authenticated="true"] .kb-signin-bar {
  border-color: rgba(92, 198, 222, .5) !important;
  background: linear-gradient(90deg, rgba(92, 198, 222, .14), rgba(44, 136, 217, .08)) !important;
}
html[data-theme="noir"] .kb-signin-bar.is-authenticated .kb-signin-bar__text strong,
html[data-theme="noir"] [data-authenticated="true"] .kb-signin-bar__text strong { color: var(--nx-violet-light) !important; }

html[data-theme="noir"] .site-scroll-top {
  background: rgba(16, 16, 22, .96);
  border-color: rgba(255, 255, 255, .18);
}
html[data-theme="noir"] .site-scroll-top:hover { border-color: var(--nx-violet); background: #2f4b7a; }

html[data-theme="noir"] .site-footer {
  background: #1a2d4f !important;
  border-top: 1px solid rgba(255, 255, 255, .08);
}
html[data-theme="noir"] :is(.footer-col__link, .footer-bottom__link):hover { color: var(--nx-violet-light) !important; }

html[data-theme="noir"] .divider { border-color: rgba(255, 255, 255, .08) !important; background: rgba(255, 255, 255, .08); }
html[data-theme="noir"] .comic-panel { background: #22395f; border-color: #3a5888; box-shadow: 8px 8px 0 rgba(92, 198, 222, .4); }
html[data-theme="noir"] .comic-panel figcaption { color: #e6edf7; }
html[data-theme="noir"] .comic-panel__meta { color: var(--nx-muted); }
html[data-theme="noir"] .comic-panel img { border-color: #3a5888; background: #152846; }
html[data-theme="noir"] .dl-req-box {
  background: #152846 !important;
  border: 1px solid var(--nx-border) !important;
  color: var(--nx-secondary) !important;
}
html[data-theme="noir"] .dl-req-box h3 { color: var(--nx-text) !important; }
html[data-theme="noir"] .dl-note {
  background: rgba(214, 178, 94, .08) !important;
  border-color: rgba(214, 178, 94, .3) !important;
  color: var(--nx-secondary) !important;
}

/* --------------------------------------------------------------------------
   Theme toggle button (styled for BOTH themes)
   -------------------------------------------------------------------------- */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  min-height: 36px;
  padding: .42rem .95rem;
  margin-right: .5rem;
  border-radius: 999px;
  border: 1px solid rgba(148, 163, 184, .35);
  background: rgba(255, 255, 255, .05);
  color: #dbe9f6;
  font: 600 .8rem/1 var(--font-heading, inherit);
  letter-spacing: .02em;
  cursor: pointer;
  transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
}
.theme-toggle:hover {
  border-color: rgba(92, 198, 222, .7);
  background: rgba(92, 198, 222, .12);
  color: #ffffff;
}
.theme-toggle__dot {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: linear-gradient(135deg, #2c88d9, #5cc6de);
  box-shadow: 0 0 8px rgba(92, 198, 222, .8);
  flex: none;
}
html[data-theme="noir"] .theme-toggle {
  border-color: rgba(92, 198, 222, .55);
  background: linear-gradient(90deg, rgba(44, 136, 217, .16), rgba(92, 198, 222, .18));
  color: #ffffff;
  box-shadow: 0 0 18px rgba(92, 198, 222, .28);
}
html[data-theme="noir"] .theme-toggle__dot {
  background: #ffffff;
  box-shadow: 0 0 10px rgba(255, 255, 255, .9);
}
.theme-toggle__caret { font-size: .68em; opacity: .7; }
.theme-picker { position: relative; display: inline-flex; margin-right: .5rem; }
.theme-picker .theme-toggle { margin-right: 0; }
.theme-picker--floating {
  position: fixed;
  top: 14px;
  right: 14px;
  z-index: 10001;
}
.theme-picker--floating .theme-toggle {
  background: rgba(10, 16, 28, .88);
  backdrop-filter: blur(10px);
}
.theme-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 180px;
  padding: .4rem;
  border-radius: 14px;
  border: 1px solid rgba(148, 163, 184, .3);
  background: rgba(10, 16, 28, .97);
  box-shadow: 0 20px 50px rgba(0, 0, 0, .45);
  z-index: 10002;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.theme-menu__item {
  display: flex;
  align-items: center;
  gap: .5rem;
  width: 100%;
  min-height: 40px;
  padding: .5rem .7rem;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: #dbe9f6;
  font: 600 .82rem/1 var(--font-heading, inherit);
  cursor: pointer;
  text-align: left;
}
.theme-menu__item:hover { background: rgba(92, 198, 222, .14); color: #ffffff; }
.theme-menu__check { opacity: 0; color: #5cc6de; font-weight: 800; }
.theme-menu__item[aria-checked="true"] .theme-menu__check { opacity: 1; }
html[data-theme="noir"] .theme-menu {
  border-color: rgba(92, 198, 222, .4);
  background: rgba(5, 5, 10, .97);
}
@media (max-width: 760px) {
  .theme-toggle__label { display: none; }
  .theme-toggle { padding: .42rem .6rem; }
}

/* --------------------------------------------------------------------------
   WCAG 2.1 AA hardening — every component with hardcoded dark colors that
   the token remap could not reach. Audited across all pages.
   -------------------------------------------------------------------------- */

/* Base guards: generic dark text set by some pages' inline styles */
html[data-theme="noir"] p { color: var(--nx-secondary); }
html[data-theme="noir"] :is(td, li, dd) { color: var(--nx-secondary); }
html[data-theme="noir"] th { color: var(--nx-text) !important; }
html[data-theme="noir"] table th { background: #2a4470 !important; }
html[data-theme="noir"] .section { color: var(--nx-secondary); }

/* Legal pages (privacy / terms) */
html[data-theme="noir"] .legal-nav { background: #22395f !important; border-color: var(--nx-border) !important; }
html[data-theme="noir"] .legal-nav a { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .legal-nav a:hover { background: rgba(92, 198, 222, .14) !important; color: #ffffff !important; }
html[data-theme="noir"] .legal-document { background: #152846 !important; border-color: var(--nx-border) !important; box-shadow: 0 24px 60px rgba(0, 0, 0, .5) !important; }
html[data-theme="noir"] .legal-document :is(h2, h3) { color: var(--nx-text) !important; }
html[data-theme="noir"] :is(.legal-document p, .legal-document li) { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .legal-document a { color: var(--nx-violet-light); }

/* Contact form shell (hardcoded white card with dark labels) */
html[data-theme="noir"] .contact-form-shell { background: #152846 !important; border: 1px solid var(--nx-border) !important; box-shadow: 0 24px 60px rgba(0, 0, 0, .5) !important; }
html[data-theme="noir"] .contact-form .form-group__label { color: var(--nx-text) !important; }
html[data-theme="noir"] .contact-form-note { color: var(--nx-muted) !important; }
html[data-theme="noir"] .error { color: #fca5a5 !important; }

/* Older-downloads archive cards */
html[data-theme="noir"] .archive-card h3 { color: var(--nx-text) !important; }
html[data-theme="noir"] .archive-help { background: #22395f !important; border: 1px solid var(--nx-border); }

/* White-on-violet badges and tabs: darken to reach 4.5:1 */
html[data-theme="noir"] .deploy-card__badge { background: #1f7fa0 !important; color: #ffffff !important; }
html[data-theme="noir"] .comparison-card--featured::before { background: #1f7fa0 !important; color: #ffffff !important; }
html[data-theme="noir"] .tabs__btn--active { background: #1f7fa0 !important; color: #ffffff !important; }
html[data-theme="noir"] :is(.planner-page, .admin-page) a:not(.btn):not([class*="btn"]) { color: var(--nx-violet-light); }

/* Partners page network showcase: navy card joins the black glass system */
html[data-theme="noir"] .partner-network-showcase { background: linear-gradient(180deg, #1a2d4f 0%, #152846 100%) !important; }
html[data-theme="noir"] .partner-network-card {
  background: #152846 !important;
  border: 1px solid var(--nx-border) !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .55) !important;
}
html[data-theme="noir"] .partner-network-stats {
  background: linear-gradient(90deg, rgba(92, 198, 222, .12), rgba(44, 136, 217, .08)) !important;
  border-top: 1px solid var(--nx-border) !important;
}

/* Popup dialogs (sign-in / gated downloads, inline-styled by netaphor-app.js) */
html[data-theme="noir"] .nx-modal-overlay { background: rgba(0, 0, 0, .78) !important; }
html[data-theme="noir"] .nx-modal {
  background: #22395f !important;
  border: 1px solid var(--nx-border-strong) !important;
  color: var(--nx-text) !important;
  box-shadow: 0 30px 80px rgba(0, 0, 0, .7) !important;
}
html[data-theme="noir"] .nx-modal [style*="#52647a"] { color: var(--nx-secondary) !important; }
html[data-theme="noir"] .nx-modal [style*="#b42318"] { color: #fca5a5 !important; }
html[data-theme="noir"] .nx-modal button[type="submit"] {
  background: #ffffff !important;
  color: #152846 !important;
  border-radius: 999px !important;
}
html[data-theme="noir"] .nx-modal button[type="submit"]:hover { background: #e6edf7 !important; }

/* Print stays clean */
@media print {
  html[data-theme="noir"] body { background: #ffffff !important; color: #111827 !important; }
  .theme-toggle { display: none !important; }
}
