/* ============================================================
   BROMLEY MARINE DESIGN — Nemesis 2200
   Dark, cinematic, performance-marine system
   ============================================================ */

:root {
  /* Tones (set by Tweaks via JS on :root) */
  --accent: oklch(0.74 0.085 205);
  --accent-dim: oklch(0.62 0.075 205);
  --accent-ink: oklch(0.22 0.04 205);

  --ink: #0a0b0c;
  --surface: #111315;
  --surface-2: #16191c;
  --surface-3: #1d2125;
  --line: rgba(255, 255, 255, 0.09);
  --line-strong: rgba(255, 255, 255, 0.16);

  --fg: #f3f4f4;
  --fg-soft: #c4c8ca;
  --fg-dim: #868d91;
  --fg-faint: #565c60;

  --font-display: "Archivo", system-ui, sans-serif;
  --font-body: "Archivo", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, monospace;

  --maxw: 1320px;
  --gutter: clamp(20px, 5vw, 80px);

  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }

body {
  background: var(--ink);
  color: var(--fg);
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

::selection { background: var(--accent); color: var(--ink); }

img { display: block; max-width: 100%; }
button { font-family: inherit; cursor: pointer; }
a { color: inherit; text-decoration: none; }

/* ---------- Layout primitives ---------- */
.wrap { max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gutter); }
.section { position: relative; padding-block: clamp(80px, 12vh, 180px); }

/* ---------- Type ---------- */
.eyebrow {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.eyebrow::before {
  content: "";
  width: 28px; height: 1px;
  background: var(--accent);
  opacity: 0.7;
}
.eyebrow.no-rule::before { display: none; }

h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 800;
  line-height: 0.98;
  letter-spacing: -0.02em;
  font-stretch: 112%;
  text-wrap: balance;
}
.display {
  font-size: clamp(48px, 9vw, 132px);
  font-weight: 800;
  line-height: 0.92;
  letter-spacing: -0.025em;
}
.h-xl { font-size: clamp(38px, 6vw, 84px); }
.h-lg { font-size: clamp(30px, 4vw, 56px); }
.h-md { font-size: clamp(24px, 2.6vw, 38px); }
.lead { font-size: clamp(18px, 1.5vw, 23px); color: var(--fg-soft); line-height: 1.5; text-wrap: pretty; max-width: 60ch; }
.muted { color: var(--fg-dim); }
.mono { font-family: var(--font-mono); }
.upper { text-transform: uppercase; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  padding: 17px 30px;
  font-family: var(--font-mono);
  font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 500;
  border: 1px solid transparent;
  border-radius: 2px;
  transition: all 0.4s var(--ease);
  white-space: nowrap;
}
.btn .arr { transition: transform 0.4s var(--ease); }
.btn:hover .arr { transform: translateX(5px); }
.btn-primary { background: var(--accent); color: #07191c; }
.btn-primary:hover { background: var(--fg); color: var(--ink); }
.btn-ghost { background: transparent; color: var(--fg); border-color: var(--line-strong); }
.btn-ghost:hover { border-color: var(--fg); background: rgba(255,255,255,0.04); }
.btn-block { width: 100%; }

/* ---------- Cinematic placeholder ---------- */
.shot {
  position: relative; overflow: hidden;
  background: var(--surface);
  isolation: isolate;
}
.shot__scene { position: absolute; inset: 0; z-index: 0; }
.shot__grain {
  position: absolute; inset: 0; z-index: 2; pointer-events: none;
  opacity: 0.5; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
}
.shot__vignette {
  position: absolute; inset: 0; z-index: 3; pointer-events: none;
  background: radial-gradient(120% 100% at 50% 35%, transparent 40%, rgba(0,0,0,0.55) 100%);
}
.shot__label {
  position: absolute; z-index: 4; left: 18px; bottom: 16px;
  font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase;
  color: rgba(255,255,255,0.62);
  display: flex; align-items: center; gap: 9px;
}
.shot__label::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: var(--accent); box-shadow: 0 0 0 4px color-mix(in oklch, var(--accent) 22%, transparent);
}
.shot__corner {
  position: absolute; z-index: 4; top: 14px; right: 16px;
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.2em;
  color: rgba(255,255,255,0.4);
}

/* Atmospheric scene gradients */
.scene-ocean { background:
  linear-gradient(180deg, #1a2730 0%, #14202a 38%, #0c161d 52%, #0a1217 53%, #060c10 100%); }
.scene-ocean::after { content:""; position:absolute; inset:0;
  background:
   radial-gradient(120% 80% at 70% 18%, rgba(120,150,160,0.22), transparent 55%),
   linear-gradient(180deg, transparent 49%, rgba(255,255,255,0.05) 50%, transparent 52%); }
.scene-storm { background:
  linear-gradient(175deg, #20262b 0%, #161b20 40%, #0b1115 55%, #070b0e 100%); }
.scene-storm::after { content:""; position:absolute; inset:0;
  background: radial-gradient(90% 60% at 30% 10%, rgba(180,195,200,0.16), transparent 60%); }
.scene-dawn { background:
  linear-gradient(180deg, #2a2a2e 0%, #25232a 30%, #181a20 55%, #0a0d11 100%); }
.scene-dawn::after { content:""; position:absolute; inset:0;
  background: radial-gradient(80% 50% at 60% 22%, color-mix(in oklch, var(--accent) 30%, transparent), transparent 60%); }
.scene-deck { background:
  linear-gradient(180deg, #1c2024 0%, #15181c 50%, #0c0f12 100%); }
.scene-detail { background:
  linear-gradient(135deg, #20242a 0%, #14171b 60%, #0b0e11 100%); }
.scene-detail::after { content:""; position:absolute; inset:0;
  background: repeating-linear-gradient(115deg, transparent 0 22px, rgba(255,255,255,0.018) 22px 23px); }

/* ---------- Reveal on scroll ---------- */
.reveal { opacity: 0; transform: translateY(34px); transition: opacity 1s var(--ease), transform 1s var(--ease); }
.reveal.in { opacity: 1; transform: none; }
.reveal.d1 { transition-delay: 0.08s; }
.reveal.d2 { transition-delay: 0.16s; }
.reveal.d3 { transition-delay: 0.24s; }
.reveal.d4 { transition-delay: 0.32s; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  html { scroll-behavior: auto; }
}

/* ---------- Divider rule ---------- */
.rule { height: 1px; background: var(--line); border: 0; }

/* ---------- Misc ---------- */
.grid { display: grid; gap: clamp(20px, 3vw, 44px); }
.flex { display: flex; }
.tag {
  font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--fg-dim);
}
