/* Reviewed homepage constellation; selectors cannot style other sections. */
#physics{--paper:#f5f4ee;--ink:#1b1d17;--muted:#77796f;--line:#d8d9cf;--font:'Avenir Next',Avenir,system-ui,sans-serif;--display:Poppins,'Avenir Next',sans-serif}
#physics button{font-family:var(--font);color:var(--ink);cursor:pointer;background:none;border:0}
#physics button:focus-visible{outline:2px solid #575e49;outline-offset:5px}
#physics .physics-atlas-heading{margin-bottom:25px}
#physics .physics-atlas-heading h2{font-family:var(--display);font-weight:500;font-size:clamp(36px,4.7vw,66px);line-height:1.06;letter-spacing:-.065em;margin:0}
#physics .physics-atlas-heading p{font-size:10px;letter-spacing:.15em;color:var(--muted);margin:0 0 9px}
#physics *{box-sizing:border-box}
#physics .navigation{border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:start;gap:20px}
#physics .navigation nav{display:flex;gap:27px}
#physics .navigation nav button{padding:0 0 11px;font-size:12px;border-bottom:1px solid transparent;color:var(--muted);white-space:nowrap}
#physics .navigation nav button[aria-pressed=true]{color:var(--ink);border-color:var(--ink)}
#physics .atlas{position:relative;width:100%;aspect-ratio:1200/610;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 51% 48%,#e9eade80,transparent 47%)}
#physics .orbits{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
#physics .orbits ellipse,#physics .orbits path{fill:none;stroke:#b5b8a6;stroke-width:.7;stroke-dasharray:2 6;opacity:.4;vector-effect:non-scaling-stroke}
#physics .theme{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:var(--w);padding:12px 0;text-align:center;z-index:1;transition:left .65s cubic-bezier(.2,.8,.2,1),top .65s cubic-bezier(.2,.8,.2,1),opacity .5s,width .6s}
#physics .theme strong{display:block;font:500 clamp(17px,2.5vw,37px)/1.04 var(--display);letter-spacing:-.055em}
#physics .theme small{display:block;color:var(--muted);font-size:10px;margin-top:8px;letter-spacing:.02em}
#physics .theme .theme-action{display:block;font:12px var(--font);margin-top:8px;color:#747a63;opacity:0;transition:opacity .2s}
#physics .theme:hover .theme-action,#physics .theme:focus-visible .theme-action{opacity:1}
#physics .theme.active strong{font-size:clamp(24px,3.6vw,52px)}
#physics .theme.distant{opacity:.65}
#physics .theme.distant strong{font-size:clamp(10px,1.05vw,15px);letter-spacing:-.025em}
#physics .theme.distant small,#physics .theme.distant .theme-action{display:none}
#physics .film-node{position:absolute;left:var(--x);top:var(--y);width:var(--w);transform:translate(-50%,-50%);padding:0;text-align:left;z-index:2;transition:left .65s cubic-bezier(.2,.8,.2,1),top .65s cubic-bezier(.2,.8,.2,1),width .65s cubic-bezier(.2,.8,.2,1),opacity .45s,filter .45s}
#physics .film-image{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;border-radius:6px;background:#dfe0d7;box-shadow:0 3px 12px #24301a0d;transition:box-shadow .2s,transform .2s}
#physics .film-image img,#physics .film-image video{width:100%;height:100%;object-fit:cover;display:block}
#physics .film-image video{position:absolute;inset:0;object-fit:contain;background:#181b15}
#physics .film-node .film-title{display:block;margin-top:5px;font-size:clamp(8px,.85vw,12px);line-height:1.2;color:#585e50;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#physics .film-node .play-mark{display:grid;place-items:center;position:absolute;right:6px;bottom:6px;width:21px;height:21px;background:#0e170b70;border:1px solid #fff6;border-radius:50%;font-size:9px;color:white;opacity:0;transition:opacity .2s}
#physics .film-node:hover,#physics .film-node:focus-visible{z-index:6!important;opacity:1!important;filter:none!important}
#physics .film-node:hover .film-image,#physics .film-node:focus-visible .film-image{transform:translateY(-4px);box-shadow:0 8px 26px #1c241a28}
#physics .film-node:hover .play-mark,#physics .film-node:focus-visible .play-mark{opacity:1}
#physics .film-node.distant{opacity:.31;filter:saturate(.35)}
#physics .film-node.distant .film-title{opacity:.5}
#physics .atlas-footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:12px 0 22px;gap:20px;font-size:11px;color:var(--muted)}
#physics .atlas-footer button{padding:3px 0;font-size:11px}
#physics .atlas-footer button span{margin-left:8px}
@media(max-width:700px){#physics .navigation{display:block}
#physics .navigation nav{gap:19px;overflow:auto;scrollbar-width:none}
#physics .navigation nav button{font-size:11px}
#physics .atlas{aspect-ratio:auto;min-height:420px;overflow:visible;background:none}
#physics .orbits{display:none}
#physics #themes{display:none}
#physics #films{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 13px;padding:24px 0}
#physics .film-node{position:relative;left:auto!important;top:auto!important;width:auto!important;transform:none;transition:none}
#physics .film-node.distant{display:none}
#physics .film-node .film-title{font-size:10px;white-space:normal;min-height:24px}
#physics .film-node .play-mark{opacity:1}
#physics .film-image{border-radius:6px}
#physics .atlas-footer{align-items:start}
#physics .atlas-footer p{max-width:26ch}
#physics .atlas-footer button{white-space:nowrap}}
@media(prefers-reduced-motion:reduce){#physics *,#physics *::before,#physics *::after{transition:none!important;scroll-behavior:auto!important}}
#physics #mobile-more{display:none}
@media(max-width:700px){#physics .film-node.mobile-hidden{display:none}
#physics #mobile-more{display:block;margin:0 0 20px auto;font-size:12px}
#physics #mobile-more[hidden]{display:none}}
#physics .film-node .film-title{white-space:normal;text-overflow:clip;max-width:100%}
#physics .theme .theme-action{position:absolute;top:100%;left:0;right:0;margin-top:0;pointer-events:none}
#physics .film-node[hidden]{display:none!important}
#physics .atlas{background:none}
#physics .orbits .cluster-wash{stroke:none;opacity:1}
/* Anchor the shared atmosphere palette to each theme, behind its text.
   The whole theme stacking context stays below film cards (z-index:2),
   so its negative-z halo cannot paint over videos. Only the halo animates. */
/* Reverse the glass-pill-dictation-typing light decay: the bright core
   and surrounding ambient wash rise together, with fast hover feedback.
   Keep only the lighting idea; no pill, text animation or video blur. */
#physics .theme{
  background:none;isolation:isolate;
  --theme-light:133,158,177;--theme-core:183,205,215;
  --halo-opacity:.6;--core-opacity:.26;--halo-scale:.85;--core-scale:.78;
  --halo-motion-duration:.55s;--halo-color-duration:.45s;
}
#physics .theme[data-group="deformation"]{--theme-light:199,157,144;--theme-core:232,197,177}
#physics .theme[data-group="contact"]{--theme-light:126,168,152;--theme-core:184,214,192}
#physics .theme::before,#physics .theme::after{
  content:"";position:absolute;left:50%;top:50%;z-index:-1;
  width:clamp(240px,26vw,370px);aspect-ratio:1;
  pointer-events:none;border-radius:50%;transform-origin:center;
  transition:transform var(--halo-motion-duration) cubic-bezier(.16,1,.3,1),opacity var(--halo-color-duration) ease-out;
}
#physics .theme::before{
  background:radial-gradient(circle closest-side,rgba(var(--theme-core),.75) 0%,rgba(var(--theme-core),.52) 18%,rgba(var(--theme-light),.42) 40%,rgba(var(--theme-light),.16) 62%,rgba(var(--theme-light),0) 100%);
  filter:blur(12px);opacity:var(--halo-opacity);
  transform:translate(-50%,-50%) scale(var(--halo-scale));
}
#physics .theme::after{
  width:clamp(150px,17vw,240px);
  background:radial-gradient(circle closest-side,rgba(var(--theme-core),.95) 0%,rgba(var(--theme-core),.72) 24%,rgba(var(--theme-light),.38) 54%,rgba(var(--theme-light),0) 100%);
  filter:blur(18px);opacity:var(--core-opacity);
  transform:translate(-50%,-50%) scale(var(--core-scale));
}
#physics .theme.distant::before,#physics .theme.distant::after{opacity:0}
#physics .theme:hover{filter:none}
@media(hover:hover){
  #physics .theme:not(.distant):hover{--halo-opacity:.6;--core-opacity:.26;--halo-scale:1.45;--core-scale:1.25;--halo-motion-duration:.28s;--halo-color-duration:.18s}
}
#physics .theme:not(.distant):focus-visible{--halo-opacity:.6;--core-opacity:.26;--halo-scale:1.45;--core-scale:1.25;--halo-motion-duration:.28s;--halo-color-duration:.18s}
/* Keep the color cue, but suppress expansion for reduced-motion users. */
@media(prefers-reduced-motion:reduce){
  #physics .theme::before{transform:translate(-50%,-50%) scale(.85)}
  #physics .theme::after{transform:translate(-50%,-50%) scale(.78)}
}
#physics .theme .theme-action{opacity:1;font-size:10px;top:calc(100% - 6px);text-decoration:underline;text-underline-offset:3px}
#physics .theme.distant{background:none}
#physics .film-node .film-title{font-size:clamp(9px,.9vw,13px);color:#515649}
#physics .film-image{border-radius:8px;box-shadow:0 3px 16px #24301a12}
@media(max-width:700px){#physics .atlas{min-height:0}
#physics .film-node[data-id="blackboard-wiping"]{order:-1}
#physics .atlas[data-focus="all"] .film-node[data-id="blackboard-wiping"],#physics .atlas[data-focus="flow"] .film-node[data-id="blackboard-wiping"]{grid-column:1/-1}}
#physics .theme strong{color:var(--ink)}
#physics .play-mark{display:none}
#physics .atlas-footer p{margin:0}
