/* Product motion: one short entrance, then effects only on interaction. */
.hero-stage{position:relative;isolation:isolate;overflow:hidden}.hero{position:relative}
.brand-landscape{position:absolute;z-index:-1;pointer-events:none;top:0;bottom:-1px;left:0;right:0;overflow:hidden}
.brand-landscape svg{position:absolute;left:50%;bottom:-70px;width:max(112vw,1250px);height:auto;max-width:none;transform:translate3d(-50%,var(--landscape-y,0px),0);opacity:.5}
.landscape-contour{vector-effect:non-scaling-stroke;stroke-dasharray:1;animation:brand-trace 3.8s cubic-bezier(.25,.65,.3,1) .25s both}
.contact{position:relative;isolation:isolate;overflow:hidden}
.contact::before{content:'';position:absolute;z-index:-1;pointer-events:none;inset:0;background:linear-gradient(120deg,#26598270,#1d415e30);mask:url('/assets/brand-landscape.svg') center 46%/max(120%,1300px) auto no-repeat;-webkit-mask:url('/assets/brand-landscape.svg') center 46%/max(120%,1300px) auto no-repeat}
@keyframes brand-trace{from{stroke-dashoffset:1;opacity:0}15%{opacity:1}to{stroke-dashoffset:0;opacity:1}}
@media(min-width:1700px){.brand-landscape svg{width:100vw;bottom:-110px}}
@media(max-width:800px){.brand-landscape svg{top:40px;bottom:auto;width:1050px;left:48%}.contact::before{mask-position:45% bottom;-webkit-mask-position:45% bottom}}
@media(max-width:480px){.brand-landscape svg{top:70px;width:780px;left:43%;opacity:.42}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hero-copy h1>span{background:linear-gradient(105deg,#57abfa 15%,#b3ddff 44%,#57abfa 67%);background-size:240% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:headline-light 2.7s ease-out .15s 1}
.hero-copy .eyebrow,.hero-copy .intro,.hero-actions,.hero-note{animation:hero-arrive .75s cubic-bezier(.16,1,.3,1) both}
.hero-copy .intro{animation-delay:.12s}.hero-actions{animation-delay:.22s}.hero-note{animation-delay:.3s}
.reveal{transition:opacity .65s cubic-bezier(.2,.65,.2,1),translate .65s cubic-bezier(.2,.65,.2,1),border-color .25s,background .25s;transition-delay:var(--reveal-delay,0ms),var(--reveal-delay,0ms),0ms,0ms}
.js-motion .reveal:not(.visible){translate:0 22px}
.step-top{position:relative}.step-top::before{content:'';position:absolute;height:1px;top:-1px;inset-inline:0;background:linear-gradient(90deg,#5bb2ff,#93ceff55);transform:scaleX(0);transform-origin:left}
.js-motion .step.visible .step-top::before{animation:line-grow .85s cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms) both}
.mini-row i{transform-origin:left}
.js-motion .type-card.visible .mini-row i{animation:line-grow 1.25s cubic-bezier(.16,1,.3,1) .25s both}
.js-motion .type-card.visible .mini-row:nth-child(3) i{animation-delay:.38s}.js-motion .type-card.visible .mini-row:nth-child(4) i{animation-delay:.5s}
.js-motion .type-card.visible .movement-row{animation:hero-arrive .7s cubic-bezier(.2,.65,.2,1) .2s both}.js-motion .type-card.visible .movement-row.current{animation-delay:.5s}
.alarm-timeline i{position:relative}.alarm-timeline i::after{content:'';position:absolute;inset:0;background:#8dd6fa;transform-origin:left}
.js-motion .alarm-strip.visible .alarm-timeline i::after{animation:line-grow 1.25s ease-in-out .35s both}
.js-motion .alarm-strip.visible .alarm-timeline>span:last-child{animation:alarm-resolved .9s ease 1.3s both}
.js-motion .alarm-strip.visible .alarm-icon{animation:alarm-signal 1.65s ease-out .1s both}
.js-motion .alarm-strip.visible .alarm-duration{animation:hero-arrive .65s ease 1.5s both}
.purchase-steps i{transform-origin:left}.js-motion .purchase-panel.visible .purchase-steps i{animation:line-grow .8s ease .25s both}.js-motion .purchase-panel.visible .purchase-steps i:last-of-type{animation-delay:.7s}
.button:not(:disabled){position:relative;overflow:hidden;isolation:isolate}.button:not(:disabled)::before{content:'';position:absolute;inset:-40% auto -40% -65%;width:40%;z-index:-1;background:linear-gradient(90deg,transparent,#ffffff25,transparent);transform:skewX(-20deg);transition:translate .55s ease}.button:not(:disabled):hover::before{translate:440% 0}.button>span{transition:transform .25s}.button:hover>span{transform:translate(2px,-2px)}
.site-header nav a{position:relative}.site-header nav a::after{content:'';position:absolute;bottom:-8px;inset-inline:0;height:1px;background:#65b8ff;transform:scaleX(0);transform-origin:left;transition:transform .25s}.site-header nav a:hover::after{transform:scaleX(1)}
@media(hover:hover) and (pointer:fine){.type-card:hover{border-color:#5688b7;background:#132b3e}.feature:hover{background:#13283a}.feature-index{transition:color .25s}.feature:hover .feature-index{color:#a6d4ff}}
@keyframes hero-arrive{from{opacity:0;translate:0 13px}to{opacity:1;translate:0 0}}
@keyframes headline-light{from{background-position:140% 0}to{background-position:0 0}}
@keyframes line-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes alarm-resolved{from{opacity:.35;color:#b3c7d5}to{opacity:1;color:#9fd8bc}}
@keyframes alarm-signal{0%{box-shadow:0 0 0 0 #e8b76100}20%{box-shadow:0 0 0 5px #e8b76120}100%{box-shadow:0 0 0 15px #e8b76100}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.hero-copy h1>span{color:#57abfa;background:none}.js-motion .reveal:not(.visible){opacity:1;translate:none}}
