@font-face{font-family:Inter;src:url('assets/inter-regular.ttf') format('truetype');font-weight:400;font-display:swap}@font-face{font-family:Inter;src:url('assets/inter-medium.ttf') format('truetype');font-weight:500;font-display:swap}@font-face{font-family:'IBM Plex Mono';src:url('assets/plex-mono.ttf') format('truetype');font-weight:400;font-display:swap}
:root{--paper:#f6f5f1;--ink:#20201f;--muted:#64645e;--line:#d3d2cc;--pink:#f3ade4;--panel:#eae9e3;--pad:64px;--gap:32px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font:18px/28px Inter,Arial,sans-serif}a{color:inherit;text-decoration:none;text-underline-offset:5px}a:hover{text-decoration:underline}a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:6px}.dark a:focus-visible{outline-color:var(--paper)}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400}h1{font-size:100px;line-height:1;letter-spacing:-.04em;font-weight:500}h2{font-size:56px;line-height:60px;letter-spacing:-.025em}h3,.title{font-size:30px;line-height:36px}p{max-width:100%}.muted{color:var(--muted)}.mono{font:12px/18px 'IBM Plex Mono',monospace;letter-spacing:.015em}.small{font-size:14px;line-height:21px}.stack{display:flex;flex-direction:column;gap:24px}.stack.compact{gap:16px}.row{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.spread{justify-content:space-between}.section{padding:var(--pad);max-width:1600px;margin:auto}.border{border:1px solid var(--line)}.divider{border:0;border-top:1px solid var(--line);margin:0}.skip{position:absolute;left:16px;top:-100px;z-index:10;background:var(--ink);color:var(--paper);padding:16px}.skip:focus{top:16px}.nav{flex-wrap:wrap;max-width:1600px;margin:auto;display:flex;align-items:center;gap:64px;padding:24px var(--pad);min-height:85px;border-bottom:1px solid var(--line)}.logo{font:30px/36px Inter,sans-serif;white-space:nowrap}.nav-links{margin-left:auto;display:flex;gap:32px;align-items:center}.nav a[aria-current=page]{text-decoration:underline}.nav a{padding-block:4px}.home-intro{gap:48px}.hero-composition{display:grid;grid-template-columns:1.43fr 1fr;gap:48px;align-items:center}.hero-copy{gap:32px}.hero-copy h1{font-size:86px;line-height:88px;letter-spacing:-.05em}.hero-copy>p{max-width:565px}.portrait{position:relative;aspect-ratio:520/516;overflow:hidden;border-radius:12px}.portrait img{position:absolute;width:107.18%;height:191.96%;left:-1.71%;top:-73.9%;max-width:none}.button{display:inline-flex;background:var(--ink);color:var(--paper);padding:16px;align-items:center;justify-content:center;min-height:50px;font:12px/18px 'IBM Plex Mono',monospace;border:1px solid var(--ink);cursor:pointer}.button:hover{background:var(--paper);color:var(--ink);text-decoration:none}.proof{display:grid;grid-template-columns:repeat(3,1fr)}.proof>div{padding:24px;display:flex;flex-direction:column;gap:12px}.proof>div+div{border-left:1px solid var(--line)}.metric{font-size:56px;line-height:60px;letter-spacing:-.03em}.work-section{gap:32px;padding-top:0}.feature{display:grid;grid-template-columns:1.35fr 1fr;gap:48px;padding:32px}.panel{background:var(--panel)}.report{background:var(--paper);padding:24px;gap:24px}.report .metric{font-size:48px}.bar{height:12px;background:var(--line);width:93.3%}.bar.after{background:var(--ink);width:81.1%}.dark{background:var(--ink);color:var(--paper)}.full-dark{background:var(--ink)}.projects{gap:32px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.card{background:var(--paper);color:var(--ink);padding:24px;min-height:322px;gap:16px}.card .row{margin-top:auto}.about{display:grid;grid-template-columns:600fr 632fr;gap:80px}.writing a{font-size:30px;line-height:36px;display:block}.writing a+a{border-top:1px solid var(--line);padding-top:24px}.footer-wrap{background:var(--pink)}.contact{gap:32px}.contact h2{font-size:100px;line-height:100px;font-weight:500;letter-spacing:-.04em}.contact .divider{border-color:var(--ink)}.contact-arrow{font-size:100px;line-height:1}.footer-meta{gap:32px}.footer-meta .row{gap:32px}.experience-hero{gap:24px;border-bottom:1px solid var(--line)}.experience-hero .summary{max-width:930px}.cv-contact{padding-block:16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:32px}.cv-layout{display:grid;grid-template-columns:288fr 960fr;gap:64px}.cv-sidebar{gap:32px}.cv-sidebar h2{font:12px/18px 'IBM Plex Mono',monospace;letter-spacing:.015em}.cv-sidebar p{font-size:14px;line-height:21px}.cv-sidebar .title{font-size:18px;line-height:28px}.cv-main{gap:32px}.role{gap:16px;padding-bottom:32px;border-bottom:1px solid var(--line)}.role.featured{padding:24px;background:var(--panel);border:0}.role h2{font-size:30px;line-height:36px;letter-spacing:0}.role ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.role li{position:relative;padding-left:40px}.role li:before{content:'—';position:absolute;left:0;font:18px/28px 'IBM Plex Mono',monospace}.cv-project{gap:16px}.cv-project h2{font:12px/18px 'IBM Plex Mono',monospace}.cv-project h3{font-size:30px}.print-action{background:none;color:var(--ink)}.travel-hero{height:620px;position:relative;overflow:hidden;color:white}.travel-hero>img{position:absolute;width:400%;height:auto;left:0;top:-53.226%;max-width:none}.shade{position:absolute;inset:0;background:rgba(0,0,0,.32)}.travel-hero-copy{position:relative;padding:180px var(--pad) 0;gap:24px;max-width:1600px;margin:auto}.travel-hero h1{font-size:104px;line-height:104px;letter-spacing:-.04em}.travel-hero-meta{position:absolute;bottom:32px;left:var(--pad);right:var(--pad)}.travel-intro{gap:32px}.travel-intro-grid{display:grid;grid-template-columns:744fr 504fr;gap:64px}.trip-index{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.trip-index a{padding:16px 8px 16px 0;min-height:50px}.trip-index a+a{padding-left:24px;border-left:1px solid var(--line)}.trip{gap:32px;scroll-margin-top:24px}.trip-header{display:grid;grid-template-columns:632fr 616fr;gap:64px}.gallery{display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px}.gallery figure{display:flex;flex-direction:column;gap:12px;min-width:0}.photo{position:relative;height:340px;overflow:hidden}.photo img{position:absolute;max-width:none;width:var(--iw);height:var(--ih);left:var(--ix);top:var(--iy);object-fit:fill}.trip-note{border-top:1px solid var(--line);padding-top:16px}.travel-outro{display:grid;grid-template-columns:744fr 504fr;gap:64px}.simple-footer{gap:32px}.simple-footer h2{font-size:56px;line-height:60px}.simple-footer .divider{border-color:var(--ink)}.not-found{min-height:65vh;gap:32px}
@media(min-width:1600px){.travel-hero>img{width:6400px;left:calc((100vw - 1600px)/2);height:4266px}}
@media(max-width:1200px){:root{--pad:40px}.nav{gap:24px}.nav-links{gap:24px}.hero-copy h1{font-size:68px;line-height:1.03}.hero-composition{grid-template-columns:1.35fr 1fr;gap:32px}.feature{gap:32px}h2{font-size:48px;line-height:1.08}.about{gap:48px}.contact h2,.contact-arrow{font-size:80px;line-height:1.05}.cv-layout{gap:40px;grid-template-columns:240px 1fr}.travel-hero h1{font-size:90px;line-height:1}.travel-intro-grid,.trip-header,.travel-outro{gap:40px}}
@media(max-width:900px){:root{--pad:32px}.nav{flex-wrap:wrap;gap:16px 32px}.nav-links{width:100%;margin-left:0;justify-content:space-between}.hero-composition{grid-template-columns:1fr 1fr;gap:24px}.hero-copy h1{font-size:52px;line-height:1.05}.hero-copy .title{font-size:24px;line-height:30px}.metric{font-size:42px;line-height:1.1}.feature{grid-template-columns:1fr 1fr;gap:24px;padding:24px}.cards{gap:16px}.card{padding:20px}.card h3{font-size:26px}.about{gap:32px}.contact h2,.contact-arrow{font-size:64px}.cv-layout{grid-template-columns:1fr}.cv-sidebar{display:grid;grid-template-columns:1fr 1fr;gap:32px}.cv-main{order:-1}.gallery{grid-template-columns:2fr 1fr 1fr;gap:16px}.photo{height:260px}.travel-hero{height:560px}.travel-hero>img{width:640%;top:-30%}.travel-hero-copy{padding-top:150px}.travel-intro-grid,.trip-header,.travel-outro{grid-template-columns:1fr 1fr;gap:32px}.trip-index a+a{padding-left:12px}}
@media(max-width:600px){:root{--pad:24px}body{font-size:16px;line-height:25px}.mono{font-size:12px;line-height:19px}.section{padding-block:48px}.nav{padding-block:20px;gap:16px}.nav .identity{margin-left:auto;font-size:10px}.nav-links{gap:12px}.nav-links a{font-size:11px}.home-intro{gap:32px}.home-intro>.row{align-items:flex-start;gap:12px}.hero-composition{grid-template-columns:1fr;gap:32px}.hero-copy{gap:24px}.hero-copy h1{font-size:46px;line-height:48px}.hero-copy .title{font-size:24px;line-height:30px}.portrait{aspect-ratio:520/480}.proof{grid-template-columns:1fr}.proof>div{padding:20px;gap:8px}.proof>div+div{border-left:0;border-top:1px solid var(--line)}.metric{font-size:46px;line-height:50px}.work-section{padding-top:0}h1{font-size:clamp(48px,16.4vw,64px);line-height:1.05}h2{font-size:40px;line-height:43px}h3,.title{font-size:26px;line-height:32px}.feature{grid-template-columns:1fr;gap:32px;padding:24px}.report{padding:20px;gap:20px}.cards{grid-template-columns:1fr;gap:16px}.card{min-height:260px;padding:24px}.about{grid-template-columns:1fr;gap:48px}.writing a{font-size:25px;line-height:32px}.contact h2{font-size:52px;line-height:55px}.contact-arrow{font-size:52px}.contact .title{font-size:24px;line-height:30px}.contact .row{gap:12px}.footer-meta{align-items:flex-start}.footer-meta .row{gap:24px}.cv-contact{gap:16px;font-size:11px}.cv-sidebar{grid-template-columns:1fr;gap:32px}.role.featured{padding:20px}.role li{padding-left:26px}.role li:before{line-height:25px}.role h2{font-size:28px;line-height:34px}.experience-hero>.row{align-items:flex-start;gap:8px}.travel-hero{height:590px}.travel-hero>img{width:1200%;top:-38%}.travel-hero-copy{padding-top:150px}.travel-hero h1{font-size:64px;line-height:64px}.travel-hero-meta{gap:24px;align-items:flex-end}.travel-hero-meta a{max-width:130px;text-align:right}.travel-intro-grid,.trip-header,.travel-outro{grid-template-columns:1fr;gap:24px}.trip-index{grid-template-columns:1fr 1fr}.trip-index a{padding:16px 8px}.trip-index a+a{padding-left:12px}.trip-index a:nth-child(3){border-left:0;border-top:1px solid var(--line)}.trip-index a:nth-child(4){border-top:1px solid var(--line)}.gallery{grid-template-columns:1fr 1fr;gap:20px 12px}.gallery figure:first-child{grid-column:1/-1}.photo{height:240px}.gallery figure:first-child .photo{height:300px}.simple-footer h2{font-size:40px;line-height:43px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{body{background:white;font-size:10pt;line-height:1.4}.nav,.skip,.footer-wrap,.print-action{display:none}.section{padding:0;max-width:none}.experience-hero{gap:8px;padding-bottom:16px}.experience-hero h1{display:none}.experience-hero .title{font-size:18pt;line-height:1.3}.cv-contact{gap:12px;font-size:8pt}.cv-layout{display:block;padding-top:16px}.cv-main{gap:16px}.cv-sidebar{display:grid;grid-template-columns:1fr 1fr;margin-top:20px;gap:16px}.role,.role.featured{background:none;padding:0 0 16px;gap:8px;break-inside:avoid}.role h2{font-size:14pt;line-height:1.3}.role ul{gap:6px}.role li{padding-left:18px}.role li:before{font-size:10pt;line-height:1.4}.mono{font-size:8pt;line-height:1.4}.small{font-size:9pt;line-height:1.4}.cv-project{break-inside:avoid}.cv-project h3{font-size:14pt;line-height:1.3}.cv-sidebar p{font-size:9pt;line-height:1.4}a[href^=http]:after{content:''}@page{margin:16mm}}
/* Themes keep the editorial pink accent and the separate dark sections. */
:root{color-scheme:light;--deep:#20201f;--on-deep:#f6f5f1;--on-pink:#20201f}
:root[data-theme=dark]{color-scheme:dark;--paper:#18191b;--ink:#f2f1ec;--muted:#b9bab4;--line:#44464a;--panel:#242629;--pink:#eaa3d8;--deep:#101113;--on-deep:#f2f1ec}
.dark,.full-dark{background:var(--deep)}.dark{color:var(--on-deep)}.dark a:focus-visible{outline-color:var(--on-deep)}
.footer-wrap{color:var(--on-pink)}.footer-wrap .divider{border-color:var(--on-pink)}.footer-wrap a:focus-visible{outline-color:var(--on-pink)}
.preferences{display:flex;align-items:center;gap:24px;margin-left:auto}.language-links{display:flex;gap:4px}.language-links a,.theme-toggle{min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center}.theme-toggle{border:1px solid var(--line);background:none;color:var(--ink);font:inherit;padding:0 12px;gap:12px;cursor:pointer}.theme-toggle:hover{background:var(--panel)}.language-links a[aria-current=true]{background:var(--ink);color:var(--paper);text-decoration:none}.language-links a:hover{background:var(--panel);color:var(--ink);text-decoration:none}
.hero-composition>* ,.feature>*,.about>*,.cv-layout>*,.travel-intro-grid>*,.trip-header>*,.travel-outro>*{min-width:0}h1,h2,h3,.title,.mono,.writing a{overflow-wrap:anywhere}
html:not([lang=en]) .hero-copy h1{font-size:clamp(48px,5vw,72px);line-height:1.04}
@media(min-width:1201px){.nav{gap:16px 32px}.nav-links{gap:24px}.preferences{gap:16px}}
@media(max-width:1200px){.preferences{width:100%;justify-content:flex-end;margin-top:-8px}}
@media(max-width:600px){.preferences{justify-content:space-between;margin-top:0;gap:16px}.nav-links{flex-wrap:wrap;gap:8px 16px;justify-content:flex-start}.nav-links a{min-height:36px}.nav .identity{max-width:calc(100% - 86px)}.hero-copy h1,html:not([lang=en]) .hero-copy h1{font-size:clamp(36px,10.8vw,46px);line-height:1.08}.travel-hero h1{font-size:clamp(48px,14vw,64px);line-height:1.02}.travel-hero-copy{padding-top:120px}.experience-hero h1{font-size:clamp(42px,13vw,64px)}.contact h2{font-size:clamp(40px,11vw,52px);line-height:1.08}}
@media print{:root[data-theme]{color-scheme:light;--paper:#fff;--ink:#20201f;--muted:#64645e;--line:#d3d2cc;--panel:#fff}.preferences{display:none}}

/* Real travel photographs preserve the same gallery rhythm as the atlas. */
.travel-hero.real-hero>img{inset:0;width:100%;height:100%;object-fit:cover;object-position:40% 52%}
.photo.actual-photo img{inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
#kamchatka .gallery figure:first-child img{object-position:center 70%}
#kamchatka .gallery figure:nth-child(2) img{object-position:52% 60%}
#kamchatka .gallery figure:nth-child(3) img{object-position:58% center}
.trip-index{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:600px){.trip-index{grid-template-columns:1fr 1fr}.trip-index a:nth-child(5){grid-column:1/-1;border-left:0;border-top:1px solid var(--line)}.travel-hero.real-hero>img{object-position:25% center}}

/* Small technical cues: animate the glyph, keep the layout and hit areas still. */
.link-arrow{display:inline-block;white-space:nowrap;transition:transform 180ms ease}
.button,.theme-toggle,.language-links a,.trip-index a{transition:background-color 180ms ease,color 180ms ease,border-color 180ms ease}
.feature,.card,.role.featured{transition:box-shadow 200ms ease}
.photo-viewport{overflow:hidden}
.photo-viewport .photo{transition:transform 420ms cubic-bezier(.2,.65,.3,1)}
.portrait img{transition:transform 420ms cubic-bezier(.2,.65,.3,1);transform-origin:48% 65%}
:is(a,button):focus-visible .link-arrow{transform:translate(2px,-2px)}
:is(.feature,.card,.role.featured):focus-within{box-shadow:inset 0 0 0 1px var(--pink)}
@media(hover:hover) and (pointer:fine){
  :is(a,button):hover .link-arrow{transform:translate(2px,-2px)}
  :is(.feature,.card,.role.featured):hover{box-shadow:inset 0 0 0 1px var(--pink)}
  .trip-index a:hover{background:var(--panel);box-shadow:inset 0 -2px var(--pink);text-decoration:none}
  .theme-toggle:hover{border-color:var(--pink)}
  .gallery figure:hover .photo{transform:scale(1.035)}
  .portrait:hover img{transform:scale(1.025)}
}
@media(prefers-reduced-motion:reduce){
  .link-arrow,.button,.theme-toggle,.language-links a,.trip-index a,.feature,.card,.role.featured,.photo-viewport .photo,.portrait img{transition:none}
  :is(a,button):is(:hover,:focus-visible) .link-arrow,.gallery figure:hover .photo,.portrait:hover img{transform:none}
}
@media print{.feature,.card,.role.featured{box-shadow:none}.link-arrow,.photo-viewport .photo,.portrait img{transform:none!important;transition:none}}
/* Travel map is local SVG data; list remains the fallback without JavaScript. */
[hidden]{display:none!important}
.travel-view-controls{gap:0;align-self:flex-start;border:1px solid var(--line)}
.travel-view-controls button{font:inherit;padding:12px 20px;min-height:44px;background:none;color:var(--ink);border:0;cursor:pointer;transition:background-color 180ms ease,color 180ms ease}
.travel-view-controls button+button{border-left:1px solid var(--line)}
.travel-view-controls button[aria-pressed=true]{background:var(--ink);color:var(--paper)}
.travel-map-panel{padding-top:8px;gap:24px}
.map-canvas{overflow:hidden;background:var(--panel);border:1px solid var(--line)}
.travel-map{display:block;width:100%;height:auto;min-height:240px}
.map-grid{fill:none;stroke:var(--line);stroke-width:.5;stroke-dasharray:2 6}
.map-country{fill:var(--paper);stroke:var(--line);stroke-width:.7;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.map-country.visited{fill:var(--pink);stroke:var(--muted)}
.map-target{fill:transparent;stroke:none}
.map-dot{fill:var(--ink);stroke:var(--paper);stroke-width:1.5;vector-effect:non-scaling-stroke}
.map-label{font:12px 'IBM Plex Mono',monospace;fill:var(--ink);paint-order:stroke;stroke:var(--panel);stroke-width:4px;stroke-linejoin:round}
.map-destination:focus-visible,.map-marker:focus-visible{outline:none}
.map-destination:is(:hover,:focus-visible,[aria-current]) .visited{stroke:var(--ink);stroke-width:1.7;filter:brightness(.95)}
.map-marker:is(:hover,:focus-visible,[aria-current]) .map-dot{fill:var(--pink);stroke:var(--ink);stroke-width:2}
.map-destination-links{display:flex;flex-wrap:wrap;gap:12px 24px}
.map-destination-links a{padding:8px 12px;border:1px solid var(--line);min-height:40px}
.map-destination-links a[aria-current]{background:var(--pink);color:var(--on-pink);border-color:var(--pink)}
.map-swatch{display:inline-block;background:var(--pink);width:12px;height:12px;margin-right:8px;border:1px solid var(--line)}
@media(max-width:600px){.map-canvas{overflow-x:auto}.travel-map{width:800px;max-width:none;min-height:0}.map-destination-links{gap:8px}.travel-map-panel>.row{gap:12px}}
@media(prefers-reduced-motion:reduce){.travel-view-controls button{transition:none}}
@media print{.travel-view-controls,.travel-map-panel{display:none!important}#travel-entries>[data-trip-entry]{display:block!important}}

.proof{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}

.place-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.place-card{padding:24px;scroll-margin-top:24px}.place-card h3{font-size:26px;line-height:32px}.place-card .mono{margin-top:auto}.additional-places{border-top:1px solid var(--line);padding-top:24px}.place-card:focus-within{border-color:var(--pink)}
@media(max-width:900px){.place-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.place-grid{grid-template-columns:1fr}.map-destination-links{display:grid;grid-template-columns:1fr 1fr}.map-destination-links a{display:flex;align-items:center}}
@media print{.travel-directory{display:block!important}}

body[data-travel-mode=map] .place-grid{grid-template-columns:1fr}
