/* Editorial portfolio. Identity tokens and fonts come from styles.css. */
:root{--portfolio-pad:clamp(20px,3vw,56px)}
html{scroll-behavior:smooth;scroll-padding-top:120px}
body{color:var(--dark)}
body:not(.case){background:var(--bg);color:var(--dark)}
button,input,select{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid currentColor;outline-offset:7px}
.skip-link{position:fixed;left:20px;top:12px;z-index:10002;background:var(--dark);color:var(--cream);padding:12px;transform:translateY(-180%)}
.skip-link:focus{transform:none}
.header{height:108px;padding:20px var(--portfolio-pad);display:grid;grid-template-columns:1fr auto 1fr;align-items:start;color:var(--dark);background:linear-gradient(var(--bg) 65%,transparent);transition:background .35s}
.header::after{display:none}
.header .logo{grid-column:2;grid-row:1;display:block;color:inherit;font-family:var(--grotesk);font-size:clamp(26px,3.15vw,50px);font-weight:850;letter-spacing:-.075em;line-height:.95;white-space:nowrap;text-align:center}
.header .logo__dot{display:none}
.header .logo__text{display:block}
.header .logo__text sup{font-family:var(--body);font-size:.24em;letter-spacing:0;vertical-align:top;position:relative;top:4px;margin-left:5px}
.portfolio-nav{display:flex;align-items:center;gap:24px;grid-column:1;grid-row:1;padding-top:5px}
.portfolio-nav a,.header__right,.portfolio-button{font-family:var(--mono);font-size:11px;letter-spacing:.02em;text-transform:uppercase}
.portfolio-nav a{position:relative;padding:5px 0}
.portfolio-nav a::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
.portfolio-nav a:hover::after,.portfolio-nav a[aria-current=page]::after{transform:scaleX(1)}
.header__right{grid-column:3;grid-row:1;display:flex;justify-content:flex-end;gap:28px;align-items:center;padding-top:10px}
.header .lang-toggle{color:inherit;font-size:10px}
.header .lang-toggle button{color:inherit}
body.on-light-hero .header .logo,body.on-light-hero .header .header__right{color:var(--dark)}
body.case .header{color:var(--ink);background:linear-gradient(var(--accent) 65%,transparent)}
body.case .logo{color:var(--ink)}
.grain{opacity:.025}
.cursor{z-index:10001;pointer-events:none}
.portfolio-intro{padding:144px var(--portfolio-pad) 0;display:flex;justify-content:space-between;gap:20px;align-items:flex-start}
.portfolio-intro .mono{font-size:10px;text-transform:uppercase;line-height:1.6}
.portfolio-intro .portfolio-count{color:var(--dark)}
.portfolio-hero-copy{max-width:300px;font-size:15px;line-height:1.4}
.portfolio-button{border:0;background:none;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:14px;border-bottom:1px solid currentColor;padding:9px 0;transition:gap .3s}
.portfolio-button:hover{gap:23px}
.portfolio-mode{display:flex;justify-content:center;padding:32px 20px 12px;gap:25px}
.portfolio-mode button{font-size:10px;opacity:.5;border-bottom-color:transparent}
.portfolio-mode button[aria-pressed=true]{opacity:1;border-bottom-color:currentColor}
.portfolio-mode button:disabled{cursor:not-allowed}
@media(min-width:901px){
 .portfolio-intro{position:absolute;top:120px;left:var(--portfolio-pad);right:var(--portfolio-pad);padding:0;z-index:2;pointer-events:none}
 .portfolio-intro .portfolio-hero-copy{max-width:250px;font-size:13px}
 .portfolio-mode{position:absolute;top:185px;left:var(--portfolio-pad);padding:0;z-index:3;display:flex;flex-direction:column;align-items:flex-start;gap:5px}
 .portfolio-collage{padding-top:140px}
}
.portfolio-collage{position:relative;padding:0 var(--portfolio-pad);isolation:isolate}
.portfolio-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:4.8vw;column-gap:2.4vw;row-gap:18px;padding:10px 0 70px}
.portfolio-card{display:block;position:relative;min-width:0;align-self:start;transition:opacity .3s;--shift:0px;transform:translate3d(0,var(--shift),0)}
.portfolio-card figure{position:relative;overflow:hidden;background:var(--cream);transition:transform .65s var(--ease);isolation:isolate}
.portfolio-card img{width:100%;height:100%;aspect-ratio:var(--ratio,4/5);object-fit:cover;object-position:var(--focus,50% 50%);transition:transform .85s var(--ease);background:var(--cream)}
.portfolio-card:hover figure,.portfolio-card:focus-visible figure{transform:translateY(-7px)}
.portfolio-card:hover img{transform:scale(1.035)}
.portfolio-card .portfolio-card-arrow{position:absolute;right:12px;bottom:12px;background:var(--cream);color:var(--dark);width:36px;height:36px;display:grid;place-items:center;border-radius:50%;font-size:20px;transform:translateY(60px);transition:transform .4s var(--ease)}
.portfolio-card:hover .portfolio-card-arrow,.portfolio-card:focus-visible .portfolio-card-arrow{transform:none}
.portfolio-card figcaption{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:12px;font-family:var(--mono);font-size:10px;text-transform:uppercase;line-height:1.5}
.portfolio-card figcaption .card-name{font-family:var(--body);font-size:13px;font-weight:500;text-transform:none}
.portfolio-card figcaption .card-number{font-size:9px;opacity:.55;flex-shrink:0}
.portfolio-card:nth-child(8n+1){grid-column:2/span 3;grid-row:var(--row)/span 4;--ratio:4/5}
.portfolio-card:nth-child(8n+2){grid-column:6/span 3;grid-row:var(--row)/span 5;--ratio:3/4}
.portfolio-card:nth-child(8n+3){grid-column:10/span 3;grid-row:var(--row)/span 4;--ratio:1/1}
.portfolio-card:nth-child(8n+4){grid-column:1/span 3;grid-row:var(--row)/span 4;--ratio:4/5}
.portfolio-card:nth-child(8n+5){grid-column:5/span 4;grid-row:var(--row)/span 4;--ratio:4/3}
.portfolio-card:nth-child(8n+6){grid-column:10/span 3;grid-row:var(--row)/span 5;--ratio:3/4}
.portfolio-card:nth-child(8n+7){grid-column:2/span 3;grid-row:var(--row)/span 4;--ratio:1/1}
.portfolio-card:nth-child(8n+8){grid-column:6/span 4;grid-row:var(--row)/span 4;--ratio:4/3}
.portfolio-statement{padding:80px var(--portfolio-pad) 120px;display:grid;grid-template-columns:1fr 1fr;gap:60px;border-top:1px solid color-mix(in srgb,var(--dark) 22%,transparent);margin:0 var(--portfolio-pad)}
.portfolio-statement h1{font-family:var(--grotesk);font-weight:800;font-size:clamp(60px,8.7vw,160px);line-height:.84;letter-spacing:-.075em}
.portfolio-statement h1 span{display:block}
.portfolio-statement p{font-family:var(--body);font-size:clamp(24px,3vw,46px);line-height:1.2;letter-spacing:-.035em;max-width:650px}
.portfolio-statement .portfolio-button{margin-top:32px}
.footer{color:inherit;padding:28px var(--portfolio-pad);border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);background:transparent;display:flex;justify-content:space-between;align-items:center;gap:20px}
.footer .mono{font-size:10px}
.footer a:hover{text-decoration:underline;text-underline-offset:5px}
.footer--home .footer__brand,.footer--home .footer__mid,.footer--home .footer__year{justify-self:auto}
.portfolio-page{padding:170px var(--portfolio-pad) 100px;min-height:calc(100dvh - 75px)}
.archive-heading{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:45px}
.archive-heading h1{font:800 clamp(52px,8vw,120px)/.9 var(--grotesk);letter-spacing:-.065em}
.archive-tools{display:grid;grid-template-columns:1fr auto;gap:30px;align-items:center;margin-bottom:30px}
.archive-search{display:flex;align-items:center;gap:12px;border-bottom:1px solid currentColor;padding:12px 0;max-width:400px}
.archive-search input{width:100%;min-width:0;background:none;border:0;outline:0;color:inherit;font-size:14px}
.archive-search input::placeholder{color:inherit;opacity:.6}
.archive-layout{display:flex;gap:15px}
.archive-layout button{font:11px var(--mono);color:inherit;border:0;background:none;cursor:pointer;padding:8px 0;border-bottom:1px solid transparent;opacity:.55}
.archive-layout button[aria-pressed=true]{opacity:1;border-bottom-color:currentColor}
.archive-table-head,.archive-row{display:grid;grid-template-columns:60px 1.5fr 1fr 1fr 25px;gap:20px}
.archive-table-head{border-bottom:1px solid currentColor;padding:15px 0;font:10px var(--mono);text-transform:uppercase;opacity:.6}
.archive-sort{color:inherit;border:0;background:none;font:inherit;text-transform:inherit;text-align:left;cursor:pointer}
.archive-row{position:relative;border-bottom:1px solid color-mix(in srgb,currentColor 20%,transparent);padding:25px 0;align-items:baseline;transition:padding .3s,background .3s}
.archive-row:hover{padding-left:12px;padding-right:12px;background:color-mix(in srgb,var(--cream) 12%,transparent)}
.archive-row .archive-num,.archive-row .archive-tags,.archive-row .archive-credit{font:11px/1.5 var(--mono)}
.archive-name{font-size:clamp(20px,2vw,30px);letter-spacing:-.035em}
.archive-thumb{display:none}
.archive-results.is-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:50px 25px}
.archive-results.is-grid .archive-row{display:flex;flex-direction:column;padding:0 0 20px;gap:8px;min-width:0;align-items:stretch}
.archive-results.is-grid .archive-thumb{display:block;overflow:hidden;margin-bottom:10px}
.archive-thumb img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .6s var(--ease)}
.archive-row:hover .archive-thumb img{transform:scale(1.035)}
.archive-results.is-grid .archive-num,.archive-results.is-grid .archive-credit,.archive-results.is-grid .archive-arrow{display:none}
.archive-empty{padding:60px 0;font-size:24px}
.about-title{font:800 clamp(66px,10vw,160px)/.85 var(--grotesk);letter-spacing:-.075em;margin-bottom:90px}
.about-body{display:grid;grid-template-columns:1fr 2fr;gap:50px;border-top:1px solid currentColor;padding-top:32px}
.about-copy{font-size:clamp(30px,4.9vw,76px);line-height:1.12;letter-spacing:-.04em}
.about-meta{font-size:12px;line-height:1.9}
.about-links{display:flex;gap:35px;margin-top:55px}
.about-project-strip{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:5vw;align-items:center;margin:120px 0 20px}
.about-project-strip img{width:100%;height:auto}
.about-project-strip a:nth-child(2){margin-top:80px}
/* Keep the original WebGL gallery as an optional, lazily initialized experience. */
.portfolio-interactive{min-height:75dvh}
.portfolio-interactive .dg_section{min-height:75dvh;height:80dvh}
.portfolio-interactive .dg_head{display:none}
/* Projects retain their individual accent/ink, media, copy and related slider. */
.case #caseView{padding:120px var(--portfolio-pad) 0}
.case .chero{padding-top:25px;display:flex;flex-direction:column}
.case .chero__title{font-family:var(--grotesk);font-size:clamp(48px,7.4vw,130px)!important;line-height:.94;letter-spacing:-.065em;white-space:normal;text-wrap:balance;max-width:1100px}
.case .chero__title .line{display:inline;overflow:visible}
.case .chero__title .line:not(:last-child)::after{content:' '}
.case .chero__title .line__i{display:inline;transform:none;opacity:1}
.case .chero__meta{display:grid;grid-template-columns:1fr 1.5fr;gap:60px;margin-top:36px}
.case .chero__tags span{border:0;border-radius:0;padding:0;margin-right:10px;text-transform:uppercase;font-size:10px}
.case .chero__desc{max-width:650px;min-width:0}
.case .chero__lead{font-size:clamp(18px,1.65vw,26px);line-height:1.4}
.case .chero__desc .mono{font-size:11px}
.case .cbody{margin-top:65px;gap:45px}
.case .blk-photo{max-width:1160px}
.case .blk-photo .blk-media,.case .blk-photo .blk-media img{border-radius:0}
.case .blk-photo .blk-media img{width:100%;max-height:90dvh;object-fit:contain}
.case .blk-text{align-self:flex-end;max-width:700px;width:65%;padding:35px 0 55px}
.case .blk-text p{font-size:clamp(20px,2vw,30px)}
.case .blk-text .mono{font:11px var(--mono);text-transform:uppercase;letter-spacing:.02em}
.case .case-ai-note{max-width:700px;align-self:flex-end;width:65%;margin:0 0 20px}
.case .more-projects{padding:60px 0;border-top:1px solid color-mix(in srgb,var(--ink) 30%,transparent)}
.case .more-projects__label{font:11px var(--mono);text-transform:uppercase;margin-bottom:30px}
.case .footer--case{margin:0 calc(-1 * var(--portfolio-pad))}
.case .case-utility{display:flex;justify-content:space-between;padding-bottom:30px;font:11px var(--mono);text-transform:uppercase}
.lightbox{position:fixed;inset:0;background:var(--dark);color:var(--cream);z-index:10000;display:grid;grid-template-rows:auto 1fr auto;padding:20px}
.lightbox__bar{display:flex;align-items:center;justify-content:space-between;gap:20px;font:11px var(--mono)}
.lightbox button{color:inherit;background:none;border:1px solid currentColor;padding:10px 15px;cursor:pointer;font:11px var(--mono)}
.lightbox figure{display:flex;align-items:center;justify-content:center;min-height:0;padding:25px}
.lightbox img{max-height:100%;max-width:100%;object-fit:contain;width:auto;height:auto}
.lightbox__controls{display:flex;justify-content:center;align-items:center;gap:35px;font:11px var(--mono)}
.case .blk-media{cursor:zoom-in}
@media(min-width:1800px){.portfolio-grid{grid-auto-rows:80px;max-width:1800px;margin:auto}}
@media(max-width:900px){
 .header{height:94px;padding-top:22px}.header__right{gap:12px}.header .meta__loc{display:none}.portfolio-nav{gap:15px}.portfolio-nav a{font-size:10px}
 .portfolio-intro{padding-top:125px}.portfolio-hero-copy{max-width:260px}.portfolio-grid{grid-auto-rows:5.5vw;gap:14px 2vw}
 .portfolio-card figcaption .card-name{font-size:12px}.portfolio-card .card-number{display:none}
 .archive-table-head,.archive-row{grid-template-columns:35px 1.4fr 1fr 24px;gap:15px}.archive-credit{display:none}
 .case .chero__meta{gap:30px}.portfolio-statement{padding:60px 0 90px;gap:25px}
 .about-body{grid-template-columns:1fr 3fr}.archive-results.is-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
 .header{height:104px;grid-template-columns:1fr auto;align-items:center;background:linear-gradient(var(--bg) 80%,transparent);padding-top:17px;padding-bottom:24px}
 .header .logo{grid-column:1;grid-row:1;justify-self:start;font-size:34px}.header__right{grid-column:2;grid-row:1;padding:0}
 .portfolio-nav{grid-row:2;grid-column:1/span 2;margin-top:15px;gap:25px;padding:0}.portfolio-nav a{font-size:10px}
 .portfolio-intro{padding-top:132px;gap:25px}.portfolio-intro .mono{font-size:8px}.portfolio-hero-copy{font-size:12px;max-width:210px}
 .portfolio-mode{justify-content:flex-start;padding:25px var(--portfolio-pad) 15px;gap:22px}
 .portfolio-mode button{font-size:9px}
 .portfolio-grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:auto;gap:30px 18px;padding-bottom:45px;align-items:start}
 .portfolio-card:nth-child(n){grid-column:auto;grid-row:auto;--shift:0px!important}
 .portfolio-card:nth-child(4n+2){margin-top:50px}.portfolio-card:nth-child(4n+3){margin-top:-10px}
 .portfolio-card:nth-child(4n+1){--ratio:3/4}.portfolio-card:nth-child(4n+2){--ratio:4/5}.portfolio-card:nth-child(4n+3){--ratio:4/3}.portfolio-card:nth-child(4n){--ratio:3/4}
 .portfolio-card figcaption{margin-top:8px;line-height:1.35}.portfolio-card figcaption .card-name{font-size:12px}.portfolio-card .portfolio-card-arrow{display:none}
 .portfolio-statement{grid-template-columns:1fr;padding:45px 0 65px;margin:0 var(--portfolio-pad);gap:30px}.portfolio-statement h1{font-size:22vw}.portfolio-statement p{font-size:25px}
 .footer{padding-top:25px;padding-bottom:25px;gap:14px;flex-wrap:wrap}.footer .mono{font-size:9px}
 .portfolio-page{padding-top:150px;padding-bottom:60px}.archive-heading{margin-bottom:30px}.archive-heading .mono{font-size:9px}
 .archive-tools{gap:15px;margin-bottom:18px}.archive-search{max-width:220px}.archive-search input{font-size:12px}
 .archive-table-head,.archive-row{grid-template-columns:25px 1fr 16px;gap:10px}.archive-table-head .archive-tags,.archive-row .archive-tags{display:none}
 .archive-row{padding:22px 0}.archive-name{font-size:22px}.archive-row .archive-num{font-size:9px}.archive-results.is-grid{gap:28px 16px}.archive-results.is-grid .archive-name{font-size:18px}
 .archive-results.is-grid .archive-row .archive-tags{display:block;font-size:9px}.archive-results.is-grid .archive-thumb img{aspect-ratio:3/4}
 .about-title{font-size:23vw;margin-bottom:55px}.about-body{grid-template-columns:1fr;gap:30px}.about-copy{font-size:34px}.about-meta{font-size:10px}
 .about-project-strip{gap:16px;margin-top:60px}.about-links{gap:25px}
 .case #caseView{padding-top:120px}.case .chero{padding-top:15px}.case .chero__title{font-size:clamp(40px,11vw,66px)!important}
 .case .chero__meta{grid-template-columns:1fr;gap:22px;margin-top:28px}.case .chero__lead{font-size:17px}.case .chero__tags{gap:10px}
 .case .cbody{gap:25px;margin-top:35px}.case .blk-text,.case .case-ai-note{width:100%;padding-top:20px;padding-bottom:30px}.case .blk-text p{font-size:21px}
 .case .case-ai-note p{font-size:10px}.case .more-projects{padding-top:35px}.case .case-utility{font-size:9px;padding-bottom:24px}
 .lightbox{padding:16px}.lightbox figure{padding:20px 0}.lightbox__bar{font-size:10px}.lightbox button{font-size:10px;padding:10px}
}
@media(hover:none){.cursor{display:none!important}.portfolio-card .portfolio-card-arrow{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.portfolio-card{transform:none!important}.grain{animation:none}.case .blk{opacity:1;transform:none}}
@media(min-width:901px){.portfolio-collage{padding-top:140px}}
.case .chero{align-items:center}
.case .case-hero-media{width:100%;max-width:1050px;opacity:1;transform:none;margin:auto}
.case .case-hero-media .blk-media{display:flex;justify-content:center;align-items:center;background:transparent}
.case .case-hero-media img{height:auto;width:auto;max-width:100%;max-height:72dvh;object-fit:contain}
.case .case-hero-media .blk-media img{height:auto;width:auto;max-width:100%;max-height:64dvh;object-fit:contain}
.case .chero__title{position:relative;z-index:2;text-align:center;margin-top:-.22em;max-width:100%;text-shadow:0 2px 15px color-mix(in srgb,var(--accent) 30%,transparent)}
.case .chero__meta{width:100%;margin-top:50px;padding-top:30px;border-top:1px solid color-mix(in srgb,var(--ink) 25%,transparent)}
.case .case-hero-media .blk-media{cursor:zoom-in}
@media(max-width:600px){.case .case-hero-media img{max-height:65dvh}.case .chero__title{font-size:10vw!important;margin-top:-.1em}.case .chero__meta{margin-top:30px}}
@media(max-width:600px){
 .portfolio-grid{grid-template-columns:1fr;gap:42px;padding-top:15px}
 .portfolio-card:nth-child(n){width:86%;margin:0 auto;--ratio:auto}
 .portfolio-card:nth-child(3n+2){width:100%}
 .portfolio-card img{height:auto;aspect-ratio:auto;object-fit:contain}
 .portfolio-card figcaption .card-name{font-size:14px}
 .case .case-hero-media .blk-media img{max-height:62dvh}
}
/* Spatial home: one screen, a larger project plane, no vertical document scroll. */
body.spatial-home{overflow:hidden;height:100dvh;overscroll-behavior:none}
.spatial-home #homeView{position:fixed;inset:0;height:100dvh;overflow:hidden;padding:0}
.spatial-home .portfolio-intro,.spatial-home .portfolio-statement,.spatial-home #homeView>.portfolio-footer{display:none}
.spatial-home .header{background:none;pointer-events:none;z-index:100}
.spatial-home .header a,.spatial-home .header button{pointer-events:auto}
.spatial-home .portfolio-collage{position:absolute;inset:85px 0 0;padding:0;overflow:hidden;touch-action:none;cursor:grab;isolation:isolate}
.spatial-home .portfolio-collage.is-dragging{cursor:grabbing}
.spatial-home .portfolio-grid{position:absolute;left:0;top:0;display:block;padding:0;will-change:transform;transform-origin:0 0}
.spatial-home .portfolio-grid .portfolio-card{position:absolute;display:block;margin:0;max-width:none;transform:none;transition:none;user-select:none;-webkit-user-drag:none;outline-offset:4px}
.spatial-home .portfolio-card figure{width:100%;margin:0}
.spatial-home .portfolio-card img{display:block;aspect-ratio:var(--ratio);pointer-events:none;-webkit-user-drag:none}
.spatial-home .portfolio-card figcaption{font-size:9px;margin-top:7px;opacity:0;transition:opacity .2s}
.spatial-home .portfolio-card:hover figcaption,.spatial-home .portfolio-card:focus-visible figcaption{opacity:1}
.spatial-home .portfolio-card .card-name{font-size:12px}
.spatial-home .portfolio-mode{position:fixed;top:auto;bottom:20px;left:var(--portfolio-pad);z-index:10;padding:0;display:flex;flex-direction:row;gap:16px}
.spatial-home .portfolio-mode button{font-size:9px}
.spatial-hint,.spatial-count{display:none}
.spatial-home .spatial-hint,.spatial-home .spatial-count{display:block;position:fixed;bottom:24px;z-index:5;font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.04em;pointer-events:none}
.spatial-hint{left:50%;transform:translateX(-50%)}
.spatial-count{right:var(--portfolio-pad)}
.spatial-alternate .spatial-hint{display:none}
.spatial-home .portfolio-interactive{position:absolute;inset:85px 0 55px;overflow:hidden}
.spatial-home .portfolio-interactive .dg_section,.spatial-home .portfolio-interactive .dg_stage{height:100%;min-height:0}
.project-gather{position:fixed;inset:0;z-index:20000;pointer-events:all;overflow:hidden;background:transparent}
.project-gather img{position:absolute;display:block;object-fit:cover;transform-origin:center;max-width:none}
#introVeil{background:var(--bg);color:var(--dark);overflow:hidden}
#introVeil .intro_bar{display:none}
.intro-name{display:flex;align-items:center;justify-content:center;font-family:var(--grotesk);font-size:clamp(48px,15vw,240px);font-weight:850;line-height:.95;letter-spacing:-.075em;white-space:nowrap;transform-origin:center;will-change:transform}
.intro-name span{display:inline-block;transform-origin:center}
@media(max-width:700px){
 .spatial-home .portfolio-collage{inset:105px 0 0}
 .spatial-home .portfolio-card figcaption{opacity:1}
 .spatial-home .portfolio-mode{bottom:18px;gap:12px}
 .spatial-home .portfolio-mode button{font-size:8px}
 .spatial-home .spatial-hint{top:100px;bottom:auto;font-size:8px}
 .spatial-home .spatial-count{bottom:21px;font-size:8px}
}
@media(prefers-reduced-motion:reduce){.spatial-home .portfolio-grid{will-change:auto}.spatial-home .portfolio-card figure,.spatial-home .portfolio-card img{transition:none}}
.spatial-home #homeView>.footer{display:none}
.spatial-home .portfolio-card{touch-action:none}
.spatial-home .portfolio-card:focus-visible{z-index:20}

.spatial-home .spatial-hint{background:var(--bg);padding:5px 8px;border-radius:2px}
.header .logo__text{word-spacing:.1em}

/* Keep the navigation limits above the bottom controls. */
.spatial-home .portfolio-collage{bottom:58px}

/* Each full-height panel sticks while the next image rises over it. */
.case #caseView{padding-top:0}
.case .case-utility{position:absolute;top:110px;left:var(--portfolio-pad);right:var(--portfolio-pad);z-index:40;pointer-events:none}
.case .case-utility a{pointer-events:auto}
.case .case-stack{position:relative;isolation:isolate;margin:0 calc(-1 * var(--portfolio-pad));}
.case .case-stack-panel{position:sticky;top:0;height:100svh;display:flex;align-items:center;justify-content:center;padding:90px 5vw 50px;box-sizing:border-box;pointer-events:none}
.case .case-stack .blk-photo{position:relative;width:fit-content;max-width:100%;margin:0;opacity:1;transform:none;transition:none;pointer-events:auto}
.case .case-stack .blk-photo .blk-media{display:block;max-width:100%;overflow:visible;background:none;cursor:zoom-in}
.case .case-stack .blk-photo .blk-media img{display:block;width:auto;height:auto;max-width:min(78vw,1080px);max-height:72svh;object-fit:contain;transform:none;border-radius:0}
.case .case-stack .chero__title{position:absolute;bottom:24px;left:3vw;right:3vw;margin:0;max-width:none;text-align:center;z-index:2;pointer-events:none;font-size:clamp(40px,7.4vw,130px)!important}
.case .chero{padding-top:30px;position:relative;background:var(--accent);z-index:2}
.case .chero__meta{margin-top:0;padding-top:30px}
@media(max-width:600px){
 .case .case-utility{top:105px;font-size:8px}
 .case .case-stack-panel{padding:120px 5vw 65px}
 .case .case-stack .blk-photo .blk-media img{max-width:84vw;max-height:61svh}
 .case .case-stack .chero__title{font-size:10vw!important;bottom:30px}
}
@media(prefers-reduced-motion:reduce){.case .case-stack-panel{position:relative}}

/* Subtle rounding on home project covers. */
.spatial-home .portfolio-card figure{border-radius:10px;overflow:hidden}

/* Keep Sebastian title compact and on one line. */
.case .case-stack #caseTitle[data-project="sebastian"]{font-size:clamp(16px,5vw,86px)!important;white-space:nowrap;text-wrap:nowrap}

/* One full-width project description, then materials and credits. */
.case .chero{align-items:stretch}
.case .chero__meta{display:block;grid-template-columns:none;margin-top:0;padding-top:30px}
.case .chero__lead{width:100%;max-width:none;font-size:clamp(20px,2vw,30px);line-height:1.4;text-align:left}
.case .cbody{margin-top:28px;gap:24px}
.case .blk-text{width:100%;max-width:none;align-self:stretch;padding:0 0 24px;text-align:left}
.case .blk-text p{font-size:clamp(18px,1.6vw,24px);line-height:1.4}
.case .blk-text .mono{font:11px var(--mono);margin-bottom:14px}
.case .blk-text .case-credit{font-size:14px}
.case .case-ai-note{align-self:stretch;width:100%;max-width:none;padding:0;margin-top:0;text-align:left}

/* The incoming image casts a soft shadow onto the exposed photo underneath. */
.case .case-stack .blk-photo.casts-soft-contact-shadow{box-shadow:0 4px 18px rgba(0,0,0,.18),0 12px 32px -10px rgba(0,0,0,.12)}

/* Home covers fill their frames consistently on desktop and touch screens. */
.spatial-home .portfolio-card figure{aspect-ratio:var(--ratio);background:transparent;border:0;padding:0}
.spatial-home .portfolio-card figure img{width:100%;height:100%;aspect-ratio:auto;object-fit:cover;object-position:var(--focus,50% 50%);background:transparent;border:0;border-radius:inherit}
