/* Motion adds a response to the existing composition, without moving hit targets. */
.hero-name-line{display:inline-block}
.hero-opening .hero-name-line{animation:name-arrive .95s var(--ease) both}
.hero-opening .hero-name-line:last-child{animation-delay:.12s}
.hero-opening .hero-copy>.eyebrow{animation:soft-arrive .65s var(--ease) both}
.hero-opening .hero-intro{animation:soft-arrive .75s .22s var(--ease) both}
.hero-opening .hero-actions{animation:soft-arrive .75s .3s var(--ease) both}
.hero-opening .hero-note{animation:soft-arrive .75s .38s var(--ease) both}
.hero-opening .site-header .wordmark img{animation:mark-arrive .9s var(--ease) both}
.scroll-ready .scroll-reveal{opacity:var(--reveal-opacity,1);transform:translate3d(0,var(--reveal-y,0px),0)}
.scroll-ready .reveal-heading h2,.scroll-ready h2.reveal-heading{clip-path:inset(-12% -3% var(--reveal-clip,0%) -3%)}
.scroll-ready .is-revealed{opacity:1;transform:none}
.scroll-ready .is-revealed h2,.scroll-ready h2.is-revealed{clip-path:none}
.scroll-ready .spiral-explorer .orbit-route.active .orbit-route-ribbon,.scroll-ready .spiral-explorer .orbit-route.active .orbit-route-edge{animation:none;stroke-dasharray:1;stroke-dashoffset:var(--reveal-path,0)}
.scroll-ready .spiral-explorer:not(.is-revealed) .orbit-route-glint{opacity:0}
.project-grid.cover-reveal .project-card{animation:project-enter .65s var(--ease) both}
.desktop-nav a{position:relative}
.desktop-nav a:after{content:'';position:absolute;left:0;right:0;bottom:-7px;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:right;transition:transform .4s var(--ease)}
.desktop-nav a:hover:after,.desktop-nav a[aria-current=location]:after{transform:scaleX(1);transform-origin:left}
.scroll-progress{position:fixed;left:0;top:0;width:100%;height:2px;background:var(--green);transform:scaleX(var(--page-progress,0));transform-origin:left;z-index:50;pointer-events:none;opacity:.75}
.solid-button,.text-link,.header-contact,.contact-email,.orbit-stop,.ask-suggestions button{--magnet-x:0px;--magnet-y:0px}
.solid-button>span,.text-link>span[aria-hidden],.header-contact>span,.contact-email>span{transform:translate(var(--magnet-x),var(--magnet-y));transition:transform .35s var(--ease)}
.solid-button:hover>span,.text-link:hover>span[aria-hidden],.header-contact:hover>span,.contact-email:hover>span{transform:translate(calc(var(--magnet-x) + 3px),calc(var(--magnet-y) - 3px))}
.solid-button{position:relative;overflow:hidden;isolation:isolate}
.solid-button:before{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 20%,#e2efb215 45%,transparent 70%);transform:translateX(-110%);transition:transform .75s var(--ease);pointer-events:none;z-index:-1}
.solid-button:hover:before{transform:translateX(110%)}
.project-image{--cover-x:0px;--cover-y:0px}
.project-image .cover-art{transform:translate(var(--cover-x),var(--cover-y));transition:transform .7s var(--ease)}
.project-image:hover .cover-art{transform:translate(var(--cover-x),var(--cover-y)) scale(1.025)}
.project-grid.cover-reveal .paper-stack{animation:paper-settle .95s var(--ease) backwards}
.project-image:hover .paper-stack,.project-image:focus-within .paper-stack{transform:rotate(-4deg) translateY(-7px);transition:transform .7s var(--ease)}
.project-grid.cover-reveal .business-poster>div{animation:business-arrive .65s var(--ease) backwards}
.project-grid.cover-reveal .business-poster>div:nth-child(2){animation-delay:.1s}
.project-grid.cover-reveal .business-poster>div:nth-child(3){animation-delay:.2s}
.project-grid.cover-reveal .business-path{transform-origin:top;animation:path-grow .8s .2s var(--ease) backwards}
.project-grid.cover-reveal .intel-art svg{animation:globe-arrive 1.1s var(--ease) backwards}
.project-grid.cover-reveal .intel-art svg>g:last-child circle{transform-box:fill-box;transform-origin:center;animation:node-arrive .9s var(--ease) backwards}
.project-grid.cover-reveal .intel-art svg>g:last-child circle:nth-child(2){animation-delay:.1s}
.project-grid.cover-reveal .intel-art svg>g:last-child circle:nth-child(3){animation-delay:.2s}
.project-grid.cover-reveal .phone{animation:phone-settle .95s var(--ease) backwards}
.project-grid.cover-reveal .cue-dots i{animation:cue-demonstration 1.3s ease-in-out backwards}
.project-grid.cover-reveal .cue-dots i:nth-child(2){animation-delay:.07s}
.project-grid.cover-reveal .cue-dots i:nth-child(3){animation-delay:.14s}
.project-grid.cover-reveal .cue-dots i:nth-child(4){animation-delay:.21s}
.project-grid.cover-reveal .cue-dots i:nth-child(5){animation-delay:.28s}
.ask-panel.answering #ask-answer{animation:answer-arrive .5s var(--ease) both}
.ask-panel.answering .guide-indicator{animation:guide-pulse .7s ease-out}
.resume-group[open]>.learning-list,.resume-group[open]>.activity-list,.resume-group[open]>.recognition-list,.education-block[open]>.education-content{animation:soft-arrive .45s var(--ease) both}
@keyframes name-arrive{from{opacity:0;transform:translateY(45px) rotate(2deg);filter:blur(6px);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:none;filter:blur(0);clip-path:inset(-12% -8% -12% -8%)}}
@keyframes soft-arrive{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}
@keyframes mark-arrive{from{transform:rotate(-150deg) scale(.8)}to{transform:none}}
@keyframes paper-settle{from{transform:rotate(-13deg) translateY(24px)}to{transform:rotate(-8deg) translateY(0)}}
@keyframes business-arrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@keyframes path-grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes globe-arrive{from{opacity:0;transform:rotate(-12deg) scale(.88)}to{opacity:.6;transform:none}}
@keyframes node-arrive{0%,25%{opacity:0;transform:scale(0)}75%{opacity:1;transform:scale(1.6)}100%{opacity:1;transform:scale(1)}}
@keyframes phone-settle{from{transform:rotate(3deg) translateY(18px)}to{transform:rotate(10deg) translateY(0)}}
@keyframes cue-demonstration{0%,100%{transform:translateY(0);opacity:1}45%{transform:translateY(-11px);opacity:.5}70%{transform:translateY(5px);opacity:.85}}
@keyframes answer-arrive{from{opacity:.4;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes guide-pulse{50%{box-shadow:0 0 0 6px #d7eb881a}100%{box-shadow:0 0 0 0 #d7eb8800}}
@media(hover:none),(pointer:coarse){.solid-button:hover>span,.text-link:hover>span[aria-hidden],.header-contact:hover>span,.contact-email:hover>span{transform:none}.project-image:hover .cover-art{transform:none}.project-image:hover .paper-stack{transform:rotate(-8deg)}}
@media(prefers-reduced-motion:reduce){.scroll-progress{display:none}.scroll-ready .scroll-reveal{opacity:1;transform:none;--reveal-path:0!important}.scroll-ready .reveal-heading h2,.scroll-ready h2.reveal-heading{clip-path:none}.solid-button:before{display:none}}
body.motion-paused.scroll-ready .scroll-reveal{opacity:1;transform:none;--reveal-path:0!important}
body.motion-paused.scroll-ready .reveal-heading h2,body.motion-paused.scroll-ready h2.reveal-heading{clip-path:none}
body.motion-paused .solid-button:before{display:none}
body.motion-paused .solid-button>span,body.motion-paused .text-link>span[aria-hidden],body.motion-paused .header-contact>span,body.motion-paused .contact-email>span,body.motion-paused .project-image .cover-art{transform:none}
