:root{font-family:Manrope,sans-serif;color:#292b28;background:#f1eee7;font-synthesis:none;--paper:#f1eee7;--ink:#292b28;--muted:#595c55;--rule:#b8b9ac;--accent:#845b48}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:6px}button{color:inherit}img{max-width:100%;height:auto}em{font-family:'Bodoni Moda',serif;font-weight:400}h1,h2,h3,p{margin:0}h1,h2{font-weight:500;letter-spacing:-.035em;line-height:1.04}h1{font-size:clamp(3.5rem,6.5vw,6rem)}h2{font-size:clamp(2.4rem,4vw,4.6rem)}.skip{position:fixed;top:-100px;left:20px;background:white;color:black;padding:16px;z-index:20}.skip:focus{top:10px}.brand{display:block;width:132px;flex-shrink:0}.brand img{display:block;width:100%;height:auto}.review-bar{height:42px;padding:0 3.4vw;display:flex;align-items:center;justify-content:space-between;font-size:.8125rem;border-bottom:1px solid var(--rule);position:relative;z-index:3}.review-bar span{color:var(--muted)}.save{border:0;background:transparent;font-size:.875rem;padding:10px 0;min-height:42px}.save[aria-pressed=true]{font-weight:800;text-decoration:underline;text-underline-offset:5px}.site-header{display:flex;align-items:center;justify-content:space-between;padding:18px 3.4vw;position:relative;z-index:2}.site-header nav{display:flex;gap:2.8rem;align-items:center;font-size:.875rem}.contact-link{border-bottom:1px solid currentColor;padding:12px 0}.contact-link span{margin-left:2rem}.hero{position:relative;min-height:700px;height:calc(100svh - 168px);max-height:1100px;isolation:isolate;padding:8vh 3.4vw 0}.hero-copy{position:relative;z-index:1;width:49%;pointer-events:none}.hero-copy a{pointer-events:auto}.hero-copy p{font-size:1.125rem;line-height:1.7;max-width:340px;margin:28px 0 30px}.main-link{display:inline-flex;gap:48px;align-items:center;font-size:.9375rem;border-bottom:1px solid currentColor;padding:10px 0 14px}.main-link span{font-size:1.5rem;transition:transform .25s}.main-link:hover span{transform:translate(4px,-4px)}.artwork{position:absolute;right:0;top:-100px;width:65%;height:calc(100% + 50px);z-index:0;overflow:hidden}.scene{position:absolute;inset:0;cursor:grab;touch-action:pan-y}.scene:active{cursor:grabbing}.scene canvas,.fallback{position:absolute;width:100%;height:100%;object-fit:contain;display:block}.scene canvas{opacity:0;transition:opacity .6s}.scene.ready canvas{opacity:1}.scene.ready .fallback{opacity:0}.fallback{transition:opacity .6s}.art-index{position:absolute;right:5.2vw;top:7.4rem;font: .8125rem 'IBM Plex Mono',monospace;pointer-events:none;color:var(--muted)}.art-caption{position:absolute;right:5.2vw;bottom:8.5rem;font-size:.8125rem;pointer-events:none;color:var(--muted)}.motion-panel{position:absolute;left:3.4vw;bottom:90px;width:294px;z-index:2;border-top:1px solid var(--rule);padding-top:12px}.motion-title{display:flex;align-items:center;justify-content:space-between;font-size:.8125rem;margin-bottom:15px}.pause{background:none;border:0;padding:8px 0 8px 14px;font-size:.8125rem;min-height:38px}.pause span{margin-left:8px}.motion-panel label{font-size:.8125rem;display:flex;justify-content:space-between}.motion-panel output{font-family:'IBM Plex Mono',monospace;color:var(--muted)}input[type=range]{width:100%;height:24px;accent-color:var(--accent);cursor:ew-resize;margin:8px 0 0}.range-labels{display:flex;justify-content:space-between;font-size:.75rem;color:var(--muted)}#motion-help{font-size:.75rem;line-height:1.6;color:var(--muted);margin-top:13px}.scene-status{font-size:.75rem;line-height:1.6;margin-top:4px}.hero-bottom{position:absolute;bottom:0;left:3.4vw;right:3.4vw;height:62px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--rule);font-size:.8125rem}.content-section{padding:120px 3.4vw;display:grid;grid-template-columns:23% 1fr;border-bottom:1px solid var(--rule);position:relative}.section-number{font-family:'IBM Plex Mono',monospace;font-size:.8125rem;line-height:1.5;padding-top:10px}.large-copy{font-size:clamp(1.125rem,1.6vw,1.5rem);line-height:1.65;max-width:790px;margin:38px 0 64px}.capabilities{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}.capabilities h3{font-size:1.375rem;font-weight:500;margin-bottom:15px}.capabilities p{font-size:1rem;line-height:1.7;color:var(--muted);max-width:245px}.work{background:color-mix(in srgb,var(--ink) 4%,var(--paper))}.work-intro{max-width:610px;line-height:1.7;margin:28px 0 50px;font-size:1rem}.work-list{border-top:1px solid var(--rule)}details{border-bottom:1px solid var(--rule)}summary{display:grid;grid-template-columns:40px 1fr 1fr 30px;gap:12px;align-items:center;list-style:none;padding:27px 0;cursor:pointer}summary::-webkit-details-marker{display:none}summary>span:first-child{font:.75rem 'IBM Plex Mono',monospace;color:var(--muted)}summary h3{font-size:1.625rem;font-weight:500}summary>span:nth-of-type(2){font-size:.875rem;color:var(--muted)}summary b{font-size:1.5rem;font-weight:400;justify-self:end;transition:transform .2s}details[open] summary b{transform:rotate(45deg)}.work-detail{padding:10px 0 40px 52px;display:grid;grid-template-columns:1fr 1.7fr;gap:30px}.work-detail p{font-size:1rem;line-height:1.7}.work-detail img{width:100%;height:300px;object-fit:contain;object-position:top;background:#fff;padding:10px}.contact{padding-top:135px;padding-bottom:135px}.contact .main-link{margin-top:40px}.contact-note{font-size:.8125rem;color:var(--muted);margin-top:40px}footer{padding:40px 3.4vw;display:flex;justify-content:space-between;align-items:center;gap:25px;font-size:.8125rem}footer p{color:var(--muted);margin-bottom:15px}footer nav{display:flex;gap:25px;flex-wrap:wrap}footer nav a[aria-current]{text-decoration:underline;text-underline-offset:5px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,15px);background:var(--ink);color:var(--paper);padding:14px 22px;z-index:10;opacity:0;pointer-events:none;transition:.25s;font-size:.875rem;max-width:90vw}.toast.visible{opacity:1;transform:translate(-50%,0)}
/* Continuum: a warm sculptural monograph. */
.continuum{--paper:#efeae2;--ink:#322b29;--muted:#665b55;--rule:#bfb5ab;--accent:#875944;background:var(--paper);color:var(--ink)}.continuum h1,.continuum h2{font-family:'Bodoni Moda',serif;font-weight:400}.continuum h1{font-size:clamp(3.8rem,6.6vw,6rem)}.continuum h1 em{color:#8a5746}.continuum .artwork{right:-3%;width:67%}.continuum .approach{background:#ded5c9}.continuum .content-section h2{line-height:1.1}
/* Assembly: open technical planes, mineral green and warm metal. */
.assembly{--paper:#e5ece7;--ink:#183c33;--muted:#4f665e;--rule:#aabbb2;--accent:#315f4b;background:var(--paper);color:var(--ink)}.assembly h1{font-weight:500;font-size:clamp(3.8rem,6.3vw,6rem)}.assembly h1 em{font-family:Manrope,sans-serif;font-style:normal;font-weight:400}.assembly .hero{padding-top:5vh;min-height:790px;border-top:1px solid var(--rule)}.assembly .hero-copy{width:57%}.assembly .hero-copy p{max-width:300px}.assembly .artwork{width:70%;right:-7%;top:-40px;height:100%}.assembly .art-caption{right:10vw}.assembly .motion-panel{width:310px;border:1px solid var(--rule);padding:16px 20px;background:var(--paper)}.assembly .approach{background:#183c33;color:#e5ece7;--muted:#c1d0c8;--rule:#688679}.assembly .approach h2 em{color:#c7a88a}.assembly .capabilities{gap:20px}.assembly .capabilities>div{border-top:1px solid #688679;padding-top:20px}.assembly .contact h2 em{color:#576f63}
/* Signal: a graphic digital instrument. */
.signal{--paper:#111716;--ink:#eeeade;--muted:#a8b1a9;--rule:#425049;--accent:#e9c65e;background:var(--paper);color:var(--ink)}.signal .brand{background:#eeeade;padding:9px 11px;width:140px}.signal h1{font-size:clamp(4rem,7.6vw,6rem);line-height:.96;letter-spacing:-.035em;font-weight:700}.signal h1 em{font-family:Manrope,sans-serif;font-style:normal;color:#e9c65e;font-weight:700}.signal .hero{padding-top:6vh}.signal .hero-copy{width:48%}.signal .hero-copy p{max-width:310px}.signal .artwork{width:65%;right:-1%;top:-45px}.signal .motion-panel{left:auto;right:3.4vw;width:290px;bottom:100px;background:#111716e8;padding:16px 18px;border:1px solid var(--rule)}.signal .art-caption{bottom:5.8rem;left:20%;right:auto}.signal .art-index{top:4rem}.signal .hero-bottom span{font-family:'IBM Plex Mono',monospace}.signal .approach{background:#e9c65e;color:#18251e;--muted:#4b4e35;--rule:#777340}.signal .approach h2{font-weight:600}.signal .approach h2 em{font-family:Manrope,sans-serif;font-weight:500;font-style:normal}.signal .capabilities h3{font-family:'IBM Plex Mono',monospace}.signal .contact h2 em{color:#e9c65e}.signal .toast{background:#e9c65e;color:#18251e}
/* Ribbon: expansive editorial composition in ink and pale blue. */
.ribbon{--paper:#e9eff4;--ink:#193854;--muted:#51687a;--rule:#a9bac7;--accent:#245d94;background:var(--paper);color:var(--ink)}.ribbon .hero{padding-top:3vh;min-height:870px}.ribbon .hero-copy{width:67%;margin:0 auto;text-align:center}.ribbon h1{font-family:'Bodoni Moda',serif;font-size:clamp(4rem,6.6vw,6rem);font-weight:400}.ribbon h1 em{color:#426f9a}.ribbon .hero-copy p{max-width:370px;margin:24px auto}.ribbon .artwork{width:100%;height:76%;top:210px;right:0;z-index:-1}.ribbon .art-caption{right:3.4vw;bottom:6rem;max-width:170px;line-height:1.7}.ribbon .art-index{top:10rem}.ribbon .motion-panel{bottom:105px;width:275px;background:#e9eff4e8;padding:16px 18px;border:1px solid var(--rule)}.ribbon .hero-copy .main-link{display:none}.ribbon .content-section h2{font-family:'Bodoni Moda',serif;font-weight:400}.ribbon .approach{background:#cedce7}.ribbon .work{background:var(--paper)}.ribbon .contact{background:#193854;color:#e9eff4;--muted:#bdcbd7}.ribbon .contact h2 em{color:#bdd3e6}
/* Review gallery: the work takes the space. */
.gallery{--paper:#f1eee7;--ink:#2e302b;--muted:#63665f;--rule:#b9bcb2;--accent:#6d7957;background:var(--paper);color:var(--ink)}.gallery-header{display:flex;align-items:center;justify-content:space-between;padding:25px 4vw;font-size:.875rem}.gallery-header>span{font-family:'IBM Plex Mono',monospace}.gallery-intro{padding:75px 4vw 65px;display:grid;grid-template-columns:2fr 1fr;gap:60px;align-items:end}.gallery-intro h1{font-size:clamp(3rem,5.7vw,5.6rem);font-weight:500;line-height:1.07}.gallery-intro h1 em{font-weight:400}.gallery-intro p{font-size:1.125rem;line-height:1.7}.gallery-intro .gallery-help{margin-top:20px;font-size:.875rem;color:var(--muted);max-width:320px}.selection-status{margin:0 4vw;padding:17px 0;border-top:1px solid var(--rule);font-size:.8125rem;color:var(--muted)}.gallery-grid{padding:14px 4vw 80px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:65px 28px}.concept-image{height:460px;display:block;position:relative;overflow:hidden;background:var(--paper)}.concept-image img{width:100%;height:100%;object-fit:contain;transition:transform .8s cubic-bezier(.2,.7,.3,1)}.concept-image:hover img{transform:scale(1.06)}.concept-number{position:absolute;top:23px;left:25px;font:.875rem 'IBM Plex Mono',monospace;color:var(--ink)}.explore{position:absolute;bottom:23px;right:25px;color:var(--ink);font-size:.875rem;border-bottom:1px solid currentColor;padding:7px 0}.concept-heading{display:flex;justify-content:space-between;align-items:center;margin:22px 0 10px}.concept-heading h2{font-size:2.25rem;color:#2e302b;font-family:Manrope,sans-serif;font-weight:500}.concept-heading button{color:#2e302b}.concept{background:transparent}.concept>p{font:1rem/1.75 Manrope,sans-serif;color:#565b53;max-width:530px}.gallery-outro{padding:60px 4vw 120px;display:grid;grid-template-columns:1fr 1fr;gap:80px;border-top:1px solid var(--rule)}.gallery-outro p{max-width:470px;font-size:1.125rem;line-height:1.7;align-self:end}.gallery footer{border-top:1px solid var(--rule)}
@media(min-width:1600px){.hero,.site-header,.review-bar,footer,.content-section,.gallery-header,.gallery-intro,.gallery-grid,.gallery-outro{padding-left:max(3.4vw,calc((100vw - 1600px)/2));padding-right:max(3.4vw,calc((100vw - 1600px)/2))}.motion-panel{left:max(3.4vw,calc((100vw - 1600px)/2))}.artwork{max-width:1150px;right:max(0px,calc((100vw - 1700px)/2))}.hero-copy{max-width:680px}}
@media(max-width:1000px){.hero{min-height:790px}.hero h1{font-size:4rem}.hero-copy{width:58%}.artwork,.continuum .artwork{width:76%;right:-14%;top:-30px}.hero-copy p{font-size:1rem;max-width:260px}.assembly .hero-copy{width:70%}.assembly .artwork{right:-15%;width:80%;top:40px}.art-caption{max-width:180px;line-height:1.6;text-align:right}.signal .artwork{width:73%;right:-10%}.signal .motion-panel{right:3.4vw;width:250px}.ribbon .hero-copy{width:80%}.ribbon .artwork{top:210px;width:100%;right:0}.content-section{grid-template-columns:18% 1fr;padding-top:90px;padding-bottom:90px}.capabilities{gap:25px}.gallery-intro{gap:35px;grid-template-columns:1.6fr 1fr}.concept-image{height:360px}.gallery-intro h1{font-size:4rem}}
@media(max-width:700px){.review-bar{padding:0 20px;height:45px}.review-bar>span{display:none}.site-header{padding:16px 20px}.brand{width:108px}.site-header nav{gap:20px;font-size:.8125rem}.site-header nav>a:first-child{display:none}.contact-link span{margin-left:12px}.hero,.assembly .hero,.signal .hero,.ribbon .hero{padding:25px 20px 0;height:auto;min-height:0;max-height:none;display:flex;flex-direction:column}.hero-copy,.assembly .hero-copy,.signal .hero-copy,.ribbon .hero-copy{width:100%;max-width:none;text-align:left;margin:0}.hero h1,.continuum h1,.ribbon h1{font-size:clamp(3.1rem,12vw,4.5rem)}.hero-copy p,.ribbon .hero-copy p{font-size:1rem;max-width:325px;margin:24px 0 18px}.hero-copy .main-link{font-size:.875rem;gap:25px}.artwork,.continuum .artwork,.assembly .artwork,.signal .artwork,.ribbon .artwork{position:relative;top:auto;right:auto;width:calc(100% + 40px);height:400px;margin:0 -20px;z-index:0;overflow:hidden;flex:none}.assembly .artwork{height:440px}.ribbon .artwork{height:350px;margin-top:-15px}.art-index,.signal .art-index,.ribbon .art-index{top:22px;right:20px}.art-caption,.assembly .art-caption,.signal .art-caption,.ribbon .art-caption{bottom:12px;left:auto;right:20px;max-width:none;font-size:.75rem}.motion-panel,.assembly .motion-panel,.signal .motion-panel,.ribbon .motion-panel{position:relative;bottom:auto;left:auto;right:auto;width:100%;margin:12px 0 24px;padding:16px 0;border:0;border-top:1px solid var(--rule);background:transparent}.motion-title{margin-bottom:7px}.motion-panel #motion-help{margin-top:8px}.hero-bottom{position:relative;bottom:auto;left:auto;right:auto;height:62px;font-size:.75rem;gap:15px}.hero-bottom a{white-space:nowrap}.content-section{display:block;padding:65px 20px}.section-number{margin-bottom:30px}.content-section h2{font-size:clamp(2.4rem,9vw,3.5rem)}.large-copy{font-size:1.125rem;margin:25px 0 38px}.capabilities{grid-template-columns:1fr;gap:27px}.capabilities p{max-width:100%}.capabilities h3{margin-bottom:8px}.work-intro{margin:24px 0 30px}summary{grid-template-columns:25px 1fr 25px;gap:10px;padding:24px 0}summary h3{font-size:1.5rem}summary>span:nth-of-type(2){grid-column:2;grid-row:2;font-size:.8125rem}summary b{grid-column:3;grid-row:1 / 3}.work-detail{padding:0 0 25px;grid-template-columns:1fr;gap:20px}.work-detail img{height:240px}.contact .main-link{margin-top:25px}footer{padding:32px 20px;flex-wrap:wrap;align-items:flex-start}footer>div{width:100%;order:3}footer nav{gap:20px}.signal .brand{width:116px;padding:8px}.gallery-header{padding:20px;gap:20px;flex-wrap:wrap}.gallery-header>span{font-size:.75rem}.gallery-header>a:last-child{display:none}.gallery-intro{padding:45px 20px;display:block}.gallery-intro h1{font-size:clamp(2.65rem,10vw,4rem);margin-bottom:28px}.gallery-intro p{font-size:1rem}.gallery-intro .gallery-help{max-width:100%}.selection-status{margin:0 20px;line-height:1.6}.gallery-grid{padding:12px 20px 60px;grid-template-columns:1fr;gap:42px}.concept-image{height:350px}.concept-heading h2{font-size:2rem}.concept-heading{margin-top:16px}.concept>p{font-size:.9375rem}.gallery-outro{display:block;padding:50px 20px}.gallery-outro h2{font-size:2.5rem;margin-bottom:25px}.gallery-outro p{font-size:1rem}.gallery footer{font-size:.75rem}.toast{width:max-content;max-width:90vw;text-align:center}.main-link:hover span{transform:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.concept-image:hover img{transform:none}}
.turn-controls{display:flex;gap:22px;margin-top:8px}.turn{border:0;background:transparent;font-size:.75rem;padding:4px 0;min-height:30px}.turn:hover{text-decoration:underline;text-underline-offset:4px}

.motion-title,.motion-panel label,.pause,.turn{font-size:.875rem}
/* Review corrections: reserve breathing room and keep sculptures in their own plane. */
.hero{overflow-x:clip;overflow-y:visible;min-height:830px}.assembly .hero{min-height:880px}.content-section>div{grid-column:2}.archive-note{font-size:.875rem;line-height:1.6;margin:-20px 0 28px;color:var(--muted)}summary{grid-template-columns:1fr 1fr 30px}.work-list summary>span{font: .875rem/1.5 Manrope,sans-serif;color:var(--muted)}.signal .capabilities h3,.signal .hero-bottom span{font-family:Manrope,sans-serif}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;flex:none}.main-link .icon{width:26px;height:26px}.scene.unavailable{cursor:default}.motion-panel button:disabled,.motion-panel input:disabled{opacity:.5;cursor:default}::selection{background:var(--ink);color:var(--paper)}
@media(min-width:701px) and (max-width:1000px){.hero,.assembly .hero,.signal .hero{min-height:900px}}
@media(max-width:700px){.hero,.assembly .hero,.signal .hero,.ribbon .hero{min-height:0}.continuum h1{font-size:clamp(2.65rem,11.5vw,4.5rem)}summary{grid-template-columns:1fr 25px}.work-list summary>span{grid-column:1;grid-row:2}.work-list summary b{grid-column:2;grid-row:1 / 3}.content-section>div{grid-column:auto}.archive-note{margin:-10px 0 25px}}
