:root { --ink:#17251f; --forest:#234638; --moss:#638c63; --paper:#f6f4ed; --cream:#ebe6d7; --coral:#c85e42; --line:#cfcabc; --muted:#59655d; --serif: Georgia, 'Times New Roman', serif; --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
html[data-theme='dark'] { color-scheme:dark; --ink:#f0f4ee; --forest:#17372b; --moss:#85ad83; --paper:#121c17; --cream:#1d2b24; --coral:#f09276; --line:#40574a; --muted:#bccbbf; --panel:#0c1511; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:5.5rem; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:var(--sans); font-size:16px; line-height:1.65; }
a { color:inherit; }
.site-header { min-height:88px; padding:14px max(5vw, 2rem); display:flex; align-items:center; justify-content:space-between; gap:2rem; border-bottom:1px solid var(--line); background:rgba(246,244,237,.94); position:sticky; top:0; z-index:10; backdrop-filter:blur(10px); }
.site-name { color:var(--ink); font-family:var(--serif); font-size:1.45rem; line-height:1; text-decoration:none; }
nav { display:flex; align-items:center; gap:clamp(1rem, 3vw, 2.8rem); }
nav a { text-decoration:none; color:var(--muted); font-size:.88rem; font-weight:650; letter-spacing:.02em; }nav a[aria-current='page'] { color:var(--coral); }
nav a:hover, nav a:focus-visible { color:var(--coral); }
.menu-toggle { display:none; }
.site-controls { display:flex; align-items:center; gap:.45rem; }.control-button { width:2.35rem; height:2.35rem; display:grid; place-items:center; padding:0; border:1px solid var(--line); border-radius:50%; background:transparent; color:var(--ink); font-family:var(--sans); font-size:.9rem; font-weight:750; line-height:1; cursor:pointer; }.control-button:hover,.control-button:focus-visible { border-color:var(--coral); color:var(--coral); outline:none; }.theme-toggle { font-size:1.25rem; }
main { overflow:clip; }
.intro { max-width:1250px; margin:0 auto; padding:clamp(3rem,8vw,7.2rem) max(5vw, 2rem); display:grid; grid-template-columns:minmax(250px, .8fr) minmax(0, 1.15fr); align-items:center; gap:clamp(3rem,9vw,9rem); }
.intro-photo-wrap { position:relative; max-width:360px; }
.intro-photo { width:100%; aspect-ratio:3/4; object-fit:cover; object-position:66% center; display:block; filter:saturate(.88) contrast(1.04); }
.eyebrow { margin:0 0 1rem; color:var(--coral); font-size:.72rem; line-height:1.3; font-weight:800; text-transform:uppercase; letter-spacing:.13em; }
h1,h2,h3 { font-family:var(--serif); font-weight:400; line-height:1.08; letter-spacing:0; }
h1 { max-width:700px; margin:.1rem 0 1.6rem; font-size:clamp(2.4rem, 4.3vw, 4.25rem); }
h2 { margin:.15rem 0; font-size:clamp(2.35rem,4.5vw,4.6rem); }
h3 { margin:0; font-size:1.7rem; }
.intro-copy p:not(.eyebrow) { max-width:660px; font-size:1.05rem; color:#35443b; }
.intro-copy .lead { font-family:var(--serif); font-size:1.45rem; line-height:1.5; color:var(--ink); }
.contact-section { padding-top:clamp(4.5rem,8vw,8rem); }.contact-grid { max-width:1250px; margin:2.7rem auto 0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5rem; }.contact-grid > div { padding:1.5rem 0; border-top:2px solid var(--forest); }.contact-grid h2 { margin:0 0 .5rem; color:var(--coral); font-family:var(--sans); font-size:.72rem; font-weight:800; letter-spacing:.11em; text-transform:uppercase; }.contact-grid p,.contact-grid address { margin:0; color:#35443b; font-size:1rem; font-style:normal; line-height:1.65; }
.intro-copy a:not(.text-link) { text-decoration-color:var(--coral); text-decoration-thickness:2px; text-underline-offset:3px; }
.text-link { margin-top:1rem; display:inline-flex; align-items:center; gap:.5rem; color:var(--forest); font-weight:750; text-decoration:none; border-bottom:2px solid var(--coral); }
.text-link span { font-size:1.35rem; line-height:1; transition:transform .2s ease; }.text-link:hover span { transform:translateX(4px); }
.section { padding:clamp(4.5rem,8vw,8rem) max(5vw, 2rem); }.section > * { max-width:1250px; margin-left:auto; margin-right:auto; }
.research { background:var(--forest); color:#f5f2e9; }.research .eyebrow { color:#f2a18b; }.research .section-intro { color:#e8e4d9; }.section-heading { display:block; }.section-heading h1,.section-heading h2 { color:var(--coral); font-size:clamp(2.8rem,5vw,5rem); }.research .section-heading h1,.research .section-heading h2 { color:#f2a18b; }
.research-grid { margin-top:4.5rem; }.section-intro { margin:0; font-family:var(--serif); font-size:1.5rem; line-height:1.48; }.bibliography { border-top:1px solid rgba(255,255,255,.35); }.publication-group { padding:1.5rem 0 2rem; border-bottom:1px solid rgba(255,255,255,.35); }.publication-group h3 { font-size:1.2rem; }.publication-list { list-style:none; padding:0; margin:1rem 0 0; counter-reset:publication; }.publication-list li { position:relative; padding:.85rem 0 .85rem 2rem; counter-increment:publication; }.publication-list li::before { content:counter(publication, decimal-leading-zero); position:absolute; left:0; top:.88rem; color:#f2a18b; font-size:.75rem; font-weight:800; }.publication-list cite,.publication-list li > span:last-child { display:block; }.publication-list cite { font-family:var(--serif); font-size:1.12rem; }.publication-list li > span:last-child { margin-top:.3rem; color:#d5d6cc; font-size:.9rem; }
.teaching { min-height:calc(100dvh - 88px); background:var(--cream); }.teaching-grid { margin-top:4.5rem; display:grid; grid-template-columns:1fr 1fr; gap:clamp(3rem,8vw,8rem); }.single-listing { max-width:860px; margin-top:4.5rem; }.listing.single-listing { border-top:0; padding-top:0; }.listing { border-top:2px solid var(--forest); padding-top:1rem; }.listing h3 { margin-bottom:1.6rem; }.listing ul { list-style:none; padding:0; margin:0; }.listing li { display:grid; grid-template-columns:4.4rem 1fr; gap:1rem; padding:1.15rem 0; border-top:1px solid #c8c2b3; }.listing time { color:var(--coral); font-size:.78rem; font-weight:800; letter-spacing:.08em; }.listing strong,.listing span { display:block; }.listing strong { font-family:var(--serif); font-size:1.18rem; font-weight:400; }.listing strong a { text-decoration-color:var(--coral); text-decoration-thickness:1px; text-underline-offset:3px; }.listing strong a:hover,.listing strong a:focus-visible { color:var(--coral); }.listing span { margin-top:.18rem; color:var(--muted); font-size:.9rem; }
.other { background:#fbfaf6; }.leisure-copy { max-width:730px; margin:3rem max(0px, calc((100% - 1250px)/2)) 4.5rem; color:#35443b; font-size:1.05rem; }.gallery-layout { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(280px,.95fr); align-items:start; gap:clamp(2rem,5vw,4rem); }.masonry { columns:2; column-gap:1rem; }.gallery-item { display:block; width:100%; padding:0; margin:0 0 1rem; border:3px solid transparent; break-inside:avoid; background:transparent; cursor:pointer; overflow:hidden; transition:border-color .2s ease, transform .2s ease; }.gallery-item img { display:block; width:100%; height:auto; transition:transform .3s ease; }.gallery-item:hover,.gallery-item:focus-visible,.gallery-item.active { border-color:var(--coral); outline:none; }.gallery-item:hover { transform:translateY(-4px); }.gallery-item:hover img { transform:scale(1.045); }.gallery-detail { position:sticky; top:7.5rem; background:var(--ink); color:#f5f2e9; }.gallery-detail img { display:block; width:100%; aspect-ratio:1.12/1; object-fit:cover; }.detail-copy { padding:1.8rem; }.detail-copy .eyebrow { color:#f2a18b; margin-bottom:.65rem; }.detail-copy h3 { font-size:2.1rem; }.detail-copy p:last-child { margin-bottom:0; color:#dae0d5; }
footer { padding:1.5rem max(5vw,2rem); display:flex; justify-content:space-between; gap:1rem; color:#eae8df; background:var(--ink); font-size:.82rem; }footer p { margin:0; }footer a { color:#f2a18b; text-decoration:none; font-weight:700; }
.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; }
html[data-theme='dark'] .site-header { background:rgba(18,28,23,.94); }html[data-theme='dark'] .intro-copy p:not(.eyebrow),html[data-theme='dark'] .contact-grid p,html[data-theme='dark'] .contact-grid address,html[data-theme='dark'] .leisure-copy { color:#d6e1d7; }html[data-theme='dark'] .text-link { color:#dceede; }html[data-theme='dark'] .other { background:var(--paper); }html[data-theme='dark'] .listing { border-color:#668070; }html[data-theme='dark'] .listing li { border-color:#40574a; }html[data-theme='dark'] .listing span { color:#c8d5ca; }html[data-theme='dark'] .contact-grid > div { border-color:#88a792; }html[data-theme='dark'] .gallery-detail { background:var(--panel); }html[data-theme='dark'] .gallery-detail img { background:var(--panel); }html[data-theme='dark'] .detail-close,html[data-theme='dark'] .detail-nav { background:rgba(5,10,7,.88); }
address[data-i18n] { white-space:pre-line; }
.section { padding-top:clamp(2.5rem,4vw,4rem); }
.contact-section { padding-top:clamp(2.5rem,4vw,4rem); }
.gallery-item { cursor:pointer; }.gallery-item:hover,.gallery-item:focus-visible { box-shadow:0 10px 22px rgba(23,37,31,.18); }.gallery-detail { position:sticky; top:5.75rem; align-self:start; min-width:0; overflow:hidden; opacity:0; transform:translateX(20px); transition:opacity .32s ease,transform .42s ease; }.gallery-detail[hidden] { display:none; }.gallery-layout.has-notes .gallery-detail { opacity:1; transform:translateX(0); }.detail-close { position:absolute; top:.75rem; right:.75rem; z-index:1; width:2.25rem; height:2.25rem; border:0; border-radius:50%; background:rgba(23,37,31,.82); color:#fff; font-size:1.7rem; line-height:1; cursor:pointer; }.detail-close:hover,.detail-close:focus-visible { background:var(--coral); }
.gallery-detail img { aspect-ratio:auto; height:auto; max-height:70vh; object-fit:contain; background:var(--ink); }
.detail-copy h2 { margin:.1rem 0 .75rem; font-size:1.65rem; }
.detail-media { position:relative; }.detail-nav { position:absolute; top:50%; z-index:1; width:2.8rem; height:2.8rem; padding:0; border:0; border-radius:50%; background:rgba(23,37,31,.82); color:#fff; font-size:2.25rem; line-height:1; cursor:pointer; transform:translateY(-50%); }.detail-nav:hover,.detail-nav:focus-visible { background:var(--coral); }.detail-previous { left:.75rem; }.detail-next { right:.75rem; }
.gallery-detail.is-loading .detail-media::before { content:''; display:block; aspect-ratio:1600 / 729; background:#d7ded7; }.gallery-detail.is-loading .detail-media img,.gallery-detail.is-loading .detail-copy { display:none; }html[data-theme='dark'] .gallery-detail.is-loading .detail-media::before { background:#25362c; }
.gallery-item { background:#d7ded7; }.gallery-item img { opacity:0; transition:opacity .22s ease,transform .3s ease; }.gallery-item.is-loaded img { opacity:1; }html[data-theme='dark'] .gallery-item { background:#25362c; }
.gallery-detail { max-height:calc(100vh - 6.75rem); overflow-x:hidden; overflow-y:auto; }.gallery-detail img { max-height:48vh; }
.gallery-layout { display:grid; grid-template-columns:minmax(0,1fr) 0fr; align-items:start; gap:0; transition:grid-template-columns .42s ease,gap .42s ease; }.masonry { columns:3; }.gallery-layout.has-notes { grid-template-columns:minmax(0,1.05fr) minmax(280px,.95fr); gap:clamp(2rem,5vw,4rem); }.gallery-layout.has-notes .masonry { columns:2; }
@media (max-width:760px) { .site-header { min-height:70px; padding:10px 1.35rem; }.site-name { font-size:1.3rem; }.menu-toggle { width:42px; height:42px; padding:10px; border:1px solid var(--line); display:grid; place-content:center; gap:5px; background:transparent; cursor:pointer; }.menu-toggle span:not(.sr-only) { display:block; width:20px; height:2px; background:var(--ink); transition:transform .2s ease; }.menu-toggle[aria-expanded='true'] span:nth-child(2) { transform:translateY(3.5px) rotate(45deg); }.menu-toggle[aria-expanded='true'] span:nth-child(3) { transform:translateY(-3.5px) rotate(-45deg); }nav { margin-left:0; position:absolute; top:100%; left:0; right:0; padding:1.2rem 1.35rem 1.5rem; display:none; flex-direction:column; align-items:flex-start; gap:1rem; border-bottom:1px solid var(--line); background:var(--paper); }nav.open { display:flex; }.intro { grid-template-columns:1fr; gap:2.7rem; padding-top:3.5rem; }.intro-photo-wrap { max-width:310px; margin-left:auto; margin-right:auto; }.intro-copy h1 { text-align:center; }.contact-grid { grid-template-columns:1fr; gap:1rem; }.research-grid,.teaching-grid,.gallery-layout { grid-template-columns:1fr; }.research-grid,.teaching-grid,.single-listing { margin-top:3rem; }.teaching { min-height:calc(100dvh - 70px); }.section-intro { font-size:1.3rem; }.publication-list li { grid-template-columns:1fr; gap:.15rem; }.publication-list li > span:last-child { grid-column:auto; }.leisure-copy { margin:2.4rem 0 3rem; }.gallery-detail { position:static; order:-1; }.masonry { columns:2; }.detail-copy { padding:1.35rem; }footer { flex-direction:column; } }
@media (max-width:390px) { h1 { font-size:2.6rem; }.masonry { columns:1; } }
@media (max-width:760px) { .gallery-detail { position:relative; top:auto; } }
@media (max-width:760px) { .gallery-layout,.gallery-layout.has-notes { display:grid; grid-template-columns:1fr; }.masonry,.gallery-layout.has-notes .masonry { columns:2; } }
@media (max-width:760px) { .gallery-detail { max-height:none; overflow:visible; }.gallery-detail img { max-height:70vh; } }
@media (max-width:760px) { .site-controls { margin-top:.35rem; } }
@media (min-width:761px) { nav { margin-left:auto; } }
@media (min-width:761px) and (max-width:1080px) { .site-header { padding-left:1.5rem; padding-right:1.5rem; gap:1rem; }nav { gap:.65rem; }nav a { font-size:.75rem; } }
