@font-face{font-family:Public Sans;src:url('assets/public-sans.ttf') format('truetype');font-display:swap;font-weight:400}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;font-family:'Public Sans',Arial,sans-serif;background:#101112;color:#f2f2ef;font-weight:400}::selection{background:#c1d1df;color:#101112}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:2px solid #789bb9;outline-offset:7px}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.4;flex-shrink:0}header{height:102px;margin:0 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #393b3e}.wordmark{font-size:23px;letter-spacing:-.03em}.wordmark span{display:block;font-size:12px;letter-spacing:0;color:#b8babe;margin-top:5px}nav{display:flex;gap:34px;align-items:center;font-size:14px}.contact{background:#f2f2ef;color:#101112;padding:13px 20px;display:flex;gap:40px;align-items:center}.hero{padding:0 40px;min-height:calc(100svh - 102px);display:flex;flex-direction:column}.hero-main{flex:1;display:flex;flex-direction:column;justify-content:center;padding:70px 0 64px;max-width:1450px;width:100%;margin:auto}h1{font-size:clamp(52px,7.4vw,96px);line-height:1.04;letter-spacing:-.04em;font-weight:400;margin:0}.line{display:block}em{font-style:normal;color:#aab4bc}.hero-note{align-self:flex-end;width:36%;margin-top:42px;font-size:13px;color:#a7abb0}.typed{font-size:18px;color:#eeefef;min-height:48px;line-height:1.5;margin:13px 0 0}.typing:after{content:'';display:inline-block;width:1px;height:1em;background:currentColor;margin-left:4px;vertical-align:-2px}.hero-bottom{border-top:1px solid #393b3e;padding:23px 0;display:flex;justify-content:space-between;font-size:13px}.hero-bottom a{display:flex;gap:30px;align-items:center}#replay{background:none;border:0;text-decoration:underline;text-underline-offset:5px;color:#bfc2c6}section.work{background:#eeefed;color:#191b1d;padding:70px 40px 100px}.section-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:50px}.section-top h2{font-size:23px;font-weight:400;letter-spacing:-.02em}.section-top>span{font-size:13px;color:#53595e}.project{border-top:1px solid #aeb3b5;display:grid;grid-template-columns:1.1fr 1fr;gap:60px;padding:35px 0 48px;transition:color .25s}.project:last-child{border-bottom:1px solid #aeb3b5}.category{font-size:13px;color:#555b5f}.project h3{font-size:clamp(35px,4vw,56px);font-weight:400;letter-spacing:-.035em;line-height:1.1;margin:22px 0 5px}.project-detail{display:flex;flex-direction:column;justify-content:space-between;gap:40px}.project p{font-size:19px;line-height:1.6;max-width:48ch;margin:0}.project-foot{display:flex;justify-content:space-between;gap:20px;font-size:12px;color:#53595e}.action{display:flex;gap:15px;align-items:center;color:#191b1d}.project:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px}.approach{padding:110px 40px;display:grid;grid-template-columns:1.1fr 1fr;gap:60px}.approach h2,.about h2{font-size:clamp(36px,4.3vw,60px);line-height:1.12;font-weight:400;letter-spacing:-.035em;margin:0}.intro{font-size:23px;line-height:1.5;margin:0 0 64px}dl{margin:0}dl>div{border-top:1px solid #44484b;padding:24px 0;display:grid;grid-template-columns:145px 1fr;gap:20px}dt{font-size:15px}dd{margin:0;font-size:16px;line-height:1.6;color:#b9bdc2}.about{padding:85px 40px 100px;background:#dddeda;color:#1a1d20;display:grid;grid-template-columns:1.1fr 1fr;gap:60px}.about p{font-size:19px;line-height:1.6;margin:0 0 24px}.text-link{display:inline-flex;gap:40px;align-items:center;border-bottom:1px solid;padding-bottom:8px;margin-top:15px}footer{padding:100px 40px 25px}footer h2{font-size:clamp(60px,7.3vw,96px);line-height:1.05;letter-spacing:-.04em;font-weight:400;margin:0 0 60px}.footer-links{display:flex;gap:50px}.footer-links a{display:flex;gap:40px;align-items:center;border-bottom:1px solid #62666b;padding-bottom:12px}.colophon{margin-top:90px;border-top:1px solid #393b3e;padding-top:24px;display:flex;justify-content:space-between;gap:24px;color:#b4b8bd;font-size:12px}.colophon a{text-decoration:underline;text-underline-offset:4px}.skip{position:absolute;left:20px;top:-100px;background:white;color:black;padding:14px;z-index:10}.skip:focus{top:10px}.reveal.enter{animation:fade-rise .85s cubic-bezier(.22,1,.36,1) both}@keyframes fade-rise{from{opacity:0;transform:translateY(18px);filter:blur(3px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@media(max-width:650px){header{margin:0 20px;height:90px}.wordmark{font-size:20px}nav{gap:18px}nav .contact{display:none}.hero{padding:0 20px;min-height:calc(90svh - 90px)}.hero-main{padding:75px 0 45px}h1{font-size:clamp(43px,10vw,65px);letter-spacing:-.04em}.hero-note{width:100%;margin-top:50px}.hero-bottom{font-size:12px;gap:20px}.hero-bottom a{gap:12px}.work,.approach,.about{padding:60px 20px!important}.section-top{display:block;margin-bottom:35px}.section-top>span{display:block}.project,.approach,.about{grid-template-columns:1fr;gap:32px}.project{padding:30px 0 40px}.project h3{font-size:43px}.project h3 br{display:none}.project-detail{gap:25px}.project p{font-size:17px}.project-foot{flex-wrap:wrap}.intro{font-size:21px;margin-bottom:35px}dl>div{grid-template-columns:1fr;gap:12px}.about p{font-size:17px}footer{padding:65px 20px 25px}.footer-links{flex-direction:column;align-items:flex-start;gap:28px}.colophon{flex-direction:column;margin-top:60px;gap:14px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

