@font-face{font-family:Orkney;src:url('fonts/Orkney-Light.otf') format('opentype');font-weight:300;font-display:swap}
@font-face{font-family:Orkney;src:url('fonts/Orkney-Regular.otf') format('opentype');font-weight:400;font-display:swap}
@font-face{font-family:Orkney;src:url('fonts/Orkney-Medium.otf') format('opentype');font-weight:500;font-display:swap}
@font-face{font-family:Orkney;src:url('fonts/Orkney-Bold.otf') format('opentype');font-weight:700;font-display:swap}

:root{
  --night:#252a3d;
  --night-deep:#181c2b;
  --paper:#f3f1ed;
  --ink:#24242a;
  --cream:#f2eee8;
  --muted:#b8bbc5;
  --muted-dark:#6e7180;
  --peach:#ffad9b;
  --red:#c95745;
  --line:rgba(242,238,232,.16);
  --line-dark:rgba(36,36,42,.18);
  --page:clamp(1.25rem,5vw,5.5rem);
  --max:1580px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--night-deep)}
html,body,button,select,input,textarea{font-family:Orkney,sans-serif}
body{margin:0;background:var(--night-deep);color:var(--cream);font-size:1rem;line-height:1.6;-webkit-font-smoothing:antialiased}
body.panel-open{overflow:hidden}
a{color:inherit}
button{font:inherit;cursor:pointer}
img{max-width:100%}
[hidden]{display:none!important}
.skip-link{position:fixed;left:1rem;top:-5rem;z-index:1000;background:var(--paper);color:var(--ink);padding:.7rem 1rem}
.skip-link:focus{top:1rem}
.header-band,.projects-band,.footer-band{width:100%;background:var(--night)}
.profile-band{width:100%;background:var(--paper);color:var(--ink)}
.section-label,.overline{margin:0;color:var(--red);font-size:.72rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase}
.projects-band .section-label,.footer-band .section-label{color:var(--peach)}

.site-header{max-width:var(--max);margin:auto;min-height:6rem;padding:1.25rem var(--page);display:grid;grid-template-columns:1fr auto;align-items:center;border-bottom:1px solid var(--line)}
.identity{display:flex;align-items:center;gap:1rem;text-decoration:none;font-weight:500}
.identity-mark{display:grid;place-items:center;width:2.7rem;height:2.7rem;border:1px solid var(--peach);color:var(--peach);font-size:.72rem;font-weight:700}
.identity-name{font-size:.88rem}
.site-header nav{justify-self:end;display:flex;gap:clamp(.6rem,1.5vw,1.5rem)}
.site-header nav a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.55rem .65rem;text-decoration:none;color:var(--muted);font-size:.9rem}
.site-header nav a:hover,.site-header nav a:focus-visible{color:var(--peach)}

.profile-shell,.projects-shell,.footer-shell{max-width:var(--max);margin:auto;padding-left:var(--page);padding-right:var(--page)}

