/* NightCal stylesheet. GENERATED by web/tools/build_pages.py. Edit tokens/, css/ or the per-component CSS files. */
/* NightCal tokens. GENERATED by tokens/build.py from tokens/*.json. Do not edit. */
/* Runtime knobs (--nc-text-scale, --nc-density, --nc-motion-scale) are set by web/js/core/theme.js. */

:root {
  color-scheme: light;
  --nc-text-scale: 1;
  --nc-density: 1;
  --nc-motion-scale: 1;
  --nc-palette-neutral-0: #FFFFFF;
  --nc-palette-neutral-25: #FBFAF7;
  --nc-palette-neutral-50: #F6F4EE;
  --nc-palette-neutral-100: #ECE9E1;
  --nc-palette-neutral-200: #DAD5C9;
  --nc-palette-neutral-300: #BDB7A9;
  --nc-palette-neutral-400: #817B6D;
  --nc-palette-neutral-500: #6E695D;
  --nc-palette-neutral-600: #57534A;
  --nc-palette-neutral-700: #3E3B35;
  --nc-palette-neutral-800: #2A2825;
  --nc-palette-neutral-850: #222226;
  --nc-palette-neutral-900: #1A1A1E;
  --nc-palette-neutral-950: #121214;
  --nc-palette-neutral-1000: #0B0B0C;
  --nc-palette-amber-100: #FFF1D1;
  --nc-palette-amber-300: #FFD27A;
  --nc-palette-amber-400: #FFC14D;
  --nc-palette-amber-500: #F0A619;
  --nc-palette-amber-700: #8A4B00;
  --nc-palette-amber-800: #6B3A00;
  --nc-palette-blue-300: #A8C7FA;
  --nc-palette-blue-600: #0B57D0;
  --nc-palette-blue-700: #0842A0;
  --nc-palette-green-100: #DCF2E3;
  --nc-palette-green-300: #9FE5B8;
  --nc-palette-green-500: #3FB56C;
  --nc-palette-green-700: #1E7A43;
  --nc-palette-green-800: #0B5A2A;
  --nc-palette-green-900: #123321;
  --nc-palette-coral-100: #FDE3DE;
  --nc-palette-coral-300: #FFB4A6;
  --nc-palette-coral-500: #F26B55;
  --nc-palette-coral-700: #C2402B;
  --nc-palette-coral-800: #8A1F12;
  --nc-palette-coral-900: #3A1712;
  --nc-palette-azure-100: #DDE8FB;
  --nc-palette-azure-300: #A9C8FF;
  --nc-palette-azure-500: #6FA0F5;
  --nc-palette-azure-700: #2F67C8;
  --nc-palette-azure-800: #123E86;
  --nc-palette-azure-900: #132544;
  --nc-palette-violet-100: #ECE2FA;
  --nc-palette-violet-300: #D4BCFF;
  --nc-palette-violet-500: #B08CF0;
  --nc-palette-violet-700: #7A47BE;
  --nc-palette-violet-800: #4D2386;
  --nc-palette-violet-900: #2A1C40;
  --nc-palette-gold-100: #FFF0CC;
  --nc-palette-gold-300: #FFD98A;
  --nc-palette-gold-500: #D9A630;
  --nc-palette-gold-700: #946A00;
  --nc-palette-gold-800: #6B4A00;
  --nc-palette-gold-900: #33280F;
  --nc-palette-stone-100: #ECEAE4;
  --nc-palette-stone-300: #D5D1C8;
  --nc-palette-stone-500: #9C978C;
  --nc-palette-stone-700: #6F6A5E;
  --nc-palette-stone-800: #3F3B33;
  --nc-palette-stone-900: #28272B;
  --nc-font-family-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --nc-font-family-display: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --nc-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
  --nc-font-size-xs: 0.8125rem;
  --nc-font-size-sm: 0.875rem;
  --nc-font-size-md: 1rem;
  --nc-font-size-lg: 1.25rem;
  --nc-font-size-xl: 1.5rem;
  --nc-font-size-2xl: 2rem;
  --nc-font-size-3xl: 2.75rem;
  --nc-font-size-display: clamp(2.25rem, 1.5rem + 3.5vw, 4rem);
  --nc-font-weight-regular: 400;
  --nc-font-weight-medium: 500;
  --nc-font-weight-bold: 700;
  --nc-font-weight-heavy: 800;
  --nc-font-line-height-tight: 1.1;
  --nc-font-line-height-snug: 1.3;
  --nc-font-line-height-normal: 1.5;
  --nc-font-tracking-tight: -0.02em;
  --nc-font-tracking-normal: 0;
  --nc-font-tracking-caps: 0.06em;
  --nc-space-0: 0;
  --nc-space-1: calc(0.25rem * var(--nc-density));
  --nc-space-2: calc(0.5rem * var(--nc-density));
  --nc-space-3: calc(0.75rem * var(--nc-density));
  --nc-space-4: calc(1rem * var(--nc-density));
  --nc-space-5: calc(1.5rem * var(--nc-density));
  --nc-space-6: calc(2rem * var(--nc-density));
  --nc-space-7: calc(3rem * var(--nc-density));
  --nc-space-8: calc(4rem * var(--nc-density));
  --nc-radius-sm: 6px;
  --nc-radius-md: 10px;
  --nc-radius-lg: 16px;
  --nc-radius-pill: 999px;
  --nc-size-target: 2.75rem;
  --nc-size-focus-ring: 3px;
  --nc-size-focus-offset: 2px;
  --nc-size-border: 1px;
  --nc-size-border-strong: 2px;
  --nc-size-content-max: 72rem;
  --nc-size-measure: 65ch;
  --nc-size-gutter: 1rem;
  --nc-size-glyph: 0.75rem;
  --nc-size-dash: 6px;
  --nc-size-gap: 4px;
  --nc-duration-fast: calc(120ms * var(--nc-motion-scale));
  --nc-duration-base: calc(200ms * var(--nc-motion-scale));
  --nc-duration-slow: calc(320ms * var(--nc-motion-scale));
  --nc-easing-standard: cubic-bezier(0.2, 0, 0, 1);
  --nc-easing-exit: cubic-bezier(0.3, 0, 1, 1);
  --nc-density-compact: 0.8;
  --nc-density-comfortable: 1;
  --nc-density-spacious: 1.25;
  --nc-z-base: 0;
  --nc-z-raised: 10;
  --nc-z-overlay: 100;
  --nc-z-toast: 200;
  --nc-color-accent: var(--nc-palette-amber-400);
  --nc-color-accent-text: var(--nc-palette-amber-700);
  --nc-color-bg: var(--nc-palette-neutral-50);
  --nc-color-border: var(--nc-palette-neutral-200);
  --nc-color-border-strong: var(--nc-palette-neutral-500);
  --nc-color-focus: var(--nc-palette-blue-600);
  --nc-color-graph-edge: var(--nc-palette-neutral-400);
  --nc-color-graph-edge-active: var(--nc-palette-neutral-950);
  --nc-color-kind-comedy-bg: var(--nc-palette-coral-100);
  --nc-color-kind-comedy-fg: var(--nc-palette-coral-800);
  --nc-color-kind-comedy-mark: var(--nc-palette-coral-700);
  --nc-color-kind-food-bg: var(--nc-palette-gold-100);
  --nc-color-kind-food-fg: var(--nc-palette-gold-800);
  --nc-color-kind-food-mark: var(--nc-palette-gold-700);
  --nc-color-kind-music-bg: var(--nc-palette-green-100);
  --nc-color-kind-music-fg: var(--nc-palette-green-800);
  --nc-color-kind-music-mark: var(--nc-palette-green-700);
  --nc-color-kind-other-bg: var(--nc-palette-stone-100);
  --nc-color-kind-other-fg: var(--nc-palette-stone-800);
  --nc-color-kind-other-mark: var(--nc-palette-stone-700);
  --nc-color-kind-show-bg: var(--nc-palette-azure-100);
  --nc-color-kind-show-fg: var(--nc-palette-azure-800);
  --nc-color-kind-show-mark: var(--nc-palette-azure-700);
  --nc-color-kind-trivia-bg: var(--nc-palette-violet-100);
  --nc-color-kind-trivia-fg: var(--nc-palette-violet-800);
  --nc-color-kind-trivia-mark: var(--nc-palette-violet-700);
  --nc-color-link: var(--nc-palette-blue-700);
  --nc-color-node-article: var(--nc-palette-azure-700);
  --nc-color-node-editorial: var(--nc-palette-stone-700);
  --nc-color-node-entity: var(--nc-palette-neutral-600);
  --nc-color-node-event: var(--nc-palette-green-700);
  --nc-color-node-letter: var(--nc-palette-violet-700);
  --nc-color-node-missing: var(--nc-palette-neutral-400);
  --nc-color-node-review: var(--nc-palette-coral-700);
  --nc-color-node-venue: var(--nc-palette-gold-700);
  --nc-color-on-accent: var(--nc-palette-neutral-950);
  --nc-color-scrim: rgba(18, 18, 20, 0.55);
  --nc-color-selected-bg: var(--nc-palette-neutral-950);
  --nc-color-selected-text: var(--nc-palette-neutral-0);
  --nc-color-shadow: rgba(18, 18, 20, 0.12);
  --nc-color-surface: var(--nc-palette-neutral-0);
  --nc-color-surface-raised: var(--nc-palette-neutral-0);
  --nc-color-surface-sunken: var(--nc-palette-neutral-100);
  --nc-color-text: var(--nc-palette-neutral-950);
  --nc-color-text-muted: var(--nc-palette-neutral-600);
  --nc-color-today: var(--nc-palette-amber-700);
  --nc-shadow-overlay: 0 12px 40px rgba(18, 18, 20, 0.22);
  --nc-shadow-raised: 0 1px 2px rgba(18, 18, 20, 0.08), 0 2px 8px rgba(18, 18, 20, 0.06);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --nc-color-accent: var(--nc-palette-amber-400);
    --nc-color-accent-text: var(--nc-palette-amber-300);
    --nc-color-bg: var(--nc-palette-neutral-950);
    --nc-color-border: var(--nc-palette-neutral-800);
    --nc-color-border-strong: #85817A;
    --nc-color-focus: var(--nc-palette-blue-300);
    --nc-color-graph-edge: #6A665F;
    --nc-color-graph-edge-active: #F4F1EA;
    --nc-color-kind-comedy-bg: var(--nc-palette-coral-900);
    --nc-color-kind-comedy-fg: var(--nc-palette-coral-300);
    --nc-color-kind-comedy-mark: var(--nc-palette-coral-500);
    --nc-color-kind-food-bg: var(--nc-palette-gold-900);
    --nc-color-kind-food-fg: var(--nc-palette-gold-300);
    --nc-color-kind-food-mark: var(--nc-palette-gold-500);
    --nc-color-kind-music-bg: var(--nc-palette-green-900);
    --nc-color-kind-music-fg: var(--nc-palette-green-300);
    --nc-color-kind-music-mark: var(--nc-palette-green-500);
    --nc-color-kind-other-bg: var(--nc-palette-stone-900);
    --nc-color-kind-other-fg: var(--nc-palette-stone-300);
    --nc-color-kind-other-mark: var(--nc-palette-stone-500);
    --nc-color-kind-show-bg: var(--nc-palette-azure-900);
    --nc-color-kind-show-fg: var(--nc-palette-azure-300);
    --nc-color-kind-show-mark: var(--nc-palette-azure-500);
    --nc-color-kind-trivia-bg: var(--nc-palette-violet-900);
    --nc-color-kind-trivia-fg: var(--nc-palette-violet-300);
    --nc-color-kind-trivia-mark: var(--nc-palette-violet-500);
    --nc-color-link: var(--nc-palette-blue-300);
    --nc-color-node-article: var(--nc-palette-azure-500);
    --nc-color-node-editorial: var(--nc-palette-stone-500);
    --nc-color-node-entity: #A9A49A;
    --nc-color-node-event: var(--nc-palette-green-500);
    --nc-color-node-letter: var(--nc-palette-violet-500);
    --nc-color-node-missing: #77736C;
    --nc-color-node-review: var(--nc-palette-coral-500);
    --nc-color-node-venue: var(--nc-palette-gold-500);
    --nc-color-on-accent: var(--nc-palette-neutral-950);
    --nc-color-scrim: rgba(0, 0, 0, 0.7);
    --nc-color-selected-bg: var(--nc-palette-amber-400);
    --nc-color-selected-text: var(--nc-palette-neutral-950);
    --nc-color-shadow: rgba(0, 0, 0, 0.5);
    --nc-color-surface: var(--nc-palette-neutral-900);
    --nc-color-surface-raised: var(--nc-palette-neutral-850);
    --nc-color-surface-sunken: var(--nc-palette-neutral-1000);
    --nc-color-text: #F4F1EA;
    --nc-color-text-muted: #B8B3A8;
    --nc-color-today: var(--nc-palette-amber-400);
    --nc-shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.06);
    --nc-shadow-raised: 0 1px 2px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.04);
  }
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --nc-color-accent: var(--nc-palette-amber-400);
  --nc-color-accent-text: var(--nc-palette-amber-300);
  --nc-color-bg: var(--nc-palette-neutral-950);
  --nc-color-border: var(--nc-palette-neutral-800);
  --nc-color-border-strong: #85817A;
  --nc-color-focus: var(--nc-palette-blue-300);
  --nc-color-graph-edge: #6A665F;
  --nc-color-graph-edge-active: #F4F1EA;
  --nc-color-kind-comedy-bg: var(--nc-palette-coral-900);
  --nc-color-kind-comedy-fg: var(--nc-palette-coral-300);
  --nc-color-kind-comedy-mark: var(--nc-palette-coral-500);
  --nc-color-kind-food-bg: var(--nc-palette-gold-900);
  --nc-color-kind-food-fg: var(--nc-palette-gold-300);
  --nc-color-kind-food-mark: var(--nc-palette-gold-500);
  --nc-color-kind-music-bg: var(--nc-palette-green-900);
  --nc-color-kind-music-fg: var(--nc-palette-green-300);
  --nc-color-kind-music-mark: var(--nc-palette-green-500);
  --nc-color-kind-other-bg: var(--nc-palette-stone-900);
  --nc-color-kind-other-fg: var(--nc-palette-stone-300);
  --nc-color-kind-other-mark: var(--nc-palette-stone-500);
  --nc-color-kind-show-bg: var(--nc-palette-azure-900);
  --nc-color-kind-show-fg: var(--nc-palette-azure-300);
  --nc-color-kind-show-mark: var(--nc-palette-azure-500);
  --nc-color-kind-trivia-bg: var(--nc-palette-violet-900);
  --nc-color-kind-trivia-fg: var(--nc-palette-violet-300);
  --nc-color-kind-trivia-mark: var(--nc-palette-violet-500);
  --nc-color-link: var(--nc-palette-blue-300);
  --nc-color-node-article: var(--nc-palette-azure-500);
  --nc-color-node-editorial: var(--nc-palette-stone-500);
  --nc-color-node-entity: #A9A49A;
  --nc-color-node-event: var(--nc-palette-green-500);
  --nc-color-node-letter: var(--nc-palette-violet-500);
  --nc-color-node-missing: #77736C;
  --nc-color-node-review: var(--nc-palette-coral-500);
  --nc-color-node-venue: var(--nc-palette-gold-500);
  --nc-color-on-accent: var(--nc-palette-neutral-950);
  --nc-color-scrim: rgba(0, 0, 0, 0.7);
  --nc-color-selected-bg: var(--nc-palette-amber-400);
  --nc-color-selected-text: var(--nc-palette-neutral-950);
  --nc-color-shadow: rgba(0, 0, 0, 0.5);
  --nc-color-surface: var(--nc-palette-neutral-900);
  --nc-color-surface-raised: var(--nc-palette-neutral-850);
  --nc-color-surface-sunken: var(--nc-palette-neutral-1000);
  --nc-color-text: #F4F1EA;
  --nc-color-text-muted: #B8B3A8;
  --nc-color-today: var(--nc-palette-amber-400);
  --nc-shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.06);
  --nc-shadow-raised: 0 1px 2px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.04);
}

