/* Geonos hero motion v1 · CSS only · breath loop stops after 3 cycles (idle main-thread cost) · ≤3KB target · tokens from day1-ui-tokens */
@keyframes geo-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes geo-fade{from{opacity:0}to{opacity:1}}
@keyframes geo-cta-in{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
@keyframes geo-ring{to{stroke-dashoffset:var(--geo-ring-offset)}}
@keyframes geo-breath{0%,100%{box-shadow:var(--shadow-cta)}50%{box-shadow:var(--shadow-cta-hover)}}
@keyframes geo-tick{from{stroke-dashoffset:12}to{stroke-dashoffset:0}}

.geo-motion,.geo-hero,.geo-value{--geo-ease:cubic-bezier(.22,1,.36,1)}
.geo-hero{--geo-rise:geo-rise .32s var(--geo-ease) both;--geo-fade:geo-fade .28s ease-out both}
.geo-hero__h1{animation:var(--geo-rise);animation-delay:0ms}
.geo-hero__sub{animation:var(--geo-fade);animation-delay:200ms}
.geo-hero__ring-fill{stroke-dasharray:1;stroke-dashoffset:1;animation:geo-ring .82s var(--geo-ease) 280ms forwards}
.geo-hero__chip{opacity:0;animation:var(--geo-rise);animation-delay:700ms}
.geo-hero__chip:nth-child(2){animation-delay:740ms}
.geo-hero__chip:nth-child(3){animation-delay:780ms}
.geo-hero__cta-primary{animation:geo-cta-in .3s var(--geo-ease) 550ms both;animation-name:geo-cta-in,geo-breath;animation-duration:.3s,1.5s;animation-delay:550ms,850ms;animation-fill-mode:both,none;animation-iteration-count:1,3;animation-timing-function:var(--geo-ease),ease-in-out}
.geo-hero__cta-primary:hover,.geo-hero__cta-primary:focus-visible{transform:translateY(-1px);box-shadow:var(--shadow-cta-hover);transition:transform .15s ease,box-shadow .15s ease}
.geo-hero__cta-primary:active{transform:scale(.98);transition-duration:.1s}
.geo-hero__cta-secondary{animation:var(--geo-fade);animation-delay:750ms}
.geo-hero__cta-secondary:hover,.geo-hero__cta-secondary:focus-visible{color:var(--text);text-decoration:underline;transition:color .15s ease}

/* Value blocks · scroll-once when supported */
.geo-value__item,.geo-value__chip,.geo-value__pill,.geo-value__gap,.geo-value__check{
  opacity:1
}
@supports (animation-timeline:view()){
  .geo-value__item{opacity:0;animation:geo-rise .4s var(--geo-ease) both;animation-timeline:view();animation-range:entry 10% entry 35%}
  .geo-value__chip,.geo-value__pill{opacity:0;animation:geo-rise .32s var(--geo-ease) both;animation-timeline:view();animation-range:entry 12% entry 40%}
  .geo-value__chip:nth-child(2),.geo-value__pill:nth-child(2){animation-delay:.04s}
  .geo-value__chip:nth-child(3),.geo-value__pill:nth-child(3){animation-delay:.08s}
  .geo-value__gap{opacity:0;animation:geo-fade .35s ease-out both;animation-timeline:view();animation-range:entry 20% entry 45%}
  .geo-value__check{stroke-dasharray:12;animation:geo-tick .35s ease-out both;animation-timeline:view();animation-range:entry 15% entry 40%}
}

@media (prefers-reduced-motion:reduce){
  .geo-hero__h1,.geo-hero__sub,.geo-hero__chip,.geo-hero__cta-primary,.geo-hero__cta-secondary,
  .geo-value__item,.geo-value__chip,.geo-value__pill,.geo-value__gap,.geo-value__check{
    animation:none!important;opacity:1;transform:none
  }
  .geo-hero__ring-fill{animation:none;stroke-dashoffset:var(--geo-ring-offset)}
  .geo-hero__cta-primary:hover,.geo-hero__cta-primary:focus-visible{transform:none}
}
html[data-motion=reduce] :is(.geo-hero__h1,.geo-hero__sub,.geo-hero__chip,.geo-hero__cta-primary,.geo-hero__cta-secondary,.geo-value__item,.geo-value__chip,.geo-value__pill,.geo-value__gap,.geo-value__check){animation:none!important;opacity:1;transform:none}
html[data-motion=reduce] .geo-hero__ring-fill{animation:none;stroke-dashoffset:var(--geo-ring-offset)}
