/* BLAST ONCE — design tokens
   Adapted from BlastBoard's "Soft Structuralism" palette.
   Polish-flag inspired: red accent + warm cream/white + deep charcoal text.
   No dark sections — light surfaces only.
*/

@font-face {
  font-family: "Geist";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("https://fonts.gstatic.com/s/geist/v3/gyByhwUxId8gMEwYGFEdMQ.woff2") format("woff2");
}
@font-face {
  font-family: "Geist Mono";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("https://fonts.gstatic.com/s/geistmono/v3/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeE9KQ.woff2") format("woff2");
}

:root {
  /* ── Brand red — sampled to match the logo. The ONLY accent.
        Used for CTAs, LIVE/active states, the spark in the wordmark.
        Never decorative. */
  --bo-red:        #c8161d;
  --bo-red-hover:  #a51015;
  --bo-red-soft:   #e23a40;
  --bo-red-glow:   #f37178;
  --bo-red-tint:   #fbeaeb;   /* very pale wash */

  /* ── Charcoal/ink — replaces BlastBoard's navy as the structural color.
        Warmer than pure black, reads industrial without feeling cold. */
  --ink-50:  #f5f4f2;
  --ink-100: #e8e6e2;
  --ink-200: #d2cfc8;
  --ink-300: #a8a39a;
  --ink-400: #7a756b;
  --ink-500: #524d44;
  --ink-600: #3a352e;
  --ink-700: #2a2622;
  --ink-800: #1a1815;
  --ink-900: #0d0c0a;

  /* ── Surface */
  --bo-paper:   #ffffff;
  --bo-cream:   #faf7f1;     /* warm alt page bg */
  --bo-cream-2: #f3eee4;     /* deeper cream for callouts */

  /* ── Borders */
  --bo-hair:    rgba(13, 12, 10, 0.10);
  --bo-hair-2:  rgba(13, 12, 10, 0.06);

  /* ── Type */
  --font-sans: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;

  /* ── Shadow — navy-tint shadow, no gray, no gloss */
  --bo-shadow:
    0 1px 2px rgba(13, 12, 10, 0.04),
    0 8px 24px -8px rgba(13, 12, 10, 0.06),
    0 32px 64px -24px rgba(13, 12, 10, 0.08);
  --bo-shadow-strong:
    0 1px 2px rgba(13, 12, 10, 0.05),
    0 12px 32px -10px rgba(13, 12, 10, 0.10),
    0 48px 96px -32px rgba(13, 12, 10, 0.12);
  --bo-shadow-red:
    0 8px 24px -8px rgba(200, 22, 29, 0.40);
  --bo-shadow-red-strong:
    0 16px 40px -12px rgba(200, 22, 29, 0.55);

  --bo-inset-light:
    inset 0 1px 1px rgba(255, 255, 255, 0.7),
    inset 0 -1px 0 rgba(13, 12, 10, 0.04);

  /* ── Motion */
  --ease-magnetic: cubic-bezier(0.32, 0.72, 0, 1);
  --ease-heavy:    cubic-bezier(0.22, 1, 0.36, 1);
}

/* Base */
html, body {
  background: var(--bo-paper);
  color: var(--ink-900);
  font-family: var(--font-sans);
  letter-spacing: -0.01em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  margin: 0;
}

/* Subtle grain — used on most sections (BlastBoard's noise overlay, lightened) */
.bo-noise {
  position: relative;
  isolation: isolate;
}
.bo-noise::before {
  content: "";
  position: absolute; inset: 0; pointer-events: none; z-index: 0;
  opacity: 0.04;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.7'/></svg>");
}

/* Hairline grid background — for hero/section atmosphere */
.bo-grid-light {
  background-image:
    linear-gradient(to right, rgba(13,12,10,0.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(13,12,10,0.05) 1px, transparent 1px);
  background-size: 56px 56px;
  -webkit-mask-image: radial-gradient(ellipse at center, black 25%, transparent 80%);
          mask-image: radial-gradient(ellipse at center, black 25%, transparent 80%);
}

/* Animation keyframes */
@keyframes bo-ping {
  75%, 100% { transform: scale(2); opacity: 0; }
}
@keyframes bo-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}
@keyframes bo-pulse {
  0%, 100% { opacity: 0.45; transform: scale(1); }
  50%      { opacity: 1;    transform: scale(1.12); }
}
@keyframes bo-spark {
  0%   { transform: scale(1); opacity: 0.9; }
  100% { transform: scale(6); opacity: 0; }
}

/* Selection */
::selection { background: var(--bo-red); color: #fff; }
