/*
Theme Name:   NFTGaming Child
Template:     kadence
Description:  NFTGaming.com.au child theme — design-token layer.
              All visual decisions live here as CSS custom properties;
              components never hard-code colour. See docs/PRESENTATION-PREP.md.
Version: 0.2.245
License:      Proprietary
*/

/* ============================================================
   PRESENTATION TOKENS — GAMING + OWNERSHIP + ECOSYSTEM STATUS
   Naming is gaming-native (void / console / neon / power / respawn).
   Deliberately RESTRAINED: editorial trust beats gamer aesthetic —
   no crypto-bro neon, no casino cues, no dark-mode-by-default.
   ============================================================ */

:root {
  /* ---- ink & surfaces ---- */
  --ng-ink:            #15171d;  /* primary text — ~15:1 on --ng-void */
  --ng-ink-soft:       #3a3f4a;  /* secondary text — ~8:1 on --ng-void */
  --ng-ink-mute:       #5c6470;  /* metadata — ~5.8:1 on --ng-void */
  --ng-void:           #f4f5f7;  /* page base — cool neutral "loading screen" */
  --ng-surface:        #ffffff;  /* card / table surface */
  --ng-surface-alt:    #e8eaef;  /* recessed surface — console bay */
  --ng-line:           #d4d8df;  /* hairline — desaturated */
  --ng-line-strong:    #9aa2ad;

  /* ---- signature accents ---- */
  --ng-neon:           #0f6f7e;  /* link cyan — restrained, ~5.2:1 on --ng-void */
  --ng-neon-strong:    #0a5764;  /* hover/deep link — ~7.5:1 */
  --ng-power:          #d97706;  /* power-up amber — graphics/large display only */
  --ng-power-strong:   #9a4a08;  /* CTA fill & text-safe amber — ~5.5:1 white-on */
  --ng-arcade:         #6d28d9;  /* arcade violet — decorative, large surfaces/headings */
  --ng-score:          #fbfaf7;  /* scoreboard off-white for dark surfaces */

  /* ---- status pills (registry status axis) ----
     Colour is NEVER the only signal: every pill renders label text.
     Eight statuses, one pair each (ink + tint), all >= 4.5:1 pairs. */
  --ng-st-active:      #145c32;
  --ng-st-active-bg:   #e3f2e8;
  --ng-st-early:       #1f5fbf;
  --ng-st-early-bg:    #e3ecf8;
  --ng-st-dev:         #6d28d9;
  --ng-st-dev-bg:      #efe8fa;
  --ng-st-paused:      #5b4e77;
  --ng-st-paused-bg:   #ece7f4;
  --ng-st-pivoted:     #0f5460;
  --ng-st-pivoted-bg:  #e0eef1;
  --ng-st-shutdown:    #842029;
  --ng-st-shutdown-bg: #f9e2e4;
  --ng-st-sunset:      #7a4e00;
  --ng-st-sunset-bg:   #fdf0d5;
  --ng-st-unknown:     #4c5158;
  --ng-st-unknown-bg:  #e9eaec;

  /* ---- provenance / verification ---- */
  --ng-verified:       #145c32;
  --ng-verified-bg:    #e3f2e8;
  --ng-evidence:       #0a5764;  /* evidence links / verified-date ink */

  /* ---- type ---- */
  --ng-font-body:      system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --ng-font-display:   "Archivo", "Oswald", var(--ng-font-body);  /* condensed display — font-display:swap */
  --ng-font-mono:      ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; /* dates, chains, ids */

  /* type scale — 1.25 major third, fluid between 390px and 1280px */
  --ng-fs-300: clamp(0.75rem, 0.73rem + 0.1vw, 0.79rem);   /* 12–12.6px captions/metadata */
  --ng-fs-400: clamp(0.875rem, 0.85rem + 0.13vw, 0.9375rem); /* 14–15px secondary */
  --ng-fs-500: 1rem;                                          /* 16px body */
  --ng-fs-600: clamp(1.125rem, 1.05rem + 0.4vw, 1.25rem);  /* 18–20px */
  --ng-fs-700: clamp(1.375rem, 1.2rem + 0.9vw, 1.5625rem); /* 22–25px card titles */
  --ng-fs-800: clamp(1.75rem, 1.45rem + 1.5vw, 1.95rem);   /* 28–31px section heads */
  --ng-fs-900: clamp(2.25rem, 1.8rem + 2.3vw, 3.05rem);    /* 36–49px page heads */
  --ng-fs-hero: clamp(2.6rem, 2rem + 3vw, 3.6rem);         /* hero only */

  --ng-lh-tight: 1.15;
  --ng-lh-head:  1.25;
  --ng-lh-body:  1.6;

  /* ---- spacing — 4px base ---- */
  --ng-sp-1: 0.25rem;  --ng-sp-2: 0.5rem;  --ng-sp-3: 0.75rem;
  --ng-sp-4: 1rem;     --ng-sp-5: 1.5rem;  --ng-sp-6: 2rem;
  --ng-sp-7: 3rem;     --ng-sp-8: 4rem;    --ng-sp-9: 6rem;

  /* ---- grid ---- */
  --ng-max:            76rem;    /* 1216px content column */
  --ng-max-prose:      44rem;    /* article measure */
  --ng-gutter:         clamp(1rem, 3vw, 1.5rem);

  /* ---- card grammar ---- */
  --ng-radius:         8px;      /* console-card radius — rounded, not pill-app */
  --ng-radius-pill:    999px;
  --ng-edge:           1px solid var(--ng-line);
  --ng-edge-strong:    1px solid var(--ng-line-strong);
  --ng-shadow-card:    0 1px 2px rgba(21,23,29,.06), 0 4px 14px rgba(21,23,29,.05);
  --ng-shadow-raise:   0 2px 4px rgba(21,23,29,.09), 0 10px 28px rgba(21,23,29,.10);

  /* ---- data treatment ---- */
  --ng-tabular:        "tnum" 1, "lnum" 1;   /* lining tabular figures in stats/tables */

  /* ---- motion ---- */
  --ng-motion:         160ms cubic-bezier(.2,.6,.3,1);
}

/* ============================================================
   Base — minimal, scoped to the child theme's surfaces
   ============================================================ */

.ng-body, body.nftgaming {
  font-family: var(--ng-font-body);
  font-size: var(--ng-fs-500);
  line-height: var(--ng-lh-body);
  color: var(--ng-ink);
  background: var(--ng-void);
  font-feature-settings: var(--ng-tabular);
}

.ng-display, .ng-h1, .ng-h2, .ng-h3 {
  font-family: var(--ng-font-display);
  font-weight: 700;
  line-height: var(--ng-lh-head);
  letter-spacing: 0.01em;
}
.ng-h1 { font-size: var(--ng-fs-900); line-height: var(--ng-lh-tight); }
.ng-h2 { font-size: var(--ng-fs-800); }
.ng-h3 { font-size: var(--ng-fs-700); }

.ng-meta { font-size: var(--ng-fs-400); color: var(--ng-ink-mute); }
.ng-mono { font-family: var(--ng-font-mono); font-feature-settings: var(--ng-tabular); }

/* Prose measure */
.ng-prose { max-width: var(--ng-max-prose); }
.ng-prose p, .ng-prose li { line-height: var(--ng-lh-body); }

/* Links — neon family, always underlined in prose */
.ng-prose a, a.ng-link {
  color: var(--ng-neon);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}
.ng-prose a:hover, .ng-prose a:focus-visible,
a.ng-link:hover, a.ng-link:focus-visible {
  color: var(--ng-neon-strong);
}

/* ============================================================
   Components
   ============================================================ */

/* Status pill — label text is the primary signal, colour is support */
.ng-pill {
  display: inline-block;
  padding: .15rem .55rem;
  border-radius: var(--ng-radius-pill);
  font-size: var(--ng-fs-300);
  font-weight: 700;
  letter-spacing: .02em;
  line-height: 1.3;
  white-space: nowrap;
}
.ng-pill--active       { color: var(--ng-st-active);   background: var(--ng-st-active-bg); }
.ng-pill--early_access { color: var(--ng-st-early);    background: var(--ng-st-early-bg); }
.ng-pill--in_development { color: var(--ng-st-dev);    background: var(--ng-st-dev-bg); }
.ng-pill--paused       { color: var(--ng-st-paused);   background: var(--ng-st-paused-bg); }
.ng-pill--pivoted      { color: var(--ng-st-pivoted);  background: var(--ng-st-pivoted-bg); }
.ng-pill--shut_down    { color: var(--ng-st-shutdown); background: var(--ng-st-shutdown-bg); }
.ng-pill--sunset       { color: var(--ng-st-sunset);   background: var(--ng-st-sunset-bg); }
.ng-pill--unknown      { color: var(--ng-st-unknown);  background: var(--ng-st-unknown-bg); }

/* Entity-class tag — neutral chrome, not a status signal */
.ng-tag {
  display: inline-block;
  padding: .12rem .5rem;
  border-radius: var(--ng-radius);
  border: var(--ng-edge);
  font-size: var(--ng-fs-300);
  font-weight: 600;
  color: var(--ng-ink-soft);
  background: var(--ng-surface);
}

/* Route cards — homepage section navigator */
.ng-cards { display: grid; gap: var(--ng-sp-4);
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.ng-card {
  display: block;
  background: var(--ng-surface);
  border: var(--ng-edge);
  border-radius: var(--ng-radius);
  padding: var(--ng-sp-5);
  box-shadow: var(--ng-shadow-card);
  text-decoration: none;
  color: var(--ng-ink);
  transition: transform var(--ng-motion), box-shadow var(--ng-motion);
}
.ng-card:hover, .ng-card:focus-visible {
  transform: translateY(-2px);
  box-shadow: var(--ng-shadow-raise);
}
.ng-card .ng-card-kicker {
  font-size: var(--ng-fs-300);
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ng-power-strong);
  margin-bottom: var(--ng-sp-2);
}
.ng-card h3 { font-size: var(--ng-fs-700); margin: 0 0 var(--ng-sp-2); }
.ng-card p { font-size: var(--ng-fs-400); color: var(--ng-ink-soft); margin: 0; }

/* CTA — power accent, single per section */
.ng-cta {
  display: inline-block;
  background: var(--ng-power-strong);
  color: #fff;
  padding: .7rem 1.4rem;
  border-radius: var(--ng-radius);
  font-weight: 700;
  text-decoration: none;
}
.ng-cta:hover, .ng-cta:focus-visible { filter: brightness(1.08); }
.ng-cta--ghost { background: transparent; color: var(--ng-score);
  border: 1px solid var(--ng-score); margin-left: .6rem; }

/* Ecosystem index table — the moat surface */
.ng-index { width: 100%; border-collapse: collapse; font-size: var(--ng-fs-400); }
.ng-index th, .ng-index td { text-align: left; padding: .55rem .7rem;
  border-bottom: var(--ng-edge); vertical-align: top; }
.ng-index thead th {
  font-size: var(--ng-fs-300);
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ng-ink-mute);
  border-bottom: var(--ng-edge-strong);
  cursor: pointer;
  user-select: none;
}
.ng-index tbody tr:hover { background: var(--ng-surface-alt); }
.ng-index td[data-label="Name"] a { font-weight: 700; }
.ng-sub { font-size: var(--ng-fs-300); color: var(--ng-ink-mute); }
.ng-table-wrap { background: var(--ng-surface); border: var(--ng-edge);
  border-radius: var(--ng-radius); box-shadow: var(--ng-shadow-card); }

/* Filter bar */
.ng-f-controls {
  display: flex; flex-wrap: wrap; gap: var(--ng-sp-3);
  align-items: end;
  padding: var(--ng-sp-4);
  margin-bottom: var(--ng-sp-4);
  background: var(--ng-surface);
  border: var(--ng-edge);
  border-radius: var(--ng-radius);
}
.ng-f-dim { display: flex; flex-direction: column; gap: .2rem;
  font-size: var(--ng-fs-300); font-weight: 700;
  text-transform: uppercase; letter-spacing: .08em;
  color: var(--ng-ink-mute); }
.ng-f-dim select, .ng-f-dim input {
  font: inherit; font-size: var(--ng-fs-400); color: var(--ng-ink);
  padding: .35rem .5rem; border: var(--ng-edge-strong);
  border-radius: calc(var(--ng-radius) - 2px); background: #fff;
  text-transform: none; letter-spacing: normal; font-weight: 400;
}
.ng-f-reset { font-size: var(--ng-fs-400); color: var(--ng-neon);
  background: none; border: none; cursor: pointer;
  text-decoration: underline; padding: .35rem 0; }

/* Callouts — used in guides/safety pages */
.ng-note, .ng-warn {
  border-radius: var(--ng-radius);
  padding: var(--ng-sp-4) var(--ng-sp-5);
  margin: var(--ng-sp-4) 0;
  font-size: var(--ng-fs-400);
}
.ng-note { background: var(--ng-surface-alt); border-left: 3px solid var(--ng-neon); }
.ng-warn { background: var(--ng-st-sunset-bg); border-left: 3px solid var(--ng-st-sunset);
  color: var(--ng-ink); }
.ng-warn strong { color: var(--ng-st-sunset); }

/* Record page — entity field sheet */
.ng-sheet {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--ng-sp-4);
  background: var(--ng-surface);
  border: var(--ng-edge);
  border-radius: var(--ng-radius);
  padding: var(--ng-sp-5);
  box-shadow: var(--ng-shadow-card);
}
.ng-sheet dt { font-size: var(--ng-fs-300); font-weight: 700;
  text-transform: uppercase; letter-spacing: .08em;
  color: var(--ng-ink-mute); margin-bottom: .25rem; }
.ng-sheet dd { margin: 0; font-size: var(--ng-fs-400); }

/* Verified-date chip */
.ng-verified {
  display: inline-flex; align-items: center; gap: .35rem;
  font-size: var(--ng-fs-300); font-weight: 600;
  color: var(--ng-verified); background: var(--ng-verified-bg);
  padding: .15rem .55rem; border-radius: var(--ng-radius-pill);
}

/* Sources footer — every page, every claim dated */
.ng-sources { border-top: var(--ng-edge); margin-top: var(--ng-sp-7);
  padding-top: var(--ng-sp-5); font-size: var(--ng-fs-400);
  color: var(--ng-ink-soft); }
.ng-sources h2 { font-size: var(--ng-fs-600); }
.ng-sources li { margin-bottom: .3rem; }

/* Responsive table → stacked labels under 720px */
@media (max-width: 720px) {
  .ng-index thead { display: none; }
  .ng-index, .ng-index tbody, .ng-index tr, .ng-index td { display: block; }
  .ng-index tr { border-bottom: var(--ng-edge-strong); padding: .5rem 0; }
  .ng-index td { border: none; padding: .25rem .7rem; }
  .ng-index td::before {
    content: attr(data-label) ": ";
    font-size: var(--ng-fs-300); font-weight: 700;
    text-transform: uppercase; letter-spacing: .06em;
    color: var(--ng-ink-mute);
  }
}

/* ============================================================
   HOMEPAGE — hero band + home sections
   Full-bleed dark hero reusing --ng-ink/--ng-score/--ng-power.
   .ng-home is added by the theme's body_class filter on the
   static front page only, letting the page carry its own hero
   instead of the stock Kadence title band.
   ============================================================ */
.ng-home .entry-hero { display: none; }
.ng-home .content-area { margin-top: 0; }

