/* Motion layer. Content remains visible when JavaScript is unavailable. */
.hero{position:relative;isolation:isolate;background:linear-gradient(115deg,#f5f8f7 15%,#eaf3ed 65%,#f2f7ec)}.hero:before,.hero:after{content:"";position:absolute;pointer-events:none;z-index:-1;border-radius:50%;filter:blur(24px)}.hero:before{width:530px;height:530px;right:-180px;top:-160px;background:radial-gradient(circle,#d3f17b50,transparent 70%);animation:ambient-drift 16s ease-in-out infinite alternate}.hero:after{width:550px;height:550px;left:30%;bottom:-400px;background:radial-gradient(circle,#007d801a,transparent 70%);animation:ambient-drift 21s ease-in-out infinite alternate-reverse}.hero .eyebrow{animation:banner-in .7s both}.hero h1{animation:banner-in .9s .12s both}.hero .intro{animation:banner-in .9s .24s both}.hero .actions{animation:banner-in .9s .36s both}.hero-note{animation:banner-in .9s .48s both}.hero h1 span{background:linear-gradient(100deg,#007d80 10%,#0b585e 40%,#2a9c88 60%,#007d80 85%);background-size:220% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:title-flow 9s linear infinite}.lab-visual{box-shadow:0 24px 60px #173e4210;transition:transform .35s ease,box-shadow .35s ease;transform:perspective(1100px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));animation:visual-in 1.2s .2s both}.lab-visual>svg{animation:instrument-float 7s ease-in-out infinite;transform-origin:50% 50%}.orbit{fill:none;stroke:#007d80;stroke-width:1.8;stroke-dasharray:30 940;transform-origin:260px 210px;animation:orbit-turn 19s linear infinite;opacity:.65}.orbit-1{stroke:#739b41;stroke-dasharray:20 750;animation-duration:14s;animation-direction:reverse}.signal-beam{fill:none;stroke:#007d80;stroke-width:1;stroke-dasharray:8 450;animation:signal-travel 5s linear infinite;opacity:.35}.signal-dot{fill:#007d80;animation:signal-pulse 3.8s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.scan-line{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 42%,#ffffff55 49%,#d3f17b22 50%,transparent 57%);transform:translateY(-100%);animation:scan-pass 9s ease-in-out infinite}.visual-top,.visual-bottom{z-index:2}.motion-control{position:absolute;right:32px;bottom:15px;background:#ffffff99;border:1px solid #d3e1da;border-radius:20px;color:#46636a;font-size:11px;padding:6px 12px;cursor:pointer;z-index:3}.motion-control:before{content:"Ⅱ";margin-right:6px}.motion-control[aria-pressed=true]:before{content:"▷"}.button{position:relative;overflow:hidden;transition:transform .22s,box-shadow .22s,background .22s}.button:hover{transform:translateY(-3px);box-shadow:0 8px 20px #122b361b}.button:active{transform:translateY(0)}.button:after{content:"";position:absolute;inset:-50%;background:linear-gradient(110deg,transparent 40%,#ffffff28 50%,transparent 60%);transform:translateX(-110%);pointer-events:none}.button:hover:after{animation:button-sheen .65s ease}.card{transition:transform .3s,box-shadow .3s,border-color .3s}.card:hover{transform:translateY(-7px);box-shadow:0 16px 35px #122b3610;border-color:#99c5ba}.category-icon{transition:transform .4s}.card:hover .category-icon{transform:translateY(-4px) rotate(-4deg)}.text-link{display:inline-block;transition:transform .25s}.text-link:hover{transform:translateX(5px)}.links>a:not(.button){position:relative}.links>a:not(.button):after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:2px;background:var(--teal);transform:scaleX(0);transform-origin:left;transition:transform .25s}.links>a:hover:after{transform:scaleX(1)}.header{transition:box-shadow .3s}.header.scrolled{box-shadow:0 5px 22px #122b3610}.reading-progress{position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--teal);transform:scaleX(0);transform-origin:left;pointer-events:none}.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--reveal-delay,0ms),transform .7s var(--reveal-delay,0ms),box-shadow .3s,border-color .3s}.reveal.revealed{opacity:1;transform:translateY(0)}.card.revealed:hover{transform:translateY(-7px)}details[open] p{animation:banner-in .35s both}.motion-paused *,.motion-paused :before,.motion-paused :after{animation-play-state:paused!important}.motion-paused .reveal{opacity:1;transform:none;transition:none}.motion-paused .lab-visual{transform:none}.motion-paused .hero h1 span{color:var(--teal)}
@keyframes ambient-drift{from{transform:translate(0,0)}to{transform:translate(-80px,45px)}}@keyframes banner-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes visual-in{from{opacity:0;translate:0 20px}to{opacity:1;translate:0 0}}@keyframes instrument-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes orbit-turn{to{transform:rotate(360deg)}}@keyframes signal-pulse{0%,100%{opacity:.35;transform:scale(.7)}50%{opacity:1;transform:scale(1.3)}}@keyframes signal-travel{to{stroke-dashoffset:-458}}@keyframes scan-pass{0%,15%{transform:translateY(-100%)}65%,100%{transform:translateY(100%)}}@keyframes title-flow{to{background-position:220% center}}@keyframes button-sheen{to{transform:translateX(110%)}}
@media(max-width:720px){.hero:before,.hero:after{filter:none}.hero:before{width:300px;height:300px}.lab-visual{transform:none!important;box-shadow:0 12px 28px #173e4210}.lab-visual>svg{animation-duration:9s}.scan-line{display:none}.motion-control{right:20px;bottom:8px}.hero-grid{padding-bottom:48px}.reveal{transform:translateY(14px)}.card:hover,.card.revealed:hover{transform:none;box-shadow:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}.lab-visual{transform:none!important}.hero h1 span{color:var(--teal)}.button:hover,.card:hover,.card.revealed:hover,.text-link:hover{transform:none}.scan-line{display:none}}
