:root {
  --canvas: #cbcbd7; --paper: #f8f7f3; --ink: #111217; --muted: #666873;
  --line: rgba(17,18,23,.14); --violet: #8586df; --violet-deep: #5c5dcc;
  --pink: #f0a7ed; --mint: #a9ded2; --orange: #ffc968; --blue: #5578ff;
  --rail: 104px; --radius: 20px; --shadow: 0 30px 90px rgba(31,31,45,.16);
  --pad: clamp(1.15rem,3.2vw,3.4rem);
}
*{box-sizing:border-box} html{scroll-behavior:smooth;background:var(--canvas)}
body{margin:0;min-width:320px;overflow-x:clip;color:var(--ink);background:radial-gradient(circle at 8% 10%,rgba(255,255,255,.56),transparent 28%),radial-gradient(circle at 92% 80%,rgba(133,134,223,.18),transparent 30%),var(--canvas);font-family:Arial,Helvetica,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}
::selection{color:#fff;background:var(--violet-deep)} a{color:inherit;text-decoration:none} img,svg{display:block;max-width:100%} button{font:inherit}
.skip-link{position:fixed;top:.6rem;left:.6rem;z-index:200;padding:.65rem 1rem;color:#fff;background:var(--ink);transform:translateY(-160%)}.skip-link:focus{transform:none}
.page-frame{width:min(1480px,calc(100% - clamp(1rem,4vw,4rem)));min-height:calc(100svh - clamp(1rem,4vw,4rem));margin:clamp(.5rem,2vw,2rem) auto;display:grid;grid-template-columns:var(--rail) minmax(0,1fr);overflow:hidden;border:1px solid rgba(255,255,255,.68);border-radius:26px;background:var(--paper);box-shadow:var(--shadow)}
.site-rail{position:relative;z-index:20;min-height:100%;display:flex;flex-direction:column;align-items:center;border-right:1px solid var(--line);background:rgba(248,247,243,.96)}
.rail-brand{width:100%;min-height:170px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line);font-size:.75rem;font-weight:900;letter-spacing:.13em;text-transform:uppercase;writing-mode:vertical-rl;transform:rotate(180deg)}
.rail-brand::before{content:"";width:9px;aspect-ratio:1;margin-bottom:.65rem;border-radius:50%;background:var(--violet-deep);box-shadow:0 0 0 5px rgba(92,93,204,.13)}
.rail-nav{flex:1;width:100%;display:flex;flex-direction:column;align-items:stretch;justify-content:center}.rail-nav a{min-height:92px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line);color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;writing-mode:vertical-rl;transform:rotate(180deg);transition:color .2s,background .2s}.rail-nav a:first-child{border-top:1px solid var(--line)}.rail-nav a:hover,.rail-nav a[aria-current=page]{color:var(--ink);background:var(--mint)}.rail-nav a[aria-current=page]{box-shadow:inset -4px 0 var(--ink)}
.rail-note{padding-block:1rem;color:var(--muted);font-size:.58rem;font-weight:800;letter-spacing:.12em;writing-mode:vertical-rl;transform:rotate(180deg)}.mobile-menu{display:none}.page-main{min-width:0;position:relative}.content-shell{padding:var(--pad)}
.landing{min-height:calc(100svh - clamp(1rem,4vw,4rem));padding:clamp(1.1rem,2.5vw,2.4rem);display:grid;grid-template-columns:minmax(250px,.78fr) minmax(0,1.7fr);grid-template-rows:auto minmax(0,1fr);gap:clamp(1rem,1.8vw,1.6rem)}
.landing-title{grid-column:2;margin:-.04em 0 -.08em;font-size:clamp(4.8rem,9.4vw,9.7rem);font-weight:900;line-height:.85;letter-spacing:-.075em}.landing-title span{color:transparent;-webkit-text-stroke:2px var(--ink)}
.identity-card{grid-column:1;grid-row:1/span 2;position:relative;min-height:650px;padding:clamp(1.1rem,2vw,1.8rem);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;border-radius:var(--radius);color:#fff;background:var(--violet);isolation:isolate}.identity-card::before{content:"";position:absolute;width:115%;aspect-ratio:1;top:12%;left:-45%;z-index:-2;border:2px solid rgba(255,255,255,.6);border-radius:50%;box-shadow:0 0 0 30px rgba(240,167,237,.58),0 0 0 32px rgba(255,255,255,.35)}.identity-card::after{content:"";position:absolute;inset:0;z-index:-3;opacity:.23;background-image:linear-gradient(rgba(255,255,255,.4) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.4) 1px,transparent 1px);background-size:32px 32px}
.card-label{display:flex;align-items:center;gap:.5rem;font-size:.68rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.card-label::before{content:"◆";font-size:.55rem}.identity-portrait{position:absolute;top:15%;right:5%;left:5%;height:56%;display:grid;place-items:center}.identity-portrait strong{font-family:Georgia,serif;font-size:clamp(8rem,15vw,15rem);font-style:italic;font-weight:400;letter-spacing:-.14em;transform:translateX(-.08em)}.identity-portrait small{position:absolute;bottom:0;padding:.45rem .7rem;border-radius:99px;color:var(--ink);background:var(--mint);font-size:.59rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.identity-bottom h1{max-width:8ch;margin:0 0 .7rem;font-size:clamp(2.5rem,4.1vw,4.4rem);line-height:.9;letter-spacing:-.055em}.identity-bottom p{max-width:23ch;margin:0;color:rgba(255,255,255,.84);font-size:.82rem}.round-link{position:absolute;right:1.2rem;bottom:1.2rem;width:58px;aspect-ratio:1;display:grid;place-items:center;border:1px solid rgba(255,255,255,.7);border-radius:50%;font-size:1.3rem;transition:transform .25s,background .25s}.identity-card:hover .round-link{color:var(--ink);background:var(--mint);transform:rotate(45deg)}
.portrait-main{width:100%;height:100%;object-fit:cover;object-position:center 22%;filter:grayscale(1) contrast(1.08);mix-blend-mode:multiply}
.project-mosaic{grid-column:2;display:grid;grid-template-columns:1.4fr .72fr .72fr;grid-template-rows:1.15fr .85fr;gap:clamp(.75rem,1.4vw,1.2rem)}.mosaic-card{position:relative;min-height:190px;overflow:hidden;border-radius:var(--radius);background:#ddd;isolation:isolate}.mosaic-card img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.8,.2,1)}.mosaic-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 38%,rgba(8,9,14,.78));pointer-events:none}.mosaic-card:hover img{transform:scale(1.045)}.mosaic-card:hover .mosaic-arrow{transform:rotate(45deg);background:#fff;color:var(--ink)}.mosaic-primary{grid-column:1/span 2;grid-row:1}.mosaic-tall{grid-column:3;grid-row:1/span 2}.mosaic-small{grid-column:1;grid-row:2}.mosaic-mini{grid-column:2;grid-row:2}.mosaic-copy{position:absolute;right:1rem;bottom:.9rem;left:1rem;z-index:2;color:#fff}.mosaic-copy span{display:block;margin-bottom:.3rem;font-size:.59rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.mosaic-copy h2{margin:0;font-size:clamp(1.35rem,2.4vw,2.7rem);line-height:.95;letter-spacing:-.045em}.mosaic-arrow{position:absolute;z-index:3;top:.8rem;right:.8rem;width:37px;aspect-ratio:1;display:grid;place-items:center;border-radius:50%;color:#fff;background:rgba(17,18,23,.68);backdrop-filter:blur(8px);transition:.25s}
.more-card{position:relative;grid-column:2;grid-row:2;min-height:190px;padding:1rem;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;border-radius:var(--radius);background:var(--mint)}.more-card strong{font-size:clamp(4.7rem,8vw,8rem);font-weight:300;line-height:.7;transition:transform .3s}.more-card span{max-width:11ch;font-size:.75rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.more-card:hover strong{transform:rotate(90deg)}.more-card .count{position:absolute;top:1rem;right:1rem;font-size:.65rem;font-weight:900}
.page-head{padding:clamp(3rem,7vw,7rem) var(--pad) clamp(2rem,4vw,4rem);border-bottom:1px solid var(--line)}.page-head-row{display:flex;align-items:end;justify-content:space-between;gap:2rem}.page-kicker{margin:0 0 1rem;color:var(--violet-deep);font-size:.68rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.page-head h1{margin:0;font-size:clamp(4rem,10vw,10rem);font-weight:900;line-height:.78;letter-spacing:-.075em}.page-head h1 .outline{color:transparent;-webkit-text-stroke:2px var(--ink)}.page-head-note{max-width:30ch;margin:0 0 .5rem;color:var(--muted);font-size:.86rem}
.section{padding:clamp(3rem,6vw,6rem) var(--pad)}.section+.section{border-top:1px solid var(--line)}.filter-bar{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:2rem}.filter-button{padding:.62rem 1rem;border:1px solid var(--line);border-radius:99px;color:var(--muted);background:#fff;cursor:pointer;font-size:.67rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.filter-button:hover,.filter-button.is-active{color:#fff;border-color:var(--ink);background:var(--ink)}
.work-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1rem,2.2vw,2rem)}.work-card[hidden]{display:none}.work-card{min-width:0}.work-visual{position:relative;aspect-ratio:16/10;margin-bottom:1rem;overflow:hidden;border-radius:var(--radius);background:#fff}.work-visual img{width:100%;height:100%;object-fit:cover;transition:transform .55s}.work-card:hover img{transform:scale(1.035)}.card-topline{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.45rem;color:var(--violet-deep);font-size:.62rem;font-weight:900;letter-spacing:.11em;text-transform:uppercase}.work-card h2{margin:0 0 .5rem;font-size:clamp(1.8rem,3.7vw,4rem);line-height:.95;letter-spacing:-.055em}.work-card p{max-width:48ch;margin:0;color:var(--muted);font-size:.88rem}.archive-card{min-height:280px;padding:1.5rem;display:flex;flex-direction:column;justify-content:space-between;border:1px dashed var(--muted);border-radius:var(--radius);background:rgba(255,255,255,.38)}.archive-card strong{font-size:4rem;font-weight:300}.archive-card p{max-width:30ch;margin:0;color:var(--muted)}
.profile-grid{display:grid;grid-template-columns:minmax(300px,.75fr) minmax(0,1.25fr);gap:clamp(2rem,6vw,6rem)}.profile-visual{position:sticky;top:2rem;min-height:650px;align-self:start}.profile-copy .intro{margin:0 0 3rem;font-size:clamp(1.65rem,3.5vw,3.6rem);line-height:1.08;letter-spacing:-.045em}.profile-copy .intro em{color:var(--violet-deep);font-family:Georgia,serif;font-weight:400}.placeholder-note{padding:.9rem 1rem;border-left:4px solid var(--pink);color:var(--muted);background:rgba(240,167,237,.12);font-size:.8rem!important}.detail-list{margin:2.5rem 0 0;padding:0;border-top:1px solid var(--ink)}.detail-row{display:grid;grid-template-columns:9rem 1fr;gap:2rem;padding:1.15rem 0;border-bottom:1px solid var(--line)}.detail-row dt{color:var(--muted);font-size:.65rem;font-weight:900;letter-spacing:.11em;text-transform:uppercase}.detail-row dd{margin:0}
.travel-card{position:relative;margin:0;overflow:hidden;border-radius:var(--radius);background:var(--ink)}.travel-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 38%,rgba(8,9,14,.84))}.travel-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.travel-card figcaption{position:absolute;right:1.3rem;bottom:1.3rem;left:1.3rem;z-index:2;color:#fff}.travel-card figcaption span{display:block;margin-bottom:.55rem;font-size:.61rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.travel-card figcaption strong{display:block;max-width:8ch;font-size:clamp(2rem,3.5vw,3.8rem);line-height:.9;letter-spacing:-.05em}
.cv-list{border-top:1px solid var(--ink)}.cv-row{display:grid;grid-template-columns:8rem 1.2fr 1fr;gap:2rem;padding:1.5rem 0;border-bottom:1px solid var(--line)}.cv-row time,.cv-row .cv-type{color:var(--muted);font-size:.67rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.cv-row h2{margin:0 0 .35rem;font-size:clamp(1.35rem,2.5vw,2.5rem);line-height:1;letter-spacing:-.04em}.cv-row p{margin:0;color:var(--muted);font-size:.86rem}.download-card{margin-bottom:3rem;padding:1.25rem;display:flex;align-items:center;justify-content:space-between;gap:2rem;border-radius:var(--radius);background:var(--mint)}.download-card strong{font-size:1.2rem}.pill-link{padding:.7rem 1rem;border-radius:99px;color:#fff;background:var(--ink);font-size:.67rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}
.contact-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(2rem,7vw,7rem);align-items:end;min-height:58vh}.contact-copy h2{max-width:10ch;margin:0 0 1.2rem;font-size:clamp(2.5rem,6vw,6.5rem);line-height:.92;letter-spacing:-.06em}.contact-copy p{max-width:42ch;color:var(--muted)}.contact-links{border-top:1px solid var(--ink)}.contact-link{display:flex;justify-content:space-between;gap:1rem;padding:1.2rem 0;border-bottom:1px solid var(--line);font-size:.73rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.contact-link:hover{color:var(--violet-deep)}
.project-hero{padding:clamp(3rem,7vw,7rem) var(--pad) 2rem}.eyebrow,.kicker{margin:0 0 1rem;color:var(--violet-deep);font-size:.67rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.project-hero-grid{display:grid;grid-template-columns:1.35fr .65fr;align-items:end;gap:3rem}.project-hero h1{max-width:10ch;margin:0;font-size:clamp(4rem,9vw,9rem);line-height:.82;letter-spacing:-.075em}.project-deck{max-width:32ch;margin:0;color:var(--muted);font-size:clamp(1rem,1.5vw,1.25rem)}.project-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-top:2rem;border:1px solid var(--line);background:var(--line)}.fact{padding:1rem;background:var(--paper)}.fact span{display:block;margin-bottom:.6rem;color:var(--muted);font-size:.59rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.fact strong{font-size:.87rem}.project-cover{margin:1rem var(--pad) 0;aspect-ratio:16/8;overflow:hidden;border-radius:var(--radius)}.project-cover img{width:100%;height:100%;object-fit:cover}.case-grid{display:grid;grid-template-columns:minmax(170px,.4fr) minmax(0,1.2fr);gap:clamp(3rem,8vw,8rem)}.case-nav{position:sticky;top:2rem;align-self:start}.case-nav ol{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.case-nav a{display:block;padding:.7rem 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:.64rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.case-nav a:hover{color:var(--violet-deep)}.case-content section{margin-bottom:clamp(4rem,9vw,8rem);scroll-margin-top:2rem}.case-content h2{max-width:12ch;margin:0 0 1.2rem;font-size:clamp(2.4rem,5vw,5rem);line-height:.92;letter-spacing:-.06em}.case-content p,.case-content li{max-width:690px}.case-content .lead{font-size:clamp(1.35rem,2.5vw,2.3rem);line-height:1.25;letter-spacing:-.03em}.media-placeholder{position:relative;min-height:390px;margin-top:2rem;display:grid;place-items:center;overflow:hidden;border-radius:var(--radius);background:var(--mint)}.media-placeholder::before{content:"";width:60%;aspect-ratio:1;border:2px solid var(--violet-deep);border-radius:50%;box-shadow:0 0 0 26px rgba(133,134,223,.18)}.media-placeholder span{position:absolute;padding:.6rem .8rem;border-radius:99px;color:#fff;background:var(--ink);font-size:.61rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.next-project{margin:0 var(--pad);padding:clamp(3rem,6vw,6rem) 0;display:flex;justify-content:space-between;align-items:end;gap:2rem;border-top:1px solid var(--ink)}.next-project span{color:var(--muted);font-size:.64rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.next-project h2{margin:.6rem 0 0;font-size:clamp(2rem,5vw,5rem);line-height:.9;letter-spacing:-.06em}.project-arrow{flex:0 0 auto;width:48px;aspect-ratio:1;display:grid;place-items:center;border:1px solid var(--ink);border-radius:50%}.site-footer{padding:1.2rem var(--pad);display:flex;justify-content:space-between;gap:1rem;border-top:1px solid var(--line);color:var(--muted);font-size:.59rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.reveal{opacity:1}
@media(max-width:1050px){.landing{grid-template-columns:minmax(230px,.7fr) minmax(0,1.3fr)}.project-mosaic{grid-template-columns:1fr 1fr;grid-template-rows:1.1fr .9fr .8fr}.mosaic-primary{grid-column:1/span 2}.mosaic-tall{grid-column:1;grid-row:2/span 2}.mosaic-small{grid-column:2;grid-row:2}.more-card{grid-column:2;grid-row:3}.mosaic-mini{display:none}}
@media(max-width:780px){.page-frame{width:100%;min-height:100svh;margin:0;display:block;border:0;border-radius:0}.site-rail{position:sticky;top:0;z-index:50;width:100%;min-height:64px;height:64px;flex-direction:row;justify-content:space-between;border-right:0;border-bottom:1px solid var(--line)}.rail-brand{width:auto;min-height:0;height:64px;padding-inline:1rem;border:0;writing-mode:horizontal-tb;transform:none}.rail-brand::before{margin:0 .65rem 0 0}.mobile-menu{display:block;height:64px;padding-inline:1.2rem;border:0;border-left:1px solid var(--line);background:transparent;font-size:.7rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.rail-nav{position:fixed;top:64px;right:0;left:0;display:grid;background:var(--paper);transform:translateY(-130%);transition:transform .3s}.rail-nav.is-open{transform:none}.rail-nav a{min-height:58px;border-top:0;border-bottom:1px solid var(--line);writing-mode:horizontal-tb;transform:none}.rail-nav a[aria-current=page]{box-shadow:inset 4px 0 var(--ink)}.rail-note{display:none}.landing{min-height:auto;padding:1rem;display:flex;flex-direction:column}.landing-title{order:-2;font-size:clamp(3.6rem,17vw,7rem)}.identity-card{order:-1;min-height:560px}.project-mosaic{display:grid;grid-template-columns:1fr;grid-template-rows:none}.mosaic-card,.more-card,.mosaic-primary,.mosaic-tall,.mosaic-small,.mosaic-mini{display:block;grid-column:auto;grid-row:auto;min-height:270px}.more-card{display:flex;min-height:170px}.page-head-row{display:block}.page-head-note{margin-top:1.5rem}.work-grid,.profile-grid,.contact-grid,.project-hero-grid{grid-template-columns:1fr}.profile-visual{position:relative;top:0;min-height:560px}.cv-row{grid-template-columns:5rem 1fr}.cv-row .cv-type{grid-column:2}.project-facts{grid-template-columns:1fr 1fr}.project-cover{aspect-ratio:4/3}.case-grid{grid-template-columns:1fr}.case-nav{position:relative;top:0}.case-nav ol{display:flex;gap:.4rem;overflow-x:auto;border:0}.case-nav a{min-width:max-content;padding:.5rem .75rem;border:1px solid var(--line);border-radius:99px}}
@media(max-width:520px){.landing-title{font-size:16vw}.identity-card{min-height:500px}.identity-bottom h1{font-size:2.7rem}.work-grid{grid-template-columns:1fr}.page-head h1{font-size:18vw}.detail-row{grid-template-columns:1fr;gap:.35rem}.cv-row{grid-template-columns:1fr;gap:.5rem}.cv-row .cv-type{grid-column:1}.download-card{align-items:flex-start;flex-direction:column}.site-footer{flex-direction:column}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
