/* User-selected charcoal + optical light. Replaceable design tokens. */
:root{color-scheme:dark;--paper:#0c0f10;--ink:#eceee8;--muted:#969e9d;--line:#303738;--surface:#141b1e;--accent:#bad2d9;--display:Arial,Helvetica,system-ui,sans-serif;--body:system-ui,-apple-system,"Segoe UI","Malgun Gothic",sans-serif;--page:1440px;--gutter:clamp(22px,4.5vw,80px);font-family:var(--body)}
*{box-sizing:border-box}html{scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink)}::selection{background:var(--ink);color:var(--paper)}a{color:inherit;text-underline-offset:5px}button,input{font:inherit}button{cursor:pointer}header,main,footer{max-width:var(--page);margin:auto;padding-inline:var(--gutter)}.site-header{min-height:92px;display:flex;align-items:center;gap:32px;border-bottom:1px solid var(--line);position:relative;z-index:2}.brand{text-decoration:none;font-weight:800;font-size:28px;letter-spacing:-.07em;view-transition-name:brand}.brand span{font-size:10px;font-weight:500;letter-spacing:.12em;vertical-align:middle;margin-left:7px}.site-header nav{display:flex;gap:28px;margin-left:auto}.site-header nav a{font-size:13px;text-decoration:none;position:relative}.site-header nav a::after{content:'';position:absolute;left:0;right:0;bottom:-5px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left}main{min-height:75vh;padding-block:48px 100px}h1{font-family:var(--display);font-weight:700;font-size:clamp(42px,6vw,88px);line-height:1.05;letter-spacing:-.06em;overflow-wrap:anywhere}.eyebrow,.card-meta,.hero-topline,.section-heading>span,footer>span{font-size:10px;letter-spacing:.14em;color:var(--muted)}
.intro{padding-top:12px;position:relative;isolation:isolate}.hero-topline{display:flex;justify-content:space-between;align-items:center}.hero-dot{width:8px;height:8px;border:1px solid var(--ink);border-radius:50%;background:var(--ink)}.hero-type{position:relative;min-height:clamp(260px,44vw,630px);display:flex;align-items:center;overflow:hidden}.hero-type h1{font-size:clamp(150px,35vw,505px);line-height:.78;letter-spacing:-.085em;margin:0 0 0 -.025em;position:relative;z-index:1;transform:translate3d(0,var(--hero-shift,0px),0);max-width:100%}.hero-bottomline{display:flex;align-items:center;justify-content:space-between;gap:30px;padding-block:20px 38px}.hero-bottomline>p{font-size:clamp(14px,1.4vw,20px);margin:0;color:var(--muted)}.scroll-cue{text-decoration:none;font-size:12px;display:flex;gap:25px;align-items:center}.scroll-cue span{display:inline-grid;place-items:center;width:42px;height:42px;border:1px solid var(--line);border-radius:50%;font-size:18px}.hero-rule{height:1px;background:var(--ink);transform-origin:left}.section-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--ink);padding:20px 0}.section-heading h2{font-size:13px;font-weight:500;margin:0}.section-heading>span{font-size:10px}#journal{padding-top:75px;scroll-margin-top:24px}.empty{display:flex;align-items:center;gap:25px;padding:60px 0 110px;color:var(--muted)}.empty>span{font-size:48px;font-weight:200;color:var(--line)}.empty>p{font-size:14px}.posts{list-style:none;padding:0;margin:0}.posts>li{border-bottom:1px solid var(--line)}.post-card{display:grid;grid-template-columns:100px minmax(0,1fr) 52px;align-items:start;gap:30px;padding:38px 0;text-decoration:none;position:relative}.card-meta{display:flex;flex-direction:column;gap:20px;font-size:10px;padding-top:8px}.card-meta>span{font-size:12px;color:var(--ink)}.card-body h2{font-size:clamp(24px,3.1vw,42px);line-height:1.25;letter-spacing:-.05em;margin:0 0 14px}.card-body p{font-size:14px;line-height:1.85;color:var(--muted);margin:0;max-width:650px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-arrow{font-size:28px;justify-self:end}.card-image{grid-column:2;overflow:hidden;aspect-ratio:16/9;background:var(--surface)}.card-image img{width:100%;height:100%;object-fit:cover;display:block}.post-card:has(.card-image) .card-body{grid-column:2}.post-card:has(.card-image) .card-arrow{grid-column:3;grid-row:1}
article{padding-top:24px}.article-heading{max-width:980px;margin:0 auto 54px}.back-link{text-decoration:none;font-size:12px;color:var(--muted)}.article-heading .eyebrow{margin-top:56px}.article-heading h1{margin:24px 0}.article-deck{font-size:clamp(17px,2vw,23px);line-height:1.7;color:var(--muted);max-width:760px}.article-cover{max-width:1100px;margin:0 auto 65px;background:var(--surface);overflow:hidden}.article-cover img{width:100%;height:auto;display:block}.prose{max-width:720px;margin:auto;font-size:18px;line-height:1.95;overflow-wrap:anywhere;word-break:keep-all}.prose p{margin:1.6em 0;white-space:pre-line}.article-end{max-width:720px;margin:64px auto 0;border-top:1px solid var(--line);padding-top:30px;display:flex;align-items:center;gap:22px;flex-wrap:wrap;font-size:12px}.article-end>span{font-size:30px}.article-end>a{margin-left:auto}.article-end nav{display:flex;gap:12px;flex-wrap:wrap}.reading-track{height:3px;position:fixed;left:0;top:0;right:0;z-index:9;pointer-events:none}.reading-track span{display:block;background:var(--accent);height:100%;transform:scaleX(var(--read-progress,0));transform-origin:left}
form{margin-top:45px;max-width:760px}label{display:block;font-size:13px;color:var(--muted);margin-bottom:15px}input,form button{border:0;border-bottom:1px solid var(--ink);padding:16px 0;background:transparent;color:var(--ink);font-size:20px;border-radius:0}input{width:calc(100% - 85px);max-width:100%;margin-right:20px}form button{font-size:14px;width:65px}#count{font-size:12px;color:var(--muted);margin:36px 0}footer{border-top:1px solid var(--line);display:flex;align-items:center;gap:30px;padding-block:35px 45px}.footer-brand{font-size:35px;font-family:var(--display);font-weight:700;letter-spacing:-.07em;text-decoration:none}footer>a:last-child{margin-left:auto;font-size:11px;text-decoration:none}:focus-visible{outline:2px solid var(--ink);outline-offset:6px}.skip{position:fixed;top:-100px;left:20px;background:var(--paper);padding:12px;z-index:12}.skip:focus{top:12px}
@media(max-width:650px){.site-header{min-height:115px;flex-wrap:wrap;gap:8px 20px;padding-block:18px}.brand{font-size:25px}.site-header nav{order:3;width:100%;margin:14px 0 0;gap:26px}.brand span{font-size:8px}main{padding-block:30px 70px}.hero-type{min-height:290px}.hero-type h1{font-size:clamp(155px,52vw,338px)}.hero-bottomline{padding-top:8px;padding-bottom:25px}.hero-bottomline>p{max-width:65%;line-height:1.7}.scroll-cue{font-size:10px;gap:12px}.scroll-cue span{width:34px;height:34px}#journal{padding-top:42px}.empty{padding:30px 0 65px;gap:16px}.empty>p{font-size:12px}.post-card{grid-template-columns:1fr 28px;gap:15px;padding:26px 0}.card-meta{grid-column:1/-1;flex-direction:row;justify-content:space-between;padding:0}.card-body{grid-column:1}.card-arrow{font-size:23px}.card-body p{font-size:13px}.post-card .card-image,.post-card:has(.card-image) .card-body{grid-column:1/-1}.post-card:has(.card-image) .card-arrow{grid-column:2;grid-row:3}.prose{font-size:17px;line-height:1.9}.article-heading .eyebrow{margin-top:35px}.article-heading{margin-bottom:35px}.article-cover{margin-bottom:35px}.article-end{margin-top:45px}footer{padding-block:25px 35px}.footer-brand{font-size:27px}}
@view-transition{navigation:auto}.hero-type h1{mix-blend-mode:screen;text-shadow:0 3px 45px #0c0f1066}.hero-topline,.hero-bottomline{position:relative;z-index:2}.hero-dot{background:var(--accent);border-color:var(--accent);box-shadow:0 0 20px #bad2d922}.card-image img{filter:saturate(.85)}.post-card:hover .card-body h2{color:var(--accent)}.reading-track span{box-shadow:0 0 8px #bad2d955}.site-header nav a:hover{color:var(--accent)}.empty>span{color:var(--accent);opacity:.4}
@media(max-width:650px){.hero-type h1{z-index:1}.hero-type{min-height:355px}}
.academic-hero .hero-type{min-height:640px;align-items:center;overflow:visible}.academic-hero .hero-type h1{font-size:clamp(75px,10.5vw,152px);line-height:.95;letter-spacing:-.075em;margin:0;mix-blend-mode:normal;max-width:75%}.academic-hero .hero-type h1>span{color:var(--muted)}.hero-role{font-size:15px;margin:0 0 8px}.hero-lab{color:var(--muted);font-size:13px;margin:0}.academic-section{display:grid;grid-template-columns:220px minmax(0,1fr);gap:40px;padding:88px 0;border-bottom:1px solid var(--line);scroll-margin-top:10px}.section-label{display:flex;gap:24px;align-items:baseline}.section-label>span{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}.section-label h2{font-size:13px;font-weight:500;margin:0}.about-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:50px}.about-copy{font-size:clamp(23px,2.5vw,35px);line-height:1.6;letter-spacing:-.035em;margin:0 0 30px;max-width:820px}.interests{display:flex;gap:10px;flex-wrap:wrap;margin:30px 0}.interests>span{font-size:11px;padding:10px 14px;border:1px solid var(--line);border-radius:100px;color:var(--muted)}.inline-links{display:flex;gap:25px;flex-wrap:wrap;margin-top:36px}.inline-links a{font-size:12px;text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:6px}.portrait{width:150px;height:170px;margin:0;overflow:hidden;align-self:start;border:1px solid var(--line)}.portrait img{width:100%;height:100%;object-fit:cover;filter:saturate(.8)}.subsection-heading{display:flex;align-items:center;gap:20px;margin:0 0 24px}.subsection-heading:not(:first-child){margin-top:64px}.subsection-heading h3{font-size:24px;font-weight:500;letter-spacing:-.04em;margin:0}.subsection-heading>span{font-size:10px;color:var(--muted)}.academic-records{list-style:none;margin:0;padding:0}.academic-records>li{display:grid;grid-template-columns:100px minmax(0,1fr);gap:25px;border-top:1px solid var(--line);padding:26px 0}.record-meta{display:flex;flex-direction:column;gap:9px;font-size:10px;color:var(--muted);line-height:1.5}.record-meta>span:last-child{color:var(--accent)}.record-content h3{font-size:20px;line-height:1.5;letter-spacing:-.025em;font-weight:500;margin:0 0 13px}.record-content h3 a{text-decoration:none}.record-content p{font-size:12px;color:var(--muted);line-height:1.8;margin:7px 0}.source-link{font-size:10px;color:var(--muted);display:inline-block;margin-top:9px;text-decoration:none}.record-empty{font-size:13px;color:var(--muted);padding:12px 0 24px}.cv-caption{font-size:20px;line-height:1.7;margin:0 0 35px}.education-list>div{display:flex;gap:35px;align-items:baseline;border-top:1px solid var(--line);padding:22px 0}.education-list span{font-size:10px;color:var(--muted);min-width:80px}.education-list p{font-size:14px;line-height:1.9;margin:0}.education-list strong{font-weight:400;color:var(--muted)}.contact-intro{font-family:var(--display);font-size:clamp(40px,6vw,80px);line-height:1;letter-spacing:-.06em;margin:0 0 50px}.contact-list>a{display:grid;grid-template-columns:90px minmax(0,1fr) 20px;align-items:center;gap:20px;border-top:1px solid var(--line);text-decoration:none;padding:22px 0}.contact-list>a>span:first-child{font-size:11px;color:var(--muted)}.contact-list strong{font-size:clamp(13px,1.7vw,22px);font-weight:400;overflow-wrap:anywhere}.contact-list a:hover{color:var(--accent)}.cv-body{max-width:920px;margin:auto}.cv-body>h2{font-size:24px;letter-spacing:-.03em;margin:45px 0 20px}.cv-body>p{font-size:15px;line-height:1.8;color:var(--muted)}.cv-body .cv-source{margin-top:60px;font-size:11px}.cv-download{font-size:13px}.not-found{padding:80px 0 120px}.not-found h1{font-size:150px}.search-result{display:block;padding:25px 0;text-decoration:none}.search-result h2{font-size:26px}.search-result p{color:var(--muted)}
@media(max-width:1000px){.academic-section{grid-template-columns:140px minmax(0,1fr);gap:30px}.about-grid{gap:25px}.portrait{width:115px;height:138px}.academic-hero .hero-type{min-height:530px}}
@media(max-width:650px){.academic-hero .hero-type{min-height:530px;align-items:flex-start;padding-top:60px}.academic-hero .hero-type h1{font-size:clamp(68px,17vw,110px);max-width:100%}.hero-role{font-size:12px}.hero-lab{font-size:10px;max-width:220px}.academic-section{display:block;padding:52px 0}.section-label{margin-bottom:32px}.about-grid{grid-template-columns:1fr}.portrait{grid-row:1;width:110px;height:132px}.about-copy{font-size:24px}.inline-links{gap:20px;margin-top:28px}.academic-records>li{display:block}.record-meta{flex-direction:row;gap:16px;margin-bottom:13px}.record-content h3{font-size:18px}.contact-list>a{grid-template-columns:62px minmax(0,1fr) 12px;gap:10px}.contact-list>a>span:first-child{font-size:10px}.education-list>div{gap:18px}.education-list span{min-width:50px}.education-list p{font-size:13px}.site-header nav{justify-content:space-between}.site-header nav a{font-size:12px}footer>span{max-width:180px;font-size:9px;line-height:1.7}}
@media print{body{background:#fff;color:#111}.site-header,footer,.cv-download{display:none}main{padding:0;min-height:0}.cv-page{padding:0}.cv-page .article-heading{margin-bottom:35px}.cv-page h1{font-size:40px}.cv-body p,.record-content p,.record-meta,.article-deck{color:#444}.cv-body>h2{font-size:18px;break-after:avoid}.academic-records>li{break-inside:avoid}.cv-source{font-size:9px}.cv-body a{color:#111;text-decoration:none}@page{size:A4;margin:19mm}}
@media(max-width:650px){}
.about-detail{color:var(--muted);font-size:15px;line-height:1.95;max-width:750px;margin:0 0 28px}.record-links{display:flex;gap:15px;align-items:baseline;font-size:10px;color:var(--muted)}.record-links a{text-decoration:none}.own-author{color:var(--ink);font-weight:500}.cv-contact{font-size:12px;line-height:1.8;color:var(--muted)}.cv-second>h2{font-size:24px;margin-top:45px;font-weight:500;letter-spacing:-.03em}.cv-second>h2:first-child{margin-top:60px}
@media print{.cv-page .article-heading{margin:0 0 18px}.cv-page .article-heading h1{font-size:35px;line-height:1.05;margin:8px 0}.cv-page .article-heading .eyebrow{margin:0;font-size:8px;letter-spacing:.14em}.cv-page .article-deck{font-size:10px;line-height:1.5;margin:8px 0}.cv-contact{font-size:8px;line-height:1.5;margin:8px 0}.cv-body>h2,.cv-second>h2{font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;margin:20px 0 8px;border-bottom:1px solid #ccc;padding-bottom:5px}.cv-body>p{font-size:9px;line-height:1.5;margin:7px 0}.cv-body .academic-records>li{grid-template-columns:52px minmax(0,1fr);gap:12px;padding:11px 0;border-color:#ddd}.cv-body .record-content h3{font-size:10px;line-height:1.45;margin-bottom:4px;font-weight:600}.cv-body .record-content p{font-size:8px;line-height:1.5;margin:3px 0}.cv-body .record-meta{font-size:8px;gap:4px;color:#555}.cv-body .record-meta>span:last-child{color:#555}.cv-body .record-links{font-size:8px}.cv-body .source-link{display:none}.own-author{color:#111;font-weight:700}.cv-second{break-before:page}.cv-second>h2:first-child{margin-top:0}.cv-body .cv-source{font-size:8px;margin-top:24px;color:#666}.reading-track{display:none}}
@media print{html{color-scheme:light;background:white}.skip{display:none}.cv-contact{color:#444}.cv-page .eyebrow{color:#666}.cv-body .record-content p{font-size:8.5px}.cv-body strong{color:#111}}
@media print{:root{color-scheme:light;--paper:#fff;--ink:#111;--muted:#555;--line:#ccc;--accent:#333;background:#fff!important}}
.cv-second>p{font-size:15px;line-height:1.8;color:var(--muted)}
@media print{.cv-second>p{font-size:9px;line-height:1.5;margin:7px 0;color:#444}}
@media(prefers-reduced-motion:no-preference){html[data-motion=on]{scroll-behavior:smooth}html[data-motion=on] .reveal[data-revealed=true]{animation:reveal-in .65s cubic-bezier(.2,.75,.2,1) both}html[data-motion=on] .site-header nav a::after{transition:transform .25s}html[data-motion=on] .post-card .card-body,html[data-motion=on] .card-arrow,html[data-motion=on] .card-image img{transition:transform .5s cubic-bezier(.2,.75,.2,1)}html[data-motion=on] .scroll-cue span{transition:transform .35s}html[data-motion=on] .scroll-cue:hover span{transform:translateY(5px)}html[data-motion=on] .site-header nav a:hover::after{transform:scaleX(1)}@keyframes reveal-in{from{opacity:.3;translate:0 22px}to{opacity:1;translate:0 0}}}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){html[data-motion=on] .post-card:hover .card-body{transform:translateX(8px)}html[data-motion=on] .post-card:hover .card-arrow{transform:translate(3px,-3px)}html[data-motion=on] .post-card:hover .card-image img{transform:scale(1.035)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.hero-type h1{transform:none!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}html[data-motion=off] .hero-type h1{transform:none}html[data-motion=off]::view-transition-group(*),html[data-motion=off]::view-transition-old(*),html[data-motion=off]::view-transition-new(*){animation:none}@media(max-width:650px){.site-header nav{gap:12px}.brand span{display:none}}
.journal-page,.journal-entry{padding:90px 0 120px;max-width:1100px;margin:auto}.journal-page h1,.journal-entry h1{font-size:clamp(38px,7vw,90px);letter-spacing:-.06em;line-height:1.1;font-weight:500}.journal-deck{color:var(--muted);font-size:17px}.journal-empty{border-top:1px solid var(--line);margin-top:75px;padding:80px 0}.journal-empty>span{font-size:75px;color:var(--accent)}.journal-empty small{color:var(--muted)}.journal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:50px 30px;margin-top:70px}.journal-card{text-decoration:none}.journal-cover{width:100%;height:320px;object-fit:cover}.journal-text-cover{height:320px;background:var(--surface);display:grid;place-content:center;font-size:70px;color:var(--muted)}.journal-card time,.journal-entry time{display:block;color:var(--muted);font-size:12px;margin:20px 0}.journal-card h2{font-size:22px;font-weight:400}.journal-entry{max-width:850px}.journal-back{font-size:13px}.journal-prose{max-width:680px;font-size:18px;line-height:1.9;margin:40px 0 60px}.journal-entry figure{margin:40px 0}.journal-entry img{width:100%;height:auto}.journal-entry figcaption{font-size:13px;color:var(--muted);margin-top:15px}.photo-dialog{background:var(--paper);color:var(--ink);border:1px solid var(--line);max-width:95vw;max-height:95vh;padding:18px}.photo-dialog::backdrop{background:#000d}.photo-dialog img{display:block;max-width:85vw;max-height:80vh;object-fit:contain}.photo-dialog button{background:transparent;color:var(--ink);border:1px solid var(--line);padding:10px 18px;float:right;margin-bottom:12px}@media(max-width:650px){.journal-page,.journal-entry{padding:50px 0 80px}.journal-grid{grid-template-columns:1fr}.journal-cover,.journal-text-cover{height:280px}.journal-prose{font-size:16px}}
.journal-search{display:block;font-size:12px;margin-top:50px;max-width:400px}.journal-search input{display:block;width:100%;margin-top:12px;padding:15px;background:var(--surface);border:1px solid var(--line);color:var(--ink);font:inherit}.journal-tags,#journal-results{font-size:12px;color:var(--muted)}@media(pointer:coarse){}.about-grid{grid-template-columns:1fr}@media(max-width:650px){}

.about-grid{grid-template-columns:minmax(0,1fr) 136px;gap:42px}.portrait{width:136px;height:136px;border:0}.portrait img{object-fit:contain;filter:none}.academic-hero .hero-type{min-height:580px}@media(max-width:650px){.about-grid{grid-template-columns:1fr}.portrait{grid-row:1;width:100px;height:100px;margin-bottom:4px}.academic-hero .hero-type{min-height:340px}}
.cv-teaching-heading{font-size:18px;font-weight:500;letter-spacing:-.025em;margin:36px 0 18px}.teaching-list p{overflow-wrap:anywhere}