:root[data-theme="light"] {
  color-scheme: light;
  --nc-color-accent: var(--nc-palette-amber-400);
  --nc-color-accent-text: var(--nc-palette-amber-700);
  --nc-color-bg: var(--nc-palette-neutral-50);
  --nc-color-border: var(--nc-palette-neutral-200);
  --nc-color-border-strong: var(--nc-palette-neutral-500);
  --nc-color-focus: var(--nc-palette-blue-600);
  --nc-color-graph-edge: var(--nc-palette-neutral-400);
  --nc-color-graph-edge-active: var(--nc-palette-neutral-950);
  --nc-color-kind-comedy-bg: var(--nc-palette-coral-100);
  --nc-color-kind-comedy-fg: var(--nc-palette-coral-800);
  --nc-color-kind-comedy-mark: var(--nc-palette-coral-700);
  --nc-color-kind-food-bg: var(--nc-palette-gold-100);
  --nc-color-kind-food-fg: var(--nc-palette-gold-800);
  --nc-color-kind-food-mark: var(--nc-palette-gold-700);
  --nc-color-kind-music-bg: var(--nc-palette-green-100);
  --nc-color-kind-music-fg: var(--nc-palette-green-800);
  --nc-color-kind-music-mark: var(--nc-palette-green-700);
  --nc-color-kind-other-bg: var(--nc-palette-stone-100);
  --nc-color-kind-other-fg: var(--nc-palette-stone-800);
  --nc-color-kind-other-mark: var(--nc-palette-stone-700);
  --nc-color-kind-show-bg: var(--nc-palette-azure-100);
  --nc-color-kind-show-fg: var(--nc-palette-azure-800);
  --nc-color-kind-show-mark: var(--nc-palette-azure-700);
  --nc-color-kind-trivia-bg: var(--nc-palette-violet-100);
  --nc-color-kind-trivia-fg: var(--nc-palette-violet-800);
  --nc-color-kind-trivia-mark: var(--nc-palette-violet-700);
  --nc-color-link: var(--nc-palette-blue-700);
  --nc-color-node-article: var(--nc-palette-azure-700);
  --nc-color-node-editorial: var(--nc-palette-stone-700);
  --nc-color-node-entity: var(--nc-palette-neutral-600);
  --nc-color-node-event: var(--nc-palette-green-700);
  --nc-color-node-letter: var(--nc-palette-violet-700);
  --nc-color-node-missing: var(--nc-palette-neutral-400);
  --nc-color-node-review: var(--nc-palette-coral-700);
  --nc-color-node-venue: var(--nc-palette-gold-700);
  --nc-color-on-accent: var(--nc-palette-neutral-950);
  --nc-color-scrim: rgba(18, 18, 20, 0.55);
  --nc-color-selected-bg: var(--nc-palette-neutral-950);
  --nc-color-selected-text: var(--nc-palette-neutral-0);
  --nc-color-shadow: rgba(18, 18, 20, 0.12);
  --nc-color-surface: var(--nc-palette-neutral-0);
  --nc-color-surface-raised: var(--nc-palette-neutral-0);
  --nc-color-surface-sunken: var(--nc-palette-neutral-100);
  --nc-color-text: var(--nc-palette-neutral-950);
  --nc-color-text-muted: var(--nc-palette-neutral-600);
  --nc-color-today: var(--nc-palette-amber-700);
  --nc-shadow-overlay: 0 12px 40px rgba(18, 18, 20, 0.22);
  --nc-shadow-raised: 0 1px 2px rgba(18, 18, 20, 0.08), 0 2px 8px rgba(18, 18, 20, 0.06);
}

@media (prefers-reduced-motion: reduce) {
  :root:not([data-motion="full"]) { --nc-motion-scale: 0; }
}
:root[data-motion="reduce"] { --nc-motion-scale: 0; }
:root[data-density="compact"] { --nc-density: 0.8; }
:root[data-density="spacious"] { --nc-density: 1.25; }

/* NightCal base: reset, type, focus, layout primitives.
   Every value comes from a token in tokens.css. If you need a raw value here,
   add a token instead. */

*, *::before, *::after { box-sizing: border-box; }
html {
  font-size: calc(100% * var(--nc-text-scale));
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  margin: 0;
  min-height: 100vh;
  background: var(--nc-color-bg);
  color: var(--nc-color-text);
  font-family: var(--nc-font-family-sans);
  font-size: var(--nc-font-size-md);
  line-height: var(--nc-font-line-height-normal);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img, svg, video, canvas { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, h4, p, ul, ol, figure, dl, dd { margin: 0; }
ul[role="list"], ol[role="list"] { list-style: none; padding: 0; }
[hidden] { display: none !important; }

h1, h2, h3, h4 {
  font-family: var(--nc-font-family-display);
  line-height: var(--nc-font-line-height-tight);
  letter-spacing: var(--nc-font-tracking-tight);
  font-weight: var(--nc-font-weight-heavy);
  text-wrap: balance;
  overflow-wrap: anywhere;
  hyphens: auto;
}
p { text-wrap: pretty; max-width: var(--nc-size-measure); }

a { color: var(--nc-color-link); text-underline-offset: 0.18em; text-decoration-thickness: var(--nc-size-border); }
a:hover { text-decoration-thickness: var(--nc-size-border-strong); }

/* Focus: one visible ring everywhere, never removed. 2.4.7 / 2.4.13. */
:focus { outline: none; }
:focus-visible {
  outline: var(--nc-size-focus-ring) solid var(--nc-color-focus);
  outline-offset: var(--nc-size-focus-offset);
  border-radius: var(--nc-radius-sm);
}

.nc-skip {
  position: absolute;
  left: var(--nc-space-4);
  top: var(--nc-space-2);
  z-index: var(--nc-z-toast);
  padding: var(--nc-space-3) var(--nc-space-4);
  background: var(--nc-color-accent);
  color: var(--nc-color-on-accent);
  font-weight: var(--nc-font-weight-bold);
  border-radius: var(--nc-radius-md);
  transform: translateY(-200%);
}
.nc-skip:focus-visible { transform: none; }

.nc-sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}

/* Layout primitives */
.nc-container {
  width: min(var(--nc-size-content-max), 100% - 2 * var(--nc-size-gutter));
  margin-inline: auto;
}
.nc-stack { display: flex; flex-direction: column; gap: var(--nc-stack-gap, var(--nc-space-4)); }
.nc-stack > *, .nc-page > *, .nc-gallery section > * { min-width: 0; max-width: 100%; }
.nc-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--nc-cluster-gap, var(--nc-space-3)); }
.nc-section { padding-block: var(--nc-space-6); }
.nc-section + .nc-section { border-top: var(--nc-size-border) solid var(--nc-color-border); }

.nc-eyebrow {
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-bold);
  letter-spacing: var(--nc-font-tracking-caps);
  text-transform: uppercase;
  color: var(--nc-color-text-muted);
}
.nc-muted { color: var(--nc-color-text-muted); }
.nc-h1 { font-size: var(--nc-font-size-display); }
.nc-h2 { font-size: var(--nc-font-size-2xl); }
.nc-h3 { font-size: var(--nc-font-size-xl); }
.nc-lede { font-size: var(--nc-font-size-lg); color: var(--nc-color-text-muted); }

/* Form controls shared by components */
.nc-select {
  min-height: var(--nc-size-target);
  padding: 0 calc(var(--nc-space-6) + var(--nc-space-2)) 0 var(--nc-space-3);
  border: var(--nc-size-border) solid var(--nc-color-border-strong);
  border-radius: var(--nc-radius-md);
  background-color: var(--nc-color-surface);
  color: var(--nc-color-text);
  font-size: var(--nc-font-size-md);
  appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position: calc(100% - 1.15rem) 55%, calc(100% - 0.8rem) 55%;
  background-size: 0.35rem 0.35rem;
  background-repeat: no-repeat;
}
.nc-label { display: block; font-size: var(--nc-font-size-sm); font-weight: var(--nc-font-weight-bold); margin-bottom: var(--nc-space-1); }

/* Segmented control built from native radios. */
.nc-segmented { margin: 0; padding: 0; border: 0; min-width: 0; max-width: 100%; }
.nc-segmented__options {
  display: inline-flex;
  flex-wrap: wrap;
  max-width: 100%;
  padding: var(--nc-space-1);
  gap: var(--nc-space-1);
  border: var(--nc-size-border) solid var(--nc-color-border-strong);
  border-radius: var(--nc-radius-md);
  background: var(--nc-color-surface);
}
.nc-segmented__option { position: relative; display: inline-flex; }
.nc-segmented__option input {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0;
  cursor: pointer;
}
.nc-segmented__option span {
  display: inline-flex;
  align-items: center;
  min-height: var(--nc-size-target);
  min-width: var(--nc-size-target);
  padding: 0 var(--nc-space-3);
  border-radius: var(--nc-radius-sm);
  font-weight: var(--nc-font-weight-bold);
  white-space: nowrap;
}
.nc-segmented__option input:checked + span { background: var(--nc-color-selected-bg); color: var(--nc-color-selected-text); }
.nc-segmented__option input:focus-visible + span { outline: var(--nc-size-focus-ring) solid var(--nc-color-focus); outline-offset: var(--nc-size-focus-offset); }
.nc-segmented__option:hover input:not(:checked) + span { background: var(--nc-color-surface-sunken); }

/* Embed routes: no page chrome, transparent edges, sized by content. */
body.nc-embed { min-height: 0; background: var(--nc-color-bg); }
body.nc-embed .nc-embed-root { padding: var(--nc-space-3); }

/* Lazy sections reserve space so content-visibility does not shift layout. */
.nc-lazy { content-visibility: auto; contain-intrinsic-size: auto 40rem; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; }
}

/* Modal dialog (native <dialog>: focus trap, Esc, focus return come free). */
.nc-dialog {
  width: min(44rem, calc(100vw - 2 * var(--nc-size-gutter)));
  max-height: calc(100dvh - 2 * var(--nc-size-gutter));
  padding: 0;
  border: 0;
  border-radius: var(--nc-radius-lg);
  background: var(--nc-color-surface-raised);
  color: var(--nc-color-text);
  box-shadow: var(--nc-shadow-overlay);
  container-type: inline-size;
}
.nc-dialog::backdrop { background: var(--nc-color-scrim); }
.nc-dialog__inner { display: grid; gap: var(--nc-space-2); padding: var(--nc-space-2); }
.nc-dialog__close { justify-self: end; }
.nc-dialog .nc-event-card { box-shadow: none; border: 0; background: transparent; }
.nc-dialog[open] { animation: nc-rise var(--nc-duration-base) var(--nc-easing-standard); }
@keyframes nc-rise { from { opacity: 0; transform: translateY(var(--nc-space-4)); } to { opacity: 1; transform: none; } }

.nc-embed-root { container-type: inline-size; }

/* A link that stands alone (not inside a sentence) is a 44px target. */
.nc-link { display: inline-flex; align-items: center; min-height: var(--nc-size-target); min-width: var(--nc-size-target); }

/* Page layouts. Arrangement only (grids, gaps, order); every value is a token. */

.nc-page { display: grid; gap: var(--nc-space-6); padding-block: var(--nc-space-5) 0; container-type: inline-size; }
.nc-page:focus { outline: none; }
.nc-shell { gap: var(--nc-space-3); padding-block: var(--nc-space-6); }

/* Calendar */
.nc-cal { container-type: inline-size; }
.nc-cal__controls { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: var(--nc-space-4); }
.nc-cal__agenda { scroll-margin-top: var(--nc-space-4); }
.nc-cal__month { padding-top: var(--nc-space-6); border-top: var(--nc-size-border) solid var(--nc-color-border); }

/* Zine */
.nc-zine { container-type: inline-size; display: grid; gap: var(--nc-space-6); }
.nc-zine__intro { display: grid; gap: var(--nc-space-3); }
.nc-zine__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--nc-space-4); }
.nc-zine__filters { display: flex; flex-wrap: wrap; gap: var(--nc-space-2); align-items: center; padding-block: var(--nc-space-2); }
.nc-filter-chip { display: inline-flex; align-items: center; gap: var(--nc-space-2); padding: var(--nc-space-2) var(--nc-space-3); border: var(--nc-size-border) solid var(--nc-color-border); border-radius: var(--nc-radius-full); background: var(--nc-color-surface); color: var(--nc-color-text); font-size: var(--nc-font-size-sm); cursor: pointer; transition: background 140ms ease, border-color 140ms ease, color 140ms ease; }
.nc-filter-chip:hover { border-color: var(--nc-color-accent); color: var(--nc-color-accent); }
.nc-filter-chip.is-active { background: var(--nc-color-accent); color: var(--nc-color-accent-contrast, #121214); border-color: var(--nc-color-accent); font-weight: var(--nc-font-weight-bold); }
.nc-zine__grid { display: grid; gap: var(--nc-space-4); margin: 0; padding: 0; grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr)); }
.nc-zine__grid-section { display: grid; gap: var(--nc-space-4); }
.nc-zine__grid-heading { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: var(--nc-space-2); }
.nc-zine__grid-heading h2 { font-size: var(--nc-font-size-2xl); margin: 0; }
.nc-zine__active-reader-wrapper { display: grid; gap: var(--nc-space-4); padding: var(--nc-space-5); border: 2px solid var(--nc-color-accent); border-radius: var(--nc-radius-lg); background: var(--nc-color-surface); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); }
.nc-zine__reader-nav { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--nc-space-3); padding-bottom: var(--nc-space-3); border-bottom: 1px solid var(--nc-color-border); }
.nc-zine__layout { display: grid; gap: var(--nc-space-6); align-items: start; }
.nc-zine__reader { scroll-margin-top: var(--nc-space-4); }
.nc-zine__reader:empty { display: none; }
.nc-zine__legend { display: flex; flex-wrap: wrap; gap: var(--nc-space-2) var(--nc-space-4); margin: 0; padding: 0; }
.nc-zine__list { display: grid; gap: var(--nc-space-6); }
.nc-zine__group { display: grid; gap: var(--nc-space-3); }
.nc-zine__group h2 { font-size: var(--nc-font-size-xl); }
.nc-zine__cards { display: grid; gap: var(--nc-space-3); margin: 0; padding: 0; grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr)); }
.nc-zine__read-layout { display: grid; gap: var(--nc-space-6); align-items: start; }
@container (min-width: 64rem) {
  .nc-zine__layout { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); }
  .nc-zine__read-layout { grid-template-columns: minmax(0, 3fr) minmax(0, 1.2fr); }
  .nc-zine__reader { position: sticky; top: var(--nc-space-4); max-height: calc(100vh - 2 * var(--nc-space-4)); overflow: auto; padding-inline-end: var(--nc-space-2); }
}

