:root{--bg:#f2f2f2;--fg:#0d0d0d;--muted:#6b6a66;--line:#e4e3df;--rail-bg:#dbdbdb;--rail-muted:#5f5e5a;--rail-highlight:#bcbbb8;--panel-bg:var(--rail-bg);--panel-fg:var(--fg);--panel-muted:var(--rail-muted);--panel-line:#0d0d0d24;--placeholder:#ececea;--placeholder-fg:#5f5e5a;--placeholder-dark:#2b2b2b;--placeholder-dark-fg:#b3b2ad;--draft:#9a5a00;--font:"urbane", "Helvetica Neue", Arial, sans-serif;--w-thin:200;--w-light:300;--w-medium:500;--w-semi:600;--w-bold:700;--t-mega:clamp(4rem, 15vw, 16rem);--t-display:clamp(3.25rem, 9vw, 9.5rem);--t-h1:clamp(2.25rem, 5vw, 5rem);--t-h2:clamp(1.75rem, 3vw, 3rem);--t-lead:clamp(1.25rem, 1.8vw, 1.75rem);--t-body:1.0625rem;--t-small:.875rem;--t-label:.75rem;--tracking-display:-.05em;--tracking-head:-.035em;--tracking-label:.1em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--space-section:clamp(96px, 12vw, 200px);--gutter:clamp(16px, calc(9vw - 53px), 72px);--rail-w:104px;--tab-r:10px;--bar-h:60px;--panel-w:min(760px, 72vw);--index-w:44px;--measure:58ch;--tap:44px;--border:1px solid var(--line);--strip-h:min(56vh, 680px);--dur-1:.15s;--dur-2:.3s;--dur-3:.56s;--dur-4:.9s;--ease-out:cubic-bezier(.2, .7, .2, 1);--ease-in-out:cubic-bezier(.7, 0, .25, 1);--z-scrim:10;--z-panel:20;--z-rail:30}
*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}html,.nav-panel{scrollbar-width:none}html::-webkit-scrollbar{display:none}.nav-panel::-webkit-scrollbar{display:none}.scrollbar{z-index:calc(var(--z-rail) + 2);pointer-events:none;width:28px;transition:opacity var(--dur-2) var(--ease-out);position:fixed;top:6px;bottom:6px;right:6px}.scrollbar.is-hidden,body.nav-locked .scrollbar{opacity:0}.scrollbar-thumb{--swell:0;touch-action:none}.scrollbar:not(.is-hidden) .scrollbar-thumb path{pointer-events:auto}body.nav-locked .scrollbar-thumb path{pointer-events:none}.scrollbar-thumb svg{width:100%;height:100%;display:block;overflow:visible}.scrollbar-thumb path{fill:rgb(13 13 13/calc(.32 + .2 * var(--swell)))}html,body{background:var(--bg);color:var(--fg);font-family:var(--font);font-weight:var(--w-light);font-size:var(--t-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}body.nav-locked{overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}strong{font-weight:var(--w-semi)}:focus-visible{outline-offset:4px;outline:2px solid}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.dev-note{margin:0 0 var(--space-6);font-size:var(--t-small);font-weight:var(--w-medium);color:var(--draft)}.specimen-note{margin:0;padding-bottom:0}
.rail,.rail-ghost{width:var(--rail-w);z-index:var(--z-rail);padding:var(--space-6) 0;background:var(--rail-bg);flex-direction:column;justify-content:space-between;align-items:center;display:flex;position:fixed;inset:0 auto 0 0}.rail-brand{writing-mode:sideways-lr;font-weight:var(--w-bold);letter-spacing:-.03em;transition:opacity var(--dur-2) var(--ease-out);font-size:1.5rem;line-height:1}.rail-brand:hover{opacity:.6}.rail-links{flex-direction:column;align-self:stretch;display:flex;position:relative}.rail-link{isolation:isolate;min-height:var(--tap);font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--rail-muted);transition:color var(--dur-2) var(--ease-out);padding-right:var(--rail-tab-gap);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.rail-links{--rail-tab-gap:var(--space-3)}.rail-link:before{content:"";inset:0 var(--rail-tab-gap) 0 0;z-index:-1;border-radius:0 var(--tab-r) var(--tab-r) 0;background:var(--rail-highlight);transition:transform var(--dur-3) var(--ease-out), border-radius var(--dur-2) var(--ease-out);position:absolute;transform:translate(-100%)}.rail-link:hover:before,.rail-link:focus-visible:before,.rail-link[aria-current=page]:before{transform:none}.rail-links:has(a:hover,a:focus-visible) .rail-link[aria-current=page]:not(:hover,:focus-visible):before{transform:translate(-100%)}.rail-link:hover,.rail-link:focus-visible,.rail-link[aria-current=page],.rail-links.is-open .rail-link--gallery{color:var(--fg)}.rail-link:focus-visible{outline-offset:-2px}.rail-links{isolation:isolate}.rail:has(.rail-links.is-open){z-index:calc(var(--z-rail) + 2)}.rail-links.is-ready .rail-link:before{content:none}.rail-fly{z-index:-1;pointer-events:none;filter:drop-shadow(0 8px 20px #0000);transition:filter var(--dur-3) var(--ease-out);position:absolute;top:0;left:0}.rail-links.is-open .rail-fly{filter:drop-shadow(0 8px 20px #00000024)}.rail-shape{background:var(--rail-highlight);visibility:hidden;position:relative}.rail-links.is-ready .rail-shape{visibility:visible}.rail-flyout{top:0;left:var(--rail-w);width:max-content;padding:var(--space-2) 0;pointer-events:none;position:absolute}.rail-links.is-open .rail-flyout{pointer-events:auto}.rail-sub{transform-origin:0 0;visibility:hidden;margin:0;padding:0;list-style:none;transform:scale(.35)}.rail-links.is-open .rail-sub{transform:none}.rail-links.is-shown .rail-sub{visibility:visible}.rail-sub a{padding:7px var(--space-5) 7px var(--space-4);font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--rail-muted);transition:color var(--dur-2) var(--ease-out);line-height:1.25;display:block}.rail-sub a:hover,.rail-sub a:focus-visible{color:var(--fg)}.rail-sub a:focus-visible{outline-offset:-2px}.rail-toggle{width:var(--tap);height:var(--tap);color:var(--fg);transition:opacity var(--dur-2) var(--ease-out);place-items:center;display:grid}.rail-toggle:hover{opacity:.6}.rail-toggle--mobile-only{display:none}.rail-toggle-icon{width:24px;height:10px;position:relative}.rail-toggle-icon span{width:100%;height:2px;transition:transform var(--dur-3) var(--ease-in-out), top var(--dur-3) var(--ease-in-out);background:currentColor;position:absolute;left:0}.rail-toggle-icon span:first-child{top:0}.rail-toggle-icon span:last-child{top:8px}.rail-toggle[aria-expanded=true] .rail-toggle-icon span:first-child{top:4px;transform:rotate(45deg)}.rail-toggle[aria-expanded=true] .rail-toggle-icon span:last-child{top:4px;transform:rotate(-45deg)}.rail[data-switching],.rail[data-switching]:before,.rail[data-switching] *{transition:none!important}.rail-ghost{z-index:calc(var(--z-rail) + 1);pointer-events:none}.rail-ghost .rail-brand{writing-mode:sideways-lr;opacity:1;visibility:visible;font-size:1.5rem}.rail-ghost .rail-links{display:flex}.rail-ghost .rail-toggle--mobile-only{display:none}.bar-ghost{height:var(--bar-h);z-index:var(--z-rail);padding:0 var(--space-2) 0 var(--space-4);background:var(--rail-bg);pointer-events:none;align-items:center;display:flex;position:fixed;inset:0 0 auto}.bar-ghost .rail-brand{writing-mode:horizontal-tb;font-size:1.25rem}body.is-rail-sliding{overflow-x:clip}body.is-rail-sliding .hero--right{overflow:visible}.nav-scrim{z-index:var(--z-scrim);opacity:0;visibility:hidden;transition:opacity var(--dur-3) var(--ease-out), visibility 0s linear var(--dur-3);background:#0d0d0d4d;position:fixed;inset:0}.nav-scrim.is-open{opacity:1;visibility:visible;transition:opacity var(--dur-3) var(--ease-out)}.nav-panel{top:0;bottom:0;left:var(--rail-w);width:var(--panel-w);z-index:var(--z-panel);padding:var(--space-8);background:var(--panel-bg);color:var(--panel-fg);clip-path:inset(0 100% 0 0);visibility:hidden;transition:clip-path var(--dur-2) var(--ease-in-out), visibility 0s linear var(--dur-2);flex-direction:column;justify-content:center;display:flex;position:fixed;overflow-y:auto}.nav-panel.is-open{clip-path:inset(0);visibility:visible;transition:clip-path var(--dur-3) var(--ease-in-out)}.nav-list{margin:auto 0;padding:0;list-style:none}.nav-list li+li{border-top:1px solid var(--panel-line)}.nav-link{padding:var(--space-4) 0;grid-template-columns:56px 1fr;align-items:start;display:grid}.nav-link-num{font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);color:var(--panel-muted);padding-top:1em}.nav-link-mask{padding-bottom:.08em;display:block;overflow:hidden}.nav-link-label{font-weight:var(--w-bold);letter-spacing:var(--tracking-display);transition:transform var(--dur-2) var(--ease-in-out), color var(--dur-2) var(--ease-out);font-size:clamp(3.25rem,7.5vw,7.5rem);line-height:.95;display:block;transform:translateY(105%)}.nav-panel.is-open .nav-link-label{transition:transform var(--dur-4) var(--ease-out) calc(.16s + var(--i) * 70ms), color var(--dur-2) var(--ease-out);transform:none}.nav-list:has(.nav-link:hover,.nav-link:focus-visible) .nav-link:not(:hover):not(:focus-visible) .nav-link-label{color:#0d0d0d4d}.nav-link:focus-visible{outline-offset:-2px}.nav-link[aria-current=page] .nav-link-num:after{content:"";width:8px;height:8px;margin-top:var(--space-2);background:var(--panel-fg);border-radius:50%;display:block}.nav-panel-foot{justify-content:space-between;gap:var(--space-4) var(--space-6);margin-top:var(--space-8);padding-top:var(--space-5);border-top:1px solid var(--panel-line);font-size:var(--t-small);color:var(--panel-muted);opacity:0;transition:opacity var(--dur-2) var(--ease-out);flex-wrap:wrap;display:flex}.nav-panel.is-open .nav-panel-foot{opacity:1;transition:opacity var(--dur-3) var(--ease-out) .42s}.nav-panel-foot ul{gap:var(--space-6);margin:0;padding:0;list-style:none;display:flex}.nav-panel-foot a{min-height:var(--tap);transition:background-size var(--dur-2) var(--ease-out), color var(--dur-2);background:linear-gradient(currentColor,currentColor) 0 75%/0 1px no-repeat;align-items:center;display:inline-flex}.nav-panel-foot a:hover,.nav-panel-foot a:focus-visible{color:var(--panel-fg);background-size:100% 1px}.tl-panel{padding-top:var(--space-8);justify-content:flex-start}.tl-heading{margin:0 0 var(--space-7);font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--panel-muted)}.tl-heading:focus{outline:none}.tl-list{margin:0;padding:0;list-style:none}.tl-year{gap:var(--space-6);padding:var(--space-5) 0;border-top:1px solid var(--panel-line);opacity:0;transition:opacity var(--dur-2) var(--ease-out), transform var(--dur-2) var(--ease-out);grid-template-columns:minmax(150px,1fr) 2fr;display:grid;transform:translateY(16px)}.tl-panel.is-open .tl-year{opacity:1;transition:opacity var(--dur-3) var(--ease-out) calc(.18s + var(--i) * 60ms), transform var(--dur-4) var(--ease-out) calc(.18s + var(--i) * 60ms);transform:none}.tl-year-num{font-size:clamp(2.5rem,4.5vw,4.5rem);font-weight:var(--w-thin);letter-spacing:-.04em;line-height:.9}.tl-entries{gap:var(--space-5);margin:0;padding:0;list-style:none;display:grid}.tl-entry-inner{gap:var(--space-1);display:grid}.tl-kind{font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--panel-muted)}.tl-title{font-size:1.375rem;font-weight:var(--w-semi);letter-spacing:-.02em;line-height:1.2}.tl-meta{font-size:var(--t-small);color:var(--panel-muted)}.tl-meta:empty{display:none}.tl-entry .draft-badge{margin-top:var(--space-1);border-color:var(--draft);color:var(--draft);justify-self:start}.tl-entry-link .tl-title span{transition:transform var(--dur-3) var(--ease-out);display:inline-block}.tl-entry-link:hover .tl-title span,.tl-entry-link:focus-visible .tl-title span{transform:translate(6px)}.tl-entry-link:hover .tl-title{text-underline-offset:.2em;text-decoration:underline;text-decoration-thickness:1px}.shell{margin-left:var(--rail-w)}
.page{padding:clamp(var(--space-6), calc(6.25vw - 16px), var(--space-7)) var(--gutter) var(--space-9)}main{animation:page-in .7s var(--ease-out) backwards}@keyframes page-in{0%{opacity:0;transform:translateY(12px)}}.display{margin:0 0 var(--space-7);font-size:var(--t-display);font-weight:var(--w-bold);letter-spacing:var(--tracking-display);line-height:.88}.empty-note{color:var(--muted);max-width:40ch}.draft-badge{padding:3px var(--space-2);border:1px dashed var(--draft);color:var(--draft);font-size:.6875rem;font-weight:var(--w-medium);letter-spacing:.06em;text-transform:uppercase;line-height:1.4;display:inline-block}.frame{background:var(--placeholder);width:100%;position:relative;overflow:hidden}.frame img{transition:transform var(--dur-4) var(--ease-out)}.frame-placeholder{color:var(--placeholder-fg);place-items:center;display:grid}.frame-placeholder--dark{background:var(--placeholder-dark);color:var(--placeholder-dark-fg)}.frame-label{padding:var(--space-3);text-align:center;font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;gap:2px;display:grid}.frame-label strong{font-weight:var(--w-bold)}.frame-flag,.frame-placeholder--dark .frame-flag{color:var(--draft)}.frame-tag{top:var(--space-3);right:var(--space-3);background:var(--draft);color:#fff;font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;padding:4px 8px;position:absolute}
.hero{position:relative}.hero--media{height:100svh;min-height:560px}.hero--full .hero-media{position:absolute;inset:0}.hero--full .hero-media .frame{height:100%;aspect-ratio:auto!important}.hero--full .hero-media .frame-placeholder{place-items:start end}.hero--full .hero-wordmark{z-index:2}.hero--right{background:var(--hero-bg,var(--placeholder));overflow:hidden;container-type:size}.hero--right .hero-media{height:var(--hero-img-h);z-index:2;transform-origin:100% 100%;position:absolute;bottom:0;right:0}.hero--right .hero-media .frame{width:auto;height:100%}.hero--right{--hero-gap:var(--space-6);--hero-img-ratio:.8037;--hero-wm-ratio:3.25;--hero-room:calc(100cqw - var(--gutter) - var(--hero-gap));--hero-img-w:min(calc(90cqh * var(--hero-img-ratio)), calc(var(--hero-room) * .6), calc(var(--hero-room) - var(--hero-wm-ratio) * 3rem));--hero-img-h:calc(var(--hero-img-w) / var(--hero-img-ratio));--hero-wm-size:max(3rem, min(calc((var(--hero-room) - var(--hero-img-w)) / var(--hero-wm-ratio)), calc((90cqh - var(--space-7)) / 1.75)));--hero-spare:max(0px, calc(var(--hero-room) - var(--hero-img-w) - var(--hero-wm-ratio) * var(--hero-wm-size)))}.hero-wordmark.is-stacked .wm-j{clip-path:inset(.44em -.2em -.2em)}.hero.hero--right .hero-wordmark{z-index:3;left:calc(var(--gutter) + var(--hero-spare));font-size:var(--hero-wm-size);white-space:normal}.hero--right .hero-wordmark>span{display:block}.frame:has(img){background:0 0}.hero-wordmark{font-size:min(calc((92vw - var(--rail-w)) / 6.7), 17rem);font-weight:var(--w-bold);letter-spacing:-.055em;white-space:nowrap;margin:0;line-height:.78}.hero--media .hero-wordmark{left:var(--gutter);bottom:var(--space-7);z-index:1;position:absolute}.hero--media[data-tone=light] .hero-wordmark{color:#fff}.hero--plain{min-height:72vh;padding:0 var(--gutter) var(--space-7);align-items:flex-end;display:flex}.hero-foot{justify-content:space-between;align-items:baseline;gap:var(--space-5);padding-top:var(--space-6);padding-bottom:0;display:flex}.hero-intro{font-size:var(--t-lead);margin:0}.work{padding-top:var(--space-7)}.proj-list{gap:var(--space-section);margin:0;padding:0;list-style:none;display:grid}.proj{align-items:center;min-height:92vh;display:flex}.proj-link{gap:var(--space-5) var(--space-6);grid-template-columns:repeat(12,1fr);width:100%;display:grid}.proj-head{align-items:baseline;gap:var(--space-6);grid-column:1/-1;display:flex}.proj-num{font-size:var(--t-display);font-weight:var(--w-thin);letter-spacing:-.04em;color:var(--muted);line-height:.85}.proj-title{font-size:var(--t-display);font-weight:var(--w-bold);letter-spacing:var(--tracking-display);transition:transform var(--dur-3) var(--ease-out);margin:0;line-height:.85}.proj-media{grid-column:1/-1}.proj--offset .proj-head{justify-content:flex-end}.proj--offset .proj-media{grid-column:3/-1}.proj-meta{align-items:center;gap:var(--space-3) var(--space-6);font-size:var(--t-small);color:var(--muted);flex-wrap:wrap;grid-column:1/-1;display:flex}.proj--offset .proj-meta{grid-column:3/-1}.proj-summary{color:var(--fg)}.proj-cta{font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--fg);margin-left:auto}.proj-cta span{transition:transform var(--dur-3) var(--ease-out);display:inline-block}.proj-link:hover .proj-cta span,.proj-link:focus-visible .proj-cta span{transform:translate(6px)}.proj-link:hover .frame img{transform:scale(1.025)}.proj-link:hover .proj-title{transform:translate(8px)}.proj--offset .proj-link:hover .proj-title{transform:translate(-8px)}.proj-card{flex:none;width:min(76vw,1240px)}.proj-card .proj{min-height:0}.proj-card .proj--offset .proj-head{justify-content:flex-start}.proj-card .proj--offset .proj-media,.proj-card .proj--offset .proj-meta{grid-column:1/-1}.stack{margin:0 calc(var(--gutter) * -1);padding:0;list-style:none}.stack-panel{background:var(--bg);height:100vh;opacity:calc(1 - (1 - var(--peek-opacity)) * var(--rise,0) * (1 - var(--lift)));transition:transform var(--dur-3) var(--ease-out), --lift .45s cubic-bezier(.4, 0, .2, 1);flex-direction:column;display:flex;position:sticky;top:0}@property --lift{syntax:"<number>";inherits:false;initial-value:0}.stack{--peek:44px;--peek-opacity:.8}.stack-panel+.stack-panel{margin-top:calc(var(--peek) * -1)}@media (hover:hover){.stack-panel.is-next:hover{--lift:1;cursor:pointer;transform:translateY(-28px)}}.stack-index{top:var(--space-6);left:var(--rail-w);z-index:calc(var(--z-rail) + 1);clip-path:inset(-100vh -100vw -100vh 0);visibility:hidden;transition:visibility 0s linear var(--dur-3);position:fixed}.shell[inert] .stack-index{visibility:hidden}.stack-index.is-visible{visibility:visible;transition:none}.stack-index ol{margin:0;padding:0;list-style:none;display:grid}.stack-index-tab{width:var(--index-w);min-height:var(--tap);border-radius:0 var(--tab-r) var(--tab-r) 0;text-align:left;transition:transform var(--dur-3) var(--ease-out), background-color var(--dur-2), color var(--dur-2), opacity var(--dur-3) var(--ease-out);background:0 0;border:0;align-content:center;justify-items:center;padding:0;display:grid;position:relative;transform:translate(-101%)}.stack-index.is-visible .stack-index-tab.is-passed,.stack-index.is-visible .stack-index-tab.is-current,.stack-index.is-visible .stack-index-tab.is-next{transform:none}.stack-index-tab.is-next{opacity:.35}.stack-index-tab.is-next:hover,.stack-index-tab.is-next:focus-visible{opacity:.8}.stack-index{--tab-bg:var(--rail-bg);--bleed:8px}.stack-index-marker{--solid:linear-gradient(#000, #000);--r:var(--tab-r);top:calc(var(--r) * -1);left:calc(var(--bleed) * -1);box-sizing:content-box;width:calc(var(--index-w) + var(--bleed));height:var(--tap);padding-block:var(--r);background:var(--tab-bg);-webkit-mask:var(--solid) 0 0 / var(--bleed) 100%, radial-gradient(circle at 100% 0, transparent calc(var(--r) - .5px), #000 var(--r)) calc(var(--bleed) - 1px) 0 / calc(var(--r) + 1px) calc(var(--r) + 1px), radial-gradient(circle at 100% 100%, transparent calc(var(--r) - .5px), #000 var(--r)) left calc(var(--bleed) - 1px) bottom 0 / calc(var(--r) + 1px) calc(var(--r) + 1px), var(--solid) var(--bleed) var(--r) / calc(100% - var(--bleed) - var(--r)) calc(100% - 2 * var(--r)), var(--solid) var(--bleed) calc(2 * var(--r)) / calc(100% - var(--bleed)) calc(100% - 4 * var(--r)), radial-gradient(circle at center, #000 calc(var(--r) - .5px), transparent var(--r)) right 0 top var(--r) / calc(2 * var(--r)) calc(2 * var(--r)), radial-gradient(circle at center, #000 calc(var(--r) - .5px), transparent var(--r)) right 0 bottom var(--r) / calc(2 * var(--r)) calc(2 * var(--r));mask:var(--solid) 0 0 / var(--bleed) 100%, radial-gradient(circle at 100% 0, transparent calc(var(--r) - .5px), #000 var(--r)) calc(var(--bleed) - 1px) 0 / calc(var(--r) + 1px) calc(var(--r) + 1px), radial-gradient(circle at 100% 100%, transparent calc(var(--r) - .5px), #000 var(--r)) left calc(var(--bleed) - 1px) bottom 0 / calc(var(--r) + 1px) calc(var(--r) + 1px), var(--solid) var(--bleed) var(--r) / calc(100% - var(--bleed) - var(--r)) calc(100% - 2 * var(--r)), var(--solid) var(--bleed) calc(2 * var(--r)) / calc(100% - var(--bleed)) calc(100% - 4 * var(--r)), radial-gradient(circle at center, #000 calc(var(--r) - .5px), transparent var(--r)) right 0 top var(--r) / calc(2 * var(--r)) calc(2 * var(--r)), radial-gradient(circle at center, #000 calc(var(--r) - .5px), transparent var(--r)) right 0 bottom var(--r) / calc(2 * var(--r)) calc(2 * var(--r));pointer-events:none;transition:translate var(--dur-3) var(--ease-out);position:absolute;translate:-101%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.stack-index.is-visible .stack-index-marker{translate:none}.stack-index-tab:focus-visible{outline-offset:-4px}.stack-index-num{font-size:var(--t-small);font-weight:var(--w-semi);line-height:1}.stack-body{gap:var(--space-5);min-height:0;padding:0 0 calc(var(--space-6) + var(--peek));flex:1;grid-template-rows:minmax(0,1fr) auto;display:grid}.stack-panel:last-child .stack-body{--peek:0px}@media (orientation:landscape){.work:has(>.stack){padding-bottom:0}}.stack-body:focus-visible{outline-offset:-6px}.stack-media{min-height:0;overflow:hidden}@media (orientation:landscape){.stack-media .frame{height:100%;aspect-ratio:auto!important}}.stack-body:hover .frame img{transform:scale(1.02)}.stack-meta{align-items:end;gap:var(--space-2) var(--space-5);padding:0 var(--gutter);grid-template-columns:auto 1fr;display:grid}.stack-num{font-size:clamp(2.5rem,5vw,5rem);font-weight:var(--w-thin);letter-spacing:-.04em;color:var(--muted);line-height:.85}.stack-title{font-size:clamp(2.5rem,5vw,5rem);font-weight:var(--w-bold);letter-spacing:var(--tracking-display);margin:0;line-height:.85}.stack-info{align-items:center;gap:var(--space-3) var(--space-6);font-size:var(--t-small);color:var(--muted);flex-wrap:wrap;grid-column:1/-1;display:flex}.stack-summary{color:var(--fg)}.stack-cta{font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--fg);margin-left:auto}.stack-cta span{transition:transform var(--dur-3) var(--ease-out);display:inline-block}.stack-body:hover .stack-cta span,.stack-body:focus-visible .stack-cta span{transform:translate(6px)}
.cs-hero{padding-bottom:var(--space-8)}.cs-hero .draft-badge{margin-bottom:var(--space-5)}.cs-title{margin:0 0 var(--space-7);font-size:var(--t-mega);font-weight:var(--w-bold);letter-spacing:-.055em;overflow-wrap:anywhere;line-height:.8}.cs-intro{gap:var(--space-6);grid-template-columns:repeat(12,1fr);align-items:start;display:grid}.cs-summary{font-size:var(--t-lead);grid-column:1/span 6;margin:0;line-height:1.35}.cs-facts{gap:var(--space-5) var(--space-6);grid-column:8/span 5;grid-template-columns:repeat(2,1fr);margin:0;display:grid}.cs-facts dt{font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted)}.cs-facts dd{margin:6px 0 0}.cs-cover,.cs-sec{margin-bottom:var(--space-section)}.cs-sec.page{padding-top:0;padding-bottom:0}.cs-sec-head{gap:var(--space-5);padding-top:var(--space-4);margin-bottom:var(--space-7);border-top:1px solid var(--fg);font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;display:flex}.cs-sec-head span:first-child{color:var(--muted)}.cs-text h2{margin:0 0 var(--space-5);font-size:var(--t-h2);font-weight:var(--w-bold);letter-spacing:var(--tracking-head);line-height:1}.cs-text p{max-width:var(--measure);margin:0 0 1em}.cs-sec--text .cs-text{gap:0 var(--space-6);grid-template-columns:repeat(12,1fr);display:grid}.cs-sec--text .cs-text h2{font-size:var(--t-h1);grid-column:1/span 5}.cs-sec--text .cs-text p{font-size:var(--t-lead);grid-column:7/span 6;line-height:1.45}.cs-bleed-head{padding-top:0;padding-bottom:0}.cs-sec--bleed .cs-figure+.cs-figure{margin-top:var(--space-2)}.cs-sec--bleed figcaption{padding:0 var(--gutter)}.cs-split{gap:var(--space-6);grid-template-columns:repeat(12,1fr);align-items:center;display:grid}.cs-split-media{gap:var(--space-5);grid-column:1/span 7;display:grid}.cs-split .cs-text{grid-column:9/span 4}.is-image-right .cs-split-media{order:2;grid-column:6/span 7}.is-image-right .cs-split .cs-text{order:1;grid-column:1/span 4}.cs-sec--grid .cs-text{margin-bottom:var(--space-7)}.cs-grid{grid-template-columns:repeat(var(--cols,2), 1fr);gap:var(--space-5);align-items:start;display:grid}.cs-stack-wrap{gap:var(--space-6);grid-template-columns:repeat(12,1fr);display:grid}.cs-stack-wrap .cs-text{top:var(--space-7);grid-column:1/span 4;align-self:start;position:sticky}.cs-stack{gap:var(--space-6);grid-column:5/span 8;display:grid}.cs-figure{margin:0}figcaption{margin-top:var(--space-3);color:var(--muted);font-size:var(--t-small)}.cs-end{gap:var(--space-7);border-top:1px solid var(--fg);padding-top:var(--space-5);display:grid}.cs-back{min-height:var(--tap);font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;justify-self:start;align-items:center;display:inline-flex}.cs-back:hover{color:var(--muted)}.cs-next span{font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted);display:block}.cs-next strong{margin-top:var(--space-4);font-size:var(--t-display);font-weight:var(--w-bold);letter-spacing:var(--tracking-display);color:var(--muted);transition:color var(--dur-3) var(--ease-out);line-height:.88;display:block}.cs-next:hover strong,.cs-next:focus-visible strong{color:var(--fg)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.cs-sec:not(.cs-sec--strip),.proj-list .proj{animation:linear both reveal;animation-timeline:view();animation-range:entry entry 35%}}}@keyframes reveal{0%{opacity:0;transform:translateY(40px)}}.cs-strip-head{padding-top:0;padding-bottom:0}.hscroll-sticky{position:relative}.hscroll-track{padding:0 var(--gutter);align-items:center;gap:40px;display:flex}.hscroll-track .cs-figure{flex:none}.hscroll-track .cs-figure .frame{height:var(--strip-h);width:auto}.hscroll-intro{padding:0 var(--gutter);margin-bottom:var(--space-6)}.hscroll-intro:empty{display:none}.hscroll-intro .cs-text{gap:0 var(--space-6);grid-template-columns:repeat(12,1fr);align-items:end;display:grid}.hscroll-intro .cs-text h2{grid-column:1/span 5;margin:0}.hscroll-intro .cs-text p{grid-column:7/span 6;margin:0}.hscroll-meta{align-items:center;gap:var(--space-4);padding:var(--space-5) var(--gutter) 0;font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted);display:flex}.hscroll-bar{background:var(--line);width:160px;height:2px;display:none}.hscroll-bar span{background:var(--fg);height:100%;transform:scaleX(var(--progress,0));transform-origin:0;display:block}.hscroll-hint{display:none}.hscroll[data-mode=pinned] .hscroll-sticky{flex-direction:column;justify-content:center;height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.hscroll[data-mode=pinned] .hscroll-track{will-change:transform}.hscroll[data-mode=pinned] .hscroll-bar{display:block}.hscroll[data-mode=free] .hscroll-track{padding-bottom:var(--space-4);scroll-snap-type:x mandatory;overflow-x:auto}.hscroll[data-mode=free] .cs-figure,.hscroll[data-mode=free] .proj-card{scroll-snap-align:start}.hscroll-skip{padding:var(--space-3) var(--space-4);background:var(--fg);color:var(--bg);font-size:var(--t-small);z-index:5;position:absolute;left:-9999px}.hscroll-skip:focus{left:var(--gutter);margin-bottom:var(--space-4);display:inline-block;position:relative}.hscroll-after{height:0;display:block}
.filters{gap:var(--space-1);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.filters button{isolation:isolate;min-height:var(--tap);padding:var(--space-2) var(--space-4);font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted);transition:color var(--dur-2) var(--ease-out);position:relative;overflow:hidden}.filters button:before{content:"";z-index:-1;border-radius:var(--tab-r);background:var(--rail-highlight);opacity:0;transition:opacity var(--dur-2) var(--ease-out), transform var(--dur-3) var(--ease-out);position:absolute;inset:0}.filters button:hover:before,.filters button:focus-visible:before,.filters button[aria-pressed=true]:before{opacity:1}.filters:has(button:hover,button:focus-visible) button[aria-pressed=true]:not(:hover,:focus-visible):before{opacity:0}.filters button:hover,.filters button:focus-visible,.filters button[aria-pressed=true]{color:var(--fg)}.filters button:focus-visible{outline-offset:-2px}.carousel{--card-h:clamp(220px, 36vh, 380px)}.carousel-viewport{margin-inline:calc(-1 * var(--gutter));padding:var(--space-2) var(--gutter) var(--space-4);scroll-snap-type:x mandatory;scrollbar-width:none;overflow-x:auto}.carousel-viewport:focus-visible{outline-offset:-4px}.carousel-track{align-items:flex-start;gap:var(--space-4);margin:0;padding:0;list-style:none;display:flex}.carousel-card{width:min(calc(var(--card-h) * var(--ratio)), 84vw);scroll-snap-align:center;cursor:zoom-in;flex:none}.carousel-card .frame{border-radius:var(--tab-r)}.carousel-caption-inline{margin:10px 0 0}.carousel-caption-inline .gallery-note{display:block}.gallery-title{margin:0}.gallery-note{margin:var(--space-1) 0 0;color:var(--muted);font-size:var(--t-small)}@media (min-width:768px){html:has(.gallery-page){overflow:hidden}.gallery-page{grid-template-rows:auto 1fr;height:100dvh;padding-block:0;display:grid;overflow:hidden}.filters{margin:0 0 var(--space-2);gap:var(--space-2)}.filters button{padding:var(--space-5) var(--space-4) var(--space-3)}.filters button:before{border-radius:0 0 var(--tab-r) var(--tab-r);opacity:1;transform:translateY(-100%)}.filters button:hover:before,.filters button:focus-visible:before,.filters button[aria-pressed=true]:before{transform:none}.filters:has(button:hover,button:focus-visible) button[aria-pressed=true]:not(:hover,:focus-visible):before{transform:translateY(-100%)}.gallery-page .empty-note{align-self:center}.carousel--ring{--card-h:min(58dvh, 760px);--ring-y:46%;--peek-opacity:.8;min-height:0}.carousel--ring .carousel-viewport{scroll-snap-type:none;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;height:100%;padding:0;position:relative;overflow:hidden}.carousel--ring .carousel-viewport:active{cursor:grabbing}.carousel--ring .carousel-track{position:absolute;inset:0}.ring-card{pointer-events:none;cursor:zoom-in;position:absolute;inset:0}.ring-photo{top:var(--ring-y);width:calc(var(--card-h) * var(--ratio));height:var(--card-h);border-radius:var(--tab-r);background:var(--placeholder) var(--img) center / cover no-repeat;transform-origin:0 0;will-change:transform;pointer-events:auto;opacity:calc(1 - (1 - var(--peek-opacity)) * var(--away,0) * (1 - var(--lift)));transition:--lift .45s cubic-bezier(.4,0,.2,1);position:absolute;left:50%}.ring-photo:hover{--lift:1}.carousel-viewport:focus-visible{outline-offset:-6px}.carousel--ring .carousel-track{z-index:1}.ring-caption{--tuck:var(--space-6);top:calc(var(--ring-y) + var(--card-h) / 2 - var(--tuck));width:max-content;max-width:min(36rem, calc(var(--card-h) * var(--ratio) - 2 * var(--tab-r)));pointer-events:none;position:absolute;left:50%;overflow:hidden;translate:-50%}.ring-caption-tab{padding:calc(var(--tuck) + var(--space-3)) var(--space-5) var(--space-4);border-radius:0 0 var(--tab-r) var(--tab-r);background:var(--rail-highlight);text-align:center;transition:translate var(--dur-2) var(--ease-in-out);position:relative;translate:0 -101%}.is-settled .ring-caption-tab{transition:translate var(--dur-3) var(--ease-out);translate:none}.ring-caption-tab .gallery-note{color:var(--rail-muted)}.ring-caption-flag{margin-left:var(--space-2);color:var(--draft);font-size:var(--t-label);font-weight:var(--w-medium)}}.lightbox{width:100vw;max-width:none;height:100dvh;max-height:none;padding:var(--space-7) var(--gutter) var(--space-6);color:var(--fg);background:#f2f2f2f5;border:0;margin:0}.lightbox[open]{animation:lightbox-in var(--dur-2) var(--ease-out);display:grid}.lightbox::backdrop{background:0 0}@keyframes lightbox-in{0%{opacity:0;scale:.98}}.lightbox-figure{gap:var(--space-4);pointer-events:none;grid-template-rows:1fr auto;min-height:0;margin:0;display:grid}.lightbox-image{min-height:0;position:relative}.lightbox-caption{text-align:center;justify-items:center;display:grid}.lightbox-close{top:var(--space-3);right:var(--gutter);min-height:var(--tap);padding:var(--space-2) var(--space-4);border-radius:var(--tab-r);font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;transition:background-color var(--dur-2) var(--ease-out);position:absolute}.lightbox-close:hover,.lightbox-close:focus-visible{background:var(--rail-highlight)}
.contact-name{font-size:var(--t-h2);font-weight:var(--w-semi);letter-spacing:-.03em;margin:0}.contact-role{color:var(--muted);margin:6px 0 40px}.contact-links{font-size:var(--t-lead);gap:14px;margin:0;padding:0;list-style:none;display:grid}.contact-links a{border-bottom:var(--border);transition:border-color var(--dur-2)}.contact-links a:hover{border-color:var(--fg)}
@media (max-width:767px){.scrollbar{top:calc(var(--bar-h) + 6px)}.rail{width:auto;height:var(--bar-h);padding:0 var(--space-2) 0 var(--space-4);background:0 0;border-right:0;flex-direction:row;inset:0 0 auto}.rail:before{content:"";z-index:-1;background:var(--rail-bg);transition:transform var(--dur-3) var(--ease-out);position:absolute;inset:0}.rail-brand{writing-mode:horizontal-tb;transition:transform var(--dur-3) var(--ease-out), visibility 0s;font-size:1.25rem;transform:none}.rail.is-over-hero:before{transform:translateY(-100%)}.rail.is-over-hero:not(.is-open) .rail-brand{transform:translateY(calc(var(--bar-h) * -1));opacity:0;visibility:hidden;transition:transform var(--dur-3) var(--ease-out), visibility 0s linear var(--dur-3)}.rail.is-over-hero~.nav-panel{padding-top:calc(var(--bar-h) + var(--space-6));top:0}.rail.is-over-hero.is-open .rail-brand{transition:opacity var(--dur-2) var(--ease-out) .12s;transform:none}.rail-links,.nav-scrim,.tl-panel{display:none}.rail-toggle--mobile-only{display:grid}.hero--right{--hero-spare:0px;--hero-wm-size:clamp(3rem, 17cqw, 6rem);--hero-img-h:min(76cqh, max(calc(100cqh - var(--space-4) - 1.75 * var(--hero-wm-size) - var(--hero-gap)), calc((100cqw - var(--space-4) - var(--hero-wm-ratio) * var(--hero-wm-size) - var(--hero-gap)) / var(--hero-img-ratio))))}.hero.hero--right .hero-wordmark{top:var(--space-4);bottom:auto;left:var(--space-4)}.nav-panel{top:calc(var(--bar-h) - 1px);width:100%;padding:var(--space-6) var(--space-4) var(--space-5);clip-path:inset(0 0 100%);justify-content:flex-start;left:0}.nav-link{min-height:var(--tap);grid-template-columns:36px 1fr}.nav-link-label{font-size:clamp(3rem,15vw,4.5rem)}.nav-list:has(.nav-link:hover,.nav-link:focus-visible) .nav-link:not(:hover):not(:focus-visible) .nav-link-label{color:inherit}.nav-panel-foot{margin-top:var(--space-6);flex-direction:column}.shell{padding-top:var(--bar-h);margin-left:0}.page{padding:var(--space-6) var(--space-4) var(--space-8)}.hero--media{height:88svh;min-height:calc(420px + var(--bar-h));margin-top:calc(var(--bar-h) * -1)}.hero-wordmark{white-space:normal;font-size:clamp(3.5rem,19vw,7rem)}.hero--media .hero-wordmark{left:var(--space-4);bottom:var(--space-5)}.hero--plain{min-height:60vh;padding:0 var(--space-4) var(--space-6)}.hero-foot{gap:var(--space-3);flex-direction:column}.work{padding-top:var(--space-6)}.proj-list{gap:var(--space-9)}.proj{min-height:0}.proj-link{gap:var(--space-4);flex-direction:column;display:flex}.proj-head,.proj--offset .proj-head{align-items:flex-start;gap:var(--space-2);flex-direction:column}.proj-num{font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);line-height:1}.proj-title{font-size:clamp(2.75rem,13vw,4.5rem)}.proj-media{margin:0 calc(var(--space-4) * -1)}.proj-cta{margin-left:0}.cs-title{font-size:clamp(3rem,16vw,5.5rem)}.cs-intro,.cs-sec--text .cs-text,.cs-split,.cs-stack-wrap{gap:var(--space-5);flex-direction:column;display:flex}.cs-facts{margin-top:var(--space-5)}.cs-sec--text .cs-text p{font-size:var(--t-body)}.is-image-right .cs-split-media,.is-image-right .cs-split .cs-text{order:0}.cs-split .cs-text{order:1}.cs-stack-wrap .cs-text{position:static}.cs-grid{gap:var(--space-4);grid-template-columns:1fr}.cs-stack{gap:var(--space-4)}.hscroll-track{align-items:stretch;gap:var(--space-4);padding:0 var(--space-4);flex-direction:column}.hscroll[data-mode=free] .hscroll-track{padding-bottom:0;overflow-x:visible}.hscroll-track .cs-figure .frame{width:100%;height:auto}.hscroll-intro{padding:0 var(--space-4);margin-bottom:var(--space-5)}.hscroll-intro .cs-text{display:block}.hscroll-intro .cs-text h2{margin-bottom:var(--space-4)}.hscroll-meta{padding:var(--space-3) var(--space-4) 0}.hscroll[data-mobile=swipe] .hscroll-track{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;align-items:flex-start;gap:var(--space-3);padding-bottom:var(--space-2);flex-direction:row;overflow-x:auto}.hscroll[data-mobile=swipe] .cs-figure{scroll-snap-align:start;flex:0 0 84%}.hscroll[data-mobile=swipe] .hscroll-hint{display:inline}.hscroll[data-mobile=swipe] .hscroll-hint:after{content:" →"}.proj-card{width:auto}.stack{--peek:32px;margin:0 calc(var(--space-4) * -1);scroll-margin-top:var(--bar-h)}.stack-panel{top:var(--bar-h);height:calc(100svh - var(--bar-h))}.stack-index{top:calc(var(--bar-h) + var(--space-3));left:0}.stack-index-marker{-webkit-mask:var(--solid) 0 var(--r) / var(--bleed) calc(100% - 2 * var(--r)), var(--solid) var(--bleed) var(--r) / calc(100% - var(--bleed) - var(--r)) calc(100% - 2 * var(--r)), var(--solid) var(--bleed) calc(2 * var(--r)) / calc(100% - var(--bleed)) calc(100% - 4 * var(--r)), radial-gradient(circle at center, #000 calc(var(--r) - .5px), transparent var(--r)) right 0 top var(--r) / calc(2 * var(--r)) calc(2 * var(--r)), radial-gradient(circle at center, #000 calc(var(--r) - .5px), transparent var(--r)) right 0 bottom var(--r) / calc(2 * var(--r)) calc(2 * var(--r));mask:var(--solid) 0 var(--r) / var(--bleed) calc(100% - 2 * var(--r)), var(--solid) var(--bleed) var(--r) / calc(100% - var(--bleed) - var(--r)) calc(100% - 2 * var(--r)), var(--solid) var(--bleed) calc(2 * var(--r)) / calc(100% - var(--bleed)) calc(100% - 4 * var(--r)), radial-gradient(circle at center, #000 calc(var(--r) - .5px), transparent var(--r)) right 0 top var(--r) / calc(2 * var(--r)) calc(2 * var(--r)), radial-gradient(circle at center, #000 calc(var(--r) - .5px), transparent var(--r)) right 0 bottom var(--r) / calc(2 * var(--r)) calc(2 * var(--r));-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.stack-body{gap:var(--space-4);padding:0 0 calc(var(--space-5) + var(--peek))}.stack-meta{padding:0 var(--space-4)}.stack-num{font-size:var(--t-label);font-weight:var(--w-medium);letter-spacing:var(--tracking-label);grid-column:1/-1;line-height:1}.stack-title{grid-column:1/-1;font-size:clamp(2.75rem,13vw,4.5rem)}.stack-cta{margin-left:0}}@media (orientation:portrait){.stack{--peek:0px;gap:var(--space-7);display:grid}.stack-panel,.stack-panel+.stack-panel{height:auto;margin-top:0;position:static}.stack-body{padding-bottom:0}}@media (min-width:768px) and (max-width:1100px){.proj--offset .proj-media,.proj--offset .proj-meta{grid-column:1/-1}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important}}

