/* Full-bleed imagery and restrained editorial navigation, informed by Runway. */
:root{--bg:#050a0d;--ink:#eeeeee;--muted:#b0b0b0;--accent:#dddddd;--unit:100svh;--gutter:5vw;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:auto}body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif;overflow-x:hidden}canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}a{color:inherit;text-decoration:none}a:focus-visible{outline:1px solid var(--accent);outline-offset:6px}header{position:fixed;inset:0 0 auto;z-index:3;padding:calc(env(safe-area-inset-top) + 25px) var(--gutter) 16px;display:flex;align-items:start;justify-content:space-between;gap:32px;background:linear-gradient(var(--bg),transparent)}.wordmark{font-size:12px;line-height:20px;letter-spacing:.18em;white-space:nowrap}nav{display:flex;gap:28px}nav a{font-size:11px;line-height:20px;color:var(--muted);padding:0 0 8px}nav a:hover,nav a[aria-current]{color:var(--ink)}main{position:relative;padding-top:calc(var(--unit)*.4);padding-bottom:calc(var(--unit)*.2);pointer-events:none}.chapter{position:relative;height:calc(var(--unit)*1.9)}.anchor{position:absolute;top:calc(var(--unit)*.8)}footer{position:fixed;inset:auto var(--gutter) calc(env(safe-area-inset-bottom) + 30px);z-index:2;display:grid;grid-template-columns:1fr auto auto;align-items:end;gap:40px;pointer-events:none}.caption{max-width:350px}#chapter-label,.index,.scroll-hint{font-size:9px;letter-spacing:.18em;line-height:1.5}#chapter-label{color:var(--accent)}.caption p{font-size:13px;line-height:1.65;color:var(--muted);margin:12px 0 0}.scroll-hint{pointer-events:auto;color:var(--muted);padding:12px 0}.scroll-hint span{margin-left:12px}.index{color:var(--muted);padding-bottom:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}#still-title,.fallback{position:fixed;inset:35% 6vw auto;text-align:center;font-size:clamp(28px,7vw,100px);font-weight:700;line-height:1.1;white-space:pre-line;pointer-events:none}#still-title{display:none}.fallback small{font-size:14px;font-weight:400}
@media(max-width:640px){:root{--gutter:6vw}header{display:block;padding-top:calc(env(safe-area-inset-top) + 20px)}.wordmark{font-size:11px}nav{margin-top:12px;gap:0;justify-content:space-between}nav a{font-size:10px;min-height:44px;padding:10px 0}footer{bottom:calc(env(safe-area-inset-bottom) + 22px);grid-template-columns:1fr auto;gap:16px}.caption{max-width:270px}.caption p{font-size:12px;margin-top:8px}.scroll-hint{grid-column:1;grid-row:2;padding:0;font-size:8px}.index{grid-column:2;grid-row:2;padding:0;font-size:8px}}
@media(max-height:480px){header{padding-top:12px}nav{margin-top:0}footer{bottom:12px}.caption p{max-width:300px;font-size:11px;margin-top:4px}}
@media(prefers-reduced-motion:reduce){#still-title{display:block}.scroll-hint span{display:none}}

#enter-link{position:fixed;z-index:2;cursor:crosshair;min-height:44px;border-radius:2px;touch-action:pan-y}#enter-link[hidden]{display:none}#enter-link:focus-visible{outline:1px solid #ffffff70;outline-offset:14px}body.travelling header,body.travelling footer{opacity:0;transition:opacity .25s}body.travelling #enter-link{pointer-events:none}.scroll-hint[data-enter]{letter-spacing:.14em}

@media(prefers-reduced-motion:reduce){#still-title{inset:47% 6vw auto;transform:translateY(-50%)}}

/* Treat only the interactive particle homepage as an unselectable canvas surface.
   Subpage biographies retain normal selection/copy. Native scrolling and zoom stay available. */
.particle-home,.particle-home *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.particle-home{touch-action:pan-y pinch-zoom}
.particle-home #enter-link{touch-action:pan-y pinch-zoom}

/* The active black hole replaces the desktop pointer only over the particle field. */
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .particle-home.particle-ready{cursor:none}
  .particle-home.particle-ready header,.particle-home.particle-ready footer{cursor:auto}
  .particle-home.particle-ready a{cursor:pointer}
  .particle-home.particle-ready #enter-link{cursor:none}
  .particle-home.particle-ready nav a{padding:0;min-height:0;line-height:1.2;margin-block:3px}
}

/* Empty hash targets should not paint a zero-size focus square. */
.particle-home .anchor:focus,.particle-home .anchor:focus-visible{outline:none}
