:root{--ink:#241b16;--paper:#eee4d4;--cream:#f9f4ea;--gold:#b5792c;--rust:#9e482d;--plum:#412830;--line:rgba(62,42,30,.22);--sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--serif:Georgia,"Times New Roman",serif}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);overflow-x:hidden}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}.skip-link{position:fixed;z-index:100;left:16px;top:-50px;background:#000;color:#fff;padding:10px;transition:top .2s}.skip-link:focus{top:16px}.site-nav{position:fixed;z-index:40;top:0;left:0;right:0;height:68px;padding:0 clamp(20px,4vw,64px);display:flex;align-items:center;justify-content:space-between;color:#fdf9f0;mix-blend-mode:normal;transition:.35s}.site-nav.scrolled{color:var(--ink);background:rgba(249,244,234,.84);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.wordmark{font:700 13px var(--serif);letter-spacing:.09em;display:flex;gap:10px;align-items:center}.wordmark i{display:block;width:10px;height:10px;border:1px solid currentColor;transform:rotate(45deg)}.site-nav nav{display:flex;gap:26px;font-size:11px;letter-spacing:.13em}.site-nav nav a{opacity:.76}.site-nav nav a:hover{opacity:1}.language{font-size:10px;letter-spacing:.1em;opacity:.8}.language b{color:var(--gold)}.home-hero{min-height:100svh;position:relative;display:flex;align-items:center;overflow:hidden;color:#fff;background:linear-gradient(133deg,#2f2022,#7e432d 48%,#aa7c3e)}
.hero-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:78% 32%;z-index:0}
/* keeps hero-copy legible over whatever art sits behind it, without dulling the art under the curtain on the right */
.home-hero:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(100deg,rgba(20,11,9,.8) 0%,rgba(20,11,9,.52) 32%,rgba(20,11,9,.1) 56%,transparent 65%)}
.hero-light{position:absolute;inset:-15%;z-index:1;background:radial-gradient(circle at 72% 48%,rgba(255,231,170,.55),transparent 14%),radial-gradient(circle at 76% 44%,rgba(251,240,210,.22),transparent 30%),linear-gradient(110deg,rgba(29,17,17,.2),transparent 62%);filter:blur(6px)}.hero-grain{position:absolute;inset:0;z-index:1;opacity:.14;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.34'/%3E%3C/svg%3E");mix-blend-mode:overlay}.hero-copy{position:relative;z-index:3;width:min(620px,calc(100% - 48px));margin-left:clamp(24px,10vw,150px);padding-top:46px}.eyebrow,.section-number,.stage-index{font-size:10px;letter-spacing:.17em;font-weight:800;text-transform:uppercase}.eyebrow{color:#f3ce88;margin-bottom:23px}.hero-copy h1{font:clamp(3.5rem,8vw,7.3rem)/.84 var(--serif);letter-spacing:-.07em;max-width:8ch}.hero-copy h1 em,.projects-intro em,.method-section em,.contact-section em{color:#f4c372;font-style:italic}.hero-copy>p:not(.eyebrow){font-size:16px;line-height:1.65;max-width:450px;margin-top:28px;color:rgba(255,255,255,.84)}.hero-actions,.contact-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:31px}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:49px;padding:0 19px;border:1px solid transparent;border-radius:999px;font-size:12px;font-weight:800;letter-spacing:.03em;transition:transform .2s,background .2s,color .2s}.button:hover{transform:translateY(-3px)}.button.solid{background:#f4cd76;color:#362317}.button.ghost{border-color:rgba(255,255,255,.45);color:#fff}.button.ghost.dark{border-color:var(--line);color:var(--ink)}.button.light{background:#f8efe0;color:#2b1a15}.hero-note{position:absolute;z-index:3;bottom:25px;left:50%;translate:-50%;font-size:9px;letter-spacing:.18em;white-space:nowrap;opacity:.72}.hero-veil{position:absolute;z-index:2;right:0;top:0;width:min(48vw,720px);height:100%;background:rgba(243,228,202,.19);backdrop-filter:blur(5px) saturate(.85);border-left:1px solid rgba(255,255,255,.23);box-shadow:inset 18px 0 30px -22px rgba(20,11,8,.55);touch-action:pan-y;cursor:grab}.hero-veil:active{cursor:grabbing}.veil-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}.intro-section{display:grid;grid-template-columns:.42fr .75fr 1fr;gap:clamp(24px,6vw,110px);padding:clamp(100px,15vw,190px) clamp(24px,9vw,150px);background:var(--cream)}.section-number{color:var(--gold)}.intro-section h2,.projects-intro h2,.method-section h2,.contact-section h2{font:clamp(2.9rem,5vw,5.5rem)/.91 var(--serif);letter-spacing:-.06em}.intro-body{max-width:510px}.big-copy{font:clamp(1.38rem,2vw,1.9rem)/1.36 var(--serif);margin-bottom:25px}.intro-body>p:not(.big-copy),.projects-intro>p,.method-section>p,.contact-section>p{font-size:14px;line-height:1.72;color:#695a4f}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:25px}.tags span{border:1px solid var(--line);padding:8px 10px;border-radius:999px;font-size:11px}.projects-intro{padding:clamp(85px,12vw,150px) clamp(24px,9vw,150px);background:#e2d4bf}.projects-intro h2{margin:14px 0 20px}.projects-intro>p{max-width:470px}.project-stage{min-height:100svh;position:relative;isolation:isolate;display:flex;align-items:center;overflow:hidden;color:#fff;background:#49312b}.project-image,.bioha-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.project-image{filter:saturate(.78) contrast(1.05);transform:scale(1.03);transition:transform 1.3s cubic-bezier(.16,1,.3,1)}.project-stage:hover .project-image{transform:scale(1.08)}.project-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(29,17,17,.75),rgba(29,17,17,.26) 68%,rgba(29,17,17,.52));z-index:1}.project-veil{position:absolute;z-index:2;right:0;top:0;width:min(51vw,760px);height:100%;background:rgba(244,234,215,.24);backdrop-filter:blur(6px) saturate(.72);border-left:1px solid rgba(255,255,255,.35);box-shadow:inset 20px 0 34px -24px rgba(15,9,6,.6);transition:backdrop-filter .3s;touch-action:pan-y;cursor:grab}.project-veil:active{cursor:grabbing}.reverse .project-veil{right:auto;left:0;border-left:0;border-right:1px solid rgba(255,255,255,.35);box-shadow:inset -20px 0 34px -24px rgba(15,9,6,.6)}.stage-content{z-index:3;position:relative;width:min(570px,calc(100% - 48px));margin-left:clamp(24px,10vw,150px);padding:100px 0 55px}.reverse .stage-content{margin-left:auto;margin-right:clamp(24px,10vw,150px)}.stage-index{color:#f3c577}.stage-kicker{font-size:12px;letter-spacing:.06em;margin-top:15px;color:rgba(255,255,255,.77)}.stage-content h2{font:clamp(4.5rem,10vw,9.4rem)/.82 var(--serif);letter-spacing:-.08em;margin:20px 0}.stage-lede{font-size:clamp(15px,1.4vw,18px);line-height:1.6;max-width:450px}.result-line{display:flex;align-items:center;gap:11px;flex-wrap:wrap;margin:27px 0;font-size:12px;letter-spacing:.04em}.result-line strong{color:#f3c577;font-size:20px}.result-line span{width:22px;height:1px;background:rgba(255,255,255,.55)}.veil-hint{position:absolute;z-index:4;right:26px;bottom:24px;font-size:9px;letter-spacing:.15em;opacity:.72}.reverse .veil-hint{right:auto;left:26px}.bioha{background:linear-gradient(135deg,#211c26,#5c3141 46%,#b06b40)}.bioha-art{background:radial-gradient(circle at 72% 36%,#e8c07b 0 3%,transparent 3.5%),radial-gradient(circle at 62% 56%,#d8905c 0 7%,transparent 7.5%),radial-gradient(circle at 80% 65%,#f0dec4 0 12%,transparent 12.5%),linear-gradient(135deg,#332331,#7b4050 55%,#b9784b)}.bioha-orbit{position:absolute;border:1px solid rgba(248,228,192,.46);border-radius:50%;transform:rotate(-25deg)}.orbit-a{width:48vw;aspect-ratio:1;right:5%;top:5%;box-shadow:inset 0 0 0 38px rgba(240,198,123,.08)}.orbit-b{width:28vw;aspect-ratio:1;right:21%;bottom:7%;box-shadow:inset 0 0 0 22px rgba(119,48,63,.2)}.orbit-c{width:14vw;aspect-ratio:1;right:45%;top:22%;box-shadow:inset 0 0 0 14px rgba(248,228,192,.13)}.bioha-path{position:absolute;width:70%;height:2px;right:0;top:53%;background:#f4cc79;transform:rotate(-26deg);box-shadow:-180px 75px 0 #d67d4f,80px -80px 0 #faebcc}.academic-strip{display:grid;grid-template-columns:.38fr 1fr auto;gap:35px;align-items:center;padding:clamp(65px,9vw,110px) clamp(24px,9vw,150px);background:#dcc8a9}.academic-strip h2{font:clamp(2.5rem,4vw,4.5rem)/.9 var(--serif);letter-spacing:-.06em}.academic-strip p:not(.section-number){max-width:560px;margin-top:15px;font-size:14px;line-height:1.65}.text-link{font-size:12px;font-weight:800;text-decoration:underline;text-underline-offset:5px}.method-section{padding:clamp(90px,12vw,150px) clamp(24px,9vw,150px);background:#2a2021;color:#f9f4ea}.method-section .section-number{color:#e7b961}.method-section h2{margin:15px 0 55px}.method-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid rgba(255,255,255,.22);border-left:1px solid rgba(255,255,255,.22)}.method-grid article{min-height:230px;padding:24px;border-right:1px solid rgba(255,255,255,.22);border-bottom:1px solid rgba(255,255,255,.22)}.method-grid b{color:#e7b961;font-size:11px}.method-grid h3{font:1.8rem var(--serif);margin:32px 0 10px}.method-grid p{font-size:13px;line-height:1.6;color:rgba(255,255,255,.7)}.contact-section{padding:clamp(100px,15vw,190px) clamp(24px,9vw,150px);background:#f1e7d8;text-align:center}.contact-section h2{font-size:clamp(4rem,8vw,8rem);margin:17px auto 24px}.contact-section>p:not(.section-number){max-width:510px;margin:auto}.contact-actions{justify-content:center}.contact-meta{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;margin-top:32px;font-size:11px;letter-spacing:.06em;color:#725f4f}.contact-meta a{text-decoration:underline;text-underline-offset:5px}.project-page{background:#efe4d4}.case-nav{color:var(--ink);background:rgba(249,244,234,.88);border-bottom:1px solid var(--line)}.case-nav .wordmark{color:var(--ink)}.case-hero{min-height:70svh;position:relative;display:flex;align-items:flex-end;padding:130px clamp(24px,9vw,150px) 80px;color:#fff;overflow:hidden}.case-hero>img,.case-hero .case-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.case-hero:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(25,15,15,.72),rgba(25,15,15,.15))}.case-hero h1{font:clamp(4rem,9vw,9rem)/.8 var(--serif);letter-spacing:-.08em;margin-top:15px}.case-hero .eyebrow{margin:0}.case-body{max-width:1180px;margin:auto;padding:clamp(70px,10vw,140px) 24px}.case-overview{display:grid;grid-template-columns:.72fr 1.28fr;gap:9%;padding-bottom:80px;border-bottom:1px solid var(--line)}.case-overview h2{font:clamp(2.7rem,5vw,5rem)/.9 var(--serif);letter-spacing:-.06em}.case-overview p{font-size:17px;line-height:1.7}.case-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:60px 0;background:var(--line)}.case-facts article{background:#f8f0e5;padding:22px}.case-facts strong{display:block;color:var(--rust);font:clamp(1.8rem,3vw,3rem) var(--serif)}.case-facts span{font-size:11px;line-height:1.4;display:block;margin-top:8px}.case-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10%;padding-top:55px}.case-detail-grid h3{font:2rem var(--serif);margin-bottom:13px}.case-detail-grid p,.case-detail-grid li{font-size:14px;line-height:1.7;color:#604f43}.case-detail-grid ul{padding-left:19px}.case-next{display:flex;justify-content:space-between;align-items:center;padding-top:70px;margin-top:65px;border-top:1px solid var(--line)}.case-next h2{font:clamp(2rem,4vw,4rem) var(--serif)}
/* ---- <picture> wrappers must not break the absolute-fill layout ---- */
.project-stage picture,.case-hero picture{display:contents}.case-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
/* the hero art and its scrim sit at z-index -2/-1; without a stacking context here they paint
   behind body's own background and vanish, taking the dark scrim (and the title contrast) with them */
.case-hero{isolation:isolate}
/* ---- curtain legibility: the veil hangs from the header rail and always sits opposite the copy,
        so it veils the artwork rather than the words. The shade follows the copy side. ---- */
.hero-veil{top:68px;height:calc(100% - 68px)}
.hero-note{left:clamp(24px,10vw,150px);translate:none}
.hero-note,.veil-hint{text-shadow:0 1px 7px rgba(24,14,11,.9)}
.reverse .project-shade{background:linear-gradient(270deg,rgba(29,17,17,.75),rgba(29,17,17,.26) 68%,rgba(29,17,17,.52))}
/* ---- shared page furniture ---- */
.site-nav nav a[aria-current=page]{opacity:1;color:#f3c577}.case-nav nav a[aria-current=page],.site-nav.scrolled nav a[aria-current=page]{color:var(--gold)}
.page-hero{position:relative;overflow:hidden;color:#fff;background:linear-gradient(158deg,#2f2022,#7e432d 54%,#a5713c);padding:clamp(122px,15vw,186px) clamp(24px,9vw,150px) clamp(58px,8vw,96px)}.page-hero>*{position:relative;z-index:2}.page-hero h1{font:clamp(2.7rem,6vw,5.4rem)/.92 var(--serif);letter-spacing:-.055em;max-width:17ch;margin-top:16px}.page-hero h1 em{color:#f4c372;font-style:italic}.page-hero .lede{max-width:530px;margin-top:26px;font-size:15px;line-height:1.72;color:rgba(255,255,255,.83)}
.sheet{padding:clamp(78px,11vw,140px) clamp(24px,9vw,150px)}.sheet.cream{background:var(--cream)}.sheet.paper{background:var(--paper)}.sheet.sand{background:#e2d4bf}.sheet.dark{background:#2a2021;color:#f9f4ea}.sheet.ink{background:#241b16;color:#f6ecd9}
.sheet-head{max-width:760px;margin-bottom:clamp(34px,5vw,60px)}.sheet-head h2{font:clamp(2.3rem,4.4vw,4.3rem)/.94 var(--serif);letter-spacing:-.05em;margin:13px 0 16px}.sheet-head h2 em{color:var(--rust);font-style:italic}.sheet-head p{font-size:14px;line-height:1.72;color:#695a4f;max-width:580px}
.sheet.dark .section-number,.sheet.ink .section-number{color:#e7b961}.sheet.dark .sheet-head h2 em,.sheet.ink .sheet-head h2 em{color:#f4c372}.sheet.dark .sheet-head p,.sheet.ink .sheet-head p{color:rgba(255,255,255,.7)}
.statement{font:clamp(1.5rem,2.9vw,2.6rem)/1.3 var(--serif);letter-spacing:-.025em;max-width:20ch}
/* ---- hairline rule grid (generalises the method grid) ---- */
.rule-grid{display:grid;border-top:1px solid var(--line);border-left:1px solid var(--line)}.rule-grid>*{padding:clamp(18px,2.1vw,27px);border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.rule-grid b{display:block;color:var(--gold);font-size:11px;letter-spacing:.14em}.rule-grid h3{font:clamp(1.25rem,1.8vw,1.7rem) var(--serif);margin:24px 0 10px;letter-spacing:-.01em}.rule-grid p,.rule-grid li{font-size:13px;line-height:1.68;color:#695a4f}.rule-grid ul{margin:0;padding-left:17px}
.cols-2{grid-template-columns:repeat(2,1fr)}.cols-3{grid-template-columns:repeat(3,1fr)}.cols-4{grid-template-columns:repeat(4,1fr)}.cols-auto{grid-template-columns:repeat(auto-fit,minmax(215px,1fr))}
.sheet.dark .rule-grid,.sheet.ink .rule-grid{border-color:rgba(255,255,255,.22)}.sheet.dark .rule-grid>*,.sheet.ink .rule-grid>*{border-color:rgba(255,255,255,.22)}.sheet.dark .rule-grid b,.sheet.ink .rule-grid b{color:#e7b961}.sheet.dark .rule-grid p,.sheet.dark .rule-grid li,.sheet.ink .rule-grid p,.sheet.ink .rule-grid li{color:rgba(255,255,255,.7)}
/* ---- selected results band ---- */
.results-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.2)}.results-grid article{background:#241b16;padding:clamp(20px,2.5vw,34px)}.results-grid strong{display:block;font:clamp(2rem,3.8vw,3.4rem) var(--serif);color:#f3c577;letter-spacing:-.035em}.results-grid span{display:block;margin-top:10px;font-size:11px;letter-spacing:.1em;line-height:1.5;color:rgba(255,255,255,.66)}.results-caption{margin-top:22px;font-size:10px;letter-spacing:.13em;color:rgba(255,255,255,.46)}
/* ---- selected work gallery ---- */
.gallery-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:clamp(24px,3vw,36px)}.gallery-filters button{border:1px solid var(--line);background:none;color:inherit;font:inherit;font-size:11px;letter-spacing:.09em;padding:9px 15px;border-radius:999px;cursor:pointer;transition:background .2s,color .2s,border-color .2s}.gallery-filters button:hover{border-color:var(--gold)}.gallery-filters button[aria-pressed=true]{background:var(--ink);color:var(--cream);border-color:var(--ink)}
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.7vw,22px)}.gallery-card{display:flex;flex-direction:column;border:1px solid var(--line);background:#f8f0e5;overflow:hidden}.gallery-card[hidden]{display:none}.gallery-plate{aspect-ratio:4/3;position:relative;overflow:hidden;background:linear-gradient(148deg,#3a2a24,#8a5230 60%,#c08d4a)}.gallery-plate:before,.gallery-plate:after{content:"";position:absolute;border:1px solid rgba(248,228,192,.36);border-radius:50%}.gallery-plate:before{width:78%;aspect-ratio:1;top:-18%;right:-10%}.gallery-plate:after{width:44%;aspect-ratio:1;bottom:-12%;left:6%;border-style:dashed}.gallery-plate i{position:absolute;left:18px;bottom:14px;z-index:2;font:italic 1.5rem var(--serif);color:#f6e2ba}
.gallery-body{padding:clamp(16px,1.8vw,22px);display:flex;flex-direction:column;gap:9px;flex:1}.gallery-body h3{font:1.35rem var(--serif);letter-spacing:-.01em}.gallery-body p{font-size:13px;line-height:1.62;color:#695a4f}.gallery-role{margin-top:auto;padding-top:12px;font-size:10px;letter-spacing:.13em;color:var(--gold);font-weight:800}
/* ---- skills rows ---- */
.skill-row{display:grid;grid-template-columns:.52fr 1fr;gap:clamp(20px,4vw,64px);padding:clamp(26px,3.2vw,42px) 0;border-bottom:1px solid var(--line)}.skill-row:first-child{border-top:1px solid var(--line)}.skill-row h3{font:clamp(1.45rem,2.4vw,2.15rem) var(--serif);letter-spacing:-.02em}.skill-row>div>p{font-size:13px;line-height:1.7;color:#695a4f;margin-bottom:16px;max-width:560px}
.chips{display:flex;flex-wrap:wrap;gap:8px}.chips span{border:1px solid var(--line);border-radius:999px;padding:9px 14px;font-size:12px;background:rgba(255,255,255,.45)}.sheet.dark .chips span,.sheet.ink .chips span{border-color:rgba(255,255,255,.26);background:rgba(255,255,255,.05)}
.edu-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.edu-list li{display:grid;grid-template-columns:1fr auto;gap:14px 26px;align-items:baseline;padding:20px 0;border-bottom:1px solid var(--line)}.edu-list strong{font:1.15rem var(--serif);font-weight:400}.edu-list em{display:block;font-style:normal;font-size:12.5px;line-height:1.6;color:#695a4f;margin-top:5px}.edu-list time{font-size:11px;letter-spacing:.1em;color:var(--gold);white-space:nowrap}
/* ---- about portrait plate (typographic stand-in until a real photo is approved) ---- */
.about-split{display:grid;grid-template-columns:.62fr 1fr;gap:clamp(28px,6vw,90px);align-items:start}
.portrait-plate{position:relative;margin:0;aspect-ratio:3/4;overflow:hidden;display:grid;place-items:center;isolation:isolate;border:1px solid rgba(62,42,30,.3);background:linear-gradient(155deg,#2f2022,#7e432d 56%,#b1804a)}.pp-ring{position:absolute;border:1px solid rgba(248,228,192,.4);border-radius:50%}.pp-ring.r1{width:118%;aspect-ratio:1;top:-25%;left:-10%}.pp-ring.r2{width:74%;aspect-ratio:1;bottom:-15%;right:-17%;border-style:dashed}.pp-ring.r3{width:42%;aspect-ratio:1;top:13%;right:7%;box-shadow:inset 0 0 0 15px rgba(240,198,123,.1)}.pp-mono{position:relative;z-index:2;font:clamp(3.2rem,7vw,5.6rem) var(--serif);letter-spacing:.07em;color:#f6e2ba;text-shadow:0 2px 28px rgba(30,16,10,.55)}.portrait-plate:after{content:"";position:absolute;left:0;right:0;bottom:0;height:40%;background:linear-gradient(transparent,rgba(28,16,12,.62))}
.plate-caption{margin-top:12px;font-size:10px;letter-spacing:.13em;color:#8a7562}
.prose p{font-size:14.5px;line-height:1.76;color:#5c4d43;margin-bottom:16px;max-width:600px}.prose p:last-child{margin-bottom:0}.sheet.dark .prose p,.sheet.ink .prose p{color:rgba(255,255,255,.74)}
/* ---- cta band + footer ---- */
.cta-band{padding:clamp(70px,9vw,120px) clamp(24px,9vw,150px);background:#e2d4bf;text-align:center}.cta-band h2{font:clamp(2rem,3.6vw,3.4rem)/1.05 var(--serif);letter-spacing:-.04em;max-width:20ch;margin:0 auto 22px}
.site-footer{background:#241b16;color:#e9dcc7;padding:clamp(56px,7vw,88px) clamp(24px,9vw,150px) 36px;display:grid;grid-template-columns:1.3fr .8fr .8fr;gap:clamp(26px,4vw,50px)}.site-footer h2{font-size:10px;letter-spacing:.16em;font-weight:800;text-transform:uppercase;color:#e7b961;margin-bottom:15px}.site-footer .wordmark{color:#f6ecd9;margin-bottom:14px}.site-footer p{font-size:13px;line-height:1.7;color:rgba(255,255,255,.62);max-width:330px}.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:9px;font-size:13px}.site-footer ul a{color:rgba(255,255,255,.75)}.site-footer ul a:hover{color:#f3c577}
.footer-base{grid-column:1/-1;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:24px;padding-top:20px;border-top:1px solid rgba(255,255,255,.16);font-size:10px;letter-spacing:.12em;color:rgba(255,255,255,.42)}
/* ---- scroll reveal (only when scripting is available; otherwise content just shows) ---- */
@media(scripting:enabled){[data-reveal]{opacity:0;transform:translate3d(0,20px,0);transition:opacity .85s cubic-bezier(.16,1,.3,1),transform .85s cubic-bezier(.16,1,.3,1)}[data-reveal].revealed{opacity:1;transform:none}}
@media(max-width:760px){.site-nav{height:58px;padding:0 16px}.site-nav nav{gap:11px;font-size:9px;letter-spacing:.05em}.site-nav nav a[href="#top"],.site-nav nav a[href="index.html"]{display:none}.wordmark span{display:none}.language{display:none}.hero-copy{margin-left:24px;padding-top:70px}.hero-copy h1{font-size:clamp(3.7rem,17vw,5.2rem)}.hero-veil{width:52vw;opacity:.86}
.hero-copy:before{content:"";position:absolute;z-index:-1;inset:-38px -24px -26px;background:radial-gradient(122% 72% at 26% 46%,rgba(28,16,14,.88),rgba(28,16,14,.5) 62%,transparent)}.intro-section{grid-template-columns:1fr;padding:90px 24px;gap:26px}.projects-intro{padding:85px 24px}.project-stage{min-height:720px}.project-veil,.reverse .project-veil{width:76vw;left:0;right:auto;opacity:.9}.reverse .project-veil{left:auto;right:0}.stage-content,.reverse .stage-content{margin:0 24px;padding-top:110px;width:auto}.stage-content h2{font-size:clamp(4.2rem,20vw,6.5rem)}.veil-hint,.reverse .veil-hint{left:24px;right:auto}.academic-strip{grid-template-columns:1fr;padding:65px 24px;gap:20px}.method-section{padding:85px 24px}.method-grid{grid-template-columns:1fr 1fr}.method-grid article{min-height:190px;padding:17px}.method-grid h3{margin-top:20px}.contact-section{padding:100px 24px}.case-hero{min-height:62svh;padding:100px 24px 60px}.case-overview,.case-detail-grid{grid-template-columns:1fr;gap:28px}.case-facts{grid-template-columns:1fr}.case-next{align-items:flex-start;gap:20px;flex-direction:column}
.hero-veil{top:58px;height:calc(100% - 58px)}.hero-note{left:24px}
.project-veil{backdrop-filter:blur(4px) saturate(.75)}
/* one screen wide: veil and copy have to share the space, so the copy carries its own scrim */
.stage-content:before{content:"";position:absolute;z-index:-1;inset:-34px -26px;background:radial-gradient(125% 78% at 32% 48%,rgba(24,14,11,.86),rgba(24,14,11,.42) 66%,transparent)}
.page-hero{padding:104px 24px 56px}.page-hero h1{font-size:clamp(2.6rem,12vw,3.6rem)}.sheet{padding:76px 24px}.cta-band{padding:70px 24px}
.cols-2,.cols-3,.cols-4{grid-template-columns:1fr 1fr}.results-grid{grid-template-columns:1fr 1fr}.gallery-grid{grid-template-columns:1fr}.about-split,.skill-row{grid-template-columns:1fr;gap:22px}.portrait-plate{max-width:340px}
.edu-list li{grid-template-columns:1fr}.site-footer{grid-template-columns:1fr;padding:56px 24px 32px}.footer-base{flex-direction:column;gap:8px}}
@media(max-width:520px){.cols-2,.cols-3,.cols-4,.results-grid,.method-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important}.veil-hint{display:none}[data-reveal]{opacity:1!important;transform:none!important}}

/* ---- home: full-width, sheer text curtain over the editorial fashion portrait ---- */
.home-page .site-nav:not(.scrolled){color:#f6eadb}.home-hero{background:#2d1d1a}.home-hero:before{z-index:1;background:linear-gradient(90deg,rgba(25,14,13,.74) 0%,rgba(25,14,13,.38) 35%,rgba(25,14,13,.06) 67%,rgba(25,14,13,.12) 100%)}.hero-figure{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;object-position:center}.hero-light{z-index:2;inset:0;background:linear-gradient(90deg,rgba(88,48,31,.16),transparent 52%),radial-gradient(circle at 77% 40%,rgba(250,224,175,.18),transparent 32%);filter:none}.hero-grain{z-index:3;opacity:.1;mix-blend-mode:soft-light}.home-hero .hero-copy,.home-hero .hero-note{z-index:5}.home-hero .hero-veil{z-index:4;inset:68px 0 0;width:100%;height:auto;background:transparent;backdrop-filter:none;border:0;box-shadow:none;opacity:.5}.home-hero .hero-veil .veil-canvas{mix-blend-mode:multiply}.home-hero .hero-note{left:clamp(24px,10vw,150px);translate:none}
@media(max-width:760px){.home-hero .hero-figure{object-position:63% center}.home-hero:before{background:linear-gradient(90deg,rgba(25,14,13,.8),rgba(25,14,13,.48) 65%,rgba(25,14,13,.18))}.home-hero .hero-veil{inset:58px 0 0;width:100%;height:auto;opacity:.42}}

/* Winter '26 type system, sourced from the local Shopify reference provided on this USB. */
@font-face{font-family:NeueMontrealW26;src:url("NeueMontreal-W26.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:HWCigarsW26;src:url("HWCigars-W26.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ImperialScriptW26;src:url("ImperialScript-W26.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}

/* Depth is deliberately DOM/CSS-first: the photograph remains fully visible without pointer or WebGL support. */
.home-hero{perspective:1200px;isolation:isolate}.hero-space{position:absolute;inset:-4%;z-index:0;overflow:hidden;pointer-events:none;transform-style:preserve-3d;will-change:transform}.hero-space .hero-figure{position:absolute;inset:0;z-index:2;width:100%;height:100%;object-fit:cover;object-position:center;transform:translate3d(var(--hero-near-x,0px),var(--hero-near-y,0px),36px) scale(1.075);transition:transform .85s cubic-bezier(.16,1,.3,1);will-change:transform}.hero-space__halo{position:absolute;z-index:1;right:7%;top:8%;width:min(53vw,850px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(239,190,115,.32),rgba(226,135,69,.11) 28%,transparent 65%);filter:blur(2px);transform:translate3d(var(--hero-far-x,0px),var(--hero-far-y,0px),-80px);transition:transform 1s cubic-bezier(.16,1,.3,1)}.hero-space__orbit{position:absolute;z-index:3;border:1px solid rgba(247,212,153,.42);border-radius:50%;mix-blend-mode:screen;transform-style:preserve-3d;transition:transform .75s cubic-bezier(.16,1,.3,1)}.hero-space__orbit--one{width:38vw;aspect-ratio:1;right:7%;top:12%;transform:translate3d(var(--hero-mid-x,0px),var(--hero-mid-y,0px),78px) rotateX(68deg) rotateZ(-22deg)}.hero-space__orbit--two{width:28vw;aspect-ratio:1;right:18%;bottom:5%;border-style:dashed;transform:translate3d(var(--hero-rev-x,0px),var(--hero-rev-y,0px),92px) rotateX(70deg) rotateZ(34deg)}.hero-space__floor{position:absolute;z-index:4;left:28%;right:-10%;bottom:-16%;height:44%;opacity:.48;background:repeating-linear-gradient(90deg,rgba(239,205,150,.26) 0 1px,transparent 1px 78px),repeating-linear-gradient(0deg,rgba(239,205,150,.22) 0 1px,transparent 1px 58px);transform:perspective(750px) rotateX(70deg) translate3d(var(--hero-floor-x,0px),var(--hero-floor-y,0px),40px);transform-origin:bottom;mask-image:linear-gradient(to bottom,transparent,black 35%,transparent);transition:transform .75s cubic-bezier(.16,1,.3,1)}.hero-space__stars{position:absolute;z-index:5;inset:0;transform:translate3d(var(--hero-stars-x,0px),var(--hero-stars-y,0px),120px);transition:transform .65s cubic-bezier(.16,1,.3,1)}.hero-space__stars i{position:absolute;width:5px;aspect-ratio:1;border-radius:50%;background:#f7d695;box-shadow:0 0 16px 4px rgba(237,173,83,.45)}.hero-space__stars i:nth-child(1){top:18%;right:20%}.hero-space__stars i:nth-child(2){top:42%;right:6%;width:3px}.hero-space__stars i:nth-child(3){top:67%;right:34%;width:4px}.hero-space__stars i:nth-child(4){top:13%;right:46%;width:3px}.hero-space__stars i:nth-child(5){bottom:17%;right:12%;width:4px}.home-hero .hero-copy{transform:translate3d(var(--hero-copy-x,0px),var(--hero-copy-y,0px),0);transition:transform .7s cubic-bezier(.16,1,.3,1)}.home-hero .hero-copy h1{font-family:HWCigarsW26,Georgia,serif;font-size:clamp(4rem,8.4vw,7.8rem);font-weight:400;letter-spacing:-.055em;line-height:.82;max-width:7.8ch;text-wrap:balance}.home-hero .hero-copy h1 em{font-family:ImperialScriptW26,Georgia,serif;font-size:1.16em;font-weight:400;letter-spacing:-.025em}.home-hero .eyebrow,.home-hero .button,.home-hero .hero-note{font-family:NeueMontrealW26,var(--sans)}.home-hero .hero-veil{opacity:.88}.home-hero .hero-veil .veil-canvas{mix-blend-mode:normal;filter:drop-shadow(0 1px 1px rgba(30,14,9,.34))}

/* Shopify Editions-like project discovery rail: it is a normal document section, not a canvas-only control. */
.project-peek{padding:clamp(56px,7vw,104px) clamp(24px,7vw,112px) clamp(76px,9vw,132px);background:#2d1d1a;color:#f8ecda}.project-peek__head{display:grid;grid-template-columns:1fr minmax(220px,390px);gap:clamp(28px,7vw,110px);align-items:end;margin-bottom:clamp(26px,4vw,48px)}.project-peek__head h2{font:clamp(2.8rem,5.6vw,5.6rem)/.85 HWCigarsW26,Georgia,serif;letter-spacing:-.055em;margin-top:14px}.project-peek__head h2 em{font:1.15em ImperialScriptW26,Georgia,serif;color:#f2bc6c}.project-peek__head>p{font-size:14px;line-height:1.65;color:rgba(248,236,218,.72);max-width:37ch}.project-peek__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(11px,1.8vw,25px)}.project-peek__card{position:relative;isolation:isolate;display:flex;aspect-ratio:1.28/1;overflow:hidden;border-radius:10px;color:#fff;padding:clamp(16px,1.9vw,27px);flex-direction:column;justify-content:flex-end;text-decoration:none;box-shadow:0 14px 32px rgba(0,0,0,.22);transition:transform .5s cubic-bezier(.16,1,.3,1),box-shadow .5s}.project-peek__card>img,.bioha-peek__art{position:absolute;inset:0;z-index:-3;width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.16,1,.3,1),filter .5s}.project-peek__shade{position:absolute;z-index:-2;inset:0;background:linear-gradient(180deg,rgba(17,10,9,.05) 22%,rgba(17,10,9,.78) 100%)}.project-peek__card:hover,.project-peek__card:focus-visible{transform:translateY(-9px) rotateX(2deg);box-shadow:0 24px 50px rgba(0,0,0,.38);outline:none}.project-peek__card:hover>img,.project-peek__card:focus-visible>img{transform:scale(1.08);filter:saturate(1.15)}.project-peek__meta,.project-peek__link{font:700 10px NeueMontrealW26,var(--sans);letter-spacing:.12em}.project-peek__meta{position:absolute;top:clamp(16px,1.9vw,27px);left:clamp(16px,1.9vw,27px);color:rgba(255,255,255,.85)}.project-peek__card strong{font:clamp(2.7rem,4.5vw,5.4rem)/.77 HWCigarsW26,Georgia,serif;letter-spacing:-.06em}.project-peek__link{margin-top:13px;color:#f4c577;opacity:0;transform:translateY(8px);transition:.35s}.project-peek__card:hover .project-peek__link,.project-peek__card:focus-visible .project-peek__link{opacity:1;transform:none}.bioha-peek__art{background:radial-gradient(circle at 65% 33%,#f3d693 0 4%,transparent 4.5%),radial-gradient(circle at 53% 53%,#dc8b63 0 13%,transparent 13.7%),radial-gradient(circle at 76% 63%,#edddc8 0 21%,transparent 21.7%),linear-gradient(135deg,#241a2b,#704056 54%,#c47c4d)}.bioha-peek__art:after{content:"";position:absolute;width:130%;height:2px;left:-12%;top:49%;background:#f4cc79;transform:rotate(-26deg);box-shadow:-90px 55px 0 #d67d4f,130px -52px 0 #faebcc}.bioha-peek:hover .bioha-peek__art,.bioha-peek:focus-visible .bioha-peek__art{transform:scale(1.08) rotate(-2deg)}
@media(max-width:760px){.hero-space{inset:0}.hero-space .hero-figure{transform:scale(1.04);object-position:63% center}.hero-space__orbit--one{width:76vw;right:-12%;top:16%}.hero-space__orbit--two{width:54vw;right:9%;bottom:12%}.hero-space__floor{left:-16%;right:-30%;bottom:-18%;height:34%}.home-hero .hero-copy h1{font-size:clamp(4rem,18vw,5.8rem)}.home-hero .hero-veil{opacity:.73}.project-peek{padding:60px 24px 78px}.project-peek__head{grid-template-columns:1fr;gap:20px}.project-peek__head h2{font-size:clamp(3rem,14vw,4.4rem)}.project-peek__grid{display:flex;overflow:auto;scroll-snap-type:x mandatory;margin-right:-24px;padding-right:24px}.project-peek__card{min-width:min(79vw,340px);scroll-snap-align:start}.project-peek__link{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.hero-space .hero-figure,.hero-space__halo,.hero-space__orbit,.hero-space__floor,.hero-space__stars,.home-hero .hero-copy{transform:none!important;transition:none!important}}

/* The curtain gathers at the portrait side, then dissolves before it reaches the copy. */
.home-hero .hero-veil[data-right-cluster]{opacity:.96;-webkit-mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.04) 25%,rgba(0,0,0,.48) 40%,#000 58%,#000 100%);mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.04) 25%,rgba(0,0,0,.48) 40%,#000 58%,#000 100%)}.home-hero .hero-note{max-width:min(540px,calc(100% - 48px));line-height:1.55;white-space:normal;color:#f6d395;font-size:9px;letter-spacing:.13em}@media(max-width:760px){.home-hero .hero-veil[data-right-cluster]{opacity:.86;-webkit-mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.18) 30%,#000 65%);mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.18) 30%,#000 65%)}}

/* Large desktop: tighten the editorial composition before the copy becomes a seventh line. */
@media(min-width:1420px){.home-hero .hero-copy{width:min(690px,43vw);margin-left:clamp(72px,8.2vw,168px);padding-top:24px}.home-hero .hero-copy h1{font-size:clamp(4.7rem,5.8vw,6.45rem);line-height:.86;letter-spacing:-.058em;max-width:11.25ch}.home-hero .hero-copy>p:not(.eyebrow){margin-top:22px;font-size:15px;max-width:420px}.home-hero .hero-actions{margin-top:24px}.home-hero .hero-figure{object-position:54% 17%}.home-hero .hero-veil[data-right-cluster]{-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 37%,rgba(0,0,0,.22) 50%,#000 64%,#000 100%);mask-image:linear-gradient(90deg,transparent 0%,transparent 37%,rgba(0,0,0,.22) 50%,#000 64%,#000 100%)}.home-hero .hero-note{left:clamp(72px,8.2vw,168px);bottom:22px}}

/* Mobile hero: the copy owns the lower-left, while the portrait remains a clear stage on the right. */
@media(max-width:760px){.home-hero{min-height:760px;min-height:100svh;align-items:flex-start}.home-hero:before{background:linear-gradient(90deg,rgba(24,13,12,.92) 0%,rgba(24,13,12,.74) 50%,rgba(24,13,12,.16) 100%)}.home-hero .hero-copy{width:calc(100% - 40px);margin-left:20px;padding-top:112px;padding-bottom:28px}.home-hero .eyebrow{max-width:29ch;margin-bottom:17px;font-size:9px;line-height:1.4}.home-hero .hero-copy h1{font-size:clamp(3.55rem,15.5vw,4.75rem);line-height:.85;letter-spacing:-.052em;max-width:8.8ch}.home-hero .hero-copy h1 em{font-size:1.08em}.home-hero .hero-copy>p:not(.eyebrow){font-size:14px;line-height:1.56;max-width:28ch;margin-top:20px}.home-hero .hero-actions{gap:8px;margin-top:22px}.home-hero .button{min-height:46px;padding:0 16px;font-size:11px}.home-hero .hero-note{display:none}.hero-space .hero-figure{object-position:72% center;transform:scale(1.045)}.hero-space__halo{right:-17%;top:8%;width:115vw;opacity:.62}.hero-space__orbit--one{width:82vw;right:-25%;top:17%;opacity:.44}.hero-space__orbit--two{width:58vw;right:-7%;bottom:12%;opacity:.33}.hero-space__floor{display:none}.hero-space__stars i:nth-child(-n+3){display:none}.home-hero .hero-veil[data-right-cluster]{opacity:.68;-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 39%,rgba(0,0,0,.18) 55%,#000 76%);mask-image:linear-gradient(90deg,transparent 0%,transparent 39%,rgba(0,0,0,.18) 55%,#000 76%)}.project-peek__grid{scrollbar-width:none}.project-peek__grid::-webkit-scrollbar{display:none}.project-peek__card{min-width:min(82vw,340px);aspect-ratio:1.22/1}.project-peek__meta{font-size:9px}.project-peek__card strong{font-size:clamp(2.7rem,13vw,4rem)}}
@media(max-width:390px){.home-hero .hero-copy{padding-top:94px}.home-hero .hero-copy h1{font-size:clamp(3.25rem,15vw,3.8rem);max-width:8.4ch}.home-hero .hero-copy>p:not(.eyebrow){font-size:13px}.home-hero .hero-actions{margin-top:18px}.home-hero .button{padding:0 13px}.project-peek__card{min-width:84vw}}