.profile-shell{padding-top:clamp(3rem,5vw,5rem);padding-bottom:clamp(4.5rem,5vw,5rem)}
.profile-intro{display:grid;grid-template-columns:1.4fr .75fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.profile-lead h1{margin:0;font-size:clamp(2.6rem,4.4vw,4.6rem);line-height:1.06;letter-spacing:-.05em;font-weight:700}
.floating-heading{will-change:transform}
.profile-lead h1>span,.profile-lead h1>em,h2.floating-heading,h3.floating-heading{width:fit-content;max-width:100%}
.profile-lead h1>span{display:block;white-space:nowrap}
.profile-lead h1 em{display:block;margin-top:.5em;color:var(--red);font-size:.56em;line-height:1.25;letter-spacing:-.025em;font-style:normal;font-weight:300}
.profile-summary{max-width:31rem;margin:0;color:#65626a;font-size:clamp(1rem,1.4vw,1.25rem);line-height:1.75;font-weight:300}
.method{margin-top:clamp(3.5rem,6vw,6rem);scroll-margin-top:1.5rem}
.method-copy{padding-top:1.7rem}
.method-copy h2{margin:0;font-size:clamp(1.7rem,2.7vw,2.8rem);line-height:1.15;letter-spacing:-.035em;font-weight:500}
.method-workflow{min-width:0;display:flex;flex-direction:column}
.method-map{position:relative;width:100%;height:440px;isolation:isolate;overflow:hidden;touch-action:pan-y;margin-top:1.6rem}
.map-lines,#mapNodes{position:absolute;inset:0;width:100%;height:100%}
.map-lines{pointer-events:none}
.map-spine{fill:none;stroke:var(--ink);stroke-opacity:.22;stroke-width:1}
.map-rail{fill:none;stroke-width:1;opacity:.55}
.map-link{fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;opacity:.32;transition:opacity .25s}
.map-link.is-highlighted,.map-link.is-current-branch{opacity:.72}
.map-node{position:absolute;top:0;left:0;margin:0;text-align:center;line-height:1.35;font-size:.86rem;color:#706b70;will-change:transform}
.map-family,.map-skill{display:grid;place-items:center;min-height:28px;padding:4px 3px}
.map-label{position:relative;z-index:1;background:var(--paper);box-shadow:0 0 4px 3px var(--paper)}
.map-family{color:var(--branch);font-size:1rem;font-weight:500}
.map-dot{position:absolute;left:calc(50% - 2px);top:calc(50% - 2px);width:4px;height:4px;border-radius:50%;background:var(--branch)}
.map-family .map-dot{top:auto;bottom:-4px;width:5px;height:5px}
.map-stage{z-index:2;display:flex;align-items:center;justify-content:center;gap:.6rem;width:132px;height:50px;padding:0 10px;border:1px solid color-mix(in srgb,var(--branch) 45%,var(--paper));border-radius:999px;background:var(--paper);color:var(--branch);font-size:.86rem;font-weight:500;transition:background .2s,color .2s,box-shadow .2s}
.map-stage .map-label{background:none;box-shadow:none}
.map-stage .map-dot{display:none}
.map-number{font-size:.63rem;font-weight:400;opacity:.75}
.map-stage.is-selected{background:var(--branch);color:var(--paper);border-color:var(--branch)}
.map-stage:hover{box-shadow:0 0 0 5px color-mix(in srgb,var(--branch) 12%,transparent)}
.map-stage:focus-visible{outline:2px solid var(--branch);outline-offset:5px}
.map-stage::after{content:'';position:absolute;inset:-1px;border:1px solid var(--branch);border-radius:inherit;opacity:0;pointer-events:none}
.is-inviting .map-stage::after{animation:stage-pulse 8s var(--pulse-delay) infinite;animation-play-state:paused}
.is-inviting.motion-running .map-stage::after{animation-play-state:running}
@keyframes stage-pulse{0%,24%,100%{opacity:0;transform:scale(1)}5%{opacity:.6}20%{opacity:0;transform:scale(1.15,1.4)}}
.method-detail{--branch:var(--red);display:grid;position:relative;border-top:1px solid var(--line-dark);padding-top:1.5rem}
/* All six panels occupy the same grid cell: the longest determines the height. */
.stage-detail{grid-area:1/1;display:grid;grid-template-columns:1fr 1.25fr;gap:clamp(2rem,6vw,6rem);visibility:hidden;pointer-events:none}
.stage-detail.is-active{visibility:visible;pointer-events:auto}
.method-trait{margin:0 0 .65rem;color:var(--branch);font-size:.68rem;text-transform:uppercase;letter-spacing:.1em}
.method-detail h3{max-width:24ch;margin:0;font-size:clamp(1.3rem,2vw,2rem);font-weight:500;line-height:1.25;letter-spacing:-.025em}
.method-description{max-width:44rem;margin:0;color:#66616a;font-size:.94rem;line-height:1.8}
.link-icon{display:block;flex:0 0 auto;width:1.1rem;height:1.1rem;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.icon-filled{fill:currentColor;stroke:none}
.site-header nav{align-items:center}
.site-header nav a.nav-cv{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border:1px solid var(--peach);color:var(--peach)}
.site-header nav a.nav-cv:hover{background:var(--peach);color:var(--night-deep)}

.projects-band{position:relative;background:var(--night)}
.projects-shell{padding-top:clamp(11.5rem,15vw,13rem);padding-bottom:clamp(5rem,8vw,8rem)}
.projects-header{display:block}
.projects-header h2{margin:0;font-size:clamp(2.5rem,5vw,5.4rem);line-height:1;letter-spacing:-.045em}
.projects-header>p{max-width:25rem;margin:0;color:var(--muted);font-weight:300}
.project-filter{display:flex;justify-content:space-between;align-items:center;gap:2rem;margin:clamp(2rem,4vw,4rem) 0 2rem;padding:1.3rem 0}
.filter-list{display:flex;flex-wrap:wrap;gap:.6rem}
.filter-button{border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);padding:.55rem .9rem;font-size:.74rem;transition:color .2s,border-color .2s,background .2s}
.filter-button:hover,.filter-button:focus-visible{border-color:var(--peach);color:var(--peach)}
.filter-button.is-active{background:var(--peach);border-color:var(--peach);color:var(--night-deep)}
#projectCount{flex:0 0 auto;margin:0;color:var(--muted);font-size:.72rem}
.project-mosaic{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-flow:dense;gap:clamp(.7rem,1.3vw,1.2rem)}
.project-card{grid-column:span 4}
.project-card.is-wide{grid-column:span 8}
.project-card button{position:relative;display:block;width:100%;height:100%;min-height:clamp(16rem,22vw,23rem);padding:0;border:0;background:var(--night-deep);color:var(--cream);overflow:hidden;text-align:left}
.project-card.is-wide button{min-height:clamp(16rem,22vw,23rem)}
.project-card.is-tall button{min-height:clamp(16rem,22vw,23rem)}
.project-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.82) contrast(.96);transition:transform .7s cubic-bezier(.22,.8,.25,1),filter .4s}
.card-wash{position:absolute;inset:28% 0 0;background:linear-gradient(transparent,rgba(12,15,25,.9))}
.card-number{position:absolute;top:1.15rem;left:1.2rem;color:rgba(255,255,255,.75);font-size:.64rem;letter-spacing:.1em}
.card-copy{position:absolute;left:1.2rem;right:3rem;bottom:1.25rem;display:grid;gap:.35rem}
.card-context{color:var(--peach);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase}
.card-copy strong{font-size:clamp(1.25rem,2vw,2rem);font-weight:500;line-height:1.06;letter-spacing:-.025em}
.card-role{max-width:36rem;color:var(--muted);font-size:.7rem;line-height:1.4}
.card-arrow{position:absolute;right:1.25rem;bottom:1.25rem;width:2.25rem;height:2.25rem;display:grid;place-items:center;border:1px solid rgba(255,255,255,.35);border-radius:50%;transition:background .2s,color .2s,transform .2s}
.project-card button:hover img,.project-card button:focus-visible img{transform:scale(1.035);filter:saturate(1)}
.project-card button:hover .card-arrow,.project-card button:focus-visible .card-arrow{background:var(--peach);border-color:var(--peach);color:var(--night);transform:rotate(45deg)}
.project-card button:focus-visible{outline:2px solid var(--peach);outline-offset:3px}
.project-card.is-icon button{display:grid;grid-template-columns:1fr 1fr;align-items:center;min-height:0}
.project-card.is-icon img{position:static;aspect-ratio:1;height:auto;object-fit:contain;filter:none}
.project-card.is-icon .card-wash{display:none}
.project-card.is-icon .card-copy{position:static;padding:1.3rem 1.3rem 3.8rem;gap:.65rem}
.project-card.is-icon .card-number{background:var(--night-deep);padding:.3rem .4rem}

.footer-band{--wave-base:var(--night-deep);background:var(--night-deep)}
.footer-shell{padding-top:clamp(3rem,5vw,5rem);padding-bottom:2rem}
.footer-invite{display:flex;justify-content:space-between;align-items:center;gap:2rem;padding-bottom:3rem}
.footer-invite h2{margin:0;font-size:clamp(1.8rem,3.2vw,3.3rem);line-height:1.15;letter-spacing:-.035em;font-weight:400}
.contact-button{display:inline-flex;align-items:center;justify-content:center;gap:.9rem;padding:1rem 1.4rem;background:var(--peach);border:1px solid var(--peach);color:var(--night-deep);font-size:1rem;text-decoration:none;white-space:nowrap;transition:background .2s,color .2s}
.contact-button:hover{background:var(--cream);border-color:var(--cream)}
.footer-links{display:flex;align-items:center;flex-wrap:wrap;gap:1rem 2rem;padding:1.3rem 0;border-top:1px solid var(--line)}
.footer-links a{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--muted);font-size:.82rem;min-height:44px}
.footer-links a:hover,.footer-links a:focus-visible{color:var(--peach)}
.footer-links .footer-cv{margin-left:auto;padding:.6rem 1rem;border:1px solid var(--peach);color:var(--peach)}
.footer-links .footer-cv:hover{background:var(--peach);color:var(--night-deep)}
.footer-meta{display:flex;justify-content:space-between;gap:2rem;padding-top:1.5rem;color:var(--muted);font-size:.66rem}
a:focus-visible,button:focus-visible{outline:2px solid var(--peach);outline-offset:4px}
.profile-band a:focus-visible{outline-color:var(--red)}


.project-panel{position:fixed;inset:0;z-index:100;background:var(--night);overflow-y:auto;overflow-x:hidden;transform:translateY(102%);visibility:hidden;transition:transform .55s cubic-bezier(.22,.8,.25,1),visibility 0s .55s}
.project-panel.is-open{transform:none;visibility:visible;transition:transform .55s cubic-bezier(.22,.8,.25,1)}
.panel-bar{--wave-base:var(--paper);position:sticky;top:0;z-index:5;min-height:4.5rem;padding:.75rem var(--page);display:flex;align-items:center;background:var(--paper);color:var(--ink)}
.panel-bar button{min-height:44px;padding:.55rem .8rem;border:1px solid var(--line-dark);background:transparent;color:var(--ink);font-size:.8rem;transition:background .2s,border-color .2s}
.panel-bar button:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.panel-bar button:focus-visible{outline-color:var(--red)}
.case-hero{background:var(--night);color:var(--cream)}
.case-heading{max-width:var(--max);margin:auto;padding:clamp(2rem,4vw,4.5rem) var(--page) clamp(2.5rem,5vw,5rem)}
.case-heading h2{max-width:20ch;margin:0;font-size:clamp(2.3rem,5.8vw,6.2rem);line-height:1.04;letter-spacing:-.05em;font-weight:500;overflow-wrap:break-word}
.case-cover{width:100%;height:clamp(14rem,50vw,46rem);object-fit:cover;display:block}
.case-art.is-square{padding:1rem var(--page);background:var(--night-deep)}
.case-art.is-square .case-cover{width:min(100%,30rem);height:auto;aspect-ratio:1;object-fit:contain;margin:auto}
.case-art>.wave-edge-top{top:0}.case-art>.wave-edge-bottom{bottom:0}
.case-body{max-width:var(--max);margin:auto;padding:0 var(--page) clamp(3rem,6vw,6rem)}
.case-recap{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:clamp(1.5rem,4vw,4rem);margin:0;padding:clamp(2rem,3.5vw,3.5rem) 0}
.case-recap dt{margin:0 0 .65rem;color:var(--peach);font-size:.65rem;letter-spacing:.12em;text-transform:uppercase}
.case-recap dd{margin:0;color:var(--cream);font-size:.86rem;line-height:1.7}
.case-story{display:grid;grid-template-columns:1.8fr .7fr;gap:clamp(2rem,6vw,6rem);padding:clamp(2.5rem,5vw,5rem) 0;align-items:start}
.case-description{max-width:65ch;margin:0;color:var(--cream);font-size:clamp(1.05rem,1.65vw,1.5rem);font-weight:300;line-height:1.85;text-wrap:pretty}
.case-links{display:flex;flex-direction:column;align-items:flex-start;gap:1rem;padding-top:.3rem}
.case-links a{text-decoration:none;border-bottom:1px solid var(--line);padding:.35rem 0;color:var(--muted);font-size:.8rem}
.case-links a:hover{color:var(--peach);border-color:var(--peach)}
.case-skills{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.3rem;list-style:none;margin:0;padding:1.1rem 0;color:var(--muted);font-size:.73rem;line-height:1.7}
.case-skills li{display:flex;align-items:center;gap:1.3rem}
.case-skills li::before{content:'';width:3px;height:3px;background:var(--peach);border-radius:50%}
.case-gallery-section{margin-top:clamp(3rem,5vw,5rem)}
.gallery-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.7rem;color:var(--muted);font-size:.7rem}
.gallery-label{margin:0;color:var(--muted);font-size:.7rem;font-weight:400;text-transform:uppercase;letter-spacing:.12em}
.case-gallery{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:clamp(1rem,1.5vw,1.5rem)}
.case-media{flex:none;margin:0;width:calc(50% - 1rem);max-width:100%;min-width:0}
.case-media img,.case-media video{display:block;width:100%;height:auto;object-fit:contain}
.case-media iframe{display:block;width:100%;aspect-ratio:16/9;border:0;background:var(--night-deep)}
.case-media button{position:relative;display:block;width:100%;padding:0;border:0;background:var(--night-deep);cursor:zoom-in}
.gallery-zoom{position:absolute;right:.8rem;bottom:.8rem;display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;border:1px solid rgba(255,255,255,.5);color:white;background:rgba(24,28,43,.72);font-size:1.25rem;line-height:1;transition:background .2s,color .2s}
.case-media button:hover .gallery-zoom,.case-media button:focus-visible .gallery-zoom{background:var(--peach);color:var(--night-deep);border-color:var(--peach)}
.case-media figcaption{padding:.6rem 0;color:var(--muted);font-size:.72rem}
.media-source{display:inline-block;margin-top:.5rem;color:var(--peach);font-size:.75rem;text-underline-offset:.2em}