.ng-hero {
  background: linear-gradient(135deg, var(--ng-ink) 0%, #23272f 60%, #2d3340 100%);
  color: var(--ng-score);
  padding: var(--ng-sp-8) var(--ng-sp-4) var(--ng-sp-7);
  margin: 0 calc(50% - 50vw) var(--ng-sp-7);
}
.ng-hero-inner { max-width: var(--ng-max); margin: 0 auto; padding: 0 var(--ng-sp-4); }
.ng-hero-kicker {
  font-size: var(--ng-fs-300); font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--ng-power); margin-bottom: var(--ng-sp-3);
}
.ng-hero h1 {
  font-size: var(--ng-fs-hero); line-height: var(--ng-lh-tight, 1.05);
  letter-spacing: -0.01em; margin: 0 0 var(--ng-sp-4); max-width: 22ch;
  color: var(--ng-score);
}
.ng-hero p { font-size: var(--ng-fs-600); color: #c9cdd6; max-width: 54ch; margin: 0 0 var(--ng-sp-5); }
.ng-hero .ng-cta { text-decoration: none; }
.entry-content .ng-cta--ghost { color: var(--ng-score); }
.entry-content .ng-cta--ghost:hover, .entry-content .ng-cta--ghost:focus-visible { color: #ffffff; border-color: #ffffff; }

.ng-home-section { max-width: var(--ng-max); margin: 0 auto; padding: var(--ng-sp-6) var(--ng-sp-4); }
.ng-home-section > h2 { font-size: var(--ng-fs-800); margin: 0 0 var(--ng-sp-2); }
.ng-home-section > p { max-width: 58ch; color: var(--ng-ink-soft); margin: 0 0 var(--ng-sp-5); }
.ng-status-strip { display: flex; flex-wrap: wrap; gap: var(--ng-sp-2); margin-bottom: var(--ng-sp-4); }

@media (max-width: 720px) {
  .ng-hero { padding: var(--ng-sp-7) var(--ng-sp-3) var(--ng-sp-6); }
}


/* --- 404 page — dark console panel --- */
.ng-404 {
  background:
    radial-gradient(900px 420px at 85% -10%, rgba(109, 40, 217, 0.28), transparent 60%),
    radial-gradient(700px 380px at 5% 110%, rgba(217, 119, 6, 0.18), transparent 55%),
    var(--ng-ink);
  color: var(--ng-score);
  border-radius: var(--ng-radius);
  padding: clamp(2rem, 5vw, 4rem);
  margin: 2.5rem 0;
}
.ng-404-eyebrow {
  display: inline-block;
  font-size: var(--ng-fs-300);
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ng-power);
  margin-bottom: var(--ng-sp-2);
}
.ng-404-title {
  font-family: var(--ng-font-display);
  font-size: var(--ng-fs-hero);
  line-height: var(--ng-lh-tight, 1.08);
  color: var(--ng-score);
  margin: 0 0 1rem;
}
.ng-404-lede { font-size: var(--ng-fs-600); color: #c8cdd6; max-width: 56ch; margin-bottom: 1.75rem; }
.ng-404-actions { display: flex; gap: .75rem; flex-wrap: wrap; margin-bottom: 2rem; }
.ng-404-btn {
  display: inline-block; padding: .7rem 1.3rem; border-radius: var(--ng-radius);
  font-weight: 600; border: 1px solid transparent; text-decoration: none;
}
.ng-404-btn:not(.ng-404-btn--ghost) { background: var(--ng-power-strong); color: #fff; }
.ng-404-btn:not(.ng-404-btn--ghost):hover { background: var(--ng-power); color: #fff; }
.ng-404-btn--ghost { border-color: rgba(251, 250, 247, 0.45); color: var(--ng-score); }
.ng-404-btn--ghost:hover { border-color: var(--ng-score); color: #fff; }
.ng-404-search-label { font-size: var(--ng-fs-300); color: #c8cdd6; margin-bottom: .5rem; }
.ng-404-search .search-form { max-width: 28rem; }

/* Motion safety — never animate for users who asked us not to */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}

/* =========================================================
   Archive cards — stock Kadence loop entries onto the dark-
   console identity. CSS-only: no markup change.
   ========================================================= */
body.archive article.loop-entry,
body.search article.loop-entry {
	background: var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-radius: 10px;
	box-shadow: 0 1px 2px rgba(21, 23, 29, 0.06), 0 8px 24px -12px rgba(21, 23, 29, 0.18);
	padding: clamp(1.25rem, 3vw, 2rem);
	margin-bottom: 1.25rem;
	border-top: 3px solid var(--ng-power);
}
body.archive article.loop-entry .entry-title,
body.search article.loop-entry .entry-title {
	font-size: clamp(1.25rem, 2.4vw, 1.5rem);
	line-height: 1.3;
	letter-spacing: -0.01em;
}
body.archive article.loop-entry .entry-title a,
body.search article.loop-entry .entry-title a { color: var(--ng-ink); }
body.archive article.loop-entry .entry-title a:hover,
body.search article.loop-entry .entry-title a:hover { color: var(--ng-neon-strong); }
/* Category term as a console-bay chip. */
body.archive article.loop-entry .category-links a,
body.search article.loop-entry .category-links a {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ng-power-strong);
	background: #fdf3e3;
	border: 1px solid #f3d9ae;
	border-radius: 4px;
	padding: 0.18rem 0.7rem;
}
body.archive article.loop-entry .entry-summary,
body.search article.loop-entry .entry-summary { color: var(--ng-ink-soft); }
/* Read More as a power-up CTA. */
body.archive article.loop-entry .post-more-link,
body.search article.loop-entry .post-more-link {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-weight: 600;
	color: #ffffff;
	background: var(--ng-power-strong);
	border: 1px solid var(--ng-power-strong);
	border-radius: 4px;
	padding: 0.45rem 0.9rem;
}
body.archive article.loop-entry .post-more-link:hover,
body.search article.loop-entry .post-more-link:hover {
	background: var(--ng-power);
	border-color: var(--ng-power);
	color: #ffffff;
}
@media (max-width: 640px) {
	body.archive article.loop-entry,
	body.search article.loop-entry { padding: 1.1rem 1rem; }
}

/* =========================================================
   Single-post header band — designed title surface in the
   dark-console identity: power-amber rail, ink display title.
   CSS-only.
   ========================================================= */
body.single .entry-header {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(217, 119, 6, 0.06), transparent 60%),
		var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-left: 4px solid var(--ng-power);
	border-radius: 10px;
	padding: clamp(1.5rem, 4vw, 2.5rem) clamp(1.25rem, 4vw, 2.5rem);
	margin-bottom: 1.5rem;
}
body.single .entry-header .entry-title {
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: var(--ng-ink);
	margin-bottom: 0.5rem;
}
body.single .entry-header .category-links a {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ng-power-strong);
	background: #fdf3e3;
	border: 1px solid #f3d9ae;
	border-radius: 4px;
	padding: 0.18rem 0.7rem;
}
body.single .entry-header .entry-meta { color: var(--ng-ink-mute); font-size: 0.9rem; }
body.single .entry-header .entry-meta a { color: var(--ng-ink-mute); }
body.single .entry-header .entry-meta a:hover { color: var(--ng-neon-strong); }
@media (max-width: 640px) {
	body.single .entry-header { padding: 1.25rem 1rem; }
}

/* =========================================================
   Site chrome — header hairline + dark footer band in the
   dark-console identity. CSS-only; widget markup untouched.
   ========================================================= */
.site-header-wrap {
	border-bottom: 3px solid transparent;
	border-image: linear-gradient(90deg, var(--ng-ink), var(--ng-power), var(--ng-neon)) 1;
}
.site-header-row .main-navigation .menu > .menu-item > .menu-link {
	color: var(--ng-ink);
	transition: color 0.15s ease;
}
.site-header-row .main-navigation .menu > .menu-item > .menu-link:hover,
.site-header-row .main-navigation .menu > .menu-item > .menu-link:focus-visible {
	color: var(--ng-power-strong);
}
/* Dark footer band — console boot screen. */
.site-footer-wrap {
	background:
		radial-gradient(900px 320px at 90% 0%, rgba(217, 119, 6, 0.14), transparent 55%),
		linear-gradient(135deg, #12141a 0%, var(--ng-ink) 100%);
	color: #d4d8df;
}
body .site-footer-wrap a { color: #f0b35c !important; }
body .site-footer-wrap a:hover, body .site-footer-wrap a:focus-visible { color: #f8cf9a !important; }
.site-footer-wrap .site-footer-row { border-top: none; }

/* =========================================================
   Article body typography — reading surface for the console.
   Sectioned headings, tuned links, list + quote polish.
   CSS-only; content markup untouched.
   ========================================================= */
body.single .entry-content h2 {
	margin: 2.5rem 0 1rem;
	padding-left: 0.9rem;
	border-left: 4px solid var(--ng-power);
	line-height: 1.25;
}
body.single .entry-content h3,
body.single .entry-content h4 {
	margin: 2rem 0 0.75rem;
	color: var(--ng-ink);
}
body.single .entry-content p,
body.single .entry-content ul,
body.single .entry-content ol {
	margin: 0 0 1.15rem;
}
body.single .entry-content a {
	color: var(--ng-neon);
	font-weight: 500;
	text-decoration-line: underline;
	text-decoration-color: rgba(15, 111, 126, 0.35);
	text-decoration-thickness: 1.5px;
	text-underline-offset: 3px;
	transition: color 0.15s ease, text-decoration-color 0.15s ease;
}
body.single .entry-content a:hover,
body.single .entry-content a:focus-visible {
	color: var(--ng-neon-strong);
	text-decoration-color: var(--ng-neon-strong);
}
body.single .entry-content li { margin-bottom: 0.4rem; }
body.single .entry-content li::marker { color: var(--ng-power); font-weight: 700; }
body.single .entry-content blockquote {
	margin: 2rem 0;
	padding: 1.1rem 1.4rem;
	background: linear-gradient(135deg, rgba(217, 119, 6, 0.06), rgba(15, 111, 126, 0.06));
	border: 1px solid var(--ng-line);
	border-left: 4px solid var(--ng-power);
	border-radius: 10px;
	font-style: italic;
}
body.single .entry-content blockquote p { margin-bottom: 0.6rem; }
body.single .entry-content hr {
	margin: 2.5rem auto;
	border: none;
	height: 2px;
	width: 42%;
	background: linear-gradient(90deg, transparent, var(--ng-power), transparent);
}
body.single .entry-content table {
	width: 100%;
	border-collapse: collapse;
	margin: 1.75rem 0;
	border: 1px solid var(--ng-line);
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 6px 18px rgba(21, 23, 29, 0.08);
}
body.single .entry-content th {
	background: var(--ng-ink);
	color: var(--ng-score);
	padding: 0.7rem 0.9rem;
	text-align: left;
}
body.single .entry-content td {
	padding: 0.65rem 0.9rem;
	border-top: 1px solid var(--ng-line);
}
body.single .entry-content tr:nth-child(even) td { background: rgba(21, 23, 29, 0.03); }
body.single .entry-content img { border-radius: 10px; }
body.single .entry-content .wp-caption,
body.single .entry-content figcaption {
	font-size: 0.85rem;
	color: var(--ng-ink-mute);
	text-align: center;
	margin-top: 0.5rem;
}

/* =========================================================
   Post navigation — designed prev/next cards at article end.
   CSS-only; nav markup untouched.
   ========================================================= */
body.single .post-navigation .nav-links { gap: 1rem; }
body.single .post-navigation .nav-previous a,
body.single .post-navigation .nav-next a {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 0.35rem;
	background: var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-radius: 10px;
	box-shadow: 0 6px 18px rgba(21, 23, 29, 0.08);
	padding: 1rem 1.15rem;
	color: var(--ng-ink);
	font-weight: 600;
	font-size: 1rem;
	line-height: 1.35;
	text-decoration: none;
	transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
body.single .post-navigation .nav-previous a:hover,
body.single .post-navigation .nav-next a:hover {
	border-color: var(--ng-power);
	box-shadow: 0 10px 24px rgba(21, 23, 29, 0.14);
	transform: translateY(-1px);
}
body.single .post-navigation .nav-next a { text-align: right; align-items: flex-end; }
body.single .post-navigation .post-navigation-sub {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ng-power-strong);
}
body.single .post-navigation .post-navigation-sub small { font-size: inherit; }
@media (max-width: 640px) {
	body.single .post-navigation .nav-links { grid-template-columns: 1fr; }
	body.single .post-navigation .nav-next a { text-align: left; align-items: flex-start; }
}

/* =========================================================
   Archive header band — designed title + description surface
   matching the single-post header band. CSS-only.
   ========================================================= */
body.archive .archive-title {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(217, 119, 6, 0.08), transparent 60%),
		var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-left: 4px solid var(--ng-power);
	border-radius: 10px;
	padding: 1.5rem 1.75rem 1.4rem;
	margin-bottom: 1.5rem;
	font-size: clamp(1.6rem, 3.5vw, 2.25rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: var(--ng-ink);
}
/* When a description follows, the two elements form one band. */
body.archive .archive-title:has(+ .archive-description) {
	border-bottom: none;
	border-radius: 10px 10px 0 0;
	padding-bottom: 0.2rem;
	margin-bottom: 0;
}
body.archive .archive-description {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(217, 119, 6, 0.08), transparent 60%),
		var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-left: 4px solid var(--ng-power);
	border-top: none;
	border-radius: 0 0 10px 10px;
	padding: 0.1rem 1.75rem 1.4rem;
	margin-bottom: 1.5rem;
	color: var(--ng-ink-mute);
	font-size: 1.02rem;
	line-height: 1.55;
}
body.archive .archive-description p { margin: 0; }

/* =========================================================
   Pagination — designed chip row matching the card system
   (bare links currently float under the archive loop).
   CSS-only; markup/rel/URLs unchanged.
   ========================================================= */
body.archive .pagination .nav-links,
body.home .pagination .nav-links,
body.search .pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5rem 0 0.25rem;
}
.pagination .nav-links .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	height: 42px;
	padding: 0 0.65rem;
	margin: 0;
	background: var(--ng-surface);
	border: 1px solid var(--ng-line) !important;
	border-radius: 10px !important;
	color: var(--ng-ink);
	font-size: 0.95rem;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease, background 160ms ease;
}
a.page-numbers:hover {
	border-color: var(--ng-neon) !important;
	color: var(--ng-neon-strong);
	background: var(--ng-surface);
	transform: translateY(-1px);
	box-shadow: 0 4px 12px -6px rgba(21, 23, 29, 0.3);
}
.pagination .nav-links .page-numbers.current {
	background: linear-gradient(135deg, var(--ng-power), var(--ng-power-strong));
	border-color: transparent !important;
	color: #fff;
}
.pagination .nav-links .page-numbers.dots {
	background: transparent;
	border-color: transparent !important;
	color: var(--ng-ink-mute);
	font-weight: 500;
	min-width: 24px;
	padding: 0;
}
.pagination .nav-links .page-numbers.prev,
.pagination .nav-links .page-numbers.next { padding: 0 0.9rem; }
.pagination .nav-links .page-numbers .kadence-svg-icon { display: inline-flex; }

/* =========================================================
   Related-posts carousel — compact card sizing. The default
   entry-title renders at the 40px archive size inside the
   related slider, stretching every card. CSS-only.
   ========================================================= */
body.single .entry-related {
	border-top: 1px solid var(--ng-line);
	padding-top: 2rem;
}
body.single .entry-related .entry-related-title {
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ng-ink-mute);
	margin: 0 0 1.25rem;
}
body.single .entry-related .entry-title {
	font-size: 1.15rem;
	line-height: 1.35;
	letter-spacing: -0.01em;
	margin: 0 0 0.65rem;
}
body.single .entry-related .entry-meta {
	font-size: 0.85rem;
	line-height: 1.4;
}
body.single .entry-related article.loop-entry {
	transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
body.single .entry-related article.loop-entry:hover {
	border-color: var(--ng-neon);
	transform: translateY(-2px);
	box-shadow: 0 10px 24px -12px rgba(21, 23, 29, 0.35);
}
/* Uniform related cards: thumbnails' ratio class drives the
   whole carousel tall when present. */
body.single .entry-related .post-thumbnail { display: none; }
body.single .entry-related .entry-summary p {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-size: 0.9rem;
	line-height: 1.45;
	color: var(--ng-ink-mute);
	margin: 0;
}
body.single .entry-related .entry-summary { margin-top: 0.35rem; }
body.single .entry-related .entry-taxonomies { margin-bottom: 0.5rem; }
/* Stop stretching the card to the row's tallest slide. */
body.single .entry-related .splide__list { align-items: flex-start; }
body.single .entry-related li.splide__slide { align-items: flex-start; }
body.single .entry-related li.splide__slide article.entry {
	flex: none;
	height: auto;
	align-self: flex-start;
}
@media (max-width: 640px) {
	body.single .entry-related .entry-title { font-size: 1.05rem; }
}

/* =========================================================
   Mobile navigation drawer — designed surface. The stock
   drawer was a flat near-black panel with 14px links.
   CSS-only.
   ========================================================= */
#mobile-drawer .drawer-inner {
	background: linear-gradient(180deg, rgba(217, 119, 6, 0.15), rgba(21, 23, 29, 0) 180px), var(--ng-ink);
}
#mobile-drawer .drawer-inner::before {
	content: "";
	display: block;
	height: 3px;
	background: linear-gradient(90deg, var(--ng-power), transparent 70%);
}
#mobile-drawer #mobile-menu > li > a,
#mobile-drawer #mobile-menu .drawer-nav-drop-wrap > a {
	font-size: 1.05rem;
	font-weight: 600;
	padding: 1rem 1.5rem;
	color: #eef0f4;
}
#mobile-drawer #mobile-menu > li.current-menu-item > a,
#mobile-drawer #mobile-menu > li.current-menu-item > .drawer-nav-drop-wrap > a,
#mobile-drawer #mobile-menu > li.current_page_item > a {
	color: #fbbf24;
	box-shadow: inset 3px 0 0 var(--ng-power);
	background: rgba(217, 119, 6, 0.12);
}
#mobile-drawer #mobile-menu ul.sub-menu > li > a {
	font-size: 0.95rem;
	font-weight: 500;
	color: #8a93a3;
	padding-left: 2.5rem;
}
#mobile-drawer .drawer-sub-toggle {
	width: 52px;
}
#mobile-drawer .drawer-sub-toggle:hover {
	color: #fbbf24;
}

/* =========================================================
   Sticky site header — persistent nav on scroll. CSS-only.
   ========================================================= */
body .site-header {
	position: sticky !important;
	top: 0;
	z-index: 40;
	box-shadow: 0 8px 24px -18px rgba(21, 23, 29, 0.55);
}
body.admin-bar .site-header { top: 32px; }
@media screen and (max-width: 782px) {
	body.admin-bar .site-header { top: 46px; }
}

/* =========================================================
   Record spec-sheet — designed data panel (pass 13).
   CSS-only; no markup/SEO/URL change.
   ========================================================= */
article.ng-record dl.ng-record__meta {
	display: grid;
	grid-template-columns: 190px 1fr;
	margin: 1.25rem 0 1.75rem;
	border: 1px solid var(--ng-line);
	border-radius: 10px;
	overflow: hidden;
}
article.ng-record dl.ng-record__meta > dt {
	grid-column: 1;
	padding: 0.72rem 1rem;
	font-size: 0.74rem;
	font-weight: 700;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	color: #e7ebf0;
	background: var(--ng-ink);
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	align-content: center;
}
article.ng-record dl.ng-record__meta > dd {
	grid-column: 2;
	margin: 0;
	padding: 0.72rem 1.1rem;
	border-bottom: 1px solid var(--ng-line);
	align-content: center;
}
article.ng-record dl.ng-record__meta > dt:last-of-type,
article.ng-record dl.ng-record__meta > dd:last-of-type { border-bottom: 0; }
article.ng-record dl.ng-record__meta > dd[data-status] { font-weight: 700; }
dl.ng-record__meta > dd[data-status="active"] { color: #047857; }
dl.ng-record__meta > dd[data-status="paused"],
dl.ng-record__meta > dd[data-status="early_access"],
dl.ng-record__meta > dd[data-status="unknown"] { color: #b45309; }
dl.ng-record__meta > dd[data-status="shut_down"],
dl.ng-record__meta > dd[data-status="pivoted"] { color: #b91c1c; }
@media screen and (max-width: 560px) {
	article.ng-record dl.ng-record__meta { grid-template-columns: 132px 1fr; }
}
aside.ng-record__sensitivity {
	margin: 1.25rem 0;
	padding: 0.9rem 1.15rem;
	background: #fff8ec;
	border: 1px solid #f2dfae;
	border-left: 3px solid var(--ng-power);
	border-radius: 0 8px 8px 0;
	font-size: 0.93rem;
}
ul.ng-record__evidence li { margin: 0.55rem 0; }
ul.ng-record__evidence li::marker { color: var(--ng-power); }
p.ng-record__notes { font-size: 0.9rem; color: var(--ng-ink-mute); }

/* =========================================================
   Record content lists + section headings (pass 14).
   CSS-only; no markup/SEO/URL change.
   ========================================================= */
article.ng-record h3 { margin-top: 1.7rem; }
article.ng-record > ul { margin: 0.9rem 0 1.3rem; }
article.ng-record > ul li { margin: 0.45rem 0; }
article.ng-record > ul li::marker { color: var(--ng-power); }
article.ng-record ul.ng-record__evidence {
	margin: 0.9rem 0;
	padding-left: 1.3rem;
}
article.ng-record .entry-meta { font-size: 0.86rem; }

/* =========================================================
   Nav interaction states + anchor scroll offset (pass 15).
   ========================================================= */
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a {
	transition: color 0.15s ease;
}
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a:hover {
	color: var(--ng-power);
}
.site-header .main-navigation .primary-menu-container > ul > li.menu-item.current-menu-item > a,
.site-header .main-navigation .primary-menu-container > ul > li.menu-item.current_page_item > a,
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a[aria-current="page"] {
	color: var(--ng-ink);
	font-weight: 650;
	box-shadow: inset 0 -2px 0 var(--ng-power);
}
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a:focus-visible {
	outline: 2px solid var(--ng-power);
	outline-offset: 3px;
	border-radius: 4px;
}
[id] { scroll-margin-top: 96px; }
body.admin-bar [id] { scroll-margin-top: 130px; }
@media (max-width: 782px) { body.admin-bar [id] { scroll-margin-top: 142px; } }

/* =========================================================
   Interactive surfaces (pass 16). CSS-only.
   ========================================================= */
#commentform textarea,
#commentform input:not([type="submit"]) {
  border-radius: 8px;
  border-color: var(--ng-line);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
#commentform textarea:focus,
#commentform input:not([type="submit"]):focus {
  border-color: var(--ng-power);
  outline: none;
  box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.18);
}
#commentform .submit {
  background: var(--ng-power);
  border-radius: 8px;
  font-weight: 650;
  padding: 0.7rem 1.35rem;
  transition: background 0.15s ease;
}
#commentform .submit:hover,
#commentform .submit:focus-visible { background: #b45309; }

.entry-related-carousel .splide__arrow { background: rgba(21, 23, 29, 0.55); }
.entry-related-carousel .splide__arrow:hover,
.entry-related-carousel .splide__arrow:focus-visible { background: var(--ng-power); }
.entry-related-carousel .splide__pagination__page.is-active { background: var(--ng-power); }
.entry-related-carousel .splide__pagination__page:hover { background: rgba(217, 119, 6, 0.55); }

