/* Personal folio theme. Standalone CSS keeps GitHub Pages builds simple. */
:root{color-scheme:dark;--bg:#141819;--surface:#1b2021;--surface-alt:#202728;--text:#edece6;--muted:#a3acab;--accent:#c6d4be;--line:#343c3d;--soft-line:#282f30;--button-text:#182019;--serif:Georgia,'Times New Roman',serif;--sans:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace}
html[data-theme=light]{color-scheme:light;--bg:#f4f3ed;--surface:#eaece4;--surface-alt:#e1e5db;--text:#222c2b;--muted:#586561;--accent:#405d48;--line:#c8cfc3;--soft-line:#dce0d6;--button-text:#f4f3ed}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.75 var(--sans);-webkit-font-smoothing:antialiased;transition:background-color .2s,color .2s}body::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.6}a{color:inherit;text-decoration:none;text-underline-offset:5px}a,button{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button[hidden]{display:none!important}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:6px;border-radius:2px}::selection{background:var(--accent);color:var(--bg)}img,svg{max-width:100%}figure,p,h1,h2,h3{margin:0}h1,h2,h3{font-weight:400;line-height:1.18}h2{font:400 clamp(29px,3.2vw,40px)/1.2 var(--serif);letter-spacing:-.7px}h3{font-size:21px}strong{font-weight:600;color:var(--text)}.wrap{width:min(1120px,calc(100% - 104px));margin-inline:auto}.skip-link{position:fixed;top:8px;left:8px;background:var(--accent);color:var(--bg);padding:8px 18px;z-index:99;transform:translateY(-160%)}.skip-link:focus{transform:none}.site-header{min-height:108px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:30px}.brand{display:flex;align-items:center;gap:15px;white-space:nowrap}.monogram{font:italic 34px/1 var(--serif);letter-spacing:-3px;color:var(--accent);padding-right:4px}.brand-name{font:11px var(--mono);letter-spacing:2px}.header-controls,.site-nav{display:flex;align-items:center}.header-controls{gap:28px}.site-nav{gap:28px}.site-nav a{font-size:13px;color:var(--muted);position:relative;padding:12px 0;transition:color .2s}.site-nav a:hover,.site-nav a[aria-current]{color:var(--text)}.site-nav a[aria-current]::after{content:'';height:3px;width:3px;position:absolute;bottom:4px;left:50%;border-radius:50%;background:var(--accent)}.theme-toggle{display:grid;place-items:center;background:transparent;border:1px solid var(--line);width:38px;height:38px;border-radius:50%;transition:background .2s,transform .3s}.theme-toggle:hover{background:var(--surface-alt);transform:rotate(25deg)}.menu-toggle{display:none}.eyebrow,.section-number,.topic-label,.small-note,.work-status{font:10px/1.8 var(--mono);letter-spacing:1.35px}.eyebrow,.section-number{color:var(--accent)}.status-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin-right:9px;box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 8%,transparent);vertical-align:1px}.hero{position:relative;overflow:hidden;display:grid;grid-template-columns:1.35fr 1fr;align-items:center;gap:40px;padding:82px 0 85px;min-height:620px}.hero-copy{position:relative;z-index:1;animation:arrive .7s ease-out both}.hero h1{font:400 clamp(76px,8.4vw,112px)/1.05 var(--serif);letter-spacing:-6px;margin:25px 0 23px}.hero h1 em{font-weight:400;color:var(--accent)}.hero-tagline{font-size:25px;line-height:1.45;letter-spacing:-.5px}.hero-summary{margin-top:20px;font-size:15px;line-height:1.8;color:var(--muted)}.hero-actions{display:flex;align-items:center;gap:27px;margin-top:34px}.button{display:inline-flex;gap:26px;align-items:center;padding:12px 19px;font-size:12px;font-weight:600;border:1px solid var(--accent);border-radius:3px;transition:transform .2s,box-shadow .2s}.button-primary{background:var(--accent);color:var(--button-text)}.button:hover{transform:translateY(-3px);box-shadow:0 7px 20px #0002}.text-link{display:inline-flex;align-items:center;gap:14px;font-size:12px;white-space:nowrap;color:var(--accent)}.text-link span{transition:transform .2s}.text-link:hover span{transform:translate(3px,-3px)}.portrait-composition{position:relative;min-width:0;height:430px;display:grid;place-items:center;animation:arrive 1s ease-out both}.contour-art{position:absolute;width:115%;max-width:none;height:115%;color:var(--accent);opacity:.18;top:-7%;left:-4%;pointer-events:none;transform:rotate(0);animation:contour-drift 20s ease-in-out infinite alternate}.portrait{position:relative;width:266px;padding:10px 10px 0;border:1px solid var(--line);background:var(--surface);transform:rotate(3deg);box-shadow:15px 20px 50px #0002;transition:transform .5s}.portrait:hover{transform:rotate(0)}.portrait img{display:block;width:100%;height:305px;object-fit:cover;object-position:50% 34%;filter:saturate(.55)}.portrait figcaption{display:flex;justify-content:space-between;font:8px/1.5 var(--mono);letter-spacing:1px;color:var(--muted);padding:13px 2px}.portrait-note{position:absolute;bottom:2px;right:35px;font:italic 15px var(--serif);color:var(--muted);letter-spacing:1px}.editorial-section{display:grid;grid-template-columns:1fr 2fr;gap:70px;border-top:1px solid var(--line);padding:63px 0 70px}.section-label h2{margin-top:18px}.prose{color:var(--muted);font-size:16px;line-height:1.95}.prose p+p{margin-top:20px}.prose a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line);transition:text-decoration-color .2s}.prose a:hover{color:var(--accent);text-decoration-color:var(--accent)}.prose h2{color:var(--text);margin:52px 0 24px;padding-bottom:18px;border-bottom:1px solid var(--line)}.prose h2:first-child{margin-top:0}.prose ul{padding-left:20px}.prose>ul>li{margin-bottom:24px}.prose ul ul li{margin-bottom:3px}.about-copy p:first-child{color:var(--text);font-size:19px;line-height:1.75}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:25px;margin-bottom:30px}.section-heading .section-number{margin-bottom:13px}.small-note{color:var(--muted);letter-spacing:.6px}.focus-section,.selected-section{border-top:1px solid var(--line);padding:58px 0 65px}.focus-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:4px;overflow:hidden}.focus-item{padding:29px 27px 27px;position:relative;transition:background-color .25s}.focus-item+.focus-item{border-left:1px solid var(--line)}.focus-item:hover{background:var(--surface)}.focus-index{font:11px var(--mono);color:var(--muted);display:block;margin-bottom:35px}.focus-item h3{font:25px/1.2 var(--serif);min-height:60px;letter-spacing:-.5px}.focus-item p{font-size:13px;line-height:1.8;color:var(--muted);margin:12px 0 28px;min-height:48px}.topic-label{color:var(--accent);font-size:9px;letter-spacing:1px}.publication-row{display:grid;grid-template-columns:135px 1fr;gap:40px;padding:34px 0;border-top:1px solid var(--line)}.publication-meta{display:flex;align-items:flex-start;flex-direction:column;gap:16px;font:11px var(--mono);color:var(--muted)}.venue-badge{border:1px solid var(--line);padding:6px 11px;border-radius:3px;color:var(--accent);letter-spacing:.5px}.publication-copy h3{font:29px/1.35 var(--serif);letter-spacing:-.4px;max-width:740px}.publication-copy h3 a:hover{color:var(--accent)}.publication-authors{margin-top:16px;font-size:13px;color:var(--text)}.publication-excerpt{margin-top:13px;font-size:14px;line-height:1.8;color:var(--muted);max-width:730px}.publication-links{display:flex;gap:28px;margin-top:23px}.contact-section{padding:48px 43px;margin:0 0 85px;background:var(--surface);border:1px solid var(--line);border-radius:4px;display:flex;justify-content:space-between;align-items:center;gap:35px}.contact-section h2{margin:15px 0 18px}.contact-section p:not(.section-number){font-size:13px;color:var(--muted)}.contact-email{font:19px var(--serif);color:var(--accent);border-bottom:1px solid var(--line);padding-bottom:12px;white-space:nowrap}.contact-email span{margin-left:16px}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:30px;border-top:1px solid var(--line);padding:30px 0 36px;font-size:11px;color:var(--muted)}.site-footer>div:first-child{display:flex;flex-direction:column;gap:3px}.footer-name{font:19px var(--serif);color:var(--text)}.footer-links{display:flex;gap:24px;align-items:center}.footer-links a:hover{color:var(--accent)}.page-shell{padding-bottom:88px;min-height:calc(100vh - 222px)}.page-heading{padding:70px 0 60px;max-width:920px}.page-heading h1{font:400 clamp(48px,6.5vw,78px)/1.1 var(--serif);letter-spacing:-3px;margin:22px 0}.page-intro{color:var(--muted);font-size:17px;max-width:640px}.page-shell>.prose,.page-shell>div>.prose{max-width:840px}.ongoing-section,.gallery-section{border-top:1px solid var(--line);margin-top:65px;padding-top:48px}.work-status{color:var(--accent);white-space:nowrap;letter-spacing:1px}.work-status .status-dot{width:5px;height:5px}.quiet-placeholder{border:1px dashed var(--line);background:var(--surface);border-radius:4px;padding:40px;display:flex;align-items:center;gap:32px}.placeholder-mark{font:38px var(--serif);color:var(--accent)}.quiet-placeholder h3{font:27px var(--serif);margin-bottom:10px}.quiet-placeholder p{color:var(--muted);font-size:14px}.ongoing-item{padding:28px 0;border-top:1px solid var(--line)}.ongoing-item h3{margin-bottom:12px}.ongoing-item p{color:var(--muted)}.teaching-row{display:grid;grid-template-columns:135px 1fr;gap:40px;padding:33px 0 36px;border-top:1px solid var(--line)}.teaching-year{font:38px/1.3 var(--serif);color:var(--muted)}.teaching-row .eyebrow{text-transform:uppercase;margin-bottom:10px}.teaching-row h3{font:30px/1.3 var(--serif);margin-bottom:15px}.teaching-row p:not(.eyebrow){color:var(--muted);font-size:14px}.teaching-row .course-detail{margin-top:6px;font-size:12px!important}.course-detail span{margin:0 8px}.travel-empty{position:relative;isolation:isolate;text-align:center;padding:255px 24px 64px;background:var(--surface);border:1px solid var(--line);border-radius:4px;overflow:hidden}.travel-landscape{position:absolute;z-index:-1;left:0;top:0;width:100%;height:240px;color:var(--accent);opacity:.35}.travel-empty h3{font:36px/1.25 var(--serif);margin:18px 0 12px}.travel-empty p:last-child{color:var(--muted);font-size:14px}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 28px}.photo-link{display:block;position:relative;overflow:hidden;border-radius:4px;background:var(--surface)}.photo-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .4s}.photo-link:hover img{transform:scale(1.035)}.photo-expand{position:absolute;right:15px;bottom:15px;background:var(--bg);width:34px;height:34px;text-align:center;line-height:34px;border-radius:50%}.photo-card figcaption{padding-top:18px}.photo-card h3{font:27px var(--serif);margin-bottom:8px}.photo-card p{color:var(--muted);font-size:13px}.photo-location{font-family:var(--mono);font-size:10px!important;margin-bottom:7px}.photo-dialog{border:1px solid var(--line);background:var(--bg);color:var(--text);max-width:94vw;max-height:94vh;padding:48px 24px 20px;border-radius:5px}.photo-dialog::backdrop{background:#000d;backdrop-filter:blur(5px)}.photo-dialog img{display:block;max-height:75vh;max-width:85vw;object-fit:contain;margin:auto}.photo-dialog figcaption{font-size:13px;color:var(--muted);text-align:center;margin-top:14px}.photo-close{position:absolute;top:10px;right:16px;border:0;background:none;font-size:12px;padding:4px 8px}.photo-close span{font-size:20px;margin-left:8px}body.photo-open{overflow:hidden}
@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes contour-drift{to{transform:rotate(8deg)}}
@media(min-width:1500px){.hero{padding-block:95px}}
@media(max-width:1000px){.wrap{width:calc(100% - 64px)}.brand-name{display:none}.site-nav{gap:23px}.hero{gap:20px;grid-template-columns:1.2fr 1fr;padding-block:65px;min-height:580px}.hero h1{font-size:88px}.hero .eyebrow{font-size:9px;letter-spacing:.8px}.portrait{width:230px}.portrait img{height:285px}.portrait-note{right:6px}.hero-actions{gap:20px}.editorial-section{gap:40px;grid-template-columns:1fr 2fr}.focus-item{padding:24px 21px}.contact-section{padding:35px}.contact-email{font-size:17px}}
@media(max-width:720px){.wrap{width:calc(100% - 40px)}.site-header{min-height:82px;gap:16px;position:relative;flex-wrap:wrap}.brand-name{display:inline;font-size:10px}.header-controls{gap:14px}.site-nav{gap:16px;flex-wrap:wrap}.site-nav a{font-size:12px}.js .menu-toggle{display:flex;align-items:center;gap:12px;font-size:12px;padding:8px 0;background:none;border:0}.js .site-nav{display:none;position:absolute;z-index:10;top:81px;left:-20px;right:-20px;padding:22px 24px;background:var(--bg);border-bottom:1px solid var(--line);box-shadow:0 15px 20px #0002}.js .site-nav.is-open{display:flex;gap:24px;justify-content:center}.theme-toggle{height:34px;width:34px}.hero{grid-template-columns:1fr;padding:50px 0 38px;gap:26px;min-height:0}.hero h1{font-size:86px;letter-spacing:-4px;margin-top:21px}.hero-tagline{font-size:23px}.hero-summary{font-size:14px}.hero-actions{gap:25px;margin-top:28px}.portrait-composition{height:380px;max-width:380px;width:100%;margin:0 auto}.portrait{width:230px}.portrait img{height:275px}.portrait-note{right:12px;bottom:3px}.contour-art{width:100%;height:100%;left:0;top:0}.editorial-section{grid-template-columns:1fr;gap:25px;padding:40px 0}.section-label h2 br{display:none}.section-label h2{margin-top:12px}.about-copy p:first-child{font-size:18px}.prose{font-size:15px;line-height:1.9}.section-heading{align-items:flex-start;flex-direction:column;gap:14px;margin-bottom:24px}.focus-section,.selected-section{padding:38px 0}.focus-grid{grid-template-columns:1fr}.focus-item{padding:26px}.focus-item+.focus-item{border-left:0;border-top:1px solid var(--line)}.focus-index{margin-bottom:20px}.focus-item h3{min-height:0;font-size:28px}.focus-item p{min-height:0;margin:12px 0 18px}.publication-row{grid-template-columns:1fr;gap:18px;padding-block:25px}.publication-meta{flex-direction:row;align-items:center}.publication-copy h3{font-size:27px}.publication-excerpt{font-size:13px}.contact-section{padding:30px 25px;flex-direction:column;align-items:flex-start;gap:28px;margin-bottom:45px}.contact-email{font-size:20px;white-space:normal;overflow-wrap:anywhere}.site-footer{flex-direction:column;align-items:flex-start;gap:22px;padding:25px 0 30px}.footer-links{gap:28px}.page-heading{padding:48px 0 38px}.page-heading h1{font-size:50px;letter-spacing:-2px}.page-intro{font-size:15px}.page-shell{padding-bottom:50px}.ongoing-section,.gallery-section{margin-top:40px;padding-top:35px}.quiet-placeholder{padding:28px 22px;gap:20px}.quiet-placeholder h3{font-size:25px}.quiet-placeholder p{font-size:13px}.teaching-row{grid-template-columns:1fr;gap:14px;padding-block:27px}.teaching-year{font-size:28px}.teaching-row h3{font-size:28px}.teaching-row .course-detail{line-height:1.9}.travel-empty{padding:205px 23px 45px}.travel-landscape{height:200px;width:150%;max-width:none;left:-25%}.travel-empty h3{font-size:30px}.travel-empty .eyebrow{font-size:9px}.photo-grid{grid-template-columns:1fr;gap:32px}.photo-dialog{padding:48px 12px 16px}.photo-dialog img{max-width:85vw}.desktop-break{display:none}}
@media(max-width:370px){.brand-name{display:none}.hero h1{font-size:75px}.hero .eyebrow{font-size:8px}.hero-actions{gap:17px}.button{gap:16px;padding:12px 14px}.text-link{font-size:11px}.contact-email{font-size:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.portrait{transform:none}}
