:root {--dur-micro:120ms;--dur-short:240ms;--dur-med:420ms;--dur-long:760ms;--ease-out:cubic-bezier(.16,1,.3,1);--ease-in:cubic-bezier(.7,0,.84,0);--ease-spring:cubic-bezier(.34,1.56,.64,1)}
@view-transition {navigation:auto}
/* Visible by default. Only a successfully initialized observer opts in. */
[data-reveal] {opacity:1;transform:none;filter:none}
[data-reveal].reveal-pending {opacity:0;transform:translateY(34px);filter:blur(6px)}
[data-reveal].reveal-ready {transition:opacity var(--dur-long) var(--ease-out),transform var(--dur-long) var(--ease-out),filter var(--dur-long) var(--ease-out);transition-delay:var(--reveal-delay,0ms)}
:is(.home-card,.home-track,.scf-paper-card) {position:relative;isolation:isolate;--spot-x:50%;--spot-y:50%}
:is(.home-card,.home-track,.scf-paper-card)::after {content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(360px circle at var(--spot-x) var(--spot-y),color-mix(in srgb,var(--hue) 14%,transparent),transparent 70%);transition:opacity var(--dur-med)}
:is(.home-card,.home-track,.scf-paper-card):hover::after {opacity:1}
:is(.hero-button,.btn-primary,.btn-secondary,.circuit-btn,.nav-contact) {transition:transform var(--dur-short) var(--ease-spring),background var(--dur-short),box-shadow var(--dur-short)}
:is(.footer-columns,.research-breadcrumb,.profile-links) a {text-decoration:none;background-image:linear-gradient(currentColor,currentColor);background-position:left bottom;background-repeat:no-repeat;background-size:0 1px;transition:background-size var(--dur-short) var(--ease-out)}
:is(.footer-columns,.research-breadcrumb,.profile-links) a:hover {background-size:100% 1px}
.painted-copy>:nth-child(1) {--enter-delay:150ms}
.painted-copy>:nth-child(2) {--enter-delay:300ms}
.painted-copy>:nth-child(3) {--enter-delay:500ms}
.painted-copy>:nth-child(4) {--enter-delay:700ms}
.painted-copy>* {animation:hero-enter var(--dur-long) var(--ease-out) both;animation-delay:var(--enter-delay)}
@keyframes hero-enter {from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes cloud-drift {from{transform:translateX(-1.5%)}to{transform:translateX(1.5%)}}
@keyframes cell-rise {0%{transform:translate(0,0);opacity:0}15%,65%{opacity:.65}100%{transform:translate(35px,-55vh);opacity:0}}
@keyframes star-twinkle {to{opacity:.1}}
@keyframes reading-progress {to{transform:scaleX(1)}}
@keyframes painted-parallax {from{transform:translateY(0)}to{transform:translateY(calc(var(--speed)*170px))}}
@keyframes statement-light {from{opacity:.18}to{opacity:1}}
@keyframes timeline-draw {from{transform:scaleY(0)}to{transform:scaleY(1)}}
@supports(animation-timeline:view()) {
  .reading-progress span {animation:reading-progress linear both;animation-timeline:scroll(root block)}
  .statement-line {animation:statement-light linear both;animation-timeline:view();animation-range:entry 0% cover 45%}
  .news-list {position:relative;border-left-color:transparent!important}
  .news-list::after {content:"";position:absolute;top:0;bottom:0;left:-2px;width:2px;background:var(--hue);transform-origin:top;animation:timeline-draw linear both;animation-timeline:view();animation-range:entry 0% cover 65%}
  @media(min-width:768px) {.hero-layer {animation:painted-parallax linear both;animation-timeline:scroll(root block);animation-range:0px 900px}}
}
@media(prefers-reduced-motion:reduce) {
  html {scroll-behavior:auto!important}
  *,*::before,*::after {animation:none!important;transition:none!important;scroll-behavior:auto!important}
  [data-reveal],[data-reveal].reveal-pending,.painted-copy>*,.statement-line {opacity:1!important;filter:none!important;transform:none!important}
  .hero-layer,.hero-layer picture,.cell-orb {transform:none!important}
  .cell-orb {opacity:.4}
  .reading-progress span {transform:scaleX(1)!important}
  .news-list::after {transform:scaleY(1)!important}
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*) {animation:none!important}
}
