:root{--bg:#000;--fg:#fff;--hair:rgba(255,255,255,0.2);--dim:rgba(255,255,255,0.44);--warm:#312b2c;--out:cubic-bezier(0.23,1,0.32,1);--in:cubic-bezier(0.755,0.05,0.855,0.06);--io:cubic-bezier(0.86,0,0.07,1);--d1:0.6s;--d2:0.8s;--d3:1.2s;--font:var(--font-montserrat),-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;--max:1240px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font);overflow-x:hidden}::selection{background:var(--fg);color:var(--bg)}:focus-visible{outline:1px solid var(--fg);outline-offset:4px}a{color:inherit}.shell,.wrap{max-width:var(--max);margin:0 auto;padding:0 40px}.case-label,.eyebrow,.filter-label,.lbl,.post-date,.skill-category,.work-disc,.work-idx,.work-status{font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}.js-motion [data-reveal]{-webkit-clip-path:inset(105% 0 0 0);clip-path:inset(105% 0 0 0);transform:translateY(28px)}.js-motion [data-reveal].is-in{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);transform:none;transition:transform var(--d3) var(--out),-webkit-clip-path var(--d3) var(--io);transition:clip-path var(--d3) var(--io),transform var(--d3) var(--out);transition:clip-path var(--d3) var(--io),transform var(--d3) var(--out),-webkit-clip-path var(--d3) var(--io);transition-delay:var(--d,0s)}.js-motion [data-wipe]{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}.js-motion [data-wipe].is-in{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);transition:-webkit-clip-path var(--d3) var(--io);transition:clip-path var(--d3) var(--io);transition:clip-path var(--d3) var(--io),-webkit-clip-path var(--d3) var(--io);transition-delay:var(--d,0s)}.line{overflow:hidden}.line,.line>span{display:block}.scroll-progress{position:fixed;top:0;left:0;right:0;height:1px;z-index:90;background:var(--fg);transform:scaleX(var(--progress,0));transform-origin:0 50%;pointer-events:none}.cursor-dot{display:none}.nav{position:fixed;inset:0 0 auto;z-index:80;mix-blend-mode:difference}.nav-inner{max-width:var(--max);margin:0 auto;padding:0 40px;height:88px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-size:13px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#fff;text-decoration:none;white-space:nowrap}.brand-role{display:none}.nav-links{display:flex;gap:34px;list-style:none}.nav-links a{font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:#fff;text-decoration:none;position:relative}.nav-links a:after{content:"";position:absolute;left:0;bottom:-5px;width:100%;height:1px;background:#fff;transform:scaleX(0);transform-origin:right;transition:transform var(--d1) var(--io)}.nav-links a:hover:after,.nav-links a[aria-current=page]:after{transform:scaleX(1);transform-origin:left}.nav-right{display:flex;align-items:center;gap:18px}.nav .btn,.nav-toggle{display:none}.nav-toggle{align-items:center;justify-content:center;width:34px;height:34px;background:transparent;border:none;color:#fff;cursor:pointer}.btn{display:inline-block;font-size:clamp(16px,2.3vw,26px);font-weight:500;letter-spacing:-.02em;color:var(--fg);text-decoration:none;position:relative;padding-bottom:6px}.btn:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--fg);transform-origin:right;transition:transform var(--d1) var(--io)}.btn:hover:after{transform:scaleX(0)}.btn svg{display:none}.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding:128px 0 56px}.hero-inner{max-width:var(--max);margin:0 auto;padding:0 40px;width:100%}.hero-meta{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:20px;margin-bottom:38px}.hero-position{overflow-wrap:break-word;font-size:clamp(38px,10.2vw,148px);font-weight:800;line-height:.86;letter-spacing:-.045em;text-transform:uppercase}.hero-position-turn,.thin{font-weight:300;letter-spacing:-.03em}.hero-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap;margin-top:44px;padding-top:22px;border-top:1px solid var(--hair)}.hero-foot p,.hero-support{max-width:44ch;font-size:15px;font-weight:400;line-height:1.62;color:var(--dim)}.hero-actions{display:flex;align-items:baseline;flex-wrap:wrap;gap:30px;margin-top:40px}.hero-scroll{font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);text-decoration:none;transition:color var(--d1) var(--io)}.hero-scroll:hover{color:var(--fg)}.section{padding:130px 0;border-top:1px solid var(--hair)}.section-head{margin-bottom:60px}.section-head .eyebrow{display:block;margin-bottom:26px}.display-lg{font-size:clamp(28px,4.6vw,62px);font-weight:300;line-height:1.12;letter-spacing:-.032em;max-width:19ch}.display-lg b,.display-lg strong{font-weight:700}.lede{font-size:15px;max-width:48ch}.lede,.section-sub{line-height:1.66;color:var(--dim)}.section-sub{margin-top:18px;font-size:14px;max-width:44ch}.work{padding:150px 0 130px}.work-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding-bottom:22px;border-bottom:1px solid var(--hair)}.work-head h2{font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}.work-list{list-style:none}.work-row{border-bottom:1px solid var(--hair);overflow:hidden}.work-row a{display:flex;align-items:center;gap:28px;padding:34px 0;text-decoration:none;color:#fff;position:relative;transition:color var(--d2) var(--io)}.work-fill{position:absolute;inset:0;background:#fff;z-index:-1;-webkit-clip-path:inset(0 0 100% 0);clip-path:inset(0 0 100% 0);transition:-webkit-clip-path var(--d2) var(--io);transition:clip-path var(--d2) var(--io);transition:clip-path var(--d2) var(--io),-webkit-clip-path var(--d2) var(--io)}.work-row:hover .work-fill{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}.work-row:hover a{color:#000}.work-row:hover .work-disc,.work-row:hover .work-idx,.work-row:hover .work-status{color:rgba(0,0,0,.5)}.work-idx{width:34px;flex:none}.work-name{font-size:clamp(30px,5.4vw,76px);font-weight:700;letter-spacing:-.042em;text-transform:uppercase;line-height:.98;flex:1 1;min-width:0;transition:transform var(--d2) var(--io)}.work-row:hover .work-name{transform:translateX(28px)}.work-disc,.work-status{flex:none}.also-built{margin-top:40px;font-size:14px;line-height:1.66;color:var(--dim);max-width:72ch}#peek{position:fixed;top:0;left:0;z-index:60;pointer-events:none;width:300px;height:380px;overflow:hidden;-webkit-clip-path:inset(0 0 100% 0);clip-path:inset(0 0 100% 0);transition:-webkit-clip-path var(--d2) var(--io);transition:clip-path var(--d2) var(--io);transition:clip-path var(--d2) var(--io),-webkit-clip-path var(--d2) var(--io);will-change:transform,clip-path}#peek.on{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}.peek-frame{position:absolute;inset:0;display:none;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:8px;padding:22px;background:var(--warm)}.peek-frame.on{display:flex}.peek-frame b{font-size:10.5px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.7)}.peek-frame i{font-style:normal;font-size:13px;line-height:1.5;color:rgba(255,255,255,.4)}.decomposer{border-top:1px solid var(--hair)}.decomposer-terms{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--hair)}.decomposer-term{position:relative;flex:1 0 auto;padding:18px 24px;font-family:var(--font);font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);background:transparent;border:none;border-right:1px solid var(--hair);cursor:pointer;overflow:hidden;transition:color var(--d1) var(--io)}.decomposer-term:last-child{border-right:none}.decomposer-term:before{content:"";position:absolute;inset:0;background:#fff;z-index:-1;-webkit-clip-path:inset(0 0 100% 0);clip-path:inset(0 0 100% 0);transition:-webkit-clip-path var(--d2) var(--io);transition:clip-path var(--d2) var(--io);transition:clip-path var(--d2) var(--io),-webkit-clip-path var(--d2) var(--io)}.decomposer-term:hover{color:var(--fg)}.decomposer-term.is-active{color:#000}.decomposer-term.is-active:before{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}.decomposer-out{padding:64px 0 20px;display:flex;flex-direction:column;gap:22px;min-height:260px}.decomposer-plain{font-size:clamp(28px,4.6vw,62px);font-weight:300;line-height:1.12;letter-spacing:-.032em;max-width:19ch;animation:wipe-up var(--d3) var(--io) both}.decomposer-long{font-size:14px;line-height:1.66;color:var(--dim);max-width:48ch;animation:wipe-up var(--d3) var(--io) 80ms both}@keyframes wipe-up{0%{-webkit-clip-path:inset(105% 0 0 0);clip-path:inset(105% 0 0 0);transform:translateY(28px)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);transform:none}}.filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:44px;gap:44px;margin-top:74px}.filter-col ul{list-style:none;display:flex;flex-direction:column;gap:12px;margin-top:16px}.filter-col li{font-size:14px;line-height:1.66;color:var(--fg)}.filter-col-no li{color:var(--dim)}.filter-label{display:block}.filter-more{margin-top:54px}.filter-more a{font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);text-decoration:none;transition:color var(--d1) var(--io)}.filter-more a:hover{color:var(--fg)}.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));grid-gap:44px;gap:44px;margin-top:74px}.cols h3{font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-bottom:12px}.cols p{font-size:14px;line-height:1.66;color:var(--dim)}.learnings-list{border-top:1px solid var(--hair)}.learning-card{display:block;position:relative;padding:30px 0;border-bottom:1px solid var(--hair);text-decoration:none;overflow:hidden;transform:translateX(0);transition:transform var(--d2) var(--io)}.learning-card:hover{transform:translateX(28px)}.learning-card h2,.learning-card h3{font-size:clamp(20px,2.4vw,30px);font-weight:700;letter-spacing:-.032em;text-transform:uppercase;line-height:1.06;margin-bottom:12px}.learning-card p{font-size:14px;line-height:1.66;color:var(--dim);max-width:54ch}.learning-link{display:inline-block;margin-top:16px;font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);transition:color var(--d1) var(--io)}.learning-card:hover .learning-link{color:var(--fg)}.post-date{display:block;margin-bottom:12px}.contact{padding:130px 0 44px;border-top:1px solid var(--hair)}.contact .eyebrow{display:block}.contact h2{font-size:clamp(38px,8.8vw,126px);font-weight:800;letter-spacing:-.045em;text-transform:uppercase;line-height:.88;margin:26px 0 46px}.cta-text{max-width:44ch;margin:-26px 0 40px;font-size:15px;line-height:1.62;color:var(--dim)}.cta-note{margin-top:26px;font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}.footer{padding:0 0 44px}.footer-inner{max-width:var(--max);margin:0 auto;padding:20px 40px 0;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-top:1px solid var(--hair)}.footer-brand,.footer-note{font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}.footer-note{margin-top:8px;letter-spacing:.14em}.footer-links{display:flex;gap:20px;list-style:none;align-items:flex-start}.footer-links a{font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);text-decoration:none;transition:color var(--d1) var(--io)}.footer-links a:hover{color:var(--fg)}.page{max-width:var(--max);margin:0 auto;padding:176px 40px 120px}.page .eyebrow{display:block;margin-bottom:26px}.page h1{font-size:clamp(40px,8vw,116px);font-weight:800;letter-spacing:-.045em;text-transform:uppercase;line-height:.9}.page-lede{margin-top:30px}.page-work{margin-top:56px;border-top:1px solid var(--hair)}.prose{margin-top:34px;display:flex;flex-direction:column;gap:20px;max-width:56ch}.prose p{font-size:15px;line-height:1.72;color:var(--dim)}.case-back{margin-bottom:34px}.case-back a{font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);text-decoration:none;transition:color var(--d1) var(--io)}.case-back a:hover{color:var(--fg)}.case-head{padding-bottom:44px;border-bottom:1px solid var(--hair)}.case-head h1{margin:24px 0 22px}.case-block{padding:44px 0;border-bottom:1px solid var(--hair);max-width:62ch}.case-block:last-of-type{border-bottom:none}.case-label{display:block;margin-bottom:20px;font-weight:500}.case-block p{font-size:15px;line-height:1.72;color:var(--dim)}.case-idea-line{font-size:clamp(26px,4vw,52px)!important;font-weight:300;line-height:1.12;letter-spacing:-.032em;color:var(--fg)!important;max-width:19ch}.case-decisions{list-style:none;counter-reset:decision;display:flex;flex-direction:column;gap:20px}.case-decisions li{counter-increment:decision;position:relative;padding-left:40px;font-size:15px;line-height:1.72;color:var(--dim)}.case-decisions li:before{content:counter(decision,decimal-leading-zero);position:absolute;left:0;top:4px;font-size:10.5px;font-weight:500;letter-spacing:.2em;color:var(--dim)}.case-status{font-size:13px!important;font-weight:500;letter-spacing:.06em;color:var(--fg)!important}.case-status a{text-decoration:underline;text-underline-offset:4px}.case-status svg{display:none}.case-why{margin-top:18px;color:var(--dim)!important}.case-label-inline{font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}.case-foot{margin-top:80px;padding-top:44px;border-top:1px solid var(--hair);display:grid;grid-template-columns:1fr 1fr;grid-gap:44px;gap:44px;align-items:start}.case-next{text-decoration:none;display:flex;flex-direction:column;gap:12px}.case-next-name{font-size:clamp(24px,3.2vw,40px);font-weight:700;letter-spacing:-.042em;text-transform:uppercase;line-height:1;display:inline-block;transition:transform var(--d2) var(--io)}.case-next:hover .case-next-name{transform:translateX(20px)}.case-next-name svg{display:none}.case-next-line{line-height:1.6;max-width:32ch}.case-cta p,.case-next-line{font-size:14px;color:var(--dim)}.case-cta p{line-height:1.66;max-width:36ch;margin-bottom:26px}.post-head{padding-bottom:30px}.post-collapse{position:relative;padding:34px 0 34px 30px;margin-bottom:52px;border-left:1px solid var(--hair);font-size:clamp(22px,3.4vw,42px);font-weight:300;line-height:1.14;letter-spacing:-.032em;max-width:22ch}.post-collapse-label{display:block;font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-bottom:16px}.post-body{display:flex;flex-direction:column;gap:24px;max-width:62ch}.post-body p{font-size:16px;line-height:1.76;color:var(--dim)}.post-body p:first-child{font-size:19px;line-height:1.62;color:var(--fg)}.about-filter{margin-top:60px}.about-stack{margin-top:74px;padding-top:40px;border-top:1px solid var(--hair)}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:44px;gap:44px;margin-top:30px}.skill-group{gap:14px}.skill-group,.skill-list{display:flex;flex-direction:column}.skill-list{list-style:none;gap:8px}.skill-chip{font-size:14px;color:var(--fg)}.about-cta{margin-top:74px;padding-top:40px;border-top:1px solid var(--hair)}.about-cta p{font-size:15px;line-height:1.66;color:var(--dim);max-width:40ch;margin-bottom:30px}@media (max-width:760px){.footer-inner,.hero-inner,.nav-inner,.shell,.wrap{padding-left:22px;padding-right:22px}.hero{min-height:88svh}.page{padding:140px 22px 100px}.nav-links{display:none}.nav-links.open{display:flex;position:absolute;top:88px;left:0;right:0;flex-direction:column;align-items:flex-start;gap:20px;padding:26px 22px;background:var(--bg);border-bottom:1px solid var(--hair)}.nav-toggle{display:inline-flex}.work-row a{padding:24px 0;gap:16px;flex-wrap:wrap}.work-row:hover .work-name{transform:none}.case-foot{grid-template-columns:1fr;gap:40px}#peek{display:none}}@media (prefers-reduced-motion:reduce){*,:after,:before{transition-duration:.01ms!important;animation-duration:.01ms!important}[data-reveal],[data-wipe]{-webkit-clip-path:inset(0)!important;clip-path:inset(0)!important;transform:none!important}#peek,.scroll-progress{display:none}}