/* Lightweight scroll polish. No WebGL, canvas or animation dependency. */
:root{--grid-cell:64px;--grid-ink:rgba(130,99,167,.075);--tile-fill:rgba(178,143,219,.11);--tile-edge:rgba(163,127,203,.13)}
body{isolation:isolate}.page-grid{position:fixed;inset:-64px 0;z-index:-1;pointer-events:none;overflow:hidden;background-image:linear-gradient(var(--grid-ink) 1px,transparent 1px),linear-gradient(90deg,var(--grid-ink) 1px,transparent 1px);background-size:var(--grid-cell) var(--grid-cell);transform:translateY(var(--grid-shift,0px));mask-image:linear-gradient(180deg,#000 0%,#000b 70%,#0008);-webkit-mask-image:linear-gradient(180deg,#000 0%,#000b 70%,#0008)}.grid-tiles{position:absolute;inset:0}.grid-tiles i{position:absolute;left:calc(var(--x)*var(--grid-cell));top:calc(var(--y)*var(--grid-cell));width:var(--grid-cell);height:var(--grid-cell);background:var(--tile-fill);border:1px solid var(--tile-edge);box-shadow:var(--grid-cell) 0 0 -1px rgba(187,159,219,.035);animation:grid-tile-breathe 9s ease-in-out infinite;animation-delay:calc(var(--x)*-.6s)}.grid-tiles i:nth-child(3n){background:rgba(210,187,234,.13);box-shadow:0 var(--grid-cell) 0 -1px rgba(184,154,216,.045)}.grid-tiles i:nth-child(4n){background:rgba(224,204,181,.12);border-color:rgba(208,179,148,.09)}
/* The hero now shares the page grid, with translucent rather than opaque light. */
.intro-stage.grid-background{background-image:none}.intro-stage:after{background:linear-gradient(180deg,transparent 76%,color-mix(in srgb,var(--bg) 80%,transparent));pointer-events:none}.intro-contours{opacity:.65;translate:0 var(--hero-parallax,0px)}.intro-ambient{animation:ambient-shift 14s ease-in-out infinite alternate}.ambient-peach{animation-delay:-6s}.intro-center{animation:hero-settle .9s cubic-bezier(.2,.65,.3,1) both}.name-underline path{stroke-dasharray:510;stroke-dashoffset:0;animation:signature-draw 1.5s ease-out both}.note-code{translate:0 var(--note-parallax,0px)}.note-craft{translate:0 var(--note-counter,0px)}.stack-strip{background:color-mix(in srgb,var(--surface) 85%,transparent);backdrop-filter:blur(6px)}
/* Grid boxes repeat softly behind long sections, never over text or controls. */
.work-section,.contact-section.grid-background{background-image:linear-gradient(var(--grid-ink) 1px,transparent 1px),linear-gradient(90deg,var(--grid-ink) 1px,transparent 1px),radial-gradient(ellipse at 85% 20%,rgba(201,176,231,.14),transparent 55%);background-size:var(--grid-cell) var(--grid-cell),var(--grid-cell) var(--grid-cell),100% 100%}.work-section:before{content:'';position:absolute;pointer-events:none;width:var(--grid-cell);height:var(--grid-cell);top:calc(var(--grid-cell)*2);right:var(--grid-cell);background:var(--tile-fill);border:1px solid var(--tile-edge);box-shadow:calc(var(--grid-cell)*-1) var(--grid-cell) 0 -1px var(--tile-fill),0 calc(var(--grid-cell)*3) 0 -1px var(--tile-fill)}.work-section>.container{position:relative}.feedback-section{background-color:color-mix(in srgb,var(--bg) 84%,transparent)}.engineering-section{background-image:linear-gradient(#b998d607 1px,transparent 1px),linear-gradient(90deg,#b998d607 1px,transparent 1px);background-size:var(--grid-cell) var(--grid-cell)}
.section-heading h2 em,.section-intro h2 em{position:relative;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--purple) 18%,transparent);text-decoration-thickness:5px;text-underline-offset:5px;text-decoration-skip-ink:none}.section-kicker{display:flex;align-items:center;gap:0}.section-kicker:after{content:'';height:1px;width:35px;background:color-mix(in srgb,var(--purple) 23%,transparent);margin-left:12px}.contact-section .section-kicker{justify-content:center}.contact-section .section-kicker:after{display:none}.principle-card,.project-card,.article-card{transition:box-shadow .35s,border-color .35s,transform .35s}.principle-card:hover,.article-card:hover{border-color:color-mix(in srgb,var(--purple) 32%,var(--line));box-shadow:0 15px 35px #3320430c}.project-card:hover{box-shadow:0 18px 42px #49336213;border-color:color-mix(in srgb,var(--purple) 26%,var(--line))}.project-card .project-arrow{transition:background .25s,color .25s,transform .3s}.project-card:hover .project-arrow{transform:rotate(7deg)}.profile-cutout img{transition:transform .55s cubic-bezier(.2,.6,.3,1)}.principle-person:hover .profile-cutout img{transform:rotate(-2deg) translateY(-4px)}.principle-symbol{transition:transform .7s}.principle-design:hover .principle-symbol{transform:rotate(90deg)}.article-card{position:relative}.principle-card:after,.article-card:after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(340px circle at var(--pointer-x,-500px) var(--pointer-y,-500px),#b18bdd12,transparent 65%)}.process-grid article.is-in-view:before{animation:process-connect 1s cubic-bezier(.2,.65,.3,1) both;transform-origin:left}.process-grid article.is-in-view .process-step>span{background:var(--lavender);border-color:color-mix(in srgb,var(--purple) 25%,var(--line));color:var(--purple);transition:background .5s,border-color .5s}.principle-growth.is-in-view .growth-art i{animation:growth-arrive .85s cubic-bezier(.2,.6,.3,1) both;transform-origin:bottom}.principle-growth.is-in-view .growth-art i:nth-child(2){animation-delay:.08s}.principle-growth.is-in-view .growth-art i:nth-child(3){animation-delay:.16s}.principle-growth.is-in-view .growth-art i:nth-child(4){animation-delay:.24s}.text-link [data-icon],.button [data-icon]{transition:translate .25s}.text-link:hover [data-icon],.button:hover [data-icon]{translate:2px -2px}.motion-toggle{font-size:14px;color:var(--muted);width:32px}.motion-toggle[aria-pressed=true]{background:var(--lavender);color:var(--purple)}.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}.motion-paused .intro-center{animation:none}.motion-paused .name-underline path{animation:none;stroke-dashoffset:0}.motion-paused .page-grid,.motion-paused .intro-contours,.motion-paused .hero-note{translate:none;transform:initial}.motion-paused .page-grid{transform:translateY(0)}.motion-paused .hero-note.note-code{transform:rotate(-9deg)}.motion-paused .hero-note.note-craft{transform:rotate(10deg)}.motion-paused .growth-art i,.motion-paused .process-grid article:before{animation:none!important}.dark{--grid-ink:rgba(180,148,216,.065);--tile-fill:rgba(142,100,187,.075);--tile-edge:rgba(183,149,218,.08)}.dark .grid-tiles i:nth-child(3n){background:rgba(176,143,210,.055)}.dark .grid-tiles i:nth-child(4n){background:rgba(200,170,133,.045)}
@keyframes grid-tile-breathe{0%,100%{opacity:.42}50%{opacity:1}}@keyframes ambient-shift{to{transform:translate(15px,-15px) scale(1.08)}}@keyframes hero-settle{from{opacity:.35;translate:0 14px}to{opacity:1;translate:0 0}}@keyframes signature-draw{from{stroke-dashoffset:510}to{stroke-dashoffset:0}}@keyframes process-connect{from{scale:0 1}to{scale:1 1}}@keyframes growth-arrive{from{scale:1 .35}to{scale:1 1}}
@media(max-width:760px){:root{--grid-cell:48px;--grid-ink:rgba(130,99,167,.068)}.page-grid{inset:-48px 0}.grid-tiles i:nth-child(4){left:calc(var(--grid-cell)*6);top:calc(var(--grid-cell)*9)}.grid-tiles i:nth-child(5){left:calc(var(--grid-cell)*5);top:calc(var(--grid-cell)*3)}.grid-tiles i:nth-child(6){left:calc(var(--grid-cell)*7);top:calc(var(--grid-cell)*15)}.section-heading h2 em,.section-intro h2 em{text-decoration-thickness:3px;text-underline-offset:4px}.section-kicker:after{width:22px;margin-left:8px}.motion-toggle{width:28px;font-size:12px}.header-actions{gap:2px}.intro-contours,.note-code,.note-craft{translate:none!important}.work-section:before{right:0;opacity:.6}.principle-card:hover,.article-card:hover{box-shadow:none}.intro-center{animation-duration:.7s}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.page-grid,.intro-contours,.hero-note{translate:none!important}.page-grid{transform:none!important}.intro-center,.intro-ambient,.name-underline path,.grid-tiles i,.growth-art i,.process-grid article:before{animation:none!important}.name-underline path{stroke-dashoffset:0}.principle-card,.article-card,.project-card,.profile-cutout img,.principle-symbol,.text-link [data-icon],.button [data-icon]{transition:none}}

/* Chapter navigation and scroll-led visual accents. */
.chapter-rail{position:fixed;z-index:8;left:max(18px,calc((100vw - 1470px)/2));top:50%;display:grid;gap:10px;translate:0 -50%;padding:12px 9px;border:1px solid color-mix(in srgb,var(--line) 75%,transparent);border-radius:999px;background:color-mix(in srgb,var(--surface) 76%,transparent);backdrop-filter:blur(12px);box-shadow:0 12px 35px rgba(45,31,63,.08)}.chapter-rail a{display:grid;grid-template-columns:16px 8px auto;align-items:center;gap:7px;min-height:25px;color:var(--muted);text-decoration:none}.chapter-rail span{font-size:7px;letter-spacing:.07em;opacity:0;transition:opacity .25s}.chapter-rail i{display:block;width:6px;height:6px;border:1px solid color-mix(in srgb,var(--purple) 45%,var(--line));border-radius:50%;transition:transform .3s,background .3s,border-color .3s}.chapter-rail b{max-width:0;overflow:hidden;font-size:8px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;white-space:nowrap;opacity:0;transition:max-width .35s cubic-bezier(.16,1,.3,1),opacity .2s}.chapter-rail:hover span,.chapter-rail a:focus-visible span,.chapter-rail a.is-active span{opacity:1}.chapter-rail:hover b,.chapter-rail a:focus-visible b,.chapter-rail a.is-active b{max-width:68px;opacity:1}.chapter-rail a.is-active{color:var(--ink)}.chapter-rail a.is-active i{background:var(--purple);border-color:var(--purple);transform:scale(1.45);box-shadow:0 0 0 4px color-mix(in srgb,var(--purple) 14%,transparent)}.chapter-rail a:focus-visible{outline:2px solid var(--purple);outline-offset:3px;border-radius:4px}.section{position:relative}.section-heading.is-in-view .section-kicker,.section-intro.is-in-view .section-kicker{animation:kicker-sweep .6s cubic-bezier(.16,1,.3,1) both}.project-card.is-in-view .project-art{animation:project-art-settle .72s cubic-bezier(.16,1,.3,1) both}.project-card:hover .project-art{transform:scale(1.018)}.project-art{transition:transform .5s cubic-bezier(.16,1,.3,1)}.work-section:after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(500px circle at 50% 15%,color-mix(in srgb,var(--lavender) 58%,transparent),transparent 68%);opacity:.65}.work-section>.container{z-index:1}@keyframes kicker-sweep{from{opacity:0;translate:-14px 0;letter-spacing:.3em}to{opacity:1;translate:0 0;letter-spacing:inherit}}@keyframes project-art-settle{from{opacity:.45;transform:scale(.965) translateY(16px);filter:saturate(.65)}to{opacity:1;transform:scale(1) translateY(0);filter:saturate(1)}}@media(max-width:1180px){.chapter-rail{display:none}}@media(prefers-reduced-motion:reduce){.chapter-rail span,.chapter-rail b,.chapter-rail i,.project-art{transition:none}.section-heading.is-in-view .section-kicker,.section-intro.is-in-view .section-kicker,.project-card.is-in-view .project-art{animation:none!important}}

/* A layered entrance sequence keeps the opening personal, while the rest of the
   page uses small viewport reveals rather than scroll-jacking. */
.intro-center>*{animation:hero-item-in .7s cubic-bezier(.16,1,.3,1) both}.intro-center>.intro-avatar{animation-delay:.08s}.intro-center>.intro-hello{animation-delay:.16s}.intro-center>h1{animation-delay:.24s}.intro-center>.intro-statement{animation-delay:.33s}.intro-center>.intro-description{animation-delay:.41s}.intro-center>.intro-actions{animation-delay:.49s}.intro-center>.intro-availability{animation-delay:.57s}.intro-avatar{position:relative}.intro-avatar:after{content:'';position:absolute;inset:-7px;border:1px solid color-mix(in srgb,var(--purple) 28%,transparent);border-radius:inherit;animation:avatar-orbit 4.5s ease-in-out infinite}.project-card{position:relative;overflow:hidden}.project-card:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 37%,rgba(255,255,255,.34) 48%,transparent 59%);translate:-125% 0}.project-card.is-in-view:after{animation:card-sheen .9s .18s cubic-bezier(.2,.7,.3,1) both}.services details.is-in-view summary{animation:service-highlight .65s ease-out both}@keyframes hero-item-in{from{opacity:0;translate:0 18px;filter:blur(4px)}to{opacity:1;translate:0 0;filter:blur(0)}}@keyframes avatar-orbit{0%,100%{scale:1;opacity:.35}50%{scale:1.08;opacity:.75}}@keyframes card-sheen{from{translate:-125% 0}to{translate:125% 0}}@keyframes service-highlight{from{background-color:color-mix(in srgb,var(--lavender) 0%,transparent)}to{background-color:color-mix(in srgb,var(--lavender) 58%,transparent)}}/* Endless horizontal technology stack marquee (Right to Left) */
.stack-strip{border-block:1px solid var(--line);padding:26px 0;background:var(--surface);overflow:hidden;position:relative}
.stack-strip-container{display:flex;align-items:center;gap:36px;position:relative}
.stack-label{flex-shrink:0;min-width:140px;border-right:1px solid var(--line);padding-right:28px;position:relative;z-index:2}
.stack-label p{font-size:8px;letter-spacing:1.6px;color:var(--muted);margin:0;text-transform:uppercase}
.stack-label p strong{display:block;font-weight:600;color:var(--ink);font-size:10px;margin-top:3px;letter-spacing:1.4px}
.stack-marquee-wrapper{flex:1;overflow:hidden;position:relative;mask-image:linear-gradient(90deg,transparent 0%,black 28px,black calc(100% - 28px),transparent 100%);-webkit-mask-image:linear-gradient(90deg,transparent 0%,black 28px,black calc(100% - 28px),transparent 100%)}
.stack-marquee-track{display:flex;width:max-content;animation:marquee-scroll 24s linear infinite;will-change:transform}
.stack-marquee-wrapper:hover .stack-marquee-track,.stack-marquee-wrapper:focus-within .stack-marquee-track,body.motion-paused .stack-marquee-track{animation-play-state:paused}
.stack-marquee-group{display:flex;align-items:center;gap:40px;padding-right:40px;flex-shrink:0}
.stack-item{font-size:18px;letter-spacing:-.5px;font-weight:550;color:var(--muted);white-space:nowrap;transition:color .25s,transform .25s;display:inline-flex;align-items:center;gap:8px;cursor:default}
.stack-item:hover{color:var(--purple);transform:translateY(-2px)}
@keyframes marquee-scroll{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(-50%,0,0)}}
@media(max-width:760px){.stack-strip{padding:20px 0}.stack-strip-container{flex-direction:column;align-items:flex-start;gap:14px}.stack-label{border-right:none;padding-right:0;min-width:0}.stack-marquee-wrapper{width:100%}.stack-marquee-track{animation-duration:18s}.stack-marquee-group{gap:28px;padding-right:28px}.stack-item{font-size:15px}}
@media(prefers-reduced-motion:reduce){.stack-marquee-track,.reviews-marquee-track{animation:none!important}}

/* Client Reviews Horizontal Right-to-Left Marquee */
.reviews-marquee-wrapper{width:100%;overflow:hidden;position:relative;padding:18px 0;mask-image:linear-gradient(90deg,transparent 0%,black 60px,black calc(100% - 60px),transparent 100%);-webkit-mask-image:linear-gradient(90deg,transparent 0%,black 60px,black calc(100% - 60px),transparent 100%)}
.reviews-marquee-track{display:flex;width:max-content;animation:reviews-scroll-left 44s linear infinite;will-change:transform}
.reviews-marquee-wrapper:hover .reviews-marquee-track,.reviews-marquee-wrapper:focus-within .reviews-marquee-track,body.motion-paused .reviews-marquee-track{animation-play-state:paused}
.reviews-marquee-group{display:flex;align-items:stretch;gap:26px;padding-right:26px;flex-shrink:0}
@keyframes reviews-scroll-left{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(-50%,0,0)}}
@media(max-width:760px){.reviews-marquee-track{animation-duration:30s}.reviews-marquee-group{gap:16px;padding-right:16px}}


