/* Site-wide motion layer. Everything here is scoped under .mo, which the script adds only when motion is welcome. */
@media(prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}
::view-transition-old(root){animation:vt-out .32s cubic-bezier(.4,0,.6,1) both}
::view-transition-new(root){animation:vt-in .6s cubic-bezier(.2,.75,.1,1) both}
::view-transition-group(art){animation-duration:.75s;animation-timing-function:cubic-bezier(.2,.75,.1,1)}
::view-transition-old(art),::view-transition-new(art){height:100%;object-fit:cover}
@keyframes vt-out{to{opacity:0;transform:translateY(-16px)}}
@keyframes vt-in{from{opacity:0;transform:translateY(28px)}}

/* headline word reveal */
.mo .w{display:inline-block;overflow:hidden;vertical-align:top;padding:.08em .14em .18em;margin:-.08em -.14em -.18em}
.mo .w>span{display:inline-block;transform:translateY(115%);transition:transform 1.05s cubic-bezier(.2,.75,.1,1);transition-delay:calc(var(--i,0)*55ms)}
.mo .split.in .w>span{transform:none}

/* staggered block reveal */
.mo .rv{opacity:0;transform:translateY(38px) scale(.985);transition:opacity .9s ease,transform 1.1s cubic-bezier(.2,.75,.1,1);transition-delay:var(--d,0ms)}
.mo .rv.in{opacity:1;transform:none}
.mo .rv.in.done{transition:transform .3s cubic-bezier(.2,.7,.1,1),opacity .2s;transition-delay:0ms}

/* numbers */
.proof strong,.card-metric strong{font-variant-numeric:tabular-nums}

/* interest ticker */
.mo .interest-strip{display:block;overflow:hidden;padding-inline:0}
.mo .mq-track{display:flex;width:max-content;animation:mq 42s linear infinite}
.mo .interest-strip:hover .mq-track{animation-play-state:paused}
.mo .mq-set{display:flex;align-items:center;gap:56px;padding-right:56px;white-space:nowrap}
.mo .mq-set span:after{content:'✦';margin-left:56px;font-size:9px;opacity:.55}
@keyframes mq{to{transform:translateX(-25%)}}

/* article illustration */
.mo .art-frame{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.mo .article-art img{border:0;border-radius:0;scale:1.16;opacity:0;translate:0 var(--py,0px);transition:opacity 1.2s ease,scale 1.9s cubic-bezier(.2,.75,.1,1)}
.mo .article-art.in img{opacity:1;scale:1.06}

/* article side navigation */
.article-aside a{position:relative;transition:color .25s,transform .25s}
.article-aside a.active{color:var(--yellow);transform:translateX(8px)}
.article-aside a.active:before{content:'';position:absolute;left:-16px;top:.72em;width:9px;height:1px;background:var(--yellow)}

/* card light + tilt */
.work-card,.journal-card,.people-grid article{position:relative}
.journal-card{overflow:hidden}
.work-card:before,.journal-card:before{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;transition:opacity .35s;
  background:radial-gradient(440px circle at var(--px,50%) var(--py,50%),rgba(230,250,84,.11),transparent 62%)}
.work-card.tilting:before,.journal-card.tilting:before{opacity:1}
.journal-card .card-art{transition:scale .9s cubic-bezier(.2,.75,.1,1)}
.journal-card.tilting .card-art{scale:1.04}
.resume-button,.button.primary{transition:transform .25s cubic-bezier(.2,.7,.1,1)}

/* cursor light */
.mo-glow{position:fixed;left:0;top:0;width:560px;height:560px;margin:-280px 0 0 -280px;border-radius:50%;pointer-events:none;z-index:60;
  background:radial-gradient(circle,rgba(230,250,84,.075),transparent 62%);mix-blend-mode:screen;opacity:0;transition:opacity .5s;will-change:transform}

/* full-screen menu */
nav:not([hidden]){animation:navfade .35s ease both}
nav:not([hidden]) a{animation:navin .8s cubic-bezier(.2,.75,.1,1) both}
nav:not([hidden]) a:nth-child(1){animation-delay:.05s}nav:not([hidden]) a:nth-child(2){animation-delay:.11s}
nav:not([hidden]) a:nth-child(3){animation-delay:.17s}nav:not([hidden]) a:nth-child(4){animation-delay:.23s}
nav:not([hidden]) a:nth-child(5){animation-delay:.29s}
@keyframes navfade{from{opacity:0}}
@keyframes navin{from{opacity:0;transform:translateY(42px)}}
@media(prefers-reduced-motion:reduce){nav:not([hidden]),nav:not([hidden]) a{animation:none!important}.journal-card .card-art{transition:none}}
