/* ==========================================================
   3comp — design tokens + reset
   Ink void + ultramarine signal. Archivo / Public Sans / Plex Mono.
   ========================================================== */
:root{
  /* --- surface --- */
  --ink:#080F16;
  --ink-2:#0F1B26;
  --ink-3:#162733;
  --paper:#EEF1F4;
  --dim:rgba(238,241,244,.60);
  --dimmer:rgba(238,241,244,.48);
  --rule:rgba(238,241,244,.14);

  /* --- signal --- */
  --ultra:#2C4BEE;
  --ultra-lift:#6E8AFF;
  --ultra-glow:rgba(110,138,255,.20);

  /* --- ambient light of the current room — written by rooms.js --- */
  --amb-r:44; --amb-g:75; --amb-b:238;
  --amb-lr:107; --amb-lg:129; --amb-lb:243;
  --amb:rgb(var(--amb-r),var(--amb-g),var(--amb-b));
  --amb-lift:rgb(var(--amb-lr),var(--amb-lg),var(--amb-lb));

  /* --- camera, -1..1 — written by camera.js --- */
  --cam-x:0;
  --cam-y:0;

  /* --- scroll velocity, 0..1 — written by scroll.js --- */
  --vel:0;

  /* --- blackout bands at the top and bottom of the viewport (body::after
         in immersive.css). Dial these two; nothing else is involved. --- */
  --fade-top:10%;
  --fade-bottom:10%;
  /* px of footer currently on screen — written per frame by scroll.js, and
     used as the overlay's bottom inset so the band never covers the footer. */
  --fade-stop:0px;

  /* --- type --- */
  --f-display:'Archivo','Helvetica Neue',Arial,sans-serif;
  --f-body:'Public Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;
  --f-mono:'IBM Plex Mono',ui-monospace,Menlo,monospace;

  /* --- measure --- */
  --wrap:1180px;
  --gut:clamp(20px,5vw,60px);
  --sp:clamp(92px,12vw,180px);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;background:var(--ink);}
body{
  margin:0;background:var(--ink);color:var(--paper);
  font-family:var(--f-body);font-size:17px;line-height:1.62;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{max-width:100%;display:block;}
h1,h2,h3,h4{font-family:var(--f-display);font-weight:700;letter-spacing:-.024em;line-height:1.08;margin:0;}
p{margin:0;}