/* Design system gallery */
.nc-gallery { display: grid; gap: var(--nc-space-7); }
.nc-gallery section { display: grid; gap: var(--nc-space-4); }
.nc-gallery__nav ul { display: flex; flex-wrap: wrap; gap: var(--nc-space-1) var(--nc-space-4); margin: 0; padding: 0; }
.nc-gallery__nav a { display: inline-flex; align-items: center; justify-content: center; min-height: var(--nc-size-target); min-width: var(--nc-size-target); }
.nc-swatches { display: grid; gap: var(--nc-space-2); margin: 0; padding: 0; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); }
.nc-swatch { display: grid; grid-template-columns: var(--nc-size-target) 1fr; gap: var(--nc-space-3); align-items: center; padding: var(--nc-space-2); border: var(--nc-size-border) solid var(--nc-color-border); border-radius: var(--nc-radius-md); background: var(--nc-color-surface); }
.nc-swatch__chip { width: var(--nc-size-target); height: var(--nc-size-target); border-radius: var(--nc-radius-sm); border: var(--nc-size-border) solid var(--nc-color-border-strong); }
.nc-swatch code, .nc-code { font-family: var(--nc-font-family-mono); font-size: var(--nc-font-size-sm); overflow-wrap: anywhere; }
.nc-swatch small { display: block; color: var(--nc-color-text-muted); font-size: var(--nc-font-size-xs); }
.nc-type-row { overflow-wrap: anywhere; min-width: 0; display: grid; gap: var(--nc-space-1); padding-block: var(--nc-space-3); border-bottom: var(--nc-size-border) solid var(--nc-color-border); }
.nc-space-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--nc-space-3); }
.nc-space-row__bar { height: var(--nc-space-3); background: var(--nc-color-accent); border-radius: var(--nc-radius-sm); }
.nc-comp { display: grid; gap: var(--nc-space-3); padding: var(--nc-space-4); border: var(--nc-size-border) solid var(--nc-color-border); border-radius: var(--nc-radius-lg); background: var(--nc-color-surface); }
.nc-comp__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--nc-space-2); }
.nc-comp__head h3 { font-size: var(--nc-font-size-xl); }
.nc-comp iframe { width: 100%; border: var(--nc-size-border) dashed var(--nc-color-border-strong); border-radius: var(--nc-radius-md); background: var(--nc-color-bg); }
.nc-pre {
  margin: 0;
  padding: var(--nc-space-3);
  overflow: auto;
  border-radius: var(--nc-radius-md);
  background: var(--nc-color-surface-sunken);
  font-family: var(--nc-font-family-mono);
  font-size: var(--nc-font-size-sm);
  line-height: var(--nc-font-line-height-normal);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.nc-textarea {
  width: 100%;
  min-height: 14rem;
  padding: var(--nc-space-3);
  border: var(--nc-size-border) solid var(--nc-color-border-strong);
  border-radius: var(--nc-radius-md);
  background: var(--nc-color-surface);
  font-family: var(--nc-font-family-mono);
  font-size: var(--nc-font-size-sm);
}
.nc-params { display: grid; grid-template-columns: max-content 1fr; gap: var(--nc-space-1) var(--nc-space-3); margin: 0; font-size: var(--nc-font-size-sm); }
.nc-params dt { font-family: var(--nc-font-family-mono); font-weight: var(--nc-font-weight-bold); }
.nc-params dd { margin: 0; color: var(--nc-color-text-muted); }

/* Landing options */
.nc-landing { display: grid; gap: var(--nc-space-7); }
.nc-landing__hero { display: grid; gap: var(--nc-space-4); padding-block: var(--nc-space-6) 0; }
.nc-landing__hero .nc-h1 { max-width: 18ch; }
.nc-landing__doors { display: grid; gap: var(--nc-space-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); }
.nc-door { display: grid; gap: var(--nc-space-3); align-content: start; padding: var(--nc-space-5); border: var(--nc-size-border) solid var(--nc-color-border); border-radius: var(--nc-radius-lg); background: var(--nc-color-surface); }
.nc-door h2 { font-size: var(--nc-font-size-2xl); }
.nc-steps { display: grid; gap: var(--nc-space-5); margin: 0; padding: 0; counter-reset: step; }
.nc-step { display: grid; grid-template-columns: var(--nc-size-target) 1fr; gap: var(--nc-space-4); counter-increment: step; }
.nc-step::before {
  content: counter(step);
  display: grid;
  place-items: center;
  width: var(--nc-size-target);
  height: var(--nc-size-target);
  border-radius: var(--nc-radius-pill);
  background: var(--nc-color-accent);
  color: var(--nc-color-on-accent);
  font-weight: var(--nc-font-weight-heavy);
  font-size: var(--nc-font-size-lg);
}
.nc-step > div { display: grid; gap: var(--nc-space-3); min-width: 0; }
.nc-step h2 { font-size: var(--nc-font-size-xl); }
.nc-options { display: grid; gap: var(--nc-space-4); margin: 0; padding: 0; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); }

/* 3D / AR page */
.nc-ar { display: grid; gap: var(--nc-space-4); }
.nc-ar__stage { position: relative; min-height: clamp(22rem, 70vh, 48rem); border: var(--nc-size-border) solid var(--nc-color-border); border-radius: var(--nc-radius-lg); overflow: hidden; background: var(--nc-color-surface-sunken); }
.nc-ar__stage canvas { width: 100% !important; height: 100% !important; position: absolute; inset: 0; touch-action: none; }
.nc-ar__bar { display: flex; flex-wrap: wrap; gap: var(--nc-space-3); align-items: end; justify-content: space-between; }
.nc-ar__panel { position: absolute; inset-inline: var(--nc-space-3); inset-block-end: var(--nc-space-3); max-width: 30rem; max-height: 60%; overflow: auto; }
.nc-ar__panel:empty { display: none; }
.nc-cal__agenda { display: grid; gap: var(--nc-space-7); }
.nc-cal__next .nc-day-agenda__title { font-size: var(--nc-font-size-3xl); }
.nc-swatch > span { min-width: 0; }
.nc-comp > *, .nc-gallery > * { min-width: 0; }

/* --- components/kind-tag --- */
.nc-glyph { width: var(--nc-size-glyph); height: var(--nc-size-glyph); flex: none; }

.nc-kind-tag {
  --tone-bg: var(--nc-color-kind-other-bg);
  --tone-fg: var(--nc-color-kind-other-fg);
  --tone-mark: var(--nc-color-kind-other-mark);
  display: inline-flex;
  align-items: center;
  gap: var(--nc-space-2);
  padding: var(--nc-space-1) var(--nc-space-3);
  border-radius: var(--nc-radius-pill);
  background: var(--tone-bg);
  color: var(--tone-fg);
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-bold);
  line-height: var(--nc-font-line-height-snug);
  white-space: nowrap;
}
.nc-kind-tag .nc-glyph { color: var(--tone-fg); }
.nc-kind-tag--compact { padding: 0 var(--nc-space-2); font-size: var(--nc-font-size-xs); }

.nc-kind-glyph { color: var(--tone-mark); }

[data-tone="music"] { --tone-bg: var(--nc-color-kind-music-bg); --tone-fg: var(--nc-color-kind-music-fg); --tone-mark: var(--nc-color-kind-music-mark); }
[data-tone="comedy"] { --tone-bg: var(--nc-color-kind-comedy-bg); --tone-fg: var(--nc-color-kind-comedy-fg); --tone-mark: var(--nc-color-kind-comedy-mark); }
[data-tone="show"] { --tone-bg: var(--nc-color-kind-show-bg); --tone-fg: var(--nc-color-kind-show-fg); --tone-mark: var(--nc-color-kind-show-mark); }
[data-tone="trivia"] { --tone-bg: var(--nc-color-kind-trivia-bg); --tone-fg: var(--nc-color-kind-trivia-fg); --tone-mark: var(--nc-color-kind-trivia-mark); }
[data-tone="food"] { --tone-bg: var(--nc-color-kind-food-bg); --tone-fg: var(--nc-color-kind-food-fg); --tone-mark: var(--nc-color-kind-food-mark); }
[data-tone="other"] { --tone-bg: var(--nc-color-kind-other-bg); --tone-fg: var(--nc-color-kind-other-fg); --tone-mark: var(--nc-color-kind-other-mark); }

/* --- components/button --- */
.nc-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--nc-space-2);
  min-height: var(--nc-size-target);
  min-width: var(--nc-size-target);
  padding: 0 var(--nc-space-4);
  border: var(--nc-size-border) solid var(--nc-color-border-strong);
  border-radius: var(--nc-radius-md);
  background: var(--nc-color-surface);
  color: var(--nc-color-text);
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--nc-duration-fast) var(--nc-easing-standard), border-color var(--nc-duration-fast) var(--nc-easing-standard);
  -webkit-tap-highlight-color: transparent;
}
.nc-button:hover { border-color: var(--nc-color-text); text-decoration: none; }
.nc-button:active { background: var(--nc-color-surface-sunken); }
.nc-button svg { width: 1.1em; height: 1.1em; flex: none; }

.nc-button--primary {
  background: var(--nc-color-accent);
  border-color: var(--nc-color-accent);
  color: var(--nc-color-on-accent);
}
.nc-button--primary:hover { border-color: var(--nc-color-on-accent); }
.nc-button--primary:active { background: var(--nc-color-accent); filter: brightness(0.95); }

.nc-button--ghost { background: transparent; border-color: transparent; }
.nc-button--ghost:hover { border-color: var(--nc-color-border-strong); }

.nc-button--icon { padding: 0; }
.nc-button[aria-pressed="true"], .nc-button[aria-current="page"] {
  background: var(--nc-color-selected-bg);
  border-color: var(--nc-color-selected-bg);
  color: var(--nc-color-selected-text);
}

/* --- components/account-settings --- */
/* Account Settings & Lifecycle Component (Task 4.5) */
.nc-account-settings {
  display: grid;
  gap: var(--nc-space-5);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
  box-sizing: border-box;
}

.nc-account-settings__header {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-account-settings__eyebrow {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
  margin: var(--nc-space-0);
}

.nc-account-settings__title {
  font-size: var(--nc-font-size-xl);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
}

.nc-account-settings__subtitle {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: var(--nc-space-0);
  line-height: 1.5;
}

.nc-account-card {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface-raised, var(--nc-color-surface));
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  box-sizing: border-box;
}

.nc-account-card--danger {
  border-color: var(--nc-color-kind-comedy-mark);
  background: var(--nc-color-kind-comedy-bg);
}

.nc-account-card__title {
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
}

.nc-account-card--danger .nc-account-card__title {
  color: var(--nc-color-kind-comedy-fg);
}

.nc-account-card__desc {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: var(--nc-space-0);
  line-height: 1.5;
}

.nc-account-card--danger .nc-account-card__desc {
  color: var(--nc-color-kind-comedy-fg);
}

.nc-account-profile-grid {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: var(--nc-space-2) var(--nc-space-4);
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-sm);
}

.nc-account-profile-grid dt {
  font-weight: var(--nc-font-weight-medium);
  color: var(--nc-color-text-muted);
}

.nc-account-profile-grid dd {
  margin: var(--nc-space-0);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
}

.nc-account-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-3);
  align-items: center;
}

.nc-account-actions button,
.nc-account-actions .nc-button {
  min-height: var(--nc-size-target);
  box-sizing: border-box;
}

.nc-account-feedback {
  font-size: var(--nc-font-size-sm);
  min-height: var(--nc-space-4);
  display: flex;
  align-items: center;
}

.nc-account-feedback--success {
  color: var(--nc-color-kind-music-fg);
}

.nc-account-feedback--error {
  color: var(--nc-color-kind-comedy-fg);
}

/* Accessible Modal */
.nc-account-modal {
  position: fixed;
  inset: var(--nc-space-0);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--nc-space-4);
  box-sizing: border-box;
}

.nc-account-modal[hidden] {
  display: none;
}

.nc-account-modal__backdrop {
  position: absolute;
  inset: var(--nc-space-0);
  background: var(--nc-color-scrim);
}

.nc-account-modal__content {
  position: relative;
  z-index: 1;
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-kind-comedy-mark);
  border-radius: var(--nc-radius-md);
  padding: var(--nc-space-5);
  max-width: var(--nc-size-measure);
  width: 100%;
  display: grid;
  gap: var(--nc-space-4);
  box-shadow: var(--nc-shadow-overlay);
  box-sizing: border-box;
}

.nc-account-modal__title {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-kind-comedy-fg);
}

.nc-account-modal__desc {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  line-height: 1.5;
}

.nc-account-field {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-account-field--checkbox {
  display: flex;
  align-items: center;
  gap: var(--nc-space-2);
}

.nc-account-label {
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-medium);
  color: var(--nc-color-text);
}

.nc-account-input {
  min-height: var(--nc-size-target);
  padding: var(--nc-space-2) var(--nc-space-3);
  font-size: var(--nc-font-size-base);
  background: var(--nc-color-bg);
  color: var(--nc-color-text);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  box-sizing: border-box;
}

.nc-account-input:focus {
  outline: var(--nc-focus-ring-width) solid var(--nc-color-focus);
  outline-offset: var(--nc-focus-ring-offset);
}

.nc-account-checkbox {
  width: var(--nc-space-4);
  height: var(--nc-space-4);
  min-height: var(--nc-space-4);
  margin: var(--nc-space-0);
  accent-color: var(--nc-color-accent);
}

.nc-account-checkbox-label {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
  cursor: pointer;
  line-height: 1.5;
}

.nc-account-modal__actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--nc-space-3);
  margin-top: var(--nc-space-2);
}

.nc-account-modal__actions button {
  min-height: var(--nc-size-target);
  box-sizing: border-box;
}

/* Deleted State Banner */
.nc-account-deleted-state {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-5);
  background: var(--nc-color-kind-music-bg);
  border: var(--nc-size-border) solid var(--nc-color-kind-music-mark);
  border-radius: var(--nc-radius-md);
  text-align: center;
}

.nc-account-deleted-state__title {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-kind-music-fg);
}

.nc-account-deleted-state__desc {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-kind-music-fg);
}

/* --- components/article-intake --- */
.nc-intake {
  display: grid;
  gap: var(--nc-space-4);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
  padding: var(--nc-space-3);
}

.nc-intake__header {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-intake__title {
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-intake__subtitle {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: 0;
}

.nc-intake__notice {
  padding: var(--nc-space-3);
  border-radius: var(--nc-radius-sm);
  border-left: calc(var(--nc-size-border) * 4) solid var(--nc-color-accent);
  background: var(--nc-color-surface);
}

.nc-intake__notice[data-kind="error"] {
  border-left-color: var(--nc-color-kind-comedy-mark);
  background: var(--nc-color-kind-comedy-bg);
  color: var(--nc-color-kind-comedy-fg);
}

.nc-intake__notice[data-kind="success"] {
  border-left-color: var(--nc-color-kind-music-mark);
  background: var(--nc-color-kind-music-bg);
  color: var(--nc-color-kind-music-fg);
}

.nc-intake__notice-text {
  margin: 0;
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-medium);
}

.nc-intake__form {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
}

.nc-intake__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--nc-space-3);
}

@media (max-width: 40rem) {
  .nc-intake__row {
    grid-template-columns: 1fr;
  }
}

.nc-intake__field {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-intake__field .nc-label {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.nc-intake__field .nc-input,
.nc-intake__field .nc-select,
.nc-intake__field .nc-textarea {
  width: 100%;
  min-height: var(--nc-size-target);
  padding: var(--nc-space-2) var(--nc-space-3);
  font-family: inherit;
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
  background: var(--nc-color-surface-sunken);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  box-sizing: border-box;
}

.nc-intake__field .nc-textarea {
  min-height: calc(var(--nc-size-target) * 2.5);
  resize: vertical;
}

.nc-intake__field .nc-input:focus-visible,
.nc-intake__field .nc-select:focus-visible,
.nc-intake__field .nc-textarea:focus-visible {
  outline: var(--nc-size-focus-ring) solid var(--nc-color-focus);
  outline-offset: var(--nc-size-focus-offset);
}

.nc-intake__actions {
  display: flex;
  justify-content: flex-end;
  margin-top: var(--nc-space-2);
}

.nc-intake__queue {
  display: grid;
  gap: var(--nc-space-3);
  margin-top: var(--nc-space-3);
}

.nc-intake__queue-title {
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-intake__empty {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  font-style: italic;
  margin: 0;
}

.nc-intake__list {
  display: grid;
  gap: var(--nc-space-3);
}

.nc-intake__item {
  display: grid;
  gap: var(--nc-space-2);
  padding: var(--nc-space-3);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
}

.nc-intake__item-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--nc-space-2);
}

.nc-intake__item-title {
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-bold);
  margin: 0;
}