/* =========================================================
   Comment reply region + inline code chip (pass 17). CSS-only.
   ========================================================= */
#respond.comment-respond,
.comment-respond #respond {
  background: #fbfbfc;
  border: 1px solid var(--ng-line);
  border-radius: 12px;
  padding: 1.25rem 1.4rem 1.4rem;
}
#respond .comment-reply-title,
.comment-respond .comment-reply-title {
  color: var(--ng-ink);
  font-size: 1.15rem;
  font-weight: 700;
  border-left: 3px solid var(--ng-power);
  padding-left: 0.7rem;
}
#respond .comment-notes,
#respond .logged-in-as,
#respond .logged-in-as a {
  color: var(--ng-ink-mute);
  font-size: 0.85rem;
}

.entry-content code {
  background: #f4f5f7;
  border: 1px solid var(--ng-line);
  border-radius: 5px;
  padding: 0.08em 0.42em;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.85em;
  color: var(--ng-ink);
}

/* =========================================================
   Record notes panel (pass 18). CSS-only.
   ========================================================= */
article.ng-record p.ng-record__notes {
  background: #fbfbfc;
  border: 1px solid var(--ng-line);
  border-left: 3px solid var(--ng-power);
  border-radius: 8px;
  padding: 0.8rem 1rem;
  color: var(--ng-ink-mute);
  font-size: 0.92rem;
}
article.ng-record p.ng-record__notes strong { color: var(--ng-ink); }

/* =========================================================
   Read-progress indicator (pass 19). GPU transform-only bar
   driven by assets/ng-progress.js. a11y-safe (aria-hidden,
   pointer-events none, hidden under reduced-motion).
   ========================================================= */
.read-progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: var(--ng-power);
  transform-origin: 0 0;
  transform: scaleX(0);
  z-index: 100000;
  pointer-events: none;
  will-change: transform;
}
@media (prefers-reduced-motion: reduce) {
  .read-progress { display: none; }
}

/* =========================================================
   Branded browser chrome (pass 20). Selection tint, focus
   ring, scrollbar polish — CSS only.
   ========================================================= */
::selection {
  background: rgba(217, 119, 6, 0.2);
  color: var(--ng-ink);
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--ng-power);
  outline-offset: 2px;
  border-radius: 3px;
}
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-track {
  background: #fbfbfc;
}
::-webkit-scrollbar-thumb {
  background: #c8cdd6;
  border: 2px solid #fbfbfc;
  border-radius: 5px;
}
::-webkit-scrollbar-thumb:hover {
  background: var(--ng-power);
}

/* =========================================================
   Back-to-top control (pass 21). Fixed accent chip; fades in
   past 600px scroll via .is-visible. Reduced-motion aware.
   ========================================================= */
.back-to-top {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--ng-power);
  color: var(--ng-ink);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
  box-shadow: 0 6px 18px rgba(21, 23, 29, 0.3);
  z-index: 99999;
}
.back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.back-to-top:hover {
  filter: brightness(1.08);
}
.back-to-top svg {
  display: block;
}
@media (prefers-reduced-motion: reduce) {
  .back-to-top {
    transition: none;
  }
}

/* =========================================================
   Print styles (pass 22). Strip interactive furniture and
   ink-heavy bands; readable single-column output.
   ========================================================= */
@media print {
  header, footer, nav,
  .read-progress, .back-to-top,
  .post-navigation, .nav-links,
  #comments, #respond, .comment-respond, .comments-area,
  form, button,
  [class*='carousel'], [class*='drawer'], [class*='-filter'] {
    display: none !important;
  }
  * {
    box-shadow: none !important;
    text-shadow: none !important;
  }
  html, body {
    background: #fff !important;
    color: #111 !important;
  }
  a {
    color: inherit;
  }
  [class*='-hero'], [class*='-band'], [class*='-panel'], [class*='-card'] {
    background: #fff !important;
    color: #111 !important;
  }
  h1, h2, h3, h4 {
    color: #000 !important;
    page-break-after: avoid;
  }
  table, article {
    page-break-inside: avoid;
  }
}

/* =========================================================
   Typographic refinements (pass 23). Balanced headings,
   tabular numerals in data tables, tuned link underlines.
   ========================================================= */
h1, h2, h3 {
  text-wrap: balance;
}
table,
[class*='stat'] {
  font-variant-numeric: tabular-nums;
}
article a,
.entry-content a {
  text-underline-offset: 0.15em;
  text-decoration-thickness: 0.06em;
}

/* =========================================================
   Breadcrumb trail (pass 24). Compact wayfinding row above
   article content: Home / Category / Current.
   ========================================================= */
.ng-crumbs {
  margin: 0 0 1.25rem;
}
.ng-crumbs ol {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.ng-crumbs li {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: rgba(21, 23, 29, 0.55);
}
.ng-crumbs li + li::before {
  content: "›";
  color: rgba(21, 23, 29, 0.3);
}
.ng-crumbs a {
  color: rgba(21, 23, 29, 0.7);
  text-decoration: none;
}
.ng-crumbs a:hover {
  color: var(--ng-power);
}
.ng-crumbs [aria-current='page'] {
  color: var(--ng-ink);
}

/* =========================================================
   Nav search (pass 25). Compact GET search tucked into the
   primary menu; expands on focus, full-width in the drawer.
   ========================================================= */
.ng-nav-search {
  display: flex;
  align-items: center;
}
.ng-nav-search-form {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  margin-left: 0.5rem;
}
input.ng-nav-search-input {
  width: 8.5rem;
  height: 2.1rem;
  padding: 0 0.75rem;
  font-size: 0.85rem;
  color: var(--ng-ink);
  background: #fff;
  border: 1px solid rgba(21, 23, 29, 0.18);
  border-radius: 999px;
  transition: width 0.2s ease, border-color 0.2s ease;
}
input.ng-nav-search-input:focus {
  width: 11rem;
  border-color: var(--ng-power);
  outline: none;
}
button.ng-nav-search-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.1rem;
  height: 2.1rem;
  padding: 0;
  color: #fff;
  background: var(--ng-power);
  border: none;
  border-radius: 50%;
  cursor: pointer;
}
button.ng-nav-search-btn:hover {
  filter: brightness(1.08);
}
@media (max-width: 1024px) {
  .ng-nav-search-form {
    margin: 0.5rem 0 0;
    width: 100%;
  }
  input.ng-nav-search-input {
    flex: 1;
    width: auto;
  }
}

/* =========================================================
   External-link indicator (pass 26). Subtle ↗ after outbound
   links inside article content; internal links untouched.
   ========================================================= */
.entry-content a[href^='http']:not([href*='nftgaming.com.au'])::after,
article a[href^='http']:not([href*='nftgaming.com.au'])::after {
  content: '↗';
  display: inline-block;
  margin-left: 0.12em;
  font-size: 0.72em;
  line-height: 1;
  vertical-align: 0.08em;
  opacity: 0.6;
  transition: opacity 0.15s ease;
}
.entry-content a[href^='http']:not([href*='nftgaming.com.au']):hover::after,
article a[href^='http']:not([href*='nftgaming.com.au']):hover::after {
  opacity: 1;
}

/* =========================================================
   Footer sitemap band (pass 27). Ink section above the dark
   footer with Explore/Latest link columns.
   ========================================================= */
