/* Shared palette and layout for the portfolio. No remote fonts required. */
:root { --paper:#faf9f5; --surface:#fff; --ink:#243b38; --muted:#596661; --accent:#245f53; --line:#d9e0d8; --wash:#edf2ec; }
body { background:var(--paper); color:var(--ink); font-family:system-ui,-apple-system,"Segoe UI",sans-serif; font-size:17px; line-height:1.7; }
body.quarto-dark { --paper:#172523; --surface:#20312e; --ink:#edf1e9; --muted:#bdccc4; --accent:#a6d6c4; --line:#415650; --wash:#253d35; }
a { color:var(--accent); text-underline-offset:4px; }
a:hover { color:var(--ink); }
a:focus-visible,button:focus-visible { outline:3px solid #b97b3c; outline-offset:5px; }
h1,h2,h3,h4 { color:var(--ink); }
h1,h2 { font-family:Georgia,"Times New Roman",serif; font-weight:400; letter-spacing:-.035em; }
h1 { font-size:clamp(2.3rem,4vw,3.8rem); line-height:1.12; }
h2 { font-size:2.15rem; border:0; margin-top:2.6rem; padding-bottom:0; }
h3 { font-size:1.15rem; line-height:1.4; font-weight:650; }
p { margin-bottom:1.15rem; }
.navbar { background:var(--paper)!important; border-bottom:1px solid var(--line); padding:1.05rem 1.5rem; }
.navbar-brand { font-family:Georgia,serif; font-size:1.22rem; color:var(--ink)!important; }
.navbar .nav-link,.navbar .quarto-navigation-tool { color:var(--ink)!important; font-size:.9rem; }
.navbar .nav-link.active { color:var(--accent)!important; text-decoration:underline; text-underline-offset:8px; }
.quarto-dark .navbar-toggler { filter:invert(1); }
#quarto-content { padding-top:1rem; }
main.content { padding-bottom:3rem; }
main.content.column-page { max-width:1180px; width:calc(100% - 2rem); margin-inline:auto; }
#title-block-header { margin:2.2rem 0 2.8rem; max-width:950px; }
#title-block-header .subtitle { color:var(--muted); font-size:1.2rem; margin-top:1rem; }
.hero { display:grid; grid-template-columns:minmax(0,1fr) 300px; align-items:center; gap:5rem; padding:3.1rem 0 3.7rem; }
.hero h1 { font-size:clamp(2.5rem,4.6vw,4.25rem); max-width:750px; margin:.8rem 0 1.5rem; }
.hero-copy p { max-width:680px; font-size:1.08rem; }
.eyebrow { color:var(--accent); font-size:.76rem; font-weight:750; letter-spacing:.14em; }
.hero-portrait img { width:100%; aspect-ratio:4/5; object-fit:cover; border-radius:120px 120px 8px 8px; padding:0; border:0; }
.hero-portrait .quarto-figure { margin:0; }
.hero-portrait p { margin:0; }
.portrait-note { display:block; font-family:Georgia,serif; text-align:center; font-style:italic; font-size:.92rem; color:var(--muted); margin-top:.8rem; }
.hero-note { display:block; font-size:.81rem; color:var(--muted); margin-top:1.1rem; }
.actions { display:flex; flex-wrap:wrap; gap:.6rem; margin:1.5rem 0; }
.actions p { display:contents; }
.btn { border-radius:4px; font-size:.91rem; font-weight:600; padding:.68rem 1.05rem; line-height:1.5; white-space:normal; }
.btn-primary { background:var(--accent); border-color:var(--accent); color:var(--paper); }
.btn-primary:hover { background:var(--ink); border-color:var(--ink); color:var(--paper); }
.btn-outline-primary { border-color:var(--accent); color:var(--accent); }
.btn-outline-primary:hover { background:var(--accent); color:var(--paper); }
.section-intro { border-top:1px solid var(--line); padding-top:.4rem; }
.section-intro h2 { margin-top:1.5rem; }
.section-intro p { color:var(--muted); }
.quarto-listing { padding-bottom:1rem; }
.quarto-grid-item { background:var(--surface); border:1px solid var(--line)!important; border-radius:9px; overflow:hidden; height:100%; box-shadow:0 4px 12px #122b2310; transition:transform .18s ease,box-shadow .18s ease; }
.quarto-grid-item:hover { transform:translateY(-4px); box-shadow:0 10px 26px #122b2320; }
.quarto-grid-item .thumbnail-image { object-fit:contain!important; background:#fff; padding:12px; width:100%; }
.quarto-grid-item .card-img-top { margin:0; }
.quarto-grid-item .card-body { padding:1.3rem 1.35rem 1.45rem; }
.quarto-grid-item .listing-title { font-family:Georgia,serif; font-size:1.5rem; font-weight:400; line-height:1.2; letter-spacing:-.025em; color:var(--ink); }
.quarto-grid-item .listing-description { color:var(--muted); font-size:.94rem; line-height:1.6; margin:.6rem 0; }
.quarto-grid-item .listing-categories { gap:.3rem; margin-top:.8rem; }
.quarto-grid-item .listing-category,.quarto-title .quarto-category { color:var(--accent)!important; border:0!important; background:var(--wash); border-radius:3px; font-size:.68rem; padding:.22rem .45rem; text-transform:none!important; }
.quarto-grid-item .listing-category { pointer-events:none; }
.text-link { font-weight:650; }
.focus-band { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2rem; padding:2.2rem; background:var(--wash); border-radius:8px; margin-top:3rem; }
.focus-band h3 { margin-top:0; }
.focus-band p { color:var(--muted); font-size:.94rem; margin-bottom:0; }
.closing-note { max-width:780px; margin-top:3rem; }
.back-link { font-size:.9rem; }
.project-summary { padding:1.5rem 1.7rem; background:var(--wash); border-left:3px solid var(--accent); margin:1.8rem 0; border-radius:0 6px 6px 0; }
.project-summary p:last-child { margin:0; font-size:.92rem; }
.quarto-figure img { background:#fff; border:1px solid var(--line); border-radius:6px; padding:1rem; max-height:650px; object-fit:contain; }
.quarto-figure { margin:2rem 0 1rem; }
figcaption { color:var(--muted)!important; font-size:.87rem!important; }
.secondary-work { max-width:820px; }
.secondary-work h3 { margin-top:2rem; }
.supporting-map { max-height:510px; object-fit:contain; }
.download-panel { background:var(--wash); padding:1.5rem 1.8rem; border-radius:8px; margin:2rem 0; }
.download-panel h2 { margin-top:0; }
.publication { border-bottom:1px solid var(--line); padding:1.55rem 0; }
.publication h3 { margin:.15rem 0 .5rem; font-family:Georgia,serif; font-weight:400; font-size:1.42rem; }
.publication p { margin:.35rem 0; }
.pub-year { color:var(--muted); font-size:inherit; font-weight:400; letter-spacing:normal; }
.pub-authors,.pub-venue { color:var(--muted); font-size:.9rem; }
.pub-venue { font-style:italic; }
.pub-summary { font-size:.95rem; }
.pub-status { color:var(--accent); font-weight:600; font-size:.9rem; }
.pub-links { display:flex; flex-wrap:wrap; gap:.55rem 1.3rem; margin-top:.6rem; font-size:.86rem; font-weight:650; }
.small-note { color:var(--muted); font-size:.8rem; }
.table-scroll { overflow-x:auto; max-width:100%; margin:1.5rem 0; }
.table-scroll table { min-width:640px; }
.table-scroll:focus-visible { outline:3px solid #b97b3c; outline-offset:3px; }
main.content { min-width:0; }
.nav-footer { border-top:1px solid var(--line); color:var(--muted); background:var(--paper); padding:1.5rem; font-size:.82rem; }
#TOC { font-size:.85rem; }
@media (max-width:991px) { .hero { grid-template-columns:minmax(0,1fr) 230px; gap:2rem; } .quarto-listing-cols-3 { grid-template-columns:repeat(2,minmax(0,1fr))!important; } }
@media (max-width:650px) { body { font-size:16px; } .navbar { padding:.8rem .6rem; } .navbar-brand { font-size:1.02rem; } .hero { grid-template-columns:1fr; padding:1.4rem 0 2rem; gap:1.5rem; } .hero-portrait { max-width:190px; } .hero h1 { font-size:2.65rem; } .hero-portrait img { aspect-ratio:1/1; } .quarto-listing-cols-3 { grid-template-columns:1fr!important; } .focus-band { grid-template-columns:1fr; padding:1.4rem; gap:1rem; } .project-summary,.download-panel { padding:1.15rem; } h1 { font-size:2.4rem; } h2 { font-size:1.85rem; } .quarto-figure img { padding:.3rem; } }
@media (prefers-reduced-motion:reduce) { .quarto-grid-item { transition:none; } .quarto-grid-item:hover { transform:none; } }