.nc-intake__badge {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  padding: var(--nc-space-1) var(--nc-space-2);
  border-radius: var(--nc-radius-pill);
  text-transform: uppercase;
}

.nc-intake__badge--pending {
  background: var(--nc-color-kind-show-bg);
  color: var(--nc-color-kind-show-fg);
}

.nc-intake__badge--instantiated {
  background: var(--nc-color-kind-music-bg);
  color: var(--nc-color-kind-music-fg);
}

.nc-intake__badge--rejected {
  background: var(--nc-color-kind-comedy-bg);
  color: var(--nc-color-kind-comedy-fg);
}

.nc-intake__item-meta {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  margin: 0;
}

.nc-intake__item-excerpt {
  font-size: var(--nc-font-size-sm);
  margin: 0;
}

.nc-intake__rejection-reason {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-kind-comedy-fg);
  background: var(--nc-color-kind-comedy-bg);
  padding: var(--nc-space-2);
  border-radius: var(--nc-radius-sm);
  margin: 0;
}

.nc-intake__node-link {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-link);
  margin: 0;
}

.nc-intake__item-actions {
  display: flex;
  gap: var(--nc-space-2);
  justify-content: flex-end;
  margin-top: var(--nc-space-1);
}

/* --- components/auth-dialog --- */
/* Auth Dialog Component (Task 4.1) */
.nc-auth-card {
  display: grid;
  gap: var(--nc-space-4);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
}

.nc-auth-card__header {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-auth-card__eyebrow {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.nc-auth-card__title {
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-auth-card__subtitle {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: 0;
}

.nc-auth-card__tabs {
  display: flex;
  gap: var(--nc-space-2);
  border-bottom: var(--nc-size-border) solid var(--nc-color-border);
  padding-bottom: var(--nc-space-2);
}

.nc-auth-card__tab {
  font-family: inherit;
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text-muted);
  background: transparent;
  border: none;
  cursor: pointer;
  padding: var(--nc-space-2) var(--nc-space-3);
  border-radius: var(--nc-radius-sm);
  min-height: var(--nc-size-target);
  display: inline-flex;
  align-items: center;
}

.nc-auth-card__tab:hover {
  color: var(--nc-color-text);
  background: var(--nc-color-surface-sunken);
}

.nc-auth-card__tab--active {
  color: var(--nc-color-accent-text);
  background: var(--nc-color-surface-sunken);
  border-bottom: var(--nc-size-border-strong) solid var(--nc-color-accent);
}

.nc-auth-card__form {
  display: grid;
  gap: var(--nc-space-3);
}

.nc-auth-card__field {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-auth-card__label {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.nc-auth-card__input {
  font-family: inherit;
  font-size: var(--nc-font-size-md);
  padding: var(--nc-space-2) var(--nc-space-3);
  color: var(--nc-color-text);
  background: var(--nc-color-surface-sunken);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  min-height: var(--nc-size-target);
}

.nc-auth-card__input:focus-visible {
  outline: var(--nc-size-border-strong) solid var(--nc-color-focus);
  outline-offset: var(--nc-size-focus-offset);
}


.nc-auth-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-2);
  margin-top: var(--nc-space-2);
}

.nc-auth-card__banner {
  padding: var(--nc-space-3);
  border-radius: var(--nc-radius-sm);
  font-size: var(--nc-font-size-xs);
  line-height: var(--nc-line-height-base);
  border: var(--nc-size-border) solid var(--nc-color-border);
  background: var(--nc-color-surface-sunken);
  color: var(--nc-color-text-muted);
}

.nc-auth-card__banner--error {
  border-color: var(--nc-color-accent);
  color: var(--nc-color-accent-text);
}

.nc-auth-card__session {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-3);
  background: var(--nc-color-surface-sunken);
  border-radius: var(--nc-radius-sm);
  border: var(--nc-size-border) solid var(--nc-color-border);
}

.nc-auth-card__badge {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
}

.nc-auth-card__user {
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-auth-card__meta {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  margin: 0;
}

/* --- components/calendar-month --- */
.nc-month { display: grid; gap: var(--nc-space-3); container-type: inline-size; }
.nc-month__nav { display: flex; align-items: center; justify-content: space-between; gap: var(--nc-space-2); }
.nc-month__title { font-size: var(--nc-font-size-xl); text-align: center; }
.nc-month__grid { width: 100%; border-collapse: separate; border-spacing: var(--nc-space-1); table-layout: fixed; }
.nc-month__grid th {
  padding-bottom: var(--nc-space-1);
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  letter-spacing: var(--nc-font-tracking-caps);
  text-transform: uppercase;
  color: var(--nc-color-text-muted);
}
.nc-month__grid td { padding: 0; vertical-align: top; }
.nc-month__day {
  position: relative;
  display: grid;
  align-content: start;
  justify-items: center;
  gap: var(--nc-space-1);
  width: 100%;
  min-height: 3.5rem;
  padding: var(--nc-space-2) var(--nc-space-1);
  border: var(--nc-size-border) solid transparent;
  border-radius: var(--nc-radius-sm);
  background: var(--nc-color-surface-sunken);
  color: var(--nc-color-text);
  cursor: pointer;
  text-align: center;
}
.nc-month__day:hover { border-color: var(--nc-color-border-strong); }
.nc-month__num { font-weight: var(--nc-font-weight-bold); font-variant-numeric: tabular-nums; line-height: 1; }
.nc-month__count {
  min-width: 1.5rem;
  padding: 0 var(--nc-space-1);
  border-radius: var(--nc-radius-pill);
  background: var(--nc-color-text);
  color: var(--nc-color-surface-sunken);
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  line-height: 1.5;
}
.nc-month__titles { display: none; }
.nc-month__day[aria-current="date"] { border-color: var(--nc-color-today); border-width: var(--nc-size-border-strong); }
.nc-month__day[aria-pressed="true"] { background: var(--nc-color-selected-bg); color: var(--nc-color-selected-text); }
.nc-month__day[aria-pressed="true"] .nc-month__count { background: var(--nc-color-selected-text); color: var(--nc-color-selected-bg); }

@container (min-width: 52rem) {
  .nc-month__day { min-height: 7rem; justify-items: start; text-align: start; padding: var(--nc-space-2); }
  .nc-month__count { position: absolute; top: var(--nc-space-2); right: var(--nc-space-2); }
  .nc-month__titles { display: grid; gap: var(--nc-space-1); margin: var(--nc-space-1) 0 0; padding: 0; width: 100%; font-size: var(--nc-font-size-xs); line-height: var(--nc-font-line-height-snug); }
  .nc-month__titles li { display: grid; grid-template-columns: auto 1fr; gap: var(--nc-space-1); align-items: start; }
  .nc-month__titles .nc-glyph { width: 0.6rem; height: 0.6rem; margin-top: 0.25em; }
  .nc-month__titles span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .nc-month__day[aria-pressed="true"] .nc-kind-glyph { color: currentColor; }
  .nc-month__more { font-weight: var(--nc-font-weight-bold); }
}

/* --- components/calendar-week --- */
.nc-week { display: grid; gap: var(--nc-space-3); container-type: inline-size; }
.nc-week__nav { display: flex; align-items: center; justify-content: space-between; gap: var(--nc-space-2); }
.nc-week__label { font-weight: var(--nc-font-weight-bold); font-size: var(--nc-font-size-md); text-align: center; }
.nc-week__days {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: var(--nc-space-1);
  margin: 0;
  padding: 0;
}
.nc-week__day {
  display: grid;
  justify-items: center;
  align-content: start;
  gap: var(--nc-space-1);
  width: 100%;
  min-height: calc(var(--nc-size-target) * 2);
  padding: var(--nc-space-2) var(--nc-space-1);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  background: var(--nc-color-surface);
  color: var(--nc-color-text);
  cursor: pointer;
  text-align: center;
}
.nc-week__day:hover { border-color: var(--nc-color-border-strong); }
.nc-week__weekday { font-size: var(--nc-font-size-xs); font-weight: var(--nc-font-weight-bold); text-transform: uppercase; letter-spacing: var(--nc-font-tracking-caps); color: var(--nc-color-text-muted); }
.nc-week__num { font-size: var(--nc-font-size-xl); font-weight: var(--nc-font-weight-heavy); line-height: 1; font-variant-numeric: tabular-nums; }
.nc-week__count { font-size: var(--nc-font-size-sm); font-weight: var(--nc-font-weight-bold); color: var(--nc-color-text-muted); }
.nc-week__titles { display: none; }

.nc-week__day[aria-current="date"] .nc-week__num { text-decoration: underline; text-decoration-color: var(--nc-color-today); text-decoration-thickness: var(--nc-size-focus-ring); text-underline-offset: 0.2em; }
.nc-week__day[aria-pressed="true"] {
  background: var(--nc-color-selected-bg);
  border-color: var(--nc-color-selected-bg);
  color: var(--nc-color-selected-text);
}
.nc-week__day[aria-pressed="true"] .nc-week__weekday,
.nc-week__day[aria-pressed="true"] .nc-week__count,
.nc-week__day[aria-pressed="true"] .nc-week__more { color: inherit; }
.nc-week__day[aria-pressed="true"][aria-current="date"] .nc-week__num { text-decoration-color: currentColor; }

@container (max-width: 21rem) {
  .nc-week__days { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@container (min-width: 52rem) {
  .nc-week__day { justify-items: start; text-align: start; padding: var(--nc-space-3); min-height: 9rem; }
  .nc-week__count { display: none; }
  .nc-week__titles { display: grid; gap: var(--nc-space-2); margin: var(--nc-space-1) 0 0; padding: 0; font-size: var(--nc-font-size-sm); line-height: var(--nc-font-line-height-snug); }
  .nc-week__titles li { display: grid; grid-template-columns: auto 1fr; gap: var(--nc-space-2); align-items: start; }
  .nc-week__titles .nc-glyph { margin-top: 0.2em; }
  .nc-week__titles span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .nc-week__titles b { font-weight: var(--nc-font-weight-bold); font-variant-numeric: tabular-nums; }
  .nc-week__day[aria-pressed="true"] .nc-kind-glyph { color: currentColor; }
  .nc-week__more { color: var(--nc-color-text-muted); font-weight: var(--nc-font-weight-bold); display: block !important; }
}

/* --- components/chat --- */
/* Embedded Chat Node (Task 5.1). Strict design tokens, 0 raw hex, 0 raw px. */

.nc-chat {
  display: grid;
  gap: var(--nc-space-4);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
  padding: var(--nc-space-3);
  box-sizing: border-box;
}

.nc-chat__header {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-chat__eyebrow {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
  margin: var(--nc-space-0);
}

.nc-chat__title {
  font-size: var(--nc-font-size-xl);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
  line-height: var(--nc-line-height-tight);
}

.nc-chat__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--nc-space-2);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
}

.nc-chat__pseudonym-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--nc-space-1) var(--nc-space-2);
  background: var(--nc-color-surface-sunken);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  font-family: var(--nc-font-family-mono);
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text);
}

.nc-chat__privacy-banner {
  display: grid;
  gap: var(--nc-space-1);
  padding: var(--nc-space-3);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-left: calc(var(--nc-size-border) * 4) solid var(--nc-color-accent);
  border-radius: var(--nc-radius-sm);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
}

.nc-chat__layout {
  display: grid;
  gap: var(--nc-space-4);
  grid-template-columns: 1fr;
}

@media (min-width: 48rem) {
  .nc-chat__layout {
    grid-template-columns: calc(var(--nc-space-5) * 5) 1fr;
  }
}

.nc-chat__rooms {
  display: grid;
  gap: var(--nc-space-2);
  align-content: start;
}

.nc-chat__rooms-heading {
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
}

.nc-chat__room-list {
  display: grid;
  gap: var(--nc-space-1);
  list-style: none;
  margin: var(--nc-space-0);
  padding: var(--nc-space-0);
}

.nc-chat__room-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: var(--nc-size-target);
  padding: var(--nc-space-2) var(--nc-space-3);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  color: var(--nc-color-text);
  font-size: var(--nc-font-size-sm);
  cursor: pointer;
  text-align: left;
  box-sizing: border-box;
}

.nc-chat__room-btn:hover {
  background: var(--nc-color-surface-sunken);
}

.nc-chat__room-btn[aria-selected="true"] {
  border-color: var(--nc-color-accent);
  background: var(--nc-color-surface-sunken);
  font-weight: var(--nc-font-weight-bold);
}

.nc-chat__room-btn:focus-visible {
  outline: var(--nc-size-border-strong) solid var(--nc-color-focus);
  outline-offset: var(--nc-size-focus-offset);
}

.nc-chat__view {
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: var(--nc-space-3);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  padding: var(--nc-space-3);
  box-sizing: border-box;
  min-height: calc(var(--nc-size-target) * 9);
}

.nc-chat__room-header {
  display: grid;
  gap: var(--nc-space-1);
  padding-bottom: var(--nc-space-2);
  border-bottom: var(--nc-size-border) solid var(--nc-color-border);
}

.nc-chat__room-title {
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
}

.nc-chat__room-topic {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  margin: var(--nc-space-0);
}

.nc-chat__messages {
  display: flex;
  flex-direction: column;
  gap: var(--nc-space-2);
  min-height: calc(var(--nc-size-target) * 5);
  max-height: calc(var(--nc-size-target) * 9);
  overflow-y: auto;
  padding: var(--nc-space-2);
  list-style: none;
  margin: var(--nc-space-0);
}

.nc-chat__msg {
  display: grid;
  gap: var(--nc-space-1);
  padding: var(--nc-space-2) var(--nc-space-3);
  background: var(--nc-color-surface-sunken);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  max-width: 85%;
}

.nc-chat__msg--steward {
  border-color: var(--nc-color-kind-show-mark);
  background: var(--nc-color-surface);
}

.nc-chat__msg--own {
  margin-left: auto;
  background: var(--nc-color-surface);
  border-color: var(--nc-color-accent);
}

.nc-chat__msg-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nc-space-2);
  font-size: var(--nc-font-size-xs);
}

.nc-chat__msg-sender {
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  font-family: var(--nc-font-family-mono);
}

.nc-chat__msg--steward .nc-chat__msg-sender {
  color: var(--nc-color-accent-text);
}

.nc-chat__msg-time {
  color: var(--nc-color-text-muted);
}

.nc-chat__msg-body {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
  white-space: pre-wrap;
  word-break: break-word;
}

.nc-chat__composer {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--nc-space-2);
  padding-top: var(--nc-space-2);
  border-top: var(--nc-size-border) solid var(--nc-color-border);
}

.nc-chat__input {
  min-height: var(--nc-size-target);
  padding: var(--nc-space-2) var(--nc-space-3);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  background: var(--nc-color-surface-sunken);
  color: var(--nc-color-text);
  font-family: inherit;
  font-size: var(--nc-font-size-sm);
  box-sizing: border-box;
}

.nc-chat__input:focus-visible {
  outline: var(--nc-size-border-strong) solid var(--nc-color-focus);
  outline-offset: var(--nc-size-focus-offset);
}

.nc-chat__external-bridge {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--nc-space-2);
  padding: var(--nc-space-2) var(--nc-space-3);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
}

.nc-chat__external-link {
  color: var(--nc-color-link);
  min-height: var(--nc-size-target);
  display: inline-flex;
  align-items: center;
}

/* --- components/corrections --- */
.nc-corrections {
  display: grid;
  gap: var(--nc-space-3);
  margin-top: var(--nc-space-4);
  padding-top: var(--nc-space-3);
  border-top: var(--nc-size-border) solid var(--nc-color-border);
}

.nc-corrections__list {
  display: grid;
  gap: var(--nc-space-2);
  list-style: none;
  padding: 0;
  margin: 0;
}

