/* Layout: a single map-sheet column; left margin carries section labels like a map legend, a contour field sits behind the header. */
:root{
  --bg:#f6f8f7; --surface:#ffffff; --fg:#17201f; --muted:#5b6866; --line:#d9e0de;
  --accent:#1d5c7a; --sediment:#a3742f; --erode:#c0603a; --water:#d6e6ee; --good:#2e7d32; --contour:#1d5c7a;
  --display:"Instrument Serif", Georgia, "Times New Roman", serif;
  --body:"Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono:"JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0f1515; --surface:#151d1d; --fg:#e4ebe9; --muted:#93a29f; --line:#26312f;
  --accent:#7cb8d6; --sediment:#d3a35e; --erode:#e08a63; --water:#173040; --good:#7cc684; --contour:#7cb8d6; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0f1515; --surface:#151d1d; --fg:#e4ebe9; --muted:#93a29f; --line:#26312f;
  --accent:#7cb8d6; --sediment:#d3a35e; --erode:#e08a63; --water:#173040; --good:#7cc684; --contour:#7cb8d6; color-scheme:dark}

*{box-sizing:border-box}
body{background:var(--bg);color:var(--fg);font:400 1.0625rem/1.65 var(--body);-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}
a.plain{color:inherit;text-decoration:none}
a.plain:hover{color:var(--accent);text-decoration:underline}
a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.wrap{max-width:1040px;margin:0 auto;padding-left:max(16px, env(safe-area-inset-left, 0px));padding-right:max(16px, env(safe-area-inset-right, 0px))}

header{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
#contours{position:absolute;inset:0;width:100%;height:100%;opacity:.55;pointer-events:none}
.hero{position:relative;padding-block:28px 64px}
nav{display:flex;flex-wrap:wrap;gap:6px 22px;justify-content:space-between;align-items:baseline;font:500 .8125rem/1.4 var(--mono);color:var(--muted);margin-bottom:72px}
nav ul{display:flex;flex-wrap:wrap;gap:6px 20px;list-style:none;margin:0;padding:0}
nav a{color:var(--muted);text-decoration:none}
nav a:hover{color:var(--accent)}
h1{font:400 clamp(2.75rem,8vw,5.5rem)/1 var(--display);letter-spacing:-.01em;margin:0 0 20px;text-wrap:balance}
h1 em{color:var(--accent)}
.lede{font-size:clamp(1.125rem,2.2vw,1.3rem);max-width:40ch;margin:0 0 28px}
.meta{display:flex;flex-wrap:wrap;gap:10px 28px;font:400 .875rem/1.4 var(--mono);color:var(--muted)}
.meta b{color:var(--fg);font-weight:500}

section{display:grid;grid-template-columns:180px minmax(0,1fr);gap:24px 48px;padding-block:56px;border-bottom:1px solid var(--line)}
section:last-of-type{border-bottom:0}
.label{font:500 .75rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding-top:6px}
.label span{display:block;color:var(--sediment);margin-bottom:4px;letter-spacing:.04em}
h2{font:400 clamp(1.75rem,3.5vw,2.25rem)/1.15 var(--display);margin:0 0 20px;text-wrap:balance}
h3{font:600 1.0625rem/1.4 var(--body);margin:0}
p{margin:0 0 14px;max-width:66ch}
.content{min-width:0}
.muted{color:var(--muted)}

.interests{list-style:none;margin:8px 0 0;padding:0;border-top:1px solid var(--line)}
.interests li{padding:16px 0;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:baseline}
.interests li::before{content:"";flex:none;width:8px;height:8px;border:1.5px solid var(--accent);border-radius:50%;transform:translateY(-2px)}
.interests span{display:block;color:var(--muted);font-size:.975rem;max-width:62ch}

.role{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;align-items:baseline;margin-bottom:6px}
.when{font:400 .8125rem/1.4 var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.org{color:var(--muted);margin:0 0 18px}
.projects{list-style:none;padding:0;margin:24px 0 0;border-top:1px solid var(--line)}
.projects li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 20px;padding:18px 0;border-bottom:1px solid var(--line)}
.projects li.group{display:block;font:500 .72rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--accent);padding:22px 0 4px;border-bottom:0}
.projects p{grid-column:1/-1;margin:2px 0 0;color:var(--muted);font-size:.975rem}
.client{font:400 .75rem/1.5 var(--mono);color:var(--sediment);text-align:right;max-width:22ch}

.entry{padding-block:16px;border-top:1px solid var(--line)}
.entry:first-of-type{border-top:0;padding-top:0}
.kind{font:500 .72rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--sediment);margin-bottom:6px}
.entry h3{font:400 1.375rem/1.3 var(--display)}
.entry ul{margin:10px 0 0;padding-left:1.1em;color:var(--muted);font-size:.975rem;max-width:66ch}
.entry ul li{margin-bottom:4px}
.pill{display:inline-block;font:500 .72rem/1 var(--mono);padding:5px 8px;border:1px solid var(--accent);color:var(--accent);border-radius:999px;vertical-align:middle;margin-left:6px;letter-spacing:.03em}

