@font-face { font-family: "Geist"; src: url("/shared/fonts/geist-latin.woff2") format("woff2"); font-weight: 100 900; font-display: swap; }
@font-face { font-family: "Geist Mono"; src: url("/shared/fonts/geist-mono-latin.woff2") format("woff2"); font-weight: 100 900; font-display: swap; }

:root {
  --obsidian: #09080b;
  --stone: #141217;
  --stone-2: #1d1a21;
  --line: rgba(232, 226, 245, 0.09);
  --bone: #efe9dc;
  --bone-dim: rgba(239, 233, 220, 0.62);
  --bone-faint: rgba(239, 233, 220, 0.38);
  --violet: #8b5cf6;
  --violet-light: #c4b5fd;
  --violet-glow: #a78bfa;
  --mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --sans: "Geist", ui-sans-serif, system-ui, sans-serif;
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; }
body {
  background: var(--obsidian);
  color: var(--bone);
  font-family: var(--sans);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
a { color: inherit; }
img, svg, canvas { display: block; }

/* film grain — the etched paper texture from the reference plates */
.grain::after {
  content: ""; position: fixed; inset: -50%; pointer-events: none; z-index: 50; opacity: .07;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation: grain 1.2s steps(6) infinite;
}
@keyframes grain { 0%,100% { transform: translate(0,0) } 20% { transform: translate(-3%,2%) } 40% { transform: translate(2%,-4%) } 60% { transform: translate(-4%,-1%) } 80% { transform: translate(3%,3%) } }
@media (prefers-reduced-motion: reduce) { .grain::after { animation: none; } }

/* option switcher shared by every plate */
.lab-nav {
  position: fixed; left: 50%; bottom: 18px; transform: translateX(-50%); z-index: 60;
  display: flex; gap: 2px; padding: 4px; border-radius: 999px;
  background: rgba(14, 12, 17, 0.72); border: 1px solid var(--line);
  backdrop-filter: blur(14px) saturate(140%); -webkit-backdrop-filter: blur(14px) saturate(140%);
  font: 500 12px/1 var(--mono); letter-spacing: .02em;
}
.lab-nav a {
  text-decoration: none; color: var(--bone-faint); padding: 8px 12px; border-radius: 999px;
  transition: color .2s, background .2s; white-space: nowrap;
}
.lab-nav a:hover { color: var(--bone); }
.lab-nav a[aria-current="page"] { color: var(--bone); background: rgba(139, 92, 246, 0.22); }
.lab-nav.paper { background: rgba(236, 230, 216, 0.78); border-color: rgba(18, 16, 21, 0.14); }
.lab-nav.paper a { color: rgba(18, 16, 21, 0.5); }
.lab-nav.paper a:hover, .lab-nav.paper a[aria-current="page"] { color: #121015; }
.lab-nav.paper a[aria-current="page"] { background: rgba(139, 92, 246, 0.16); }
@media (max-width: 560px) { .lab-nav a { padding: 8px 9px; } .lab-nav .lbl { display: none; } }

:focus-visible { outline: 2px solid var(--violet-light); outline-offset: 3px; }
