/* base — reset, root vars, fonts. Everything upstream reads from these. */

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }

/* --- WebGL-on gate: when WebGL takes over, CSS drop-shadow stacks on
   individual assets are suppressed so shadow rendering doesn't double up.
   Only removes drop-shadow(...) tokens; brightness/contrast filters stay. --- */
.webgl-on .asset {
  filter: brightness(0.94) contrast(1.06) saturate(0.95);
}
.webgl-on .work__laptop {
  filter: brightness(0.9) contrast(1.07) saturate(0.9);
}
.webgl-on .about__tile {
  filter: brightness(0.94) contrast(1.05) saturate(0.95);
}
.webgl-on .footer__mission img {
  filter: brightness(1.015) contrast(1.02) saturate(0.94);
}
.webgl-on .team__backing { box-shadow: none; }
.webgl-on .team__photo   { box-shadow: none; }
body {
  font-family: 'Space Grotesk', system-ui, sans-serif;
  color: var(--fg);
  background: var(--bg);
  overflow: hidden;
}
a { color: inherit; text-decoration: none; }
a:hover { color: inherit; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }

[data-scroll]::-webkit-scrollbar { width: 0; height: 0; }
[data-scroll] { scrollbar-width: none; }

@media (prefers-reduced-motion: reduce) {
  [data-reveal] { transition: none !important; }
}

:root {
  /* Palette — green theme (matches .dc.html default) */
  --bg: #33553f;
  --line: rgba(255, 255, 255, 0.5);
  --faint: rgba(255, 255, 255, 0.22);
  --fg: #f4f3ec;
  --muted: rgba(244, 243, 236, 0.62);
  --label: rgba(244, 243, 236, 0.78);
  --band: rgba(51, 85, 63, 0.9);
  --accent: #9fe3b4;
  --dark-accent: #0f2016;

  /* Scene rig — updated live by js/scene.js. Read by CSS via custom-property inheritance. */
  --sun-x: 15%;
  --sun-y: 85%;
  --sun-z: 950px;
  --sun-r: 255;
  --sun-g: 226;
  --sun-b: 172;
  --sun-intensity: 0;
  --sun-size: 1.5;
  --sun-scale: 1;
  --sun-elongation: 1;

  /* Ambient — the "everything not-directly-lit" fill. Sky = warm/cool wash
     from above, bounce = green kickback from the mat itself. Shadow color
     and rim-fill both derive from these. */
  --ambient-sky-r: 244;
  --ambient-sky-g: 243;
  --ambient-sky-b: 236;
  --ambient-bounce-r: 51;
  --ambient-bounce-g: 85;
  --ambient-bounce-b: 63;
  --ambient-intensity: 1;

  --grade-amount: 0;
  --grade-warm: #e8c98b;
  --grade-cool: #1a3a3f;

  --vignette: 0;
  --grain: 0.03;
  --haze: 0;
  --god-rays: 0;
  --bloom: 0;

  /* Window (muntin shadow) — position/size/rotation/skew/blur/intensity, all live-tunable */
  --window-x: -26%;
  --window-y: 25%;
  --window-w: 92%;
  --window-h: 110%;
  --window-rot: -14deg;
  --window-skew: 16deg;
  --window-blur: 18px;
  --window-intensity: 0;
  /* 3D projection + generated SVG pattern */
  --window-elevation: 14deg;
  --window-azimuth: 40deg;
  --window-distance: 1400px;
  --window-pattern: none;
}