.nc-correction-entry {
  padding: var(--nc-space-3);
  background: var(--nc-color-surface);
  border-left: calc(var(--nc-size-border) * 4) solid var(--nc-color-accent-border);
  border-radius: var(--nc-radius-sm);
  display: grid;
  gap: var(--nc-space-1);
}

.nc-correction-entry--outranking {
  border-color: var(--nc-color-accent-border);
}

.nc-correction-entry__badge {
  display: inline-block;
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.nc-correction-entry__text {
  font-weight: var(--nc-font-weight-medium);
  margin: 0;
}

.nc-correction-entry__meta {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  margin: 0;
}

.nc-correction-entry--tombstone {
  border-left-color: var(--nc-color-border);
  opacity: 0.8;
}

.nc-corrections__toggle {
  display: flex;
  gap: var(--nc-space-2);
  align-items: center;
}

.nc-corrections__form {
  display: grid;
  gap: var(--nc-space-2);
  padding: var(--nc-space-3);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
}

.nc-corrections__input,
.nc-corrections__textarea {
  width: 100%;
  padding: var(--nc-space-2);
  font-family: inherit;
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
  background: var(--nc-color-canvas);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
}

.nc-corrections__actions {
  display: flex;
  gap: var(--nc-space-2);
  justify-content: flex-end;
}

/* --- components/day-agenda --- */
.nc-day-agenda { display: grid; gap: var(--nc-space-5); }
.nc-day-agenda__header { display: grid; gap: var(--nc-space-1); }
.nc-day-agenda__title { font-size: var(--nc-font-size-display); }
.nc-day-agenda__count { font-size: var(--nc-font-size-lg); color: var(--nc-color-text-muted); font-weight: var(--nc-font-weight-medium); }
.nc-day-agenda__list { display: grid; gap: var(--nc-space-3); margin: 0; padding: 0; }
.nc-day-agenda__empty {
  display: grid;
  gap: var(--nc-space-4);
  justify-items: start;
  padding: var(--nc-space-5);
  border: var(--nc-size-border) dashed var(--nc-color-border-strong);
  border-radius: var(--nc-radius-lg);
  font-size: var(--nc-font-size-lg);
}
.nc-day-agenda__nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-2);
  align-items: center;
  margin-top: var(--nc-space-1);
}

/* --- components/entity-page --- */
/* Entity page (Task 2.13) */
.nc-entity-page {
  display: grid;
  gap: var(--nc-space-5);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
  box-sizing: border-box;
}

.nc-entity-page__eyebrow {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
  margin: var(--nc-space-0);
}

.nc-entity-page__title {
  font-size: var(--nc-font-size-xl);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
  line-height: var(--nc-line-height-tight);
}

.nc-entity-page__status {
  margin: var(--nc-space-0);
  color: var(--nc-color-text-muted);
}

.nc-entity-page__section {
  display: grid;
  gap: var(--nc-space-3);
}

.nc-entity-page__heading {
  font-size: var(--nc-font-size-lg);
  margin: var(--nc-space-0);
}

.nc-entity-page__bio,
.nc-entity-page__empty {
  margin: var(--nc-space-0);
  color: var(--nc-color-text);
}

.nc-entity-page__grid {
  display: grid;
  gap: var(--nc-space-2);
  margin: var(--nc-space-0);
}

.nc-entity-page__grid dt {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
}

.nc-entity-page__grid dd {
  margin: var(--nc-space-0);
}

.nc-entity-page__list {
  display: grid;
  gap: var(--nc-space-2);
  margin: var(--nc-space-0);
  padding: var(--nc-space-0);
  list-style: none;
}

.nc-entity-link,
.nc-entity-page__contact-link {
  color: var(--nc-color-link);
  min-height: var(--nc-size-target);
  display: inline-flex;
  align-items: center;
}

.nc-entity-page__event {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--nc-space-3);
  min-height: var(--nc-size-target);
}

.nc-entity-page__when {
  color: var(--nc-color-text-muted);
  font-size: var(--nc-font-size-sm);
}

/* --- components/event-card --- */
.nc-event-card {
  --nc-card-scale: 1;
  display: grid;
  overflow: clip;
  background: var(--nc-color-surface);
  border: 1px solid var(--nc-color-border-strong, var(--nc-color-border));
  border-radius: var(--nc-radius-lg);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
  transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}
.nc-event-card:hover {
  border-color: var(--nc-color-accent);
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.18);
}
.nc-event-card__media {
  aspect-ratio: 16 / 9;
  background: var(--nc-color-surface-sunken);
  border-bottom: 1px solid var(--nc-color-border);
  overflow: hidden;
}
.nc-event-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 240ms ease;
}
.nc-event-card:hover .nc-event-card__media img {
  transform: scale(1.02);
}
.nc-event-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--nc-space-3);
  width: 100%;
}
.nc-event-card__gauge {
  display: inline-flex;
  align-items: center;
  gap: var(--nc-space-1);
  padding: calc(var(--nc-space-1) * 0.5) var(--nc-space-3);
  font-size: var(--nc-font-size-sm);
  line-height: var(--nc-font-line-height-normal);
  font-weight: var(--nc-font-weight-bold);
  border-radius: var(--nc-radius-pill);
  background: var(--nc-color-surface-sunken);
  border: var(--nc-size-border) solid var(--nc-color-border);
  color: var(--nc-color-text);
}
.nc-event-card__gauge-count {
  color: var(--nc-color-accent-text);
  font-weight: var(--nc-font-weight-black);
}
.nc-event-card__gauge-label {
  color: var(--nc-color-text-muted);
  font-weight: var(--nc-font-weight-normal);
}
.nc-event-card__body {
  display: grid;
  gap: calc(var(--nc-space-4) * var(--nc-card-scale, 1));
  padding: calc(var(--nc-space-5) * var(--nc-card-scale, 1));
  justify-items: start;
}
.nc-event-card__title {
  font-size: calc(var(--nc-font-size-2xl) * min(1.3, var(--nc-card-scale, 1)));
  line-height: var(--nc-font-line-height-tight);
}
.nc-event-card__facts {
  display: grid;
  gap: calc(var(--nc-space-3) * var(--nc-card-scale, 1));
  margin: 0;
}
.nc-event-card__facts > div { display: grid; grid-template-columns: 6.5rem 1fr; gap: var(--nc-space-3); }
.nc-event-card__facts dt { color: var(--nc-color-text-muted); font-weight: var(--nc-font-weight-bold); }
.nc-event-card__facts dd { margin: 0; font-size: calc(var(--nc-font-size-lg) * min(1.15, var(--nc-card-scale, 1))); line-height: var(--nc-font-line-height-snug); }
.nc-event-card__source { color: var(--nc-color-text-muted); font-size: var(--nc-font-size-sm); }
.nc-event-card__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--nc-space-3); padding-top: var(--nc-space-2); }

@container (min-width: 44rem) {
  .nc-event-card:has(.nc-event-card__media) { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); }
  .nc-event-card__media { aspect-ratio: auto; min-height: 100%; }
}

.nc-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--nc-space-1);
  padding: calc(var(--nc-space-1) * 0.5) var(--nc-space-2);
  border-radius: var(--nc-radius-pill);
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  line-height: var(--nc-font-line-height-normal);
}
.nc-badge--earmarked {
  background: var(--nc-color-selected-bg);
  color: var(--nc-color-selected-text);
  border: var(--nc-size-border) solid var(--nc-color-selected-border);
}
.nc-badge--personal {
  background: var(--nc-color-surface-sunken);
  color: var(--nc-color-accent-text);
  border: var(--nc-size-border) solid var(--nc-color-accent);
}
.nc-badge--happening-now {
  background: var(--nc-color-kind-comedy-bg);
  color: var(--nc-color-kind-comedy-fg);
  border: var(--nc-size-border) solid var(--nc-color-kind-comedy-mark);
}
.nc-badge--recurring {
  background: var(--nc-color-kind-other-bg);
  color: var(--nc-color-kind-other-fg);
  border: var(--nc-size-border) solid var(--nc-color-kind-other-mark);
}
.nc-badge--archived {
  background: var(--nc-color-surface-sunken);
  color: var(--nc-color-text-muted);
  border: var(--nc-size-border) solid var(--nc-color-border);
}


.nc-event-card__attention {
  margin: 0;
  padding: var(--nc-space-2) var(--nc-space-3);
  background: var(--nc-color-surface-sunken);
  color: var(--nc-color-text);
  border-left: calc(var(--nc-size-border) * 3) solid var(--nc-color-accent);
  border-radius: var(--nc-radius-sm);
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-medium);
}


/* --- components/event-row --- */
.nc-event-row {
  display: grid;
  grid-template-columns: 6.5rem minmax(0, 1fr);
  grid-template-areas: "time main" ". kind";
  align-items: start;
  gap: var(--nc-space-1) var(--nc-space-4);
  width: 100%;
  min-height: var(--nc-size-target);
  padding: var(--nc-space-4);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  background: var(--nc-color-surface);
  color: var(--nc-color-text);
  text-align: start;
  cursor: pointer;
  transition: border-color var(--nc-duration-fast) var(--nc-easing-standard);
}
.nc-event-row:hover { border-color: var(--nc-color-border-strong); }
.nc-event-row__time {
  grid-area: time;
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-heavy);
  font-variant-numeric: tabular-nums;
  line-height: var(--nc-font-line-height-snug);
  white-space: nowrap;
}
.nc-event-row__date { display: block; font-size: var(--nc-font-size-sm); font-weight: var(--nc-font-weight-bold); color: var(--nc-color-text-muted); }
.nc-event-row__main { grid-area: main; display: grid; gap: var(--nc-space-1); min-width: 0; }
.nc-event-row__title { font-size: var(--nc-font-size-lg); font-weight: var(--nc-font-weight-bold); line-height: var(--nc-font-line-height-snug); overflow-wrap: anywhere; }
.nc-event-row__venue { color: var(--nc-color-text-muted); }
.nc-event-row__kind { grid-area: kind; }

@container (min-width: 40rem) {
  .nc-event-row { grid-template-columns: 7rem minmax(0, 1fr) auto; grid-template-areas: "time main kind"; align-items: center; }
}
@container (max-width: 22rem) {
  .nc-event-row { grid-template-columns: minmax(0, 1fr); grid-template-areas: "time" "main" "kind"; }
}

/* --- components/filter-bar --- */
.nc-filters { display: flex; flex-wrap: wrap; align-items: end; gap: var(--nc-space-4); min-width: 0; max-width: 100%; }
.nc-filters__room, .nc-filters__kind { display: grid; width: 14rem; max-width: 100%; }
.nc-filters__room .nc-select, .nc-filters__kind .nc-select { width: 100%; }

/* --- components/hub-inbox --- */
.nc-hub-inbox {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-lg);
}
.nc-hub-inbox__list {
  display: grid;
  gap: var(--nc-space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}
.nc-hub-inbox__item {
  display: flex;
  flex-direction: column;
  gap: calc(var(--nc-space-1) * 0.5);
  padding: var(--nc-space-2);
  background: var(--nc-color-surface-sunken);
  border-radius: var(--nc-radius-md);
  font-size: var(--nc-font-size-xs);
}
.nc-hub-inbox__from {
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
}
.nc-hub-inbox__text {
  color: var(--nc-color-text);
}

/* --- components/hub-layout --- */
.nc-hub-layout {
  display: grid;
  gap: var(--nc-space-8);
  width: 100%;
}

.nc-hub-hero {
  width: 100%;
}

.nc-hub-auxiliary {
  display: grid;
  gap: var(--nc-space-4);
  grid-template-columns: 1fr;
  padding-top: var(--nc-space-4);
  border-top: var(--nc-size-border) solid var(--nc-color-border);
}

@media (min-width: 48rem) {
  .nc-hub-auxiliary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* --- components/hub-market --- */
.nc-hub-market {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-lg);
}
.nc-hub-market__list {
  display: grid;
  gap: var(--nc-space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}
.nc-hub-market__item {
  display: flex;
  flex-direction: column;
  gap: calc(var(--nc-space-1) * 0.5);
  padding: var(--nc-space-2);
  background: var(--nc-color-surface-sunken);
  border-radius: var(--nc-radius-md);
  font-size: var(--nc-font-size-xs);
}
.nc-hub-market__title {
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
}
.nc-hub-market__desc {
  color: var(--nc-color-text-muted);
}

/* --- components/hub-summary --- */
.nc-hub-summary {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-lg);
}

/* --- components/hub-zine --- */
.nc-hub-slot {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-lg);
  font-size: var(--nc-font-size-sm);
}
.nc-hub-slot__header { display: grid; gap: var(--nc-space-1); }
.nc-hub-slot__title { font-size: var(--nc-font-size-lg); font-weight: var(--nc-font-weight-bold); margin: 0; }
.nc-hub-slot__body { color: var(--nc-color-text-muted); margin: 0; line-height: var(--nc-font-line-height-normal); }
.nc-hub-slot__empty { color: var(--nc-color-text-muted); font-style: italic; margin: 0; }
.nc-hub-slot__link { color: var(--nc-color-accent-text); font-weight: var(--nc-font-weight-bold); text-decoration: none; }
.nc-hub-slot__link:hover { text-decoration: underline; }

/* --- components/marker --- */
.nc-marker-card {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
}

.nc-marker-card__header {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-marker-card__badge {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.nc-marker-card__title {
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-marker-card__preview {
  display: flex;
  justify-content: center;
  padding: var(--nc-space-3);
  background: var(--nc-color-surface-sunken);
  border-radius: var(--nc-radius-sm);
  border: var(--nc-size-border) solid var(--nc-color-border);
}

.nc-marker-card__img {
  max-width: 100%;
  height: auto;
  border-radius: var(--nc-radius-sm);
}

.nc-marker-card__fallback {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  margin: 0;
}

.nc-marker-card__code {
  font-family: inherit;
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-link);
  background: var(--nc-color-surface-sunken);
  padding: var(--nc-space-1) var(--nc-space-2);
  border-radius: var(--nc-radius-sm);
}

.nc-marker-card__actions {
  display: flex;
  justify-content: flex-end;
  margin-top: var(--nc-space-1);
}

/* --- components/node-map --- */
.nc-map { display: grid; gap: var(--nc-space-2); }
.nc-map__stage {
  position: relative;
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-lg);
  background: var(--nc-color-surface-sunken);
  overflow: hidden;
}
.nc-map__svg {
  width: 100%;
  height: clamp(22rem, 62vh, 46rem);
  touch-action: none;
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
}
.nc-map.is-panning .nc-map__svg { cursor: grabbing; }
.nc-map__bg { fill: transparent; }
.nc-map__tools {
  position: absolute;
  inset-block-start: var(--nc-space-3);
  inset-inline-end: var(--nc-space-3);
  display: flex;
  gap: var(--nc-space-2);
}
.nc-map__help { font-size: var(--nc-font-size-sm); color: var(--nc-color-text-muted); }

/* Edges keep a constant on-screen width; marks are counter-scaled in JS. */
.nc-map__edges line {
  stroke: var(--nc-color-graph-edge);
  stroke-width: var(--nc-size-border-strong);
  stroke-linecap: round;
  vector-effect: non-scaling-stroke;
}
.nc-map__edges line[data-kind="events"], .nc-map__edges line[data-kind="venues"] { stroke-dasharray: var(--nc-size-dash) var(--nc-size-gap); }
.nc-map__edges line.is-active { stroke: var(--nc-color-graph-edge-active); stroke-width: calc(var(--nc-size-border-strong) * 2); }

.nc-map__node { cursor: pointer; outline: none; }
.nc-map__hit { fill: transparent; }
.nc-map__shape {
  fill: var(--node);
  stroke: var(--nc-color-surface-sunken);
  stroke-width: var(--nc-size-border-strong);
}
.nc-map__node[data-node-type="missing"] .nc-map__shape {
  fill: var(--nc-color-surface-sunken);
  stroke: var(--node);
  stroke-width: var(--nc-size-border-strong);
  stroke-dasharray: var(--nc-size-gap) var(--nc-size-gap);
}
.nc-map__label {
  fill: var(--nc-color-text);
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-bold);
  paint-order: stroke;
  stroke: var(--nc-color-surface-sunken);
  stroke-width: calc(var(--nc-size-border-strong) * 2);
  stroke-linejoin: round;
  pointer-events: none;
  display: none;
}
/* Notes are always named; the rest when zoomed in, near the selection, or focused. */
.nc-map__node[data-note] .nc-map__label,
.nc-map[data-zoomed="true"] .nc-map__label,
.nc-map__node.is-selected .nc-map__label,
.nc-map__node.is-near .nc-map__label,
.nc-map__node:hover .nc-map__label,
.nc-map__node:focus-visible .nc-map__label { display: block; }

