*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@keyframes page-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-transition{animation:page-fade-in .32s cubic-bezier(.22,1,.36,1)}@media (prefers-reduced-motion:reduce){.page-transition{animation:none}}@keyframes route-progress{0%{opacity:1;width:0}70%{opacity:1;width:85%}to{opacity:0;width:100%}}.route-progress-bar{animation:route-progress .4s ease-out forwards;background:var(--color-primary);height:3px;left:0;position:fixed;top:0;z-index:100}@media (prefers-reduced-motion:reduce){.route-progress-bar{display:none}}@keyframes showcase-progress{0%{width:0}to{width:100%}}.showcase-progress-fill{animation:showcase-progress linear forwards}@keyframes showcase-fade-in{0%{opacity:0}to{opacity:1}}.showcase-fade{animation:showcase-fade-in .35s ease-out}@media (prefers-reduced-motion:reduce){.showcase-fade,.showcase-progress-fill{animation:none}}@keyframes hero-text-leave{0%{filter:blur(0);opacity:1;transform:translateY(0)}to{filter:blur(2px);opacity:0;transform:translateY(-14px)}}@keyframes hero-text-enter{0%{filter:blur(2px);opacity:0;transform:translateY(18px)}to{filter:blur(0);opacity:1;transform:translateY(0)}}.hero-text-leaving{animation:hero-text-leave .28s cubic-bezier(.4,0,1,1) forwards}.hero-text-entering{animation:hero-text-enter .5s cubic-bezier(.22,1,.36,1) backwards}@media (prefers-reduced-motion:reduce){.hero-text-entering,.hero-text-leaving{animation:none}}.reveal{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.reveal-visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}@keyframes marquee-scroll{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.marquee-track{animation:marquee-scroll 34s linear infinite}.marquee-track:hover{animation-play-state:paused}