/* Local fonts: variable sans for shared weights, original serif and glyph fallbacks. */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: normal;
  font-display: swap;
  src: url(/static/4deed3af762f3eb93905bd0e4d2dc0f3d1cefbd511e36573bfbcb7118b01b62f/assets/font-0.woff2) format('woff2');
}
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: normal;
  font-display: swap;
  src: url(/static/6fb794d6594483c5e0625862a92ad0feb37a38590ed289d8c1872a6ca4d1d4a5/assets/font-1.woff2) format('woff2');
}
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: normal;
  font-display: swap;
  src: url(/static/bd0ed665f2fec6bda7bacf9845e4e2cd92f75523cba259b9776399242bd0c156/assets/font-2.woff2) format('woff2');
}
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 700;
  font-stretch: normal;
  font-display: swap;
  src: url(/static/2ebc5f65d3b8c5bba34be745b8aaf8b18c6a719eeec8e1a4be13f86785d92ae3/assets/font-3.woff2) format('woff2');
}
@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/static/d4e54746097214411dbf03af66c35340e1685211848a22e9ec9e342b89a98ed3/assets/font-4.woff2) format('woff2');
}
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/static/bc7e9fb97a508688fe68998905ee62ceea62354c0381c906818f25fbd7da6d29/assets/font-5.woff2) format('woff2');
}