/* Featured study */
.feature{margin:8px 0 32px;padding:24px;background:var(--surface);border:1px solid var(--line);border-radius:6px}
.feature .top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start;margin-bottom:28px}
figure{margin:0}
figure img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:3px;background:#fff}
figcaption{font:400 .75rem/1.5 var(--mono);color:var(--muted);margin-top:8px}
.tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.tabs button{font:500 .8125rem var(--mono);color:var(--accent);background:transparent;border:1px solid var(--accent);border-radius:999px;padding:8px 14px;cursor:pointer}
.tabs button[aria-selected="true"],.tabs button:hover{background:var(--accent);color:var(--bg)}
.cymap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}
.cymap figure{max-width:420px}
.stat{font:400 3.25rem/1 var(--display);color:var(--erode);font-variant-numeric:tabular-nums}
.statlabel{font:400 .8rem/1.4 var(--mono);color:var(--muted);margin:6px 0 16px}
.bars{list-style:none;padding:0;margin:20px 0 0;display:grid;gap:10px}
.bars li{display:grid;grid-template-columns:64px minmax(0,1fr) 54px;gap:10px;align-items:center;font:400 .8rem var(--mono);color:var(--muted);font-variant-numeric:tabular-nums}
.bars .track{height:10px;background:var(--line);border-radius:2px;overflow:hidden}
.bars .fill{height:100%;background:var(--erode);opacity:.45;transition:opacity .2s}
.bars li.on{color:var(--fg)}
.bars li.on .fill{opacity:1}
.areas{display:grid;gap:16px;margin:0;align-content:start}
.areas dt{font:500 .75rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px}
.areas dd{margin:0;font-size:.95rem;color:var(--muted)}
.min0{min-width:0}
.tablewrap{overflow-x:auto}
table.gz{border-collapse:collapse;width:100%;font-size:.92rem;font-variant-numeric:tabular-nums}
table.gz th{font:500 .7rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);text-align:left;padding:0 10px 8px 0;border-bottom:1px solid var(--line)}
table.gz td{padding:9px 10px 9px 0;border-bottom:1px solid var(--line)}
table.gz td:nth-child(2),table.gz td:nth-child(4),table.gz th:nth-child(2),table.gz th:nth-child(4){text-align:right}
.method{margin-top:32px;padding-top:24px;border-top:1px solid var(--line)}
.toggle{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.toggle button{font:500 .8125rem var(--mono);color:var(--accent);background:transparent;border:1px solid var(--accent);border-radius:999px;padding:8px 14px;cursor:pointer}
.toggle button[aria-pressed="true"],.toggle button:hover{background:var(--accent);color:var(--bg)}
.shore{width:100%;max-width:640px;height:auto;display:block;border:1px solid var(--line);border-radius:3px}
.shore .fade{transition:opacity .6s ease}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font:400 .72rem/1.4 var(--mono);color:var(--muted);margin-top:10px}
.legend i{display:inline-block;width:14px;height:0;border-top:2px solid;vertical-align:middle;margin-right:6px}
.steps{list-style:none;counter-reset:s;padding:0;margin:16px 0 0;max-width:640px}
.steps li{counter-increment:s;display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px;padding:8px 0;border-top:1px dashed var(--line);font-size:.92rem}
.steps li::before{content:counter(s);font:500 .75rem/1.9 var(--mono);color:var(--accent)}

.talks{list-style:none;padding:0;margin:8px 0 0}
.talks li{padding:12px 0;border-top:1px solid var(--line)}
.talks .t{font-weight:500}
.talks .v{color:var(--muted);font-size:.95rem}
.sub{font:500 .75rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:40px 0 4px}

.timeline{list-style:none;padding:0;margin:0}
.timeline li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:16px;padding:14px 0;border-top:1px solid var(--line)}
.timeline .yr{font:500 .9rem/1.5 var(--mono);color:var(--accent);font-variant-numeric:tabular-nums}
.timeline .place{font-weight:500}
.timeline .what{color:var(--muted);font-size:.95rem}

.cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
.edu{display:grid;gap:18px}
.gpa{font:500 1.75rem/1 var(--display);color:var(--accent)}
.gpa small{font:400 .8rem var(--mono);color:var(--muted);margin-left:4px}
.skills{display:grid;gap:18px;margin:0}
.skills dt{font:500 .75rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:6px}
.skills dd{margin:0;display:flex;flex-wrap:wrap;gap:6px}
.tag{font-size:.9rem;padding:4px 10px;background:var(--surface);border:1px solid var(--line);border-radius:4px}
.awards{list-style:none;padding:0;margin:0}
.awards li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;padding:12px 0;border-top:1px solid var(--line)}
.awards .by{grid-column:1/-1;color:var(--muted);font-size:.925rem}

