:root{--burgundy: #d4daf1;--accent-soft: #a3b6d4;--burgundy-dark: #525c6d;--ink: #ededf3;--muted: #d4daf1;--light: color-mix(in srgb, #525c6d 88%, var(--accent-soft));--white: #525c6d;--surface: color-mix(in srgb, #525c6d 94%, var(--accent-soft));--surface-raised: color-mix(in srgb, #525c6d 82%, var(--accent-soft));--line: color-mix(in srgb, var(--accent-soft) 42%, transparent);--page: min(92vw, 1320px);font-family:Poppins,Arial,sans-serif;color:var(--ink);background:var(--white);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;overflow-x:hidden;background:var(--white)}body.modal-open{overflow:hidden}button,a{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;left:1rem;top:-4rem;z-index:999;padding:.8rem 1rem;background:var(--burgundy-dark);color:#fff;border-radius:999px}.skip-link:focus{top:1rem}:focus-visible{outline:2px solid var(--burgundy);outline-offset:4px}.site-header{position:fixed;z-index:100;top:0;left:50%;transform:translate(-50%);width:var(--page);height:86px;display:flex;align-items:center;justify-content:space-between;transition:height .35s ease,background .35s ease,box-shadow .35s ease}.site-header.scrolled{width:100%;height:68px;padding-inline:4vw;background:#525c6de6;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 1px #d4daf12e}.wordmark{font-weight:600;font-size:1.25rem;letter-spacing:-.045em}.wordmark span{color:var(--burgundy)}nav{display:flex;gap:clamp(1.6rem,3vw,3rem)}nav a{position:relative;font-size:.875rem;font-weight:500}nav a:after{content:"";position:absolute;left:0;right:100%;bottom:-.4rem;height:1px;background:var(--burgundy);transition:right .3s ease}nav a:hover:after,nav a.active:after{right:0}.menu-button{display:none;border:0;background:none;padding:.5rem}.hero{position:relative;width:var(--page);min-height:100svh;margin:0 auto;padding:clamp(7.5rem,13vh,9rem) 0 clamp(3rem,6vh,5rem);display:grid;grid-template-columns:minmax(0,1.18fr) minmax(320px,.82fr);gap:clamp(2rem,6vw,6.5rem);align-items:center;border-bottom:1px solid var(--line)}.hero-copy{min-width:0}.hero-kicker{display:flex;align-items:center;gap:.65rem;margin-bottom:clamp(1.8rem,4vh,3rem);color:var(--muted);font-size:.68rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase}.hero-kicker span{width:28px;height:1px;background:var(--burgundy)}h1,h2,h3,p{margin-top:0}.hero h1{margin:0;font-size:clamp(3.2rem,6.2vw,6.9rem);font-weight:500;letter-spacing:-.073em;line-height:.93}.hero h1 em,.about-heading h2 em,.contact-section h2 em{color:var(--accent-soft);font-style:normal}.hero-bottom{display:flex;justify-content:space-between;align-items:end;gap:2rem;margin-top:clamp(2.5rem,6vh,4.5rem)}.hero-bottom p{margin:0;color:var(--muted);font-size:clamp(.95rem,1.35vw,1.15rem)}.text-link{display:inline-flex;align-items:center;gap:.75rem;border-bottom:1px solid var(--ink);padding-bottom:.5rem;font-size:.875rem;font-weight:500}.text-link span{color:var(--burgundy);transition:transform .25s ease}.text-link:hover span{transform:translateY(4px)}.hero-portrait{position:relative;min-height:min(70vh,720px);margin:0;overflow:hidden;border-radius:clamp(24px,3vw,42px);background:var(--light);box-shadow:0 30px 80px #1616161c}.hero-portrait:after{content:"";position:absolute;inset:48% 0 0;background:linear-gradient(transparent,#0a10147a);pointer-events:none}.hero-portrait img{width:100%;height:100%;position:absolute;inset:0;display:block;object-fit:cover;object-position:58% 100%;transform:scale(1.01);transition:transform 1.2s cubic-bezier(.2,.75,.3,1),filter .6s ease}.hero-portrait:hover img{transform:scale(1.045);filter:saturate(1.04)}.hero-portrait figcaption{position:absolute;z-index:2;left:clamp(1.25rem,2.5vw,2rem);right:clamp(1.25rem,2.5vw,2rem);bottom:clamp(1.25rem,2.5vw,2rem);display:flex;justify-content:space-between;gap:1rem;color:#fff;font-size:.72rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.hero-portrait figcaption span:last-child{color:#ffffffb8;text-align:right}.hero-portrait.reveal{transition-delay:.12s}.work-section,.education-section,.experience-section,.skills-section,.credentials-section{width:var(--page);margin:0 auto;padding:clamp(6rem,12vw,11rem) 0}.section-heading{display:grid;grid-template-columns:minmax(140px,1fr) 3fr;gap:2rem;margin-top:clamp(4rem,8vw,7.5rem);margin-bottom:clamp(4rem,8vw,7.5rem)}.eyebrow{margin:0;color:var(--muted);font-size:.75rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase}.section-heading h2,.about-heading h2,.experience-section h2,.skills-section h2{margin:0;font-size:clamp(2.35rem,5.6vw,5.2rem);font-weight:500;letter-spacing:-.058em;line-height:1.02}.project{margin-bottom:clamp(6rem,13vw,11rem)}.project-meta{display:grid;grid-template-columns:minmax(80px,.5fr) 3fr auto;align-items:start;gap:1rem;border-top:1px solid var(--ink);padding-top:1rem}.project-number{color:var(--burgundy);font-size:.75rem;font-weight:600}.project-meta h3{margin:0 0 .35rem;font-size:clamp(1.25rem,2vw,1.85rem);font-weight:500;letter-spacing:-.035em}.project-meta p{color:var(--muted);font-size:.75rem}.project-summary{color:var(--muted);font-size:.875rem}.project-meta p{margin-bottom:0}.project-summary{margin:1.2rem 0 2rem calc((100% - 2rem) / 7 * .5 + 1rem)}.project-link{border:0;border-bottom:1px solid var(--ink);padding:.2rem 0 .45rem;background:none;cursor:pointer;font-size:.875rem;font-weight:500}.project-link span{display:inline-block;margin-left:.65rem;color:var(--burgundy);transition:transform .25s ease}.project-link:hover span{transform:translate(3px,-3px)}.project-visual{position:relative;display:block;width:100%;aspect-ratio:16 / 9;border:0;padding:0;overflow:hidden;background:var(--light);cursor:pointer;isolation:isolate}.project-visual:after{content:"Open case study ↗";position:absolute;z-index:30;right:1.5rem;bottom:1.5rem;padding:.8rem 1rem;border-radius:999px;background:#525c6deb;color:var(--ink);opacity:0;transform:translateY(10px);transition:.35s ease;font-size:.65rem;font-weight:500;letter-spacing:.04em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.project-visual:hover:after{opacity:1;transform:translateY(0)}.project-visual>*{transition:transform .7s cubic-bezier(.2,.75,.3,1)}.project-visual:hover>*{transform:scale(1.015)}.project-archive-heading{display:grid;grid-template-columns:minmax(140px,1fr) 3fr;gap:2rem;margin:clamp(7rem,13vw,12rem) 0 2.5rem;align-items:end}.project-archive-heading h3{margin:0;font-size:clamp(2rem,4vw,4rem);font-weight:500;letter-spacing:-.055em;line-height:1.05}.project-archive{border-top:1px solid var(--ink)}.project--archive{margin:0}.project--archive .project-meta{grid-template-columns:minmax(80px,.5fr) 3fr minmax(6.75rem,auto);align-items:center;padding:1.55rem 1rem 1.55rem 0;border-top:0;border-bottom:1px solid var(--line);transition:background .3s ease,padding .3s ease}.project--archive .project-meta:hover{padding-left:1rem;background:var(--surface-raised)}.project--archive .project-meta h3{font-size:clamp(1.05rem,1.7vw,1.45rem)}.project--archive .project-meta p{margin-top:.25rem}.project--archive .project-link{border:0;padding:.5rem 0}.archive-case-visual{padding:clamp(1.5rem,5vw,4.5rem);display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;background:radial-gradient(circle at 84% 24%,rgba(243,228,91,.95) 0 11%,transparent 11.3%),radial-gradient(circle at 96% 96%,rgba(255,107,85,.5) 0 16%,transparent 16.3%),linear-gradient(145deg,#dce5ff,var(--powder));color:var(--midnight);text-align:left}.archive-cover-label{padding:.45rem .8rem;border:2px solid var(--midnight);border-radius:4px;background:var(--pink);box-shadow:3px 3px 0 var(--midnight);font-size:.9rem;font-weight:700;transform:rotate(-3deg)}.archive-cover-number{color:var(--cream);font:750 clamp(4.5rem,17vw,15rem)/.8 "Bricolage Grotesque",sans-serif;letter-spacing:-.06em;-webkit-text-stroke:3px var(--midnight);text-shadow:8px 8px 0 var(--cobalt)}.archive-cover-tags{display:flex;flex-wrap:wrap;gap:.6rem}.archive-cover-tags i{padding:.55rem 1rem;border:2px solid var(--midnight);border-radius:999px;background:var(--butter);box-shadow:3px 3px 0 var(--midnight);font-size:clamp(.85rem,1.2vw,1rem);font-style:normal;font-weight:600;transform:rotate(-1.5deg)}.archive-cover-tags i:nth-child(2){background:var(--cream);transform:rotate(1deg)}.archive-cover-tags i:nth-child(3){background:var(--pink);transform:rotate(-.5deg)}.visual-corporate{background:#d9d7d2}.browser-shell{position:absolute;left:6%;top:9%;width:79%;height:77%;border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 28px 75px #1616162e}.browser-bar{position:absolute;inset:0 0 auto;height:7%;display:flex;align-items:center;gap:5px;padding:0 2%;background:#f0f0f0}.browser-bar i{width:6px;aspect-ratio:1;border-radius:50%;background:#c3c3c3}.browser-bar b{position:absolute;left:38%;width:24%;height:38%;border-radius:999px;background:#fff;color:#aaa;font-size:clamp(.26rem,.45vw,.45rem);font-weight:400;display:grid;place-items:center}.corporate-screen{position:absolute;inset:7% 0 0;overflow:hidden;background:#e9e5df}.mini-nav{position:absolute;z-index:4;top:0;left:0;width:100%;height:13%;display:flex;align-items:center;gap:7%;padding:0 5%;background:#ffffffed}.mini-nav b{margin-right:auto;color:#4d5153;font-size:clamp(.3rem,.75vw,.68rem);letter-spacing:.05em}.mini-nav i{width:5%;height:2px;background:#aaa}.mini-nav em{padding:1.2% 2%;background:#4e5355;color:#fff;font-size:clamp(.22rem,.42vw,.4rem);font-style:normal}.corporate-hero-copy{position:absolute;z-index:3;left:7%;top:26%;display:flex;flex-direction:column;align-items:flex-start;color:#333;text-align:left}.corporate-hero-copy small{color:#6d1028;font-size:clamp(.26rem,.5vw,.48rem);letter-spacing:.2em}.corporate-hero-copy strong{margin-top:7%;font-size:clamp(1rem,3.2vw,3rem);line-height:.96;letter-spacing:-.055em;font-weight:500}.corporate-hero-copy i{width:36%;height:4px;margin-top:10%;background:#6d1028}.corporate-structure{position:absolute;right:-3%;bottom:-9%;width:67%;height:95%;transform:skew(-12deg)!important;background:linear-gradient(125deg,transparent 0 45%,rgba(69,74,77,.78) 45% 49%,transparent 49%),linear-gradient(55deg,transparent 0 44%,rgba(69,74,77,.9) 44% 49%,transparent 49%),linear-gradient(to bottom right,#c8c9c7,#9ca0a0);clip-path:polygon(15% 100%,32% 0,100% 0,100% 100%)}.corporate-structure b{position:absolute;width:50%;height:2px;background:#ffffff73;transform:rotate(-35deg)}.corporate-structure b:nth-child(1){top:30%;left:25%}.corporate-structure b:nth-child(2){top:48%;left:10%}.corporate-structure b:nth-child(3){top:68%;left:32%}.corporate-stat{position:absolute;left:7%;bottom:7%;display:flex;align-items:center;gap:8px;text-align:left}.corporate-stat strong{font-size:clamp(.7rem,1.5vw,1.4rem);color:#4d5153}.corporate-stat small{font-size:clamp(.22rem,.4vw,.4rem);color:#777}.phone-shell{position:absolute;z-index:10;right:5%;bottom:5%;width:18%;height:65%;border:clamp(4px,.7vw,9px) solid #171717;border-radius:clamp(15px,2.3vw,32px);background:#eeeeeb;box-shadow:0 22px 45px #1616164d;overflow:hidden}.phone-notch{position:absolute;top:1.5%;left:35%;width:30%;height:3.5%;border-radius:999px;background:#171717}.corporate-phone b{position:absolute;top:8%;left:9%;font-size:clamp(.3rem,.65vw,.65rem);color:#4d5153}.corporate-phone strong{position:absolute;top:24%;left:10%;text-align:left;font-size:clamp(.65rem,1.5vw,1.45rem);line-height:1;letter-spacing:-.05em}.corporate-phone i{position:absolute;left:10%;right:10%;height:25%;background:#747a7c;transform:skew(-10deg)}.corporate-phone i:nth-of-type(1){top:50%}.corporate-phone i:nth-of-type(2){top:77%;background:#6d1028}.corporate-screen img,.corporate-phone img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}.visual-pandai{background:#d9d2ff}.pandai-browser{position:absolute;left:5%;top:8%;width:82%;height:78%;border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 28px 75px #291c6138}.pandai-bar{position:absolute;inset:0 0 auto;height:7%;display:flex;align-items:center;gap:5px;padding:0 2%;background:#f2f0fa}.pandai-bar i{width:6px;aspect-ratio:1;border-radius:50%;background:#c9c4dd}.pandai-bar b{position:absolute;left:37%;width:26%;height:38%;border-radius:999px;background:#fff;color:#aaa;font-size:clamp(.26rem,.45vw,.45rem);font-weight:400;display:grid;place-items:center}.pandai-page{position:absolute;inset:7% 0 0;overflow:hidden;background:#faf9ff}.pandai-nav{position:absolute;z-index:4;top:0;left:0;width:100%;height:13%;display:flex;align-items:center;gap:7%;padding:0 5%;background:#fff}.pandai-nav b{margin-right:auto;color:#5635d8;font-size:clamp(.5rem,1.15vw,1.1rem);font-weight:600;letter-spacing:-.05em}.pandai-nav i{width:5%;height:2px;background:#d0cbe1}.pandai-nav em{padding:1.2% 2%;border-radius:999px;background:#6238e4;color:#fff;font-size:clamp(.22rem,.42vw,.4rem);font-style:normal}.pandai-copy{position:absolute;z-index:3;left:7%;top:25%;display:flex;flex-direction:column;align-items:flex-start;text-align:left}.pandai-copy small{color:#6841e3;font-size:clamp(.25rem,.48vw,.46rem);letter-spacing:.16em}.pandai-copy strong{margin-top:8%;font-size:clamp(1rem,3vw,2.9rem);line-height:.98;letter-spacing:-.055em;font-weight:600;color:#201747}.pandai-copy em{margin-top:10%;padding:4% 8%;border-radius:999px;background:#ffcc48;color:#3d2f00;font-size:clamp(.24rem,.48vw,.46rem);font-style:normal;white-space:nowrap}.pandai-orb{position:absolute;right:5%;top:22%;width:38%;aspect-ratio:1;border-radius:50%;background:linear-gradient(145deg,#7650ee,#4d25cb);color:#fff;box-shadow:0 20px 40px #5734d340}.pandai-orb>i{position:absolute;right:20%;top:13%;font-size:clamp(1rem,3vw,3rem);font-style:normal;color:#ffdc70}.pandai-orb>b{position:absolute;left:20%;top:27%;font-size:clamp(1.2rem,4vw,4rem);font-weight:600;transform:rotate(-8deg)}.pandai-orb>small{position:absolute;left:22%;bottom:24%;font-size:clamp(.24rem,.45vw,.44rem)}.subject-row{position:absolute;left:7%;bottom:8%;display:flex;gap:6%;width:44%}.subject-row i{padding:4% 8%;border-radius:999px;background:#fff;color:#665a82;font-size:clamp(.2rem,.4vw,.38rem);font-style:normal;box-shadow:0 8px 25px #1e144614}.pandai-phone{position:absolute;z-index:10;right:5%;bottom:5%;width:17%;height:65%;border:clamp(4px,.7vw,9px) solid #171717;border-radius:clamp(15px,2.3vw,32px);background:#6540df;color:#fff;box-shadow:0 22px 45px #20145152;overflow:hidden;text-align:left}.pandai-phone>span{position:absolute;top:1.5%;left:35%;width:30%;height:3.5%;border-radius:999px;background:#171717}.pandai-phone>b{position:absolute;top:10%;left:12%;font-size:clamp(.3rem,.65vw,.65rem)}.pandai-phone>strong{position:absolute;top:25%;left:12%;font-size:clamp(.65rem,1.4vw,1.35rem);line-height:1;letter-spacing:-.04em}.pandai-phone>i{position:absolute;left:12%;right:12%;height:16%;border-radius:8px;background:#ffcc48}.pandai-phone>i:nth-of-type(1){top:51%}.pandai-phone>i:nth-of-type(2){top:70%;background:#fff}.pandai-phone>em{position:absolute;left:12%;bottom:6%;font-size:clamp(.2rem,.4vw,.38rem);font-style:normal;color:#d8cbff}.pandai-page img,.pandai-phone img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}.visual-internal{background:#d5d3cf}.figma-window{position:absolute;inset:6% 4%;display:grid;grid-template-columns:16% 1fr 17%;grid-template-rows:8% 1fr;border-radius:10px;overflow:hidden;background:#1f1f1f;color:#fff;box-shadow:0 28px 80px #16161638;text-align:left}.figma-toolbar{grid-column:1/-1;display:flex;align-items:center;gap:2.5%;padding:0 1.5%;border-bottom:1px solid #343434;background:#272727}.figma-toolbar b{display:grid;place-items:center;width:2.3%;aspect-ratio:1;border-radius:4px;background:#6d1028;font-size:clamp(.24rem,.5vw,.48rem)}.figma-toolbar i{width:1.4%;aspect-ratio:1;border-radius:3px;border:1px solid #777}.figma-toolbar small{margin-left:auto;margin-right:auto;color:#bbb;font-size:clamp(.22rem,.42vw,.4rem)}.figma-toolbar em{padding:.65% 1.4%;border-radius:6px;background:#7d35e8;font-size:clamp(.2rem,.38vw,.36rem);font-style:normal}.figma-layers,.figma-properties{padding:10%;background:#242424;color:#a7a7a7;display:flex;flex-direction:column;gap:6%;font-size:clamp(.2rem,.4vw,.38rem)}.figma-layers{border-right:1px solid #343434}.figma-properties{border-left:1px solid #343434}.figma-layers b,.figma-properties b{color:#fff;font-weight:500}.figma-layers span{color:#d0d0d0}.figma-layers i,.figma-properties i{width:100%;height:4%;border-radius:3px;background:#343434}.figma-properties i:nth-of-type(2){height:10%}.figma-canvas{position:relative;overflow:hidden;background-color:#5f5f5f;background-image:radial-gradient(#777 1px,transparent 1px);background-size:18px 18px}.design-frame{position:absolute;background:#fff;color:#161616;box-shadow:0 16px 30px #0000002e;overflow:hidden}.frame-one{left:7%;top:12%;width:48%;height:70%;padding:5%}.frame-one:after{content:"H";position:absolute;right:-3%;bottom:-30%;font-size:clamp(4rem,12vw,11rem);font-weight:600;color:#f0e8eb}.frame-one small,.frame-two small,.frame-three small{position:relative;z-index:2;color:#6d1028;font-size:clamp(.2rem,.4vw,.38rem);letter-spacing:.14em}.frame-one strong{position:relative;z-index:2;display:block;margin-top:10%;font-size:clamp(.65rem,1.7vw,1.6rem);line-height:1;letter-spacing:-.05em}.frame-one>i{position:relative;z-index:2;display:block;width:28%;height:4px;margin-top:12%;background:#6d1028}.frame-one em{position:absolute;z-index:2;left:10%;bottom:10%;font-size:clamp(.2rem,.4vw,.38rem);font-style:normal;color:#777}.frame-two{right:6%;top:12%;width:32%;height:44%;padding:4%}.frame-two strong{display:block;margin-top:10%;font-size:clamp(.45rem,1vw,.95rem);font-weight:500}.frame-two span{display:block;width:100%;height:10%;margin-top:8%;border-radius:999px;background:#eee}.frame-two span:nth-of-type(2){width:75%}.frame-two span:nth-of-type(3){width:55%;background:#ead9de}.frame-three{right:6%;bottom:12%;width:32%;height:21%;padding:4%}.frame-three i{display:inline-block;width:18%;aspect-ratio:1;margin:7% 4% 0 0;border-radius:4px;background:#eee}.frame-three i:last-child{background:#6d1028}.visual-appraisal{display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 9% 16%,rgba(243,228,91,.95) 0 9%,transparent 9.3%),radial-gradient(circle at 90% 88%,rgba(185,210,255,.95) 0 14%,transparent 14.3%),linear-gradient(rgba(32,34,56,.07) 1px,transparent 1px) 0 0 / 100% 28px,linear-gradient(90deg,rgba(32,34,56,.07) 1px,transparent 1px) 0 0 / 28px 100%,var(--cream);color:var(--midnight)}.flow-label{position:absolute;left:4%;top:6%;padding:.4rem .65rem;border:2px solid var(--midnight);border-radius:4px;background:var(--pink);box-shadow:3px 3px 0 var(--midnight);font-size:clamp(.62rem,.8vw,.78rem);font-weight:700;letter-spacing:.12em;transform:rotate(-3deg)}.flow-note{position:absolute;right:5%;top:9%;padding:.45rem .8rem;border:2px solid var(--midnight);background:var(--butter);box-shadow:4px 4px 0 var(--midnight);font:600 clamp(1rem,1.7vw,1.45rem) "Caveat",cursive;transform:rotate(5deg)}.flow-canvas{width:94%;display:grid;grid-template-columns:1fr .28fr 1fr .28fr 1fr;align-items:center;gap:1.5%}.flow-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;padding:clamp(.9rem,1.6vw,1.4rem);border:2.5px solid var(--midnight);border-radius:14px;background:var(--cream);box-shadow:6px 6px 0 var(--midnight);text-align:left;transform:rotate(-3deg) translateY(-8%);transition:transform .45s var(--ease-spring),box-shadow .3s ease}.flow-card.data-card{background:var(--powder);transform:rotate(2deg) translateY(10%)}.flow-card>i{display:grid;place-items:center;width:2.1em;aspect-ratio:1;border:2px solid var(--midnight);border-radius:50%;background:var(--butter);box-shadow:2px 2px 0 var(--midnight);color:var(--midnight);font-size:clamp(.82rem,1vw,.95rem);font-style:normal;font-weight:800}.flow-card:after{content:"📝";position:absolute;top:-.9em;right:-.5em;display:grid;place-items:center;width:2em;aspect-ratio:1;border:2px solid var(--midnight);border-radius:50%;background:var(--pink);box-shadow:3px 3px 0 var(--midnight);font-size:clamp(1.15rem,1.9vw,1.7rem);line-height:1;transform:rotate(10deg)}.flow-card.data-card:after{content:"🔄";background:var(--butter);transform:rotate(-8deg)}.flow-card.review-card:after{content:"✅";background:var(--cream);transform:rotate(6deg)}.flow-card b{margin-top:clamp(.9rem,2vw,1.8rem);font:650 clamp(1.15rem,1.9vw,1.75rem)/1 "Bricolage Grotesque",sans-serif;letter-spacing:-.03em}.flow-card small{margin-top:.35rem;color:#3d4766;font-size:clamp(.85rem,1.05vw,1rem);font-weight:500;line-height:1.25}.flow-card em{margin-top:.7rem;padding:.3rem .7rem;border:2px solid var(--midnight);border-radius:999px;background:#fff;color:var(--midnight);box-shadow:2px 2px 0 var(--midnight);font-size:clamp(.8rem,.95vw,.92rem);font-style:normal;font-weight:700}.flow-card em:before{content:"";display:inline-block;width:8px;aspect-ratio:1;margin-right:6px;border-radius:50%;background:#3bd671}.flow-canvas svg{width:100%;overflow:visible;fill:none;stroke:var(--midnight);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.flow-canvas svg path:first-child{stroke-dasharray:10 9;animation:flow-dash 1.1s linear infinite}.flow-canvas svg:nth-of-type(2){stroke:var(--cobalt)}@keyframes flow-dash{to{stroke-dashoffset:-19}}.review-card{background:var(--cobalt);color:var(--cream);transform:rotate(-1.5deg) translateY(-4%)}.review-card small{color:#dce5ff}.flow-foot{position:absolute;bottom:6%;left:4%;padding:.4rem .75rem;border:2px solid var(--midnight);border-radius:999px;background:var(--cream);box-shadow:3px 3px 0 var(--midnight);font-size:clamp(.65rem,.85vw,.82rem);font-weight:600}.flow-foot i{display:inline-block;width:8px;aspect-ratio:1;margin-right:7px;border-radius:50%;background:var(--coral)}@media(prefers-reduced-motion:reduce){.flow-canvas svg path:first-child{animation:none}}.visual-chatbot{background:#161616;color:#fff}.chat-backdrop{position:absolute;left:7%;top:16%;width:44%;display:flex;flex-direction:column;align-items:flex-start;text-align:left}.chat-backdrop b{font-size:clamp(1rem,3.2vw,3.1rem);font-weight:500;letter-spacing:-.05em}.chat-backdrop small{margin-top:4%;color:#8e8e93;font-size:clamp(.3rem,.65vw,.64rem)}.chat-backdrop i{width:85%;height:1px;margin-top:10%;background:#333}.chat-panel{position:absolute;right:8%;top:7%;bottom:7%;width:35%;padding:3% 2.5%;border-radius:clamp(12px,2vw,26px);background:#f7f7f7;color:#161616;box-shadow:0 30px 80px #00000059;display:flex;flex-direction:column;gap:3%;text-align:left}.chat-head{display:flex;align-items:center;gap:4%;padding-bottom:4%;border-bottom:1px solid #ddd}.chat-head>i{display:grid;place-items:center;width:12%;aspect-ratio:1;border-radius:50%;background:#6d1028;color:#fff;font-size:clamp(.25rem,.52vw,.5rem);font-style:normal}.chat-head>b{font-size:clamp(.3rem,.62vw,.6rem);font-weight:500}.chat-head b small{display:block;color:#65886e;font-size:70%;font-weight:400}.chat-head em{margin-left:auto;color:#999;font-style:normal;font-size:clamp(.3rem,.55vw,.55rem)}.bubble{max-width:78%;padding:4%;border-radius:10px;background:#e9e9e9;font-size:clamp(.25rem,.52vw,.5rem);line-height:1.5}.bubble.bot{align-self:flex-start}.bubble.user{align-self:flex-end;background:#6d1028;color:#fff}.bubble.bot i{display:block;margin-top:4%;color:#6d1028;font-style:normal;font-weight:500}.chat-input{margin-top:auto;padding:4%;border:1px solid #ddd;border-radius:999px;color:#999;font-size:clamp(.25rem,.48vw,.47rem)}.chat-input b{float:right;display:grid;place-items:center;width:10%;aspect-ratio:1;border-radius:50%;background:#6d1028;color:#fff}.visual-brand{background:#eeeae3}.brand-type{position:absolute;left:6%;top:10%;width:42%;height:45%;padding:4%;background:#53565a;color:#fff;text-align:left}.brand-type small{font-size:clamp(.24rem,.45vw,.44rem);letter-spacing:.18em}.brand-type strong{display:block;margin-top:6%;font-size:clamp(.8rem,2.6vw,2.5rem);line-height:.95;letter-spacing:-.05em;font-weight:500}.brand-type em{position:absolute;left:9%;bottom:10%;color:#c8c9c9;font-size:clamp(.22rem,.42vw,.4rem);font-style:normal}.brand-card{position:absolute;left:27%;bottom:8%;z-index:3;width:33%;height:31%;padding:3%;background:#fff;box-shadow:0 22px 50px #28231e24;text-align:left}.brand-card i{display:block;color:#53565a;font-size:clamp(1rem,2.8vw,2.8rem);font-weight:600;font-style:normal;letter-spacing:-.1em}.brand-card b{position:absolute;left:8%;bottom:20%;font-size:clamp(.25rem,.5vw,.48rem);letter-spacing:.12em}.brand-card small{position:absolute;right:8%;bottom:20%;color:#999;font-size:clamp(.22rem,.4vw,.38rem)}.brand-colours{position:absolute;right:6%;top:10%;width:25%;height:16%;display:flex}.brand-colours i{flex:1;display:flex;align-items:flex-end;padding:5%;background:#53565a;color:#fff;font-size:clamp(.18rem,.3vw,.3rem);font-style:normal}.brand-colours i:nth-child(2){background:#fff;color:#999}.brand-colours i:nth-child(3){background:#161616}.brand-paper{position:absolute;right:9%;bottom:-3%;width:27%;height:63%;padding:4%;background:#fff;box-shadow:0 20px 45px #28231e1f;text-align:left}.brand-paper b{color:#53565a;font-size:clamp(.45rem,.9vw,.9rem);line-height:.85}.brand-paper i{display:block;width:38%;height:1px;margin-top:30%;background:#53565a}.brand-paper small{position:absolute;left:14%;bottom:13%;color:#777;font-size:clamp(.2rem,.4vw,.39rem)}.visual-infrastructure{background:#111;color:#fff}.infra-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:7% 13%;-webkit-mask-image:linear-gradient(to right,transparent,black 20%,black 80%,transparent);mask-image:linear-gradient(to right,transparent,black 20%,black 80%,transparent)}.infra-node{position:absolute;top:34%;width:22%;aspect-ratio:1.5;padding:3%;border:1px solid #3a3a3a;background:#181818;text-align:left}.infra-node>i{color:#8d8d8d;font-size:clamp(.25rem,.45vw,.44rem);font-style:normal}.infra-node>b{display:block;margin-top:15%;font-size:clamp(.6rem,1.25vw,1.2rem);font-weight:500}.infra-node>small{color:#777;font-size:clamp(.22rem,.4vw,.4rem)}.infra-node:after{content:"";position:absolute;right:7%;top:10%;width:7px;aspect-ratio:1;border-radius:50%;background:#6d1028;box-shadow:0 0 0 4px #6d102840}.infra-node.source{left:8%}.infra-node.deploy{left:39%}.infra-node.live{right:8%;background:#6d1028;border-color:#6d1028}.infra-node.live:after{background:#fff;box-shadow:0 0 0 4px #fff3}.infra-node.live>i,.infra-node.live>small{color:#e9c7d0}.infra-line{position:absolute;top:50%;width:9%;height:1px;background:#555}.infra-line:after{content:"";position:absolute;right:0;top:-3px;width:7px;aspect-ratio:1;border-top:1px solid #777;border-right:1px solid #777;transform:rotate(45deg)}.line-one{left:30%}.line-two{left:61%}.infra-status{position:absolute;left:8%;bottom:8%;color:#888;font-size:clamp(.25rem,.48vw,.46rem)}.infra-status i{display:inline-block;width:7px;aspect-ratio:1;margin-right:7px;border-radius:50%;background:#58a66d;box-shadow:0 0 0 4px #58a66d26}.about-section{width:100%;padding:clamp(6rem,12vw,11rem) max(4vw,calc((100vw - 1320px)/2));background:var(--light)}.about-heading{display:grid;grid-template-columns:minmax(140px,1fr) 3fr;gap:2rem;margin-bottom:clamp(3.5rem,7vw,6rem)}.about-heading h2{font-size:clamp(2.3rem,4.8vw,4.8rem)}.about-bento{display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:360px 300px;gap:1.25rem}.about-tile{margin:0;border-radius:clamp(22px,2.4vw,34px);overflow:hidden}.about-photo{position:relative;grid-column:1/5;grid-row:1/3;min-height:680px;background:#d5d8da}.about-photo img{width:100%;height:100%;display:block;object-fit:cover;object-position:50% 52%;transition:transform 1.1s cubic-bezier(.2,.75,.3,1),filter .6s ease}.about-photo:after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#08111880);pointer-events:none}.about-photo:hover img{transform:scale(1.035);filter:saturate(1.04)}.about-photo figcaption{position:absolute;z-index:2;left:2rem;bottom:1.6rem;color:#fff;font-size:.75rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase}.about-copy{grid-column:5/13;grid-row:1;padding:clamp(2rem,4vw,4rem);display:flex;flex-direction:column;justify-content:flex-end;background:var(--surface)}.about-copy p{max-width:690px;margin:0;color:var(--muted);font-size:clamp(1rem,1.4vw,1.2rem);line-height:1.75}.about-copy p+p{margin-top:1rem;color:var(--ink)}.about-card{padding:clamp(1.7rem,3vw,2.7rem);display:flex;flex-direction:column;justify-content:space-between;transition:translate .55s cubic-bezier(.2,.75,.3,1),box-shadow .55s ease}.about-card:hover{translate:0 -6px;box-shadow:0 24px 60px #1616161a}.about-card--burgundy{grid-column:5/9;grid-row:2;background:var(--burgundy-dark);color:#fff}.about-card--white{grid-column:9/13;grid-row:2;background:var(--surface-raised);color:var(--ink)}.about-card span{color:inherit;opacity:.62;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase}.about-card h3{margin:auto 0 1rem;font-size:clamp(1.65rem,2.8vw,2.8rem);font-weight:500;line-height:1.02;letter-spacing:-.055em}.about-card p{margin:0;color:inherit;opacity:.7;font-size:.75rem}.about-bento .reveal:nth-child(2){transition-delay:.08s}.about-bento .reveal:nth-child(3){transition-delay:.13s}.about-bento .reveal:nth-child(4){transition-delay:.18s}.section-heading.compact{grid-template-columns:minmax(140px,1fr) 3fr;margin-bottom:clamp(3rem,6vw,5rem)}.section-heading.compact h2{font-size:clamp(2rem,4vw,4rem)}.education-section{padding-bottom:0}.education-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:minmax(430px,auto) auto;gap:1rem}.education-card{min-height:430px;padding:clamp(2rem,4vw,3.5rem);border-radius:clamp(22px,2.4vw,34px);background:var(--light);display:flex;flex-direction:column;justify-content:space-between;transition:translate .55s cubic-bezier(.2,.75,.3,1),box-shadow .55s ease}.education-card:hover{translate:0 -6px;box-shadow:0 24px 60px #16161617}.education-card--primary{background:var(--burgundy-dark);color:#fff}.education-top,.education-foot{display:flex;justify-content:space-between;gap:1rem}.education-top span{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;opacity:.66}.education-card>div>p,.education-card>p,.education-foot p{margin:0;color:inherit;opacity:.68;font-size:.8rem;line-height:1.7}.education-card h3{margin:.8rem 0 0;font-size:clamp(2rem,4vw,4.1rem);font-weight:500;letter-spacing:-.065em;line-height:.98}.education-card h3 em{font-style:normal;opacity:.55}.study-projects{grid-column:1/-1;padding:1rem 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr 1.3fr 1.3fr;gap:2rem;align-items:center}.study-projects>span{color:var(--burgundy);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase}.study-projects div{padding:1.3rem 0}.study-projects b{display:block;font-size:1rem;font-weight:500}.study-projects small{display:block;margin-top:.45rem;color:var(--muted);font-size:.75rem}.timeline{border-top:1px solid var(--ink)}main section[id]{scroll-margin-top:68px}.experience-heading-copy p{max-width:560px;margin:1.25rem 0 0;color:var(--muted);font-size:clamp(.9rem,1.2vw,1.05rem);line-height:1.7}.timeline-row{display:grid;grid-template-columns:minmax(130px,.8fr) minmax(0,1.25fr) minmax(0,1.5fr);gap:clamp(1.5rem,3vw,3.5rem);align-items:start;padding:clamp(2rem,3.2vw,3rem) 1rem;border-bottom:1px solid var(--line);transition:background .3s ease,padding .3s ease}.timeline-row:hover{padding-inline:1.5rem;background:var(--surface-raised)}.timeline-date{margin:.15rem 0 0;color:var(--burgundy);font-size:.72rem;font-weight:500;line-height:1.65;letter-spacing:.035em;text-transform:uppercase}.timeline-date span{display:inline-block;margin-inline:.15rem}.timeline-role h3{margin:0;font-size:clamp(1.15rem,1.75vw,1.5rem);font-weight:600;letter-spacing:-.035em;line-height:1.3}.timeline-role h3 span{font-weight:500}.timeline-role p{margin:.55rem 0 0;color:var(--muted);font-size:.84rem}.timeline-details p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.7}.timeline-details .timeline-discipline{margin-bottom:.65rem;color:var(--ink);font-size:.72rem;font-weight:500;line-height:1.55;letter-spacing:.035em;text-transform:uppercase}.skills-section{padding-top:0}.skill-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.skill-grid article{min-height:280px;padding:2rem;background:var(--surface);transition:background .35s ease,color .35s ease}.skill-grid article:hover{background:var(--burgundy-dark);color:var(--ink)}.skill-grid span{color:var(--burgundy);font-size:.75rem}.skill-grid article:hover span{color:var(--burgundy)}.skill-grid h3{margin:5rem 0 1.3rem;font-size:1.2rem;font-weight:500}.skill-grid p{margin:0;color:var(--muted);font-size:.875rem;line-height:1.9}.skill-grid article:hover p{color:var(--muted)}.credentials-section{padding-top:0}.credential-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.credential-card{display:block;min-width:0}.credential-cover{position:relative;aspect-ratio:1.5;margin:0;border-radius:clamp(22px,2.4vw,34px);overflow:hidden;background:var(--light);transition:transform .75s cubic-bezier(.2,.75,.3,1),box-shadow .55s ease}.credential-card:hover .credential-cover{transform:translateY(-6px) scale(.995);box-shadow:0 28px 70px #16161621}.credential-cover img{width:100%;height:100%;display:block;object-fit:cover;transition:transform 1.1s cubic-bezier(.2,.75,.3,1),filter .5s ease}.credential-open{display:block;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:zoom-in}.credential-open:focus-visible{outline:3px solid var(--burgundy);outline-offset:-6px}.credential-cover--gold img{object-position:center top}.credential-modal{width:min(92vw,920px);max-width:none;max-height:92svh;padding:clamp(1rem,2vw,1.5rem);border:0;border-radius:18px;overflow:auto;background:var(--light);color:var(--ink);box-shadow:0 32px 100px #00000059}.credential-modal::backdrop{background:#0a0c14c7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.credential-modal figure{margin:0}.credential-modal img{display:block;width:auto;max-width:100%;max-height:calc(92svh - 5.5rem);margin:0 auto;object-fit:contain}.credential-modal figcaption{margin-top:.85rem;text-align:center;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.credential-modal-close{position:sticky;z-index:2;top:0;float:right;width:2.5rem;aspect-ratio:1;margin:0 0 -2.5rem;border:1px solid rgba(255,255,255,.3);border-radius:50%;background:#0a0c14d1;color:#fff;cursor:pointer;font-size:1.45rem;line-height:1}.credential-card:hover .credential-cover img{transform:scale(1.025);filter:saturate(1.03)}.credential-info{display:flex;justify-content:space-between;gap:2rem;padding:1.6rem .2rem 0}.credential-info>div>span{color:var(--burgundy);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.credential-info h3{max-width:580px;margin:.55rem 0 0;font-size:clamp(1.05rem,1.7vw,1.4rem);font-weight:500;line-height:1.35;letter-spacing:-.025em}.credential-info p{margin:.35rem 0 0;color:var(--muted);font-size:.8rem}.credential-grid .reveal:nth-child(2){transition-delay:.1s}.contact-section{min-height:100svh;padding:clamp(6rem,10vw,10rem) max(4vw,calc((100vw - 1320px)/2)) 2rem;display:flex;flex-direction:column;justify-content:flex-end;background:var(--burgundy-dark);color:var(--ink)}.contact-section>.eyebrow{color:var(--muted)}.contact-section h2{margin:2rem 0 clamp(3rem,8vw,7rem);font-size:clamp(3.4rem,9vw,9rem);font-weight:500;letter-spacing:-.075em;line-height:.88}.contact-section h2 em{color:var(--accent-soft)}.contact-links{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(212,218,241,.4)}.contact-links a{display:flex;justify-content:space-between;padding:1.4rem 0;border-bottom:1px solid rgba(212,218,241,.4);font-size:.875rem}.contact-links a:not(:last-child){margin-right:3rem}.contact-links span{transition:transform .25s ease}.contact-links a:hover span{transform:translate(4px,-4px)}.footer-line{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;margin-top:4rem;color:var(--muted);font-size:.75rem}.footer-line a{color:var(--ink)}.reveal,.reveal.is-visible{opacity:1;visibility:visible;filter:none;clip-path:none;transform:none}.project.reveal{transition-delay:.06s}.cursor-dot{position:fixed;z-index:1000;top:0;left:0;width:9px;height:9px;border-radius:50%;background:var(--burgundy);pointer-events:none;opacity:0;transition:width .2s,height .2s,opacity .2s,background .2s;transform:translate(-50%,-50%);mix-blend-mode:screen}.cursor-dot.active{width:42px;height:42px;background:#a3b6d433}.case-study{width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:var(--white);color:var(--ink);overflow-y:auto}.case-study::backdrop{background:#525c6d66;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.case-study[open]{animation:case-in .45s ease both}@keyframes case-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.case-close{position:fixed;z-index:5;right:2.5rem;top:2.1rem;width:45px;aspect-ratio:1;border:1px solid var(--line);border-radius:50%;background:#525c6de6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:pointer}.case-close span{position:absolute;left:28%;top:49%;width:44%;height:1px;background:var(--ink);transform:rotate(45deg)}.case-close span+span{transform:rotate(-45deg)}.case-content{width:var(--page);margin:0 auto;padding:clamp(6rem,10vw,9rem) 0 4rem}.case-intro{display:grid;grid-template-columns:1fr 3fr;gap:1rem;margin-bottom:3rem}.case-index{justify-self:start;align-self:start;margin-top:1rem;padding:.5rem .85rem;border:2px solid var(--midnight);border-radius:4px;background:var(--butter);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight);font:700 1rem Bricolage Grotesque,sans-serif;transform:rotate(-4deg)}.case-intro h2{grid-column:2;margin:0;font:650 clamp(3rem,7vw,7rem)/.92 "Bricolage Grotesque",sans-serif;letter-spacing:-.055em}.case-role{grid-column:2;margin:.4rem 0 0;color:var(--muted);font-size:1rem;font-weight:500}.case-external{grid-column:2;justify-self:start;margin-top:.75rem;padding:.75rem 1.2rem;border:2px solid var(--midnight);border-radius:999px;background:var(--butter);color:var(--midnight);box-shadow:4px 4px 0 var(--midnight);font-size:1rem;font-weight:700;transition:transform .25s var(--ease-spring),box-shadow .25s ease,background .2s ease}.case-external:hover,.case-external:focus-visible{background:var(--powder);box-shadow:1px 1px 0 var(--midnight);transform:translate(3px,3px)}.case-external span{display:inline-block;margin-left:.5rem;transition:transform .25s ease}.case-external:hover span{transform:translate(3px,-3px)}.case-hero{aspect-ratio:16/8;margin-right:12px;border:3px solid var(--midnight);border-radius:18px;background:var(--powder) center/cover no-repeat;box-shadow:12px 12px 0 var(--cobalt);overflow:hidden}.case-hero .project-visual{height:100%;aspect-ratio:auto;pointer-events:none}.case-hero .project-visual:after{display:none}.case-details{display:grid;grid-template-columns:1fr 1.25fr;gap:clamp(2rem,4vw,3.5rem);align-items:start;padding:clamp(4rem,8vw,7rem) 4%;border-bottom:1px solid var(--line)}.case-details>div{position:relative;padding:clamp(2.4rem,3.5vw,3rem) clamp(1.5rem,3vw,2.5rem) clamp(1.75rem,3vw,2.5rem);border:2px solid var(--midnight);border-radius:18px;color:var(--midnight)}.case-details>div:first-child{background:var(--powder);box-shadow:10px 10px 0 var(--midnight);transform:rotate(-1.2deg)}.case-details>div:last-child{background:var(--cream);box-shadow:10px 10px 0 var(--cobalt)}.case-details .eyebrow{position:absolute;top:0;left:1.5rem;margin:0;padding:.45rem .75rem;border:2px solid var(--midnight);border-radius:4px;background:var(--butter);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight);font-size:.82rem;font-weight:700;letter-spacing:.12em;transform:translateY(-50%) rotate(-3deg)}.case-details>div:last-child .eyebrow{background:var(--pink);transform:translateY(-50%) rotate(2deg)}.case-details>div>p.case-brief{margin:0;color:var(--midnight);font:650 clamp(1.4rem,2.3vw,2rem)/1.18 "Bricolage Grotesque",sans-serif;letter-spacing:-.035em}.case-contributions{margin:0;padding:0;list-style:none;counter-reset:step;font-size:.98rem;line-height:1.6}.case-contributions li{counter-increment:step;display:grid;grid-template-columns:2.1rem 1fr;gap:.9rem;align-items:start;padding:.85rem 0}.case-contributions li:first-child{padding-top:0}.case-contributions li+li{border-top:2px dashed rgba(32,34,56,.14)}.case-contributions li:before{content:counter(step,decimal-leading-zero);width:2.1rem;aspect-ratio:1;display:grid;place-items:center;border:2px solid var(--midnight);border-radius:50%;background:var(--butter);box-shadow:2px 2px 0 var(--midnight);font-size:.66rem;font-weight:800;line-height:1}.case-tools-label{margin:1.25rem 0 0;padding-top:1.25rem;border-top:2px solid var(--midnight);color:var(--cobalt);font-size:.82rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.case-contributions[hidden]+.case-tools-label{margin-top:0;padding-top:0;border-top:0}.case-tags{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.9rem}.case-tags span{padding:.5rem .85rem;border:2px solid var(--midnight);border-radius:999px;background:var(--butter);color:var(--midnight);box-shadow:2px 2px 0 var(--midnight);font-size:.85rem;font-weight:600;transform:rotate(-1.5deg)}.case-tags span:nth-child(3n+2){background:var(--powder);transform:rotate(1deg)}.case-tags span:nth-child(3n){background:var(--pink);transform:rotate(-.5deg)}.case-work{padding:clamp(5rem,8vw,8rem) 0}.case-work>.eyebrow{display:inline-block;padding:.45rem .75rem;border:2px solid var(--midnight);border-radius:4px;background:var(--powder);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight);font-size:.82rem;font-weight:700;letter-spacing:.12em;transform:rotate(-2deg)}.case-gallery[hidden],.case-video[hidden]{display:none}.case-video{position:relative;margin:2rem 12px 0 0}.case-video video{display:block;width:100%;aspect-ratio:16 / 10;border:3px solid var(--midnight);border-radius:18px;background:var(--midnight);box-shadow:12px 12px 0 var(--cobalt);object-fit:contain}.case-video figcaption{position:absolute;right:1.5rem;top:0;padding:.4rem .8rem;border:2px solid var(--midnight);background:var(--butter);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight);font:600 1.15rem Caveat,cursive;transform:translateY(-50%) rotate(3deg)}.case-video figcaption:empty{display:none}.case-gallery{display:grid;grid-template-columns:1.35fr .65fr;gap:1rem;margin-top:2rem}.gallery-card{min-height:430px;padding:2rem;background:var(--light);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.gallery-card:nth-child(3){grid-column:1/-1;min-height:360px;background:var(--ink);color:#fff}.gallery-card small{font-size:.85rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.gallery-art{position:relative;flex:1;margin-top:1.5rem;border-radius:8px;background:#fff;box-shadow:0 20px 50px #1616161a;overflow:hidden}.gallery-art:before{content:"";position:absolute;inset:8% 6%;background:linear-gradient(#dedee2 0 0) top/32% 5% no-repeat,linear-gradient(#eee 0 0) 0 18%/100% 62% no-repeat,linear-gradient(90deg,#6d1028 0 32%,transparent 32% 35%,#bbb 35% 66%,transparent 66% 69%,#ddd 69%) bottom/100% 14% no-repeat}.gallery-art.has-image:before{display:none}.gallery-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top}.gallery-card:nth-child(2) .gallery-art{margin-inline:auto;width:58%;border:6px solid #161616;border-radius:22px}.gallery-card:nth-child(3) .gallery-art{background:transparent;box-shadow:none}.gallery-card:nth-child(3) .gallery-art:before{inset:12% 5%;background:linear-gradient(90deg,#6d1028 0 29%,transparent 29% 35%,#fff 35% 64%,transparent 64% 70%,#53565a 70%);opacity:.8}.case-gallery--portrait{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.case-gallery--portrait .gallery-card,.case-gallery--portrait .gallery-card:nth-child(3){grid-column:auto;min-height:0;background:var(--light);color:inherit}.case-gallery--portrait .gallery-art,.case-gallery--portrait .gallery-card:nth-child(n) .gallery-art{flex:none;width:min(100%,260px);aspect-ratio:var(--gallery-aspect, 942 / 2048);margin-inline:auto;border:6px solid #161616;border-radius:28px;background:#fff;box-shadow:0 20px 50px #1616161a}.case-gallery--portrait .gallery-art.has-image img{object-fit:contain;object-position:top}.case-gallery--portrait .gallery-card:nth-child(3) .gallery-art:before{inset:8% 6%;background:linear-gradient(#dedee2 0 0) top/32% 5% no-repeat,linear-gradient(#eee 0 0) 0 18%/100% 62% no-repeat,linear-gradient(90deg,#6d1028 0 32%,transparent 32% 35%,#bbb 35% 66%,transparent 66% 69%,#ddd 69%) bottom/100% 14% no-repeat;opacity:1}.case-result{position:relative;margin-right:12px;padding:clamp(3rem,6vw,5rem) clamp(1.5rem,6vw,5rem) clamp(2.5rem,5vw,4.5rem);border:3px solid var(--midnight);border-radius:18px;background:var(--cobalt);color:var(--cream);box-shadow:12px 12px 0 var(--midnight)}.case-result .eyebrow{position:absolute;top:0;left:1.5rem;margin:0;padding:.45rem .75rem;border:2px solid var(--midnight);border-radius:4px;background:var(--butter);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight);font-size:.82rem;font-weight:700;letter-spacing:.12em;transform:translateY(-50%) rotate(-3deg)}.case-result>p:last-child{max-width:900px;margin:0;font:650 clamp(1.6rem,3.2vw,3rem)/1.15 "Bricolage Grotesque",sans-serif;letter-spacing:-.04em}.case-result mark{display:inline-block;padding:0 .22em;border:2px solid var(--midnight);border-radius:8px;background:var(--butter);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight);line-height:1.1;transform:rotate(-2deg)}.case-result mark:nth-of-type(2n){background:var(--pink);transform:rotate(1.5deg)}.next-project{width:100%;display:flex;justify-content:space-between;margin-top:2rem;padding:2rem 0;border:0;border-bottom:1px solid var(--ink);background:none;cursor:pointer;text-align:left;font-size:clamp(1.5rem,3vw,2.7rem);letter-spacing:-.04em}.next-project span{color:var(--burgundy);transition:transform .25s}.next-project:hover span{transform:translate(8px)}.case-study[data-project=pandai] .case-index,.case-study[data-project=pandai] .case-external span{color:#6238e4}.case-study[data-project=pandai] .gallery-art:before{background:linear-gradient(#d9d2ff 0 0) top/32% 5% no-repeat,linear-gradient(#f4f1ff 0 0) 0 18%/100% 62% no-repeat,linear-gradient(90deg,#6238e4 0 32%,transparent 32% 35%,#ffcc48 35% 66%,transparent 66% 69%,#d9d2ff 69%) bottom/100% 14% no-repeat}.case-study[data-project=pandai] .gallery-card:nth-child(3) .gallery-art:before{background:linear-gradient(90deg,#6238e4 0 29%,transparent 29% 35%,#ffcc48 35% 64%,transparent 64% 70%,#fff 70%)}@media(max-width:760px){:root{--page: 90vw}.site-header{height:68px}.site-header.scrolled{padding-inline:5vw}.menu-button{display:flex;flex-direction:column;gap:5px;position:relative;z-index:2}.menu-button span:not(.sr-only){display:block;width:22px;height:1px;background:var(--ink);transition:.3s}.menu-button[aria-expanded=true] span:first-child{transform:translateY(3px) rotate(45deg)}.menu-button[aria-expanded=true] span:nth-child(2){transform:translateY(-3px) rotate(-45deg)}nav{position:fixed;inset:0 -5vw 0 auto;width:110vw;height:100svh;padding:25vh 10vw;display:flex;flex-direction:column;background:var(--white);transform:translate(110%);transition:transform .45s cubic-bezier(.2,.75,.3,1)}nav.open{transform:none}nav a{font-size:2rem;letter-spacing:-.04em}.hero{min-height:auto;padding:8rem 0 4rem;grid-template-columns:1fr;gap:3rem}.hero h1{font-size:clamp(3rem,14vw,5rem);line-height:.96}.hero-bottom{align-items:flex-start;flex-direction:column;gap:2rem}.hero-portrait{min-height:68svh;max-height:760px}.hero-portrait figcaption{font-size:.66rem}.section-heading,.section-heading.compact{grid-template-columns:1fr;gap:1.5rem}.project-meta{grid-template-columns:45px 1fr}.project-meta .project-link{display:none}.project-summary{margin-left:61px;max-width:70%}.project-visual{aspect-ratio:4/5}.project-archive-heading{grid-template-columns:1fr;gap:1rem;margin-top:8rem}.project--archive .project-meta{grid-template-columns:38px 1fr auto;padding-right:0}.project--archive .project-meta:hover{padding-left:0;background:transparent}.project--archive .project-link{display:block;font-size:0}.project--archive .project-link span{margin:0;font-size:1rem}.browser-shell{left:7%;top:8%;width:87%;height:61%}.phone-shell{right:8%;width:28%;height:52%}.corporate-structure{width:75%}.pandai-browser{left:5%;top:7%;width:88%;height:63%}.pandai-phone{right:8%;width:27%;height:52%}.pandai-copy strong{font-size:clamp(1rem,6vw,2rem)}.pandai-orb{width:45%;top:30%}.figma-window{inset:7% 3%;grid-template-columns:23% 1fr;grid-template-rows:8% 1fr}.figma-properties{display:none}.figma-canvas{grid-column:2}.frame-one{left:6%;width:55%;height:66%}.frame-two,.frame-three{right:4%;width:32%}.flow-canvas{width:82%;grid-template-columns:1fr;gap:3%}.flow-canvas svg{display:none}.flow-card,.flow-card.data-card,.review-card{width:100%;aspect-ratio:3;padding:5% 6%;box-shadow:4px 4px 0 var(--midnight);transform:rotate(-1.5deg)}.flow-card.data-card{transform:rotate(1.5deg)}.flow-card b{margin-top:5%}.flow-note{top:5%;right:4%;padding:.3rem .55rem;font-size:1rem}.flow-canvas{margin-top:14%}.flow-card:after{top:.55rem;right:.6rem;font-size:1rem}.flow-foot{display:none}.flow-card em{position:absolute;top:calc(.75rem + 2px);left:calc(6% + 2.7rem);margin:0}.chat-backdrop{display:none}.chat-panel{inset:6% 9%;width:auto;padding:7% 6%}.brand-type{left:5%;top:7%;width:61%;height:36%}.brand-card{left:10%;bottom:15%;width:60%;height:25%}.brand-colours{right:5%;top:7%;width:25%;height:36%;flex-direction:column}.brand-paper{right:5%;bottom:-2%;width:36%;height:48%}.infra-node{width:58%;aspect-ratio:2.3;padding:5%;left:21%!important;right:auto!important}.infra-node.source{top:12%}.infra-node.deploy{top:39%}.infra-node.live{top:66%}.infra-line{left:50%;width:1px;height:6%;top:auto}.line-one{top:34%}.line-two{top:61%}.infra-line:after{right:-3px;top:auto;bottom:0;transform:rotate(135deg)}.about-section{padding-block:7rem}.about-heading{grid-template-columns:1fr;gap:1.5rem}.about-bento{grid-template-columns:1fr 1fr;grid-template-rows:auto;gap:.8rem}.about-photo{grid-column:1/-1;grid-row:auto;min-height:72vh}.about-copy{grid-column:1/-1;grid-row:auto;min-height:310px}.about-card--burgundy,.about-card--white{grid-column:auto;grid-row:auto;min-height:230px}.about-card h3{font-size:clamp(1.35rem,6vw,2rem)}.about-card p{font-size:.75rem}.education-grid{grid-template-columns:1fr;grid-template-rows:auto}.education-card{min-height:390px}.study-projects{grid-column:1;grid-template-columns:1fr;gap:0}.study-projects div{border-top:1px solid var(--line)}.timeline-row{grid-template-columns:1fr;gap:1.3rem;padding:2rem 0}.timeline-row:hover{padding-inline:0;background:transparent}.timeline-date{max-width:24rem;margin:0}.timeline-role p{margin-top:.4rem}.timeline-details{max-width:36rem}.skill-grid{grid-template-columns:1fr}.skill-grid article{min-height:220px}.skill-grid h3{margin-top:4rem}.credential-grid{grid-template-columns:1fr}.credential-cover{aspect-ratio:1.5}.contact-section{min-height:90svh}.contact-links{grid-template-columns:1fr}.contact-links a:not(:last-child){margin-right:0}.footer-line{grid-template-columns:1fr 1fr}.footer-line a{display:none}.case-close{right:1rem;top:1rem}.case-intro{grid-template-columns:1fr}.case-intro h2,.case-role,.case-external{grid-column:1}.case-details{grid-template-columns:1fr;gap:3rem;padding-inline:0 6px}.case-details>div:first-child,.case-details>div:last-child{box-shadow:6px 6px 0 var(--midnight)}.case-details>div:last-child{box-shadow:6px 6px 0 var(--cobalt)}.case-result{margin-right:6px;box-shadow:6px 6px 0 var(--midnight)}.case-hero{aspect-ratio:4/3;margin-right:6px;box-shadow:6px 6px 0 var(--cobalt)}.case-video{margin-right:6px}.case-video video{box-shadow:6px 6px 0 var(--cobalt)}.case-study[data-project=appraisal] .case-hero{aspect-ratio:4/5}.case-index{margin-top:0}.case-gallery{grid-template-columns:1fr}.gallery-card:nth-child(3){grid-column:1}.gallery-card{min-height:340px}.cursor-dot{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}:root{--paper: #f4eedf;--paper-deep: #e7dcc4;--espresso: #281d19;--brown-muted: #75645a;--persimmon: #d9573f;--oxide: #b93f2c;--peach: #e8ad92;--signal: #c7f36a;--white: var(--paper);--ink: var(--espresso);--muted: var(--brown-muted);--burgundy: var(--oxide);--burgundy-dark: var(--espresso);--accent-soft: var(--persimmon);--light: var(--paper-deep);--surface: #efe5d2;--surface-raised: #dfcfb1;--line: rgba(40, 29, 25, .2);color:var(--ink);background:var(--paper)}::selection{background:var(--signal);color:var(--espresso)}body{background:var(--paper);color:var(--ink)}.intro-curtain{position:fixed;z-index:1000;inset:0;padding:clamp(1.5rem,4vw,4rem);display:flex;flex-direction:column;justify-content:space-between;background:var(--oxide);color:var(--paper);transform:translateY(0);transition:transform 1s var(--ease-out);will-change:transform}.intro-curtain>div{display:flex;justify-content:space-between;gap:2rem;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase}.intro-curtain p{margin:auto 0;font-family:Fraunces,Georgia,serif;font-size:clamp(3.5rem,9vw,10rem);line-height:.78;letter-spacing:-.06em}.intro-curtain p em{color:var(--signal);font-style:italic}.intro-line{width:100%;height:2px;overflow:hidden;background:#f4eedf40}.intro-line:after{content:"";display:block;width:100%;height:100%;background:var(--paper);transform:translate(-100%);animation:intro-load .75s .1s var(--ease-out) forwards}@keyframes intro-load{to{transform:none}}.intro-complete .intro-curtain{transform:translateY(-101%)}.intro-skip .intro-curtain{display:none}.is-ready:not(.intro-complete) .hero-line>span{transform:translateY(112%) rotate(2deg)}.is-ready:not(.intro-complete) .hero-enter{opacity:0;transform:translateY(24px)}.intro-complete .hero-line>span,.intro-complete .hero-enter{opacity:1;transform:none}.scroll-progress span{background:var(--signal)}nav a:before{content:attr(data-index);position:absolute;left:0;top:-1.05rem;color:var(--oxide);font-size:.48rem;letter-spacing:.08em;opacity:0;transform:translateY(4px);transition:opacity .25s ease,transform .3s var(--ease-out)}nav a:hover:before,nav a.active:before{opacity:1;transform:none}nav a:after{background:var(--persimmon)}.hero{background:var(--paper);color:var(--espresso)}.hero-title{font-family:Fraunces,Georgia,serif;font-weight:500;line-height:.76;letter-spacing:-.065em;text-transform:none}.hero-line--offset{padding-left:5vw;font-style:italic}.hero-line--accent{padding-left:21vw;color:var(--persimmon);font-style:normal}.hero-kicker i{border-color:#281d1938;color:var(--espresso)}.hero-portrait{border:8px solid var(--paper);border-bottom-width:42px;box-shadow:0 35px 80px #281d1938}.hero-portrait figcaption{bottom:-29px;color:var(--espresso)}.hero-portrait figcaption span:last-child{color:var(--brown-muted)}.text-link{border-color:#281d1940}.text-link:before{background:var(--espresso)}.text-link:hover{color:var(--paper);border-color:var(--espresso)}.now-dial{position:absolute;z-index:4;right:calc(max(4vw,(100vw - 1480px) / 2) + min(29vw,455px));bottom:7vh;width:112px;aspect-ratio:1;display:grid;place-items:center;color:var(--espresso)}.now-orbit{position:absolute;inset:0;width:100%;height:100%;overflow:visible;animation:orbit-spin 18s linear infinite}.now-orbit text{fill:currentColor;font:600 8px Manrope,sans-serif;letter-spacing:1.25px}.now-dial strong{font-family:Fraunces,Georgia,serif;font-size:1.15rem;font-weight:500}.now-dial small{position:absolute;top:63%;color:var(--persimmon);font-size:.48rem;letter-spacing:.15em}@keyframes orbit-spin{to{transform:rotate(360deg)}}.secret-trigger{position:absolute;z-index:4;right:max(4vw,calc((100vw - 1480px)/2));bottom:2rem;border:0;border-bottom:1px dashed var(--brown-muted);padding:.2rem 0;background:transparent;color:var(--brown-muted);cursor:pointer;font-size:.62rem;letter-spacing:.06em}.secret-trigger:hover{color:var(--persimmon);border-color:var(--persimmon)}.work-section,.skills-section,.experience-section,.education-section,.credentials-section{background:var(--paper)}.work-section>.section-heading h2,.project-archive-heading h3{font-family:Fraunces,Georgia,serif}.project-list>.project:not(.project--archive){--chapter-bg: var(--paper);--chapter-ink: var(--espresso);--chapter-muted: var(--brown-muted);--chapter-line: rgba(40, 29, 25, .22);background:var(--chapter-bg);color:var(--chapter-ink);border-color:var(--chapter-line);transition:background .6s ease,color .6s ease}.project-list>.project[data-project=pandai]{--chapter-bg: var(--oxide);--chapter-ink: #fff5df;--chapter-muted: rgba(255, 245, 223, .72);--chapter-line: rgba(255, 245, 223, .35)}.project-list>.project[data-project=recipe]{--chapter-bg: var(--signal);--chapter-ink: var(--espresso);--chapter-muted: #594f2e;--chapter-line: rgba(40, 29, 25, .25)}.project-list>.project[data-project=appraisal]{--chapter-bg: var(--espresso);--chapter-ink: var(--paper);--chapter-muted: #c9bbaa;--chapter-line: rgba(244, 238, 223, .26)}.project-list>.project:not(.project--archive) .project-meta p,.project-list>.project:not(.project--archive) .project-summary,.project-list>.project:not(.project--archive) .project-chapter span{color:var(--chapter-muted)}.project-list>.project:not(.project--archive) .project-number,.project-list>.project:not(.project--archive) .project-chapter span,.project-list>.project:not(.project--archive) .project-link{border-color:var(--chapter-line)}.project-list>.project:not(.project--archive) .project-link,.project-list>.project:not(.project--archive) .project-link span,.project-list>.project:not(.project--archive) .project-number{color:var(--chapter-ink)}.project-copy:after{position:absolute;right:-.6rem;top:48%;max-width:10rem;padding:.65rem .8rem;border:1px solid var(--espresso);background:var(--signal);color:var(--espresso);font-family:Fraunces,Georgia,serif;font-size:.83rem;font-style:italic;line-height:1.2;opacity:0;pointer-events:none;transform:rotate(-5deg) scale(.7);transition:opacity .3s ease,transform .55s var(--ease-spring)}.annotated .project-copy:after{opacity:1;transform:rotate(-5deg) scale(1)}.project[data-project=corporate] .project-copy:after{content:"Yes — domain, DNS, build and launch too."}.project[data-project=pandai] .project-copy:after{content:"Made with a team. Better ideas usually are."}.project[data-project=recipe] .project-copy:after{content:"My final year, seasoned with machine learning."}.project[data-project=appraisal] .project-copy:after{content:"Fewer spreadsheets. Happier humans."}.annotated .secret-trigger{color:var(--persimmon)}.manifesto{min-height:100svh;padding:clamp(7rem,12vw,12rem) max(4vw,calc((100vw - 1320px)/2));display:flex;flex-direction:column;justify-content:space-between;background:var(--espresso);color:var(--paper);overflow:hidden}.manifesto .eyebrow{color:var(--peach)}.manifesto blockquote{max-width:13ch;margin:auto 0;font-family:Fraunces,Georgia,serif;font-size:clamp(3.7rem,8.5vw,9rem);font-weight:500;line-height:.84;letter-spacing:-.055em}.manifesto blockquote em{color:var(--signal);font-weight:400}.manifesto blockquote strong{color:var(--peach);font-weight:500;font-style:italic}.manifesto-foot{display:flex;justify-content:flex-end;align-items:center;gap:1rem;color:#c9bbaa;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.manifesto-foot i{color:var(--signal);font-family:Fraunces,Georgia,serif;font-size:2rem;font-style:italic}.about-section{background:var(--peach);color:var(--espresso)}.about-copy,.about-card--white{background:var(--paper)}.about-card--burgundy,.education-card--primary{background:var(--espresso);color:var(--paper)}.skill-grid{border-color:var(--line);background:var(--line)}.skill-grid article{background:var(--paper)}.timeline-row:hover{background:var(--paper-deep)}.contact-section{position:relative;min-height:105svh;background:var(--espresso);color:var(--paper);overflow:hidden}.contact-section:before{content:"";position:absolute;width:min(68vw,880px);aspect-ratio:1;right:-25vw;top:-30vw;border:1px solid rgba(199,243,106,.3);border-radius:50%;box-shadow:0 0 0 8vw #c7f36a08,0 0 0 16vw #c7f36a05}.contact-section>*{position:relative;z-index:1}.contact-section>.eyebrow{color:var(--peach)}.contact-section h2{max-width:12ch;margin-bottom:2rem;font-family:Fraunces,Georgia,serif;font-size:clamp(4.2rem,10vw,10.5rem);line-height:.78;text-transform:none}.contact-section h2 em{color:var(--signal)}.contact-note{max-width:34rem;margin-bottom:clamp(3rem,7vw,6rem);color:#c9bbaa;line-height:1.7}.contact-stamp{position:absolute;right:max(5vw,calc((100vw - 1320px)/2));top:18%;width:clamp(7rem,12vw,10rem);aspect-ratio:1;display:grid;place-items:center;border:1px solid rgba(244,238,223,.4);border-radius:50%;color:var(--paper);transform:rotate(8deg);transition:background .35s ease,color .35s ease,transform .6s var(--ease-spring)}.contact-stamp span{font-family:Fraunces,Georgia,serif;font-size:1.1rem;font-style:italic}.contact-stamp b{position:absolute;right:1rem;bottom:1rem;color:var(--signal)}.contact-section:hover .contact-stamp{background:var(--signal);color:var(--espresso);transform:rotate(-5deg) scale(1.04)}.contact-links,.contact-links a{border-color:#f4eedf4d}.contact-links a{transition:color .25s ease,padding .35s var(--ease-out),background .25s ease}.contact-links a:hover{padding-inline:1rem;background:var(--signal);color:var(--espresso)}.footer-line{color:#c9bbaa}.footer-line a{color:var(--paper)}.footer-surprise{background:var(--signal);color:var(--espresso)}.cursor-dot.has-label,.surprise-note{background:var(--signal);color:var(--espresso)}.case-study{background:var(--paper);color:var(--espresso)}.case-close{border-color:#281d1933;background:#f4eedfe6}.case-close span{background:var(--espresso)}@media(max-width:980px){.now-dial{right:39vw}}@media(max-width:760px){.intro-curtain p{font-size:clamp(3.4rem,16vw,6rem)}.intro-curtain>div span:last-child{text-align:right}.hero-line--offset,.hero-line--accent{padding-left:0}.now-dial{order:3;position:relative;inset:auto;width:98px;margin:-1rem 0 -6rem auto}.secret-trigger{order:5;position:relative;inset:auto;align-self:flex-start;margin-top:1rem}.hero-bottom{order:4}.project-list>.project:not(.project--archive)>.project-visual,.project-list>.project:nth-child(2n):not(.project--archive)>.project-visual{border-radius:18px;transform:none}.project-copy:after{right:0;top:56%}.manifesto{min-height:86svh;padding-inline:5vw}.manifesto blockquote{font-size:clamp(3.4rem,14vw,6rem)}.manifesto-foot{justify-content:flex-start}.contact-stamp{top:12%;right:5vw;opacity:.72}.contact-section h2{font-size:clamp(4rem,17vw,7rem)}}@media(prefers-reduced-motion:reduce){.intro-curtain{display:none}.is-ready:not(.intro-complete) .hero-line>span,.is-ready:not(.intro-complete) .hero-enter{opacity:1;transform:none}.now-orbit{animation:none}}:root{--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.2, .8, .2, 1.08);font-family:Manrope,Arial,sans-serif}h1,h2,h3,.wordmark,.project-number,.hero-index{font-family:Space Grotesk,Manrope,sans-serif}body{background-image:radial-gradient(circle at 8% 8%,rgba(163,182,212,.12),transparent 30rem)}.scroll-progress{position:fixed;z-index:140;inset:0 0 auto;height:2px;pointer-events:none}.scroll-progress span{display:block;width:100%;height:100%;background:var(--ink);transform:scaleX(0);transform-origin:left;will-change:transform}.site-header{mix-blend-mode:normal}.site-header:before{content:"";position:absolute;inset:12px -18px;z-index:-1;border:1px solid transparent;border-radius:999px;transition:background .35s ease,border-color .35s ease,backdrop-filter .35s ease}.site-header.scrolled{width:var(--page);height:72px;padding-inline:0;background:transparent;box-shadow:none}.site-header.scrolled:before{border-color:var(--line);background:#525c6dc7;-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2)}nav a{transition:opacity .25s ease}nav:hover a:not(:hover){opacity:.42}.hero{width:100%;min-height:100svh;padding:clamp(8rem,15vh,11rem) max(4vw,calc((100vw - 1480px)/2)) 3rem;grid-template-columns:repeat(12,minmax(0,1fr));gap:1.25rem;align-items:center;border:0;overflow:hidden;isolation:isolate}.hero-grid{position:absolute;inset:0;z-index:-2;background-image:linear-gradient(rgba(212,218,241,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(212,218,241,.08) 1px,transparent 1px);background-size:6.25vw 6.25vw;-webkit-mask-image:linear-gradient(to bottom,black,transparent 82%);mask-image:linear-gradient(to bottom,black,transparent 82%)}.hero:after{content:"";position:absolute;z-index:-1;width:min(55vw,760px);aspect-ratio:1;right:-12vw;top:-18vw;border:1px solid rgba(212,218,241,.18);border-radius:50%;box-shadow:0 0 0 8vw #a3b6d406,0 0 0 16vw #a3b6d405}.hero-index{position:absolute;right:max(4vw,calc((100vw - 1480px)/2));top:7.5rem;color:var(--muted);font-size:.62rem;letter-spacing:.18em;writing-mode:vertical-rl}.hero-copy{grid-column:1 / 12;position:relative;z-index:3;pointer-events:none}.hero-copy a{pointer-events:auto}.hero-kicker{width:max-content;margin-bottom:clamp(2rem,5vh,4rem)}.hero-kicker i{display:inline-flex;align-items:center;gap:.45rem;margin-left:1rem;padding:.45rem .75rem;border:1px solid var(--line);border-radius:999px;color:var(--ink);font-style:normal;letter-spacing:.06em}.hero-kicker i:before{content:"";width:6px;height:6px;border-radius:50%;background:#bde7c7;box-shadow:0 0 0 4px #bde7c71f;animation:status-pulse 2s ease-in-out infinite}@keyframes status-pulse{50%{transform:scale(.7);opacity:.65}}.hero-title{margin:0;font-size:clamp(4.3rem,9.35vw,10.4rem);font-weight:500;line-height:.78;letter-spacing:-.078em;text-transform:uppercase}.hero-line{display:block;overflow:hidden;padding:0 .08em .09em 0}.hero-line>span{display:block;transform:translateY(112%) rotate(2deg);transform-origin:left bottom;transition:transform 1.05s var(--ease-out)}.hero-line:nth-child(2)>span{transition-delay:.1s}.hero-line:nth-child(3)>span{transition-delay:.2s}.is-ready .hero-line>span{transform:none}.hero-line--offset{padding-left:8vw}.hero-line--accent{padding-left:18vw;color:var(--accent-soft);font-size:.62em;line-height:1}.hero-enter{opacity:0;transform:translateY(24px);transition:opacity .8s .35s ease,transform .9s .35s var(--ease-out)}.is-ready .hero-enter{opacity:1;transform:none}.hero-bottom{width:min(38rem,48vw);margin-top:clamp(2rem,5vh,4rem);margin-left:18vw;align-items:center}.hero-bottom p{max-width:24rem;line-height:1.65}.text-link{position:relative;min-width:max-content;padding:.8rem 1rem;border:1px solid var(--line);border-radius:999px;overflow:hidden;transition:color .3s ease,border-color .3s ease}.text-link:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--ink);transform:translateY(102%);transition:transform .4s var(--ease-out)}.text-link:hover{color:var(--white);border-color:var(--ink)}.text-link:hover:before{transform:none}.hero-portrait{grid-column:9 / 13;position:absolute;z-index:2;right:max(4vw,calc((100vw - 1480px)/2));top:18vh;width:min(27vw,420px);min-height:56vh;max-height:660px;border:1px solid rgba(237,237,243,.22);border-radius:2px;box-shadow:0 40px 100px #191f2a52;transform:rotate(2.5deg) translate3d(var(--tilt-x, 0),var(--tilt-y, 0),0);transition:opacity .8s .45s ease,transform .9s .45s var(--ease-out),box-shadow .5s ease;will-change:transform}.is-ready .hero-portrait{transform:rotate(2.5deg) translate3d(var(--tilt-x, 0),var(--tilt-y, 0),0)}.hero-portrait:hover{box-shadow:0 50px 120px #191f2a70}.portrait-sticker{position:absolute;z-index:3;right:-2.2rem;top:-2.2rem;width:7.2rem;aspect-ratio:1;display:grid;place-items:center;padding:1rem;border-radius:50%;background:var(--ink);color:var(--white);font-family:Space Grotesk,sans-serif;font-size:.7rem;line-height:1.25;text-align:center;text-transform:uppercase;letter-spacing:.06em;transform:rotate(-11deg);transition:transform .6s var(--ease-spring)}.hero-portrait:hover .portrait-sticker{transform:rotate(4deg) scale(1.06)}.hero-scroll{position:absolute;left:max(4vw,calc((100vw - 1480px)/2));bottom:2rem;display:flex;align-items:center;gap:.8rem;color:var(--muted);font-size:.63rem;letter-spacing:.12em;text-transform:uppercase}.hero-scroll span{width:42px;height:1px;overflow:hidden;background:var(--line)}.hero-scroll span:after{content:"";display:block;width:45%;height:100%;background:var(--ink);animation:scroll-cue 1.8s ease-in-out infinite}@keyframes scroll-cue{0%{transform:translate(-120%)}to{transform:translate(240%)}}.work-section{width:100%;padding:clamp(8rem,13vw,13rem) 0 0}.work-section>.section-heading,.project-archive-heading,.project-archive{width:var(--page);margin-inline:auto}.work-section>.section-heading{margin-bottom:clamp(3rem,6vw,6rem)}.project-list>.project:not(.project--archive){position:relative;min-height:max(760px,112svh);margin:0;padding:13vh max(4vw,calc((100vw - 1480px)/2));display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(1.5rem,3vw,4rem);align-items:start;border-top:1px solid var(--line);background:linear-gradient(135deg,transparent,rgba(163,182,212,.045))}.project-list>.project:not(.project--archive):before{content:attr(data-project);position:absolute;right:3vw;top:3vh;color:#d4daf10e;font-family:Space Grotesk,sans-serif;font-size:clamp(5rem,13vw,13rem);line-height:1;text-transform:uppercase;pointer-events:none}.project-copy{grid-column:1 / 5;position:sticky;top:17vh;min-height:66vh;display:flex;flex-direction:column;justify-content:space-between;padding:1.5rem 0}.project-list>.project:not(.project--archive) .project-meta{display:block;border-top:0;padding:0}.project-list>.project:not(.project--archive) .project-number{display:inline-grid;place-items:center;width:3rem;aspect-ratio:1;margin-bottom:clamp(2rem,6vh,5rem);border:1px solid var(--line);border-radius:50%}.project-list>.project:not(.project--archive) .project-meta h3{max-width:10ch;margin-bottom:1rem;font-size:clamp(2.2rem,4vw,4.8rem);line-height:.94;letter-spacing:-.06em}.project-list>.project:not(.project--archive) .project-meta p{max-width:30rem;line-height:1.6}.project-list>.project:not(.project--archive) .project-summary{max-width:28rem;margin:auto 0 1.5rem;font-size:clamp(.95rem,1.15vw,1.1rem);line-height:1.7}.project-list>.project:not(.project--archive) .project-link{display:inline-flex;margin-top:1.7rem}.project-chapter{display:flex;flex-wrap:wrap;gap:.45rem}.project-chapter span{padding:.52rem .75rem;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase}.project-list>.project:not(.project--archive)>.project-visual{grid-column:5 / 13;position:sticky;top:16vh;height:68vh;max-height:720px;aspect-ratio:auto;border:1px solid rgba(237,237,243,.15);border-radius:26px;box-shadow:0 40px 90px #191f2a38;transform:perspective(1200px) rotateX(var(--rotate-x, 0deg)) rotateY(var(--rotate-y, 0deg));transition:box-shadow .5s ease,transform .25s ease;will-change:transform}.project-list>.project:not(.project--archive)>.project-visual:hover{box-shadow:0 52px 110px #191f2a57}.project-list>.project:nth-child(2n):not(.project--archive) .project-copy{grid-column:9 / 13;grid-row:1}.project-list>.project:nth-child(2n):not(.project--archive)>.project-visual{grid-column:1 / 9;grid-row:1}.project-visual:after{content:"Open case study";right:1.2rem;bottom:1.2rem;padding:1rem 1.2rem;border:1px solid rgba(237,237,243,.18);transform:translateY(14px) scale(.94);transition:opacity .3s ease,transform .4s var(--ease-spring)}.project-visual:hover:after{transform:none}.project-archive-heading{margin-top:clamp(8rem,14vw,13rem)}.project-archive{margin-bottom:clamp(8rem,13vw,12rem)}.project--archive .project-meta{position:relative;overflow:hidden}.project--archive .project-meta:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--ink);transform:translate(-102%);transition:transform .55s var(--ease-out)}.project--archive .project-meta:hover{padding-inline:1rem;background:transparent;color:var(--ink)}.project--archive .project-meta:hover:before{transform:none}.project--archive .project-meta:hover p,.project--archive .project-meta:hover .project-number,.project--archive .project-meta:hover .project-link span{color:var(--ink)}.capability-marquee{width:100%;padding:1.7rem 0;overflow:hidden;border-block:1px solid var(--line);background:var(--ink);color:var(--white);transform:rotate(-1.1deg) scale(1.02)}.capability-marquee>div{width:max-content;display:flex;align-items:center;gap:2rem;font-family:Space Grotesk,sans-serif;font-size:clamp(1.6rem,3vw,3rem);letter-spacing:-.04em;text-transform:uppercase;animation:marquee 24s linear infinite}.capability-marquee i{color:var(--accent-soft);font-style:normal}@keyframes marquee{to{transform:translate(-50%)}}.skill-grid article,.timeline-row,.about-card,.education-card,.credential-cover{position:relative;overflow:hidden}.skill-grid article:after,.timeline-row:after{content:"↗";position:absolute;right:1.5rem;top:1.5rem;color:var(--accent-soft);opacity:0;transform:translate(-10px,10px);transition:opacity .3s ease,transform .4s var(--ease-spring)}.skill-grid article:hover:after,.timeline-row:hover:after{opacity:1;transform:none}.skill-grid article:hover h3{transform:translate(.45rem)}.skill-grid h3{transition:transform .4s var(--ease-out)}.about-photo,.about-copy,.about-card,.education-card,.credential-cover{border:1px solid rgba(237,237,243,.12)}.cursor-dot{left:0;top:0;width:12px;height:12px;display:grid;place-items:center;border:1px solid rgba(237,237,243,.6);background:var(--ink);color:var(--white);opacity:0;mix-blend-mode:normal;transform:translate3d(-50%,-50%,0);transition:width .35s var(--ease-spring),height .35s var(--ease-spring),opacity .2s ease,background .2s ease;will-change:left,top,width,height}.cursor-dot span{opacity:0;font-size:.58rem;font-weight:600;letter-spacing:.09em;white-space:nowrap;transition:opacity .2s ease}.cursor-dot.active{width:46px;height:46px;background:#ededf329;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.cursor-dot.has-label{width:76px;height:76px;border-color:transparent;background:var(--ink)}.cursor-dot.has-label span{opacity:1}.footer-line{grid-template-columns:1fr auto auto 1fr;gap:2rem}.footer-surprise{border:0;padding:.45rem .75rem;border-radius:999px;background:#a3b6d426;color:inherit;cursor:pointer;font-size:.7rem}.surprise-note{position:fixed;z-index:160;left:50%;bottom:2rem;padding:.85rem 1.1rem;border-radius:999px;background:var(--ink);color:var(--white);font-size:.75rem;opacity:0;pointer-events:none;transform:translate(-50%,30px) scale(.9);transition:opacity .35s ease,transform .5s var(--ease-spring)}.surprise .surprise-note{opacity:1;transform:translate(-50%) scale(1)}.surprise .portrait-sticker{animation:sticker-party .65s var(--ease-spring) both}.surprise .capability-marquee>div{animation-direction:reverse;animation-duration:8s}@keyframes sticker-party{35%{transform:rotate(360deg) scale(1.2)}to{transform:rotate(-11deg)}}@media(max-width:980px){.hero{padding-inline:5vw}.hero-title{font-size:clamp(3.8rem,11vw,7rem)}.hero-portrait{right:5vw;width:31vw;min-height:48vh}.hero-bottom{margin-left:8vw}.project-list>.project:not(.project--archive){padding-inline:5vw;gap:2rem}.project-copy,.project-list>.project:nth-child(2n):not(.project--archive) .project-copy{grid-column:1 / 6}.project-list>.project:not(.project--archive)>.project-visual,.project-list>.project:nth-child(2n):not(.project--archive)>.project-visual{grid-column:6 / 13}}@media(max-width:760px){.cursor-dot{display:none}.site-header.scrolled{width:90vw;padding-inline:0}.site-header:before{inset-inline:-10px}.hero{min-height:100svh;padding:7.5rem 5vw 3.5rem;display:flex;flex-direction:column;align-items:stretch;gap:2rem}.hero-index,.hero-scroll{display:none}.hero-copy{display:contents}.hero-kicker{order:0;width:100%;flex-wrap:wrap;margin:0}.hero-kicker i{margin-left:auto}.hero-title{order:1;font-size:clamp(3.5rem,16.5vw,6rem);line-height:.82}.hero-line--offset,.hero-line--accent{padding-left:0}.hero-line--accent{margin-top:.16em;font-size:.57em}.hero-portrait{order:2;position:relative;inset:auto;width:calc(100% - 1.5rem);min-height:54svh;margin:.8rem 0 0 auto;transform:rotate(1.5deg)}.is-ready .hero-portrait{transform:rotate(1.5deg)}.portrait-sticker{right:-1rem;width:6rem}.hero-bottom{order:3;width:100%;margin:1rem 0 0}.hero-bottom p{max-width:30rem}.work-section{padding-top:7rem}.project-list>.project:not(.project--archive){min-height:auto;padding:5rem 5vw 7rem;display:flex;flex-direction:column;gap:2.5rem}.project-copy,.project-list>.project:nth-child(2n):not(.project--archive) .project-copy{position:static;min-height:0;display:block}.project-list>.project:not(.project--archive) .project-number{margin-bottom:2rem}.project-list>.project:not(.project--archive) .project-meta h3{max-width:13ch;font-size:clamp(2.5rem,12vw,4.5rem)}.project-list>.project:not(.project--archive) .project-summary{max-width:28rem;margin:2rem 0 1.5rem}.project-list>.project:not(.project--archive) .project-link{display:inline-flex}.project-list>.project:not(.project--archive)>.project-visual,.project-list>.project:nth-child(2n):not(.project--archive)>.project-visual{position:relative;top:auto;width:100%;height:auto;aspect-ratio:4 / 5;border-radius:18px;transform:none}.project-visual:after{opacity:1;transform:none}.capability-marquee{padding-block:1.2rem}.footer-line{grid-template-columns:1fr auto;gap:1rem}.footer-surprise{grid-column:1 / -1;justify-self:start}.footer-line a{display:none}}@media(prefers-reduced-motion:reduce){.hero-line>span,.hero-enter{opacity:1;transform:none}.hero-kicker i:before,.hero-scroll span:after,.capability-marquee>div{animation:none}.project-list>.project:not(.project--archive)>.project-visual,.hero-portrait{transform:none!important}}h1,h2,h3,.hero-index,.project-number{font-family:Fraunces,Georgia,serif}.wordmark,nav,button,.eyebrow{font-family:Manrope,Arial,sans-serif}.site-header.scrolled:before{border-color:#281d1929;background:#f4eedfd6;box-shadow:0 10px 40px #281d1914}.hero-grid{background-image:linear-gradient(rgba(40,29,25,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(40,29,25,.07) 1px,transparent 1px)}.hero:after{border-color:#281d1921;box-shadow:0 0 0 8vw #d9573f0a,0 0 0 16vw #c7f36a09}.hero-line--offset{padding-left:5vw}.hero-line--accent{padding-left:21vw;color:var(--persimmon)}.hero-kicker i:before{background:var(--signal);box-shadow:0 0 0 4px #c7f36a38}.hero-portrait{border:8px solid var(--paper);border-bottom-width:42px;border-radius:2px;box-shadow:0 35px 80px #281d1938}.portrait-sticker{background:var(--signal);color:var(--espresso);font-family:Manrope,sans-serif}.project-list>.project:not(.project--archive){background:var(--chapter-bg);color:var(--chapter-ink);border-color:var(--chapter-line)}.project-list>.project:not(.project--archive):before{color:color-mix(in srgb,var(--chapter-ink) 8%,transparent);font-family:Fraunces,Georgia,serif;font-style:italic}.project-list>.project:not(.project--archive)>.project-visual{border-color:var(--chapter-line);border-radius:var(--project-radius, 40px);transform:perspective(1200px) scale(var(--project-scale, .93)) rotateX(var(--rotate-x, 0deg)) rotateY(var(--rotate-y, 0deg));box-shadow:0 40px 90px #281d1933}.capability-marquee{border-color:var(--espresso);background:var(--oxide);color:var(--paper)}.capability-marquee i{color:var(--signal)}.skill-grid article:hover{background:var(--signal);color:var(--espresso)}.skill-grid article:hover p,.skill-grid article:hover span{color:var(--espresso)}.cursor-dot{border-color:#281d1973;background:var(--persimmon);color:var(--paper)}.cursor-dot.active{background:#d9573f38}.cursor-dot.has-label,.footer-surprise{background:var(--signal);color:var(--espresso)}@media(max-width:760px){.hero-line--offset,.hero-line--accent{padding-left:0}.project-list>.project:not(.project--archive)>.project-visual,.project-list>.project:nth-child(2n):not(.project--archive)>.project-visual{border-radius:18px;transform:none}}@media(prefers-reduced-motion:reduce){.project-list>.project:not(.project--archive)>.project-visual,.hero-portrait{transform:none!important}}:root{--cream: #fff9ed;--midnight: #202238;--butter: #f3e45b;--coral: #ff6b55;--cobalt: #3155d9;--powder: #b9d2ff;--pink: #ffb8ce;--white: var(--cream);--ink: var(--midnight);--muted: #65657a;--burgundy: var(--cobalt);--burgundy-dark: var(--midnight);--accent-soft: var(--coral);--light: #f0e9dc;--surface: #f8f0e3;--surface-raised: var(--powder);--line: rgba(32, 34, 56, .2);background:var(--cream);color:var(--midnight)}::selection{background:var(--butter);color:var(--midnight)}body{background:var(--cream);color:var(--midnight)}h1,h2,h3,.hero-index,.project-number,.intro-curtain p,.manifesto blockquote,.contact-section h2{font-family:Bricolage Grotesque,Manrope,sans-serif}.project-copy:after,.portrait-sticker{font-family:Caveat,cursive}.intro-curtain{background:var(--cobalt);color:var(--cream);transition-duration:.68s}.intro-curtain p{max-width:11ch;font-weight:600;line-height:.83;letter-spacing:-.065em}.intro-curtain p em{color:var(--butter);font-style:normal}.intro-line:after{background:var(--butter);animation-duration:.52s}.scroll-progress span{background:var(--coral)}.site-header.scrolled:before{border-color:#2022382b;background:#fff9ede0;box-shadow:0 8px #20223814}.wordmark{position:relative}.wordmark:after{content:"hi :)";position:absolute;left:75%;top:70%;width:max-content;padding:.3rem .5rem;border:1px solid var(--midnight);border-radius:3px;background:var(--butter);color:var(--midnight);font:600 .58rem Manrope,sans-serif;opacity:0;transform:rotate(6deg) scale(.7);transform-origin:left top;transition:opacity .16s ease,transform .28s var(--ease-spring);pointer-events:none}.wordmark:hover:after,.wordmark:focus-visible:after{opacity:1;transform:rotate(6deg) scale(1)}.wordmark span,nav a:before{color:var(--coral)}nav a:after{height:3px;background:var(--butter)}.hero{background:var(--cream);color:var(--midnight)}.hero-grid{background-image:linear-gradient(rgba(32,34,56,.065) 1px,transparent 1px),linear-gradient(90deg,rgba(32,34,56,.065) 1px,transparent 1px)}.hero:before{content:"";position:absolute;z-index:-1;left:-8vw;bottom:-16vw;width:38vw;aspect-ratio:1;border-radius:50%;background:var(--butter);opacity:.72}.hero:after{border-color:#3155d92e;box-shadow:0 0 0 8vw #3155d909,0 0 0 16vw #ff6b5506}.hero-title{font-family:Bricolage Grotesque,Manrope,sans-serif;font-weight:700;line-height:.76;letter-spacing:-.075em}.hero-line--offset{padding-left:6vw;font-style:normal}.hero-line--accent{padding-left:22vw;color:var(--coral);font-size:.72em}.hero-kicker i{border:1px solid var(--midnight);background:var(--butter);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight)}.hero-kicker i:before{background:#3bd671;box-shadow:0 0 0 3px #3bd67133}.hero-portrait{border:7px solid var(--cream);border-bottom-width:40px;box-shadow:12px 12px 0 var(--cobalt),0 35px 80px #20223833}.portrait-sticker{background:var(--butter);color:var(--midnight);font-size:.9rem;font-weight:600;text-transform:none;letter-spacing:0;border:2px solid var(--midnight);box-shadow:4px 4px 0 var(--midnight)}.now-dial{color:var(--midnight)}.now-dial small{color:var(--cobalt)}.now-orbit{animation-duration:13s}.hero-notification{position:absolute;z-index:6;left:55%;top:16%;display:flex;align-items:center;gap:.65rem;padding:.6rem .75rem;border:1px solid var(--midnight);border-radius:10px;background:var(--cream);box-shadow:5px 5px 0 var(--midnight);transform:rotate(-4deg);transition:transform .25s var(--ease-spring),box-shadow .25s ease}.hero-notification:hover{transform:rotate(1deg) translateY(-4px);box-shadow:7px 9px 0 var(--midnight)}.hero-notification>span{width:1.55rem;aspect-ratio:1;display:grid;place-items:center;border-radius:50%;background:var(--coral);color:var(--midnight);font-size:.65rem;font-weight:700}.hero-notification p{margin:0;color:var(--midnight);font-size:.62rem;line-height:1.25}.hero-notification b{display:block;font-weight:700}.pixel-pet{position:absolute;z-index:12;left:57%;top:70%;width:72px;border:0;padding:0;background:transparent;color:var(--midnight);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;will-change:left,top,transform}.pixel-pet:active{cursor:grabbing}.pixel-pet-face{width:62px;aspect-ratio:1;display:block;position:relative;border:2px solid var(--midnight);border-radius:42% 58% 48% 52%/55% 45%;background:var(--powder);box-shadow:5px 5px 0 var(--midnight);transition:border-radius .25s var(--ease-spring),background .2s ease}.pixel-pet:hover .pixel-pet-face,.pixel-pet.is-dragging .pixel-pet-face{border-radius:55% 45% 58% 42%/43% 58% 42% 57%;background:var(--pink)}.pixel-pet-face i{position:absolute;top:21px;width:7px;height:10px;border-radius:50%;background:var(--midnight)}.pixel-pet-face i:first-child{left:16px}.pixel-pet-face i:nth-child(2){right:16px}.pixel-pet-face b{position:absolute;left:50%;bottom:12px;width:14px;height:6px;border-bottom:2px solid var(--midnight);border-radius:50%;transform:translate(-50%)}.pixel-pet.is-dragging .pixel-pet-face b{height:8px;border:2px solid var(--midnight);border-top:0;border-radius:0 0 50% 50%}.pixel-pet small{display:block;width:max-content;margin-top:.45rem;padding:.18rem .35rem;background:var(--midnight);color:var(--cream);font-size:.48rem;letter-spacing:.06em}.secret-trigger{border-color:var(--cobalt);color:var(--cobalt)}.secret-trigger:hover{border-color:var(--coral);color:var(--coral)}.text-link{border:2px solid var(--midnight);box-shadow:4px 4px 0 var(--midnight)}.text-link:before{background:var(--butter)}.text-link:hover{border-color:var(--midnight);color:var(--midnight);box-shadow:1px 1px 0 var(--midnight);transform:translate(3px,3px)}.work-section,.skills-section,.experience-section,.education-section,.credentials-section{background:var(--cream)}.project-list>.project:not(.project--archive){--chapter-bg: var(--butter);--chapter-ink: var(--midnight);--chapter-muted: #525262;--chapter-line: rgba(32, 34, 56, .26);background:var(--chapter-bg);color:var(--chapter-ink)}.project-list>.project[data-project=pandai]{--chapter-bg: var(--cobalt);--chapter-ink: var(--cream);--chapter-muted: #e0e7ff;--chapter-line: rgba(255, 249, 237, .35)}.project-list>.project[data-project=recipe]{--chapter-bg: var(--powder);--chapter-ink: var(--midnight);--chapter-muted: #4d5872;--chapter-line: rgba(32, 34, 56, .25)}.project-list>.project[data-project=appraisal]{--chapter-bg: var(--coral);--chapter-ink: var(--midnight);--chapter-muted: #4a3030;--chapter-line: rgba(32, 34, 56, .26)}.project-list>.project:not(.project--archive):before{content:counter(project-counter,decimal-leading-zero);right:1vw;top:-2vh;color:color-mix(in srgb,var(--chapter-ink) 11%,transparent);font-family:Bricolage Grotesque,sans-serif;font-size:clamp(13rem,29vw,30rem);font-style:normal;font-weight:700;letter-spacing:-.1em}.project-list{counter-reset:project-counter}.project-list>.project:not(.project--archive){counter-increment:project-counter}.project-list>.project:not(.project--archive) .project-number{width:auto;aspect-ratio:auto;margin:0 0 clamp(2rem,5vh,4rem);border:0;font-family:Bricolage Grotesque,sans-serif;font-size:clamp(4.8rem,8vw,8rem);font-weight:700;line-height:.7;letter-spacing:-.08em}.project-flavour{position:absolute;top:4.5rem;right:0;z-index:2;padding:.42rem .65rem;border:1px solid var(--chapter-ink);border-radius:3px;background:var(--pink);color:var(--midnight);font:600 .62rem Manrope,sans-serif;text-transform:lowercase;transform:rotate(4deg);box-shadow:3px 3px 0 var(--chapter-ink)}.project-list>.project:nth-child(2n):not(.project--archive) .project-flavour{right:auto;left:0;transform:rotate(-4deg)}.project-list>.project:not(.project--archive) .project-meta h3{font-family:Bricolage Grotesque,sans-serif;font-weight:650}.project-list>.project:not(.project--archive)>.project-visual{border:2px solid var(--chapter-ink);box-shadow:10px 10px 0 var(--chapter-ink),0 40px 90px #20223826}.project[data-project=corporate] .project-visual:hover .phone-shell{transform:translate(-8px,-12px) rotate(-2deg) scale(1.03)}.project[data-project=pandai] .project-visual:hover .pandai-phone{transform:translate(10px,-12px) rotate(3deg) scale(1.04)}.project[data-project=appraisal] .project-visual:hover .flow-card{box-shadow:9px 9px 0 var(--midnight)}.project[data-project=appraisal] .project-visual:hover .flow-card:nth-of-type(1){transform:rotate(-5deg) translateY(-14%)}.project[data-project=appraisal] .project-visual:hover .flow-card:nth-of-type(2){transform:rotate(4deg) translateY(14%)}.project[data-project=appraisal] .project-visual:hover .flow-card:nth-of-type(3){transform:rotate(-3deg) translateY(-10%)}.visual-recipe{display:grid;place-items:center;background:radial-gradient(circle at 16% 18%,rgba(243,228,91,.9) 0 8%,transparent 8.3%),radial-gradient(circle at 86% 82%,rgba(255,107,85,.42) 0 12%,transparent 12.3%),linear-gradient(145deg,#dce5ff,var(--powder))}.recipe-phone{position:relative;z-index:3;width:min(42%,285px);height:84%;padding:1rem;display:flex;flex-direction:column;border:3px solid var(--midnight);border-radius:34px;background:var(--cream);color:var(--midnight);box-shadow:12px 14px 0 var(--midnight);transform:rotate(-3deg);transition:transform .55s var(--ease-spring),box-shadow .35s ease}.recipe-phone--shot{padding:0;overflow:hidden;background:#fff}.recipe-phone--shot img{width:100%;height:100%;object-fit:cover;object-position:top}.recipe-phone-bar,.recipe-nav{display:flex;align-items:center;justify-content:space-between}.recipe-phone-bar{min-height:24px;font-size:.48rem}.recipe-phone-bar i{width:42px;height:12px;border-radius:999px;background:var(--midnight)}.recipe-phone-bar small,.recipe-phone-bar b{font-size:.48rem}.recipe-app-head{display:block;margin:1.2rem 0 .8rem;text-align:left}.recipe-app-head small{display:block;margin-bottom:.35rem;color:var(--cobalt);font-size:.48rem;font-weight:800;letter-spacing:.1em}.recipe-app-head strong{font:700 clamp(1rem,2vw,1.55rem)/.98 "Bricolage Grotesque",sans-serif;letter-spacing:-.05em}.recipe-search{padding:.65rem .75rem;border:1px solid rgba(32,34,56,.22);border-radius:999px;background:#fff;color:#77788a;font-size:.54rem;text-align:left}.recipe-feature{position:relative;flex:1;min-height:0;margin-top:.8rem;padding:1rem;display:flex;flex-direction:column;justify-content:flex-end;border:2px solid var(--midnight);border-radius:18px;background:var(--butter);text-align:left;overflow:hidden}.recipe-feature>i{position:absolute;right:-.5rem;top:-.6rem;font-size:clamp(3.6rem,7vw,6.3rem);font-style:normal;transform:rotate(10deg)}.recipe-feature small{position:relative;width:max-content;margin-bottom:.35rem;padding:.18rem .3rem;border:1px solid var(--midnight);border-radius:999px;background:var(--cream);font-size:.42rem;font-weight:800}.recipe-feature strong,.recipe-feature em{position:relative;display:block}.recipe-feature strong{font:700 clamp(.8rem,1.6vw,1.2rem)/1 "Bricolage Grotesque",sans-serif;letter-spacing:-.04em}.recipe-feature em{margin-top:.4rem;font-size:.45rem;font-style:normal}.recipe-mini-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem;margin:.55rem 0}.recipe-mini-row i{padding:.4rem .2rem;border:1px solid rgba(32,34,56,.2);border-radius:9px;background:#fff;font-size:clamp(.75rem,1.4vw,1.1rem);font-style:normal}.recipe-nav{padding:.45rem .8rem 0;font-size:.75rem}.recipe-nav i{color:#8a8a98;font-style:normal}.recipe-match{position:absolute;z-index:4;right:7%;top:16%;width:clamp(125px,21%,180px);padding:1rem;border:2px solid var(--midnight);border-radius:12px;background:var(--pink);color:var(--midnight);box-shadow:7px 7px 0 var(--midnight);text-align:left;transform:rotate(6deg);transition:transform .5s var(--ease-spring)}.recipe-match small,.recipe-match span{display:block;font-size:.48rem;font-weight:700;letter-spacing:.06em}.recipe-match b{display:block;margin:.2rem 0 .45rem;font:750 clamp(2.1rem,4vw,3.8rem)/1 "Bricolage Grotesque",sans-serif;letter-spacing:-.08em}.recipe-match i{display:block;height:7px;margin-bottom:.65rem;border:1px solid var(--midnight);border-radius:999px;background:linear-gradient(90deg,var(--coral) 0 94%,var(--cream) 94%)}.recipe-chip{position:absolute;z-index:4;padding:.5rem .65rem;border:2px solid var(--midnight);border-radius:999px;background:var(--cream);color:var(--midnight);box-shadow:4px 4px 0 var(--midnight);font:650 .62rem Manrope,sans-serif;transition:transform .5s var(--ease-spring)}.recipe-chip--one{left:8%;top:25%;transform:rotate(-8deg)}.recipe-chip--two{left:10%;bottom:19%;background:var(--coral);transform:rotate(5deg)}.project[data-project=recipe] .project-visual:hover .recipe-phone{box-shadow:16px 18px 0 var(--midnight);transform:translateY(-10px) rotate(-1deg) scale(1.02)}.project[data-project=recipe] .project-visual:hover .recipe-match{transform:translate(8px,-8px) rotate(9deg)}.project[data-project=recipe] .project-visual:hover .recipe-chip--one{transform:translate(-6px,-5px) rotate(-11deg)}.project[data-project=recipe] .project-visual:hover .recipe-chip--two{transform:translate(-8px,6px) rotate(2deg)}@media(max-width:760px){.recipe-phone{width:min(54%,250px);height:82%}.recipe-match{right:3%;width:120px;padding:.75rem}.recipe-chip--one{left:3%}.recipe-chip--two{left:4%}}.project-copy:after{border:2px solid var(--midnight);background:var(--cream);color:var(--midnight);box-shadow:4px 4px 0 var(--midnight);font-size:1.05rem}.capability-marquee{border-color:var(--midnight);background:var(--midnight);color:var(--butter);transform:rotate(1deg) scale(1.02)}.capability-marquee i{color:var(--coral)}.manifesto{background:var(--cobalt);color:var(--cream)}.manifesto .eyebrow{color:var(--butter)}.manifesto blockquote{max-width:14ch;font-weight:650;line-height:.87;letter-spacing:-.06em}.manifesto blockquote strong{display:inline-block;padding:0 .12em .08em;background:var(--butter);color:var(--midnight);font-weight:700;font-style:normal;transform:rotate(-2deg)}.manifesto-foot{color:#e0e7ff}.manifesto-foot i,.manifesto-foot>span:nth-child(4){color:var(--coral)}.about-section{background:var(--pink)}.about-copy,.about-card--white,.education-card{background:var(--cream)}.about-card--burgundy,.education-card--primary{background:var(--cobalt);color:var(--cream)}.skill-grid article:hover{background:var(--butter);color:var(--midnight)}.timeline-row:hover{background:var(--powder);color:var(--midnight)}.contact-section{background:var(--butter);color:var(--midnight)}.contact-section:before{border-color:#3155d94d;box-shadow:0 0 0 8vw #3155d90a,0 0 0 16vw #ff6b5509}.contact-section>.eyebrow,.contact-note,.footer-line{color:#555465}.contact-section h2{max-width:13ch;color:var(--midnight);font-weight:700;line-height:.8}.contact-section h2 em{color:var(--cobalt);font-style:normal}.contact-stamp{border:2px solid var(--midnight);background:var(--coral);color:var(--midnight);box-shadow:6px 6px 0 var(--midnight)}.contact-stamp b{color:var(--midnight)}.contact-section:hover .contact-stamp{background:var(--pink);color:var(--midnight)}.contact-links,.contact-links a{border-color:#20223859}.contact-links a{position:relative;color:var(--midnight)}.contact-links a:after{content:attr(data-reply);position:absolute;right:1rem;bottom:calc(100% - .2rem);width:max-content;padding:.4rem .55rem;border:1px solid var(--midnight);border-radius:3px;background:var(--cream);color:var(--midnight);font-size:.58rem;opacity:0;transform:translateY(8px) rotate(3deg) scale(.8);transition:opacity .15s ease,transform .28s var(--ease-spring);pointer-events:none}.contact-links a:hover,.contact-links a:focus-visible{background:var(--cobalt);color:var(--cream)}.contact-links a:hover:after,.contact-links a:focus-visible:after{opacity:1;transform:rotate(3deg) scale(1)}.footer-line a{color:var(--midnight)}.footer-surprise{border:1px solid var(--midnight);background:var(--coral);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight)}.cursor-dot{border-color:var(--midnight);background:var(--coral);color:var(--midnight)}.cursor-dot.active{border-color:var(--midnight);background:var(--butter)}.cursor-dot.has-label{background:var(--butter);color:var(--midnight);box-shadow:5px 5px 0 var(--midnight)}.surprise-note{border:2px solid var(--midnight);background:var(--butter);color:var(--midnight);box-shadow:5px 5px 0 var(--midnight)}.case-study{background:var(--cream);color:var(--midnight)}.case-close{border:2px solid var(--midnight);background:var(--butter);box-shadow:4px 4px 0 var(--midnight)}.reveal-ready .reveal.reveal-pending:not(.is-visible){opacity:0;visibility:visible;filter:none;clip-path:none;transform:rotate(.6deg) scale(.975);transform-origin:left top;transition:opacity .4s ease,transform .65s var(--ease-spring);transition-delay:var(--reveal-delay, 0ms)}.reveal-ready .reveal.is-visible{opacity:1;visibility:visible;filter:none;clip-path:none;transform:none}.reveal-ready .project-list>.project.reveal{opacity:1;clip-path:none;transform:none}@media(max-width:760px){.hero-line--offset,.hero-line--accent{padding-left:0}.hero-notification{left:auto;right:4vw;top:19rem;transform:rotate(4deg) scale(.9)}.pixel-pet{left:auto;right:7vw;top:64%;width:62px}.pixel-pet-face{width:54px}.pixel-pet-face i{top:18px}.pixel-pet-face i:first-child{left:13px}.pixel-pet-face i:nth-child(2){right:13px}.project-list>.project:not(.project--archive) .project-number{font-size:clamp(5rem,24vw,8rem)}.project-flavour{top:3.5rem}.contact-links a:after{display:none}}@media(prefers-reduced-motion:reduce){.reveal,.reveal.is-visible,.reveal-ready .reveal.reveal-pending:not(.is-visible){opacity:1;visibility:visible;filter:none;clip-path:none;transform:none;transition:none}.now-orbit{animation:none}}.experience-section{width:100%;padding:clamp(7rem,11vw,11rem) max(4vw,calc((100vw - 1320px)/2));background:var(--cream);overflow:hidden}.lore-heading{display:grid;grid-template-columns:minmax(120px,.75fr) 2.3fr 1fr;gap:clamp(1.5rem,3vw,4rem);align-items:end;margin-bottom:clamp(4rem,8vw,8rem)}.lore-heading h2{margin:0;font-size:clamp(3.4rem,7vw,7.5rem);font-weight:700;line-height:.82;letter-spacing:-.055em}.lore-heading>p:last-child{margin:0;color:var(--muted);font-size:.92rem;line-height:1.75}.lore-layout{display:grid;grid-template-columns:minmax(180px,.7fr) 3fr;gap:clamp(2rem,5vw,6rem);align-items:start}.lore-years{position:sticky;top:17vh;min-height:480px;display:flex;flex-direction:column;justify-content:space-between;color:var(--cobalt);font:700 clamp(2.8rem,5vw,5.5rem)/.8 "Bricolage Grotesque",sans-serif;letter-spacing:-.07em}.lore-years span:not(:first-child){color:transparent;-webkit-text-stroke:1px rgba(32,34,56,.38)}.lore-years i{position:absolute;inset:-.5rem auto -.5rem 48%;width:1px;z-index:-1;background:#20223826;transform:rotate(7deg)}.lore-list{position:relative;border-top:2px solid var(--midnight)}.lore-list:before,.lore-list:after{content:"";position:absolute;left:17px;top:0;width:3px;height:100%;background:#20223824}.lore-list:after{background:var(--coral);transform:scaleY(var(--lore-progress, 0));transform-origin:top;transition:transform .12s linear}.lore-entry{position:relative;border-bottom:1px solid rgba(32,34,56,.22)}.lore-toggle{position:relative;z-index:2;width:100%;display:grid;grid-template-columns:36px minmax(130px,.75fr) minmax(0,2fr) 34px;gap:clamp(1rem,2.5vw,2.5rem);align-items:center;padding:clamp(1.7rem,3vw,2.7rem) 0;border:0;background:transparent;color:var(--midnight);text-align:left;cursor:pointer}.lore-toggle:before{content:"";position:absolute;inset:.55rem -.8rem;z-index:-1;border-radius:12px;background:var(--powder);opacity:0;transform:scale(.985) rotate(.25deg);transition:opacity .2s ease,transform .35s var(--ease-spring)}.lore-entry:hover .lore-toggle:before,.lore-entry.is-open .lore-toggle:before,.lore-toggle:focus-visible:before{opacity:1;transform:none}.lore-node{width:15px;aspect-ratio:1;justify-self:center;border:2px solid var(--midnight);border-radius:50%;background:var(--cream);box-shadow:0 0 0 5px var(--cream);transition:background .2s ease,transform .35s var(--ease-spring)}.lore-entry.is-open .lore-node{background:var(--coral);transform:scale(1.28)}.lore-entry--sidequest .lore-node{border-radius:2px;background:var(--butter);transform:rotate(45deg)}.lore-date{color:#56566a;font-size:.68rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.lore-title strong,.lore-title small{display:block}.lore-title strong{font:650 clamp(1.35rem,2.3vw,2.35rem)/1 "Bricolage Grotesque",sans-serif;letter-spacing:-.045em}.lore-title small{margin-top:.5rem;color:#56566a;font-size:.76rem}.lore-plus{position:relative;width:30px;aspect-ratio:1;border:1px solid var(--midnight);border-radius:50%;background:var(--butter)}.lore-plus:before,.lore-plus:after{content:"";position:absolute;left:28%;right:28%;top:49%;height:1px;background:var(--midnight);transition:transform .3s var(--ease-spring)}.lore-plus:after{transform:rotate(90deg)}.lore-entry.is-open .lore-plus:after{transform:rotate(0)}.lore-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease-out)}.lore-panel>div{overflow:hidden;padding:0 4.5rem 0 calc(186px + clamp(1rem,2.5vw,2.5rem))}.lore-entry.is-open .lore-panel{grid-template-rows:1fr}.lore-entry.is-open .lore-panel>div{padding:.2rem 4.5rem 2.4rem calc(186px + clamp(1rem,2.5vw,2.5rem))}.lore-panel p{max-width:650px;margin:0;color:#56566a;font-size:.88rem;line-height:1.75}.lore-panel ul{max-width:650px;margin:.6rem 0 0;padding-left:1.1rem;color:#56566a;font-size:.88rem;line-height:1.75}.lore-panel li+li{margin-top:.2rem}.lore-panel li::marker{color:var(--cobalt)}.lore-panel p:first-child{margin-bottom:.65rem;color:var(--cobalt);font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.about-section{padding:clamp(7rem,11vw,11rem) max(4vw,calc((100vw - 1320px)/2));background:var(--pink);overflow:hidden}.about-heading h2{max-width:12ch;font-size:clamp(3.8rem,7.7vw,8rem);font-weight:700;line-height:.82;letter-spacing:-.07em}.about-heading h2 em{color:var(--cobalt);font-style:normal}.about-world{position:relative;min-height:780px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:auto auto;gap:1.25rem;align-items:start}.about-world .about-photo{grid-column:1 / 6;grid-row:1 / 3;position:relative;min-height:700px;margin:0;border:7px solid var(--cream);border-bottom-width:54px;border-radius:2px;background:var(--powder);box-shadow:12px 12px 0 var(--midnight);transform:rotate(-2deg) translate3d(var(--tilt-x, 0),var(--tilt-y, 0),0);overflow:visible}.about-world .about-photo img{width:100%;height:100%;position:absolute;inset:0 0 47px;display:block;object-fit:cover;object-position:50% 52%}.about-world .about-photo:after{display:none}.about-world .about-photo figcaption{left:1rem;bottom:-39px;color:var(--midnight);font-size:.68rem}.about-photo-note{position:absolute;z-index:3;right:-2.4rem;top:12%;padding:.5rem .7rem;border:2px solid var(--midnight);background:var(--butter);color:var(--midnight);box-shadow:4px 4px 0 var(--midnight);font:600 1.05rem Caveat,cursive;transform:rotate(7deg)}.about-dashboard{grid-column:5 / 13;grid-row:1;position:relative;z-index:2;margin-top:3.5rem;border:2px solid var(--midnight);border-radius:16px;background:var(--cream);box-shadow:12px 12px 0 var(--cobalt);overflow:hidden}.dashboard-bar{min-height:48px;padding:.75rem 1rem;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:2px solid var(--midnight);background:var(--powder);font-size:.62rem}.dashboard-bar>span{display:flex;gap:.35rem}.dashboard-bar i{width:10px;aspect-ratio:1;border:1px solid var(--midnight);border-radius:50%;background:var(--coral)}.dashboard-bar i:nth-child(2){background:var(--butter)}.dashboard-bar i:nth-child(3){background:#62d989}.dashboard-bar b{font-weight:600}.dashboard-bar em{justify-self:end;color:var(--cobalt);font-style:normal;font-weight:700}.dashboard-intro{padding:clamp(2rem,4vw,4rem) clamp(1.5rem,4vw,4rem) 2rem}.dashboard-intro small{color:var(--cobalt);font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.dashboard-intro p{max-width:760px;margin:.8rem 0 0;font:650 clamp(1.65rem,3vw,3.2rem)/1.08 "Bricolage Grotesque",sans-serif;letter-spacing:-.045em}.about-switcher{display:flex;gap:.45rem;padding:0 clamp(1.5rem,4vw,4rem)}.about-switcher button{border:1px solid var(--midnight);border-radius:999px;padding:.65rem .85rem;background:transparent;color:var(--midnight);cursor:pointer;font-size:.68rem;font-weight:600;transition:transform .22s var(--ease-spring),background .18s ease,color .18s ease}.about-switcher button:hover{transform:translateY(-3px) rotate(-1deg)}.about-switcher button[aria-selected=true]{background:var(--midnight);color:var(--cream)}.about-panels{min-height:245px;padding:1.5rem clamp(1.5rem,4vw,4rem) 2.5rem}.about-panel{animation:panel-pop .35s var(--ease-spring) both}@keyframes panel-pop{0%{opacity:0;transform:translateY(12px) rotate(.5deg) scale(.98)}to{opacity:1;transform:none}}.about-panel>span{color:var(--coral);font-size:.62rem;font-weight:700;letter-spacing:.1em}.about-panel h3{margin:.65rem 0 .6rem;font-size:clamp(1.5rem,2.4vw,2.5rem);letter-spacing:-.04em}.about-panel p{max-width:620px;margin:0;color:#5a5a6d;line-height:1.7}.dashboard-current{display:flex;flex-wrap:wrap;gap:.45rem;padding:1rem clamp(1.5rem,4vw,4rem);border-top:2px solid var(--midnight);background:var(--butter);font-size:.66rem}.dashboard-current span{margin-right:.4rem;font-weight:700;text-transform:uppercase}.dashboard-current b{padding:.25rem .45rem;border:1px solid var(--midnight);border-radius:999px;background:var(--cream);font-weight:600}.about-index{grid-column:6 / 13;grid-row:2;display:grid;grid-template-columns:1fr 1fr;margin-top:.5rem;border-top:2px solid var(--midnight)}.about-index div{padding:1.15rem 0;display:grid;grid-template-columns:100px 1fr;gap:1rem;border-bottom:1px solid rgba(32,34,56,.28)}.about-index div:nth-child(odd){margin-right:1.5rem}.about-index span{color:#5f5260;font-size:.62rem;text-transform:uppercase;letter-spacing:.08em}.about-index b{font-size:.76rem;font-weight:600}.contact-section{min-height:120svh;padding-top:clamp(7rem,11vw,11rem);justify-content:flex-start;background:var(--butter);color:var(--midnight)}.contact-arrival{position:absolute;right:max(4vw,calc((100vw - 1320px)/2));top:8rem;width:min(310px,38vw);padding:1rem;border:2px solid var(--midnight);border-radius:14px;background:var(--cream);color:var(--midnight);box-shadow:7px 7px 0 var(--midnight);transform:rotate(3deg)}.contact-arrival>span{display:inline-block;margin-bottom:.7rem;padding:.25rem .45rem;border-radius:999px;background:var(--coral);font-size:.55rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.contact-arrival p{margin:0;font-size:.72rem;line-height:1.45}.contact-arrival b{display:block;font-size:.82rem}.contact-status{display:flex;align-items:center;gap:.7rem;margin-bottom:clamp(4rem,8vw,8rem);color:#56566a;font-size:.65rem;text-transform:uppercase;letter-spacing:.06em}.contact-status i{width:9px;aspect-ratio:1;border-radius:50%;background:#31c766;box-shadow:0 0 0 5px #31c7662b;animation:status-pulse 2s ease-in-out infinite}.contact-status time{margin-left:auto}.contact-section h2{max-width:9ch;margin:1.5rem 0 2rem;font-size:clamp(5rem,13vw,13rem);line-height:.72}.contact-section h2 em{color:var(--cobalt)}.contact-note{max-width:37rem;margin:0 0 clamp(3rem,6vw,5rem);color:#56566a}.contact-main{display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:stretch;margin-bottom:clamp(4rem,7vw,7rem)}.contact-email{min-width:0;padding:clamp(1.5rem,3vw,2.5rem);display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;border:3px solid var(--midnight);border-radius:18px;background:var(--cream);color:var(--midnight);box-shadow:10px 10px 0 var(--midnight);font:650 clamp(1.5rem,4.4vw,4.8rem)/1 "Bricolage Grotesque",sans-serif;letter-spacing:-.055em;transition:background .2s ease,color .2s ease,box-shadow .25s ease,transform .25s var(--ease-spring)}.contact-email span:nth-child(2){color:var(--cobalt)}.contact-email b{margin-left:1rem;font-size:.55em}.contact-email:hover,.contact-email:focus-visible{background:var(--cobalt);color:var(--cream);box-shadow:4px 4px 0 var(--midnight);transform:translate(6px,6px)}.contact-email:hover span:nth-child(2),.contact-email:focus-visible span:nth-child(2){color:var(--butter)}.copy-email{min-width:150px;padding:1rem;border:2px solid var(--midnight);border-radius:18px;background:var(--pink);color:var(--midnight);box-shadow:7px 7px 0 var(--midnight);cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;font-size:.72rem;font-weight:700;transition:transform .25s var(--ease-spring),box-shadow .25s ease,background .2s ease}.copy-email:hover,.copy-email:focus-visible{background:var(--powder);box-shadow:3px 3px 0 var(--midnight);transform:translate(4px,4px) rotate(1deg)}.copy-email b{align-self:flex-end;font-size:1.8rem;font-weight:400}.copy-email.is-copied{background:#79dc97}.contact-links{margin-top:auto}.footer-line{grid-template-columns:1fr auto 1fr}.footer-line span:last-child{text-align:right}@media(max-width:900px){.lore-heading{grid-template-columns:1fr 2fr}.lore-heading>p:last-child{grid-column:2}.lore-layout{grid-template-columns:120px 1fr}.about-world{min-height:720px}.about-world .about-photo{grid-column:1 / 6}.about-dashboard{grid-column:4 / 13}}@media(max-width:760px){.experience-section,.about-section{padding-inline:5vw}.lore-heading{grid-template-columns:1fr;gap:1.2rem}.lore-heading>p:last-child{grid-column:1;max-width:30rem}.lore-layout{grid-template-columns:minmax(0,1fr)}.lore-years{position:static;min-height:0;flex-direction:row;font-size:clamp(2.4rem,13vw,4rem)}.lore-years i{display:none}.lore-list:before,.lore-list:after{left:12px}.lore-toggle{grid-template-columns:26px 1fr 34px;gap:1rem;padding:1.6rem 0}.lore-date{grid-column:2;grid-row:1;align-self:end}.lore-title{grid-column:2;grid-row:2}.lore-node{grid-column:1;grid-row:1 / 3}.lore-plus{grid-column:3;grid-row:1 / 3}.lore-panel>div{padding:0 1rem 0 calc(26px + 1rem)}.lore-entry.is-open .lore-panel>div{padding:0 1rem 2rem calc(26px + 1rem)}.about-world{min-height:0;grid-template-columns:1fr;grid-template-rows:auto;gap:2rem}.about-world .about-photo{grid-column:1;grid-row:auto;width:calc(100% - 1.5rem);min-height:68svh;margin-left:0}.about-photo-note{right:-1rem}.about-dashboard{grid-column:1;grid-row:auto;margin:0;box-shadow:7px 7px 0 var(--cobalt)}.dashboard-bar{grid-template-columns:auto 1fr auto}.dashboard-bar b{text-align:center}.about-switcher{overflow-x:auto;padding-bottom:.3rem}.about-switcher button{flex:0 0 auto}.about-index{grid-column:1;grid-row:auto;grid-template-columns:1fr}.about-index div:nth-child(odd){margin-right:0}.contact-section{min-height:110svh;padding-inline:5vw}.contact-arrival{position:relative;inset:auto;width:min(84vw,320px);margin:0 0 4rem auto}.contact-status{margin-bottom:3rem}.contact-section h2{font-size:clamp(5rem,23vw,8rem)}.contact-main{grid-template-columns:1fr}.contact-email{grid-template-columns:1fr auto;font-size:clamp(1.35rem,7vw,2.4rem)}.contact-email span:first-child,.contact-email span:nth-child(2){grid-column:1}.contact-email b{grid-column:2;grid-row:1 / 3}.copy-email{min-height:110px}.footer-line{grid-template-columns:1fr auto}.footer-line span:last-child{text-align:right}}@media(prefers-reduced-motion:reduce){.about-panel{animation:none}.lore-list:after{transition:none}}.project-archive-heading .eyebrow{justify-self:start;padding:.45rem .8rem;border:2px solid var(--midnight);border-radius:4px;background:var(--pink);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight);font-size:.82rem;font-weight:700;transform:rotate(-3deg)}.project-archive{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.5rem,2.8vw,2.4rem);padding:1.5rem 12px 0 0;border-top:0}.project-archive .project--archive{--quest-bg: var(--cream);--quest-emoji: "✨";--quest-tilt: -1.2deg;position:relative;transform:rotate(var(--quest-tilt));transition:transform .45s var(--ease-spring)}.project-archive .project--archive:nth-child(2n){--quest-tilt: 1deg}.project-archive .project--archive:nth-child(3n){--quest-tilt: -.4deg}.project-archive [data-project=internal]{--quest-bg: var(--cream);--quest-emoji: "🗂️"}.project-archive [data-project=brainbuster]{--quest-bg: var(--butter);--quest-emoji: "🧠"}.project-archive [data-project=chatbot]{--quest-bg: var(--powder);--quest-emoji: "💬"}.project-archive [data-project=clictech]{--quest-bg: var(--pink);--quest-emoji: "💻"}.project-archive [data-project=brand]{--quest-bg: color-mix(in srgb, var(--coral) 38%, var(--cream));--quest-emoji: "🎨"}.project-archive [data-project=infrastructure]{--quest-bg: color-mix(in srgb, var(--cobalt) 20%, var(--cream));--quest-emoji: "🛠️"}.project-archive .project--archive .project-meta,.project-archive .project--archive .project-meta:hover{position:relative;height:100%;min-height:15rem;display:flex;flex-direction:column;align-items:flex-start;gap:.75rem;padding:1.5rem 1.5rem 1.4rem;border:2.5px solid var(--midnight);border-radius:18px;background:var(--quest-bg);color:var(--midnight);box-shadow:8px 8px 0 var(--midnight);overflow:visible;transition:box-shadow .3s ease}.project-archive .project--archive .project-meta:before{display:none}.project-archive .project--archive .project-meta:after{content:var(--quest-emoji);position:absolute;top:-1.1rem;right:1.1rem;width:3.1rem;aspect-ratio:1;display:grid;place-items:center;border:2.5px solid var(--midnight);border-radius:50%;background:#fff;box-shadow:3px 3px 0 var(--midnight);font-size:1.5rem;line-height:1;transform:rotate(8deg);transition:transform .45s var(--ease-spring)}.project-archive .project--archive .project-number{color:var(--cream);font:750 3.2rem/.8 Bricolage Grotesque,sans-serif;letter-spacing:-.05em;-webkit-text-stroke:2px var(--midnight);text-shadow:4px 4px 0 var(--cobalt)}.project-archive .project--archive .project-meta>div{flex:1}.project-archive .project--archive .project-meta h3{margin:0 0 .4rem;font:650 clamp(1.3rem,1.8vw,1.6rem)/1.05 "Bricolage Grotesque",sans-serif;letter-spacing:-.035em}.project-archive .project--archive .project-meta p{margin:0;color:#3d4766;font-size:.9rem;line-height:1.45}.project-archive .project--archive .project-link{display:inline-flex;align-items:center;padding:.55rem 1rem;border:2px solid var(--midnight);border-radius:999px;background:var(--midnight);color:var(--cream);box-shadow:3px 3px 0 var(--cobalt);font-size:.9rem;font-weight:700}.project-archive .project--archive .project-link span{margin-left:.45rem;color:var(--butter);font-size:inherit}.project-archive .project--archive .project-link:after{content:"";position:absolute;inset:0;border-radius:18px}.quest-lock{padding:.45rem .85rem;border:2px dashed var(--midnight);border-radius:999px;background:#fff9;font-size:.9rem;font-weight:700;transform:rotate(-2deg)}.project-archive .project--archive:has(.project-link):hover{transform:rotate(0) translateY(-6px)}.project-archive .project--archive:has(.project-link):hover .project-meta{box-shadow:12px 12px 0 var(--midnight)}.project-archive .project--archive:has(.project-link):hover .project-meta:after{transform:rotate(-10deg) scale(1.12)}.project-archive .project--archive:has(.project-link):hover .project-link span{transform:translate(3px,-3px)}.project-archive .project--archive .project-meta:hover .project-number{color:var(--cream)}.project-archive .project--archive .project-meta:hover p{color:#3d4766}.project-archive .project--archive .project-meta:hover .project-link span{color:var(--butter)}.project-archive .project--archive:has(.project-link:focus-visible) .project-meta{outline:3px solid var(--cobalt);outline-offset:5px}@media(max-width:980px){.project-archive{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.project-archive{grid-template-columns:minmax(0,1fr);row-gap:2.4rem;padding-right:6px}.project-archive .project--archive .project-meta,.project-archive .project--archive .project-meta:hover{min-height:0;box-shadow:5px 5px 0 var(--midnight)}.project-archive .project--archive .project-number{font-size:2.6rem}}@media(prefers-reduced-motion:reduce){.project-archive .project--archive,.project-archive .project--archive .project-meta:after{transition:none}}.skills-section .section-heading .eyebrow{display:inline-block;justify-self:start;align-self:start;width:fit-content;height:fit-content;padding:.45rem .8rem;border:2px solid var(--midnight);border-radius:4px;background:var(--powder);color:var(--midnight);box-shadow:3px 3px 0 var(--midnight);font:700 .85rem ui-monospace,SF Mono,Menlo,Consolas,monospace;letter-spacing:0;text-transform:none;transform:rotate(-2deg)}.skills-section .section-heading .eyebrow:before{content:"> ";color:var(--cobalt)}.skills-section .skill-grid{gap:clamp(1.5rem,2.6vw,2.2rem);padding:.5rem 10px 10px 0;border:0;background:transparent}.skills-section .skill-grid article,.skills-section .skill-grid article:hover{--skill-bar: var(--butter);min-height:0;padding:0 0 1.6rem;border:2.5px solid var(--midnight);border-radius:14px;background:var(--cream);color:var(--midnight);box-shadow:7px 7px 0 var(--midnight);overflow:hidden;transform:rotate(-.8deg);transition:transform .45s var(--ease-spring),box-shadow .3s ease}.skills-section .skill-grid article:nth-child(2){--skill-bar: var(--powder);transform:rotate(.7deg)}.skills-section .skill-grid article:nth-child(3){--skill-bar: var(--pink);transform:rotate(-.4deg)}.skills-section .skill-grid article:nth-child(4){--skill-bar: color-mix(in srgb, var(--coral) 45%, var(--cream));transform:rotate(.9deg)}.skills-section .skill-grid article:nth-child(5){--skill-bar: color-mix(in srgb, var(--cobalt) 28%, var(--cream));transform:rotate(-.9deg)}.skills-section .skill-grid article:nth-child(6){--skill-bar: color-mix(in srgb, #3bd671 40%, var(--cream));transform:rotate(.5deg)}.skills-section .skill-grid article:hover{box-shadow:11px 11px 0 var(--midnight);transform:rotate(0) translateY(-6px)}.skills-section .skill-grid article:after{display:none}.skill-bar{display:flex;align-items:center;gap:.4rem;padding:.65rem .9rem;border-bottom:2.5px solid var(--midnight);background:var(--skill-bar)}.skill-bar i{width:.75rem;aspect-ratio:1;border:1.5px solid var(--midnight);border-radius:50%;background:var(--coral)}.skill-bar i:nth-child(2){background:var(--butter)}.skill-bar i:nth-child(3){background:#3bd671}.skill-bar code{margin-left:auto;font:600 .85rem ui-monospace,SF Mono,Menlo,Consolas,monospace}.skills-section .skill-grid span,.skills-section .skill-grid article:hover span{display:block;margin:1.4rem 1.5rem 0;color:var(--cobalt);font:600 .9rem ui-monospace,SF Mono,Menlo,Consolas,monospace}.skills-section .skill-grid h3,.skills-section .skill-grid article:hover h3{margin:.5rem 1.5rem 1.1rem;font:650 clamp(1.35rem,2vw,1.75rem)/1.05 "Bricolage Grotesque",sans-serif;letter-spacing:-.035em;transform:none}.skills-section .skill-grid h3:after{content:"";display:inline-block;width:.5em;height:.9em;margin-left:.2em;background:var(--cobalt);vertical-align:-.08em}.skills-section .skill-grid article:hover h3:after{animation:skill-caret 1s steps(1) infinite}@keyframes skill-caret{50%{opacity:0}}.skill-keys{display:flex;flex-wrap:wrap;gap:.55rem;margin:0 1.5rem;padding:0;list-style:none}.skill-keys li{padding:.4rem .7rem .35rem;border:2px solid var(--midnight);border-bottom-width:5px;border-radius:8px;background:#fff;font:600 .88rem ui-monospace,SF Mono,Menlo,Consolas,monospace;transition:transform .12s ease,border-bottom-width .12s ease,background .2s ease}.skill-keys li:hover{border-bottom-width:2px;background:var(--skill-bar);transform:translateY(3px)}@media(max-width:760px){.skills-section .skill-grid{padding-right:6px}.skills-section .skill-grid article,.skills-section .skill-grid article:hover{box-shadow:5px 5px 0 var(--midnight)}}@media(prefers-reduced-motion:reduce){.skills-section .skill-grid h3:after{animation:none}.skills-section .skill-grid article,.skill-keys li{transition:none}}.case-gallery--quest{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.25rem 1.75rem;margin-top:2.5rem;counter-reset:quest-shot}.case-gallery--quest .gallery-card,.case-gallery--quest .gallery-card:nth-child(3){--shot-bg: color-mix(in srgb, var(--coral) 38%, var(--cream));--shot-tilt: -1.2deg;position:relative;grid-column:auto;min-height:0;gap:1rem;padding:1.4rem 1.4rem 1.5rem;border:2.5px solid var(--midnight);border-radius:18px;background:var(--shot-bg);color:var(--midnight);box-shadow:8px 8px 0 var(--midnight);overflow:visible;counter-increment:quest-shot;transform:rotate(var(--shot-tilt));transition:transform .45s var(--ease-spring),box-shadow .3s ease}.case-gallery--quest .gallery-card:nth-child(4n+2){--shot-bg: var(--butter);--shot-tilt: 1deg}.case-gallery--quest .gallery-card:nth-child(4n+3){--shot-bg: var(--powder);--shot-tilt: .6deg}.case-gallery--quest .gallery-card:nth-child(4n+4){--shot-bg: var(--pink);--shot-tilt: -.8deg}.case-gallery--quest .gallery-card[data-emoji]:after{content:attr(data-emoji);position:absolute;top:-1.1rem;right:1.1rem;width:3.1rem;aspect-ratio:1;display:grid;place-items:center;border:2.5px solid var(--midnight);border-radius:50%;background:#fff;box-shadow:3px 3px 0 var(--midnight);font-size:1.5rem;line-height:1;transform:rotate(8deg);transition:transform .45s var(--ease-spring)}.case-gallery--quest .gallery-card small{display:flex;align-items:baseline;gap:.6rem;padding-right:3.5rem;font:650 clamp(1.15rem,1.6vw,1.4rem)/1.1 "Bricolage Grotesque",sans-serif;letter-spacing:-.03em;text-transform:none}.case-gallery--quest .gallery-card small:before{content:counter(quest-shot,decimal-leading-zero);color:var(--cream);font:750 2.2rem/.8 Bricolage Grotesque,sans-serif;letter-spacing:-.05em;-webkit-text-stroke:1.5px var(--midnight);text-shadow:3px 3px 0 var(--cobalt)}.case-gallery--quest .gallery-art,.case-gallery--quest .gallery-card:nth-child(n) .gallery-art{flex:none;width:100%;aspect-ratio:4 / 3;margin:0;border:2.5px solid var(--midnight);border-radius:12px;background:#fff;box-shadow:none}.case-gallery--quest .gallery-art img{object-fit:contain;object-position:center;padding:6%}.case-gallery--quest .gallery-art:not(.has-image):before,.case-gallery--quest .gallery-card:nth-child(3) .gallery-art:not(.has-image):before{content:"image coming soon";inset:1rem;display:grid;place-items:center;border:2px dashed color-mix(in srgb,var(--midnight) 35%,transparent);border-radius:8px;background:none;color:var(--muted);font:600 1.3rem Caveat,cursive;opacity:1}.case-study[data-project=brand] .case-gallery--quest{grid-template-columns:repeat(3,minmax(0,1fr))}.case-study[data-project=brand] .case-gallery--quest .gallery-card:first-child{grid-column:1 / -1}.case-study[data-project=brand] .case-gallery--quest .gallery-card:first-child .gallery-art{aspect-ratio:2 / 1}@media(max-width:1000px){.case-study[data-project=brand] .case-gallery--quest .gallery-card:not(:first-child){padding:1.2rem 1rem 1.1rem}.case-study[data-project=brand] .case-gallery--quest .gallery-card:not(:first-child) small{flex-direction:column;gap:.45rem;padding-right:2.6rem}.case-study[data-project=brand] .case-gallery--quest .gallery-card:not(:first-child):after{width:2.6rem;font-size:1.2rem}}.case-gallery--quest .gallery-art.is-locked,.case-gallery--quest .gallery-card:nth-child(n) .gallery-art.is-locked{background:repeating-linear-gradient(-45deg,#ffffff8c 0 12px,#ffffff40 12px 24px)}.case-gallery--quest .gallery-art.is-locked:before,.case-gallery--quest .gallery-card:nth-child(3) .gallery-art.is-locked:before{content:"🔒 Kept internal";inset:50% auto auto 50%;padding:.55rem 1rem;border:2px dashed var(--midnight);border-radius:999px;background:#fff;color:var(--midnight);font:700 .95rem Manrope,sans-serif;white-space:nowrap;transform:translate(-50%,-50%) rotate(-2deg)}.case-gallery--quest .gallery-card:hover{transform:rotate(0) translateY(-6px);box-shadow:12px 12px 0 var(--midnight)}.case-gallery--quest .gallery-card:hover:after{transform:rotate(-10deg) scale(1.12)}@media(max-width:640px){.case-gallery--quest,.case-study[data-project=brand] .case-gallery--quest .gallery-card:not(:first-child) small{flex-direction:row}.case-study[data-project=brand] .case-gallery--quest .gallery-art.is-locked{aspect-ratio:5 / 2}.case-study[data-project=brand] .case-gallery--quest{grid-template-columns:minmax(0,1fr);gap:2.25rem}}@media(prefers-reduced-motion:reduce){.case-gallery--quest .gallery-card,.case-gallery--quest .gallery-card:hover{transform:none}}.archive-case-visual{position:relative}.archive-case-visual:has(.cover-device) .archive-cover-tags{max-width:46%}.cover-device{position:absolute;top:50%;right:6%;z-index:1;display:flex;flex-direction:column;align-items:center;animation:cover-float 5s ease-in-out infinite}.cover-laptop{--tilt: -4deg;width:50%}.cover-phone{--tilt: 5deg;right:11%;width:17%}.cover-screen{position:relative;display:flex;flex-direction:column;width:100%;border:clamp(4px,.6vw,8px) solid var(--midnight);background:#fff;overflow:hidden}.cover-laptop .cover-screen{aspect-ratio:16 / 10;border-radius:12px 12px 4px 4px}.cover-phone .cover-screen{aspect-ratio:9 / 19;border-radius:clamp(16px,2.4vw,30px)}.cover-phone .cover-screen:before{content:"";position:absolute;top:3%;left:50%;z-index:1;width:32%;height:3.5%;border-radius:999px;background:var(--midnight);transform:translate(-50%)}.cover-bar{flex:none;display:flex;gap:5px;padding:7px 9px;border-bottom:2px solid var(--midnight);background:var(--cream)}.cover-bar i{width:9px;aspect-ratio:1;border:1.5px solid var(--midnight);border-radius:50%;background:var(--coral)}.cover-bar i:nth-child(2){background:var(--butter)}.cover-bar i:nth-child(3){background:#7ed3a1}.cover-screen img{flex:1;min-height:0;width:100%;object-fit:cover;object-position:top}.cover-screen img.is-contain{object-fit:contain;object-position:center;padding:10% 14%}.cover-base{width:118%;height:clamp(9px,1.3vw,16px);border:2.5px solid var(--midnight);border-radius:3px 3px 14px 14px;background:var(--cream);box-shadow:0 10px #2022382e}.cover-device:after{content:"";position:absolute;left:15%;right:15%;bottom:-14%;height:7%;border-radius:50%;background:#20223833;filter:blur(6px);animation:cover-shadow 5s ease-in-out infinite}.cover-placeholder{flex:1;display:flex;flex-direction:column;gap:8%;padding:10% 9%}.cover-placeholder i{display:block;height:9%;border-radius:999px;background:#e3e6f2}.cover-placeholder--chat{justify-content:flex-end;gap:5%;padding:22% 9% 14%;background:color-mix(in srgb,var(--powder) 35%,#fff)}.cover-placeholder--chat i{width:72%;height:11%;border:2px solid var(--midnight);border-radius:12px 12px 12px 3px;background:#fff}.cover-placeholder--chat i:nth-child(2n){align-self:flex-end;width:58%;border-radius:12px 12px 3px;background:var(--butter)}.cover-placeholder--terminal{gap:7%;background:var(--midnight)}.cover-placeholder--terminal i{height:8%;background:#7ed3a1}.cover-placeholder--terminal i:nth-child(1){width:62%}.cover-placeholder--terminal i:nth-child(2){width:84%;background:var(--powder)}.cover-placeholder--terminal i:nth-child(3){width:48%;background:var(--butter)}.cover-placeholder--terminal i:nth-child(4){width:12%;animation:skill-caret 1s steps(1) infinite}@keyframes cover-float{0%,to{transform:translateY(-50%) rotate(var(--tilt))}50%{transform:translateY(calc(-50% - 12px)) rotate(calc(var(--tilt) + 1deg))}}@keyframes cover-shadow{0%,to{opacity:1;transform:scaleX(1)}50%{opacity:.6;transform:scaleX(.85)}}@media(max-width:640px){.cover-laptop{right:5%;width:52%}.cover-phone{right:9%;width:24%}.cover-bar{gap:3px;padding:4px 5px;border-bottom-width:1.5px}.cover-bar i{width:5px;border-width:1px}.archive-case-visual:has(.cover-device){justify-content:center;gap:1.25rem}.archive-case-visual:has(.cover-device) .archive-cover-tags{display:none}}@media(prefers-reduced-motion:reduce){.cover-device,.cover-device:after,.cover-placeholder--terminal i{animation:none}.cover-device{transform:translateY(-50%) rotate(var(--tilt))}}.cover-screen:has(.deploy-ui){container-type:inline-size}.deploy-ui{flex:1;display:flex;flex-direction:column;justify-content:space-between;gap:4cqi;padding:5cqi 5.5cqi;background:linear-gradient(rgba(32,34,56,.06) 1px,transparent 1px) 0 0 / 6cqi 6cqi,linear-gradient(90deg,rgba(32,34,56,.06) 1px,transparent 1px) 0 0 / 6cqi 6cqi,var(--cream);color:var(--midnight);font-family:Manrope,sans-serif}.deploy-top{display:flex;align-items:center;justify-content:space-between}.deploy-top b{padding:.6cqi 2cqi;border:2px solid var(--midnight);border-radius:1.4cqi;background:var(--midnight);color:var(--butter);font:600 2.6cqi/1.3 ui-monospace,SFMono-Regular,Menlo,monospace}.deploy-top em{padding:.6cqi 2cqi;border:2px solid var(--midnight);border-radius:999px;background:#7ed3a1;font-size:2.6cqi;font-style:normal;font-weight:800;line-height:1.3;animation:deploy-pulse 1.6s ease-in-out infinite}.deploy-flow{display:flex;align-items:center;gap:1.5cqi}.deploy-node{flex:1;display:flex;flex-direction:column;align-items:center;gap:.4cqi;padding:2.4cqi 1cqi;border:2px solid var(--midnight);border-radius:2.4cqi;background:var(--powder);box-shadow:.8cqi .8cqi 0 var(--midnight);text-align:center;transform:rotate(-2deg)}.deploy-node:nth-child(3){background:var(--butter);transform:rotate(1.5deg)}.deploy-node.is-live{position:relative;background:var(--pink);transform:rotate(-1deg)}.deploy-node.is-live:after{content:"✓";position:absolute;top:-2.4cqi;right:-1.6cqi;width:5cqi;aspect-ratio:1;display:grid;place-items:center;border:2px solid var(--midnight);border-radius:50%;background:#7ed3a1;font-size:2.8cqi;font-weight:800}.deploy-node i{font-size:5.5cqi;font-style:normal;line-height:1}.deploy-node b{font:700 3cqi/1.1 Bricolage Grotesque,sans-serif}.deploy-node small{color:#3d4766;font-size:2cqi;font-weight:600;line-height:1.2}.deploy-arrow{flex:0 0 5cqi;height:0;border-top:.6cqi dashed var(--midnight);animation:deploy-dash .8s linear infinite}.deploy-progress{height:2.6cqi;border:2px solid var(--midnight);border-radius:999px;background:#fff;overflow:hidden}.deploy-progress i{display:block;height:100%;background:repeating-linear-gradient(-45deg,var(--cobalt) 0 1.4cqi,#5576ec 1.4cqi 2.8cqi);animation:deploy-load 3.2s ease-in-out infinite}.deploy-checks{display:flex;justify-content:space-between;gap:1.5cqi}.deploy-checks span{flex:1;padding:.9cqi 0;border:2px solid var(--midnight);border-radius:999px;background:#fff;font-size:2.3cqi;font-weight:700;line-height:1.3;text-align:center}@keyframes deploy-pulse{50%{box-shadow:0 0 0 1.2cqi #7ed3a159}}@keyframes deploy-dash{to{background-position:0 0;transform:translate(.8cqi)}}@keyframes deploy-load{0%{width:8%}70%,to{width:100%}}@container (max-width: 260px){.deploy-ui{gap:3cqi;padding:4cqi}.deploy-node small,.deploy-checks{display:none}.deploy-node b{font-size:4.4cqi}.deploy-node i{font-size:8cqi}.deploy-top b,.deploy-top em{font-size:4.4cqi;border-width:1.5px}.deploy-node,.deploy-progress{border-width:1.5px}}@media(prefers-reduced-motion:reduce){.deploy-top em,.deploy-arrow,.deploy-progress i{animation:none}.deploy-progress i{width:100%}}.cover-screen:has(.chat-ui){container-type:inline-size}.chat-ui{flex:1;display:flex;flex-direction:column;padding:16cqi 6cqi 8cqi;background:radial-gradient(circle,rgba(49,85,217,.12) 1.2cqi,transparent 1.4cqi) 0 0 / 12cqi 12cqi,color-mix(in srgb,var(--powder) 30%,#fff);color:var(--midnight);font-family:Manrope,sans-serif}.chat-head{display:flex;align-items:center;gap:3cqi;padding-bottom:5cqi;border-bottom:2px dashed rgba(32,34,56,.25)}.chat-head i{width:15cqi;aspect-ratio:1;display:grid;place-items:center;border:2px solid var(--midnight);border-radius:50%;background:var(--butter);font-size:8.5cqi;font-style:normal;animation:chat-bob 2.4s ease-in-out infinite}.chat-head b{flex:1;font:700 6.5cqi/1 Bricolage Grotesque,sans-serif}.chat-head em{color:#2f9e62;font-size:5cqi;font-style:normal;font-weight:700}.chat-head em:before{content:"● ";animation:chat-blink 1.6s ease-in-out infinite}.chat-log{flex:1;display:flex;flex-direction:column;justify-content:flex-end;gap:4.5cqi}.chat-bubble{align-self:flex-start;max-width:82%;padding:3.5cqi 5cqi;border:2px solid var(--midnight);border-radius:7cqi 7cqi 7cqi 2cqi;background:#fff;box-shadow:1.2cqi 1.2cqi 0 var(--midnight);font-size:5.6cqi;font-weight:700;line-height:1.25;transform-origin:bottom left;animation:chat-pop 9s var(--ease-spring, cubic-bezier(.34, 1.56, .64, 1)) infinite both}.chat-bubble.is-me{align-self:flex-end;border-radius:7cqi 7cqi 2cqi;background:var(--pink);transform-origin:bottom right}.chat-bubble:nth-child(2){background:var(--butter);animation-delay:1.3s}.chat-bubble:nth-child(3){animation-delay:2.6s}.chat-bubble:nth-child(4){animation-delay:3.9s}.chat-typing{display:flex;gap:2cqi;padding:4.5cqi 5.5cqi}.chat-typing i{width:3cqi;aspect-ratio:1;border-radius:50%;background:var(--midnight);animation:chat-dot 1s ease-in-out infinite}.chat-typing i:nth-child(2){animation-delay:.15s}.chat-typing i:nth-child(3){animation-delay:.3s}.cover-phone:before{content:"✨";position:absolute;top:6%;left:-38%;font-size:clamp(1.3rem,2.6vw,2.4rem);animation:chat-twinkle 2.2s ease-in-out infinite}@keyframes chat-pop{0%{opacity:0;transform:scale(.3) translateY(6px)}6%{opacity:1;transform:scale(1)}80%{opacity:1;transform:scale(1)}86%,to{opacity:0;transform:scale(.85) translateY(-4px)}}@keyframes chat-dot{0%,60%,to{transform:translateY(0);opacity:.45}30%{transform:translateY(-1.6cqi);opacity:1}}@keyframes chat-bob{50%{transform:translateY(-1cqi) rotate(-8deg)}}@keyframes chat-blink{50%{opacity:.3}}@keyframes chat-twinkle{0%,to{transform:scale(1) rotate(0);opacity:1}50%{transform:scale(.7) rotate(20deg);opacity:.6}}@container (max-width: 120px){.chat-bubble:not(.chat-typing){min-width:50%;height:9cqi;color:transparent;overflow:hidden}.chat-head b,.chat-head em{font-size:7cqi}.chat-head em{display:none}.chat-bubble,.chat-head i{border-width:1.5px}}@media(prefers-reduced-motion:reduce){.chat-bubble,.chat-typing i,.chat-head i,.chat-head em:before,.cover-phone:before{animation:none}}.case-study[data-project=clictech] .case-gallery,.case-study[data-project=corporate] .case-gallery,.case-study[data-project=pandai] .case-gallery{align-items:stretch}.case-study[data-project=clictech] .gallery-card:has(.has-image),.case-study[data-project=corporate] .gallery-card:has(.has-image),.case-study[data-project=pandai] .gallery-card:has(.has-image){min-height:0;justify-content:flex-start;gap:1.5rem}.case-study[data-project=clictech] .gallery-art.has-image,.case-study[data-project=corporate] .gallery-art.has-image,.case-study[data-project=pandai] .gallery-art.has-image{flex:none;margin-block:auto}.case-study[data-project=clictech] .gallery-art.has-image img,.case-study[data-project=corporate] .gallery-art.has-image img,.case-study[data-project=pandai] .gallery-art.has-image img{position:static;display:block;height:auto}