/* One variable file serves all sans weights; earlier faces retain glyph fallbacks. */
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/static/21fac8da552a915e7a9fb84c5afaeb85d35507b2616346d592e78128c1cfe3e0/assets/instrument-sans-latin-ext-v4.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/static/6219bc4bfdfc5d9b2201dcdf046218b122a758f932e25ed5f168f929b7ca2311/assets/instrument-sans-latin-v4.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{--bg:#101212;--surface:#181b1b;--text:#f1f5f7;--muted:#a3afb5;--line:#343e44;--accent:#5ecbf2;--serif:'Instrument Serif',Georgia,serif;--sans:'Instrument Sans',Arial,sans-serif;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--bg);color:var(--text);font:400 1rem/1.6 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button{color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}img{display:block;max-width:100%}p,h1,h2,h3,h4{margin:0}::selection{background:var(--accent);color:var(--bg)}:focus-visible{outline:2px solid var(--accent);outline-offset:6px}.skip{position:fixed;z-index:50;left:20px;top:-100px;background:var(--accent);color:var(--bg);padding:10px 20px}.skip:focus{top:12px}.accent{color:var(--accent)}.header{height:106px;margin:0 4.3%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:10}.brand{display:flex;align-items:center;gap:20px}.monogram{font-size:2.7rem;line-height:1;font-weight:600;letter-spacing:-.11em}.monogram span{color:var(--accent)}.brand-name{font-size:.88rem}.header nav{display:flex;align-items:center;gap:38px;font-size:.95rem}.header nav a{position:relative;transition:color .2s}.header nav a:hover,.header nav a[aria-current=page]{color:var(--accent)}.nav-talk{border:1px solid #576c78;border-radius:30px;padding:10px 20px}.nav-talk span{margin-left:22px}.hero{position:relative;min-height:720px;height:calc(100svh - 106px);max-height:980px;isolation:isolate;overflow:hidden}.hero-content{position:relative;z-index:2;margin-left:8.5%;padding-top:clamp(55px,7.5vh,110px);width:58%}.eyebrow{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:500}.hero .eyebrow{display:flex;gap:14px;align-items:center;color:var(--text)}.tiny-cross{color:var(--accent);display:block;width:24px;height:24px;flex:0 0 24px}.hero h1{font-size:clamp(5.8rem,10.1vw,10rem);font-weight:500;line-height:.94;letter-spacing:-.075em;margin:27px 0 27px}.hero-portrait{position:absolute;z-index:-1;inset:0 0 0 42%;background:#000}.hero-portrait img{width:100%;height:100%;object-fit:cover;object-position:20% center;opacity:.76;filter:grayscale(1)}.hero-portrait:after{position:absolute;inset:0;content:'';background:linear-gradient(90deg,var(--bg),transparent 48%),linear-gradient(0deg,var(--bg),transparent 30%)}.hero-role{display:flex;align-items:center;gap:19px;min-height:50px}.role-index{font-size:.75rem;color:var(--muted);letter-spacing:.07em;font-variant-numeric:tabular-nums}.hero-role #role{font-family:var(--serif);font-size:2.6rem;font-style:italic;line-height:1.2;min-width:250px;color:var(--accent);transition:opacity .25s,transform .25s}.hero-role #role.switching{opacity:0;transform:translateY(6px)}.motion-toggle{background:none;border:1px solid var(--line);border-radius:50%;font-size:.75rem;width:29px;height:29px;color:var(--muted);margin-left:-10px;padding:0}.motion-toggle:hover{border-color:var(--accent);color:var(--accent)}.hero-description{color:var(--muted);font-size:1.04rem;line-height:1.6;margin:22px 0 23px}.pill-button{display:inline-flex;align-items:center;justify-content:space-between;gap:40px;background:var(--accent);color:#12232c;padding:14px 24px;border-radius:32px;font-size:.9rem;font-weight:600;transition:background .2s,transform .2s}.pill-button:hover{background:#a1e2f8;transform:translateY(-2px)}.pill-button span{font-size:1.3rem}.hero-bottom{position:absolute;bottom:27px;left:4.3%;right:4.3%;display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:20px;color:var(--muted);font-size:.8rem}.hero-bottom a{color:var(--text)}.hero-bottom a span{margin-left:25px}.section-pad{padding:110px 8.5%}.section-heading{margin-bottom:48px}.section-heading h2{font-size:clamp(2.8rem,5vw,5rem);line-height:1.06;letter-spacing:-.05em;font-weight:500;margin-top:20px}em{font-family:var(--serif);font-weight:400}.explore{background:#e8f1f5;color:#17232a}.explore .eyebrow{color:#4b606b}.explore-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:36px}.explore-link{padding:27px 0 0;border-top:1px solid #b6c8d1;display:flex;flex-direction:column}.small-label{font-size:.75rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.explore .small-label{color:#566e7b}.explore-link h3{font-size:1.8rem;font-weight:500;letter-spacing:-.04em;margin:50px 0 14px;line-height:1.2}.explore-link p{color:#4e6571;max-width:280px}.text-link{display:flex;justify-content:space-between;align-items:center;font-size:.9rem;font-weight:600;padding-top:35px;margin-top:auto}.text-link span{font-size:1.5rem;transition:transform .2s}.explore-link:hover .text-link span{transform:translate(4px,-4px)}footer{padding:42px 4.3%;display:flex;align-items:center;justify-content:space-between;gap:30px;border-top:1px solid var(--line);font-size:.8rem;color:var(--muted)}.footer-name{font-size:1.5rem;font-weight:500;letter-spacing:-.045em;color:var(--text)}footer a:hover{color:var(--accent)}
@media(min-width:1600px){.hero-content{max-width:1600px}}@media(max-width:1000px){.brand-name{display:none}.hero-content{margin-left:6%;width:75%}.hero-portrait{left:32%}.hero-portrait img{object-position:24% center}.hero-portrait:after{background:linear-gradient(90deg,var(--bg),#10121244 60%),linear-gradient(0deg,var(--bg),transparent 60%)}.hero h1{font-size:clamp(6rem,12vw,9rem)}.section-pad{padding:85px 6%}.explore-grid{gap:22px}.explore-link h3{font-size:1.5rem}}@media(max-width:600px){html{scroll-padding-top:20px}.header{height:88px;margin:0 6%}.monogram{font-size:2.25rem}.header nav{gap:21px;font-size:.85rem}.nav-talk{border:0;padding:0}.nav-talk span{margin-left:6px}.hero{min-height:735px;height:calc(100svh - 88px);max-height:920px}.hero-content{padding-top:47px;width:90%;margin-left:6%}.hero h1{font-size:clamp(5.1rem,19.5vw,7rem);margin:27px 0 28px}.hero .eyebrow{font-size:.75rem}.hero-portrait{left:20%;top:80px;bottom:0;right:0}.hero-portrait img{object-position:25% center;opacity:.5;scale:-1 1}.hero-portrait:after{background:linear-gradient(90deg,var(--bg),transparent 80%),linear-gradient(0deg,var(--bg),transparent 90%)}.hero-role #role{font-size:2.1rem;min-width:210px}.hero-role{gap:12px}.hero-description{margin-top:30px}.hero-bottom{left:6%;right:6%;bottom:24px}.hero-bottom>span{max-width:165px;font-size:.75rem}.hero-bottom a{align-self:center;font-size:.75rem;white-space:nowrap}.hero-bottom a span{margin-left:10px}.section-pad{padding:68px 6%}.section-heading{margin-bottom:35px}.section-heading h2{font-size:2.9rem}.explore-grid{grid-template-columns:1fr;gap:36px}.explore-link h3{margin-top:25px;font-size:2rem}.explore-link p{max-width:100%}.text-link{padding-top:22px}footer{padding:34px 6%;flex-wrap:wrap;gap:15px}footer>span{order:3;width:100%}.footer-name{font-size:1.3rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
/* Editorial pages and photography */
.underlined-link{display:inline-flex;align-items:center;gap:30px;background:none;border:0;border-bottom:1px solid #576c78;padding:0 0 8px;color:var(--text);font-size:.9rem;cursor:pointer;transition:color .2s,border-color .2s}.underlined-link:hover{color:var(--accent);border-color:var(--accent)}.underlined-link span{font-size:1.3rem}.split-heading{display:flex;align-items:end;justify-content:space-between;gap:35px}.split-heading .underlined-link{margin-bottom:8px;white-space:nowrap}.preview-photos{display:grid;grid-template-columns:1.1fr .75fr 1.1fr;align-items:center;gap:26px}.preview-photos a{overflow:hidden}.preview-photos img{height:310px;width:100%;object-fit:cover;transition:transform .6s,filter .6s}.preview-photos a:nth-child(2) img{height:420px}.preview-photos a:hover img{transform:scale(1.025);filter:brightness(1.08)}.preview-photos span{display:block;color:var(--muted);margin-top:14px;font-size:.75rem;letter-spacing:.06em}.contact-strip{padding:80px 8.5% 90px;border-top:1px solid var(--line)}.contact-strip>a{display:flex;align-items:center;justify-content:space-between;font-size:clamp(4.8rem,10vw,9rem);font-weight:500;line-height:1.2;letter-spacing:-.065em}.contact-strip em{margin-left:.2em;margin-right:auto}.contact-strip>a>span{font-size:.75em;color:var(--accent);transition:transform .25s}.contact-strip>a:hover>span{transform:translate(8px,-8px)}.page-intro{padding-top:75px;padding-bottom:85px}.page-intro h1,.talk-main h1{font-size:clamp(3.5rem,6.1vw,6.8rem);font-weight:500;line-height:1.05;letter-spacing:-.055em}.page-intro>.eyebrow{margin-bottom:36px}.page-intro h1 em,.talk-main h1 em{color:var(--accent)}.intro-grid{display:grid;grid-template-columns:1.25fr 1fr;align-items:center;gap:70px}.intro-copy{font-size:1.2rem;color:#b8c4cb;max-width:560px;margin-top:34px;line-height:1.7}.wordplay-button{margin-top:27px}.me-photo{margin:0}.me-photo img{height:460px;width:100%;object-fit:cover}.me-photo figcaption{display:flex;justify-content:space-between;gap:15px;color:var(--muted);font-size:.75rem;padding-top:15px}.me-photo figcaption a{color:var(--text)}.journey{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding-top:47px;padding-bottom:47px}.journey-states{display:flex;align-items:center;gap:7%;margin-top:20px;font-size:clamp(3.5rem,7vw,6.5rem);letter-spacing:-.06em;line-height:1.2}.journey-line{height:1px;background:#455e6b;flex:1;position:relative}.journey-line:after{content:'';position:absolute;right:0;top:-3px;height:7px;width:7px;border-right:1px solid var(--accent);border-top:1px solid var(--accent);transform:rotate(45deg)}.personal-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:35px}.personal-grid h3{border-bottom:1px solid #485f6a;display:flex;justify-content:space-between;font-size:1.5rem;font-weight:500;padding-bottom:18px;letter-spacing:-.025em;margin-bottom:18px}.personal-grid h3 span{font-weight:400;color:var(--accent)}.word-list{padding:0;margin:0;list-style:none;color:#c0cbd1}.word-list li{padding:5px 0}.coffee-section{background:var(--accent);color:#12232c;padding-top:85px;padding-bottom:85px;display:grid;grid-template-columns:1.2fr 1fr;gap:28px 65px}.coffee-section>.eyebrow{grid-column:1/-1;color:#304f5d}.coffee-section h2{font-size:clamp(3rem,6.4vw,6.6rem);font-weight:500;line-height:1.1;letter-spacing:-.05em}.coffee-section p{align-self:center;font-size:1.2rem;line-height:1.7;max-width:480px}.fun-facts ol{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:45px 75px}.fun-facts li{display:flex;gap:25px;border-top:1px solid var(--line);padding-top:25px}.fact-number{font-size:.8rem;color:var(--accent);margin-top:5px}.fun-facts li p{font-size:1.25rem;max-width:480px}.code-section{padding-top:50px;display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center}.code-section h2{margin-top:25px;font-size:clamp(2rem,3.1vw,3.2rem);font-weight:400;line-height:1.2;letter-spacing:-.035em}.code-section pre{margin:0;background:#151e23;padding:35px;border:1px solid #304550;color:var(--accent);font-size:.88rem;line-height:1.8;overflow:auto;tab-size:2}.code-dim{color:#91a8b4}.next-page{display:block;margin:0 8.5%;padding:55px 0 65px;border-top:1px solid var(--line)}.next-page>span{display:block}.next-page>span:last-child{margin-top:15px;font-size:clamp(2.3rem,4.5vw,4.5rem);line-height:1.1;letter-spacing:-.045em}.next-page b{float:right;color:var(--accent);font-weight:400;transition:transform .2s}.next-page:hover b{transform:translate(5px,-5px)}.art-intro{padding-bottom:65px}.gallery-count{color:var(--muted);font-size:.9rem;line-height:1.5;min-width:155px;padding-bottom:7px}.gallery-count>span{display:block;color:var(--accent);font-size:3.2rem;font-weight:400;letter-spacing:-.05em;line-height:1.2;margin-bottom:7px}.gallery-wrap{padding:0 4.3% 85px}.gallery{columns:3;column-gap:22px}.gallery-photo{display:inline-block;width:100%;vertical-align:top;position:relative;margin-bottom:22px;break-inside:avoid;overflow:hidden;background:#172127;scroll-margin-top:25px}.gallery-photo img{width:100%;height:auto;transition:transform .6s,filter .6s}.photo-overlay{position:absolute;inset:auto 0 0;display:flex;justify-content:space-between;align-items:center;padding:35px 19px 14px;background:linear-gradient(transparent,#0009);font-size:.8rem;opacity:0;transform:translateY(5px);transition:opacity .25s,transform .25s}.photo-overlay>span:last-child{font-size:1.7rem}.gallery-photo:hover img{transform:scale(1.035);filter:brightness(1.1)}.gallery-photo:hover .photo-overlay,.gallery-photo:focus-visible .photo-overlay{opacity:1;transform:translateY(0)}.lightbox{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:25px 4%;border:0;background:#090c0ff7;color:var(--text);overflow:hidden}.lightbox[open]{display:grid;grid-template-rows:44px minmax(0,1fr) 58px;gap:20px}.lightbox::backdrop{background:transparent}.lightbox-top,.lightbox-controls{display:flex;justify-content:space-between;align-items:center}.lightbox button{background:none;border:1px solid #3c5360;border-radius:25px;min-width:44px;min-height:44px;padding:8px 20px;font-size:.9rem}.lightbox button:hover{border-color:var(--accent);color:var(--accent)}.lightbox-close span{font-size:1.5rem;line-height:1;margin-left:15px;vertical-align:-2px}.lightbox-top>span{font-size:.8rem;font-variant-numeric:tabular-nums;letter-spacing:.1em;color:var(--accent)}.lightbox figure{margin:0;display:flex;flex-direction:column;min-height:0;align-items:center;justify-content:center;gap:15px}.lightbox figure img{object-fit:contain;max-height:100%;width:auto;max-width:100%;min-height:0;transform-origin:0 0}.lightbox figcaption{color:var(--muted);font-size:.85rem;text-align:center}.lightbox-controls button{display:flex;align-items:center;gap:25px}.lightbox-hint{font-size:.8rem;color:var(--muted)}body.lightbox-open{overflow:hidden}.cv-intro .intro-grid{grid-template-columns:1.35fr 1fr;gap:60px}.cv-intro h1{font-size:clamp(3.3rem,5.5vw,6rem)}.cv-intro-copy{color:#b8c5cd;max-width:470px;font-size:1.08rem}.cv-intro-copy p+p{margin-top:15px}.section-nav{display:flex;gap:35px;margin-top:65px;padding-top:25px;border-top:1px solid var(--line);font-size:.9rem}.section-nav a:hover{color:var(--accent)}.cv-section{padding-top:45px}.cv-section .section-heading{margin-bottom:40px}.experience-entry{border-top:1px solid var(--line)}.experience-entry:last-child{border-bottom:1px solid var(--line)}.experience-entry summary{list-style:none;display:grid;grid-template-columns:190px 1fr 35px;gap:25px;padding:29px 0;cursor:pointer;align-items:center}.experience-entry summary::-webkit-details-marker{display:none}.experience-date{font-size:.9rem;color:var(--muted);font-variant-numeric:tabular-nums}.experience-name{display:flex;flex-direction:column;gap:7px}.company{font-size:clamp(1.4rem,2.25vw,2.25rem);letter-spacing:-.04em;font-weight:500;line-height:1.2}.job-title{font-size:.95rem;color:var(--muted)}.expand-icon{width:33px;height:33px;position:relative;border:1px solid #485f6a;border-radius:50%}.expand-icon:before,.expand-icon:after{content:'';position:absolute;top:15px;left:10px;width:11px;height:1px;background:var(--accent);transition:transform .2s}.expand-icon:after{transform:rotate(90deg)}.experience-entry[open] .expand-icon:after{transform:rotate(0)}.experience-entry[open] .company{color:var(--accent)}.experience-entry summary:hover .company{color:var(--accent)}.experience-body{padding:0 70px 38px 215px;max-width:1060px}.location{font-size:.8rem;color:var(--muted);margin-bottom:20px}.experience-body ul{margin:0 0 23px;padding-left:19px}.experience-body li{padding:0 0 13px 5px;color:#c2cdd4;line-height:1.75}.experience-body li::marker{color:#637f8d}.portfolio-section{background:#e8f1f5;color:#17232a;padding-top:85px;padding-bottom:85px}.portfolio-section .eyebrow{color:#486371}.portfolio-list{display:grid;grid-template-columns:repeat(3,1fr);gap:0 40px;list-style:none;margin:0;padding:0}.portfolio-list li{border-top:1px solid #b1c7d1}.portfolio-list a,.portfolio-list li>span{display:flex;align-items:center;justify-content:space-between;gap:15px;min-height:67px;font-size:1.05rem}.portfolio-list a:hover{color:#176185}.portfolio-list a>span{font-size:1.3rem;color:#4b6d7e}.expertise-row{display:grid;grid-template-columns:180px 1fr;gap:35px;padding:34px 0;border-top:1px solid var(--line)}.expertise-row h3{font-size:1.1rem;font-weight:500}.chips{display:flex;flex-wrap:wrap;align-content:start;gap:10px;margin:0;padding:0;list-style:none}.chips li{border:1px solid #3a5361;border-radius:25px;padding:7px 15px;font-size:.9rem;color:#c3d1d9}.tech-row .chips{gap:7px}.tech-row .chips li{border-color:transparent;border-radius:0;background:#19252c;padding:5px 12px}.education-section{display:grid;grid-template-columns:1fr 1fr;gap:80px;padding-top:25px}.education-section>div{border-top:1px solid var(--line);padding-top:30px}.education-section h2{font-size:2rem;letter-spacing:-.04em;font-weight:500;margin-top:22px}.education-section p:not(.eyebrow){color:var(--muted);margin-top:10px}.publication{display:flex;gap:25px;font-size:1.7rem;line-height:1.3;letter-spacing:-.03em;margin:25px 0}.publication span{color:var(--accent)}.publication:hover{color:var(--accent)}.talk-main{min-height:calc(100svh - 233px);padding-top:70px;padding-bottom:100px}.talk-main>.eyebrow{margin-bottom:35px}.talk-main h1{font-size:clamp(4rem,8vw,8.5rem)}.talk-bottom{display:grid;grid-template-columns:1fr 1.3fr;gap:80px;margin-top:85px}.talk-bottom>p{font-size:1.5rem;font-family:var(--serif);font-style:italic;color:var(--muted)}.contact-options{border-top:1px solid var(--line)}.contact-option{padding:26px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px}.contact-option>span:first-child{display:flex;flex-direction:column;gap:6px}.contact-option strong{font-size:2rem;font-weight:500;letter-spacing:-.04em}.contact-destination{font-size:.85rem;color:var(--muted)}.contact-arrow{font-size:2.6rem;color:var(--accent);transition:transform .2s}.contact-option:hover .contact-arrow{transform:translate(5px,-5px)}.contact-option:hover strong{color:var(--accent)}
@media(max-width:1000px){.intro-grid,.cv-intro .intro-grid{gap:40px;grid-template-columns:1fr 1fr}.me-photo img{height:400px}.me-photo figcaption{display:block}.me-photo figcaption a{display:block;margin-top:5px}.preview-photos img{height:230px}.preview-photos a:nth-child(2) img{height:340px}.personal-grid{grid-template-columns:repeat(2,1fr);gap:40px}.coffee-section{gap:25px 40px}.code-section{grid-template-columns:1fr;gap:35px}.code-section pre{max-width:100%}.experience-entry summary{grid-template-columns:135px 1fr 35px;gap:20px}.experience-body{padding-left:155px;padding-right:25px}.portfolio-list{grid-template-columns:1fr 1fr;gap:0 30px}.expertise-row{grid-template-columns:125px 1fr;gap:30px}.education-section{gap:40px}.page-intro h1{font-size:4rem}.contact-strip{padding-left:6%;padding-right:6%}.next-page{margin-left:6%;margin-right:6%}.gallery-wrap{padding-left:6%;padding-right:6%}.gallery{columns:2}.talk-bottom{gap:40px}.cv-intro-copy{font-size:1rem}}
@media(max-width:600px){.page-intro{padding-top:48px;padding-bottom:50px}.page-intro>.eyebrow{margin-bottom:28px}.page-intro h1,.cv-intro h1{font-size:clamp(2.7rem,10.9vw,4rem);line-height:1.07}.intro-grid,.cv-intro .intro-grid{grid-template-columns:1fr;gap:40px}.intro-copy{font-size:1.1rem;margin-top:25px}.me-photo img{height:290px}.me-photo figcaption{display:flex}.me-photo figcaption a{margin-top:0}.journey{padding-top:30px;padding-bottom:35px}.journey-states{font-size:3.4rem}.personal-grid{gap:35px 24px}.personal-grid h3{font-size:1.35rem}.word-list{font-size:.95rem}.coffee-section{grid-template-columns:1fr;gap:20px}.coffee-section h2{font-size:3.8rem}.coffee-section p{font-size:1.1rem}.fun-facts ol{grid-template-columns:1fr;gap:28px}.fun-facts li p{font-size:1.15rem}.code-section{padding-top:0}.code-section pre{padding:22px 18px;font-size:.78rem}.next-page{padding-top:35px;padding-bottom:45px}.next-page>span:last-child{font-size:2.25rem}.split-heading{align-items:start;flex-direction:column;gap:25px}.preview-photos{grid-template-columns:1fr 1fr;gap:22px 16px}.preview-photos a:first-child{grid-column:1/-1}.preview-photos img{height:220px}.preview-photos a:nth-child(2) img{height:250px}.preview-photos a:nth-child(3) img{height:250px}.preview-photos span{margin-top:10px}.contact-strip{padding-top:45px;padding-bottom:55px}.contact-strip>a{font-size:4.7rem}.art-intro .split-heading{flex-direction:row;align-items:end;gap:20px}.art-intro h1{font-size:clamp(2.5rem,9.3vw,3.5rem)}.gallery-count{font-size:.75rem;min-width:70px;max-width:90px;padding:0}.gallery-count>span{font-size:2.5rem}.gallery{column-gap:12px}.gallery-photo{margin-bottom:12px}.photo-overlay{display:none}.gallery-wrap{padding-bottom:50px}.lightbox{padding:16px 5%}.lightbox[open]{gap:15px;grid-template-rows:44px minmax(0,1fr) 58px}.lightbox figcaption{font-size:.8rem}.lightbox-hint{display:none}.lightbox button{padding:8px 14px}.lightbox-controls button{gap:13px}.section-nav{gap:0;justify-content:space-between;margin-top:35px;padding-top:22px;font-size:.84rem}.cv-section{padding-top:20px}.experience-entry summary{grid-template-columns:1fr 35px;padding:24px 0;gap:10px 20px}.experience-date{grid-column:1;font-size:.8rem}.experience-name{grid-column:1}.expand-icon{grid-column:2;grid-row:1/3}.company{font-size:1.55rem;line-height:1.3}.job-title{font-size:.88rem}.experience-body{padding:0 0 28px 0;font-size:.95rem}.location{margin-bottom:17px}.experience-body ul{padding-left:15px}.portfolio-section{padding-top:55px}.portfolio-list{gap:0 20px}.portfolio-list a,.portfolio-list li>span{font-size:.9rem;min-height:70px;line-height:1.4}.expertise-row{grid-template-columns:1fr;gap:20px;padding:27px 0}.chips{gap:8px}.chips li{padding:6px 12px;font-size:.85rem}.education-section{grid-template-columns:1fr;gap:40px;padding-top:0}.education-section h2{font-size:1.75rem}.publication{font-size:1.65rem}.talk-main{min-height:auto;padding-top:50px;padding-bottom:65px}.talk-main h1{font-size:clamp(3.4rem,13vw,5rem)}.talk-bottom{grid-template-columns:1fr;gap:20px;margin-top:50px}.talk-bottom>p{font-size:1.25rem}.contact-option strong{font-size:1.7rem}.contact-destination{font-size:.8rem}}
@media print{body{color:#111;background:white;font-size:11pt}.header,.section-nav,.next-page,footer,.expand-icon{display:none}.section-pad{padding:25px 0}.page-intro h1{font-size:34pt}.page-intro h1 em,.company,.experience-entry[open] .company{color:#111}.cv-intro .intro-grid{display:block}.cv-intro-copy{max-width:none;margin-top:20px}.experience-entry{break-inside:avoid}.experience-entry summary{padding:15px 0;grid-template-columns:120px 1fr}.experience-body{padding-left:140px}.experience-body li,.location,.job-title,.experience-date,.cv-intro-copy,.chips li{color:#333}.portfolio-section{background:white}.chips li{border-color:#bbb}.eyebrow{color:#444}.expertise-row{padding:20px 0}.education-section{padding-top:25px}}

/* Comfortable touch targets and responsive fallbacks. */
.motion-toggle{width:44px;height:44px;flex:none}
.header nav a{display:inline-flex;align-items:center;min-height:44px}
@media(max-width:370px){.header nav{gap:16px}.hero-role #role{min-width:175px;font-size:1.8rem}.hero-role{gap:9px}.role-index{font-size:.7rem}.hero h1{font-size:19.5vw}}

/* Navigation stays mounted while each page's content fades. */
.header{position:sticky;top:0;z-index:30;margin:0;padding:0 4.3%;border:0;background:var(--bg);transform:translateY(0);transition:transform 300ms cubic-bezier(.2,.7,.3,1),background-color 220ms,box-shadow 220ms}
.header:after{content:'';position:absolute;bottom:0;left:4.3%;right:4.3%;border-bottom:1px solid var(--line);pointer-events:none}
.header.header-scrolled{background:rgba(16,18,18,.95);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 8px 26px #0002}
.header.header-hidden{transform:translateY(-100%)}
.header:focus-within,.page-transitioning .header{transform:translateY(0)}
.page-transitioning main,.page-transitioning footer{pointer-events:none}
main:focus{outline:none}
@media(max-width:600px){.header{margin:0;padding:0 6%}.header:after{left:6%;right:6%}html{scroll-padding-top:112px}}
@media print{.header{display:none}}

/* Personal details: geographic outlines, paired contrasts, and a darker duo. */
.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}
[hidden]{display:none!important}
.wordplay-note{font-size:.92rem;line-height:1.65;color:var(--muted);max-width:400px;margin-top:18px;padding-left:16px;border-left:2px solid var(--accent)}
.journey-states{display:grid;grid-template-columns:1fr .28fr 1fr .28fr 1fr;gap:2%;align-items:center;margin-top:28px}
.state-place{margin:0;min-width:0;text-align:center}
.state-place img{width:100%;max-width:240px;height:auto;margin:0 auto 12px}
.state-place figcaption{display:flex;flex-direction:column;gap:4px;line-height:1.3;letter-spacing:0}
.state-place strong{font-size:2rem;font-weight:500;letter-spacing:-.045em}
.state-place figcaption span{font-size:.88rem;color:var(--muted)}
.journey-states .journey-line{margin-top:-55px}
.personal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.category-panel{padding:34px 36px 38px;border:1px solid var(--line)}
.category-panel h3{justify-content:flex-start;align-items:center;gap:14px;font-size:1.75rem;margin-bottom:24px;padding-bottom:23px}
.category-panel h3 span{width:32px;flex:none;font-size:1.75rem;line-height:1;text-align:center}
.category-panel .word-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 24px}
.category-panel .word-list li{padding:3px 0}
.category-light{background:#e8f1f5;color:#17232a;border-color:#e8f1f5}
.category-light h3{border-color:#b6c8d1}
.category-light h3 span{color:#2c6279}
.category-light .word-list{color:#354f5d}
.category-dark{background:#19242b}
.category-dark h3{border-color:#3c5461}
.category-dark .word-list{color:#c0cbd1}
.coffee-section{grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);align-items:center;gap:40px;padding-top:66px;padding-bottom:66px}
.coffee-copy .eyebrow{color:#2d566a}
.coffee-copy h2{margin-top:24px;font-size:clamp(3.8rem,7.8vw,7.8rem);line-height:.95}
.coffee-copy p{margin-top:30px;font-size:1.12rem;max-width:440px}
.coffee-art{min-width:0}
.coffee-art img{width:100%;height:auto;max-width:490px;margin:auto;filter:drop-shadow(0 20px 18px #12354828)}

.experience-entry[data-expanded="false"] .expand-icon:after{transform:rotate(90deg)}
.experience-entry[data-expanded="false"] .company{color:var(--text)}
.experience-entry[data-expanded="true"] .company{color:var(--accent)}
@media(max-width:1000px){.category-panel{padding:28px}.category-panel .word-list{gap:5px 15px}.coffee-section{gap:24px}.coffee-copy h2{font-size:5.5rem}}
@media(max-width:600px){.journey-states{grid-template-columns:1fr .12fr 1fr .12fr 1fr;gap:1%;margin-top:22px}.state-place img{margin-bottom:8px}.state-place strong{font-size:1.55rem}.state-place figcaption span{font-size:.75rem}.journey-states .journey-line{margin-top:-45px}.personal-grid{grid-template-columns:1fr;gap:0}.category-panel{padding:27px 24px 30px}.category-panel h3{font-size:1.6rem;padding-bottom:18px;margin-bottom:18px}.category-panel:nth-child(2){margin-bottom:26px}.category-panel .word-list{font-size:.95rem;gap:6px 18px}.coffee-section{grid-template-columns:1fr;gap:12px;padding-top:48px;padding-bottom:36px}.coffee-copy h2{font-size:4.8rem}.coffee-copy p{font-size:1.08rem;max-width:360px;margin-top:25px}.coffee-art img{max-width:330px}.cv-linkedin{font-size:.95rem;margin-top:25px}}

/* A responsive, pointer-driven wire sculpture frames the homepage portrait. */
.hero-sculpture{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;mask-image:linear-gradient(90deg,transparent 36%,#000 57%);opacity:.9}
.hero-play{position:absolute;right:4.3%;bottom:105px;z-index:3;display:flex;align-items:center;gap:12px;padding:12px 16px;color:var(--accent);background:#101212a6;border:1px solid #5ecbf240;border-radius:50px;backdrop-filter:blur(10px);font-size:.88rem;min-height:50px;transition:border-color .2s,background .2s}
.hero-play:hover{border-color:var(--accent);background:#162630e6}
.hero-play:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
.hero-play svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.1}
.sculpture-index{font-size:.7rem;letter-spacing:.08em;margin-left:7px;color:var(--muted);font-variant-numeric:tabular-nums}
.hero-bottom{z-index:2}
.coffee-art img{filter:none;max-width:490px}
@media(max-width:1000px){.hero-sculpture{opacity:.7;mask-image:linear-gradient(90deg,transparent 40%,#000 78%)}}
@media(max-width:600px){.hero-sculpture{opacity:.68;mask-image:linear-gradient(90deg,transparent 32%,#000 83%)}.hero-play{right:6%;bottom:98px;font-size:.8rem;padding:8px 12px;gap:8px;min-height:44px}.hero-play svg{width:25px;height:25px}.sculpture-index{font-size:.65rem;margin-left:3px}.coffee-art img{max-width:330px}}
@media(prefers-reduced-motion:reduce){.hero-play{transition:none}}

/* A single brand anchor stays in view while the surrounding navigation recedes. */
:root{--header-height:106px;--cv-dock-top:25px}
.header{transition:background-color 220ms,box-shadow 220ms;pointer-events:none}
.header .brand,.header nav{pointer-events:auto}
.header .brand{gap:16px;flex:none}
.header .monogram{display:flex;align-items:center;justify-content:center;width:48px;height:48px;padding-right:5px;border:1px solid transparent;border-radius:14px;transition:background .24s,color .24s,border-color .24s,box-shadow .24s;font-size:2.5rem}
.header .brand-name{max-width:160px;opacity:1;white-space:nowrap;overflow:hidden;transition:max-width .24s,opacity .18s}
.header nav{position:relative;gap:17px;transition:transform .25s cubic-bezier(.2,.7,.3,1),opacity .18s,visibility 0s}
.header nav a{padding:0 12px;border-radius:8px;white-space:nowrap;transition:color 140ms,background-color 140ms}
.header nav a[aria-current=page]{color:var(--accent);background:transparent;box-shadow:none}
.header nav .nav-talk{padding:10px 20px;border-radius:30px;transition:background-color 220ms,color 220ms,border-color 220ms}
.header nav .nav-talk[aria-current=page]{color:#132630;background:var(--accent);border-color:var(--accent);box-shadow:none}
.header .brand[aria-current=page] .monogram{border-color:#5ecbf273}
.header.header-hidden{transform:none;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}
.header.header-hidden:after{opacity:0}
.header:after{transition:opacity .18s}
.header.header-hidden nav{transform:translateY(-110px);opacity:0;visibility:hidden;pointer-events:none;transition:transform .25s cubic-bezier(.2,.7,.3,1),opacity .18s,visibility 0s .25s}
.header.header-hidden .brand{gap:0}
.header.header-hidden .brand-name{max-width:0;opacity:0}
.header.header-hidden .monogram{background:color-mix(in srgb,var(--accent) 78%,transparent);color:#132630;border-color:color-mix(in srgb,var(--accent) 55%,transparent);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);box-shadow:0 5px 24px #0003}
.header.header-hidden .monogram span{color:#132630}
.hero-role{min-height:50px}

/* The CV bar leaves its reserved slot and docks beside the compact monogram. */
.cv-intro{padding-bottom:42px}
.cv-nav-anchor{min-height:65px;margin:0 8.5% 52px}
.section-nav{margin:0;min-height:65px;padding:10px 0;gap:18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);align-items:center;overflow-x:auto;scrollbar-width:none}
.section-nav::-webkit-scrollbar{display:none}
.section-nav a{display:flex;align-items:center;justify-content:center;min-height:44px;padding:8px 18px;border-radius:24px;white-space:nowrap;flex:none;transition:background .16s,color .16s}
.section-nav a[aria-current=location]{background:var(--accent);color:#132630}
.section-nav.is-docked{position:fixed;z-index:29;top:calc(var(--header-height) + 8px);left:calc(4.3% + 66px);right:4.3%;min-height:56px;padding:5px 10px;gap:8px;border:1px solid #3a5665;border-radius:32px;background:#101212f0;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 8px 28px #0003;transition:top .25s cubic-bezier(.2,.7,.3,1)}
.header.header-hidden~main .section-nav.is-docked{top:var(--cv-dock-top)}
html:has(body.page-cv){scroll-padding-top:calc(var(--header-height) + 88px)}

/* Continuous, reversible reveals ease through the viewport edges. */
.scroll-reveal{translate:var(--reveal-x,0) var(--reveal-y,0);scale:var(--reveal-scale,1);opacity:var(--reveal-opacity,1);filter:var(--reveal-filter,none);transition:translate 180ms ease-out,scale 180ms ease-out,opacity 180ms ease-out,filter 180ms ease-out}
.photo-window{display:block!important;overflow:hidden;margin:0!important;padding:0!important}
.scroll-parallax{transform:translate3d(0,var(--parallax-y,0),0) scale(var(--parallax-scale,1.1));transition:transform 160ms ease-out!important}

/* Straight, separated frames keep each photograph in its own column. */
.photo-cards{gap:28px;padding:20px 0 32px;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}
.photo-cards a{position:relative;padding:12px;background:#19262d;border:1px solid #3e5a69;box-shadow:0 12px 30px #0003;transition:transform 220ms ease-out,border-color .2s,box-shadow .2s;overflow:hidden}
.photo-cards img,.photo-cards a:nth-child(2) img,.photo-cards a:nth-child(3) img{height:clamp(220px,28vw,380px)}
.photo-cards a>span:not(.photo-window){display:flex;align-items:center;justify-content:space-between;margin:14px 3px 3px;font-size:.875rem;letter-spacing:.08em}
.photo-cards a>span:not(.photo-window):after{content:'';display:inline-block;width:1.1rem;height:1.1rem;flex:none;background:var(--accent);-webkit-mask:url('/static/6eda5be549b27b48f1a4f465e67c04a5585f4c2bcb12c88deb6ffb82c4f133c8/assets/arrow-up-right.svg') center/contain no-repeat;mask:url('/static/6eda5be549b27b48f1a4f465e67c04a5585f4c2bcb12c88deb6ffb82c4f133c8/assets/arrow-up-right.svg') center/contain no-repeat}
.photo-cards a:focus-visible{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 36px #0005}
@media(hover:hover){.photo-cards a:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 36px #0005}}
@media(max-width:1000px){.cv-nav-anchor{margin-left:6%;margin-right:6%}}
@media(max-width:600px){:root{--header-height:88px;--cv-dock-top:19px}.header nav{gap:2px;font-size:.8rem}.header nav a{padding:0 9px}.header nav .nav-talk{padding:0 5px}.header .monogram{width:44px;height:44px;font-size:2.25rem;border-radius:12px}.header .brand{gap:0}.cv-intro{padding-bottom:28px}.cv-nav-anchor{margin-bottom:32px;min-height:60px}.section-nav{gap:2px;justify-content:flex-start;font-size:.82rem;min-height:60px}.section-nav a{padding:8px 12px}.section-nav.is-docked{left:calc(6% + 54px);right:6%;padding:3px 5px;min-height:50px;gap:0}.section-nav.is-docked a{padding:8px 10px}.header.header-hidden~main .section-nav.is-docked{top:var(--cv-dock-top)}.photo-cards{padding:12px 0 24px;grid-template-columns:1fr;gap:22px}.photo-cards a:first-child{grid-column:auto}.photo-cards a{padding:10px}.photo-cards img,.photo-cards a:nth-child(2) img,.photo-cards a:nth-child(3) img{height:240px}}
@media(prefers-reduced-motion:reduce){.scroll-reveal{translate:none!important;scale:none!important;filter:none!important;opacity:1!important;transition:none}.scroll-parallax{transform:none!important;transition:none!important}.photo-cards a,.photo-cards a:after,.section-nav,.header nav,.header .monogram,.header .brand-name{transition:none!important}.photo-cards a{transform:none!important}.hero-role #role{transition:none}}
@media print{.header,.cv-nav-anchor,.hero-play,.hero-sculpture{display:none!important}.scroll-reveal{translate:none;scale:none;filter:none;opacity:1}.scroll-parallax{transform:none}.photo-cards a{transform:none!important}}
.hero-portrait{overflow:hidden}
.preview-photos a:hover .scroll-parallax{transform:translate3d(0,var(--parallax-y,0),0) scale(1.14)}
@media(prefers-reduced-motion:reduce){.preview-photos a:hover .scroll-parallax{transform:none}}

.section-nav{position:relative}
.section-nav.is-docked{position:fixed}

.photo-preview{overflow:hidden;overflow:clip}


/* The active underline moves; a quiet, light surface belongs to hover only. */
.header .nav-indicator{position:absolute;left:0;bottom:1px;height:2px;background:var(--accent);pointer-events:none;border-radius:2px;transition:transform 240ms cubic-bezier(.2,.7,.3,1),width 240ms cubic-bezier(.2,.7,.3,1),opacity 140ms}
@media(hover:hover){.header nav a:hover{background:#f1f5f714;color:var(--text)}}
@media(prefers-reduced-motion:reduce){.header .nav-indicator{transition:none}}

html{scrollbar-gutter:stable}

/* Matching geometry before and after docking keeps the CV bar in one column. */
.cv-nav-anchor{min-height:52px;margin-left:calc(4.3% + 66px);margin-right:4.3%}
.section-nav,.section-nav.is-docked{min-height:52px;padding:5px;gap:8px;border:1px solid var(--line);border-radius:32px;isolation:isolate}
.section-nav{background:var(--bg)}
.section-nav.is-docked{border-color:#3a5665;background:#101212f0}
.section-nav a,.section-nav.is-docked a{position:relative;z-index:1;min-height:40px;padding:7px 18px;background:transparent;transition:color 160ms}
.section-nav a[aria-current=location]{background:transparent;color:#132630}
.section-indicator{position:absolute;left:0;top:0;z-index:0;pointer-events:none;background:var(--accent);border-radius:24px;transition:transform 240ms cubic-bezier(.2,.7,.3,1),width 240ms cubic-bezier(.2,.7,.3,1),height 160ms}
@media(max-width:600px){.cv-nav-anchor{margin-left:calc(6% + 54px);margin-right:6%;min-height:52px}.section-nav,.section-nav.is-docked{gap:0}.section-nav a,.section-nav.is-docked a{padding:7px 10px}}
@media(prefers-reduced-motion:reduce){.section-indicator{transition:none}}

.explore-link .text-link{justify-content:flex-start;gap:14px}

@media(max-width:600px){.header nav .nav-talk{padding:0 10px}}

/* Short accent rules draw with the section heading as it enters and leaves. */
.section-heading:not(.split-heading):after{content:'';display:block;width:64px;height:2px;margin-top:22px;background:linear-gradient(90deg,var(--accent),transparent);transform:scaleX(var(--reveal-progress,1));transform-origin:left;transition:transform 180ms ease-out}
.explore .section-heading:after,.portfolio-section .section-heading:after{background:linear-gradient(90deg,#176185,transparent)}
@media(prefers-reduced-motion:reduce){.section-heading:after{transform:none!important;transition:none}}
@media print{.section-heading:after{display:none}}

/* Both word orders reserve the same space, so revealing the copy cannot shift the photograph. */
#wordplay{display:grid}
.wordplay-visual,.wordplay-measure{grid-area:1/1;min-width:0}
.wordplay-measure{visibility:hidden;pointer-events:none;user-select:none}
.wordplay-note[hidden]{display:block!important;visibility:hidden}
.me-intro .me-photo{align-self:start}

/* Warm, compact arrows distinguish the connections from the blue state outlines. */
.journey-states .journey-line{width:clamp(22px,3vw,42px);height:3px;justify-self:center;background:#d7ad7a}
.journey-states .journey-line:after{width:9px;height:9px;top:50%;border-width:3px;border-color:#d7ad7a;transform:translateY(-50%) rotate(45deg)}
@media(max-width:600px){.journey-states{grid-template-columns:1fr 20px 1fr 20px 1fr;gap:4px}.journey-states .journey-line{width:16px;height:3px}.journey-states .journey-line:after{width:8px;height:8px}}

.cv-intro .then-word{display:inline-block;position:relative;margin-right:.09em;font:600 .84em/1 var(--sans);font-style:normal;letter-spacing:-.045em}
.cv-intro .then-word:after{content:'';position:absolute;left:0;right:0;bottom:-.10em;height:3px;border-radius:2px;background:currentColor}

/* Recommendations retain their original wording and clear attribution. */
.testimonials-section{padding-top:70px;padding-bottom:90px;border-top:1px solid var(--line)}
.testimonials-section .section-heading{margin-bottom:44px}
.testimonials-section .section-heading h2{margin-top:15px}
.testimonials-section .underlined-link{font-size:.875rem;gap:16px}
.testimonial-quotes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,3vw,48px)}
.testimonial-quote{display:flex;flex-direction:column;margin:0;padding-left:22px;border-left:2px solid var(--accent)}
.testimonial-quote blockquote{margin:0 0 26px}
.testimonial-quote blockquote p{font-family:var(--serif);font-size:clamp(1.9rem,2.7vw,2.7rem);line-height:1.2;letter-spacing:-.015em;text-wrap:pretty}
.testimonial-quote figcaption{display:flex;flex-direction:column;gap:4px;margin-top:auto;font-size:.875rem;color:var(--muted);line-height:1.5}
.testimonial-author{display:inline-flex;align-self:flex-start;align-items:center;gap:12px;font-family:var(--sans);font-weight:500;font-size:1rem;color:var(--accent);transition:color .16s}
.testimonial-author:hover{color:var(--text)}
.testimonial-author span{font-size:1rem}
@media(max-width:700px){.testimonials-section{padding-top:50px;padding-bottom:60px}.testimonials-section .section-heading{align-items:start;flex-direction:column;gap:24px;margin-bottom:36px}.testimonials-section .section-heading h2{font-size:2.9rem}.testimonial-quotes{grid-template-columns:1fr;gap:36px}.testimonial-quote{padding-left:20px}.testimonial-quote blockquote p{font-size:2rem}.testimonial-quote blockquote{margin-bottom:20px}}
@media print{.testimonials-section{padding:25px 0;break-inside:avoid}.testimonials-section .underlined-link{display:none}.testimonial-quote{border-color:#777}.testimonial-author{color:#111}.testimonial-quote figcaption{color:#333}}

/* Personal practices: an open editorial layout with a quiet landscape. */
.healthy-living{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);gap:clamp(40px,7vw,120px);background:#121b20;border-block:1px solid #2a3d47}
.living-intro{min-width:0}
.healthy-living .section-heading{margin-bottom:28px}
.healthy-living .section-heading h2{font-size:clamp(3rem,5.2vw,5.2rem);margin-top:18px}
.living-belief{max-width:34rem;font-size:1.08rem;line-height:1.75;color:#bbcbd3;text-wrap:pretty}
.living-landscape{max-width:390px;margin-top:30px;color:var(--accent)}
.living-landscape svg{display:block;width:100%;height:auto;overflow:visible;stroke-linecap:round;stroke-linejoin:round}
.living-orbit{stroke:#5ecbf233;stroke-width:1;stroke-dasharray:3 7}
.living-warm{stroke:#d7ad7a;stroke-width:1.5}
.living-mountains{stroke:#8ad7f1;stroke-width:1.5}
.living-water{stroke:#5ecbf2;stroke-width:1.5;opacity:.65}
.living-art-caption{display:block;margin-top:4px;text-align:center;font-size:.8rem;letter-spacing:.06em;color:var(--muted)}
.living-practices{list-style:none;margin:0;padding:0;align-self:start}
.living-practice{display:grid;grid-template-columns:28px minmax(0,1fr);gap:18px;padding:23px 0 25px;border-top:1px solid #3b4d57}
.living-practice:last-child{border-bottom:1px solid #3b4d57}
.living-number{padding-top:5px;color:var(--accent);font-size:.8rem;font-variant-numeric:tabular-nums;letter-spacing:.04em}
.living-practice h3{font-weight:500;font-size:1.45rem;line-height:1.25;letter-spacing:-.035em;margin-bottom:12px}
.living-practice p{color:#b4c5ce;font-size:1rem;line-height:1.65;max-width:36rem;text-wrap:pretty}
@media(max-width:800px){.healthy-living{grid-template-columns:1fr;gap:35px}.living-intro{position:relative}.living-belief{max-width:36rem}.living-landscape{max-width:280px;margin:25px auto 0}.living-practice{grid-template-columns:26px minmax(0,1fr);gap:15px;padding:22px 0}.living-practice h3{font-size:1.4rem}.healthy-living .section-heading h2{font-size:clamp(3rem,9vw,4.8rem)}}
@media print{.healthy-living{background:transparent;color:#111;border-color:#bbb;gap:30px}.living-belief,.living-practice p,.living-number{color:#333}.living-landscape{display:none}.living-practice{break-inside:avoid}}


/* A native, keyboard-accessible rail; without JavaScript every quote remains reachable. */
.testimonial-carousel{position:relative}
.testimonial-quotes{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:min(39vw,30rem);gap:24px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:#35515e transparent;padding:4px 2px 18px;outline-offset:5px}
.testimonial-quotes.is-drifting{scroll-snap-type:none;scroll-behavior:auto}
.testimonial-quote{position:relative;min-width:0;min-height:310px;padding:clamp(25px,3vw,40px);border:1px solid #2b424c;border-left:2px solid var(--accent);border-radius:3px;background:linear-gradient(135deg,#16242b,#11191e);scroll-snap-align:start;scroll-snap-stop:always}
.testimonial-quote:before{content:'“' / '';position:absolute;right:22px;top:2px;color:var(--accent);opacity:.09;font:7rem/1 var(--serif);pointer-events:none}
.testimonial-quote blockquote{position:relative;margin:0 0 30px}
.testimonial-quote blockquote p{font-size:clamp(1.85rem,2.8vw,2.7rem);line-height:1.18}
.testimonial-controls{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:14px}
.testimonial-controls[hidden]{display:none}
.testimonial-position{display:flex;align-items:center;gap:14px;font-size:.75rem;letter-spacing:.08em;font-variant-numeric:tabular-nums;color:var(--muted)}
.testimonial-position [data-testimonial-current]{color:var(--accent)}
.testimonial-position-line{width:45px;height:1px;background:#3b525c}
.testimonial-buttons{display:flex;align-items:center;gap:10px}
.testimonial-buttons button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;border:1px solid #35505e;border-radius:50%;background:transparent;color:var(--text);font:500 .78rem/1 var(--sans);cursor:pointer;transition:color .15s,background .15s,border-color .15s}
.testimonial-buttons button:hover{color:#10212a;background:var(--accent);border-color:var(--accent)}
.testimonial-buttons .testimonial-arrow{width:44px;padding:11px}
.testimonial-arrow svg{width:21px;height:21px}
.testimonial-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(max-width:700px){.testimonial-quotes{grid-auto-columns:88%;gap:16px}.testimonial-quote{min-height:300px;padding:27px 25px}.testimonial-quote blockquote p{font-size:2rem}.testimonial-position-line{width:23px}.testimonial-position{gap:8px}.testimonial-buttons{gap:7px}}
@media(prefers-reduced-motion:reduce){.testimonial-buttons button{transition:none}}
@media print{.testimonial-quotes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:row;grid-auto-columns:auto;overflow:visible;padding:0;gap:20px}.testimonial-quote{min-height:0;break-inside:avoid;background:none;border-color:#777}.testimonial-quote:before,.testimonial-controls{display:none!important}.testimonial-quote blockquote p{font-size:1.4rem}.testimonials-section{break-inside:auto}}


/* Portraits keep each recommendation visibly connected to its author. */
.testimonial-quote figcaption{flex-direction:row;align-items:center;gap:12px}
.testimonial-avatar{width:48px;height:48px;flex:0 0 48px;border-radius:50%;object-fit:cover;border:1px solid var(--line)}
.testimonial-person{display:flex;flex-direction:column;gap:4px;min-width:0}
.testimonial-person .testimonial-author{max-width:100%;gap:8px}

/* Column participants stay still; image motion stays inside each clipped frame. */
.gallery-photo.scroll-reveal{translate:none;scale:none;filter:none;transition:opacity 180ms ease-out}
.gallery-photo.scroll-reveal img{scale:calc(2 - var(--reveal-scale,1));transition:transform .6s,filter .6s,scale 180ms ease-out}
@media(prefers-reduced-motion:reduce){.gallery-photo.scroll-reveal img{scale:none;transition:none}}
@media print{.gallery-photo.scroll-reveal img{scale:none}}

/* The period remains anchored inside the compact glass monogram. */
.header .monogram{position:relative}
.header .brand-dot{position:absolute;right:7px;bottom:10px;width:5px;height:5px;border-radius:50%;background:var(--accent);font-size:0;letter-spacing:0;transition:background-color .24s,transform .24s}
.header.header-hidden .brand-dot{background:#f1f5f7;transform:translateY(-1px) scale(.92)}
@media(max-width:600px){.header .brand-dot{right:6px;bottom:9px;width:4px;height:4px}}
@media(prefers-reduced-motion:reduce){.header .brand-dot{transition:none}}

/* Leave room for italic ink and the focus blur without moving the text gutter. */
.section-heading,.coffee-copy,.code-section>div:first-child{padding-inline:16px;margin-inline:-16px}
.page-intro h1,.talk-main h1{padding-inline:.12em;margin-inline:-.12em}
.coffee-copy{min-width:0;container-type:inline-size}
@media(max-width:1000px){.coffee-copy h2{font-size:clamp(4rem,12vw,5.5rem)}}
@media(max-width:600px){.coffee-copy h2{font-size:4.8rem}}
/* Size the two-line title to its actual column, including between breakpoints. */
@supports(font-size:1cqi){
  .coffee-copy h2{font-size:min(clamp(3.8rem,7.8vw,7.8rem),29cqi)}
  @media(max-width:1000px){.coffee-copy h2{font-size:min(5.5rem,29cqi)}}
  @media(max-width:600px){.coffee-copy h2{font-size:min(4.8rem,29cqi)}}
}
@media(max-width:380px){.contact-strip>a{font-size:clamp(3.8rem,21vw,4.7rem)}}

/* A clear invitation at the end of the CV. */
.cv-contact{margin:0;padding:clamp(46px,6vw,88px) 8.5%;border:0;background:var(--accent);color:#132630}
.cv-contact .eyebrow{color:#2d566a}
.cv-contact>span:last-child{margin-top:24px;font-size:clamp(3.2rem,7.5vw,7rem);font-weight:500}
.cv-contact b{color:inherit}
.cv-contact:focus-visible{outline:3px solid #132630;outline-offset:-10px}
@media(max-width:800px){.cv-contact{padding-inline:6%}}

/* Slow exhale: a quiet steam curl and a wave that always travels left. */
.drinks-illustration{display:block;width:100%;height:auto;max-width:490px;margin:auto;color:#132630}
.drinks-lines{fill:none;stroke:currentColor;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round}
.drinks-steam{animation:drinks-exhale 6.8s ease-in-out infinite;animation-play-state:paused}
.drinks-wave{stroke-width:2.6;animation:drinks-current 6.8s linear infinite;animation-play-state:paused}
.drinks-illustration.is-moving .drinks-steam,.drinks-illustration.is-moving .drinks-wave{animation-play-state:running}
@keyframes drinks-exhale{0%,100%{transform:translate(0,1px);opacity:.65}50%{transform:translate(1px,-4px);opacity:1}}
@keyframes drinks-current{to{transform:translateX(-60px)}}
@media(max-width:600px){.drinks-illustration{max-width:330px}}
@media(prefers-reduced-motion:reduce),print{.drinks-steam,.drinks-wave{animation:none;transform:none;opacity:1}}

/* Local direction for review: shared dark-blue closing actions. */
:root{--cta-bg:#103c55;--cta-label:#b6d7e8;--cta-line:#ffffff29}
.contact-strip,.next-page,.talk-bottom{background:var(--cta-bg);color:var(--text);border-top:1px solid var(--cta-line)}
.next-page{margin:0;padding:clamp(46px,6vw,88px) 8.5%}
.contact-strip .eyebrow,.next-page .eyebrow,.talk-bottom>p,.talk-bottom .small-label{color:var(--cta-label)}
.next-page b{color:var(--accent)}
.next-page:focus-visible{outline:3px solid var(--accent);outline-offset:-8px}
.contact-strip>a:focus-visible,.contact-option:focus-visible{outline:2px solid var(--accent);outline-offset:8px}
.talk-main{min-height:0;padding-bottom:clamp(56px,6vw,85px)}
.talk-bottom{margin-top:0;padding-top:clamp(46px,6vw,88px);padding-bottom:clamp(46px,6vw,88px)}
.talk-bottom .contact-options,.talk-bottom .contact-option{border-color:var(--cta-line)}
@media(max-width:1000px){.next-page{padding-inline:6%}}
