/* One arrival clock; every baseline remains visible without JavaScript. */
:root{--entry-ease:cubic-bezier(.22,1,.36,1);--entry-curtain:var(--brand-ink);--entry-rule:var(--brand-bronze);--entry-foreground:var(--brand-stone);--entry-shadow:0 8px 30px color-mix(in srgb,var(--brand-ink) 24%,transparent);--entry-outline:color-mix(in srgb,var(--brand-stone) 35%,transparent)}
html .rolen-intro{display:none;pointer-events:none;background:var(--entry-curtain);transition:none}
html.is-rolen-arriving .rolen-intro{display:flex;animation:entry-curtain 750ms var(--entry-ease) both}
html.is-rolen-arriving.rolen-curtain-cleared .rolen-intro{display:none}
html .rolen-intro img{animation:none;width:180px;opacity:.8}
html .rolen-intro>span{animation:none;background:var(--entry-rule);width:84px}
@keyframes entry-curtain{0%,35%{clip-path:inset(0)}100%{clip-path:inset(0 0 100%)}}
html .hero-slide{transform:none;transition:opacity 1.8s ease}
html .hero-slide.is-active{transform:none}
html.is-rolen-arriving .hero-slide.is-active{animation:entry-photo 1250ms var(--entry-ease) 150ms both}
@keyframes entry-photo{from{opacity:.35;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}
.hero h1 .hero-word{display:inline-block;letter-spacing:0}
.hero h1 .hero-line{display:block}
html.is-rolen-arriving .hero-word{animation:entry-word 650ms var(--entry-ease) both}
html.is-rolen-arriving .hero-word:nth-of-type(1){animation-delay:600ms}
html.is-rolen-arriving .hero-word:nth-of-type(2){animation-delay:655ms}
html.is-rolen-arriving .hero-line:nth-child(2) .hero-word:nth-of-type(1){animation-delay:710ms}
html.is-rolen-arriving .hero-line:nth-child(2) .hero-word:nth-of-type(2){animation-delay:765ms}
html.is-rolen-arriving .hero-line:nth-child(2) .hero-word:nth-child(3){animation-delay:820ms}
html.is-rolen-arriving .hero-line:nth-child(3) .hero-word:nth-of-type(1){animation-delay:875ms}
html.is-rolen-arriving .hero-line:nth-child(3) .hero-word:nth-of-type(2){animation-delay:930ms}
html.is-rolen-arriving .hero-line:nth-child(3) .hero-word:nth-of-type(3){animation-delay:985ms}
@keyframes entry-word{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}
html.is-rolen-arriving .hero-content>.eyebrow{animation:entry-word 550ms var(--entry-ease) 550ms both}
html.is-rolen-arriving .hero-copy{animation:entry-word 550ms var(--entry-ease) 1250ms both}
html.is-rolen-arriving .hero .actions{animation:entry-word 550ms var(--entry-ease) 1400ms both}
html .lux-header.is-scrolled{animation:none;transform:none}
html.is-rolen-arriving .lux-header,html.is-rolen-arriving button.project-launcher{animation:entry-word 450ms var(--entry-ease) 1550ms both}
html body button.project-launcher{display:flex!important;position:fixed;z-index:110;right:max(24px,env(safe-area-inset-right));bottom:max(24px,env(safe-area-inset-bottom));width:auto!important;min-width:64px;height:64px!important;min-height:44px;padding:5px!important;gap:10px;border:1px solid var(--entry-outline);border-radius:var(--r-pill);background:var(--brand-ink);color:var(--entry-foreground);box-shadow:var(--entry-shadow);font:500 14px/1.2 var(--font-brand,Inter,Arial,sans-serif);letter-spacing:0;cursor:pointer}
html body button.project-launcher img{width:54px;height:54px;border-radius:50%;object-fit:cover;object-position:center 20%;flex:none}
html body button.project-launcher span{display:block!important;padding-right:16px;color:inherit}
html body button.project-launcher:focus-visible{outline:2px solid var(--brand-bronze);outline-offset:5px}
body.is-home-tour-active button.project-launcher,body.is-lead-open button.project-launcher,body.is-navigation-open button.project-launcher,body:has(dialog[open]) button.project-launcher{visibility:hidden!important;pointer-events:none!important}
@media(max-width:760px){html body button.project-launcher{right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));height:56px!important;gap:8px;font-size:12px}html body button.project-launcher img{width:44px;height:44px}html body button.project-launcher span{padding-right:12px}}
/* Existing reveal ownership is consolidated: no section-sized hidden ancestors. */
.rolen-paced{opacity:1;translate:none}
.rolen-paced.is-waiting{opacity:.24;translate:0 10px}
.rolen-paced.is-revealing{animation:entry-reveal var(--reveal-duration,700ms) var(--entry-ease) var(--reveal-delay,0ms) both}
@keyframes entry-reveal{from{opacity:.24;translate:0 10px}to{opacity:1;translate:0 0}}
.rolen-paced[data-reveal-kind=image].is-waiting{opacity:.55;translate:0 6px}
.rolen-paced[data-reveal-kind=image].is-revealing{animation-name:entry-image-reveal}
@keyframes entry-image-reveal{from{opacity:.55;translate:0 6px}to{opacity:1;translate:0 0}}
.rolen-paced:focus-within{opacity:1!important;translate:none!important;animation:none!important}
@media(prefers-reduced-motion:reduce){html.is-rolen-arriving .rolen-intro{display:none!important}html.is-rolen-arriving .hero-word,html.is-rolen-arriving .hero-slide,html.is-rolen-arriving .hero-copy,html.is-rolen-arriving .hero-content>.eyebrow,html.is-rolen-arriving .hero .actions,html.is-rolen-arriving .hero-foot,html.is-rolen-arriving .lux-header,html.is-rolen-arriving .project-launcher,.rolen-paced{opacity:1!important;translate:none!important;transform:none!important;animation:none!important}.rolen-paced.is-waiting{opacity:1!important;translate:none!important}}

/* Isolated hero depths: parent photo motion never competes with slide crossfades. */
html body .hero{isolation:isolate}
html body .hero-slides{inset:-21% 0 -3%!important;translate:0 var(--hero-depth-photo,0px);transform:scale(var(--hero-depth-scale,1));transform-origin:center;transition:none}
html body .hero-shade{inset:-8% 0 -2%;height:auto;translate:0 var(--hero-depth-shade,0px);pointer-events:none}
html body .hero-content{translate:none}
html body .hero-content>.eyebrow{transform:translateY(var(--hero-depth-eyebrow,0px))}
html body .hero-content>h1{transform:translateY(var(--hero-depth-heading,0px))}
html body .hero-copy{transform:translateY(var(--hero-depth-copy,0px))}
html body .hero .actions{transform:translateY(var(--hero-depth-action,0px))}
html body .hero.is-parallax-active .hero-slides,html body .hero.is-parallax-active .hero-shade,html body .hero.is-parallax-active .hero-content>h1{will-change:transform}
@media(max-width:760px){html body .hero-slides{inset:-15% 0 -3%!important}}
@media(prefers-reduced-motion:reduce){html body .hero-slides,html body .hero-shade{inset:0!important;translate:none;transform:none}html body .hero-content>.eyebrow,html body .hero-content>h1,html body .hero-copy,html body .hero .actions{transform:none!important}}