:where([data-wave-lines],[data-wave-fill]){position:relative}
.wave-edge{position:absolute;left:0;width:100%;height:12px;overflow:visible;pointer-events:none;z-index:2;color:var(--wave-line,var(--line))}
.wave-edge-top{top:-6px}.wave-edge-bottom{bottom:-6px}
.wave-edge.wave-sea{height:240px;bottom:-120px;background:transparent}
.wave-sea .wave-air{fill:var(--paper);stroke:none}
.wave-sea .wave-teeth{fill:var(--night);stroke:none}
.wave-edge path{fill:none;stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke}
.wave-filled path{fill:currentColor;stroke:none}
.wave-filled{background:var(--wave-base,transparent)}
.profile-band{--wave-line:var(--line-dark);--wave-base:var(--paper)}
[data-wave-lines]{border-top-color:transparent;border-bottom-color:transparent}
.site-header{border-bottom:0}
.wave-edge.wave-depths{height:168px;top:-56px;background:transparent;overflow:hidden}
.wave-depths .footer-teeth{fill:var(--night-deep);stroke:none}
.footer-eye{opacity:0}
.footer-shell{padding-top:112px}
.floating-tile{will-change:transform}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.fishing-scene{position:absolute;left:0;top:-100px;width:100%;height:272px;z-index:3;overflow:hidden;pointer-events:none;scroll-margin-top:4rem}
.fishing-effects{position:absolute;inset:0;width:100%;height:272px;pointer-events:none;overflow:visible}
.boat-water-mask{position:absolute;inset:0;pointer-events:none}
.paper-boat{position:absolute;top:0;left:0;pointer-events:none;will-change:transform;transform-origin:50% 75%}
.paper-boat svg{display:block;width:100%;height:100%;overflow:visible}
.boat-paper{fill:var(--night)}
.fishing-bubbles{position:absolute;top:0;left:0;width:56px;height:82px;min-height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--night);pointer-events:auto;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:color .16s;will-change:transform}
.fishing-bubbles svg{display:block;width:100%;height:100%;overflow:visible;fill:currentColor;stroke:none}
.fishing-spot-dot{fill:var(--cream)}
.fishing-spot-pulse{fill:none;stroke:var(--cream);stroke-width:1}
.fishing-bubbles.is-selected .fishing-spot-dot{fill:var(--peach)}
.fishing-bubbles.is-selected .fishing-spot-pulse{stroke:var(--peach)}
.fishing-bubbles.is-selected,.fishing-bubbles.is-hovered,.fishing-bubbles:focus-visible,.fishing-bubbles:active{color:var(--peach)}
.fishing-bubbles:focus-visible{outline:1px dashed var(--red);outline-offset:3px}
.fishing-line{fill:none;stroke:var(--cream);stroke-width:1;stroke-linecap:round;stroke-opacity:.8}
.fishing-fish{fill:var(--peach);opacity:0}.fishing-fish .fish-eye{fill:var(--night)}
.deep-eye{opacity:0}
.eye-white{fill:var(--cream)}.eye-pupil{fill:var(--night-deep)}
.fishing-timing{position:absolute;left:0;top:0;height:48px;padding:14px 0;border:0;border-radius:0;background:transparent;pointer-events:auto;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.timing-track{position:relative;display:block;width:100%;height:20px;background:var(--cream);box-shadow:0 0 0 5px var(--night);pointer-events:none}
.timing-zone{position:absolute;top:0;bottom:0;background:var(--peach)}
.timing-needle{position:absolute;top:-5px;bottom:-5px;width:3px;background:var(--night-deep);transform:translateX(-50%);box-shadow:0 0 0 1px var(--cream)}
.fishing-timing.is-hit .timing-track{will-change:transform}
.fishing-timing.is-miss .timing-track{opacity:.4}
.fishing-timing:focus-visible{outline:1px solid var(--cream);outline-offset:5px}
.fishing-hud{position:absolute;top:198px;right:var(--page);width:184px;display:grid;grid-template-columns:52px 112px;gap:20px;align-items:end;color:var(--cream)}
.fishing-score{display:flex;align-items:baseline;gap:8px}
.fishing-score .satiety-label{margin:0}
.fish-score-value{font-size:1rem;font-variant-numeric:tabular-nums;line-height:1}
.fishing-satiety{width:112px}
.satiety-label{display:block;margin-bottom:7px;font-size:.57rem;line-height:1;letter-spacing:.14em;text-transform:uppercase}
.satiety-track{height:4px;background:rgba(242,238,232,.17);overflow:hidden}
.satiety-fill{display:block;width:100%;height:100%;background:var(--cream);transform-origin:left center;transition:transform .12s linear,background .2s}
.is-fed .satiety-fill{background:var(--peach)}
.is-fed .satiety-label{color:var(--peach)}
.is-fed .fish-score-value{color:var(--peach)}
.is-hungry .satiety-fill{background:var(--peach)}
.fishing-hud.is-awakening .fishing-satiety{animation:deep-wakes .7s ease-in-out 2}
.fishing-hud.is-hungry .fishing-satiety{animation:deep-breath 1.6s ease-in-out infinite}
@keyframes deep-wakes{50%{opacity:.45;transform:translateY(2px)}}
@keyframes deep-breath{50%{opacity:.5}}

.lightbox{position:fixed;inset:0;z-index:200;background:rgba(17,20,31,.98);display:grid;place-items:center;opacity:0;visibility:hidden;transition:opacity .25s}
.lightbox.is-open{opacity:1;visibility:visible}.lightbox img{max-width:90vw;max-height:86vh;object-fit:contain}
.lightbox button{position:absolute;width:3rem;height:3rem;border:1px solid var(--line);background:rgba(37,42,61,.8);color:var(--cream)}
.lightbox-close{right:1.5rem;top:1.5rem}.lightbox-nav{top:50%;transform:translateY(-50%)}.lightbox-prev{left:1.5rem}.lightbox-next{right:1.5rem}.lightbox-count{position:absolute;bottom:1.5rem;color:var(--muted);font-size:.75rem}


@media(max-width:1100px){
  .profile-intro{gap:2rem;grid-template-columns:1.4fr .75fr}
  .map-stage{width:120px;font-size:.8rem}
}
@media(max-width:979px){
  .profile-intro{grid-template-columns:1fr;gap:1.8rem}
  .profile-summary{max-width:43rem;font-size:1.05rem}
  .profile-lead h1{font-size:clamp(2.6rem,6.4vw,4.2rem)}
  .stage-detail{gap:2rem;grid-template-columns:.8fr 1.2fr}
  .method-description{font-size:.86rem;line-height:1.65}
  .map-stage{width:112px;height:48px;font-size:.78rem;gap:.4rem}
  .project-card,.project-card.is-wide{grid-column:span 6}
  .case-story{grid-template-columns:1fr;gap:1.5rem}
  .case-links{flex-direction:row;flex-wrap:wrap}
}
@media(max-width:640px){
  .site-header{min-height:4.8rem;padding-top:.8rem;padding-bottom:.8rem;gap:.5rem}.identity-name,.site-header nav a:first-child{display:none}.site-header nav{gap:.25rem}.site-header nav a{font-size:.8rem;padding:.55rem .4rem}.site-header nav a.nav-cv{gap:.4rem;padding:.55rem .5rem}
  .profile-shell{padding-top:2.5rem;padding-bottom:4.5rem}.overline{font-size:.6rem;letter-spacing:.1em}
  .profile-lead h1{font-size:clamp(1.6rem,7.7vw,3.1rem)}
  .profile-summary{font-size:.95rem;line-height:1.7}
  .method{margin-top:2.5rem}.method-copy{padding-top:1.4rem}.method-copy h2{font-size:1.65rem}
  .stage-detail{grid-template-columns:1fr;gap:.65rem;align-content:start}
  .method-trait{font-size:.6rem;margin-bottom:.35rem}.method-detail h3{font-size:1.15rem;max-width:none}
  .method-description{font-size:.8rem;line-height:1.6}
  .map-stage{width:102px;font-size:.75rem;padding:0 6px;gap:.35rem}.map-number{font-size:.53rem}
  .map-node:not(.map-stage){font-size:.78rem}.map-family{font-weight:500}
  .project-filter{gap:.8rem;align-items:flex-start;flex-direction:column;padding:1rem 0;margin-top:2rem}
  .filter-list{display:flex;flex-wrap:wrap;gap:.45rem}.filter-button{padding:.65rem .85rem;min-height:44px;font-size:.71rem}
  .project-mosaic{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}
  .project-card,.project-card.is-wide{grid-column:auto}.project-card.is-wide{grid-column:1/-1}
  .project-card button,.project-card.is-tall button{min-height:62vw}.project-card.is-wide button{min-height:60vw}
  .card-copy{left:.75rem;right:.75rem;bottom:3.2rem}.card-copy strong{font-size:1.05rem}.card-role{display:none}.card-context{font-size:.55rem;letter-spacing:.05em}.card-number{left:.75rem;top:.75rem}.card-arrow{right:.75rem;bottom:.75rem;width:1.8rem;height:1.8rem}
  .footer-invite{align-items:start;flex-direction:column;padding-bottom:2rem}.footer-invite h2{font-size:1.9rem}.contact-button{padding:.8rem 1.15rem;font-size:.9rem}.footer-links{gap:.65rem 1.2rem}.footer-links a{font-size:.75rem}.footer-links .footer-cv{margin-left:0}.footer-meta{flex-direction:column;gap:.5rem}
  .panel-bar{min-height:4rem;padding-top:.5rem;padding-bottom:.5rem}
  .case-recap{grid-template-columns:1fr;gap:1.2rem;padding:2rem 0}
  .case-recap>div{display:grid;grid-template-columns:6.2rem 1fr;gap:1rem}
  .case-recap dt{margin:0;padding-top:.12rem}.case-recap dd{font-size:.8rem}
  .case-story{padding:2rem 0}.case-skills{font-size:.68rem;gap:.45rem 1rem}
  .case-skills li{gap:.8rem}.case-media{width:100%}
  .lightbox-prev{left:.4rem}.lightbox-next{right:.4rem}
}
@media(max-width:360px){.map-stage{width:90px}.map-number{display:none}.site-header nav a{font-size:.75rem}.identity-mark{width:2.5rem;height:2.5rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