.contact{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin-top:8px}
.email{font:500 clamp(1rem,2.6vw,1.375rem)/1.3 var(--mono);color:var(--fg);user-select:all;word-break:break-all}
#copy{font:500 .8125rem var(--mono);color:var(--accent);background:transparent;border:1px solid var(--accent);border-radius:999px;padding:8px 14px;cursor:pointer}
#copy:hover{background:var(--accent);color:var(--bg)}
footer{padding-block:32px 48px;font:400 .8125rem var(--mono);color:var(--muted);border-top:1px solid var(--line)}

@media (max-width:760px){
  section{grid-template-columns:minmax(0,1fr);gap:12px;padding-block:44px}
  .cols,.feature .top,.cymap{grid-template-columns:minmax(0,1fr)}
  nav{margin-bottom:48px}
  .client{text-align:left}
  .projects li{grid-template-columns:minmax(0,1fr)}
  .feature{padding:16px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
/* multi-page additions */
.hero-sm{padding-block:28px 48px}
.hero-sm nav{margin-bottom:56px}
.pagetitle{font:400 clamp(2.4rem,6vw,4rem)/1.02 var(--display);letter-spacing:-.01em;margin:0 0 16px;text-wrap:balance}
nav a[aria-current="page"]{color:var(--fg);text-decoration:underline;text-underline-offset:5px}
nav .home{color:var(--fg);text-decoration:none;font-weight:500}
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:6px;overflow:hidden;color:inherit;text-decoration:none;transition:border-color .2s}
.card:hover{border-color:var(--accent)}
.card img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;object-position:center 40%;background:#fff;border-bottom:1px solid var(--line)}
.card .body{padding:16px 18px 20px;display:flex;flex-direction:column;gap:6px}
.card h3{font:400 1.4rem/1.2 var(--display)}
.card p{margin:0;color:var(--muted);font-size:.95rem}
.card .go{font:500 .78rem var(--mono);color:var(--accent);margin-top:6px}
.next{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding-block:32px;border-top:1px solid var(--line);font:500 .875rem var(--mono)}
.next a{text-decoration:none}
@media (max-width:760px){.cards{grid-template-columns:minmax(0,1fr)}}

.hobbies{list-style:none;padding:0;margin:8px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 32px;border-top:1px solid var(--line)}
.hobbies li{padding:16px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:2px}
.hobbies b{font:400 1.35rem/1.25 var(--display)}
.hobbies span{color:var(--muted);font-size:.95rem}
@media (max-width:560px){.hobbies{grid-template-columns:minmax(0,1fr)}}

.card.wide{grid-column:1/-1;flex-direction:row}
.card.wide img{width:46%;aspect-ratio:4/3;border-bottom:0;border-right:1px solid var(--line)}
.card.wide .body{justify-content:center;padding:20px 24px}
@media (max-width:760px){.card.wide{flex-direction:column}.card.wide img{width:100%;border-right:0;border-bottom:1px solid var(--line)}}
.bars li{grid-template-columns:104px minmax(0,1fr) 54px}

/* intro photo */
.intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,300px);gap:32px 56px;align-items:center}
.intro-text{min-width:0}
.portrait{margin:0;position:relative}
.portrait img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;border-radius:4px;border:1px solid var(--line);box-shadow:10px 10px 0 -1px var(--surface),10px 10px 0 0 var(--line)}
@media (max-width:760px){
  .intro{grid-template-columns:minmax(0,1fr)}
  .portrait{order:-1;max-width:220px}
}

.intro h1{font-size:clamp(1.75rem,4.4vw,3.5rem);line-height:1.05;white-space:nowrap}

/* fieldwork gallery */
.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}
.gallery figure{margin:0;min-width:0}
.gallery img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:3px;border:1px solid var(--line);background:var(--surface)}
.gallery figcaption{font:400 .72rem/1.45 var(--mono);color:var(--muted);margin-top:6px}
@media (max-width:760px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
.gallery figure.wide{grid-column:1/-1}
.gallery figure.wide img{aspect-ratio:21/8;object-position:center 42%}
.gallery figure.span2{grid-column:span 2}
.gallery figure.span2{display:flex;flex-direction:column}
.gallery figure.span2 img{flex:1 1 auto;height:0;min-height:0;aspect-ratio:auto;object-fit:cover}
@media (max-width:760px){.gallery figure.span2 img{flex:none;height:auto;aspect-ratio:8/3}}
.gallery figure.top img{object-position:center 25%}
.gallery{grid-auto-flow:row dense}
.credit{font:400 .72rem/1.5 var(--mono);color:var(--muted);margin:10px 0 0}
.gallery figure.pos55 img{object-position:center 55%}
