/* generated by build.mjs — edit themes/themes.mjs instead */
:root {
  --bg: #120608;
  --bg-gradient: radial-gradient(75% 55% at 50% 0%, rgba(255,45,85,0.16), transparent 60%), radial-gradient(60% 45% at 50% 110%, rgba(201,209,224,0.08), transparent 65%);
  --surface: rgba(38,10,16,0.82);
  --ink: #fdece8;
  --ink-dim: #b08a90;
  --accent: #ff2d55;
  --accent-2: #c9d1e0;
  --on-accent: #240409;
  --line: rgba(255,45,85,0.24);
  --sign-ink: #ff2d55;
  --sign-tracking: 0.08em;
  --sign-shadow: 0 0 32px rgba(255,45,85,0.5);
  --card-radius: 12px;
  --grain-opacity: 0.06;
  --font-display: "Russo One", Georgia, serif;
  --font-body: "Hind", system-ui, -apple-system, sans-serif;
  --grain-url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
      .beam{position:absolute;top:-10vh;width:18vw;height:60vh;opacity:.18;filter:blur(12px)}
      .beam.b1{left:18vw;transform:rotate(14deg);background:linear-gradient(180deg,rgba(255,45,85,.9),transparent 70%)}
      .beam.b2{right:18vw;transform:rotate(-14deg);background:linear-gradient(180deg,rgba(201,209,224,.7),transparent 70%)}
      .sparks b{position:absolute;bottom:-4vh;left:var(--x);width:6px;height:6px;border-radius:50%;background:#ff2d5588;animation:spark 11s linear infinite;animation-delay:var(--d)}
      @keyframes spark{to{transform:translate(-18px,-114vh);opacity:0}}
