/* Public motion system: restrained entrances, tactile controls, quiet ambient light. */
.public-site{--motion-ease:cubic-bezier(.16,1,.3,1)}
.public-site>header{transition:box-shadow .35s ease}.public-site>header.motion-header-scrolled{box-shadow:0 8px 28px #0f162912}
.public-site .motion-card{transition:translate .45s var(--motion-ease),box-shadow .45s ease,border-color .3s ease}
.public-site .motion-action{transition:translate .3s var(--motion-ease),box-shadow .3s ease,background-color .25s ease,color .25s ease}
.public-site .motion-action:active{translate:0 1px}
.public-site .motion-action>svg:last-child,.public-site .motion-action>span:last-child>svg{transition:transform .35s var(--motion-ease)}
.public-site .nav-dropdown-menu{animation:menu-arrive .22s var(--motion-ease);transform-origin:top center}
.public-site :is(input,textarea,select){transition:border-color .25s ease,box-shadow .25s ease,background-color .25s ease}
.public-site>footer a{transition:color .25s ease}
.public-site .motion-intro{isolation:isolate;position:relative}
.public-site .motion-intro:before{content:"";position:absolute;z-index:-1;pointer-events:none;inset:0;background:radial-gradient(ellipse at 20% 25%,#818cf810,transparent 50%),radial-gradient(ellipse at 80% 65%,#38bdf810,transparent 50%);animation:intro-light 14s ease-in-out infinite alternate}
.public-site .motion-intro h1 svg path{stroke-dasharray:220;stroke-dashoffset:0;animation:headline-draw 1.4s .2s var(--motion-ease) both}
@media(hover:hover) and (pointer:fine){.public-site .motion-card:hover{translate:0 -5px;box-shadow:0 18px 38px -22px #3538cb45;border-color:#a5b4fc}.public-site .motion-action:hover{translate:0 -2px;box-shadow:0 8px 18px -12px #3538cb80}.public-site .motion-action:hover>svg:last-child,.public-site .motion-action:hover>span:last-child>svg{transform:translateX(3px)}}
@keyframes menu-arrive{from{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}
@keyframes intro-light{from{opacity:.4}to{opacity:1}}
@keyframes headline-draw{from{stroke-dashoffset:220}to{stroke-dashoffset:0}}
@media(max-width:640px){.public-site .motion-intro:before{animation:none}}
@media(prefers-reduced-motion:reduce){.public-site *,.public-site *:before,.public-site *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.public-site .motion-card,.public-site .motion-action{translate:none!important}}
@media print{.public-site *{animation:none!important;transition:none!important}}
/* Shared motion for the public hero sections. Transform/opacity only. */
.hero-illustration{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.hero-art .hero-art-core{display:none}.hero-art .hero-orbit{inset:0;border-color:#a5b4fc18}.hero-art .hero-orbit--inner{inset:12%;border-style:solid}.hero-art .hero-art-glow{inset:-20%}.hero-art .hero-art-token--1{top:15%;left:0}.hero-art .hero-art-token--2{top:49%;right:-2%}.hero-art .hero-art-token--3{bottom:1%;left:25%}.hero-art.hero-art--contact{z-index:0}.hero-art.hero-art--contact .hero-art-token--1{top:25%;left:0}.hero-art.hero-art--contact .hero-art-token--2{top:65%;right:0}.hero-art.hero-art--contact .hero-art-token--3{display:none}.hero-art.hero-art--blog .hero-art-token--3{display:none}.hero-art.hero-art--blog .hero-art-token--1{left:-2%;top:12%}.hero-art.hero-art--blog .hero-art-token--2{right:-3%;top:64%}.scene-float{animation:scene-float 8s ease-in-out infinite;transform-origin:center}.scene-flow{animation:scene-flow 24s linear infinite}.scene-scan{animation:scene-scan 5s ease-in-out infinite}@keyframes scene-float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-12px) rotate(1deg)}}@keyframes scene-flow{to{stroke-dashoffset:-384}}@keyframes scene-scan{0%,100%{opacity:.2;transform:translateY(0)}50%{opacity:1;transform:translateY(65px)}}
.motion-hero{isolation:isolate}
.hero-art{position:absolute;width:430px;height:430px;right:-125px;top:50%;margin-top:-215px;pointer-events:none;z-index:-1;color:#a5b4fc;opacity:.7}
.hero-art-glow{position:absolute;inset:5%;border-radius:50%;background:radial-gradient(circle,#6366f133,transparent 68%);animation:hero-breathe 7s ease-in-out infinite alternate}
.hero-orbit{position:absolute;inset:8%;border:1px solid #a5b4fc28;border-radius:50%;animation:hero-spin 36s linear infinite}
.hero-orbit:before{content:"";position:absolute;top:14%;left:14%;width:7px;height:7px;border-radius:50%;background:#a5b4fc;box-shadow:0 0 18px #818cf8}
.hero-orbit--inner{inset:23%;border-style:dashed;animation-direction:reverse;animation-duration:48s}
.hero-art-core{position:absolute;inset:35%;border:1px solid #a5b4fc40;border-radius:28px;background:linear-gradient(145deg,#818cf81a,#0f162966);display:grid;place-items:center;animation:hero-drift 8s ease-in-out infinite}
.hero-art-core svg{width:80%;stroke:currentColor;stroke-width:1}
.hero-art-token{position:absolute;width:96px;height:65px;padding:12px 15px;background:linear-gradient(140deg,#253257e6,#131b32e6);border:1px solid #a5b4fc40;border-radius:14px;box-shadow:0 12px 35px #0002;animation:hero-drift 7s ease-in-out infinite}
.hero-art-token span{font-size:19px;font-weight:600;letter-spacing:-.5px}.hero-art-token i{display:none;height:3px;background:#a5b4fc40;border-radius:3px;margin-top:7px}.hero-art-token i:last-child{width:60%}
.hero-art-token--1{top:13%;left:19%}.hero-art-token--2{top:46%;right:3%;animation-delay:-2.5s}.hero-art-token--3{bottom:9%;left:22%;animation-delay:-4.5s}
.hero-art--blog .hero-art-token{height:91px;width:112px;transform:rotate(-6deg)}.hero-art--blog .hero-art-token i{display:block}.hero-art--blog .hero-art-core{border-radius:50%}
.hero-art--contact{right:4%;z-index:0;opacity:.85}.hero-art--contact .hero-art-core{border-radius:50%}.hero-art--contact .hero-art-token{width:72px;height:60px;text-align:center}.hero-art--contact .hero-art-core svg{opacity:.6}
.hero-spark{position:absolute;width:4px;height:4px;border-radius:50%;background:#c4b5fd;animation:hero-breathe 4s ease-in-out infinite alternate}.hero-spark--1{top:20%;right:24%}.hero-spark--2{bottom:25%;right:25%;animation-delay:-2s}.hero-spark--3{top:51%;left:9%;animation-delay:-1s}
.motion-hero h1{animation:hero-enter .85s cubic-bezier(.2,.65,.3,1) both}.motion-hero h1+p{animation:hero-enter .85s .12s cubic-bezier(.2,.65,.3,1) both}
.motion-hero .contact-wrap{position:relative;z-index:1}.motion-hero #search-box{animation:hero-enter .85s .22s ease both}
.motion-hero h1 span{background-size:180% 100%}
.motion-paused .hero-art *,.motion-intro.motion-paused:before{animation-play-state:paused!important}
@keyframes hero-spin{to{transform:rotate(360deg)}}
@keyframes hero-drift{0%,100%{translate:0 0;rotate:-4deg}50%{translate:0 -16px;rotate:3deg}}
@keyframes hero-breathe{from{opacity:.35;transform:scale(.92)}to{opacity:1;transform:scale(1.06)}}
@keyframes hero-enter{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1280px){.hero-art:not(.hero-art--contact){right:1%;opacity:.85}}
@media(max-width:1000px){.hero-art--contact{right:-180px;opacity:.3}}
@media(max-width:640px){.hero-art{right:-245px;opacity:.25}.hero-art--contact{right:-265px;opacity:.2}.hero-art-token{animation:none}.hero-orbit--inner{display:none}}
/* Artwork has its own column, so it never sits behind search controls. */
@media(min-width:1100px){.motion-hero .hero-art{width:450px;height:400px;right:max(32px,calc((100vw - 1230px)/2));opacity:1;margin-top:-180px}.motion-hero:not(.contact-hero)>div.max-w-4xl{max-width:1280px;text-align:left;padding-right:540px}.motion-hero:not(.contact-hero) h1{font-size:clamp(40px,4vw,58px)}.motion-hero:not(.contact-hero) p,.motion-hero #search-box,.motion-hero #results-area,.motion-hero:not(.contact-hero) form{margin-left:0}.contact-hero.motion-hero p{max-width:525px}.motion-hero:not(.contact-hero){min-height:500px}}
@media(max-width:1099px){.motion-hero:not(.contact-hero){display:flex;flex-direction:column}.motion-hero:not(.contact-hero)>.hero-art{position:relative;order:2;right:auto;top:auto;margin:20px auto 0;width:360px;height:320px;opacity:1}.contact-hero.motion-hero .hero-art{right:-180px;opacity:.15}.motion-hero:not(.contact-hero)>.hero-art .hero-art-token{animation:hero-drift 7s ease-in-out infinite}}
@media(max-width:640px){.motion-hero:not(.contact-hero)>.hero-art{width:270px;height:245px;margin-top:24px}.hero-art-token span{font-size:16px}.motion-hero .hero-art-token{width:76px;height:55px;padding:10px}.motion-hero .hero-art--blog .hero-art-token{width:82px;height:70px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}.motion-hero *,.motion-hero *:before{animation:none!important;transition:none!important}}
