.hero-dot-grid{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.hero .eyebrow{position:relative;z-index:1}.hero .hero-line{display:none}
.reading-progress{position:fixed;top:0;left:0;height:3px;width:100%;background:var(--coral);transform:scaleX(0);transform-origin:left;z-index:100;pointer-events:none}
.title-mask{display:block;overflow:hidden;padding-bottom:.12em;margin-bottom:-.12em}.title-line{display:block}
.motion-ready .title-line{animation:title-enter 1.25s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.12s + var(--line)*.18s)}
.motion-ready header{animation:header-enter .9s cubic-bezier(.16,1,.3,1) both}
.motion-ready .eyebrow{animation:fade-enter 1s .2s both}.motion-ready .hero-bottom{animation:fade-enter 1.2s .6s both}
.motion-ready .hero-line{translate:0 var(--scroll,0px);animation:orbit-in 1.6s cubic-bezier(.16,1,.3,1) both}
.motion-ready .hero-line::after{content:'';position:absolute;inset:-45px;border:1px dashed #f43b4d66;border-radius:50%;animation:orbit 45s linear infinite;opacity:.6}
.motion-ready .reveal{opacity:0;transform:translateY(48px);transition:opacity .85s cubic-bezier(.16,1,.3,1) var(--delay,0ms),transform 1s cubic-bezier(.16,1,.3,1) var(--delay,0ms)}
.motion-ready .reveal.in-view{opacity:1;transform:translateY(0)}
.filters button{transition:background .25s,color .25s,transform .3s}.filters button:active{transform:scale(.94)}
nav a,.contact-link,footer>a:last-child{position:relative}nav a::after,footer>a:last-child::after{content:'';position:absolute;left:0;right:0;bottom:-7px;height:1px;background:var(--coral);transform:scaleX(0);transform-origin:right;transition:transform .35s}nav a:hover::after,footer>a:last-child:hover::after{transform:scaleX(1);transform-origin:left}
.round,.brief-button{transition:translate .3s ease,background .3s,transform .3s,box-shadow .3s}.brief-button:hover{box-shadow:0 12px 22px -12px #30302f99}.motion-ready dialog[open]{animation:dialog-enter .5s cubic-bezier(.16,1,.3,1)}.motion-ready dialog[open]::backdrop{animation:backdrop-enter .4s both}
@keyframes title-enter{from{transform:translateY(115%) rotate(3deg);opacity:0}to{transform:translateY(0) rotate(0);opacity:1}}@keyframes header-enter{from{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes orbit-in{from{opacity:0;transform:scale(.55) rotate(-35deg)}to{opacity:.7;transform:scale(1) rotate(0)}}@keyframes orbit{to{transform:rotate(360deg)}}@keyframes dialog-enter{from{opacity:0;transform:translateY(35px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes backdrop-enter{from{opacity:0}to{opacity:1}}
@media(max-width:700px){.motion-ready .reveal{transform:translateY(25px)}.motion-ready .reveal.in-view{transform:translateY(0)}.motion-ready .hero-line::after{animation:none}.motion-ready .title-line{animation-duration:1s}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important;translate:none!important}.reveal{opacity:1!important;transform:none!important}.reading-progress{display:none}.title-line{opacity:1!important;transform:none!important}}