.nc-map__node.is-selected .nc-map__shape { stroke: var(--nc-color-text); stroke-width: var(--nc-size-focus-ring); }
.nc-map__node.is-near .nc-map__shape { stroke: var(--nc-color-graph-edge-active); }
.nc-map__node:focus-visible .nc-map__hit {
  fill: none;
  stroke: var(--nc-color-focus);
  stroke-width: var(--nc-size-focus-ring);
}
.nc-map__node:hover .nc-map__shape { stroke: var(--nc-color-text); }

.nc-map-embed__card:empty { display: none; }

/* --- components/portal --- */
.nc-portal {
  display: grid;
  gap: var(--nc-space-4);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
  padding: var(--nc-space-3);
}

.nc-portal__header {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-portal__eyebrow {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.nc-portal__title {
  font-size: var(--nc-font-size-xl);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-portal__subtitle {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: 0;
}

.nc-portal__banner {
  display: grid;
  gap: var(--nc-space-2);
  padding: var(--nc-space-3);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-left: calc(var(--nc-size-border) * 4) solid var(--nc-color-accent);
  border-radius: var(--nc-radius-sm);
}

.nc-portal__banner--ar {
  border-left-color: var(--nc-color-kind-show-mark);
  background: var(--nc-color-kind-show-bg);
}

.nc-portal__banner--fallback {
  border-left-color: var(--nc-color-kind-music-mark);
  background: var(--nc-color-surface-sunken);
}

.nc-portal__badge {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--nc-color-text);
}

.nc-portal__banner-text {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-portal__content {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
}

.nc-portal__node-title {
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-portal__node-meta {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  margin: 0;
}

.nc-portal__node-body {
  font-size: var(--nc-font-size-base);
  line-height: var(--nc-line-height-normal);
  color: var(--nc-color-text);
}

.nc-portal__node-body p {
  margin-top: 0;
  margin-bottom: var(--nc-space-2);
}

.nc-portal__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-2);
  margin-top: var(--nc-space-3);
}

.nc-portal__stage {
  height: 380px;
  width: 100%;
  border-radius: var(--nc-radius-md);
  overflow: hidden;
  background: #121214;
  position: relative;
  margin-block: var(--nc-space-3);
  box-shadow: inset 0 2px 8px rgba(0,0,0,0.5);
}

.nc-portal__status {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-accent);
  font-weight: var(--nc-font-weight-medium);
  padding: var(--nc-space-2) var(--nc-space-3);
  background: var(--nc-color-surface-sunken);
  border-radius: var(--nc-radius-sm);
  border-left: 3px solid var(--nc-color-accent);
  margin: var(--nc-space-2) 0;
}

:xr-overlay {
  background: transparent !important;
}

.nc-xr-overlay {
  position: fixed;
  inset: 0;
  pointer-events: none;
  background: transparent !important;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: var(--nc-space-4);
  z-index: 99999;
}

.nc-xr-card {
  pointer-events: auto;
  background: rgba(18, 18, 20, 0.88);
  backdrop-filter: blur(12px);
  border: 1px solid var(--nc-color-accent, #E5A93C);
  border-radius: var(--nc-radius-lg);
  padding: var(--nc-space-4);
  color: #FFFFFF;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);
}

/* --- components/preference-tabs --- */
/* Preference & Settings Tabs Component (Task 4.6) */
.nc-preference-tabs {
  display: grid;
  gap: var(--nc-space-4);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
  box-sizing: border-box;
}

/* Tab bar */
.nc-prefs-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-2);
  border-bottom: var(--nc-size-border) solid var(--nc-color-border);
  padding-bottom: var(--nc-space-3);
}

.nc-prefs-tab {
  min-height: var(--nc-size-target);
  min-width: 0;
  padding: var(--nc-space-2) var(--nc-space-3);
  font-family: inherit;
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text-muted);
  background: transparent;
  border: none;
  border-bottom: var(--nc-size-border-strong) solid transparent;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: var(--nc-space-1);
  position: relative;
  transition: color var(--nc-duration-fast) var(--nc-easing-standard);
}

.nc-prefs-tab:hover {
  color: var(--nc-color-text);
}

.nc-prefs-tab[aria-selected="true"] {
  color: var(--nc-color-accent-text);
  border-bottom-color: var(--nc-color-accent);
}

.nc-prefs-tab-icon {
  width: var(--nc-space-4);
  height: var(--nc-space-4);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.nc-prefs-tab-label {
  flex: 1 1 auto;
}

/* Panels */
.nc-prefs-panels {
  display: grid;
  gap: var(--nc-space-4);
}

.nc-prefs-panel {
  animation: nc-prefs-fade-in var(--nc-duration-base) var(--nc-easing-standard);
}

@keyframes nc-prefs-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

.nc-prefs-section {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface-raised, var(--nc-color-surface));
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
}

.nc-prefs-section-head {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-prefs-section-title {
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-prefs-section-desc {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: 0;
}

.nc-prefs-section-note {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: 0;
}

/* Fields */
.nc-prefs-field {
  display: grid;
  gap: var(--nc-space-1);
  border: 0;
  margin: 0;
  padding: 0;
  min-width: 0;
}

.nc-prefs-inline {
  grid-template-columns: 1fr auto;
  align-items: center;
}

.nc-prefs-check {
  display: flex;
  align-items: center;
  gap: var(--nc-space-3);
  min-height: var(--nc-size-target);
  cursor: pointer;
}

.nc-prefs-check input {
  width: var(--nc-space-4);
  height: var(--nc-space-4);
  flex: 0 0 auto;
}

.nc-prefs-venue-list {
  display: grid;
  gap: var(--nc-space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.nc-prefs-venue-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nc-space-3);
  min-height: var(--nc-size-target);
}

.nc-prefs-field-label {
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-medium);
  color: var(--nc-color-text);
}

.nc-prefs-input {
  min-height: var(--nc-size-target);
  padding: var(--nc-space-2) var(--nc-space-3);
  font-family: inherit;
  font-size: var(--nc-font-size-base);
  background: var(--nc-color-bg);
  color: var(--nc-color-text);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  box-sizing: border-box;
}

.nc-prefs-input:focus-visible {
  outline: var(--nc-size-border-strong) solid var(--nc-color-focus);
  outline-offset: var(--nc-size-focus-offset);
}

.nc-prefs-radio-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-2);
}

.nc-prefs-radio-label {
  display: inline-flex;
  align-items: center;
  gap: var(--nc-space-1);
  padding: var(--nc-space-2) var(--nc-space-3);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  cursor: pointer;
  min-height: var(--nc-size-target);
  min-width: 0;
  flex: 1 1 48%;
  transition: background-color var(--nc-duration-fast) var(--nc-easing-standard),
              border-color var(--nc-duration-fast) var(--nc-easing-standard);
}

.nc-prefs-radio-label input {
  width: var(--nc-space-4);
  height: var(--nc-space-4);
  flex: 0 0 auto;
}

.nc-prefs-radio-label:hover {
  border-color: var(--nc-color-text);
}

.nc-prefs-radio-label[aria-pressed="true"] {
  background: var(--nc-color-surface-sunken);
  border-color: var(--nc-color-accent);
}

.nc-prefs-radio-text {
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-medium);
  color: var(--nc-color-text);
}

.nc-prefs-radio-label:focus-within {
  outline: var(--nc-size-border-strong) solid var(--nc-color-focus);
  outline-offset: var(--nc-size-focus-offset);
}

.nc-prefs-rule {
  border: 0;
  border-top: var(--nc-size-border) solid var(--nc-color-border);
  margin: var(--nc-space-4) 0;
}

/* Actions footer */
.nc-prefs-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--nc-space-3);
  padding-top: var(--nc-space-3);
  border-top: var(--nc-size-border) solid var(--nc-color-border);
}

/* Live status (sr-only) */
.nc-prefs-live {
  min-height: var(--nc-space-4);
}

/* --- components/recovery --- */
/* Lost-Phone Recovery Component (Task 4.2) */
.nc-recovery {
  display: grid;
  gap: var(--nc-space-4);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
}

.nc-recovery__header {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-recovery__eyebrow {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
  margin: var(--nc-space-0);
}

.nc-recovery__title {
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
}

.nc-recovery__subtitle {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: var(--nc-space-0);
}

.nc-recovery__tabs {
  display: flex;
  gap: var(--nc-space-2);
  border-bottom: var(--nc-size-border) solid var(--nc-color-border);
  padding-bottom: var(--nc-space-2);
}

.nc-recovery__tab {
  font-family: inherit;
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-medium);
  padding: var(--nc-space-2) var(--nc-space-3);
  background: transparent;
  border: none;
  border-bottom: var(--nc-size-border-strong) solid transparent;
  color: var(--nc-color-text-muted);
  cursor: pointer;
  min-height: var(--nc-size-target);
  border-radius: var(--nc-radius-sm) var(--nc-radius-sm) var(--nc-space-0) var(--nc-space-0);
}

.nc-recovery__tab:hover {
  color: var(--nc-color-text);
}

.nc-recovery__tab:focus-visible {
  outline: var(--nc-size-border-strong) solid var(--nc-color-focus);
  outline-offset: var(--nc-size-focus-offset);
}

.nc-recovery__tab--active {
  color: var(--nc-color-text);
  border-bottom-color: var(--nc-color-focus);
  font-weight: var(--nc-font-weight-bold);
}

.nc-recovery__panel {
  display: grid;
  gap: var(--nc-space-3);
}

.nc-recovery__form {
  display: grid;
  gap: var(--nc-space-3);
}

.nc-recovery__field {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-recovery__label {
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-medium);
  color: var(--nc-color-text);
}

.nc-recovery__input,
.nc-recovery__textarea {
  font-family: inherit;
  font-size: var(--nc-font-size-md);
  padding: var(--nc-space-2) var(--nc-space-3);
  min-height: var(--nc-size-target);
  box-sizing: border-box;
  background: var(--nc-color-bg);
  border: var(--nc-size-border) solid var(--nc-color-border-strong);
  border-radius: var(--nc-radius-sm);
  color: var(--nc-color-text);
}


.nc-recovery__input--code {
  font-family: var(--nc-font-family-mono);
  letter-spacing: var(--nc-font-tracking-caps);
  text-transform: uppercase;
}

.nc-recovery__input:focus-visible,
.nc-recovery__textarea:focus-visible {
  outline: var(--nc-size-border-strong) solid var(--nc-color-focus);
  outline-offset: var(--nc-size-focus-offset);
}

.nc-recovery__hint {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
}

.nc-recovery__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-2);
  margin-top: var(--nc-space-2);
}

.nc-recovery__banner {
  padding: var(--nc-space-3);
  border-radius: var(--nc-radius-sm);
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-medium);
}

.nc-recovery__banner--error {
  background: var(--nc-color-kind-comedy-bg);
  color: var(--nc-color-kind-comedy-fg);
  border: var(--nc-size-border) solid var(--nc-color-kind-comedy-mark);
}

.nc-recovery__banner--success {
  background: var(--nc-color-kind-music-bg);
  color: var(--nc-color-kind-music-fg);
  border: var(--nc-size-border) solid var(--nc-color-kind-music-mark);
}

.nc-recovery__banner--info {
  background: var(--nc-color-kind-show-bg);
  color: var(--nc-color-kind-show-fg);
  border: var(--nc-size-border) solid var(--nc-color-kind-show-mark);
}

.nc-recovery__success-card {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-kind-music-bg);
  border: var(--nc-size-border) solid var(--nc-color-kind-music-mark);
  border-radius: var(--nc-radius-md);
}

.nc-recovery__card-title {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-kind-music-fg);
}

.nc-recovery__card-text {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-kind-music-fg);
}

.nc-recovery__card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-2);
}

/* --- components/road-timeline --- */
.nc-road-timeline {
  display: grid;
  gap: var(--nc-space-5);
  position: relative;
  margin: 0;
  padding: 0;
  padding-left: var(--nc-space-6);
  border-left: var(--nc-size-border) dashed var(--nc-color-border-strong);
  list-style: none;
}

.nc-road__stop {
  display: grid;
  gap: var(--nc-space-2);
  position: relative;
}

.nc-road__milestone {
  display: flex;
  align-items: center;
  gap: var(--nc-space-2);
}

.nc-road__dot {
  position: absolute;
  left: calc(-1 * var(--nc-space-6) - var(--nc-size-border) * 2);
  top: var(--nc-space-4);
  width: var(--nc-space-3);
  height: var(--nc-space-3);
  border-radius: var(--nc-radius-pill);
  background: var(--nc-color-accent-text);
  border: var(--nc-size-border) solid var(--nc-color-surface);
}

.nc-road__time {
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-heavy);
  font-variant-numeric: tabular-nums;
  color: var(--nc-color-text-muted);
}

.nc-road__card {
  width: 100%;
  transition: border-color var(--nc-duration-fast) var(--nc-easing-standard), box-shadow var(--nc-duration-fast) var(--nc-easing-standard);
}

.nc-road__card:hover {
  border-color: var(--nc-color-border-strong);
}

@container (max-width: 28rem) {
  .nc-road-timeline {
    padding-left: var(--nc-space-4);
  }
  .nc-road__dot {
    left: calc(-1 * var(--nc-space-4) - var(--nc-size-border) * 2);
  }
}

/* --- components/search-dialog --- */
/* Search Dialog component styles */

.nc-search-dialog {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: start center;
  padding: var(--space-4, 1rem);
  padding-top: min(12vh, 6rem);
}

.nc-search-dialog[hidden] {
  display: none !important;
}

