/* pulsecast — a late-night mixer. Plum dark, warm violet and coral, soft italic display;
   a waveform runs under the title and between sections.
   Display: Fraunces italic. Text: Onest. Code: JetBrains Mono. */

:root {
  --page-bg: #170d16; --page-text: #f2e5ef; --page-muted: #b49fb1; --page-line: #2d1d2b;
  --page-accent: #b98cff; --strong: #fff6fc; --surface: #1f1320; --raise: #2a1a2a;
  --code-bg: #1d111d; --code-text: #ffd0e0;
  --page-ui: "Onest", system-ui, sans-serif;
  --display: "Fraunces", Georgia, serif;
  --mono: "JetBrains Mono", ui-monospace, monospace;
  --coral: #ff8fa3;
  --k-ink: #e6d4e2; --k-accent: #b98cff; --k-b: #ff8fa3; --k-c: #ffd36e; --k-ok: #ff8fa3; --k-muted: #6f5770; --k-file: #b49fb1;
  color-scheme: dark;
}
.hero h1 { font: 700 clamp(64px, 10vw, 128px)/0.9 var(--display); font-style: italic; font-variation-settings: "opsz" 144, "SOFT" 100;
  letter-spacing: -0.03em; background: linear-gradient(90deg, var(--page-accent), var(--coral)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.part > h2 { font: 650 clamp(28px, 3.4vw, 42px)/1.05 var(--display); font-style: italic; font-variation-settings: "opsz" 96, "SOFT" 100; color: var(--strong); }
.wave { display: block; width: 100%; height: 60px; margin: 14px 0 0; }
.wave path { fill: none; stroke: var(--coral); stroke-width: 2; vector-effect: non-scaling-stroke; opacity: 0.9; }
.part + .part::before {
  content: ""; display: block; height: 14px; margin-bottom: 40px; opacity: 0.45;
  background: radial-gradient(circle at 50% 50%, var(--page-accent) 1.5px, transparent 2px) 0 50% / 16px 14px repeat-x;
}
.fig { padding: 16px; background: var(--surface); border: 1px solid var(--page-line); border-radius: 18px; }
.dg .node { fill: #1a1019; }
.dg .lab-bg { fill: var(--surface); }
.dg .halo { stroke: var(--surface); }
pre.term { border-radius: 14px; }