.ng-sitemap {
  background: var(--ng-ink, #15171d);
  padding: 2rem max(1.25rem, 4vw) 0.75rem;
  color: rgba(229, 231, 235, 0.72);
}
.ng-sitemap-grid {
  max-width: 72rem;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 1.5rem;
}
.ng-sitemap-head {
  margin: 0 0 0.625rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #fcd34d;
}
.ng-sitemap ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.375rem;
}
.ng-sitemap a {
  color: rgba(229, 231, 235, 0.78);
  text-decoration: none;
  font-size: 0.9rem;
}
.ng-sitemap a:hover { color: #fbbf24; }

/* =========================================================
   Reading-time chip (pass 28). Right-aligned pill inside the
   breadcrumb row; muted like the trail, chip-outlined.
   ========================================================= */
.ng-crumbs li.ng-readtime::before { content: none; }
.ng-crumbs .ng-readtime {
  margin-left: auto;
  padding: 0.125rem 0.625rem;
  border: 1px solid rgba(21, 23, 29, 0.15);
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: rgba(21, 23, 29, 0.5);
  text-transform: none;
}
@media (max-width: 640px) {
  .ng-crumbs .ng-readtime { margin-left: 0; }
}

/* =========================================================
   Heading anchor links (pass 29). '#' deep-link affordance
   revealed on heading hover / keyboard focus.
   ========================================================= */
.entry-content h2 .ng-anchor,
.entry-content h3 .ng-anchor {
  margin-left: 0.45rem;
  font-size: 0.8em;
  font-weight: 600;
  color: var(--ng-power, #d97706);
  text-decoration: none;
  opacity: 0;
  transition: opacity 0.15s ease;
}
.entry-content h2:hover .ng-anchor,
.entry-content h3:hover .ng-anchor,
.entry-content .ng-anchor:focus-visible {
  opacity: 0.85;
}
.entry-content .ng-anchor:hover { opacity: 1; }

/* =========================================================
   Byline chip bar (pass 30). Entry meta becomes compact
   accent-tinted pills: author chip + date chip; dot divider
   suppressed inside the chip row.
   ========================================================= */
.entry-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.entry-meta.entry-meta-divider-dot .posted-by::before,
.entry-meta.entry-meta-divider-dot .posted-on::before {
  content: none;
}
.entry-meta .posted-by,
.entry-meta .posted-on {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.7rem;
  border: 1px solid rgba(21, 23, 29, 0.12);
  border-radius: 999px;
  background: rgba(217, 119, 6, 0.06);
  font-size: 0.78rem;
  color: rgba(21, 23, 29, 0.7);
}
.entry-meta .posted-by .meta-label {
  color: rgba(21, 23, 29, 0.45);
}
.entry-meta .author a {
  color: var(--ng-ink, #15171d);
  font-weight: 600;
  text-decoration: none;
}
.entry-meta .author a:hover {
  color: var(--ng-power, #d97706);
}

/* =========================================================
   Author box (pass 31). Branded author card at article end.
   ========================================================= */
.ng-authorbox {
  margin-top: 2.5rem;
  display: flex;
  gap: 0.9rem;
  align-items: flex-start;
  padding: 1.125rem 1.25rem;
  border: 1px solid rgba(21, 23, 29, 0.1);
  border-left: 3px solid var(--ng-power, #d97706);
  border-radius: 12px;
  background: rgba(21, 23, 29, 0.02);
}
.ng-authorbox-mono {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 999px;
  background: var(--ng-power, #d97706);
  color: #ffffff;
  font-weight: 700;
  font-size: 1rem;
  flex: none;
}
.ng-authorbox-label {
  display: block;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(21, 23, 29, 0.5);
}
.ng-authorbox-name {
  font-weight: 600;
  color: var(--ng-ink, #15171d);
  text-decoration: none;
  font-size: 1rem;
}
.ng-authorbox-name:hover {
  color: var(--ng-power, #d97706);
}
.ng-authorbox-bio {
  margin: 0.3rem 0 0;
  font-size: 0.85rem;
  color: rgba(21, 23, 29, 0.65);
  line-height: 1.5;
}

/* =========================================================
   In-article table of contents (pass 32). Jump list card
   before the first heading on multi-section posts.
   ========================================================= */
.ng-toc {
  margin: 0 0 2rem;
  padding: 1rem 1.25rem;
  border: 1px solid rgba(21, 23, 29, 0.1);
  border-radius: 14px;
  background: rgba(217, 119, 6, 0.04);
  max-width: 26rem;
}
.ng-toc-head {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(21, 23, 29, 0.5);
  margin-bottom: 0.5rem;
}
.ng-toc-list {
  margin: 0;
  padding-left: 1.15rem;
  display: grid;
  gap: 0.3rem;
  font-size: 0.88rem;
}
.ng-toc-list li::marker {
  color: var(--ng-power, #d97706);
}
.ng-toc-list a {
  color: var(--ng-ink, #15171d);
  text-decoration: none;
}
.ng-toc-list a:hover {
  color: var(--ng-power, #d97706);
  text-decoration: underline;
}
.ng-toc-sub {
  margin-left: 1rem;
  font-size: 0.95em;
  list-style: circle;
}

/* =========================================================
   Filed-under category chips (pass 33). Real categories as
   accent pills at article end.
   ========================================================= */
.ng-filed {
  margin-top: 1.25rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.ng-filed-label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(21, 23, 29, 0.5);
}
.ng-filed-chip {
  display: inline-flex;
  padding: 0.25rem 0.75rem;
  border: 1px solid rgba(217, 119, 6, 0.35);
  border-radius: 999px;
  background: rgba(217, 119, 6, 0.05);
  color: var(--ng-power, #d97706);
  font-size: 0.78rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.ng-filed-chip:hover {
  background: var(--ng-power, #d97706);
  color: #ffffff;
}

/* =========================================================
   Freshness stamp (pass 34). Muted "Updated <date>" token in
   the meta row, injected by ng-totop.js when updated differs.
   ========================================================= */
.ng-fresh {
  font-size: 0.72rem;
  font-weight: 600;
  color: rgba(21, 23, 29, 0.45);
  white-space: nowrap;
}

/* =========================================================
   ToC scrollspy (pass 35). Accent state on the current
   section's jump-list link, toggled by ng-totop.js.
   ========================================================= */
.ng-toc-list a.ng-toc-active {
  color: var(--ng-power, #d97706);
  font-weight: 600;
}

/* =========================================================
   Category topic chips (pass 36). Sibling/child category
   pill row above the archive grid.
   ========================================================= */
.ng-catsub {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0 0 1.25rem;
}
.ng-catsub-chip {
  display: inline-flex;
  padding: 0.28rem 0.8rem;
  border: 1px solid rgba(15, 111, 126, 0.3);
  border-radius: 999px;
  background: rgba(15, 111, 126, 0.05);
  color: var(--ng-power, #0f6f7e);
  font-size: 0.78rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.ng-catsub-chip:hover {
  background: var(--ng-power, #0f6f7e);
  color: #ffffff;
}
.ng-catsub-chip.ng-catsub-current {
  background: var(--ng-power, #0f6f7e);
  color: #ffffff;
}

/* =========================================================
   Search-results refine bar (pass 37). Prefilled form +
   result count above the results grid.
   ========================================================= */
.ng-sres {
  margin: 0 0 1.5rem;
  padding: 1.1rem 1.25rem 1rem;
  border: 1px solid rgba(15, 111, 126, 0.25);
  border-radius: 14px;
  background: rgba(15, 111, 126, 0.04);
}
.ng-sres-label {
  display: block;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--ng-ink, #15171d);
  margin-bottom: 0.75rem;
}
.ng-sres-row {
  display: flex;
  gap: 0.6rem;
}
.ng-sres-input {
  flex: 1;
  min-width: 0;
  padding: 0.6rem 0.9rem;
  border: 1px solid rgba(15, 111, 126, 0.35);
  border-radius: 9px;
  font: inherit;
  color: var(--ng-ink, #15171d);
  background: #ffffff;
}
.ng-sres-input:focus {
  outline: 2px solid rgba(15, 111, 126, 0.45);
  outline-offset: 1px;
}
.ng-sres-btn {
  padding: 0.6rem 1.3rem;
  border: 0;
  border-radius: 9px;
  background: var(--ng-power, #0f6f7e);
  color: #ffffff;
  font-weight: 600;
  font-size: 0.92rem;
  cursor: pointer;
  transition: filter 0.15s ease;
}
.ng-sres-btn:hover {
  filter: brightness(1.08);
}
.ng-sres-count {
  margin: 0.6rem 0 0;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(21, 23, 29, 0.45);
}

/* =========================================================
   Archive sort controls (pass 38). Newest/Oldest/Title A–Z
   chip row above archive grids.
   ========================================================= */
.ng-sort {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 1.1rem;
}
.ng-sort-label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(21, 23, 29, 0.5);
}
.ng-sort-chip {
  display: inline-flex;
  padding: 0.24rem 0.7rem;
  border: 1px solid rgba(15, 111, 126, 0.3);
  border-radius: 999px;
  background: rgba(15, 111, 126, 0.05);
  color: var(--ng-power, #0f6f7e);
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.ng-sort-chip:hover {
  background: var(--ng-power, #0f6f7e);
  color: #ffffff;
}
.ng-sort-chip.ng-sort-current {
  background: var(--ng-power, #0f6f7e);
  color: #ffffff;
}

/* =========================================================
   Reader font-size control (pass 39). A− / A / A+ chips in
   the meta row; scales .entry-content body text.
   ========================================================= */
.ng-fontctl {
  display: inline-flex;
  gap: 0.3rem;
  margin-left: 0.5rem;
  vertical-align: middle;
}
.ng-fontctl-btn {
  min-width: 1.7rem;
  padding: 0.12rem 0.35rem;
  border: 1px solid rgba(15, 111, 126, 0.3);
  border-radius: 7px;
  background: rgba(15, 111, 126, 0.05);
  color: #0f6f7e;
  font-size: 0.72rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.ng-fontctl-btn:hover {
  background: #0f6f7e;
  color: #ffffff;
}
.ng-fontctl-btn.ng-fontctl-on {
  background: #0f6f7e;
  color: #ffffff;
}

/* =========================================================
   Freshness badge (pass 40). Accent "New" pill on card
   titles for posts under 21 days old.
   ========================================================= */
.ng-fresh {
  display: inline-block;
  margin-right: 0.45rem;
  padding: 0.08rem 0.45rem;
  border-radius: 999px;
  background: #0f6f7e;
  color: #ffffff;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  vertical-align: middle;
  transform: translateY(-1px);
}

/* =========================================================
   Archive intelligence (pass 41). Reading-time chip on card
   titles + post-count line in the archive header band.
   ========================================================= */
.ng-card-rt {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.08rem 0.45rem;
  border: 1px solid rgba(15, 111, 126, 0.3);
  border-radius: 999px;
  background: rgba(15, 111, 126, 0.05);
  color: #0f6f7e;
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  vertical-align: middle;
  transform: translateY(-1px);
  white-space: nowrap;
}
.ng-archive-count {
  display: block;
  margin: 0 0 0.9rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: rgba(21, 23, 29, 0.55);
}

/* =========================================================
   Updated badge (pass 42). Outlined "Updated" pill on cards
   for posts meaningfully revised after publish.
   ========================================================= */
.ng-fresh.ng-updated {
  background: rgba(15, 111, 126, 0.08);
  color: var(--ng-accent, #0f6f7e);
  border: 1px solid rgba(15, 111, 126, 0.35);
}

/* =========================================================
   Zero-results search guidance (pass 44). Topic chips + latest
   links inside a designed panel on search-no-results.
   ========================================================= */
.ng-none {
  margin: 1.2rem 0;
  padding: 1.4rem 1.5rem;
  border: 1px solid rgba(15, 111, 126, 0.18);
  border-radius: 0.9rem;
  background: rgba(15, 111, 126, 0.04);
}
.ng-none-title {
  margin: 0 0 0.35rem;
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--ng-ink, #15171d);
}
.ng-none-sub {
  margin: 0 0 0.9rem;
  font-size: 0.85rem;
  color: rgba(21, 23, 29, 0.6);
}
.ng-none-topics {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-bottom: 1rem;
}
.ng-none-chip {
  display: inline-block;
  padding: 0.3rem 0.75rem;
  border: 1px solid rgba(15, 111, 126, 0.3);
  border-radius: 999px;
  background: #fff;
  color: var(--ng-accent, #0f6f7e);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-decoration: none;
}
.ng-none-chip:hover {
  background: var(--ng-accent, #0f6f7e);
  color: #fff;
}
.ng-none-latest {
  display: grid;
  gap: 0.35rem;
}
.ng-none-link {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--ng-ink, #15171d);
  text-decoration: none;
}
.ng-none-link:hover {
  color: var(--ng-accent, #0f6f7e);
}

/* =========================================================
   Copy-link share chip (pass 45). Copies the canonical URL to
   the clipboard from the filed-under row.
   ========================================================= */
.ng-share {
  margin-left: auto;
  padding: 0.3rem 0.8rem;
  border: 1px solid rgba(15, 111, 126, 0.35);
  border-radius: 999px;
  background: #fff;
  color: #0f6f7e;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  cursor: pointer;
}
.ng-share:hover,
.ng-share.ng-share-done {
  background: #0f6f7e;
  color: #fff;
  border-color: #0f6f7e;
}

/* =========================================================
   404 browse-ramp (pass 46). Real category chips + latest posts
   inside the branded 404 — dead end becomes a directory.
   ========================================================= */
.ng-404-ramp {
  margin-top: 1.6rem;
  text-align: left;
}
.ng-404-ramp .ng-none-topics {
  margin-bottom: 1rem;
}

/* =========================================================
   Sticky section rail (pass 47). A right-edge dot-nav cloned
   from the in-article ToC on wide viewports — scrollspy-synced
   anchors for long records without stealing content width.
   ========================================================= */
.ng-rail {
  display: none;
}
@media (min-width: 1360px) {
  .ng-rail {
    position: fixed;
    right: 18px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 60;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: 180px;
  }
  .ng-rail a {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.45rem;
    font-size: 0;
    line-height: 1;
    text-decoration: none;
    color: rgba(21, 23, 29, 0.45);
  }
  .ng-rail a::after {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 999px;
    background: rgba(15, 111, 126, 0.35);
    flex: none;
    transition: transform 0.15s ease, background 0.15s ease;
  }
  .ng-rail a:hover,
  .ng-rail a.ng-rail-active {
    font-size: 0.68rem;
    font-weight: 700;
    color: #15171d;
  }
  .ng-rail a.ng-rail-active::after {
    background: #0f6f7e;
    transform: scale(1.35);
  }
}

/* =========================================================
   Share cluster (pass 48). The copy-link chip grows into a
   real share group: outbound share intent links to X,
   Facebook and Reddit as accent-ringed icon buttons beside
   the copy pill. Icons carry no ↗ marker (they're affordances,
   not content links).
   ========================================================= */
.ng-sharegrp {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.ng-sharegrp .ng-share {
  margin-left: 0;
}
.ng-share-a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid rgba(15, 111, 126, 0.35);
  border-radius: 999px;
  color: #0f6f7e;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.ng-share-a svg {
  fill: currentColor;
  display: block;
}
.ng-share-a:hover {
  background: #0f6f7e;
  border-color: #0f6f7e;
  color: #fff;
}
article a.ng-share-a::after,
.entry-content a.ng-share-a::after {
  content: none;
}

/* =========================================================
   Author profile band (pass 49). Author archives open with a
   designed profile card — accent monogram, display name, real
   published count and (when set) the user's bio — instead of a
   bare "Author: X" header row.
   ========================================================= */
.ng-author-band {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  margin: 0 0 1.4rem;
  padding: 1.1rem 1.3rem;
  background: #fff;
  border: 1px solid rgba(21, 23, 29, 0.09);
  border-radius: 16px;
}
.ng-author-band-mono {
  width: 52px;
  height: 52px;
  border-radius: 999px;
  background: #0f6f7e;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  font-weight: 800;
  flex: none;
}
.ng-author-band-meta {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.ng-author-band-meta strong {
  font-size: 1.05rem;
  color: #15171d;
}
.ng-author-band-meta span {
  font-size: 0.78rem;
  color: rgba(21, 23, 29, 0.55);
}
.ng-author-band-desc {
  margin-top: 0.25rem;
}

/* =========================================================
   Search-term highlighting (pass 50). On search results the
   matched terms in card titles and excerpts are wrapped in
   accent-tinted marks so the relevance of each result is
   visible at a glance.
   ========================================================= */
mark.ng-mark {
  background: rgba(15, 111, 126, 0.14);
  color: inherit;
  padding: 0 0.12em;
  border-radius: 3px;
}

/* =========================================================
   Designed dropdown menu panels (pass 51). Desktop primary
   nav sub-menus render as white card panels — rounded,
   shadowed, token-weight links with accent hover — instead of
   the theme's flat dark default strip.
   ========================================================= */
@media (min-width: 1025px) {
  .site-header .main-navigation .menu-item-has-children .sub-menu {
    background: #fff;
    border: 1px solid rgba(21, 23, 29, 0.09);
    border-radius: 12px;
    box-shadow: 0 12px 30px rgba(21, 23, 29, 0.14);
    padding: 0.5rem;
    min-width: 220px;
  }
  .site-header .main-navigation .menu-item-has-children .sub-menu li a {
    background: transparent;
    color: #15171d;
    font-weight: 600;
    font-size: 0.85rem;
    border-radius: 8px;
    padding: 0.55em 0.8em;
  }
  .site-header .main-navigation .menu-item-has-children .sub-menu li a:hover,
  .site-header .main-navigation .menu-item-has-children .sub-menu li a:focus {
    background: rgba(15, 111, 126, 0.08);
    color: #0f6f7e;
  }
}

/* =========================================================
   Archive description surface (pass 52). Category archives
   render the real curated category description under the
   title row — previously it only reached meta tags.
   ========================================================= */
.ng-arch-desc {
  margin: 0 0 1.1rem;
  font-size: 0.92rem;
  line-height: 1.65;
  color: rgba(21, 23, 29, 0.66);
  max-width: 64ch;
}
.ng-arch-desc a {
  color: #0f6f7e;
}

/* =========================================================
   Topic RSS subscribe chip (pass 53). Category archives
   surface their real feed as a right-aligned chip in the
   sort row — live subscribe surface per topic.
   ========================================================= */
.ng-sort-rss {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
  padding: 0.24rem 0.7rem;
  border: 1px solid rgba(15, 111, 126, 0.3);
  border-radius: 999px;
  color: #0f6f7e;
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
}
.ng-sort-rss:hover,
.ng-sort-rss:focus {
  background: #0f6f7e;
  color: #ffffff;
}

/* =========================================================
   Archive breadcrumb trail (pass 54). Category and author
   archives get a real Home / ... / Here crumb row at the
   top of the archive band — IA context singular posts
   already had.
   ========================================================= */
.ng-crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 0.7rem;
  font-size: 0.76rem;
  font-weight: 600;
}
.ng-crumbs a {
  color: #0f6f7e;
  text-decoration: none;
}
.ng-crumbs a:hover,
.ng-crumbs a:focus {
  text-decoration: underline;
}
.ng-crumbs span:last-child {
  color: rgba(21, 23, 29, 0.6);
}
.ng-crumb-sep {
  color: rgba(21, 23, 29, 0.35);
}

/* =========================================================
   Comment CTA chip (pass 55). A comments_open()-gated
   "Comment" pill beside the share cluster — only renders on
   posts with an open discussion; scrolls to #respond.
   ========================================================= */
.ng-cta-comment {
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
  margin-left: 0.45rem;
  padding: 0.24rem 0.7rem;
  border: 1px solid rgba(15, 111, 126, 0.3);
  border-radius: 999px;
  color: #0f6f7e;
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
}
.ng-cta-comment:hover,
.ng-cta-comment:focus {
  background: #0f6f7e;
  color: #fff;
}

/* =========================================================
   Archive card lift (pass 56). Loop cards get a transform/
   shadow-only hover raise + accent border tint, and the lead
   card of each archive/search gets an accent top rail —
   lifts the top-of-list entry without invented labels.
   ========================================================= */
body.archive article.loop-entry,
body.search article.loop-entry,
body.single .entry-related article.loop-entry {
	transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}
body.archive article.loop-entry:hover,
body.archive article.loop-entry:focus-within,
body.search article.loop-entry:hover,
body.search article.loop-entry:focus-within,
body.single .entry-related article.loop-entry:hover,
body.single .entry-related article.loop-entry:focus-within {
	transform: translateY(-3px);
	box-shadow: 0 10px 30px rgba(21, 23, 29, 0.1);
	border-color: rgba(15, 111, 126, 0.35);
}
body.archive #archive-container > li.entry-list-item:first-of-type article.loop-entry,
body.search #archive-container > li.entry-list-item:first-of-type article.loop-entry {
	border-top: 3px solid #0f6f7e;
}
@media (prefers-reduced-motion: reduce) {
	body.archive article.loop-entry,
	body.search article.loop-entry,
	body.single .entry-related article.loop-entry {
		transition: none;
	}
}

/* =========================================================
   Card meta pill row (pass 57). The By/Posted-on meta inside
   archive/search cards becomes a quiet chip row — muted
   pills matching the site's chip vocabulary instead of bare
   dot-separated text.
   ========================================================= */
body.archive article.loop-entry .entry-meta,
body.search article.loop-entry .entry-meta,
body.single .entry-related article.loop-entry .entry-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.75rem;
}
body.archive article.loop-entry .entry-meta .posted-by,
body.search article.loop-entry .entry-meta .posted-by,
body.archive article.loop-entry .entry-meta .posted-on,
body.search article.loop-entry .entry-meta .posted-on,
body.single .entry-related article.loop-entry .entry-meta .posted-by,
body.single .entry-related article.loop-entry .entry-meta .posted-on {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.2rem 0.65rem;
	border: 1px solid rgba(15, 111, 126, 0.16);
	border-radius: 999px;
	background: rgba(15, 111, 126, 0.05);
	color: rgba(21, 23, 29, 0.72);
	font-weight: 500;
}
body.archive article.loop-entry .entry-meta a,
body.search article.loop-entry .entry-meta a,
body.single .entry-related article.loop-entry .entry-meta a {
	color: inherit;
	text-decoration: none;
}
body.archive article.loop-entry .entry-meta a:hover,
body.search article.loop-entry .entry-meta a:hover,
body.single .entry-related article.loop-entry .entry-meta a:hover {
	color: #0f6f7e;
}
body.archive article.loop-entry .entry-meta .meta-label,
body.search article.loop-entry .entry-meta .meta-label,
body.single .entry-related article.loop-entry .entry-meta .meta-label {
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: rgba(21, 23, 29, 0.45);
}

/* =========================================================
   Static-page header band (pass 58). Pages (Privacy Policy
   etc.) still render the stock bare h1 while posts get the
   designed band — mirror the single-post header treatment
   on body.page. CSS-only.
   ========================================================= */
body.page:not(.home) .entry-header {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(217, 119, 6, 0.06), transparent 60%),
		var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-left: 4px solid var(--ng-power);
	border-radius: 10px;
	padding: clamp(1.5rem, 4vw, 2.5rem) clamp(1.25rem, 4vw, 2.5rem);
	margin-bottom: 1.5rem;
}
body.page:not(.home) .entry-header .entry-title {
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: var(--ng-ink);
	margin-bottom: 0;
}
@media (max-width: 640px) {
	body.page:not(.home) .entry-header { padding: 1.25rem 1rem; }
}

/* =========================================================
   NG VISUAL RESCUE (deep pass) — same defect family closed
   on nftuniverse/nftvideogames: the archive posts list is a
   real CSS grid so every loop_start emitter became a grid
   column (topic chips stretched into filled circles/pills);
   the archive band was two separated boxes; the curated
   description printed twice; the wide-screen rail leaked its
   active label; and the 404 ramp's latest links rendered
   ink-dark on the dark panel (invisible).
   ========================================================= */

/* 1 — any emitter inside the posts grid is a full-width row. */
ul.content-wrap.kadence-posts-list > *:not(li) {
	grid-column: 1 / -1;
}

/* 2 — one unified archive band: title + description inside a
   single surface, keeping the orange left rail identity. */
body.archive .entry-header.post-archive-title {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(217, 119, 6, 0.08), transparent 60%),
		var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-left: 4px solid var(--ng-power);
	border-radius: 10px;
	padding: clamp(1.5rem, 4vw, 2.25rem) clamp(1.25rem, 4vw, 2.5rem);
	margin-bottom: 1.5rem;
}
body.archive .entry-header.post-archive-title .archive-title,
body.archive .entry-header.post-archive-title .archive-description {
	background: none;
	border: none;
	border-radius: 0;
	padding: 0;
	margin-bottom: 0;
}
body.archive .entry-header.post-archive-title .archive-title {
	margin-bottom: 0.4rem;
}
@media (max-width: 640px) {
	body.archive .entry-header.post-archive-title {
		padding: 1.25rem 1rem;
	}
}

/* 3 — the loop emitter prints the same description the hero
   band already carries; one source of truth stays in the band. */
.ng-arch-desc {
	display: none;
}

/* 4 — rail: an active section keeps the accent dot but never
   its label text (hover still reveals labels on any dot). */
@media (min-width: 1360px) {
	.ng-rail a.ng-rail-active {
		font-size: 0;
		font-weight: 400;
	}
}

/* 5 — 404 ramp: latest links rendered --ng-ink (#15171d) on
   the dark navy panel (invisible). Restyle as dark-panel
   chips matching the topic chips' translucency. */
.ng-none-latest a {
	color: #e6eef0;
	background: rgba(255, 255, 255, 0.08);
	border: 1px solid rgba(255, 255, 255, 0.18);
	border-radius: 999px;
	padding: 0.3rem 0.8rem;
	font-weight: 600;
}
.ng-none-latest a:hover {
	background: rgba(255, 255, 255, 0.16);
	border-color: rgba(255, 255, 255, 0.3);
}

/* =========================================================
   Lead feature card (pass 61). The first card on page 1 of
   an archive/search becomes a real feature slot — spans the
   row, accent left rail, larger title, breathing excerpt —
   instead of another uniform cell. Page 2+ keeps the even
   grid (body.paged guard). CSS-only; markup/URLs unchanged.
   ========================================================= */
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type {
	grid-column: 1 / -1;
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry {
	background:
		radial-gradient(700px 240px at 100% 0%, rgba(217, 119, 6, 0.07), transparent 60%),
		#ffffff;
	border-left: 4px solid var(--ng-power);
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-title,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-title {
	font-size: clamp(1.55rem, 3vw, 2.1rem);
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-summary,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-summary {
	max-width: 72ch;
	font-size: 1.02rem;
	line-height: 1.65;
}
@media (max-width: 640px) {
	body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry,
	body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry {
		border-left-width: 3px;
	}
}

/* ---------------------------------------------------------------
   Dense archive view (pass 67). The sort row's View group toggles
   ?density=compact -> body.ng-dense: a 4-up tight grid with the
   excerpt/read-more/byline folded away for fast registry scans.
   --------------------------------------------------------------- */
body.ng-dense.archive ul.content-wrap.kadence-posts-list,
body.ng-dense.search ul.content-wrap.kadence-posts-list,
body.ng-dense.blog ul.content-wrap.kadence-posts-list {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.9rem;
}
body.ng-dense article.loop-entry {
	padding: 1rem;
	margin-bottom: 0;
}
body.ng-dense article.loop-entry .entry-title {
	font-size: 1rem;
	line-height: 1.35;
}
body.ng-dense article.loop-entry .entry-summary,
body.ng-dense article.loop-entry .post-more-link,
body.ng-dense article.loop-entry .entry-meta .posted-by {
	display: none;
}
body.ng-dense article.loop-entry .entry-meta {
	font-size: 0.68rem;
	gap: 0.3rem;
}
body.ng-dense.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type {
	grid-column: span 2;
}
@media (max-width: 1080px) {
	body.ng-dense.archive ul.content-wrap.kadence-posts-list,
	body.ng-dense.search ul.content-wrap.kadence-posts-list,
	body.ng-dense.blog ul.content-wrap.kadence-posts-list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (max-width: 700px) {
	body.ng-dense.archive ul.content-wrap.kadence-posts-list,
	body.ng-dense.search ul.content-wrap.kadence-posts-list,
	body.ng-dense.blog ul.content-wrap.kadence-posts-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 460px) {
	body.ng-dense.archive ul.content-wrap.kadence-posts-list,
	body.ng-dense.search ul.content-wrap.kadence-posts-list,
	body.ng-dense.blog ul.content-wrap.kadence-posts-list {
		grid-template-columns: 1fr;
	}
}

/* ---------------------------------------------------------------
   Live search dropdown (pass 73). ng-search-live.js renders
   debounced /wp-json hits under every search input — a designed
   card with hit rows + an "All results" footer link.
   --------------------------------------------------------------- */
form.ng-live-wrap {
	position: relative;
}
.ng-search-drop {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	right: 0;
	z-index: 60;
	display: none;
	background: var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-radius: 12px;
	box-shadow: 0 12px 32px rgba(21, 23, 29, 0.14), 0 2px 6px rgba(21, 23, 29, 0.08);
	overflow: hidden;
}
.ng-search-drop.is-open {
	display: block;
}
.ng-search-drop-head {
	padding: 0.45rem 0.8rem;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	color: var(--ng-ink-mute);
	border-bottom: 1px solid var(--ng-line);
}
.ng-hit-title {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
a.ng-search-hit {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.6rem;
	padding: 0.55rem 0.8rem;
	font-size: 0.85rem;
	color: var(--ng-ink);
	text-decoration: none;
}
a.ng-search-hit:hover,
a.ng-search-hit:focus {
	background: var(--ng-void);
	outline: none;
}
a.ng-search-hit + a.ng-search-hit {
	border-top: 1px solid var(--ng-line);
}
.ng-hit-kind {
	flex: 0 0 auto;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--ng-neon);
	background: rgba(15, 111, 126, 0.1);
	border-radius: 999px;
	padding: 0.15rem 0.5rem;
}
a.ng-search-all {
	display: block;
	padding: 0.55rem 0.8rem;
	font-size: 0.82rem;
	font-weight: 600;
	color: var(--ng-neon);
	text-decoration: none;
	border-top: 1px solid var(--ng-line);
	background: var(--ng-void);
}
a.ng-search-all:hover,
a.ng-search-all:focus {
	color: var(--ng-neon-strong);
	outline: none;
}

/* ---------------------------------------------------------------
   Progressive archive loading (pass 79). ng-loadmore.js fetches the
   next archive page and appends its real card markup.
   --------------------------------------------------------------- */
.ng-loadmore-wrap {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	grid-column: 1 / -1;
	margin: 1.4rem 0 0.6rem;
}
button.ng-loadmore-btn {
	font: inherit;
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--ng-neon);
	background: var(--ng-surface);
	border: 1.5px solid var(--ng-neon);
	border-radius: 999px;
	padding: 0.6rem 1.6rem;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}
button.ng-loadmore-btn:hover:not(:disabled),
button.ng-loadmore-btn:focus:not(:disabled) {
	background: var(--ng-neon);
	color: #fff;
	box-shadow: 0 4px 14px rgba(15, 111, 126, 0.25);
	outline: none;
}
button.ng-loadmore-btn:disabled {
	opacity: 0.55;
	cursor: default;
}
.ng-loadmore-status {
	font-size: 0.8rem;
	color: var(--ng-ink-mute);
}
li.ng-loadmore-sep {
	list-style: none;
	grid-column: 1 / -1;
	display: flex;
	align-items: center;
	gap: 0.9rem;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ng-ink-mute);
	margin: 0.5rem 0 0.15rem;
	padding: 0;
}
li.ng-loadmore-sep::before,
li.ng-loadmore-sep::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: var(--ng-line);
}
li.ng-loadmore-sep::before {
	max-width: 2.5rem;
}

/* ---------------------------------------------------------------
   Command palette (pass 85). Ctrl/Cmd+K opens a site-wide search
   overlay powered by /wp-json — discoverable via a Ctrl+K chip in
   the nav search form.
   --------------------------------------------------------------- */
body.ng-pal-open {
	overflow: hidden;
}
.ng-pal-backdrop {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: none;
	background: rgba(21, 23, 29, 0.45);
	backdrop-filter: blur(2px);
	padding: 12vh 1rem 1rem;
}
.ng-pal-backdrop.is-open {
	display: block;
}
.ng-pal {
	max-width: 34rem;
	margin: 0 auto;
	background: var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-radius: 16px;
	box-shadow: 0 24px 64px rgba(21, 23, 29, 0.3), 0 4px 12px rgba(21, 23, 29, 0.14);
	overflow: hidden;
}
.ng-pal-input {
	width: 100%;
	font: inherit;
	font-size: 1rem;
	padding: 0.9rem 1.1rem;
	border: none;
	border-bottom: 1px solid var(--ng-line);
	outline: none;
	background: var(--ng-surface);
	color: var(--ng-ink);
}
.ng-pal-list {
	max-height: 22rem;
	overflow-y: auto;
}
.ng-pal-hint {
	padding: 0.8rem 1.1rem;
	font-size: 0.82rem;
	color: var(--ng-ink-mute);
}
a.ng-pal-hit {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.6rem;
	padding: 0.6rem 1.1rem;
	font-size: 0.9rem;
	color: var(--ng-ink);
	text-decoration: none;
}
a.ng-pal-hit:hover,
a.ng-pal-hit:focus {
	background: var(--ng-void);
	outline: none;
}
a.ng-pal-hit + a.ng-pal-hit {
	border-top: 1px solid var(--ng-line);
}
.ng-pal-hit-title {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.ng-pal-hit-kind {
	flex: 0 0 auto;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--ng-neon-strong);
	background: var(--ng-void);
	border: 1px solid var(--ng-line);
	border-radius: 999px;
	padding: 0.15rem 0.5rem;
}
a.ng-pal-all {
	display: block;
	padding: 0.6rem 1.1rem;
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--ng-neon);
	text-decoration: none;
	border-top: 1px solid var(--ng-line);
	background: var(--ng-void);
}
a.ng-pal-all:hover,
a.ng-pal-all:focus {
	color: var(--ng-neon-strong);
	outline: none;
}
.ng-pal-foot {
	display: flex;
	gap: 1rem;
	padding: 0.5rem 1.1rem;
	font-size: 0.72rem;
	color: var(--ng-ink-mute);
	border-top: 1px solid var(--ng-line);
	background: var(--ng-void);
}
.ng-pal-foot kbd,
.ng-pal-chip kbd {
	font: inherit;
	font-size: 0.68rem;
	font-weight: 700;
	background: var(--ng-surface);
	border: 1px solid var(--ng-line);
	border-bottom-width: 2px;
	border-radius: 4px;
	padding: 0.05rem 0.35rem;
}
button.ng-pal-chip {
	flex: 0 0 auto;
	display: inline-flex;
	gap: 2px;
	font: inherit;
	background: none;
	border: none;
	padding: 0.15rem;
	cursor: pointer;
	opacity: 0.75;
}
button.ng-pal-chip:hover,
button.ng-pal-chip:focus {
	opacity: 1;
	outline: none;
}
@media (max-width: 700px) {
	.ng-pal-foot {
		display: none;
	}
}

/* ---------------------------------------------------------------
   Resume reading (pass 91). ng-resume.js remembers scroll depth per
   article; this chip offers one-click return on revisit.
   --------------------------------------------------------------- */
button.ng-resume-chip {
	position: fixed;
	left: 1.1rem;
	bottom: 1.1rem;
	z-index: 110;
	font: inherit;
	font-size: 0.8rem;
	font-weight: 600;
	color: var(--ng-neon-strong);
	background: var(--ng-surface);
	border: 1.5px solid var(--ng-neon);
	border-radius: 999px;
	padding: 0.5rem 1.1rem;
	cursor: pointer;
	box-shadow: 0 8px 24px rgba(21, 23, 29, 0.18);
	opacity: 0;
	transform: translateY(8px);
	transition: opacity 0.3s ease, transform 0.3s ease, background 0.15s ease, color 0.15s ease;
}
button.ng-resume-chip.is-visible {
	opacity: 1;
	transform: translateY(0);
}
button.ng-resume-chip:hover,
button.ng-resume-chip:focus {
	background: var(--ng-neon);
	color: #fff;
	outline: none;
}

/* Search topic filter (pass 97). Category chips narrowing a search
   via the native 'cat' query var, under the refine bar. */
.ng-stopic {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.45rem;
	margin: -0.4rem 0 1.1rem;
}
.ng-stopic-label {
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ng-ink-mute, #5c6470);
}
.ng-stopic-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.24rem 0.7rem;
	border: 1px solid rgba(15, 111, 126, 0.3);
	border-radius: 999px;
	background: rgba(15, 111, 126, 0.06);
	color: var(--ng-neon, #0f6f7e);
	font-size: 0.75rem;
	font-weight: 600;
	text-decoration: none;
	transition: background 0.15s ease, color 0.15s ease;
}
.ng-stopic-chip:hover {
	background: var(--ng-neon, #0f6f7e);
	color: #ffffff;
}
.ng-stopic-chip.ng-stopic-current {
	background: var(--ng-neon, #0f6f7e);
	color: #ffffff;
}
.ng-stopic-n {
	opacity: 0.65;
	font-size: 0.9em;
}

/* Link previews (pass 103). Floating title + excerpt card shown on
   hover/focus of internal article links; positioned by ng-previews.js. */
.ng-peek {
	position: absolute;
	z-index: 140;
	display: none;
	flex-direction: column;
	gap: 0.3rem;
	padding: 0.75rem 0.9rem;
	background: #ffffff;
	border: 1px solid #e2e8ec;
	border-left: 3px solid var(--ng-neon, #0f6f7e);
	border-radius: 10px;
	box-shadow: 0 12px 32px rgba(15, 32, 40, 0.18);
	pointer-events: none;
}
.ng-peek.is-visible {
	display: flex;
}
.ng-peek-kind {
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ng-neon, #0f6f7e);
}
.ng-peek-title {
	font-size: 0.82rem;
	font-weight: 600;
	line-height: 1.35;
	color: var(--ng-ink, #182028);
}
.ng-peek-ex {
	font-size: 0.75rem;
	line-height: 1.5;
	color: var(--ng-ink-mute, #5c6470);
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* Contextual reading bar (pass 109). Slim bar pinned under the sticky
   header on articles once the reader passes the title. */
.ng-cbar {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 120;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.45rem 1.1rem;
	background: rgba(255, 255, 255, 0.97);
	border-bottom: 1px solid #e2e8ec;
	box-shadow: 0 4px 18px rgba(15, 32, 40, 0.08);
	transform: translateY(-110%);
	transition: transform 0.28s ease;
	pointer-events: none;
}
.ng-cbar.is-on {
	transform: translateY(0);
}
.ng-cbar-title {
	font-size: 0.8rem;
	font-weight: 600;
	color: var(--ng-ink, #182028);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 78vw;
}
.ng-cbar-title::before {
	content: "";
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 2px;
	background: var(--ng-neon, #0f6f7e);
	margin-right: 0.5rem;
	vertical-align: 1px;
}
.ng-cbar-pct {
	flex-shrink: 0;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: var(--ng-neon, #0f6f7e);
	background: rgba(15, 111, 126, 0.1);
	border: 1px solid rgba(15, 111, 126, 0.3);
	border-radius: 999px;
	padding: 0.12rem 0.55rem;
}
@media (max-width: 640px) {
	.ng-cbar-title {
		max-width: 62vw;
		font-size: 0.72rem;
	}
}

/* Save-for-later (pass 115). Persistent reading list: ☆/★ chip in the
   article meta row + floating shelf of saved reads. */
.ng-save {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.2rem 0.65rem;
	font: inherit;
	font-size: 0.72rem;
	font-weight: 600;
	color: var(--ng-neon, #0f6f7e);
	background: rgba(15, 111, 126, 0.08);
	border: 1px solid rgba(15, 111, 126, 0.32);
	border-radius: 999px;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}
.ng-save:hover {
	background: rgba(15, 111, 126, 0.16);
}
.ng-save.is-saved {
	color: #ffffff;
	background: var(--ng-neon, #0f6f7e);
	border-color: var(--ng-neon, #0f6f7e);
}
.ng-shelf {
	position: fixed;
	left: 1rem;
	bottom: 1rem;
	z-index: 130;
	display: none;
}
.ng-shelf.has-items {
	display: block;
}
.ng-shelf-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.5rem 0.8rem;
	font: inherit;
	font-size: 0.85rem;
	font-weight: 700;
	color: #ffffff;
	background: var(--ng-neon, #0f6f7e);
	border: 0;
	border-radius: 999px;
	box-shadow: 0 8px 22px rgba(15, 111, 126, 0.4);
	cursor: pointer;
}
.ng-shelf-panel {
	position: absolute;
	left: 0;
	bottom: calc(100% + 0.6rem);
	width: 280px;
	max-height: 320px;
	overflow-y: auto;
	display: none;
	flex-direction: column;
	background: #ffffff;
	border: 1px solid #e2e8ec;
	border-radius: 12px;
	box-shadow: 0 16px 40px rgba(15, 32, 40, 0.2);
}
.ng-shelf-panel.is-open {
	display: flex;
}
.ng-shelf-head {
	padding: 0.6rem 0.9rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ng-ink-mute, #5c6470);
	border-bottom: 1px solid #e2e8ec;
}
.ng-shelf-empty {
	padding: 0.8rem 0.9rem;
	font-size: 0.78rem;
	color: var(--ng-ink-mute, #5c6470);
}
.ng-shelf-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	padding: 0.55rem 0.9rem;
	font-size: 0.8rem;
	line-height: 1.35;
	color: var(--ng-ink, #182028);
	text-decoration: none;
	border-bottom: 1px solid #e2e8ec;
}
.ng-shelf-item:last-child {
	border-bottom: 0;
}
.ng-shelf-item:hover {
	background: #f4f8f9;
	color: var(--ng-neon, #0f6f7e);
}
.ng-shelf-item-x {
	flex-shrink: 0;
	width: 18px;
	height: 18px;
	line-height: 16px;
	text-align: center;
	border-radius: 50%;
	font-size: 0.85rem;
	color: var(--ng-ink-mute, #5c6470);
}
.ng-shelf-item-x:hover {
	background: rgba(15, 111, 126, 0.15);
	color: var(--ng-neon, #0f6f7e);
}

/* Since-your-last-visit (pass 121). Slim banner on listings naming the
   articles published since the reader's prior visit. */
.ng-since {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.4rem 0.75rem;
	padding: 0.6rem 1rem;
	margin: 0 0 1.25rem;
	background: rgba(15, 111, 126, 0.07);
	border: 1px solid rgba(15, 111, 126, 0.25);
	border-radius: 12px;
	font-size: 0.8rem;
}
.ng-since-count {
	font-weight: 700;
	color: var(--ng-neon, #0f6f7e);
	white-space: nowrap;
}
.ng-since-list {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 0.35rem 0.85rem;
	min-width: 0;
}
.ng-since-item {
	color: var(--ng-ink, #182028);
	text-decoration: none;
	border-bottom: 1px dotted rgba(15, 111, 126, 0.45);
}
.ng-since-item:hover {
	color: var(--ng-neon, #0f6f7e);
	border-bottom-style: solid;
}
.ng-since-more {
	color: var(--ng-ink-mute, #5c6470);
	font-weight: 600;
}

/* Keyboard navigation (pass 127). j/k selection ring + ? shortcuts sheet. */
.ng-keysel {
	outline: 2px solid var(--ng-neon) !important;
	outline-offset: 3px;
	border-radius: 10px;
	scroll-margin-top: 40vh;
}
.entry-content h2.ng-keysel,
.entry-content h3.ng-keysel {
	outline-width: 0;
	border-left: 4px solid var(--ng-neon);
	padding-left: 0.5rem;
}
.ng-keysheet {
	position: fixed;
	inset: 0;
	z-index: 140;
	display: none;
	align-items: center;
	justify-content: center;
	background: rgba(24, 32, 40, 0.45);
	backdrop-filter: blur(2px);
}
.ng-keysheet.is-open {
	display: flex;
}
.ng-keysheet-card {
	background: #ffffff;
	border: 1px solid #e2e8ec;
	border-radius: 14px;
	box-shadow: 0 24px 60px rgba(24, 32, 40, 0.3);
	padding: 1.1rem 1.4rem;
	min-width: 280px;
}
.ng-keysheet-head {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ng-ink-mute);
	margin-bottom: 0.7rem;
}
.ng-keysheet-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.45rem;
}
.ng-keysheet-list li {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	font-size: 0.82rem;
	color: var(--ng-ink);
}
.ng-keysheet-list kbd {
	font-family: inherit;
	font-size: 0.72rem;
	font-weight: 700;
	padding: 0.12rem 0.45rem;
	background: #f4f7f9;
	border: 1px solid #e2e8ec;
	border-bottom-width: 2px;
	border-radius: 6px;
	color: var(--ng-neon);
}

/* Related posts band (leg 13) — same-topic siblings at article end. */
.ng-related {
	grid-column: 1 / -1;
	margin-top: 2.2rem;
	padding: 1.3rem 1.4rem;
	background: #f4f7f9;
	border: 1px solid #e2e8ec;
	border-radius: 14px;
}
.ng-related-title {
	margin: 0 0 0.9rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ng-neon);
}
.ng-related-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 0.8rem;
}
.ng-related-card {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	padding: 0.85rem 1rem;
	background: #ffffff;
	border: 1px solid #e2e8ec;
	border-radius: 10px;
	text-decoration: none;
	transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
}
.ng-related-card:hover,
.ng-related-card:focus-visible {
	transform: translateY(-2px);
	border-color: var(--ng-neon);
	box-shadow: 0 6px 18px rgba(15, 111, 126, 0.16);
}
.ng-related-date {
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--ng-ink-mute);
}
.ng-related-name {
	font-size: 0.88rem;
	font-weight: 650;
	line-height: 1.35;
	color: var(--ng-ink);
}

/* Select-to-copy quote chip (leg 14) — floats above a text selection. */
.ng-quote {
	position: absolute;
	z-index: 150;
	display: none;
	padding: 0.42rem 0.85rem;
	background: var(--ng-neon);
	border: none;
	border-radius: 999px;
	box-shadow: 0 8px 22px rgba(15, 111, 126, 0.38);
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: #ffffff;
	cursor: pointer;
	transition: opacity 0.15s ease, transform 0.15s ease;
}
.ng-quote.is-open {
	display: block;
	animation: ngquotein 0.16s ease;
}
@keyframes ngquotein {
	from { opacity: 0; transform: translateY(4px); }
	to { opacity: 1; transform: translateY(0); }
}

/* Recently-viewed rail (leg 16) — prior articles at article end. */
.ng-recent {
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 2rem;
    padding-top: 1.25rem;
    border-top: 1px solid #e2e8ec;
}
.ng-recent-label {
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ng-ink-mute);
    white-space: nowrap;
}
.ng-recent-row {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.ng-recent-chip {
    display: inline-block;
    padding: 0.3rem 0.75rem;
    border: 1px solid #e2e8ec;
    border-radius: 999px;
    background: #f4f7f9;
    color: var(--ng-ink);
    font-size: 0.8rem;
    font-weight: 600;
    text-decoration: none;
    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.ng-recent-chip:hover {
    border-color: var(--ng-neon);
    color: var(--ng-neon);
    background: #ffffff;
}

/* Listen-to-article chip (leg 17) — meta-row Web Speech control. */
.ng-listen {
    display: inline-block;
    padding: 0.22rem 0.7rem;
    border: 1px solid var(--ng-neon);
    border-radius: 999px;
    background: transparent;
    color: var(--ng-neon);
    font: inherit;
    font-size: 0.75rem;
    font-weight: 700;
    cursor: pointer;
    vertical-align: middle;
    transition: background 0.15s ease, color 0.15s ease;
}
.ng-listen:hover {
    background: var(--ng-neon);
    color: #ffffff;
}
.ng-listen.is-on {
    background: var(--ng-neon);
    color: #ffffff;
}

/* Focus mode (leg 18) — meta-row chip hides chrome for distraction-free reading. */
.ng-focus {
    display: inline-block;
    padding: 0.22rem 0.7rem;
    border: 1px solid var(--ng-neon);
    border-radius: 999px;
    background: transparent;
    color: var(--ng-neon);
    font: inherit;
    font-size: 0.75rem;
    font-weight: 700;
    cursor: pointer;
    vertical-align: middle;
    transition: background 0.15s ease, color 0.15s ease;
}
.ng-focus:hover {
    background: var(--ng-neon);
    color: #ffffff;
}
.ng-focus.is-on {
    background: var(--ng-neon);
    color: #ffffff;
}
.ng-focus-mode #masthead,
.ng-focus-mode #colophon,
.ng-focus-mode .ng-crumbs,
.ng-focus-mode .ng-toc,
.ng-focus-mode .ng-rail,
.ng-focus-mode .ng-related,
.ng-focus-mode .ng-authorbox,
.ng-focus-mode .ng-filed,
.ng-focus-mode .ng-share,
.ng-focus-mode .ng-recent,
.ng-focus-mode .ng-quote,
.ng-focus-mode .post-navigation {
    display: none !important;
}

/* Reading-width control (leg 19) — cycles article column Default / Cozy / Wide. */
.ng-width {
    display: inline-block;
    padding: 0.22rem 0.7rem;
    border: 1px solid var(--ng-neon);
    border-radius: 999px;
    background: transparent;
    color: var(--ng-neon);
    font: inherit;
    font-size: 0.75rem;
    font-weight: 700;
    cursor: pointer;
    vertical-align: middle;
    transition: background 0.15s ease, color 0.15s ease;
}
.ng-width:hover {
    background: var(--ng-neon);
    color: #ffffff;
}
.ng-width.is-on {
    background: var(--ng-neon);
    color: #ffffff;
}
body.ng-w-cozy article.single-entry {
    max-width: 46rem;
    margin-left: auto;
    margin-right: auto;
}
body.ng-w-wide article.single-entry {
    max-width: none;
}

/* Saved-marker (leg 20) — '★' on cards whose article is in the shelf. */
.ng-saved-mark {
	color: var(--ng-neon);
	font-size: 0.8em;
	vertical-align: baseline;
}

/* Comment-count chip (leg 21) — real count pill on listing cards. */
.ng-comments {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.08rem 0.45rem;
  border: 1px solid rgba(15, 111, 126, 0.3);
  border-radius: 999px;
  background: rgba(15, 111, 126, 0.05);
  color: var(--ng-neon, #0f6f7e);
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  vertical-align: middle;
  transform: translateY(-1px);
  white-space: nowrap;
}

/* Table-scroll (leg 22) — wide tables get a scroll region + edge shadows. */
.ng-tscroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	max-width: 100%;
	background-image:
		linear-gradient(to right, var(--ng-bg, #ffffff), var(--ng-bg, #ffffff)),
		linear-gradient(to left, var(--ng-bg, #ffffff), var(--ng-bg, #ffffff)),
		radial-gradient(farthest-side at 0 50%, rgba(0, 0, 0, 0.16), transparent),
		radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.16), transparent);
	background-position: 0 0, 100% 0, 0 0, 100% 0;
	background-repeat: no-repeat;
	background-size: 14px 100%, 14px 100%, 8px 100%, 8px 100%;
	background-attachment: local, local, scroll, scroll;
}
.ng-tscroll table {
	min-width: 100%;
}

/* Image lightbox (leg 23) — click-to-zoom overlay on article images. */
.ng-zoomable {
	cursor: zoom-in;
}
.ng-zoom {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: none;
	align-items: center;
	justify-content: center;
	flex-direction: column;
	padding: 2rem;
	background: rgba(10, 15, 30, 0.9);
	backdrop-filter: blur(4px);
}
.ng-zoom.is-open {
	display: flex;
}
.ng-zoom img {
	max-width: 92vw;
	max-height: 82vh;
	border-radius: 8px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}
.ng-zoom-cap {
	margin: 0.8rem 0 0;
	color: #cbd5e1;
	font-size: 0.8rem;
	text-align: center;
}
body.ng-zoom-lock {
	overflow: hidden;
}

/* Collapsible ToC (leg 24) — 'In this article' head flips the jump list. */
.nv-toc-flippable .nv-toc-head {
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: space-between;
	user-select: none;
}
.nv-toc-flippable .nv-toc-head::after {
	content: '';
	display: inline-block;
	width: 0.45rem;
	height: 0.45rem;
	border-right: 2px solid var(--ng-neon, #0f6f7e);
	border-bottom: 2px solid var(--ng-neon, #0f6f7e);
	transform: rotate(45deg) translateY(-2px);
	transition: transform 0.2s ease;
}
.nv-toc-flippable.is-collapsed .nv-toc-head::after {
	transform: rotate(-45deg) translateY(2px);
}
.nv-toc-flippable.is-collapsed .nv-toc-list {
	display: none;
}

/* Article-meta sticky bar (leg 25) — title + copy-link pinned under the header on scroll. */
.nv-articlebar {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 9998;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.45rem 1rem;
	background: rgba(255, 255, 255, 0.92);
	backdrop-filter: blur(6px);
	border-bottom: 1px solid rgba(15, 23, 42, 0.08);
	box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06);
	transform: translateY(-110%);
	transition: transform 0.25s ease;
}
.nv-articlebar.is-open {
	transform: translateY(0);
}
.nv-articlebar-title {
	font-weight: 700;
	font-size: 0.82rem;
	color: #0f172a;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.nv-articlebar-copy {
	flex: none;
	padding: 0.28rem 0.8rem;
	border: 1px solid rgba(15, 111, 126, 0.35);
	border-radius: 999px;
	background: rgba(15, 111, 126, 0.06);
	color: var(--ng-neon, #0f6f7e);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background 0.2s ease;
}
.nv-articlebar-copy:hover {
	background: rgba(15, 111, 126, 0.14);
}

/* Reveal-on-scroll (leg 26) — cards and article blocks fade up as they enter. */
.ng-reveal {
	opacity: 0;
	transform: translateY(14px);
	transition: opacity 0.5s ease, transform 0.5s ease;
}
.ng-reveal.is-in {
	opacity: 1;
	transform: none;
}
@media (prefers-reduced-motion: reduce) {
	.ng-reveal {
		transition: none;
	}
}

.ng-articlebar-prog{color:rgba(15,23,42,.55);font-size:.66rem;font-weight:700;letter-spacing:.04em;white-space:nowrap}
@media (max-width: 640px){.ng-articlebar-prog{display:none}}


/* ng dark — floating mode toggle + full dark palette overrides */
.ng-dark-wrap{position:fixed;top:.55rem;right:.75rem;z-index:10001}
.ng-dark{width:30px;height:30px;border-radius:999px;border:1px solid rgba(15,23,42,.15);background:#fff;color:#0f172a;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px rgba(15,23,42,.12);padding:0}
.ng-dark:hover{border-color:rgba(8,145,178,.5);color:#0f6f7e}
.ng-dark-on .ng-dark{background:#0f172a;color:#cbd5e1;border-color:rgba(226,232,240,.3);box-shadow:0 2px 8px rgba(0,0,0,.4)}
.ng-dark-on .ng-dark:hover{color:#5eead4;border-color:rgba(94,234,212,.5)}

html.ng-dark-on{color-scheme:dark}
.ng-dark-on,.ng-dark-on body,.ng-dark-on .site,.ng-dark-on .content-container,.ng-dark-on .content-wrap{background:#0b1220;color:#cbd5e1}
.ng-dark-on .entry-content,.ng-dark-on .entry-content p,.ng-dark-on .entry-title,.ng-dark-on .entry-content h1,.ng-dark-on .entry-content h2,.ng-dark-on .entry-content h3,.ng-dark-on .entry-content h4{color:#e2e8f0}
.ng-dark-on .entry-content em,.ng-dark-on .entry-content strong{color:inherit}
.ng-dark-on a{color:#5eead4}
.ng-dark-on a:hover{color:#99f6e4}
.ng-dark-on .site-header,.ng-dark-on #masthead,.ng-dark-on .header-menu-nav,.ng-dark-on .main-navigation,.ng-dark-on .nav-menu,.ng-dark-on .menu{background:#0f172a;border-color:rgba(148,163,184,.2);box-shadow:0 1px 0 rgba(148,163,184,.12)}
.ng-dark-on .menu a,.ng-dark-on .nav-menu a,.ng-dark-on .menu-item a{color:#cbd5e1}
.ng-dark-on .menu a:hover,.ng-dark-on .nav-menu a:hover,.ng-dark-on .current-menu-item>a{color:#5eead4}
.ng-dark-on .menu .sub-menu,.ng-dark-on .sub-menu{background:#111c30;border-color:rgba(148,163,184,.2);box-shadow:0 8px 24px rgba(0,0,0,.5)}
.ng-dark-on article.post,.ng-dark-on article.entry,.ng-dark-on .ng-card,.ng-dark-on .ng-registry-item,.ng-dark-on .nftu-tool,.ng-dark-on .ng-record,.ng-dark-on .lead-card,.ng-dark-on .post,.ng-dark-on .type-post,.ng-dark-on .ng-keysheet-card,.ng-dark-on .ng-authorbox,.ng-dark-on .ng-toc,.ng-dark-on .ng-sitemap-grid,.ng-dark-on .ng-404,.ng-dark-on .error404 .entry,.ng-dark-on .ng-share,.ng-dark-on .ng-sort,.ng-dark-on .ng-refine,.ng-dark-on .ng-authorband,.ng-dark-on .ng-palette,.ng-dark-on .ng-palette-list,.ng-dark-on .comment-body,.ng-dark-on .comment-respond,.ng-dark-on .comments-area,.ng-dark-on .ng-stat,.ng-dark-on .ng-band,.ng-dark-on .ng-hero,.ng-dark-on .ng-meta-pill,.ng-dark-on .ng-filed,.ng-dark-on .ng-postnav a,.ng-dark-on .ng-zeroguide{background:#111c30;border-color:rgba(148,163,184,.2);color:#cbd5e1}
.ng-dark-on article.post:hover,.ng-dark-on article.entry:hover,.ng-dark-on .ng-card:hover,.ng-dark-on .ng-registry-item:hover{box-shadow:0 8px 28px rgba(0,0,0,.45)}
.ng-dark-on .entry-title a,.ng-dark-on .entry-title a:visited,.ng-dark-on h1,.ng-dark-on h2,.ng-dark-on h3,.ng-dark-on h4,.ng-dark-on .ng-card-title,.ng-dark-on .site-title,.ng-dark-on .site-title a{color:#f1f5f9}
.ng-dark-on .entry-title a:hover{color:#5eead4}
.ng-dark-on .entry-meta,.ng-dark-on .posted-on,.ng-dark-on .byline,.ng-dark-on .meta,.ng-dark-on .ng-meta,.ng-dark-on .ng-excerpt,.ng-dark-on .entry-summary,.ng-dark-on .description,.ng-dark-on .archive-description,.ng-dark-on .ng-toc-list a,.ng-dark-on .ng-sitemap a,.ng-dark-on .ng-latest a,.ng-dark-on .ng-filed a{color:#94a3b8}
.ng-dark-on .ng-filed a:hover,.ng-dark-on .ng-toc-list a:hover,.ng-dark-on .ng-toc-active{color:#5eead4}
.ng-dark-on .ng-articlebar{background:rgba(15,23,42,.94);border-bottom-color:rgba(148,163,184,.2);box-shadow:0 4px 16px rgba(0,0,0,.4)}
.ng-dark-on .ng-articlebar-title{color:#e2e8f0}
.ng-dark-on .ng-articlebar-copy,.ng-dark-on .ng-articlebar-prog{color:#94a3b8}
.ng-dark-on .ng-articlebar-copy{background:rgba(94,234,212,.1);border-color:rgba(94,234,212,.35);color:#5eead4}
.ng-dark-on .ng-breadcrumb,.ng-dark-on .ng-breadcrumb a,.ng-dark-on .ng-crumbs,.ng-dark-on .ng-crumbs a{color:#94a3b8}
.ng-dark-on .ng-breadcrumb a:hover,.ng-dark-on .ng-crumbs a:hover{color:#5eead4}
.ng-dark-on input,.ng-dark-on textarea,.ng-dark-on select,.ng-dark-on .search-field,.ng-dark-on .ng-search input,.ng-dark-on .ng-refine input,.ng-dark-on .ng-palette input{background:#0f172a;color:#e2e8f0;border-color:rgba(148,163,184,.35)}
.ng-dark-on input::placeholder{color:#64748b}
.ng-dark-on input:focus,.ng-dark-on textarea:focus,.ng-dark-on select:focus{border-color:rgba(94,234,212,.6);outline:none}
.ng-dark-on table,.ng-dark-on th,.ng-dark-on td{border-color:rgba(148,163,184,.25)}
.ng-dark-on th{background:#0f172a;color:#94a3b8}
.ng-dark-on td{background:transparent}
.ng-dark-on blockquote{border-color:rgba(94,234,212,.4);background:rgba(94,234,212,.06);color:#cbd5e1}
.ng-dark-on code,.ng-dark-on pre{background:#0f172a;color:#99f6e4;border-color:rgba(148,163,184,.25)}
.ng-dark-on mark{background:rgba(94,234,212,.25);color:#f8fafc}
.ng-dark-on hr{border-color:rgba(148,163,184,.25)}
.ng-dark-on .ng-chips a,.ng-dark-on .ng-sort a,.ng-dark-on .ng-view,.ng-dark-on .ng-view a,.ng-dark-on .ng-font a,.ng-dark-on .page-numbers,.ng-dark-on .ng-loadmore,.ng-dark-on .ng-share a,.ng-dark-on .ng-share button,.ng-dark-on .ng-rss,.ng-dark-on .ng-cta{background:rgba(94,234,212,.08);border-color:rgba(94,234,212,.3);color:#5eead4}
.ng-dark-on .ng-chips a:hover,.ng-dark-on .ng-sort a:hover,.ng-dark-on .page-numbers:hover,.ng-dark-on .page-numbers.current,.ng-dark-on .ng-loadmore:hover,.ng-dark-on .ng-share a:hover,.ng-dark-on .ng-sort .is-active,.ng-dark-on .ng-sort a.is-active,.ng-dark-on .ng-view .is-active,.ng-dark-on .ng-view a.is-active,.ng-dark-on .ng-font a.is-active,.ng-dark-on .ng-font .is-active{background:#5eead4;color:#0f172a;border-color:#5eead4}
.ng-dark-on .ng-badge,.ng-dark-on .ng-new,.ng-dark-on .ng-updated,.ng-dark-on .ng-fresh,.ng-dark-on .ng-rt,.ng-dark-on .ng-card-rt,.ng-dark-on .ng-read,.ng-dark-on .ng-comments,.ng-dark-on .ng-verified{background:rgba(94,234,212,.15);color:#5eead4;border-color:rgba(94,234,212,.3)}
.ng-dark-on .ng-zoom{background:rgba(5,8,16,.94)}
.ng-dark-on .ng-rail a{background:rgba(148,163,184,.25)}
.ng-dark-on .ng-rail a.is-active,.ng-dark-on .ng-rail .is-active{background:#5eead4}
.ng-dark-on .ng-progress{background:rgba(148,163,184,.2)}
.ng-dark-on .ng-backtop{background:#0f172a;color:#5eead4;border-color:rgba(94,234,212,.3)}
.ng-dark-on .ng-backtop:hover{border-color:#5eead4}
.ng-dark-on .site-footer,.ng-dark-on .site-bottom-footer-wrap,.ng-dark-on footer{background:#0a1018}
.ng-dark-on .site-footer a{color:#94a3b8}
.ng-dark-on .site-footer a:hover{color:#5eead4}
.ng-dark-on ::selection{background:rgba(94,234,212,.35);color:#f8fafc}
.ng-dark-on img{filter:brightness(.92)}
.ng-dark-on ::-webkit-scrollbar-thumb{background:rgba(94,234,212,.3)}
.ng-dark-on ::-webkit-scrollbar-track{background:#0b1220}
.ng-dark-on .ng-palette{background:#0f172a;border-color:rgba(148,163,184,.3);box-shadow:0 16px 48px rgba(0,0,0,.6)}
.ng-dark-on .ng-palette-list a,.ng-dark-on .ng-palette a{color:#cbd5e1}
.ng-dark-on .ng-palette-list a:hover,.ng-dark-on .ng-palette a:hover,.ng-dark-on .ng-palette .is-active{color:#5eead4}
.ng-dark-on .ng-zoom-cap{color:#cbd5e1}
.ng-dark-on .ng-search-drop,.ng-dark-on .ng-livesearch{background:#111c30;border-color:rgba(148,163,184,.25)}
.ng-dark-on .ng-search-drop a,.ng-dark-on .ng-livesearch a{color:#cbd5e1}
.ng-dark-on .ng-search-drop a:hover,.ng-dark-on .ng-livesearch a:hover{background:rgba(94,234,212,.1);color:#5eead4}


/* ng visited — muted 'Read' state on already-read listing cards */
.ng-read .entry-title a,.ng-read a.ng-read-title{opacity:.55}
.ng-read-chip{display:inline-block;margin-left:.45rem;padding:.1rem .45rem;border-radius:999px;font-size:.58rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:rgba(15,111,126,.9);background:rgba(15,111,126,.1);border:1px solid rgba(15,111,126,.3);vertical-align:.12em;opacity:1;white-space:nowrap}


/* Infinite archive loading hint (leg 30) */
.ng-loadmore-hint{display:block;margin-top:.5rem;font-size:.62rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:rgba(15,111,126,.75)}

/* Focus mode — distraction-free reading (leg 31) */
.ng-focus-btn{margin-left:auto;font:inherit;font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#0f6f7e;background:rgba(15,111,126,.08);border:1px solid rgba(15,111,126,.4);border-radius:999px;padding:.3rem .8rem;cursor:pointer;white-space:nowrap}
.ng-focus-btn:hover{background:rgba(15,111,126,.16)}
.ng-focus-btn[aria-pressed="true"]{color:#fff;background:#0f6f7e;border-color:#0f6f7e}
html.ng-focus-on .site-header,
html.ng-focus-on .site-footer,
html.ng-focus-on .ng-related,
html.ng-focus-on .ng-share,
html.ng-focus-on .ng-sitemap,
html.ng-focus-on .ng-totop,
html.ng-focus-on .ng-railnav,
html.ng-focus-on .ng-section-rail,
html.ng-focus-on .ng-search,
html.ng-focus-on .ng-drawer,
html.ng-focus-on .ng-breadcrumbs,
html.ng-focus-on .comments-area,
html.ng-focus-on #comments{display:none!important}
html.ng-focus-on .ng-articlebar{top:0!important}
html.ng-focus-on .entry-content{max-width:46rem;margin-inline:auto}

/* Inline related — 'Read next' card (leg 32) */
.ng-inread{margin:1.6rem 0;padding:1.1rem 1.25rem 1.2rem;background:rgba(15,111,126,.05);border:1px solid rgba(15,111,126,.22);border-left:4px solid #0f6f7e;border-radius:10px}
.ng-inread-k{display:block;font-size:.6rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#0f6f7e;margin-bottom:.35rem}
.ng-inread-title{display:block;font-size:1.05rem;font-weight:750;line-height:1.3;color:#0f172a;text-decoration:none}
.ng-inread-title:hover{text-decoration:underline}
.ng-inread-meta{margin:.4rem 0 0;font-size:.72rem;color:rgba(15,23,42,.55)}


/* Recently viewed rail — session history strip at article end (leg 33). */
.ng-recent {
	margin: 2rem 0 0;
	padding: 1.1rem 1.25rem 1.2rem;
	border-top: 1px solid rgba(15,111,126,.2);
}
.ng-recent-k {
	display: block;
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: rgba(15,111,126,.85);
	margin-bottom: .7rem;
}
.ng-recent-row {
	display: flex;
	gap: .6rem;
	overflow-x: auto;
	padding-bottom: .2rem;
	scrollbar-width: thin;
}
.ng-recent-item {
	flex: 0 0 auto;
	max-width: 16rem;
	padding: .55rem .8rem;
	font-size: .82rem;
	font-weight: 600;
	line-height: 1.35;
	color: inherit;
	text-decoration: none;
	background: rgba(15,111,126,.05);
	border: 1px solid rgba(15,111,126,.22);
	border-radius: 8px;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.ng-recent-item:hover {
	border-color: #0f6f7e;
	background: rgba(15,111,126,.1);
}


/* Reader typeface toggle — serif article body (leg 34). */
.ng-serif-btn {
	margin-left: .5rem;
	padding: .3rem .8rem;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: #0f6f7e;
	background: rgba(15,111,126,.08);
	border: 1px solid rgba(15,111,126,.3);
	border-radius: 999px;
	cursor: pointer;
}
.ng-serif-btn:hover {
	background: rgba(15,111,126,.16);
}
.ng-serif-btn[aria-pressed="true"] {
	color: #fff;
	background: #0f6f7e;
	border-color: #0f6f7e;
}
html.ng-serif-on .entry-content,
html.ng-serif-on .entry-content p,
html.ng-serif-on .entry-content li,
html.ng-serif-on .entry-content blockquote {
	font-family: Georgia, 'Times New Roman', serif;
}
html.ng-serif-on .entry-content p,
html.ng-serif-on .entry-content li {
	font-size: 1.04em;
	line-height: 1.75;
}


/* Skeleton shimmer — load-more placeholder cards (leg 35). */
.ng-skel {
	height: 9rem;
	border-radius: 10px;
	background: linear-gradient( 100deg, rgba(15,111,126,.06) 40%, rgba(15,111,126,.16) 50%, rgba(15,111,126,.06) 60% );
	background-size: 200% 100%;
	animation: ng-skel-shimmer 1.2s linear infinite;
}
@keyframes ng-skel-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

/* Print chip in article bar (leg 36). */
.ng-print-btn {
	margin-left: .5rem;
	padding: .3rem .8rem;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: #0891b2;
	background: rgba(15,111,126,.08);
	border: 1px solid rgba(15,111,126,.3);
	border-radius: 999px;
	cursor: pointer;
}
.ng-print-btn:hover {
	background: rgba(15,111,126,.16);
}
@media print { .ng-print-btn { display: none; } }

/* New-since-last-visit archive banner (leg 37). */
.ng-newsin {
	display: inline-block;
	margin: 0 0 1rem;
	padding: .35rem .9rem;
	border-radius: 999px;
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: #0891b2;
	background: rgba(15,111,126,.1);
	border: 1px solid rgba(15,111,126,.25);
}

/* ── Cite this article — citation panel behind the share-row chip ── */
.ng-cite-btn {
	display: inline-flex;
	align-items: center;
	gap: .35em;
	padding: .3em .85em;
	font-size: .72rem;
	font-weight: 700;
	line-height: 1.3;
	border: 1px solid rgba( 15,111,126, .45 );
	border-radius: 999px;
	background: rgba( 15,111,126, .06 );
	color: #0f6f7e;
	cursor: pointer;
}
.ng-cite-btn:hover, .ng-cite-btn[aria-expanded="true"] {
	background: rgba( 15,111,126, .14 );
}
.ng-cite {
	margin: .65em 0 0;
	padding: .9em 1.1em 1em;
	border: 1px solid rgba( 15,111,126, .3 );
	border-left: 3px solid #0f6f7e;
	border-radius: 8px;
	background: rgba( 15,111,126, .05 );
}
.ng-cite figcaption {
	margin-bottom: .45em;
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: #0f6f7e;
}
.ng-cite-text {
	margin: 0 0 .6em;
	font-size: .82rem;
	line-height: 1.55;
	color: inherit;
}
.ng-cite-copy {
	padding: .3em .9em;
	font-size: .72rem;
	font-weight: 700;
	border: 1px solid rgba( 15,111,126, .45 );
	border-radius: 999px;
	background: #fff;
	color: #0f6f7e;
	cursor: pointer;
}
.ng-cite-copy:hover {
	background: rgba( 15,111,126, .12 );
}
@media print {
	.ng-cite-btn, .ng-cite { display: none; }
}

/* ── Quote-share popover — select article text → copy/share affordance ── */
.ng-qshare {
	position: absolute;
	z-index: 100000;
	display: inline-flex;
	align-items: center;
	gap: .4em;
	padding: .3em .45em;
	border-radius: 999px;
	background: #111827;
	box-shadow: 0 4px 18px rgba( 0,0,0,.28 );
	white-space: nowrap;
}
.ng-qshare-copy {
	padding: .28em .8em;
	font-size: .68rem;
	font-weight: 700;
	border: 0;
	border-radius: 999px;
	background: #0f6f7e;
	color: #fff;
	cursor: pointer;
}
.ng-qshare-copy:hover {
	filter: brightness( 1.12 );
}
.ng-qshare-x {
	display: inline-flex;
	align-items: center;
	gap: .3em;
	padding: .28em .7em;
	font-size: .68rem;
	font-weight: 700;
	color: #e5e7eb;
	text-decoration: none;
	border-radius: 999px;
}
.ng-qshare-x:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.ng-qshare-x svg {
	fill: currentColor;
}
.ng-qshare-search {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .68rem;
	font-weight: 700;
	color: #e5e7eb;
	text-decoration: none;
	border-left: 1px solid rgba( 226,232,240,.18 );
}
.ng-qshare-search:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.ng-qshare-card {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .68rem;
	font-weight: 700;
	color: #e5e7eb;
	background: none;
	border: 0;
	border-left: 1px solid rgba( 226,232,240,.18 );
	border-radius: 0;
	cursor: pointer;
}
.ng-qshare-card:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.ng-qshare-speak {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .66rem;
	font-weight: 700;
	line-height: 1;
	color: #e5e7eb;
	background: none;
	border: 0;
	border-left: 1px solid rgba( 226,232,240,.18 );
	border-radius: 0;
	cursor: pointer;
}
.ng-qshare-speak:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}

.ng-qshare-define {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .66rem;
	font-weight: 700;
	line-height: 1;
	color: #e5e7eb;
	background: none;
	border: 0;
	border-left: 1px solid rgba( 226,232,240,.18 );
	border-radius: 0;
	cursor: pointer;
}
.ng-qshare-define:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.ng-qshare-def {
	position: absolute;
	top: calc( 100% + 8px );
	left: 0;
	width: 17rem;
	max-height: 16rem;
	overflow: auto;
	padding: .7em .85em;
	border-radius: 12px;
	background: #111827;
	box-shadow: 0 8px 26px rgba( 0,0,0,.34 );
	font-size: .72rem;
	font-weight: 400;
	line-height: 1.5;
	color: #e5e7eb;
	white-space: normal;
}
.ng-qshare-pos {
	text-transform: uppercase;
	font-size: .62rem;
	font-weight: 700;
	color: var( --ng-accent, #818cf8 );
}
.ng-qshare-def-more {
	color: #fff;
	text-decoration: underline;
	font-size: .68rem;
}



@media print {
	.ng-qshare { display: none; }
}

/* ---------------------------------------------------------------
   Mobile section navigator — floating 'Sections' chip (≤768px only)
   opens a bottom sheet mirroring the article ToC (leg 40).
   --------------------------------------------------------------- */
.ng-sectnav {
	position: fixed;
	left: 16px;
	bottom: 16px;
	z-index: 9000;
	display: none;
	align-items: center;
	gap: 6px;
	padding: 9px 15px;
	border: none;
	border-radius: 999px;
	background: #0f6f7e;
	color: #fff;
	font: 700 .8rem/1 system-ui, sans-serif;
	letter-spacing: .02em;
	cursor: pointer;
	box-shadow: 0 6px 20px rgba(8, 145, 178, .4), 0 1px 4px rgba(0, 0, 0, .18);
}
.ng-sectnav:active {
	transform: translateY(1px);
}
.ng-sectnav-scrim {
	position: fixed;
	inset: 0;
	z-index: 9001;
	background: rgba(17, 24, 39, .45);
}
.ng-sectnav-sheet {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 9002;
	max-height: 62vh;
	overflow-y: auto;
	padding: 16px 20px 28px;
	background: #fff;
	border-radius: 16px 16px 0 0;
	box-shadow: 0 -8px 30px rgba(0, 0, 0, .22);
	animation: ng-sectnav-rise .18s ease-out;
}
@keyframes ng-sectnav-rise {
	from { transform: translateY(40px); opacity: 0; }
	to { transform: translateY(0); opacity: 1; }
}
.ng-sectnav-head {
	display: block;
	font: 700 .72rem/1 system-ui, sans-serif;
	text-transform: uppercase;
	letter-spacing: .09em;
	color: #0f6f7e;
	margin-bottom: 10px;
}
.ng-sectnav-close {
	position: absolute;
	top: 10px;
	right: 14px;
	border: none;
	background: none;
	font-size: 1.5rem;
	line-height: 1;
	color: #6b7280;
	cursor: pointer;
	padding: 4px;
}
.ng-sectnav-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.ng-sectnav-list li {
	margin: 0;
}
.ng-sectnav-list a {
	display: block;
	padding: 11px 6px;
	border-bottom: 1px solid #f1f5f9;
	color: #1f2937;
	font: 500 .95rem/1.3 system-ui, sans-serif;
	text-decoration: none;
}
.ng-sectnav-list a:active,
.ng-sectnav-list a.ng-toc-active {
	color: #0f6f7e;
	font-weight: 700;
}
.ng-sectnav-list li.ng-toc-sub a {
	padding-left: 22px;
	font-size: .88rem;
	color: #4b5563;
}
@media (max-width: 768px) {
	.ng-sectnav { display: inline-flex; }
}
@media print {
	.ng-sectnav, .ng-sectnav-scrim, .ng-sectnav-sheet { display: none !important; }
}

/* ---------------------------------------------------------------
   'Unread only' archive filter — toggle appended to the sort row;
   filters listing cards against the visited store (leg 41).
   --------------------------------------------------------------- */
button.ng-unread {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin-left: auto;
	padding: 5px 12px;
	border: 1px solid rgba(8, 145, 178, .3);
	border-radius: 999px;
	background: #fff;
	color: #0f6f7e;
	font: 700 .76rem/1 system-ui, sans-serif;
	cursor: pointer;
	transition: background .15s, color .15s;
}
button.ng-unread:hover {
	background: rgba(8, 145, 178, .07);
}
button.ng-unread .ng-unread-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: rgba(8, 145, 178, .35);
	transition: background .15s;
}
button.ng-unread.ng-sort-current {
	background: #0f6f7e;
	border-color: #0f6f7e;
	color: #fff;
}
button.ng-unread.ng-sort-current .ng-unread-dot {
	background: #fff;
}
p.ng-unread-empty {
	margin: 8px 0 14px;
	padding: 10px 14px;
	border: 1px dashed rgba(8, 145, 178, .35);
	border-radius: 10px;
	background: rgba(8, 145, 178, .05);
	color: #0f6f7e;
	font: 600 .82rem/1.4 system-ui, sans-serif;
}
@media print {
	button.ng-unread { display: none !important; }
}

/* ---------------------------------------------------------------
   'Continue reading' strip — persistent cross-page resume banner on
   listing surfaces (leg 42). Accent-rail card above the post list.
   --------------------------------------------------------------- */
.ng-continue {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 14px;
	margin: 0 0 18px;
	padding: 12px 16px;
	border: 1px solid rgba(8, 145, 178, .25);
	border-left: 4px solid #0f6f7e;
	border-radius: 10px;
	background: rgba(8, 145, 178, .05);
}
.ng-continue-k {
	flex: 0 0 100%;
	font: 700 .68rem/1 system-ui, sans-serif;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: #0f6f7e;
}
.ng-continue-t {
	flex: 1 1 auto;
	min-width: 0;
	font: 700 .95rem/1.35 system-ui, sans-serif;
	color: #111827;
	text-decoration: none;
}
.ng-continue-t:hover {
	color: #0f6f7e;
	text-decoration: underline;
}
.ng-continue-p {
	flex: 0 0 auto;
	font: 600 .78rem/1 system-ui, sans-serif;
	color: #6b7280;
}
.ng-continue-x {
	flex: 0 0 auto;
	border: none;
	background: none;
	padding: 2px 6px;
	font-size: 1.25rem;
	line-height: 1;
	color: #9ca3af;
	cursor: pointer;
}
.ng-continue-x:hover {
	color: #111827;
}
@media print {
	.ng-continue { display: none !important; }
}

/* ---------------------------------------------------------------
   'Up next' slide-in card — bottom-right card surfacing the first
   related post near article end (leg 43). Accent-rail, rise-in.
   --------------------------------------------------------------- */
.ng-nextread {
	position: fixed;
	right: 18px;
	bottom: 78px;
	z-index: 8000;
	max-width: 320px;
	padding: 12px 34px 12px 14px;
	border: 1px solid rgba(8, 145, 178, .25);
	border-left: 4px solid #0f6f7e;
	border-radius: 10px;
	background: #fff;
	box-shadow: 0 12px 32px rgba(17, 24, 39, .18);
	opacity: 0;
	transform: translateY(18px);
	pointer-events: none;
	transition: opacity .28s ease, transform .28s ease;
}
.ng-nextread.ng-nextread-on {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}
.ng-nextread-k {
	display: block;
	margin-bottom: 4px;
	font: 700 .66rem/1 system-ui, sans-serif;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: #0f6f7e;
}
.ng-nextread-t {
	display: block;
	font: 700 .92rem/1.35 system-ui, sans-serif;
	color: #111827;
	text-decoration: none;
}
.ng-nextread-t:hover {
	color: #0f6f7e;
	text-decoration: underline;
}
.ng-nextread-x {
	position: absolute;
	top: 6px;
	right: 8px;
	border: none;
	background: none;
	padding: 2px 6px;
	font-size: 1.25rem;
	line-height: 1;
	color: #9ca3af;
	cursor: pointer;
}
.ng-nextread-x:hover {
	color: #111827;
}
@media (max-width: 640px) {
	.ng-nextread {
		left: 18px;
		max-width: none;
	}
}
@media print {
	.ng-nextread { display: none !important; }
}

/* 'Minutes left' progress chip (leg 44) */
.ng-progchip {
	position: fixed; left: 18px; bottom: 70px; z-index: 7990;
	display: flex; align-items: center; gap: 10px;
	padding: 8px 14px; border-radius: 999px;
	background: #ffffff; border: 1px solid #e2e8f0;
	box-shadow: 0 6px 18px rgba(2, 6, 23, .10);
	opacity: 0; transform: translateY(8px); pointer-events: none;
	transition: opacity .25s ease, transform .25s ease;
}
.ng-progchip-on { opacity: 1; transform: none; }
.ng-progchip-rail { width: 56px; height: 4px; border-radius: 2px; background: #e2e8f0; overflow: hidden; }
.ng-progchip-fill { display: block; height: 100%; width: 0; background: #0f6f7e; border-radius: 2px; transition: width .2s ease; }
.ng-progchip-t { font-size: 12.5px; font-weight: 600; color: #475569; white-space: nowrap; }
@media (max-width:767px){.ng-progchip{display:none!important}}
@media print { .ng-progchip { display: none !important; } }

/* Find-in-article tool (leg 45) */
.ng-find {
	margin-left: auto; padding: 4px 10px; border-radius: 999px;
	border: 1px solid #e2e8f0; background: #f8fafc; color: #475569;
	font-size: 12px; font-weight: 600; cursor: pointer;
	display: inline-flex; align-items: center; gap: 6px;
}
.ng-find:hover { border-color: #0f6f7e; color: #0f6f7e; }
.ng-find kbd {
	font: 600 10px/1 ui-monospace, monospace; color: #64748b;
	border: 1px solid #cbd5e1; border-bottom-width: 2px; border-radius: 4px;
	padding: 2px 5px; background: #fff;
}
.ng-findbar {
	position: fixed; top: 12vh; left: 50%; z-index: 7998;
	display: flex; align-items: center; gap: 8px;
	padding: 8px 10px; border-radius: 12px; width: min(430px, 92vw);
	background: #ffffff; border: 1px solid #e2e8f0;
	box-shadow: 0 12px 32px rgba(2, 6, 23, .16);
	opacity: 0; transform: translate(-50%, -8px); pointer-events: none;
	transition: opacity .2s ease, transform .2s ease;
}
.ng-findbar-on { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.ng-findbar-in {
	flex: 1; min-width: 0; border: 0; outline: none; font-size: 14px;
	padding: 6px 8px; border-radius: 8px; background: #f1f5f9; color: #0f172a;
}
.ng-findbar-n { font-size: 12px; font-weight: 700; color: #64748b; min-width: 34px; text-align: center; font-variant-numeric: tabular-nums; }
.ng-findbar button, .ng-findbar-up, .ng-findbar-dn, .ng-findbar-x {
	border: 1px solid #e2e8f0; background: #fff; color: #475569;
	width: 28px; height: 28px; border-radius: 8px; cursor: pointer;
	font-size: 13px; line-height: 1; display: inline-flex; align-items: center; justify-content: center;
}
.ng-findbar button:hover { border-color: #0f6f7e; color: #0f6f7e; }
mark.ng-findhit { background: rgba(8, 145, 178, .22); color: inherit; padding: 0 1px; border-radius: 2px; }
mark.ng-findhit-cur { background: #0f6f7e; color: #fff; }
@media print { .ng-find, .ng-findbar { display: none !important; } }

/* Relative-time stamps (leg 46) */
.ng-rel { font-size: .85em; color: #94a3b8; margin-left: 4px; white-space: nowrap; }
@media print { .ng-rel { display: none !important; } }

/* Sibling-topic chips on articles (leg 47) */
.ng-morecats { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; }
.ng-morecats-label { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #64748b; margin-right: 2px; }
.ng-morecats-chip { display: inline-flex; padding: .22rem .72rem; border: 1px solid #e2e8f0; border-radius: 999px; background: #fff; color: #475569; font-size: .78rem; font-weight: 600; text-decoration: none; transition: border-color .15s, color .15s; }
.ng-morecats-chip:hover { border-color: rgba(15,111,126,.45); color: #0f6f7e; }
@media print { .ng-morecats { display: none !important; } }

/* Copy section link (leg 48) */
.entry-content .ng-anchor { position: relative; }
.entry-content .ng-anchor-copied { opacity: 1; color: #0f6f7e; }
.entry-content .ng-anchor-copied::after { content: attr(data-label); position: absolute; left: 50%; bottom: 140%; transform: translateX(-50%); background: #0f172a; color: #fff; font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 5px; white-space: nowrap; }
@media print { .entry-content .ng-anchor-copied::after { display: none; } }

/* Sticky share rail (leg 50) */
.ng-sharerail { position: fixed; left: 14px; top: 50%; transform: translateY(-50%); z-index: 7900; display: flex; flex-direction: column; gap: 8px; opacity: 0; animation: ng-sharerail-in .4s ease .6s forwards; }
@keyframes ng-sharerail-in { to { opacity: 1; } }
.ng-sharerail-b { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; background: #fff; border: 1px solid #e2e8f0; color: #64748b; cursor: pointer; transition: color .15s, border-color .15s, box-shadow .15s; box-shadow: 0 1px 3px rgba(15,23,42,.06); padding: 0; }
.ng-sharerail-b:hover { color: #0f6f7e; border-color: rgba(15,111,126,.45); box-shadow: 0 4px 10px rgba(15,23,42,.12); }
.ng-sharerail-copy { position: relative; }
.ng-sharerail-copy.ng-sharerail-on { color: #fff; background: #0f6f7e; border-color: #0f6f7e; }
.ng-sharerail-copy.ng-sharerail-on::after { content: attr(data-label); position: absolute; left: 46px; top: 50%; transform: translateY(-50%); background: #0f172a; color: #fff; font-size: 10px; font-weight: 600; padding: 3px 8px; border-radius: 5px; white-space: nowrap; }
@media (max-width: 1359px) { .ng-sharerail { display: none; } }
@media print { .ng-sharerail { display: none !important; } }

/* Date-range filter row under the sort row (leg 51) */
.ng-datefilter{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-6px 0 14px}
@media print{.ng-datefilter{display:none}}

/* Search type facets above the sort row (leg 52) */
.ng-searchtabs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
@media print{.ng-searchtabs{display:none}}

/* A–Z index surface at /az/ (leg 53) */
.ng-az-head{margin:28px 0 10px}
.ng-az-title{margin:0 0 4px;font-size:1.5rem}
.ng-az-count{color:#64748b;font-size:.85rem;margin:0 0 14px}
.ng-az-jump{display:flex;flex-wrap:wrap;gap:6px}
.ng-az-letter{min-width:30px;text-align:center;padding:.28rem .5rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-weight:600;font-size:.8rem;text-decoration:none}
.ng-az-letter:hover{border-color:#0f6f7e;color:#0f6f7e}
.ng-az-group{margin:22px 0 8px}
.ng-az-group-head{font-size:.95rem;letter-spacing:.08em;text-transform:uppercase;color:#0f6f7e;border-bottom:2px solid rgba(15,111,126,.35);padding-bottom:4px;margin:0 0 8px}
.ng-az-list{list-style:none;margin:0;padding:0;columns:2;column-gap:28px}
.ng-az-list li{break-inside:avoid;display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:4px 0;border-bottom:1px dashed #eef2f7}
.ng-az-list a{color:#1e293b;text-decoration:none;font-size:.92rem}
.ng-az-list a:hover{color:#0f6f7e}
.ng-az-type{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8;white-space:nowrap}
@media (max-width:700px){.ng-az-list{columns:1}}
@media print{.ng-az-jump{display:none}}

/* Jump-to-page control in archive pagination (leg 54) */
.ng-pagejump{display:inline-flex;align-items:center;gap:6px;margin-left:8px}
.ng-pagejump input{width:64px;padding:.3rem .5rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-size:.8rem;font-weight:600}
.ng-pagejump input:focus{outline:2px solid rgba(15,111,126,.4);border-color:#0f6f7e}
.ng-pagejump button{padding:.3rem .7rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-size:.8rem;font-weight:700;cursor:pointer}
.ng-pagejump button:hover{border-color:#0f6f7e;color:#0f6f7e}
@media print{.ng-pagejump{display:none}}


/* Markdown export chip (leg 55) */
.ng-md{margin-left:2px}

/* Reader highlighter (leg 56) */
mark.ng-hl{background:rgba(15,111,126,.22);color:inherit;padding:0 1px;border-radius:3px;cursor:pointer;border-bottom:1px dashed rgba(15,111,126,.5)}
mark.ng-hl:hover{background:rgba(15,111,126,.35)}
.ng-hltip{padding:.32rem .7rem;border:none;border-radius:999px;background:#0f6f7e;color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.02em;cursor:pointer;box-shadow:0 4px 14px rgba(15,111,126,.4)}
.ng-hltip:hover{filter:brightness(1.08)}
@media print{mark.ng-hl{background:none;border-bottom:none}}

/* In-topic prev/next chips (leg 57) */
.ng-intopic{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0}
.ng-intopic-label{font-size:.68rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#94a3b8;margin-right:2px}
.ng-intopic-a{display:inline-flex;align-items:center;gap:6px;max-width:44%;padding:.4rem .8rem;border:1px solid #e2e8f0;border-radius:999px;background:#fff;color:#475569;font-size:.8rem;font-weight:600;text-decoration:none;line-height:1.3}
.ng-intopic-a:hover{border-color:#0f6f7e;color:#0f6f7e}
.ng-intopic-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ng-intopic-dir{font-weight:800}
.ng-intopic-next{margin-left:auto}
@media(max-width:640px){.ng-intopic-a{max-width:100%}}
@media print{.ng-intopic{display:none}}

/* Archive read-coverage chip (leg 58) */
.ng-coverage{display:inline-flex;align-items:center;gap:.45rem;margin-left:auto;padding:.32rem .75rem;border:1px solid #e2e8f0;border-radius:999px;background:#f8fafc;color:#475569;font-size:.72rem;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.ng-coverage-bar{display:inline-block;width:34px;height:5px;border-radius:999px;background:#e2e8f0;overflow:hidden;vertical-align:1px}
.ng-coverage-bar i{display:block;height:100%;background:#0f6f7e;border-radius:999px}
@media print{.ng-coverage{display:none}}

/* Sticky reading bar (leg 59) */
.ng-readbar{position:fixed;top:0;left:0;right:0;z-index:90;display:flex;align-items:center;gap:14px;padding:.55rem 1.1rem;background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border-bottom:1px solid #e2e8f0;box-shadow:0 6px 18px rgba(15,23,42,.06);transform:translateY(-110%);transition:transform .25s ease}
.ng-readbar.on{transform:translateY(0)}
.ng-readbar-t{flex:1;min-width:0;font-size:.85rem;font-weight:800;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ng-readbar-track{flex:0 1 180px;height:4px;border-radius:999px;background:#e2e8f0;overflow:hidden}
.ng-readbar-fill{display:block;height:100%;background:#0f6f7e;border-radius:999px}
.ng-readbar-pct{font-size:.72rem;font-weight:800;color:#0f6f7e;font-variant-numeric:tabular-nums}
@media(max-width:640px){.ng-readbar-track{display:none}}
@media print{.ng-readbar{display:none}}

/* Surprise-me random-read chip (leg 61) */
.ng-random{border-style:dashed}
@media print{.ng-random{display:none}}

/* Filter-list input in the archive sort row (leg 62) */
.ng-listfilter{display:inline-flex;align-items:center;gap:.45rem}
.ng-listfilter-in{padding:.35rem .8rem;border:1px solid #e2e8f0;border-radius:999px;font-size:.75rem;font-weight:600;color:#334155;background:#fff;min-width:8.5rem;outline:none}
.ng-listfilter-in:focus{border-color:rgba(8,145,178,.55);box-shadow:0 0 0 3px rgba(8,145,178,.12)}
.ng-listfilter-n{font-size:.68rem;font-weight:700;color:#94a3b8;font-variant-numeric:tabular-nums;white-space:nowrap}
.ng-lf-hide{display:none !important}
@media print{.ng-listfilter{display:none}}

/* ng-timeline — month-grouped archive view */
.ng-tlv { cursor: pointer; }
ul.ng-tl-on { grid-template-columns: 1fr !important; gap: 1.1rem !important; }
.ng-tl-wrap { display: block; grid-column: 1 / -1; }
.ng-tl-group { display: grid; gap: 1rem; grid-template-columns: repeat(3, minmax(0, 1fr)); padding-bottom: 1.2rem; margin-bottom: 1.2rem; border-bottom: 1px solid rgba(15, 23, 42, 0.08); position: relative; }
.ng-tl-group::before { content: ""; position: absolute; left: 0; top: 0.4rem; bottom: 0.4rem; width: 3px; border-radius: 3px; background: rgba(15, 111, 126, 0.55); }
.ng-tl-month { grid-column: 1 / -1; margin: 0 0 0.2rem; padding: 0.28rem 0.9rem 0.28rem 1rem; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: #0f6f7e; }
@media (max-width: 980px) { .ng-tl-group { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .ng-tl-group { grid-template-columns: 1fr; } }
@media print { .ng-tlv { display: none; } }

/* ng-peek — hover preview popover on archive cards */
ul.kadence-posts-list > li, .ng-grid > li { position: relative; }
.ng-peek { position: absolute; z-index: 40; left: 1rem; right: 1rem; top: calc(100% - 0.5rem); background: #fff; border: 1px solid rgba(15, 23, 42, 0.1); border-top: 3px solid #0f6f7e; border-radius: 10px; box-shadow: 0 14px 36px -12px rgba(15, 23, 42, 0.35); padding: 0.8rem 0.95rem; }
.ng-peek-t { display: block; font-size: 0.85rem; line-height: 1.35; color: #0f172a; margin-bottom: 0.35rem; }
.ng-peek-e { margin: 0 0 0.45rem; font-size: 0.78rem; line-height: 1.5; color: #475569; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.ng-peek-l { font-size: 0.75rem; color: #94a3b8; }
.ng-peek-a { font-size: 0.75rem; font-weight: 700; color: #0f6f7e; text-decoration: none; }
.ng-peek-a:hover { text-decoration: underline; }
@media (max-width: 600px) { .ng-peek { display: none; } }

/* ng-stick — sticky archive toolbar */
.ng-sort.ng-stick { position: sticky; top: var(--ng-stick-top, 90px); z-index: 26; background: #fff; padding: 0.55rem 0.6rem; margin-bottom: 0.8rem; border-radius: 12px; transition: box-shadow 0.18s ease; }
.ng-sort.ng-stick.ng-stuck { box-shadow: 0 12px 26px -14px rgba(15, 23, 42, 0.5); }
.ng-dark-on .ng-sort.ng-stick { background: #0e1626; }
@media print { .ng-sort.ng-stick { position: static; } }

/* ng-azview — alphabetical index view for archives */
.ng-azv { cursor: pointer; }
.ng-az-wrap { display: block; grid-column: 1 / -1; background: #fff; border: 1px solid rgba(15, 23, 42, 0.08); border-radius: 12px; padding: 1.1rem 1.3rem; }
.ng-az-group { margin-bottom: 1.15rem; }
.ng-az-group:last-child { margin-bottom: 0; }
.ng-az-letter { font-size: 0.72rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ng-accent, #0891b2); border-bottom: 1px solid rgba(15, 23, 42, 0.1); padding-bottom: 0.3rem; margin: 0 0 0.55rem; }
.ng-az-list { list-style: none; margin: 0; padding: 0; columns: 3; column-gap: 1.6rem; }
.ng-az-list li { break-inside: avoid; margin-bottom: 0.32rem; }
.ng-az-list a { font-size: 0.84rem; color: #0f172a; text-decoration: none; }
.ng-az-list a:hover { color: var(--ng-accent, #0891b2); text-decoration: underline; }
.ng-dark-on .ng-az-wrap { background: #111c30; border-color: rgba(148, 163, 184, 0.2); }
.ng-dark-on .ng-az-list a { color: #cbd5e1; }
@media (max-width: 980px) { .ng-az-list { columns: 2; } }
@media (max-width: 600px) { .ng-az-list { columns: 1; } }
@media print { .ng-azv { display: none; } }

/* ng-notes — per-article reader notes dock */
.ng-notes-n { display: inline-block; min-width: 1.1em; margin-left: 0.25rem; padding: 0 0.3rem; border-radius: 999px; background: var(--ng-accent, #0891b2); color: #fff; font-size: 0.68rem; font-weight: 700; }
.ng-notes-dock { position: fixed; right: 1.1rem; bottom: 1.1rem; z-index: 60; width: 300px; max-width: calc(100vw - 2.2rem); background: #fff; border: 1px solid rgba(15, 23, 42, 0.1); border-top: 3px solid var(--ng-accent, #0891b2); border-radius: 12px; box-shadow: 0 18px 44px -14px rgba(15, 23, 42, 0.4); padding: 0.85rem 0.95rem; display: none; }
.ng-notes-dock.is-open { display: block; }
.ng-notes-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; }
.ng-notes-head strong { font-size: 0.82rem; color: #0f172a; }
.ng-notes-x { border: 0; background: none; font-size: 1.1rem; line-height: 1; color: #94a3b8; cursor: pointer; }
.ng-notes-x:hover { color: #0f172a; }
.ng-notes-list { max-height: 170px; overflow-y: auto; margin-bottom: 0.55rem; }
.ng-notes-empty { font-size: 0.76rem; color: #94a3b8; margin: 0 0 0.4rem; }
.ng-notes-item { position: relative; padding: 0.5rem 1.2rem 0.5rem 0.6rem; margin-bottom: 0.4rem; background: rgba(15, 23, 42, 0.04); border-left: 3px solid var(--ng-accent, #0891b2); border-radius: 6px; }
.ng-notes-text { font-size: 0.8rem; color: #1e293b; margin: 0 0 0.15rem; white-space: pre-wrap; }
.ng-notes-ts { font-size: 0.66rem; color: #94a3b8; }
.ng-notes-rm { position: absolute; top: 0.3rem; right: 0.35rem; border: 0; background: none; color: #94a3b8; cursor: pointer; font-size: 0.95rem; line-height: 1; }
.ng-notes-rm:hover { color: #dc2626; }
.ng-notes-ta { width: 100%; box-sizing: border-box; font-size: 0.8rem; color: #0f172a; border: 1px solid rgba(15, 23, 42, 0.15); border-radius: 8px; padding: 0.45rem 0.55rem; resize: vertical; font-family: inherit; }
.ng-notes-ta:focus { outline: none; border-color: var(--ng-accent, #0891b2); box-shadow: 0 0 0 3px rgba(8, 145, 178, 0.15); }
.ng-notes-add { margin-top: 0.45rem; width: 100%; border: 0; border-radius: 8px; background: var(--ng-accent, #0891b2); color: #fff; font-size: 0.78rem; font-weight: 700; padding: 0.45rem 0; cursor: pointer; }
.ng-notes-add:hover { filter: brightness(1.07); }
.ng-dark-on .ng-notes-dock { background: #111c30; border-color: rgba(148, 163, 184, 0.25); }
.ng-dark-on .ng-notes-head strong { color: #e2e8f0; }
.ng-dark-on .ng-notes-item { background: rgba(148, 163, 184, 0.1); }
.ng-dark-on .ng-notes-text { color: #cbd5e1; }
.ng-dark-on .ng-notes-ta { background: #0e1626; color: #e2e8f0; border-color: rgba(148, 163, 184, 0.3); }
@media (max-width: 600px) { .ng-notes-dock { right: 0.6rem; bottom: 0.6rem; } }
@media print { .ng-notes, .ng-notes-dock { display: none !important; } }

/* =========================================================
   Labeled section rail (leg 69). On very wide screens the
   dot rail becomes an always-visible 'On this page' index —
   titles show without hovering; dots stay under 1600px.
   ========================================================= */
@media (min-width: 1600px) {
  .ng-rail {
    right: 1.4rem;
    padding: 0.8rem 0.9rem;
    background: #fff;
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-radius: 14px;
    box-shadow: 0 10px 30px -14px rgba(15, 23, 42, 0.2);
    gap: 0.3rem;
  }
  .ng-rail::before {
    content: "On this page";
    font-size: 0.6rem;
    font-weight: 800;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--ng-accent);
    margin-bottom: 0.25rem;
  }
  .ng-rail a {
    flex-direction: row-reverse;
    justify-content: flex-end;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.3;
    color: rgba(15, 23, 42, 0.55);
  }
  .ng-rail a::after { width: 5px; height: 5px; }
  .ng-rail a:hover, .ng-rail a.ng-rail-active { font-size: 0.72rem; }
  .ng-dark-on .ng-rail { background: #0e1626; border-color: rgba(148, 163, 184, 0.15); }
  .ng-dark-on .ng-rail a { color: rgba(226, 232, 240, 0.6); }
} /* wide-rail */

/* 'Start at the beginning' chip (leg 121) */
a.ng-startbegin {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.4em;
	margin: 0.9em 0 0;
	padding: 0.5em 1em;
	border: 1px solid var(--ng-line, #e2e8f0);
	border-left: 3px solid var(--ng-accent, #0891b2);
	border-radius: 10px;
	text-decoration: none;
	background: var(--ng-card, #fff);
	grid-column: 1 / -1;
}
a.ng-startbegin:hover { border-color: var(--ng-accent, #0891b2); }
.ng-startbegin-k { font-size: 0.66rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ng-accent, #0891b2); }
.ng-startbegin-t { font-size: 0.92rem; font-weight: 600; color: inherit; }
@media print { a.ng-startbegin { display: none; } }

/* Topic-scoped search (leg 122) */
.ng-topicsearch {
	display: flex;
	align-items: center;
	gap: 0.5em;
	margin: 0.7em 0 0;
	padding: 0.35em 0.4em 0.35em 0.9em;
	border: 1px solid var(--ng-line, #e2e8f0);
	border-radius: 999px;
	background: var(--ng-card, #fff);
	max-width: 560px;
	grid-column: 1 / -1;
}
.ng-topicsearch-q {
	flex: 1;
	min-width: 0;
	border: 0;
	background: transparent;
	font: inherit;
	font-size: 0.9rem;
	color: inherit;
	outline: none;
}
.ng-topicsearch-btn {
	border: 0;
	border-radius: 999px;
	padding: 0.42em 1.1em;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #fff;
	background: var(--ng-accent, #0891b2);
	cursor: pointer;
}
.ng-topicsearch-btn:hover { filter: brightness(1.08); }
@media print { .ng-topicsearch { display: none; } }

/* 'From the archive' daily pick (leg 123) */
.ng-dailypick {
	display: block;
	margin: 0 0 1.4em;
	padding: 1em 1.4em 1.1em;
	border: 1px solid var(--ng-line, #e2e8f0);
	border-left: 3px solid var(--ng-accent, #0891b2);
	border-radius: 12px;
	background: var(--ng-card, #fff);
	grid-column: 1 / -1;
}
.ng-dailypick-k {
	display: block;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ng-accent, #0891b2);
	margin-bottom: 0.35em;
}
.ng-dailypick-t { margin: 0; font-size: 1.3rem; line-height: 1.3; }
.ng-dailypick-t a { color: inherit; text-decoration: none; }
.ng-dailypick-t a:hover { color: var(--ng-accent, #0891b2); }
.ng-dailypick-c {
	display: inline-block;
	margin-top: 0.55em;
	font-size: 0.72rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--ng-muted, #64748b);
	text-decoration: none;
}
.ng-dailypick-c:hover { color: var(--ng-accent, #0891b2); }

.ng-qshare-md {
	font-size: .66rem;
	font-weight: 700;
	color: #e5e7eb;
	background: #111827;
	border: 0;
	border-left: 1px solid rgba( 255,255,255,.14 );
	padding: .45em .8em;
	cursor: pointer;
	white-space: nowrap;
}
.ng-qshare-md:hover { color: var( --ng-accent, #6366f1 ); }

/* ---------------------------------------------------------------
   Rows view (?density=rows, leg 198) — a third archive density:
   single-column one-line scan rows (title + meta), no excerpts or
   imagery, for fastest registry scanning.
   ============================================================ */
body.ng-rows.archive ul.content-wrap.kadence-posts-list,
body.ng-rows.search ul.content-wrap.kadence-posts-list,
body.ng-rows.blog ul.content-wrap.kadence-posts-list {
	grid-template-columns: 1fr;
	gap: 0;
}
body.ng-rows li.entry-list-item {
	border: none;
	border-radius: 0;
	box-shadow: none;
	border-bottom: 1px solid rgba(0,0,0,.08);
}
body.ng-rows article.loop-entry {
	display: flex;
	align-items: baseline;
	gap: .9rem;
	padding: .5rem .4rem;
	margin: 0;
	box-shadow: none;
}
body.ng-rows article.loop-entry .entry-title {
	font-size: .95rem;
	line-height: 1.35;
	margin: 0;
}
body.ng-rows article.loop-entry .entry-summary,
body.ng-rows article.loop-entry .post-more-link,
body.ng-rows article.loop-entry .post-thumbnail,
body.ng-rows article.loop-entry figure,
body.ng-rows article.loop-entry .entry-content {
	display: none;
}
body.ng-rows article.loop-entry .entry-meta {
	font-size: .7rem;
	margin-left: auto;
	white-space: nowrap;
}
body.ng-rows article.loop-entry .category-links {
	margin-left: auto;
}
body.ng-rows article.loop-entry .category-links a {
	font-size: .62rem;
	padding: .1rem .45rem;
}

/* Rows internal layout — header flattens into the flex row, footer
   and decorative blocks hide; title ellipsizes to one line. */
body.ng-rows article.loop-entry .entry-content-wrap {
	display: flex;
	align-items: center;
	gap: .8rem;
	width: 100%;
	min-width: 0;
}
body.ng-rows article.loop-entry .entry-header { display: contents; }
body.ng-rows article.loop-entry .entry-footer { display: none; }
body.ng-rows article.loop-entry .entry-title {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
body.ng-rows article.loop-entry .entry-taxonomies { margin: 0; }
body.ng-rows article.loop-entry .entry-meta { margin-left: auto; }

/* Rows — collapse Kadence's generous card padding. */
body.ng-rows article.loop-entry .entry-content-wrap { padding: .4rem .8rem; }
body.ng-rows article.loop-entry { padding: 0; }
body.ng-rows li.entry-list-item.nv-lead-card,
body.ng-rows li.entry-list-item { min-height: 0; }