.nc-search-dialog__scrim {
  position: fixed;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.65);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.nc-search-dialog__panel {
  position: relative;
  z-index: 1001;
  width: 100%;
  max-width: 640px;
  background-color: var(--nc-color-surface, #121214);
  color: var(--nc-color-ink, #f0f0f2);
  border: 1px solid var(--nc-color-border, #2a2a30);
  border-radius: var(--radius-lg, 0.75rem);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  max-height: 80vh;
}

.nc-search-dialog__header {
  display: flex;
  align-items: center;
  gap: var(--space-3, 0.75rem);
  padding: var(--space-3, 0.75rem) var(--space-4, 1rem);
  border-bottom: 1px solid var(--nc-color-border, #2a2a30);
}

.nc-search-dialog__header svg {
  width: 22px;
  height: 22px;
  color: var(--nc-color-muted, #8a8a96);
  flex-shrink: 0;
}

.nc-search-dialog__input {
  flex: 1;
  background: transparent;
  border: none;
  color: inherit;
  font-size: var(--text-lg, 1.125rem);
  line-height: 1.5;
  outline: none;
  min-height: 44px;
}

.nc-search-dialog__close {
  background: var(--nc-color-surface-hover, #202026);
  color: var(--nc-color-muted, #8a8a96);
  border: 1px solid var(--nc-color-border, #2a2a30);
  border-radius: var(--radius-sm, 0.25rem);
  padding: 0.2rem 0.5rem;
  font-size: var(--text-xs, 0.75rem);
  cursor: pointer;
  min-height: 44px;
  min-width: 44px;
  display: grid;
  place-items: center;
}

.nc-search-dialog__close:hover,
.nc-search-dialog__close:focus-visible {
  color: var(--nc-color-ink, #fff);
  border-color: var(--nc-color-accent, #3ee0ff);
}

.nc-search-dialog__results {
  flex: 1;
  overflow-y: auto;
  padding: var(--space-3, 0.75rem) 0;
  min-height: 140px;
}

.nc-search-dialog__empty,
.nc-search-dialog__loading,
.nc-search-dialog__error {
  padding: var(--space-6, 1.5rem) var(--space-4, 1rem);
  text-align: center;
  color: var(--nc-color-muted, #8a8a96);
  font-size: var(--text-sm, 0.875rem);
}

.nc-search-dialog__group {
  margin-bottom: var(--space-3, 0.75rem);
}

.nc-search-dialog__group-title {
  padding: var(--space-1, 0.25rem) var(--space-4, 1rem);
  font-size: var(--text-xs, 0.75rem);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--nc-color-muted, #8a8a96);
  font-weight: 600;
}

.nc-search-dialog__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nc-search-dialog__link {
  display: flex;
  align-items: center;
  padding: var(--space-2, 0.5rem) var(--space-4, 1rem);
  color: inherit;
  text-decoration: none;
  min-height: 44px;
  transition: background-color 0.15s ease;
}

.nc-search-dialog__link:hover,
.nc-search-dialog__link:focus {
  background-color: var(--nc-color-surface-hover, #1e1e24);
  outline: none;
}

.nc-search-dialog__item-main {
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
}

.nc-search-dialog__item-title {
  font-size: var(--text-sm, 0.875rem);
  font-weight: 500;
  color: var(--nc-color-ink, #ffffff);
}

.nc-search-dialog__item-sub {
  font-size: var(--text-xs, 0.75rem);
  color: var(--nc-color-muted, #8a8a96);
}

.nc-search-dialog__meta {
  padding: var(--space-2, 0.5rem) var(--space-4, 1rem);
  font-size: var(--text-xs, 0.75rem);
  color: var(--nc-color-muted, #666675);
  border-top: 1px solid var(--nc-color-border, #2a2a30);
  margin-top: var(--space-2, 0.5rem);
}

.nc-search-dialog__footer {
  display: flex;
  align-items: center;
  gap: var(--space-1, 0.25rem);
  padding: var(--space-2, 0.5rem) var(--space-4, 1rem);
  background: var(--nc-color-surface-dim, #0c0c0e);
  border-top: 1px solid var(--nc-color-border, #2a2a30);
  font-size: var(--text-xs, 0.75rem);
  color: var(--nc-color-muted, #666675);
}

.nc-search-dialog__footer kbd {
  background: var(--nc-color-surface, #1e1e24);
  border: 1px solid var(--nc-color-border, #3a3a44);
  border-radius: var(--radius-sm, 0.2rem);
  padding: 0.1rem 0.35rem;
  font-family: inherit;
  font-size: 0.7rem;
  color: var(--nc-color-ink, #e0e0e6);
}

.nc-search-trigger {
  min-width: 44px;
  min-height: 44px;
  display: grid;
  place-items: center;
}

.nc-search-trigger svg {
  width: 20px;
  height: 20px;
}

/* --- components/session-list --- */
/* Session List Component (Task 4.3) */
.nc-session-list {
  display: grid;
  gap: var(--nc-space-4);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
}

.nc-session-list__header {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-session-list__eyebrow {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0;
}

.nc-session-list__title {
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: 0;
}

.nc-session-list__subtitle {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: 0;
}

.nc-session-list__toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--nc-space-2);
  border-bottom: var(--nc-size-border) solid var(--nc-color-border);
  padding-bottom: var(--nc-space-3);
}

.nc-session-list__count {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  font-weight: var(--nc-font-weight-medium);
}

.nc-session-list__items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--nc-space-3);
}

.nc-session-item {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: var(--nc-space-3);
  padding: var(--nc-space-3);
  background: var(--nc-color-surface-sunken);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
}

.nc-session-item--current {
  border-color: var(--nc-color-accent);
}

.nc-session-item__info {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-session-item__device {
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  display: flex;
  align-items: center;
  gap: var(--nc-space-2);
  flex-wrap: wrap;
}

.nc-session-item__badge {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-on-accent);
  background: var(--nc-color-accent);
  padding: var(--nc-space-1) var(--nc-space-2);
  border-radius: var(--nc-radius-pill);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  line-height: 1;
}

.nc-session-item__meta {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  font-family: var(--nc-font-family-mono);
}

.nc-session-item__actions {
  display: flex;
  align-items: center;
}

.nc-session-list__status {
  padding: var(--nc-space-2) var(--nc-space-3);
  border-radius: var(--nc-radius-sm);
  font-size: var(--nc-font-size-sm);
  background: var(--nc-color-surface-sunken);
  color: var(--nc-color-text);
  border: var(--nc-size-border) solid var(--nc-color-border);
}

.nc-session-list__empty {
  padding: var(--nc-space-4);
  text-align: center;
  color: var(--nc-color-text-muted);
  font-size: var(--nc-font-size-sm);
}

/* --- components/share-button --- */
.nc-share { position: relative; display: inline-block; }
.nc-share__menu {
  position: absolute;
  z-index: var(--nc-z-overlay);
  inset-inline-end: 0;
  margin-top: var(--nc-space-2);
  min-width: 14rem;
  padding: var(--nc-space-2);
  background: var(--nc-color-surface-raised);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  box-shadow: var(--nc-shadow-overlay);
}
.nc-share__list { display: grid; gap: var(--nc-space-1); }
.nc-share__item {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--nc-size-target);
  padding: 0 var(--nc-space-3);
  border: 0;
  border-radius: var(--nc-radius-sm);
  background: transparent;
  color: var(--nc-color-text);
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-medium);
  text-align: start;
  text-decoration: none;
  cursor: pointer;
}
.nc-share__item:hover { background: var(--nc-color-surface-sunken); }

/* --- components/site-footer --- */
.nc-site-footer {
  margin-top: var(--nc-space-8);
  border-top: var(--nc-size-border) solid var(--nc-color-border);
  color: var(--nc-color-text-muted);
  position: relative;
  background: var(--nc-color-bg);
}
.nc-site-footer__watermark {
  display: flex;
  justify-content: center;
  align-items: center;
  padding-top: var(--nc-space-6);
  opacity: 0.18;
  filter: grayscale(1);
  pointer-events: none;
}
.nc-site-footer__inner {
  display: grid;
  gap: var(--nc-space-4);
  padding-block: var(--nc-space-4) var(--nc-space-7);
}
.nc-site-footer__about summary {
  display: inline-flex;
  align-items: center;
  min-height: var(--nc-size-target);
  color: var(--nc-color-text);
  font-weight: var(--nc-font-weight-bold);
  cursor: pointer;
}
.nc-site-footer__about[open] summary {
  margin-bottom: var(--nc-space-2);
}
.nc-site-footer__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-1) var(--nc-space-4);
  margin: 0;
  padding: 0;
}
.nc-site-footer__links a {
  display: inline-flex;
  align-items: center;
  min-height: var(--nc-size-target);
  color: var(--nc-color-text);
  text-decoration: none;
  font-weight: var(--nc-font-weight-medium);
  font-size: var(--nc-font-size-sm);
}
.nc-site-footer__links a:hover {
  color: var(--nc-color-accent);
  text-decoration: underline;
}
.nc-site-footer__attribution {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
}
.nc-site-footer__meta {
  border-top: 1px solid var(--nc-color-border);
  padding-top: var(--nc-space-3);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: var(--nc-space-2);
}
.nc-site-footer__ai-notice {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  margin: 0;
  letter-spacing: 0.02em;
}
.nc-site-footer__name {
  font-size: var(--nc-font-size-xs);
  font-weight: 700;
  margin: 0;
  color: var(--nc-color-text);
}

/* --- components/site-header --- */
.nc-site-header {
  border-bottom: var(--nc-size-border) solid var(--nc-color-border);
  background: var(--nc-color-bg);
  position: relative;
  z-index: 50;
}
.nc-site-header__container {
  display: flex;
  flex-direction: column;
  padding-block: var(--nc-space-2) var(--nc-space-3);
  gap: var(--nc-space-2);
}

/* Row 1: Surfaces Nav */
.nc-site-header__row1 {
  display: flex;
  justify-content: center;
  align-items: center;
  border-bottom: 1px solid var(--nc-color-border);
  padding-block-end: var(--nc-space-2);
}
.nc-surface-nav__list {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--nc-space-3);
  list-style: none;
  margin: 0;
  padding: 0;
}
.nc-surface-nav__item {
  display: inline-flex;
}
.nc-surface-nav__link {
  display: inline-flex;
  align-items: center;
  gap: var(--nc-space-2);
  min-height: 38px;
  padding: 4px 14px;
  border-radius: var(--nc-radius-md);
  text-decoration: none;
  font-weight: var(--nc-font-weight-bold);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
  border: 1px solid transparent;
  transition: all 180ms ease-in-out;
}
.nc-surface-nav__icon {
  width: 20px;
  height: 20px;
  object-fit: contain;
  flex-shrink: 0;
  transition: transform 180ms ease;
}

/* Active: inverted / high-contrast focus */
.nc-surface-nav__link.is-active {
  background: var(--nc-color-surface-raised, #252422);
  color: var(--nc-surface-accent, var(--nc-color-accent));
  border-color: var(--nc-surface-accent, var(--nc-color-accent));
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.nc-surface-nav__link.is-active .nc-surface-nav__icon {
  transform: scale(1.15);
}

/* Inactive: muted / subtle */
.nc-surface-nav__link.is-inactive {
  opacity: 0.65;
  color: var(--nc-color-text-muted);
}
.nc-surface-nav__link.is-inactive:hover {
  opacity: 1;
  background: var(--nc-color-surface-sunken);
  color: var(--nc-color-text);
}

/* Row 2: ShadeNet Core & Tools */
.nc-site-header__row2 {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--nc-space-3);
  position: relative;
}
.nc-site-header__left {
  display: flex;
  align-items: center;
  justify-content: flex-start;
}
.nc-site-header__center {
  display: flex;
  align-items: center;
  justify-content: center;
}
.nc-site-header__right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--nc-space-2);
  position: relative;
}

/* ShadeNet umbrella brand anchor */
.nc-shadenet-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  line-height: 1.1;
  gap: 2px;
}
.nc-shadenet-brand__logo {
  width: 28px;
  height: 28px;
  object-fit: contain;
  transition: transform 180ms ease;
}
.nc-shadenet-brand:hover .nc-shadenet-brand__logo {
  transform: scale(1.08);
}
.nc-shadenet-brand__text {
  font-size: var(--nc-font-size-xs);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 800;
  color: var(--nc-color-text);
}

/* Display settings disclosure panel */
.nc-site-header__panel {
  position: absolute;
  z-index: var(--nc-z-overlay);
  inset-inline-end: 0;
  top: calc(100% + var(--nc-space-2));
  width: min(26rem, calc(100vw - 2 * var(--nc-size-gutter)));
  padding: var(--nc-space-4);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-lg);
  background: var(--nc-color-surface-raised);
  box-shadow: var(--nc-shadow-overlay);
}

/* Mobile responsive */
@media (max-width: 680px) {
  .nc-surface-nav__list {
    gap: var(--nc-space-1);
  }
  .nc-surface-nav__link {
    padding: 4px 8px;
    font-size: var(--nc-font-size-xs);
  }
  .nc-surface-nav__link.is-inactive {
    display: none; /* Mobile shows currently active surface prominent in center */
  }
  .nc-surface-nav__link.is-active {
    display: inline-flex;
    padding: 6px 16px;
    font-size: var(--nc-font-size-sm);
  }
  .nc-site-header__row2 {
    grid-template-columns: auto 1fr auto;
  }
  .nc-shadenet-brand__text {
    font-size: 10px;
  }
}

/* --- components/steward-drawer --- */
.nc-steward-drawer {
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
}
.nc-steward-drawer[aria-hidden="false"] {
  pointer-events: auto;
}
.nc-steward-drawer__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.65);
  backdrop-filter: blur(3px);
}
.nc-steward-drawer__content {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(440px, 100vw);
  background: var(--nc-color-surface);
  border-left: 1px solid var(--nc-color-border-strong);
  display: flex;
  flex-direction: column;
  box-shadow: -8px 0 32px rgba(0, 0, 0, 0.4);
  transform: translateX(100%);
  transition: transform 240ms cubic-bezier(0.16, 1, 0.3, 1);
  overflow-y: auto;
  padding: var(--nc-space-4);
  color: var(--nc-color-text);
}
.nc-steward-drawer__content.is-open {
  transform: translateX(0);
}
.nc-steward-drawer__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: var(--nc-space-3);
  border-bottom: 1px solid var(--nc-color-border);
  margin-bottom: var(--nc-space-4);
}
.nc-steward-drawer__branding {
  display: flex;
  align-items: center;
  gap: var(--nc-space-2);
}
.nc-steward-drawer__title {
  font-size: var(--nc-font-size-lg);
  font-weight: 700;
  margin: 0;
  color: var(--nc-color-text);
}
.nc-steward-drawer__notice {
  background: rgba(229, 169, 60, 0.15);
  border: 1px solid var(--nc-color-accent);
  padding: var(--nc-space-3);
  border-radius: var(--nc-radius-md);
  margin-bottom: var(--nc-space-4);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
}
.nc-steward-drawer__lead {
  font-size: var(--nc-font-size-md);
  line-height: 1.5;
  color: var(--nc-color-text);
  margin-bottom: var(--nc-space-4);
}
.nc-steward-drawer__features {
  background: var(--nc-color-bg);
  border: 1px solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  padding: var(--nc-space-3) var(--nc-space-4);
  margin-bottom: var(--nc-space-4);
}
.nc-steward-drawer__features h3 {
  font-size: var(--nc-font-size-sm);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--nc-color-accent);
  margin: 0 0 var(--nc-space-2);
}
.nc-steward-drawer__features ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
}
.nc-steward-drawer__privacy {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  line-height: 1.4;
  margin-bottom: var(--nc-space-4);
}
.nc-steward-drawer__actions {
  display: flex;
  flex-direction: column;
  gap: var(--nc-space-2);
  margin-top: auto;
  padding-top: var(--nc-space-4);
}
.nc-steward-drawer__status-card {
  background: var(--nc-color-bg);
  border: 1px solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  padding: var(--nc-space-3);
  margin-bottom: var(--nc-space-4);
}
.nc-steward-drawer__status-pill {
  font-size: var(--nc-font-size-xs);
  font-weight: 700;
  color: #48bb78;
  margin-bottom: 4px;
}
.nc-steward-drawer__node-id {
  font-family: monospace;
  font-size: var(--nc-font-size-sm);
  margin: 0 0 4px;
  color: var(--nc-color-text);
}
.nc-steward-drawer__meta {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  margin: 0;
}
.nc-steward-drawer__section {
  margin-bottom: var(--nc-space-4);
}
.nc-steward-drawer__section h3 {
  font-size: var(--nc-font-size-sm);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--nc-color-text-muted);
  margin: 0 0 var(--nc-space-2);
}
.nc-steward-drawer__perm-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
}

/* --- components/theme-controls --- */
.nc-theme-controls { display: grid; gap: var(--nc-space-4); }
.nc-theme-controls__group { margin: 0; padding: 0; border: 0; min-width: 0; }
.nc-theme-controls__group .nc-segmented__options { display: flex; flex-wrap: wrap; }
.nc-theme-controls__group .nc-segmented__option { flex: 1 1 auto; }
.nc-theme-controls__group .nc-segmented__option span { flex: 1; justify-content: center; }
.nc-theme-controls__footer { display: flex; justify-content: flex-end; }

/* --- components/venue-edit --- */
/* Venue quick-edit (Task 2.14) */
.nc-venue-edit {
  display: grid;
  gap: var(--nc-space-5);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
  box-sizing: border-box;
}

.nc-venue-edit__title {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-xl);
}

.nc-venue-edit__note,
.nc-venue-edit__status {
  margin: var(--nc-space-0);
  color: var(--nc-color-text-muted);
}

.nc-venue-edit__form {
  display: grid;
  gap: var(--nc-space-3);
  border: 0;
  margin: var(--nc-space-0);
  padding: var(--nc-space-0);
  min-width: 0;
}

.nc-venue-edit__label {
  display: grid;
  gap: var(--nc-space-1);
  font-weight: var(--nc-font-weight-bold);
}

.nc-venue-edit__input,
.nc-venue-edit__textarea {
  min-height: var(--nc-size-target);
  padding: var(--nc-space-2) var(--nc-space-3);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  background: var(--nc-color-surface-raised);
  color: var(--nc-color-text);
  font: inherit;
  box-sizing: border-box;
  width: 100%;
}

.nc-venue-edit__heading {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-lg);
}

.nc-venue-edit__blurb {
  display: grid;
  gap: var(--nc-space-2);
  padding: var(--nc-space-3);
  background: var(--nc-color-surface-raised);
  border-radius: var(--nc-radius-md);
}

.nc-venue-edit__blurb h3,
.nc-venue-edit__blurb p {
  margin: var(--nc-space-0);
}

/* --- components/venue-page --- */
/* Venue Page Component (Task 2.12) */
.nc-venue-page {
  display: grid;
  gap: var(--nc-space-5);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
  box-sizing: border-box;
}

.nc-venue-page__header {
  display: grid;
  gap: var(--nc-space-2);
}

.nc-venue-page__eyebrow {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
  margin: var(--nc-space-0);
}

.nc-venue-page__title {
  font-size: var(--nc-font-size-xl);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
  line-height: var(--nc-line-height-tight);
}

/* Status Banners */
.nc-venue-banner {
  display: grid;
  gap: var(--nc-space-1);
  padding: var(--nc-space-3) var(--nc-space-4);
  border-radius: var(--nc-radius-sm);
  border: var(--nc-size-border) solid;
}

.nc-venue-banner--active {
  background: var(--nc-color-kind-music-bg);
  border-color: var(--nc-color-kind-music-mark);
  color: var(--nc-color-kind-music-fg);
}

.nc-venue-banner--closed {
  background: var(--nc-color-kind-comedy-bg);
  border-color: var(--nc-color-kind-comedy-mark);
  color: var(--nc-color-kind-comedy-fg);
}

.nc-venue-banner__badge {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
}

.nc-venue-banner__text {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-sm);
  line-height: 1.5;
}

/* Section Containers */
.nc-venue-section {
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface-raised, var(--nc-color-surface));
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  box-sizing: border-box;
}

