@font-face{font-family:PortfolioDisplay;src:url('assets/fonts/DMSerifDisplay-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:PortfolioSans;src:url('assets/fonts/Manrope-Variable.ttf') format('truetype');font-weight:200 800;font-style:normal;font-display:swap}
@font-face{font-family:PortfolioInter;src:url('assets/fitness/v2/InterVariable.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{--paper:#f2eee6;--ink:#263c36;--theme:#42665b;--card-width:min(62.5vw,110vh);--cover-height:40svh;--gap:3.125vw;--serif:'Bodoni 72','Didot','Iowan Old Style',Georgia,serif;--sans:PortfolioInter,Arial,sans-serif}
*{box-sizing:border-box}html,body{margin:0}body.concept-home{background:var(--theme);color:var(--paper);font-family:var(--sans);overflow:hidden;overscroll-behavior:none}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid currentColor;outline-offset:5px}button:disabled{cursor:default}img{max-width:100%;display:block}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;clip:rect(0,0,0,0);overflow:hidden;white-space:nowrap}.skip-link{position:fixed;left:20px;top:-100px;background:var(--paper);color:var(--ink);padding:14px;z-index:100}.skip-link:focus{top:14px}[hidden]{display:none!important}
.home-header{position:fixed;top:0;left:0;width:100%;height:90px;padding:0 6.25vw;display:flex;align-items:center;justify-content:space-between;z-index:20;font-size:12px;letter-spacing:.16em;font-weight:700}.name-mark{position:relative;display:flex;align-items:center;min-height:48px;overflow:hidden}.name-roll{position:absolute;top:100%;left:0;white-space:nowrap;transition:transform .4s cubic-bezier(.2,.7,.2,1)}.name-mark:hover .name-roll{transform:translateY(-100%)}.about-trigger{min-height:48px;display:flex;align-items:center;gap:12px;font-size:12px;letter-spacing:.16em;font-weight:700}.about-trigger span{font-size:18px;transition:transform .3s}.about-trigger:hover span{transform:translate(3px,-3px)}
#gallery{position:relative;width:100%;height:100svh;min-height:520px;overflow:hidden;outline-offset:-6px;touch-action:pinch-zoom}.pagination{position:absolute;z-index:5;top:calc(10svh - 24px);left:50%;transform:translateX(-50%);display:flex}.dot{width:48px;height:48px;display:grid;place-items:center;padding:0}.dot span{width:14px;height:4px;border-radius:6px;background:currentColor;opacity:.7;transition:opacity .5s,width .5s}.dot[aria-pressed=true] span{opacity:1;width:23px}.dot:hover span{opacity:1}
.gallery-stage{position:absolute;inset:0}.project{position:absolute;left:50%;top:14svh;width:var(--card-width);will-change:transform}.project-link{display:block;outline-offset:8px;user-select:none;-webkit-user-drag:none}.cover{height:var(--cover-height);width:100%;position:relative;overflow:hidden;isolation:isolate;background:#d6ded6;will-change:transform;transform-origin:center}.cover-image{width:100%;height:100%;object-fit:cover;pointer-events:none;will-change:transform;transform:scale(1.04);-webkit-user-drag:none}.cover-rent{display:flex;background:#bed9c5}.cover-rent>.cover-image{width:60%;object-position:50% 36%;transform-origin:center 34%}.rent-character{position:absolute;left:60%;right:0;top:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5%;color:#314c40;background:#bed9c5}.rent-character>span{position:absolute;top:9%;left:12%;font-size:clamp(7px,.72vw,12px);font-weight:700;line-height:1.3;letter-spacing:.12em}.rent-character>img{width:82%;max-height:69%;object-fit:contain;pointer-events:none}.rent-character small{position:absolute;bottom:8%;left:12%;font-size:clamp(7px,.6vw,10px)}.cover-fitness>.cover-image{object-position:50% 47%}.fitness-mark{position:absolute;right:5%;top:4%;color:#fddb88;font-size:52px;letter-spacing:-.12em;font-weight:900;font-style:italic}.cover-tips>.cover-image{object-position:50% 54%}.cover-offlo{background:#202629}.cover-offlo>.cover-image{object-fit:contain;transform:scale(1.01)}.cover-checker>.cover-image{object-position:50% 55%}.cover-fallback{position:absolute;inset:0;background:var(--project-color);display:grid;place-content:center;text-align:center;font:60px var(--serif)}.cover-fallback small{display:block;font:14px var(--sans);margin-top:16px}
.project-caption{text-align:center;margin-top:9.5svh;will-change:transform;pointer-events:none}.project-caption h2{font:700 15svh/.95 var(--serif);letter-spacing:-.055em;margin:0;white-space:nowrap}.project-caption p{font-size:12px;line-height:1.6;letter-spacing:.02em;margin:24px -12vw 0;opacity:0;transform:translateY(10px);transition:opacity .45s,transform .45s}.project.is-current .project-caption p{opacity:1;transform:none}
.gallery-bottom{position:absolute;left:6.25vw;right:6.25vw;bottom:3.5svh;display:flex;align-items:center;justify-content:space-between;gap:20px;z-index:5;font-size:10px;font-weight:600;letter-spacing:.12em}.gallery-hint{display:flex;align-items:center;gap:18px;opacity:1}.gallery-hint>span:last-child{font-size:22px;font-weight:400}.hint-touch{display:none}#open-current{display:flex;min-height:48px;align-items:center;gap:25px}#open-current>span{font-size:23px;font-weight:400;transition:transform .3s}#open-current:hover>span{transform:translate(3px,-3px)}.position-controls{display:flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums}.position-controls button{width:48px;height:48px;font-size:24px;border-radius:50%;transition:background .2s}.position-controls button:hover{background:#ffffff16}.position-controls>span{min-width:53px;text-align:center}
.custom-cursor{position:fixed;z-index:30;left:0;top:0;width:76px;height:76px;border:1px solid #ffffffa8;border-radius:50%;display:flex;align-items:center;justify-content:center;gap:5px;font-size:10px;letter-spacing:.05em;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.6);color:white;backdrop-filter:blur(3px);background:#26362c18}.custom-cursor i{font:18px var(--sans);font-style:normal}.dragging .custom-cursor{background:#ffffff18}.dragging .project-link{cursor:grabbing}.arrival{position:fixed;inset:0;z-index:80;background:var(--paper);color:var(--ink);display:grid;place-items:center;pointer-events:none;animation:arrival-away .75s .25s cubic-bezier(.7,0,.2,1) forwards}.arrival span{font-size:11px;letter-spacing:.2em;animation:arrival-text .6s both}@keyframes arrival-away{to{transform:translateY(-100%)}}@keyframes arrival-text{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
#about-dialog{position:fixed;inset:0;margin:0;width:100%;max-width:none;height:100svh;max-height:none;border:0;padding:0;background:#e8e8df;color:var(--ink);overflow:auto;overscroll-behavior:contain}#about-dialog::backdrop{background:#263c3660}.about-top{display:flex;justify-content:space-between;align-items:center;padding:22px 6.25vw;font-size:12px;letter-spacing:.16em;font-weight:700;position:sticky;top:0;z-index:2;background:#e8e8dfee}.about-top button{min-height:48px;display:flex;align-items:center;gap:16px;font-size:12px;letter-spacing:.12em}.about-top button span{font-size:26px;font-weight:400}.about-layout{max-width:1450px;margin:auto;padding:3vh 8% 8vh;display:grid;grid-template-columns:1fr 1fr;gap:9%;align-items:center;min-height:calc(100svh - 92px)}.about-portrait{position:relative;min-height:500px;height:66vh;isolation:isolate}.about-portrait img{position:absolute;bottom:0;left:0;width:100%;height:100%;object-fit:contain;object-position:bottom;z-index:1}.portrait-orbit{position:absolute;left:0;top:8%;width:100%;aspect-ratio:1;border:1px solid #87998b;border-radius:50%;transform:rotate(-20deg) scaleY(.88)}.portrait-orbit:after{content:'';position:absolute;inset:10%;border:1px solid #87998b5e;border-radius:50%}.portrait-caption{position:absolute;left:-10px;bottom:10%;z-index:2;writing-mode:vertical-rl;font-size:9px;letter-spacing:.14em;transform:rotate(180deg)}.about-copy .eyebrow{font-size:10px;letter-spacing:.13em;margin:0 0 25px;font-weight:700}.about-copy h2{font:400 clamp(60px,6.8vw,110px)/.98 var(--serif);letter-spacing:-.05em;margin:0 0 30px}.about-copy h2 em{font-weight:400;color:#536e5c}.about-copy>p:not(.eyebrow){font-size:15px;line-height:1.7;margin:0 0 16px;max-width:470px}.about-links{display:flex;flex-wrap:wrap;gap:24px;margin:24px 0}.about-links>*{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:48px;border-bottom:1px solid #7c8e7e;padding:0;font-size:10px;letter-spacing:.1em;font-weight:700}.about-links span{font-size:18px}.about-copy>small{font-size:11px;line-height:1.6;max-width:420px;display:block;color:#506358}.no-script{padding:0 8%}
@media(pointer:fine){.project-link{cursor:none}}@media(pointer:coarse){.custom-cursor{display:none}.hint-desktop{display:none}.hint-touch{display:inline}}
@media(min-width:1200px){.project-caption h2{font-size:min(15svh,180px)}}
@media(max-width:600px){:root{--card-width:82vw;--cover-height:39svh;--gap:5vw}.home-header{height:80px;padding:0 7vw;font-size:11px}.about-trigger{font-size:11px}.pagination{top:calc(13svh - 24px)}.dot{width:48px}.dot span{width:11px}.dot[aria-pressed=true] span{width:18px}.project{top:20svh}.cover-rent>.cover-image{width:65%}.rent-character{left:65%;padding:3%}.rent-character>img{width:100%}.rent-character>span{font-size:7px;left:10%}.rent-character>small{font-size:7px;left:10%;max-width:80%;line-height:1.5}.fitness-mark{font-size:34px}.project-caption{margin-top:6svh}.project-caption h2{font-size:21vw}.project-caption p{font-size:11px;margin:19px -2vw 0;line-height:1.5}.gallery-bottom{bottom:2svh;left:7vw;right:7vw;flex-wrap:wrap;gap:0}.gallery-hint{font-size:8px;gap:8px}.gallery-hint span:last-child{font-size:19px}#open-current{order:-1;flex-basis:100%;justify-content:center;margin-bottom:6px;font-size:10px}.position-controls{gap:0;font-size:9px}.position-controls button{width:48px}.position-controls span{min-width:44px}.about-top{padding:12px 7vw}.about-layout{padding:0 8% 50px;grid-template-columns:1fr;gap:30px}.about-portrait{height:40vh;min-height:290px;max-width:360px;width:100%;margin:auto}.about-copy h2{font-size:66px}.about-copy>p:not(.eyebrow){font-size:15px}.about-copy>small{font-size:12px}.about-links{gap:20px}.hint-desktop{display:none}.hint-touch{display:inline}}
@media(max-height:620px) and (min-width:601px){.home-header{height:65px}.pagination{top:42px}.project{top:21svh;--cover-height:38svh}.project-caption{margin-top:5svh}.project-caption h2{font-size:13svh}.project-caption p{margin-top:12px;font-size:10px}.gallery-bottom{bottom:1svh}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.arrival,.custom-cursor{display:none!important}.cover-image{transform:none!important}.project{will-change:auto}}

.position-controls button:disabled{opacity:.3;background:none}

.home-header{pointer-events:none}.home-header>a,.home-header>button{pointer-events:auto}

@media(max-height:620px) and (min-width:601px){#gallery{min-height:0}}
@media(max-height:680px) and (max-width:600px){.project{top:19svh;--cover-height:36svh}.project-caption{margin-top:5svh}.project-caption p{margin-top:14px}}
@media(max-height:600px) and (max-width:600px){#gallery{min-height:0}.project-caption p{display:none}}
@media(prefers-reduced-motion:reduce){.project-link{cursor:pointer}}

/* Diagonal editorial gallery: a stable reading column beside an inclined track. */
:root{--card-width:37vw;--cover-height:46svh}
.home-header{height:90px}
.pagination{top:50%;left:auto;right:4.5vw;transform:translateY(-50%);flex-direction:column}
.dot span{width:5px;height:10px;transition:height .35s,opacity .35s}
.dot[aria-pressed=true] span{width:5px;height:20px}
.gallery-stage{mask-image:linear-gradient(to bottom,transparent 0%,#000 13%,#000 90%,transparent 100%)}
.project{left:68%;top:51%;width:var(--card-width)}
.cover{height:var(--cover-height);transform-origin:center;backface-visibility:hidden;will-change:transform,filter}
.project-stories{position:absolute;left:6.25vw;top:25svh;width:39vw;z-index:6;pointer-events:none}
.project-caption{position:absolute;left:0;top:0;width:100%;text-align:left;margin:0;pointer-events:none}
.project-caption h2{font:700 clamp(72px,9.4vw,164px)/1.05 var(--serif);letter-spacing:-.055em;margin:0 0 20px;white-space:nowrap}
.project-caption .project-category{font-size:10px;font-weight:600;line-height:1.5;letter-spacing:.11em;text-transform:uppercase;margin:0 0 20px;opacity:.86;transform:none;transition:none}
.project-caption .project-description{font-size:clamp(16px,1.6vw,24px);font-weight:400;line-height:1.65;letter-spacing:0;margin:0;max-width:410px;opacity:1;transform:none;transition:none}
#open-current{position:relative;margin-top:clamp(235px,23vw,345px);width:max-content;min-height:48px;font-size:11px;font-weight:700;letter-spacing:.13em;pointer-events:auto;gap:20px}
.gallery-bottom{bottom:4svh;left:6.25vw;right:6.25vw}
.position-controls{gap:10px}
.gallery-hint{font-size:9px}
.no-js-title{display:none}
@media(min-width:1600px){.project-stories{top:24svh}#open-current{margin-top:330px}}
@media(min-width:701px) and (max-width:1000px){:root{--card-width:39vw;--cover-height:39svh}.project{left:69%;top:52%}.project-stories{width:39vw;top:27svh}.project-caption h2{font-size:9.2vw}.project-caption .project-category{font-size:9px;max-width:250px}.project-caption .project-description{font-size:16px;max-width:280px}#open-current{margin-top:230px}.pagination{right:1.6vw}}
@media(max-width:700px){:root{--card-width:74vw;--cover-height:32svh}.home-header{height:76px;padding:0 7vw}.project-stories{left:7vw;top:12.5svh;width:86vw;text-align:left}.project-caption h2{font-size:15vw;line-height:1;margin:0 0 9px}.project-caption .project-category{font-size:8px;letter-spacing:.075em;margin:0 0 10px;max-width:none}.project-caption .project-description{font-size:13px;line-height:1.5;max-width:290px}.project{left:52%;top:58%}.gallery-stage{mask-image:linear-gradient(to bottom,transparent 30%,#000 39%,#000 77%,transparent 86%)}.pagination{top:57%;right:0;left:auto;transform:translateY(-50%)}.dot{width:48px;height:48px}.dot span{width:4px;height:8px}.dot[aria-pressed=true] span{width:4px;height:16px}#open-current{position:fixed;left:7vw;top:auto;bottom:10svh;min-height:48px;margin:0;width:86vw;justify-content:flex-start;font-size:10px}.gallery-bottom{bottom:2svh;flex-wrap:nowrap;gap:0;left:7vw;right:7vw}.gallery-hint{font-size:8px}.position-controls{gap:0}.project-link{outline-offset:4px}.cover-rent>.cover-image{width:60%}.rent-character{left:60%}.rent-character>span,.rent-character small{font-size:7px}}
@media(max-height:620px) and (min-width:701px){#gallery{min-height:0}.home-header{height:64px}.project-stories{top:25svh}.project-caption h2{font-size:13svh;margin-bottom:10px}.project-caption .project-category{font-size:8px;margin-bottom:12px}.project-caption .project-description{font-size:14px;line-height:1.5;max-width:290px}#open-current{margin-top:clamp(175px,48svh,260px);font-size:9px}.project{top:54%;--cover-height:49svh}.pagination{top:54%;right:2vw}.gallery-bottom{bottom:1svh}.gallery-hint{font-size:8px}}
@media(max-height:680px) and (max-width:700px){#gallery{min-height:0}.home-header{height:60px}.project-stories{top:12svh}.project-caption h2{font-size:13vw}.project-caption .project-category{font-size:7px;margin-bottom:6px}.project-caption .project-description{display:block;font-size:11px;max-width:250px}.project{top:59%;--cover-height:30svh}.pagination{top:57%}.dot{height:48px;min-width:48px}#open-current{bottom:9svh}.gallery-bottom{bottom:0}.gallery-hint{max-width:120px}.position-controls>span{min-width:36px}}
@media(prefers-reduced-motion:reduce){.cover{will-change:auto}.project-stories,.project-caption{will-change:auto}}

/* Typography study: Eksell Display / Silka proportions; licensed open font substitutes. */
:root{--serif:PortfolioDisplay,Georgia,serif;--sans:PortfolioSans,Arial,sans-serif}
.concept-home{font-synthesis:none;text-rendering:optimizeLegibility}
.home-header,.about-trigger{font-size:14px;letter-spacing:2px;font-weight:700}
.project-caption h2{font-family:var(--serif);font-weight:400;letter-spacing:0;line-height:1}
.project-caption .project-description{font-family:var(--sans);font-weight:400;font-size:clamp(16px,1.5625vw,24px);line-height:1.6;letter-spacing:0;max-width:430px}
.project-caption .project-category{letter-spacing:.12em;font-weight:600}
.cover-rent-editorial{background:#a8b599}
.cover-rent-editorial>.cover-image{width:100%;object-fit:cover;object-position:50% 44%;transform-origin:50% 44%}
@media(min-width:701px){.project-stories{top:25svh}.project-caption .project-category{position:absolute;top:-36px;left:0;margin:0}.project-caption h2{margin-bottom:24px}#open-current{margin-top:calc(clamp(72px,9.4vw,164px) + 122px);font-size:14px;letter-spacing:2px}}
@media(min-width:701px) and (max-width:1000px){.project-caption .project-description{font-size:16px}#open-current{font-size:12px;margin-top:235px}.home-header,.about-trigger{font-size:12px}}
@media(max-width:700px){.home-header,.about-trigger{font-size:11px;letter-spacing:1.5px}.project-caption .project-description{font-size:14px;line-height:1.5}.project-caption h2{margin-bottom:12px}.cover-rent-editorial>.cover-image{object-position:49% 45%}#open-current{font-size:11px;letter-spacing:1.5px}}
@media(max-height:620px) and (min-width:701px){.project-caption .project-category{top:-24px}.project-caption h2{margin-bottom:12px}.project-caption .project-description{font-size:14px}#open-current{margin-top:calc(13svh + 98px);font-size:11px}.home-header,.about-trigger{font-size:11px}}
@media(max-height:680px) and (max-width:700px){.project-caption .project-description{font-size:12px}}

/* Soft image planes retain real, keyboard-accessible DOM links underneath. */
.soft-gallery{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.cover--gpu{background:transparent!important}
.cover--gpu>.cover-image,.cover--gpu>.fitness-mark{opacity:0}
.cover--gpu{will-change:transform}
.custom-cursor{color:inherit;border-color:color-mix(in srgb,currentColor 60%,transparent);background:transparent;backdrop-filter:none}
.position-controls button:hover{background:color-mix(in srgb,currentColor 9%,transparent)}
#ambient-toggle{display:flex;gap:9px;align-items:center;justify-content:center;min-width:48px;min-height:48px;padding:0 12px;font:600 9px var(--sans);letter-spacing:.09em;opacity:.8}
#ambient-toggle:hover{opacity:1}
.motion-symbol{font-size:17px;font-weight:400;letter-spacing:-.15em}
@media(max-width:700px){#ambient-toggle{padding:0;width:48px}.motion-label{display:none}.gallery-hint{font-size:7px;gap:8px}.position-controls{font-size:8px}.position-controls>span{min-width:40px}.gallery-bottom{gap:4px}}
@media(prefers-reduced-motion:reduce){#ambient-toggle{opacity:.65}}
.project-caption .project-category,#ambient-toggle{opacity:1}