/* AIP reference: sticky indexed heading, independently scrolling media column. */
section.work{padding:70px 4.7vw 100px;background:#efefef;color:#20212c}
.project{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:0;margin-bottom:56px;border:0;min-height:0;scroll-margin-top:30px}
.project:last-child{border:0;margin-bottom:0}
.project-sticky{position:sticky;top:0;padding-top:64px;padding-bottom:24px}
.project-index{display:flex;gap:0;justify-content:initial;align-items:center;margin-bottom:42px;font-size:18px;color:#64646c}
.project-index a{display:flex;align-items:center;gap:9px;white-space:nowrap}
.project-index a:not(:last-child):after{content:'';display:block;width:24px;height:1px;background:#65666e;margin-right:9px}
.project-index a[aria-current]{flex:1;color:#20212c}
.project-index a[aria-current]:after{flex:1;width:auto;min-width:24px}
.project h3{font-size:clamp(42px,5.625vw,80px);line-height:1.08;letter-spacing:-.035em;margin:0 0 30px;font-weight:400;overflow-wrap:normal}
.project:hover h3{text-decoration:none}
.project-content{padding-top:64px;padding-bottom:24px;min-width:0}
.project p.project-summary{font-size:24px;line-height:1.45;margin:0 0 70px;max-width:none}
.media-tabs{display:inline-flex;border:1px solid #a3a3aa;border-radius:24px;padding:3px;margin-bottom:70px;gap:0}
.media-tabs button{border:0;background:none;color:#20212c;border-radius:22px;padding:10px 24px;text-transform:uppercase;font-size:13px}
.media-tabs button[aria-selected=true]{background:#20212c;color:white}
.project-media{position:relative;overflow:hidden;border:1px solid #45464b;border-radius:12px;background:#e3e6e9;isolation:isolate}
.project-media video{display:block;width:100%;aspect-ratio:16/9;object-fit:contain;background:#e3e6e9}
.video-wipe{position:absolute;inset:-1px -20%;background:#20212c;pointer-events:none;transform:translateX(-110%) skewX(15deg);z-index:2}
.project-media.is-pending .video-wipe{transform:translateX(0) skewX(15deg)}
.project-media.is-revealing .video-wipe{animation:video-wipe 1100ms cubic-bezier(.22,1,.36,1) both}
@keyframes video-wipe{from{transform:translateX(0) skewX(15deg)}to{transform:translateX(-110%) skewX(15deg)}}
.project-details{padding:30px;min-height:310px;background:#e9eaec}.project-details h4{font-size:22px;font-weight:400;margin:0 0 22px}.project .project-details p{font-size:17px;margin-bottom:22px}.project-details[hidden],[role=tabpanel][hidden],.video-error[hidden]{display:none}
.project-case-link{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #a3a3aa;padding:20px 0 12px;margin-top:14px;font-size:14px}
.project-case-link:hover{text-decoration:underline;text-underline-offset:5px}.project .video-error{padding:20px;font-size:16px}
@media(max-width:800px){.project{gap:28px;grid-template-columns:1fr;min-height:0;margin-bottom:48px}.project-sticky{position:static;padding-top:20px;padding-bottom:0}.project-index{max-width:420px;margin-bottom:28px}.project h3{font-size:clamp(42px,8vw,64px)}.project-content{padding-top:0;padding-bottom:0}.project p.project-summary{font-size:20px;margin-bottom:32px}.media-tabs{margin-bottom:30px}.project-details{padding:24px}}
@media(prefers-reduced-motion:reduce){.project-sticky{position:static}.project-media .video-wipe{display:none}}

/* Video-led project proportions. */
@media(min-width:801px){.project{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}.project h3{font-size:clamp(38px,4.5vw,64px)}}
.project p.project-summary{margin-bottom:40px}
.specialties{display:grid;color:#a59be5;margin-top:.12em}
.specialty{grid-area:1/1;line-height:1.12}
.specialties.static-specialties{gap:12px}
.specialties.static-specialties .specialty{grid-area:auto;font-size:.7em}
.original-scroll.is-scroll-active{height:280svh}
.original-scroll.is-scroll-active .hero{position:sticky;top:0;height:calc(100svh - 102px);min-height:560px}
@media(prefers-reduced-motion:reduce){.original-scroll.is-scroll-active{height:auto}.original-scroll.is-scroll-active .hero{position:static;height:auto}}

/* Original page: floating glass navigation remains above the pinned hero. */
.original>header{position:sticky;top:12px;z-index:20;margin:12px;height:66px;padding:0 24px;border:1px solid rgba(255,255,255,.13);border-radius:24px;background:rgba(28,29,31,.78);-webkit-backdrop-filter:blur(20px) saturate(140%);backdrop-filter:blur(20px) saturate(140%);color:#f2f2ef}
.original .original-scroll.is-scroll-active .hero{top:90px;height:calc(100svh - 90px);min-height:560px}
.original .project-sticky{top:90px}
.original{scroll-padding-top:100px}
@media(max-width:650px){.original>header{padding:0 16px}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.original>header{background:#202124}}

.specialty,.purple-phrase{transition:opacity 650ms ease,transform 650ms cubic-bezier(.22,1,.36,1)}
.original>header .contact{border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.07);color:#f2f2ef;border-radius:16px;padding:10px 17px;gap:22px;transition:background 200ms,border-color 200ms}
.original>header .contact:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.4)}

.specialty,.purple-phrase{transition:none!important}

/* Keep the typing caret at the revealed character without shifting the text. */
.typing-character{position:relative}
.typing-character::after{content:'';position:absolute;left:calc(100% + 4px);top:.08em;width:1px;height:1em;background:currentColor;pointer-events:none}
@media(prefers-reduced-motion:reduce){.typing-character::after{display:none}}

.project-media video{aspect-ratio:auto;height:auto;object-fit:cover;background:transparent}
.intro-cover{position:fixed;inset:0;width:100%;height:100%;z-index:10000;pointer-events:all;stroke:none}

/* Hide stacked rotating phrases before the first animation is initialized. */
.specialty,.purple-phrase{opacity:0}
@media(prefers-reduced-motion:reduce){.specialties.static-specialties .specialty,.stage-highlight.show-all .purple-phrase{opacity:1}}

.typing-character::after{animation:typing-caret-blink 900ms step-end infinite}
@keyframes typing-caret-blink{0%,55%{opacity:1}56%,100%{opacity:0}}

/* Fine vector mesh: subdued at rest, illuminated by pointer ripples. */
.hero,.scroll-hero{position:relative;isolation:isolate}
.hero-mesh{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;mask-image:linear-gradient(to bottom,transparent,#000 16%,#000 80%,transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 16%,#000 80%,transparent)}