.nc-venue-section__title {
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
  border-bottom: var(--nc-size-border) solid var(--nc-color-border);
  padding-bottom: var(--nc-space-2);
}

/* Profile Grid */
.nc-venue-profile-grid {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: var(--nc-space-2) var(--nc-space-4);
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-sm);
  align-items: center;
}

.nc-venue-profile-grid dt {
  font-weight: var(--nc-font-weight-medium);
  color: var(--nc-color-text-muted);
}

.nc-venue-profile-grid dd {
  margin: var(--nc-space-0);
  color: var(--nc-color-text);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--nc-space-2);
}

.nc-venue-address {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--nc-space-1);
}

.nc-venue-btn-wrapper {
  margin-top: var(--nc-space-1);
}

.nc-venue-action-btn {
  min-height: var(--nc-size-target);
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: var(--nc-space-2) var(--nc-space-3);
  text-decoration: none;
}

.nc-venue-link {
  color: var(--nc-color-link);
  text-decoration: underline;
  min-height: var(--nc-size-target);
  display: inline-flex;
  align-items: center;
}

/* Blurbs */
.nc-venue-blurbs-list {
  display: grid;
  gap: var(--nc-space-3);
}

.nc-venue-blurb-card {
  padding: var(--nc-space-3);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  display: grid;
  gap: var(--nc-space-1);
}

.nc-venue-blurb-card__title {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-base);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
}

.nc-venue-blurb-card__date {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
}

.nc-venue-blurb-card__content {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text);
  line-height: 1.5;
}

/* Events Feed */
.nc-venue-events-container {
  display: grid;
  gap: var(--nc-space-2);
}

.nc-venue-no-events {
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) dashed var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
  text-align: center;
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
}

.nc-venue-no-events--closed {
  background: var(--nc-color-kind-comedy-bg);
  border-color: var(--nc-color-kind-comedy-mark);
  color: var(--nc-color-kind-comedy-fg);
  font-weight: var(--nc-font-weight-medium);
}

.nc-venue-events-list {
  list-style: none;
  margin: var(--nc-space-0);
  padding: var(--nc-space-0);
  display: grid;
  gap: var(--nc-space-2);
}

.nc-venue-event-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nc-space-3);
  padding: var(--nc-space-3);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
}

.nc-venue-event-item__time {
  display: flex;
  flex-direction: column;
  min-width: var(--nc-space-8);
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-accent-text);
  font-weight: var(--nc-font-weight-bold);
}

.nc-venue-event-item__main {
  flex: 1;
  display: grid;
  gap: var(--nc-space-1);
}

.nc-venue-event-item__title {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-base);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
}

.nc-venue-event-item__lineup {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
}

.nc-venue-event-item__action a {
  min-height: var(--nc-size-target);
  box-sizing: border-box;
}

.nc-venue-empty-text {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: var(--nc-space-0);
}

/* --- components/zine-card --- */
[data-node-type] { --node: var(--nc-color-node-entity); }
[data-node-type="article"] { --node: var(--nc-color-node-article); }
[data-node-type="review"] { --node: var(--nc-color-node-review); }
[data-node-type="letter"] { --node: var(--nc-color-node-letter); }
[data-node-type="editorial"] { --node: var(--nc-color-node-editorial); }
[data-node-type="event"] { --node: var(--nc-color-node-event); }
[data-node-type="venue"] { --node: var(--nc-color-node-venue); }
[data-node-type="missing"] { --node: var(--nc-color-node-missing); }

.nc-node-type {
  display: inline-flex;
  align-items: center;
  gap: var(--nc-space-2);
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-bold);
  letter-spacing: var(--nc-font-tracking-caps);
  text-transform: uppercase;
  color: var(--nc-color-text-muted);
}
.nc-node-type .nc-glyph { color: var(--node); }

.nc-zine-card {
  position: relative;
  display: grid;
  gap: var(--nc-space-3);
  padding: var(--nc-space-4);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  background: var(--nc-color-surface);
  transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease, opacity 180ms ease;
  cursor: pointer;
}
.nc-zine-card:hover, .nc-zine-card.is-hovered, .nc-zine-card.is-focused-node {
  border-color: var(--nc-color-accent);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.18), 0 0 0 1px var(--nc-color-accent);
  transform: translateY(-2px);
  z-index: 2;
}
.nc-zine-card.is-active {
  border-color: var(--nc-color-accent);
  box-shadow: 0 0 0 2px var(--nc-color-accent), 0 6px 24px rgba(0, 0, 0, 0.2);
  background: color-mix(in srgb, var(--nc-color-surface) 92%, var(--nc-color-accent) 8%);
}
.nc-zine-card.is-connected-peer {
  border-color: var(--nc-color-node-entity, #7BA7E8);
  box-shadow: 0 0 0 2px var(--nc-color-node-entity, #7BA7E8), 0 4px 16px rgba(123, 167, 232, 0.25);
  transform: translateY(-1px);
  z-index: 1;
}
.nc-zine-card.is-dimmed {
  opacity: 0.35;
  filter: grayscale(40%);
}
.nc-zine-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nc-space-2);
  flex-wrap: wrap;
}
.nc-zine-card__title { font-size: var(--nc-font-size-lg); line-height: var(--nc-font-line-height-snug); margin: 0; }
.nc-zine-card__link { color: var(--nc-color-text); text-decoration: none; }
.nc-zine-card__link:focus-visible { outline: none; }
.nc-zine-card:has(.nc-zine-card__link:focus-visible) { outline: var(--nc-size-focus-ring) solid var(--nc-color-focus); outline-offset: var(--nc-size-focus-offset); }
.nc-zine-card__meta, .nc-zine-card__summary { color: var(--nc-color-text-muted); }
.nc-zine-card__meta { font-size: var(--nc-font-size-sm); }
.nc-zine-card__summary {
  font-size: var(--nc-font-size-sm);
  line-height: var(--nc-font-line-height-normal);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin: 0;
}
.nc-zine-card__connections {
  display: grid;
  gap: var(--nc-space-2);
  padding-top: var(--nc-space-3);
  border-top: 1px solid var(--nc-color-border);
}
.nc-zine-card__conn-row {
  display: flex;
  align-items: center;
  gap: var(--nc-space-2);
  flex-wrap: wrap;
  font-size: var(--nc-font-size-xs);
}
.nc-zine-card__conn-badge {
  font-size: var(--nc-font-size-xs);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
  color: var(--nc-color-text-muted);
  font-weight: var(--nc-font-weight-bold);
  white-space: nowrap;
}
.nc-zine-card__pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  background: var(--nc-color-surface-sunken);
  border: 1px solid var(--nc-color-border);
  border-radius: var(--nc-radius-full);
  color: var(--nc-color-text);
  text-decoration: none;
  font-size: var(--nc-font-size-xs);
  max-width: 180px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: background 120ms ease, border-color 120ms ease;
  position: relative;
  z-index: 3;
}
.nc-zine-card__pill:hover {
  background: var(--nc-color-accent);
  color: var(--nc-color-accent-contrast, #121214);
  border-color: var(--nc-color-accent);
}
.nc-zine-card__pill-more {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
  font-weight: var(--nc-font-weight-bold);
}
.nc-zine-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nc-space-2);
  padding-top: var(--nc-space-2);
}
.nc-zine-card__read-btn {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent);
}
.nc-zine-card__conn-count {
  font-size: var(--nc-font-size-xs);
  color: var(--nc-color-text-muted);
}

/* --- components/zine-reader --- */
.nc-reader { display: grid; gap: var(--nc-space-5); container-type: inline-size; }
.nc-reader__header { display: grid; gap: var(--nc-space-2); }
.nc-reader__title { font-size: var(--nc-font-size-3xl); }
.nc-reader__title:focus { outline: none; }
.nc-reader__meta { color: var(--nc-color-text-muted); }
.nc-reader__sub { font-size: var(--nc-font-size-lg); }
.nc-reader__backlinks-dock { display: grid; gap: var(--nc-space-4); margin-top: var(--nc-space-4); padding-top: var(--nc-space-4); border-top: 2px solid var(--nc-color-border); }
.nc-reader__conn-block { display: grid; gap: var(--nc-space-2); }
.nc-reader__conn-desc { color: var(--nc-color-text-muted); font-size: var(--nc-font-size-sm); margin: 0; }
.nc-reader__links { display: grid; gap: var(--nc-space-3); }
.nc-reader__grid { display: grid; gap: var(--nc-space-3); margin: 0; padding: 0; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.nc-reader__events { display: grid; gap: var(--nc-space-2); margin: 0; padding: 0; }
.nc-reader__actions { display: flex; gap: var(--nc-space-3); }

.nc-prose { display: grid; gap: var(--nc-space-4); font-size: var(--nc-font-size-lg); line-height: var(--nc-font-line-height-normal); max-width: var(--nc-size-measure); }
.nc-prose h2, .nc-prose h3, .nc-prose h4 { font-size: var(--nc-font-size-xl); margin-top: var(--nc-space-3); }
.nc-prose ul { display: grid; gap: var(--nc-space-2); margin: 0; padding-inline-start: var(--nc-space-5); }
.nc-prose code { font-family: var(--nc-font-family-mono); font-size: 0.9em; padding: 0 var(--nc-space-1); background: var(--nc-color-surface-sunken); border-radius: var(--nc-radius-sm); }
.nc-prose a.is-missing { text-decoration-style: dashed; }

/* --- components/zkp-gate --- */
/* 21+ ZKP Gate Component (Task 4.4) */
.nc-zkp-gate {
  display: grid;
  gap: var(--nc-space-4);
  padding: var(--nc-space-4);
  background: var(--nc-color-surface);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-md);
  max-width: var(--nc-size-measure);
  margin-inline: auto;
}

.nc-zkp-gate__header {
  display: grid;
  gap: var(--nc-space-1);
}

.nc-zkp-gate__eyebrow {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-accent-text);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
  margin: var(--nc-space-0);
}

.nc-zkp-gate__title {
  font-size: var(--nc-font-size-lg);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
}

.nc-zkp-gate__subtitle {
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
  margin: var(--nc-space-0);
}

.nc-zkp-gate__panel {
  display: grid;
  gap: var(--nc-space-3);
}

.nc-zkp-gate__explainer {
  display: grid;
  gap: var(--nc-space-2);
  padding: var(--nc-space-3);
  background: var(--nc-color-bg);
  border: var(--nc-size-border) solid var(--nc-color-border);
  border-radius: var(--nc-radius-sm);
}

.nc-zkp-gate__explainer-title {
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-text);
  margin: var(--nc-space-0);
}

.nc-zkp-gate__list {
  margin: var(--nc-space-0);
  padding-left: var(--nc-space-4);
  display: grid;
  gap: var(--nc-space-1);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-text-muted);
}

.nc-zkp-gate__form {
  display: grid;
  gap: var(--nc-space-3);
}

.nc-zkp-gate__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nc-space-2);
  margin-top: var(--nc-space-2);
}

.nc-zkp-gate__actions button {
  min-height: var(--nc-size-target);
  box-sizing: border-box;
}

.nc-zkp-gate__banner {
  padding: var(--nc-space-3);
  border-radius: var(--nc-radius-sm);
  font-size: var(--nc-font-size-sm);
  font-weight: var(--nc-font-weight-medium);
}

.nc-zkp-gate__banner--error {
  background: var(--nc-color-kind-comedy-bg);
  color: var(--nc-color-kind-comedy-fg);
  border: var(--nc-size-border) solid var(--nc-color-kind-comedy-mark);
}

.nc-zkp-gate__banner--success {
  background: var(--nc-color-kind-music-bg);
  color: var(--nc-color-kind-music-fg);
  border: var(--nc-size-border) solid var(--nc-color-kind-music-mark);
}

.nc-zkp-gate__banner--info {
  background: var(--nc-color-kind-show-bg);
  color: var(--nc-color-kind-show-fg);
  border: var(--nc-size-border) solid var(--nc-color-kind-show-mark);
}

.nc-zkp-gate__card {
  display: grid;
  gap: var(--nc-space-2);
  padding: var(--nc-space-4);
  border-radius: var(--nc-radius-md);
}

.nc-zkp-gate__card--verified {
  background: var(--nc-color-kind-music-bg);
  border: var(--nc-size-border) solid var(--nc-color-kind-music-mark);
}

.nc-zkp-gate__badge {
  font-size: var(--nc-font-size-xs);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-kind-music-fg);
  text-transform: uppercase;
  letter-spacing: var(--nc-font-tracking-caps);
}

.nc-zkp-gate__card-title {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-md);
  font-weight: var(--nc-font-weight-bold);
  color: var(--nc-color-kind-music-fg);
}

.nc-zkp-gate__card-text {
  margin: var(--nc-space-0);
  font-size: var(--nc-font-size-sm);
  color: var(--nc-color-kind-music-fg);
}
