:root { --motion-ease: cubic-bezier(.2,.75,.25,1); }
@keyframes section-arrive { from { opacity: .2; translate: 0 18px; } to { opacity: 1; translate: 0 0; } }
@keyframes hero-arrive { from { opacity: 0; translate: 0 12px; } to { opacity: 1; translate: 0 0; } }
.reveal-in { animation: section-arrive .7s var(--motion-ease) backwards; }
.hero-copy > :is(.eyebrow,h1,p,.hero-actions), .page-intro > * { animation: hero-arrive .65s var(--motion-ease) backwards; }
.hero-copy h1, .page-intro h1 { animation-delay: .07s; }
.hero-copy > p:not(.eyebrow), .page-intro > p:last-child { animation-delay: .14s; }
.hero-actions { animation-delay: .21s; }
/* Ordinary controls retain restrained feedback. Only research has a special effect. */
.button, .about-link, .circle-link { transition: border-color .25s ease, background-color .25s ease, transform .25s var(--motion-ease), box-shadow .25s ease; }
.panel, .content-card { transition: border-color .3s ease; }
.desktop-nav a::before { content: ''; position: absolute; bottom: 19px; left: 15%; right: 15%; height: 1px; background: #afc5d5; transform: scaleX(0); transition: transform .25s var(--motion-ease); }
.desktop-nav a:hover::before, .desktop-nav a:focus-visible::before { transform: scaleX(1); }
.text-link { position: relative; width: fit-content; }
.text-link::after { content: ''; position: absolute; left: 0; bottom: 5px; width: calc(100% - 40px); height: 1px; background: #afcce3; scale: 0 1; transform-origin: left; transition: scale .25s ease; }
.text-link:hover::after, .text-link:focus-visible::after { scale: 1 1; }
.code-tabs button, .period-control button, .mobile-nav a { transition: color .2s ease, background-color .2s ease; }
.menu-toggle span { transition: transform .25s var(--motion-ease); }
.menu-toggle[aria-expanded="true"] span:first-child { transform: translateY(3.5px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] span:last-child { transform: translateY(-3.5px) rotate(-45deg); }
.panel:focus-within, .content-card:focus-within { border-color: #617b90; }
@media (hover:hover) and (pointer:fine) {
  .button:hover, .about-link:hover { border-color: #a0b6c8; }
  .button:hover, .about-link:hover, .circle-link:hover { transform: translateY(-3px); box-shadow: 0 6px 22px #a8c9e414; }
  .circle-link:hover { background-color: #1d2a35; border-color: #a0b6c8; }
  .panel:hover, .content-card:hover { border-color: #506578; }
  .period-control button:hover, .mobile-nav a:hover { background-color: #273847; }
}
@keyframes star-turn { from { rotate: 0deg; } to { rotate: 360deg; } }
@keyframes star-breathe { 0%,100% { filter: drop-shadow(0 0 3px #91bddd44); } 50% { filter: drop-shadow(0 0 12px #b7ddfa9c); } }
.research-star { display: block; transform-origin: center; animation: star-turn 18s linear infinite, star-breathe 4s ease-in-out infinite; }
.research-art { isolation: isolate; background: none; border: 0; box-shadow: none; }
/* Fade the light before every edge so the graphic never reads as a rectangle. */
.research-art::before { content: ''; position: absolute; inset: -20px; z-index: -1; pointer-events: none; opacity: 0; background: radial-gradient(220px circle at var(--light-x,50%) var(--light-y,50%),#82b7d54a,transparent 80%); mask-image: radial-gradient(ellipse closest-side at center,#000 25%,transparent 100%); transition: opacity .4s ease; }
.research-core { transition: border-color .4s ease, box-shadow .4s ease, background .4s ease, scale .4s var(--motion-ease), rotate .4s var(--motion-ease); }
.research-art .orbit { transition: border-color .4s ease, transform .6s var(--motion-ease); }
.research-art .orbit-label { transition: border-color .4s ease, color .4s ease; }
.research-art:focus-visible { outline: 2px solid #b9d8ef; outline-offset: 8px; }
.research-art:focus-visible::before { opacity: 1; }
.research-art:focus-visible .research-core { border-color: #b7d9f2; box-shadow: 0 0 65px #8ebce838, inset 0 0 18px #b8ddff15; }
@media (hover:hover) and (pointer:fine) {
  .research-art:hover::before { opacity: 1; }
  .research-art:hover .research-core { border-color: #c9e8ff; background: radial-gradient(#28475a88,#101921); box-shadow: 0 0 75px #8ebce852, inset 0 0 24px #b8ddff25; scale: 1.08; rotate: var(--tilt-y,0deg); }
  .research-art:hover .orbit { border-color: #789eba88; transform: translate(-50%,-50%) rotate(calc(-12deg + var(--tilt-y,0deg))) scale(1.035); }
  .research-art:hover .orbit-label { border-color: #698ba5; color: #e3f1fc; }
}
html.a11y-reduce-motion .site-shell *, html.a11y-reduce-motion .site-shell *::before, html.a11y-reduce-motion .site-shell *::after { animation: none !important; transition: none !important; translate: none !important; }
html.a11y-reduce-motion .research-art { transform: none !important; }
html.a11y-reduce-motion .research-core { scale: none !important; rotate: none !important; }
html.a11y-reduce-motion .research-art .orbit { transform: translate(-50%,-50%) rotate(-12deg) !important; }
html.a11y-reduce-motion .research-art::before { display: none; }
html.a11y-reduce-motion :is(.button,.about-link,.circle-link):hover { transform: none; }
@media (prefers-reduced-motion:reduce) {
  .site-shell *, .site-shell *::before, .site-shell *::after { animation: none !important; transition: none !important; translate: none !important; }
  .research-art { transform: none !important; }
  .research-core { scale: none !important; rotate: none !important; }
  .research-art .orbit { transform: translate(-50%,-50%) rotate(-12deg) !important; }
  .research-art::before { display: none; }
  :is(.button,.about-link,.circle-link):hover { transform: none; }
}
