/* Original three-node mark, drawn as SVG. No raster logo or wordmark. */
.site-intro{display:none;position:fixed;inset:0;z-index:10000;place-items:center;background:#0c1020;pointer-events:none;contain:paint}
html.intro-playing .site-intro{display:grid;animation:intro-curtain .55s 2.42s cubic-bezier(.76,0,.24,1) both}
.intro-symbol{width:clamp(180px,21vw,280px);height:auto;overflow:visible}
.intro-node{transform-box:fill-box;transform-origin:center;opacity:0}
.intro-join,.intro-ring{stroke-dasharray:1;stroke-dashoffset:1}
.intro-playing .intro-node{animation:intro-node-in .32s cubic-bezier(.16,1,.3,1) both}
.intro-playing .intro-node-a{animation-delay:.08s}.intro-playing .intro-node-b{animation-delay:.30s}.intro-playing .intro-node-c{animation-delay:.52s}
.intro-playing .intro-join{animation:intro-connect .28s cubic-bezier(.65,0,.35,1) both}
.intro-playing .intro-join-a{animation-delay:1s}.intro-playing .intro-join-b{animation-delay:1.16s}.intro-playing .intro-join-c{animation-delay:1.32s}
.intro-playing .intro-ring{animation:intro-connect .50s 1.72s cubic-bezier(.65,0,.35,1) both}
html.intro-revealing .hero-copy{animation:intro-content .65s cubic-bezier(.22,1,.36,1) both}
@keyframes intro-node-in{from{opacity:0;transform:scale(.55) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes intro-connect{to{stroke-dashoffset:0}}
@keyframes intro-curtain{0%{clip-path:inset(0 0 0 0);visibility:visible}99%{visibility:visible}100%{clip-path:inset(0 0 100% 0);visibility:hidden}}
@keyframes intro-content{from{opacity:.45;transform:translateY(18px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){html.intro-playing .site-intro{display:none;animation:none}html.intro-revealing .hero-copy{animation:none}}
