:root {
--paper-0: oklch(96.6% 0.012 88);
--paper-1: oklch(98.0% 0.013 88);
--paper-2: oklch(91.8% 0.024 78);
--paper-edge: oklch(85.6% 0.020 78);
--paper-deep: var(--paper-2);
--background: var(--paper-0);
--surface: var(--paper-1);
--sand: var(--paper-2);
--border: var(--paper-edge);
--mist: oklch(89.0% 0.014 240);
--stone: oklch(76.0% 0.012 250);
--ink-0: oklch(20.0% 0.026 252);
--ink-1: oklch(24.4% 0.030 252);
--ink-2: oklch(34.6% 0.040 250);
--ink-3: oklch(50.6% 0.030 250);
--ink-4: oklch(62.6% 0.026 250);
--navy-1: var(--ink-0);
--navy-2: var(--ink-2);
--navy-deep: oklch(17.4% 0.024 252);
--on-background: var(--ink-0);
--on-surface: var(--ink-1);
--muted: var(--ink-4);
--rule-1: color-mix(in oklch, var(--ink-1) 6%, transparent);
--rule-2: color-mix(in oklch, var(--ink-1) 13%, transparent);
--rule-3: color-mix(in oklch, var(--ink-1) 22%, transparent);
--rule-ink: color-mix(in oklch, var(--ink-1) 86%, transparent);
--gold: oklch(76.4% 0.156 84);
--gold-ink: oklch(50.0% 0.142 76);
--gold-soft: color-mix(in oklch, var(--gold) 32%, transparent);
--gold-glow: color-mix(in oklch, var(--gold) 20%, transparent);
--gold-light: oklch(82.0% 0.082 78);
--tertiary: var(--gold);
--on-tertiary: oklch(20.0% 0.018 60);
--focus-ring: oklch(76.6% 0.144 78);
--primary: oklch(23.8% 0.028 250);
--on-primary: var(--paper-0);
--secondary: oklch(28.0% 0.030 250);
--on-secondary: var(--paper-1);
--cinnabar: oklch(50.4% 0.146 30);
--moss: oklch(48.4% 0.064 138);
--brass: oklch(50.6% 0.116 78);
--winter: oklch(70.0% 0.040 232);
--aurora: oklch(72.0% 0.080 196);
--aurora-soft: color-mix(in oklch, var(--aurora) 32%, transparent);
--aurora-glow: color-mix(in oklch, var(--aurora) 18%, transparent);
--twilight: oklch(34.0% 0.072 280);
--twilight-deep: oklch(22.0% 0.060 270);
--dawn: oklch(74.0% 0.094 64);
--dawn-soft: color-mix(in oklch, var(--dawn) 24%, transparent);
--star: oklch(92.0% 0.022 78);
--star-faint: color-mix(in oklch, var(--star) 32%, transparent);
--seafoam: var(--moss);
--success: var(--moss);
--state-ok: var(--moss);
--warning: var(--brass);
--state-warn: var(--brass);
--error: var(--cinnabar);
--contradiction: var(--cinnabar);
--state-lost: var(--cinnabar);
--state-stale: var(--stone);
--signal: var(--gold);
--signal-soft: var(--gold-soft);
--signal-edge: var(--gold-glow);
--state-live: var(--gold);
--speculative: var(--winter);
--inferred: var(--winter);
--star-glow: oklch(95.0% 0.058 88);
--star-glow-bright: oklch(98.0% 0.040 88);
--vela-night-indigo: var(--primary);
--vela-deep-navy: var(--secondary);
--vela-lantern-gold: var(--gold);
--vela-warm-brass: var(--brass);
--vela-paper-ivory: var(--paper-0);
--vela-frost-blue: var(--winter);
--vela-ember-red: var(--cinnabar);
--font-sans: "Inter Tight", "Inter", -apple-system, BlinkMacSystemFont, ui-sans-serif, system-ui, sans-serif;
--font-mono: "IBM Plex Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
--font-display: "Fraunces", "Source Serif Pro", Georgia, serif;
--font-serif: var(--font-display);
--font-body: var(--font-sans);
--font-poetic: var(--font-display);
--font-literary: var(--font-display);
--font-jp: var(--font-sans);
--display-xl: clamp(48px, 6.4vw, 88px);
--display-l: clamp(34px, 3.6vw, 52px);
--display-m: clamp(24px, 2.4vw, 34px);
--text-h1: 28px;
--text-h2: 22px;
--text-h3: 18px;
--text-h4: 16px;
--text-lede: 19px;
--text-body: 16.5px;
--text-small: 14.5px;
--text-meta: 12px;
--text-kicker: 10.5px;
--size-xs: 11px;
--size-sm: 13px;
--size-base: 14px;
--size-md: 17px;
--size-lg: 22px;
--size-xl: 32px;
--size-2xl: 36px;
--size-3xl: 48px;
--size-display: var(--display-xl);
--size-h1: var(--display-l);
--size-h2: var(--display-m);
--size-prose: 17px;
--size-prose-sm: 15px;
--size-meta: var(--text-meta);
--size-kicker: var(--text-kicker);
--size-imprint: var(--text-kicker);
--leading-tight: 1.04;
--leading-snug: 1.30;
--leading-italic: 1.32;
--leading-body: 1.55;
--leading-read: 1.74;
--leading-ui: 1.45;
--track-display: 0;
--track-tight: 0;
--track-body: 0;
--track-none: 0;
--track-mono-label: 0.06em;
--track-tick: 0.14em;
--track-eyebrow: 0.18em;
--track-imprint: 0.18em;
--track-label: 0.08em;
--s-0: 4px;
--s-1: 8px;
--s-2: 16px;
--s-3: 24px;
--s-4: 40px;
--s-5: 72px;
--s-6: 120px;
--s-7: 200px;
--space-1: var(--s-0);
--space-2: var(--s-1);
--space-3: 12px;
--space-4: var(--s-2);
--space-5: var(--s-3);
--space-6: 32px;
--space-7: var(--s-4);
--space-8: 56px;
--space-9: var(--s-5);
--space-10: var(--s-6);
--measure: 41.5rem;
--measure-wide: 52rem;
--measure-page: 1180px;
--container-px: clamp(20px, 4vw, 48px);
--container-py: clamp(28px, 5vh, 52px);
--gutter: var(--container-px);
--rhythm-section: var(--s-5);
--rhythm-block: var(--s-3);
--rhythm-tight: var(--s-1);
--bp-narrow: 480px;
--bp-mid: 720px;
--bp-wide: 1024px;
--bp-cinema: 1440px;
--radius-0: 0;
--radius-xs: 3px;
--radius-sm: 4px;
--radius-md: 6px;
--radius-lg: 10px;
--radius-xl: 14px;
--radius-full: 9999px;
--radius-1: var(--radius-sm);
--radius-2: var(--radius-md);
--radius-3: var(--radius-lg);
--lift-1: 0 1px 0 var(--rule-2);
--lift-2: 0 2px 8px color-mix(in oklch, var(--ink-1) 6%, transparent),
0 0 0 1px var(--rule-2);
--lift-3: 0 8px 24px color-mix(in oklch, var(--ink-1) 10%, transparent),
0 0 0 1px var(--rule-2);
--dur-fast: 180ms;
--dur-mid: 360ms;
--dur-slow: 1200ms;
--ease-out: cubic-bezier(0.20, 0, 0.13, 1);
--ease-trace: cubic-bezier(0.65, 0, 0.35, 1);
--ease: var(--ease-out);
--ease-spring: var(--ease-out);
--dur-1: var(--dur-fast);
--dur-2: var(--dur-mid);
--dur-3: var(--dur-mid);
--dur-4: var(--dur-slow);
}
.motion-fade-in-up {
opacity: 0;
transform: translateY(8px);
transition: opacity var(--dur-mid) var(--ease-out),
transform var(--dur-mid) var(--ease-out);
}
.motion-fade-in-up.is-visible {
opacity: 1;
transform: translateY(0);
}
.motion-gold-trace {
stroke-dasharray: var(--trace-length, 700);
stroke-dashoffset: var(--trace-length, 700);
transition: stroke-dashoffset var(--dur-slow) var(--ease-trace),
opacity var(--dur-mid) var(--ease-out);
}
.motion-gold-trace.is-traced {
stroke-dashoffset: 0;
}
.motion-scope-narrow {
transform-origin: left center;
transition: transform 800ms var(--ease-trace),
opacity var(--dur-mid) var(--ease-out);
}
.motion-scope-narrow.is-narrowed {
transform: scaleX(0.74);
}
.motion-hover-lift {
transition: transform var(--dur-fast) var(--ease-out),
border-color var(--dur-fast) var(--ease-out),
background var(--dur-fast) var(--ease-out);
}
.motion-hover-lift:hover,
.motion-hover-lift:focus-visible {
transform: translateY(-1px);
}
html {
font-size: 17px;
line-height: var(--leading-read);
scroll-behavior: smooth;
overscroll-behavior: none;
overflow-x: clip;
}
@media (min-width: 768px) {
html { font-size: 18px; }
}
body {
background: var(--paper-0);
color: var(--ink-1);
font-family: var(--font-body);
font-feature-settings: "ss01", "cv11", "calt";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
h1, h2 {
font-family: var(--font-display);
font-weight: 400;
letter-spacing: var(--track-display);
color: var(--ink-0);
text-wrap: balance;
}
code, pre, kbd, samp {
font-family: var(--font-mono);
font-size: 0.88em;
}
a.quiet-link {
color: inherit;
text-decoration: none;
background-image: linear-gradient(
to right,
color-mix(in oklch, var(--gold) 38%, transparent),
color-mix(in oklch, var(--gold) 38%, transparent)
);
background-size: 100% 1px;
background-repeat: no-repeat;
background-position: 0 100%;
padding-bottom: 0.06em;
transition: color var(--dur-fast) var(--ease-out),
background-image var(--dur-fast) var(--ease-out);
}
a.quiet-link:hover,
a.quiet-link:focus-visible {
color: var(--gold-ink);
background-image: linear-gradient(to right, var(--gold), var(--gold));
}
::selection {
background-color: var(--star-glow);
}
.t-display, .t-display-xl {
font-family: var(--font-display);
font-weight: 400;
font-size: var(--display-xl);
line-height: var(--leading-tight);
letter-spacing: var(--track-display);
color: var(--ink-0);
text-wrap: balance;
font-variation-settings: "opsz" 144;
}
.t-display-lg, .t-hero {
font-family: var(--font-display);
font-weight: 400;
font-size: var(--display-l);
line-height: 1.06;
letter-spacing: var(--track-display);
color: var(--ink-0);
text-wrap: balance;
font-variation-settings: "opsz" 144;
}
.t-h1 {
font-family: var(--font-display);
font-weight: 500;
font-size: var(--display-l);
line-height: 1.1;
letter-spacing: var(--track-tight);
color: var(--ink-0);
text-wrap: balance;
}
.t-poetic {
font-family: var(--font-display);
font-style: italic;
font-weight: 350;
letter-spacing: 0;
color: var(--ink-0);
}
.t-h2, .t-section {
font-family: var(--font-display);
font-weight: 500;
font-size: var(--display-m);
line-height: 1.18;
letter-spacing: var(--track-tight);
color: var(--ink-0);
}
.t-h3 {
font-family: var(--font-sans);
font-weight: 600;
font-size: var(--text-h3);
line-height: 1.41;
letter-spacing: 0;
color: var(--ink-0);
}
.t-body {
font-family: var(--font-sans);
font-weight: 400;
font-size: var(--text-body);
line-height: 1.57;
letter-spacing: 0;
color: var(--ink-1);
}
.t-body-sm {
font-family: var(--font-sans);
font-weight: 400;
font-size: var(--text-small);
line-height: 1.54;
letter-spacing: 0;
color: var(--ink-1);
}
.t-lede {
font-family: var(--font-sans);
font-weight: 400;
font-size: var(--text-lede);
line-height: 1.5;
letter-spacing: 0;
color: var(--ink-2);
max-width: 60ch;
text-wrap: pretty;
}
.t-read {
font-family: var(--font-display);
font-weight: 400;
font-size: var(--size-prose);
line-height: var(--leading-read);
color: color-mix(in oklch, var(--ink-1) 88%, var(--ink-2));
text-wrap: pretty;
}
.t-read p + p { margin-top: 1.1em; }
.t-read p:first-of-type { text-indent: 0; }
.t-label {
font-family: var(--font-sans);
font-weight: 600;
font-size: var(--size-xs);
line-height: var(--leading-ui);
letter-spacing: var(--track-label);
text-transform: uppercase;
color: var(--ink-3);
}
.t-tick {
font-family: var(--font-mono);
font-weight: 400;
font-size: var(--size-xs);
letter-spacing: var(--track-tick);
color: var(--ink-3);
font-variant-numeric: tabular-nums;
}
.t-mono {
font-family: var(--font-mono);
font-size: 12px;
line-height: 1.5;
font-weight: 450;
letter-spacing: 0;
color: var(--ink-1);
font-variant-numeric: tabular-nums;
}
.t-caption {
font-family: var(--font-sans);
font-weight: 400;
font-size: var(--size-xs);
line-height: var(--leading-ui);
letter-spacing: 0.01em;
color: var(--ink-3);
}
.t-kicker {
font-family: var(--font-mono);
font-weight: 500;
font-size: var(--text-kicker);
letter-spacing: var(--track-imprint);
text-transform: uppercase;
color: color-mix(in oklch, var(--gold) 76%, var(--ink-2));
}
.t-imprint {
font-family: var(--font-mono);
font-weight: 500;
font-size: var(--text-kicker);
letter-spacing: var(--track-imprint);
text-transform: uppercase;
color: color-mix(in oklch, var(--gold) 72%, var(--ink-2));
}
.t-jp {
font-family: var(--font-sans);
font-weight: 400;
}
.rule { background: var(--rule-2); height: 1px; width: 100%; border: 0; }
.rule--v { background: var(--rule-2); width: 1px; height: 100%; border: 0; }
.rule--heavy { background: var(--rule-3); }
.rule--gold {
height: 1px;
width: 100%;
border: 0;
background: linear-gradient(
to right,
transparent 0%,
color-mix(in oklch, var(--gold) 38%, transparent) 18%,
color-mix(in oklch, var(--gold) 56%, transparent) 50%,
color-mix(in oklch, var(--gold) 38%, transparent) 82%,
transparent 100%
);
}
.ticks {
height: 8px;
background-image: linear-gradient(to right,
var(--rule-3) 0 1px,
transparent 1px 100%);
background-size: 12px 100%;
background-repeat: repeat-x;
background-position: left bottom;
}
.ticks--tight { background-size: 6px 100%; }
.ticks--wide { background-size: 24px 100%; }
.focal-glow {
box-shadow: 0 0 24px var(--gold-glow);
transition: box-shadow var(--dur-mid) var(--ease-out);
}
.alidade {
height: 1px;
background: var(--gold);
box-shadow: 0 0 0 1px var(--gold-soft);
}
:focus-visible {
outline: 2px solid var(--focus-ring);
outline-offset: 2px;
border-radius: var(--radius-xs);
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
.motion-fade-in-up { opacity: 1 !important; transform: none !important; }
.motion-gold-trace { stroke-dashoffset: 0 !important; }
.motion-scope-narrow { transform: none !important; }
}