/* Scroll follows the browser's native position. No wheel interception or forced stops. */
.scroll-effects .hero-identity { transform: translate3d(0, calc(var(--hero-progress, 0) * 20px), 0); }
.scroll-effects .hero-details { transform: translate3d(0, calc(var(--hero-progress, 0) * 12px), 0); }
.scroll-effects .hero-portrait { transform: translate3d(0, calc(var(--hero-progress, 0) * 76px), 0) scale(calc(1 - var(--hero-progress, 0) * .07)); }
.scroll-effects .hero-atmosphere { transform: translate3d(0, calc(var(--hero-progress, 0) * 65px), 0); }
.scroll-effects .scroll-reveal { opacity: calc(.45 + var(--reveal, 1) * .55); transform: translate3d(0, calc((1 - var(--reveal, 1)) * 26px), 0); }
/* Preserve position on focus so pointer-up stays on the clicked control. */
.scroll-effects .scroll-reveal:focus-within { opacity: 1; }
.scroll-effects .pub-figure img { transform: scale(calc(.965 + var(--reveal, 1) * .035)); }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
    .hero-actions .button { transition: transform .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease; }
    .hero-actions .button:hover { transform: translateY(-2px); box-shadow: 0 7px 18px rgba(35, 76, 139, .13); }
    .hero-actions .button:active { transform: translateY(0); box-shadow: none; }
    .hero-actions .button .icon, .hero-social .icon { transition: transform .2s ease; }
    .hero-actions .button-primary:hover .icon { transform: translateX(3px); }
    .hero-social a:hover .icon { transform: translateY(-2px); }
    .hero-social a { transition: color .2s ease; }
}
@media (min-width: 1101px) and (min-height: 740px) {
    .scroll-effects .research > .container { display: grid; grid-template-columns: 258px minmax(0, 1fr); align-items: start; gap: 64px; }
    .scroll-effects .research > .container > .section-heading { position: sticky; top: 132px; display: block; margin-bottom: 0; }
    .scroll-effects .research .section-heading h2 { font-size: 2.35rem; }
    .scroll-effects .research .section-note { margin-top: 16px; max-width: 235px; text-align: left; font-size: .95rem; }
    .scroll-effects .research .project-heading { flex-direction: column; gap: 6px; }
    .scroll-effects .research-card { grid-template-columns: 27px minmax(0, 1fr); gap: 17px; padding: 29px; }
    .scroll-effects .research .project-heading h3 { max-width: none; }
}
@media (max-width: 820px) {
    .scroll-effects .hero-identity, .scroll-effects .hero-details, .scroll-effects .hero-portrait, .scroll-effects .hero-atmosphere { transform: none; }
    .scroll-effects .scroll-reveal { transform: translate3d(0, calc((1 - var(--reveal, 1)) * 14px), 0); }
}
@media (prefers-reduced-motion: reduce), print {
    .scroll-effects .hero-identity, .scroll-effects .hero-details, .scroll-effects .hero-portrait, .scroll-effects .hero-atmosphere, .scroll-effects .scroll-reveal, .scroll-effects .pub-figure img { transform: none; opacity: 1; }
    .scroll-effects .research > .container { display: block; }
    .scroll-effects .research > .container > .section-heading { position: static; margin-bottom: 32px; }
}
