/* The scroll controls every phase. There are no timers to race on reversal. */
.type-line{display:block;perspective:700px}
.type-mask{display:inline-block;vertical-align:top;overflow:clip;padding:0 .035em .16em;margin:0 -.035em -.16em}
.type-word{--ink:clamp(0,calc(var(--panel-reveal,1)*1.35 - var(--word-delay,0)),1);display:inline-block;transform-origin:50% 100%;transform:translate3d(0,calc((1 - var(--ink))*112%),0) rotateX(calc((1 - var(--ink))*22deg));opacity:clamp(0,calc(var(--ink)*2),1);filter:blur(calc((1 - var(--ink))*1.5px));will-change:transform}
[data-reveal-body]{--body-phase:clamp(0,calc(var(--panel-reveal,1)*2.1 - .85 - var(--beat,0)*.125),1);opacity:var(--body-phase);transform:translate3d(0,calc((1 - var(--body-phase))*18px),0);filter:blur(calc((1 - var(--body-phase))*1.2px))}
.panel[aria-hidden=true] .type-word{will-change:auto}
.panel-intro h1{overflow:clip;padding-bottom:4px;margin-bottom:-4px}
.scene-ready .panel-intro h1 img{animation:identity-arrive 1.5s cubic-bezier(.16,1,.3,1) both}
.scene-ready .panel-intro .statement{animation:copy-arrive 1.35s .18s cubic-bezier(.16,1,.3,1) both}
.scene-ready .panel-intro .intro-copy{animation:copy-arrive 1.35s .32s cubic-bezier(.16,1,.3,1) both}
@keyframes identity-arrive{from{transform:translate3d(0,110%,0) rotateX(12deg);opacity:0}to{transform:translate3d(0,0,0) rotateX(0);opacity:1}}
@keyframes copy-arrive{from{transform:translate3d(0,18px,0);opacity:0;filter:blur(2px)}to{transform:translate3d(0,0,0);opacity:1;filter:blur(0)}}
/* Phones reveal each line and block at its own reading position. Short, crisp
   masks settle before the text reaches the reading zone; no blur or 3D flip. */
@media(max-width:760px),(max-width:1024px) and (orientation:portrait),(max-height:540px) and (pointer:coarse){
 .type-word{transform:translate3d(0,calc((1 - var(--ink))*105%),0);filter:none;will-change:auto}
 [data-reveal-body]{transform:translate3d(0,calc((1 - var(--body-phase))*14px),0);filter:none}
 [data-mobile-motion] .type-line{perspective:none}
 [data-mobile-motion] .type-word{--ink:clamp(0,calc(var(--mobile-reveal,1)*1.14 - var(--mobile-word-delay,0)),1);transform:translate3d(0,calc((1 - var(--ink))*100%),0);opacity:clamp(0,calc(var(--ink)*3),1)}
 [data-mobile-motion] [data-reveal-body]{--body-phase:var(--mobile-reveal,1);transform:translate3d(0,calc((1 - var(--body-phase))*8px),0)}
 [data-mobile-motion] [data-reveal-body]:focus-visible{opacity:1;transform:none}
 [data-mobile-motion] .conversation-arrow{transform:translate(calc((1 - var(--mobile-reveal,1))*-8px),calc((1 - var(--mobile-reveal,1))*8px));transition:none}
 [data-mobile-motion] .scene-ready .panel-intro h1 img{animation:mobile-identity-arrive 1.15s cubic-bezier(.22,1,.36,1) both}
 [data-mobile-motion] .scene-ready .panel-intro .statement{animation:none}
 [data-mobile-motion] .scene-ready .panel-intro .statement .type-line{animation:mobile-intro-ink .75s calc(.18s + var(--line-order,0)*.1s) ease-out backwards}
 [data-mobile-motion] .scene-ready .panel-intro .intro-copy{animation:mobile-intro-ink .75s .32s ease-out backwards}
 [data-mobile-motion=still] .scene-ready .panel-intro h1 img,[data-mobile-motion=still] .scene-ready .panel-intro .statement .type-line,[data-mobile-motion=still] .scene-ready .panel-intro .intro-copy{animation:none}
}
@keyframes mobile-identity-arrive{from{transform:translate3d(0,100%,0);opacity:0}to{transform:translate3d(0,0,0);opacity:1}}
@keyframes mobile-intro-ink{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.type-word,[data-reveal-body],.scene-ready .panel-intro h1 img,.scene-ready .panel-intro .statement,.scene-ready .panel-intro .intro-copy{opacity:1!important;transform:none!important;filter:none!important;animation:none!important;will-change:auto}}
@media print{.type-word,[data-reveal-body]{opacity:1!important;transform:none!important;filter:none!important}}
