/* One shared art direction: reference-inspired sans headlines, editorial serif accents. */
.study-drawing{--rx:0deg;--ry:0deg;--dx:0px;--dy:0px;--study-accent:#92543b;position:relative;isolation:isolate;display:grid;place-items:center;width:100%;height:100%;min-height:250px;aspect-ratio:3/2;overflow:hidden;background:#e9e2d4;perspective:900px}
.study-olive{--study-accent:#687359;background:#dce0d3}
.card-image .study-drawing{min-height:0;aspect-ratio:auto}
.study-plane{position:absolute;inset:15px;background:#f5f0e66e;border:1px solid #91887745;transform:rotateX(var(--rx)) rotateY(var(--ry));transition:transform .65s cubic-bezier(.2,.7,.2,1);pointer-events:none}
.study-lines{width:100%;height:100%;overflow:visible;fill:none;stroke:var(--study-accent);stroke-width:1.4}
.study-lines g{transform-box:view-box;transform-origin:center;transition:transform .65s cubic-bezier(.2,.7,.2,1)}
.study-front{transform:translate(var(--dx),var(--dy))}
.study-back{opacity:.32;transform:translate(calc(var(--dx) * -1),calc(var(--dy) * -1));stroke-width:.9}
.study-drawing.is-tracking .study-plane,.study-drawing.is-tracking .study-lines g{transition-duration:.16s}
.study-name{position:relative;z-index:1;font:500 clamp(26px,3vw,44px)/1.1 var(--display);letter-spacing:-.045em;color:var(--ink);background:#ede8d9e8;padding:10px 18px;pointer-events:none}
.study-olive .study-name{background:#dce0d3ed}
.study-note,.study-explore,.study-status{position:absolute;bottom:25px;font:500 13px/1.4 var(--sans);letter-spacing:.04em;pointer-events:none}
.study-note{left:28px;color:var(--muted)}.study-explore,.study-status{right:28px;color:var(--study-accent)}
.study-explore{opacity:0;transform:translateY(7px);transition:opacity .25s,transform .25s}
.card-image:hover .study-explore,a:focus-visible .study-explore{opacity:1;transform:none}
.study-page .study-drawing{height:auto;max-height:650px}.study-page figure{overflow:hidden;width:100%}
@media(max-width:600px){.study-page .study-note{bottom:42px}.study-page .study-status{left:22px;right:auto}}
@media(max-width:600px){.study-name{font-size:28px}.study-note,.study-explore,.study-status{font-size:12px;bottom:20px}.study-note{left:22px}.study-explore,.study-status{right:22px}.study-page .study-drawing{min-height:300px}}
@media(hover:none),(pointer:coarse){.study-explore{opacity:1;transform:none}.study-plane,.study-lines g{transform:none!important}}
@media(prefers-reduced-motion:reduce){.study-plane,.study-lines g{transform:none!important;transition:none}.study-explore{transition:none}}
@font-face{font-family:Portfolio Display;src:url("fonts/manrope-variable.ttf") format("truetype");font-weight:200 800;font-style:normal;font-display:swap}
@font-face{font-family:Karla;src:url("fonts/karla-variable.ttf") format("truetype");font-weight:200 800;font-style:normal;font-display:swap}
:root{--display:"Portfolio Display",Arial,sans-serif;--serif:"Cormorant Garamond",Georgia,serif;--sans:Karla,Arial,sans-serif;--mono:Karla,Arial,sans-serif;--paper:#f4f0e8;--ink:#29271f;--muted:#625e52;--sage:#777b58;--line:#c9c2b5}
body{isolation:isolate;background:var(--paper);font-family:var(--sans);font-size:17px;line-height:1.6}
.ambient-light{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.ambient-light span{position:absolute;width:105vmax;height:105vmax;border-radius:50%;will-change:transform;animation:limestone-light 18s ease-in-out infinite alternate}
.ambient-light span:nth-child(1){left:-58vmax;top:-35vmax;background:radial-gradient(ellipse,rgba(157,163,115,.42),rgba(157,163,115,.16) 33%,transparent 66%)}
.ambient-light span:nth-child(2){right:-62vmax;top:-30vmax;background:radial-gradient(ellipse,rgba(195,143,105,.36),rgba(195,143,105,.12) 33%,transparent 65%);animation-name:bronze-light;animation-duration:22s;animation-delay:-8s}
.ambient-light span:nth-child(3){left:-5vmax;bottom:-75vmax;background:radial-gradient(ellipse,rgba(181,166,115,.36),transparent 60%);animation-name:olive-light;animation-duration:16s;animation-delay:-5s}
@keyframes limestone-light{from{transform:translate3d(-4vw,-3vh,0) scale(.87)}to{transform:translate3d(30vw,22vh,0) scale(1.15)}}
@keyframes bronze-light{from{transform:translate3d(5vw,10vh,0) scale(1)}to{transform:translate3d(-35vw,38vh,0) scale(1.18)}}
@keyframes olive-light{from{transform:translate3d(-18vw,3vh,0)}to{transform:translate3d(20vw,-36vh,0)}}
.hero:before{display:none}
.topbar{min-height:104px;height:auto;padding-block:20px;gap:24px;border-color:var(--line)}
.wordmark{font:500 27px/1 var(--display);letter-spacing:.19em}
.wordmark small{font:400 13px/1.45 var(--sans);letter-spacing:.02em;text-transform:none;margin-top:10px}
.nav,.nav a,.menu-toggle{font:500 15px/1.5 var(--sans);letter-spacing:.025em;text-transform:none}
.nav{gap:25px}.menu-toggle{min-width:60px;min-height:44px;white-space:nowrap}
.hero{grid-template-columns:1.04fr 1fr;gap:5vw;min-height:calc(100svh - 104px);padding:64px 0 72px}
.hero-copy{padding:0}
.hero h1{font:600 clamp(58px,7.7vw,118px)/.98 var(--display);letter-spacing:-.065em;margin:28px 0 30px;max-width:none}
.hero h1 em{font-family:inherit;font-style:normal;font-weight:inherit;color:var(--sage)}
.hero-description{font:400 19px/1.65 var(--sans);max-width:420px;color:var(--muted)}
.eyebrow,.hero-label,.hero-index,.intro-band,.card-kicker,.card-meta span,.archive-count,.archive-image span,.step b,.back-link,.page-gallery figcaption,.video-caption,.lightbox-caption,.lightbox-position,.material-heading,.material-choice,.slide-count{font-family:var(--sans);font-size:14px;line-height:1.5;letter-spacing:.045em}
.eyebrow{color:#725841;letter-spacing:.1em;font-weight:500}
.primary-link{font:500 16px/1.4 var(--sans);letter-spacing:.015em;text-transform:none;gap:28px;min-height:48px;padding-bottom:12px}
.primary-link span{display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;width:38px;height:38px;font-size:21px;transition:transform .25s,background .25s}
.primary-link:hover span{transform:rotate(-35deg);background:#e0d7c7}
.hero-art{height:clamp(430px,43vw,650px);min-height:0;border-radius:2px}
.hero-label{bottom:18px;left:18px;max-width:calc(100% - 36px);padding:11px 15px;background:#29271fe8;color:#faf6ed}
.slide-controls{padding:15px 0;gap:8px;border-bottom:1px solid var(--line)}
.slide-controls button{width:46px;height:46px;border-radius:50%;background:#ffffff38}
.material-switcher{margin-top:17px}.material-heading{font-style:italic;font-family:var(--serif);font-size:21px;letter-spacing:0;text-transform:none}
.material-choice{font-size:13px;letter-spacing:0}
.intro-band{padding-block:25px;font-size:14px;letter-spacing:.06em}
.section{padding-block:110px}
.section-heading{margin-bottom:40px;padding-bottom:30px;gap:32px}
.section-heading h2,.approach h2,.about h2,.contact h2{font-family:var(--serif);font-size:clamp(48px,5.3vw,80px);font-weight:400;line-height:1.03;letter-spacing:-.035em}
.section-heading p,.card-description,.step p,.archive-note,.page-hero p,.about-copy,.approach-copy{font:400 18px/1.65 var(--sans);color:var(--muted)}
.section-heading p{max-width:350px}.card-description{font-size:17px;margin-top:13px}
.filters{gap:10px;margin-bottom:36px}.filter{font:500 14px/1.4 var(--sans);letter-spacing:.025em;min-height:46px;padding:12px 18px;border-radius:2px;background:#ffffff20}
.filter[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.work-grid{gap:74px 34px}.card-image{border-radius:2px}
.card-kicker{font-size:13px;padding:10px 13px;background:#f4f0e8eb;color:var(--ink)}
.card-meta{padding-top:20px;gap:14px;flex-wrap:wrap}.card-meta h3{font:400 clamp(30px,2.8vw,42px)/1.1 var(--serif);letter-spacing:-.02em}
.card-meta span{font-size:13px}
.archive-panel{background:#e2ded36b;border-block:1px solid var(--line)}
.archive-image span{font-size:13px;background:#f4f0e8ed}
.approach{background:radial-gradient(ellipse at 85% 10%,#62674b88,transparent 65%),#2d3027}
.approach-copy,.step p{color:#e0ddd3}.about-copy{font-size:19px}
.contact h2{max-width:750px}.contact-copy{font:400 18px/1.65 var(--sans)}
.contact-copy a{display:inline-block;border-bottom:1px solid var(--line);padding-bottom:8px}
.footer{flex-wrap:wrap;align-items:center;gap:20px;font:400 13px/1.6 var(--sans);letter-spacing:.03em;padding-block:26px}
.ambience-toggle{font:400 13px/1.5 var(--sans);letter-spacing:0;text-transform:none;min-height:44px;border:1px solid var(--line);padding:9px 13px;background:transparent;cursor:pointer}
.ambience-toggle:hover{background:#ded7c5}
.call-bubble,.whatsapp-bubble{font:500 15px/1.4 var(--sans);letter-spacing:0;box-shadow:none}
.page-hero{padding-block:64px 38px}.page-hero h1{font:500 clamp(44px,5.6vw,84px)/1.05 var(--display);letter-spacing:-.055em;max-width:1100px}
.page-hero p{max-width:660px}.back-link{font-size:15px;letter-spacing:0;text-transform:none}
.page-gallery figcaption,.video-caption{font-size:14px;padding:15px 18px;text-transform:none;letter-spacing:.02em}
.loader-mark{font:500 25px/1.2 var(--display);letter-spacing:.2em}
[data-ambience="paused"] .ambient-light span{animation-play-state:paused}
:focus-visible{outline:2px solid #725841;outline-offset:5px}
@media(max-width:1000px){.hero{grid-template-columns:1fr;gap:38px}.hero h1{font-size:clamp(65px,10vw,105px)}.hero-art{height:66vw;max-height:650px}.hero-description{max-width:520px}.topbar{min-height:94px}.section-heading{align-items:start}.nav{gap:16px}}
@media(max-width:600px){.shell{width:calc(100% - 40px)}.topbar{min-height:92px;padding-block:17px;gap:14px}.wordmark{font-size:24px}.wordmark small{font-size:12px;max-width:205px}.nav.open{background:#f4f0ef;border:1px solid var(--line);padding:18px}.nav a{font-size:17px}.hero{padding:46px 0;min-height:auto;gap:28px}.hero h1{font-size:clamp(50px,16vw,76px);margin:24px 0;line-height:1.02}.hero-description{font-size:18px;line-height:1.6}.eyebrow{font-size:13px;letter-spacing:.065em}.hero-art{height:115vw;max-height:550px}.hero-label{font-size:13px;left:12px;bottom:12px;padding:10px 12px}.intro-band{font-size:13px;gap:14px;line-height:1.6}.section{padding-block:70px}.section-heading{display:block}.section-heading p{max-width:none;font-size:17px;margin-top:22px}.section-heading h2,.about h2,.approach h2,.contact h2{font-size:48px;line-height:1.04}.filters{gap:8px}.filter{font-size:13px;padding:11px 13px}.work-grid{gap:48px}.card-meta h3{font-size:34px}.card-description{font-size:17px}.card-meta span{font-size:13px}.card-kicker{font-size:13px}.archive-image span{font-size:12px}.material-choice{font-size:12px}.material-heading{font-size:21px}.approach-copy,.about-copy,.page-hero p{font-size:18px}.page-hero{padding-block:44px 28px}.page-hero h1{font-size:clamp(39px,10.5vw,60px)}.footer{font-size:13px;gap:12px;justify-content:flex-start}.footer span{width:100%}.contact-dock .call-bubble,.contact-dock .whatsapp-bubble{font-size:15px}.ambient-light span{width:130vmax;height:130vmax}}
@media(prefers-reduced-motion:reduce){.ambient-light span{animation:none;will-change:auto}.primary-link span{transition:none}}


.wordmark{font-size:clamp(20px,2.2vw,29px);letter-spacing:-.04em}.wordmark small{letter-spacing:0;font-size:13px}.loader-mark{font-size:22px;letter-spacing:.03em}.career-columns{display:grid;grid-template-columns:1fr 1fr;gap:65px}.career-columns h3{font:400 32px var(--serif);margin:28px 0 12px}.career-columns small{font:14px var(--sans);display:block;margin-top:8px}.career-columns p,.career-columns li{font:17px/1.7 var(--sans)}.career-columns ul{padding-left:20px}.career-columns li{padding-bottom:9px}@media(max-width:700px){.career-columns{grid-template-columns:1fr;gap:20px}.wordmark{max-width:240px}.topbar{gap:10px}}

/* 2026-10-23 interview update: sites band, grouped archive, About with portrait */
.sites-band{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:30px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:20px 0}
.sites-label{font:600 12px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--rust);white-space:nowrap;line-height:1.4}.sites-label small{display:block;font-weight:400;color:var(--muted);letter-spacing:.08em}
.sites-window{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.sites-track{display:flex;width:max-content;margin:0;padding:0;list-style:none;animation:sites-scroll 70s linear infinite}
.sites-band:hover .sites-track,.sites-band:focus-within .sites-track,[data-ambience="paused"] .sites-track{animation-play-state:paused}
.sites-track li{position:relative;display:flex;align-items:baseline;gap:10px;padding:0 30px;white-space:nowrap}
.sites-track li:after{content:"";position:absolute;right:-3px;top:55%;width:5px;height:5px;border-radius:50%;background:var(--sage)}
.sites-track b{font:400 24px/1.2 var(--serif);color:var(--ink)}.sites-track small{font:12px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.sites-more{font:12px var(--sans);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-bottom:1px solid currentColor;padding-bottom:3px}.sites-more:hover{color:var(--rust)}
@keyframes sites-scroll{to{transform:translateX(-50%)}}
@media(max-width:800px){.sites-band{grid-template-columns:1fr auto;gap:14px 18px}.sites-window{grid-column:1/-1;grid-row:2}.sites-track b{font-size:21px}.sites-track li{padding:0 22px}}
@media(prefers-reduced-motion:reduce){.sites-track{animation:none;flex-wrap:wrap;width:auto;row-gap:10px}.sites-track [aria-hidden="true"]{display:none}.sites-window{-webkit-mask-image:none;mask-image:none}}
.archive-panel .filters{margin-bottom:0}.archive-controls{align-items:flex-end}
.archive-groups{display:grid;gap:0}
.archive-group{padding-top:44px;margin-top:44px;border-top:1px solid var(--line)}.archive-group:first-child{margin-top:0;padding-top:8px;border-top:0}.archive-group[hidden]{display:none}
.archive-group-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 18px;align-items:baseline;margin-bottom:22px}
.archive-group-num{font:12px var(--sans);letter-spacing:.1em;color:var(--rust)}
.archive-group-head h3{margin:0;font:400 clamp(30px,3.2vw,44px)/1.1 var(--serif);letter-spacing:-.02em}
.archive-count{white-space:nowrap}
.archive-group-count{font:12px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.archive-group-head p{grid-column:2/-1;margin:0;max-width:600px;font:16px/1.6 var(--sans);color:var(--muted)}
.archive-group[data-group="site"] .archive-group-head h3:after{content:"Real photographs";display:inline-block;vertical-align:middle;margin-left:14px;padding:5px 9px;background:var(--sage);color:#fff;font:600 11px var(--sans);letter-spacing:.1em;text-transform:uppercase}
.archive-image{height:auto}.archive-image img{height:auto}
.archive-group:not(.expanded) .is-extra{display:none}
.archive-more{display:inline-flex;align-items:center;min-height:46px;margin-top:6px;padding:0 20px;border:1px solid var(--ink);background:transparent;font:12px var(--sans);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:background .2s,color .2s}.archive-more:hover{background:var(--ink);color:var(--paper)}.archive-more:focus-visible{outline:3px solid var(--rust);outline-offset:3px}
@media(max-width:520px){.archive-group-head{grid-template-columns:auto 1fr}.archive-group-count{grid-column:2}.archive-group-head p{grid-column:1/-1}.archive-group[data-group="site"] .archive-group-head h3:after{display:block;width:max-content;margin:8px 0 0}}
.about{grid-template-columns:minmax(240px,.72fr) minmax(0,1.28fr);gap:clamp(40px,7vw,110px);align-items:start}
.about-portrait{margin:0;position:sticky;top:28px}.about-portrait img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}
.about-portrait figcaption{padding-top:12px;font:12px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.about-body h2{max-width:640px;margin-bottom:26px}.about-facts dd,.sites-track b{font-variant-numeric:lining-nums}.about-copy{max-width:640px}.about-copy .about-lede{font:400 clamp(25px,2.3vw,32px)/1.32 var(--serif);color:var(--ink)}
.about-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:36px 0;border-top:1px solid var(--ink)}
.about-facts div{padding:16px 18px 0 0}.about-facts dt{font:600 12px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--rust)}.about-facts dd{margin:6px 0 0;font:500 18px/1.4 var(--sans);color:var(--ink)}
.about-lists{display:grid;grid-template-columns:1fr 1fr;gap:34px}.about-lists h3{margin:0 0 10px;font:600 12px var(--sans);letter-spacing:.12em;text-transform:uppercase}
.about-lists ul{margin:0;padding:0;list-style:none}.about-lists li{padding:9px 0;border-bottom:1px solid var(--line);font:16px/1.5 var(--sans);color:var(--ink)}
.about-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:36px}.about-actions a{display:inline-flex;align-items:center;min-height:48px;padding:0 20px;border:1px solid var(--ink);font:13px var(--sans);letter-spacing:.07em;text-transform:uppercase;transition:background .2s,color .2s}
.about-actions a:first-child,.about-actions a:hover{background:var(--ink);color:var(--paper)}.about-actions a:focus-visible{outline:3px solid var(--rust);outline-offset:3px}
@media(max-width:1000px){.about-facts{grid-template-columns:1fr 1fr;row-gap:8px}}
@media(max-width:800px){.about{grid-template-columns:1fr;gap:30px}.about-portrait{position:static;max-width:340px}.about-lists{grid-template-columns:1fr;gap:26px}}

/* 2026-10-23 stage 2: CV section, map, icons, live controls, livelier background */
.ic{width:20px;height:20px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ambient-light span{width:80vmax;height:80vmax;filter:saturate(1.15)}
.ambient-light span:nth-child(1){left:-30vmax;top:-30vmax;background:radial-gradient(circle,rgba(150,158,104,.55),rgba(150,158,104,.2) 38%,transparent 68%);animation:amb-sage 12s ease-in-out infinite alternate}
.ambient-light span:nth-child(2){right:-32vmax;top:-18vmax;background:radial-gradient(circle,rgba(196,138,98,.5),rgba(196,138,98,.18) 38%,transparent 68%);animation:amb-bronze 14s ease-in-out infinite alternate;animation-delay:-5s}
.ambient-light span:nth-child(3){left:10vmax;bottom:-45vmax;background:radial-gradient(circle,rgba(190,168,108,.48),rgba(190,168,108,.16) 40%,transparent 70%);animation:amb-gold 10s ease-in-out infinite alternate;animation-delay:-3s}
@keyframes amb-sage{0%{transform:translate3d(0,0,0) scale(.9)}50%{transform:translate3d(32vw,18vh,0) scale(1.1)}100%{transform:translate3d(12vw,48vh,0) scale(.95)}}
@keyframes amb-bronze{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(-30vw,26vh,0) scale(1.15)}100%{transform:translate3d(-8vw,52vh,0) scale(.9)}}
@keyframes amb-gold{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(26vw,-30vh,0) scale(1.12)}100%{transform:translate3d(-14vw,-52vh,0) scale(.92)}}
@media(max-width:700px){.ambient-light span{width:110vmax;height:110vmax}}
[data-ambience="paused"] .ambient-light span{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.ambient-light span{animation:none}}
.ambience-toggle[hidden]{display:none}
a.hero-label{transition:background .2s}a.hero-label:after{content:" ↗"}a.hero-label:hover{background:var(--rust)}a.hero-label:focus-visible{outline:3px solid var(--rust);outline-offset:3px}
.cv .section-heading{margin-bottom:0}
.cv-block{margin-top:68px}
.cv-title{display:flex;align-items:center;gap:12px;margin:0 0 28px;padding-bottom:14px;border-bottom:1px solid var(--line);font:600 13px var(--sans);letter-spacing:.14em;text-transform:uppercase}
.cv-title .ic{color:var(--rust);width:22px;height:22px}.cv-title small{margin-left:auto;font:12px var(--sans);letter-spacing:.08em;color:var(--muted)}
.timeline{list-style:none;margin:0;padding:0}
.role{display:grid;grid-template-columns:210px minmax(0,1fr);gap:40px;padding-bottom:44px}
.role-when{position:relative;padding-left:30px}
.role-when:before{content:"";position:absolute;left:6px;top:16px;bottom:-44px;width:1px;background:var(--ink);opacity:.35}.role:last-child .role-when:before{display:none}
.role-when:after{content:"";position:absolute;left:0;top:5px;width:13px;height:13px;border-radius:50%;background:var(--paper);border:2px solid var(--rust)}
.role:first-child .role-when:after{background:var(--rust)}
.role-when span{display:block;font:600 18px/1.3 var(--sans);font-variant-numeric:lining-nums}.role-when small{font:12px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.role-body h4{margin:0 0 10px;font:400 clamp(30px,3vw,40px)/1.05 var(--serif)}
.role-body p{max-width:680px;margin:0 0 16px;font:17px/1.65 var(--sans);color:var(--muted)}
.role-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.role-chips li{padding:8px 12px;border:1px solid var(--line);background:#f8f5ef99;font:14px/1.3 var(--sans)}
.sites-layout{display:grid;grid-template-columns:minmax(300px,.9fr) minmax(0,1.1fr);gap:48px;align-items:start}
.sites-map{position:sticky;top:24px;margin:0;border:1px solid var(--line);background:var(--paper)}
.sites-map-frame{position:relative}.sites-map-svg{display:block;width:100%;height:auto;color:#8b8676}
.map-sea{fill:#e4dfd3}.map-land{fill:#f6f2ea;stroke:#8b8676;stroke-width:1.1}.map-neighbour{fill:#ebe6db;stroke:#b9b3a4;stroke-width:.6}
.map-sea-label{font:italic 16px var(--serif);fill:#8b8676;letter-spacing:.12em}.map-region-label{font:600 11px var(--sans);fill:#8b8676;letter-spacing:.2em;text-transform:uppercase}
.map-pin{position:absolute;left:var(--x);top:var(--y);display:flex;align-items:center;gap:8px;padding:0;border:0;background:none;color:var(--ink);cursor:pointer;transform:translate(calc(var(--s) / -2),-50%)}
.map-pin.label-left{flex-direction:row-reverse;transform:translate(calc(-100% + var(--s) / 2),-50%)}
.pin-dot{position:relative;display:grid;place-items:center;width:var(--s);height:var(--s);border-radius:50%;background:var(--rust);color:#fff;font:700 14px var(--sans);transition:transform .2s,background .2s}
.pin-dot:before{content:"";position:absolute;inset:-7px;border-radius:50%;border:1px solid var(--rust);opacity:.5;animation:pin-pulse 2.4s ease-out infinite}
@keyframes pin-pulse{from{transform:scale(.8);opacity:.6}to{transform:scale(1.5);opacity:0}}
.pin-label{padding:5px 9px;border:1px solid var(--line);background:var(--paper);font:600 12px var(--sans);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;transition:background .2s,color .2s}
.map-pin:hover .pin-dot,.map-pin.is-hot .pin-dot,.map-pin[aria-pressed="true"] .pin-dot{transform:scale(1.12);background:var(--ink)}
.map-pin[aria-pressed="true"] .pin-label{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.map-pin:focus-visible{outline:none}.map-pin:focus-visible .pin-dot{outline:3px solid var(--rust);outline-offset:4px}
.sites-map figcaption{padding:11px 14px;border-top:1px solid var(--line);font:13px var(--sans);color:var(--muted)}
.site-group{margin-bottom:30px;transition:opacity .25s}.site-group.is-dim{opacity:.3}
.site-group header{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:8px;border-bottom:1px solid var(--ink)}
.site-group h4{margin:0;font:400 30px var(--serif)}.site-group header span{font:12px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.site-cards{margin:0;padding:0;list-style:none}
.site-card{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line)}
.ic-wrap{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--sage)}
.site-card b{display:block;font:600 17px/1.3 var(--sans)}.site-card div span{font:14px/1.4 var(--sans);color:var(--muted)}
.site-card em{font:normal 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.site-link{font:600 12px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--rust);white-space:nowrap;border-bottom:1px solid currentColor;padding:6px 0 2px}.site-link:hover{color:var(--ink)}
.cv-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px}
.tool-list,.skill-grid,.edu-grid{margin:0;padding:0;list-style:none}
.tool-list{display:grid;gap:10px}.tool-list li{display:grid;grid-template-columns:48px minmax(0,1fr);gap:16px;align-items:center;padding:12px;border:1px solid var(--line);background:#f8f5ef80}
.tool-ic{display:grid;place-items:center;width:48px;height:48px;background:var(--ink);color:var(--paper)}.tool-ic .ic{width:22px;height:22px}
.tool-list b{display:block;font:600 12px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--rust)}.tool-list span{font:16px/1.45 var(--sans)}
.skill-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.skill-grid li{display:flex;align-items:center;gap:12px;min-height:58px;padding:12px 14px;border:1px solid var(--line);background:#f8f5ef80;font:15px/1.35 var(--sans)}.skill-grid .ic{color:var(--sage);width:22px;height:22px}
.edu-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.edu-grid li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:14px;padding:16px;border:1px solid var(--line);background:#f8f5ef80}
.edu-ic{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--sage);color:#fff}
.edu-grid small{display:block;font:600 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--rust)}.edu-grid b{display:block;margin:2px 0;font:600 16px/1.35 var(--sans)}.edu-grid div span{font:14px/1.4 var(--sans);color:var(--muted)}
.about-portrait figcaption{display:flex;align-items:center;gap:8px}.about-portrait figcaption .ic{width:16px;height:16px;color:var(--rust)}
.stat-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:36px 0 0;padding:0;list-style:none;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}
.stat{display:grid;align-content:start;gap:8px;padding:20px 18px 22px 0}.stat+.stat{padding-left:18px;border-left:1px solid var(--line)}
.stat .ic{width:22px;height:22px;color:var(--rust)}
.stat strong{font:500 clamp(34px,3.4vw,48px)/1 var(--sans);letter-spacing:-.04em;font-variant-numeric:lining-nums tabular-nums}
.stat span{font:14px/1.4 var(--sans);color:var(--muted)}
.about-actions a:last-child{border-color:var(--rust);color:var(--rust)}.about-actions a:last-child:hover{background:var(--rust);color:#fff}
.project-next{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:0 0 96px}
.project-next a{display:flex;flex-direction:column;gap:6px;padding:26px 28px;border:1px solid var(--ink);transition:background .2s,color .2s}
.project-next small{font:600 12px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--rust)}.project-next b{font:400 clamp(26px,2.6vw,36px)/1.1 var(--serif)}
.project-next a:hover{background:var(--ink);color:var(--paper)}.project-next a:last-child{align-items:flex-end;text-align:right}.project-next a:focus-visible{outline:3px solid var(--rust);outline-offset:3px}
@media(max-width:1000px){.edu-grid{grid-template-columns:1fr 1fr}.stat-row{grid-template-columns:1fr 1fr}.stat:nth-child(3){padding-left:0;border-left:0}.stat:nth-child(n+3){border-top:1px solid var(--line)}}
@media(max-width:900px){.sites-layout,.cv-grid{grid-template-columns:1fr;gap:34px}.sites-map{position:static;max-width:520px}}
@media(max-width:700px){.role{grid-template-columns:1fr;gap:12px;padding-bottom:36px}.role-when:before{bottom:-36px}.role-body{padding-left:30px}.edu-grid,.skill-grid{grid-template-columns:1fr}.project-next{grid-template-columns:1fr}.project-next a:last-child{align-items:flex-start;text-align:left}.site-card{grid-template-columns:40px minmax(0,1fr)}.site-card>em,.site-card>.site-link{grid-column:2;justify-self:start}.pin-label{font-size:10px;padding:4px 6px}.cv-title small{display:none}}
.contact-dock{gap:8px;pointer-events:none}.contact-dock>a{pointer-events:auto}@media(min-width:521px){.contact-dock{width:auto;margin:0;left:auto}.footer{padding-right:86px}}.contact-dock .call-bubble,.contact-dock .whatsapp-bubble{box-shadow:none;min-height:50px;min-width:50px;padding:0 15px;gap:0;justify-content:center;border-radius:0}
.contact-dock a>span{max-width:0;overflow:hidden;white-space:nowrap;transition:max-width .3s ease,margin .3s ease}
.contact-dock a:hover>span,.contact-dock a:focus-visible>span{max-width:220px;margin-left:10px}.contact-dock a:hover>span+span,.contact-dock a:focus-visible>span+span{margin-left:6px}
@media(max-width:520px){.contact-dock a>span{max-width:none;margin-left:8px}.contact-dock .call-number{display:none}}
@media(prefers-reduced-motion:reduce){.contact-dock a>span{transition:none}}
@media(prefers-reduced-motion:reduce){.pin-dot:before{animation:none;opacity:0}.site-group{transition:none}}
