@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#f7f7f3;--paper:#fff;--ink:#202b2b;--muted:#677473;--line:#d9dfd9;--accent:#286f69;--max:1220px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;line-height:1.55}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}img{display:block;max-width:100%}.shell{width:min(var(--max),calc(100% - 84px));margin-inline:auto}.site-header{border-bottom:1px solid var(--line);background:var(--bg)}.nav{min-height:88px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-family:Manrope,Arial,sans-serif;font-size:21px;font-weight:800;letter-spacing:-.065em}.brand-dot,.accent{color:var(--accent)}.nav nav{display:flex;gap:34px;align-items:center}.nav nav a{font-size:13px;font-weight:700;color:#5b6867}.nav nav a[aria-current]{color:var(--accent)}.nav nav a:hover{color:var(--ink)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:Manrope,Arial,sans-serif;letter-spacing:-.05em}h1{font-size:clamp(48px,6.4vw,90px);line-height:1.09;font-weight:700}h1 em{font-style:normal;color:var(--accent)}h2{font-size:clamp(24px,3vw,35px);line-height:1.2}h3{font-size:20px;line-height:1.3}.eyebrow{display:block;color:var(--accent);font-size:11px;letter-spacing:.16em;font-weight:800;text-transform:uppercase;margin-bottom:20px}.page-intro{padding-top:96px;padding-bottom:66px;max-width:var(--max)}.page-intro h1{max-width:990px;margin-bottom:24px}.page-intro>p{max-width:690px;font-size:19px;color:var(--muted)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;border-top:1px solid var(--line);padding-top:27px;margin-bottom:26px}.section-heading h2{margin:0}.section-heading span,.section-heading>a{font-size:12px;font-weight:700;color:var(--muted)}.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px}.work-card{background:var(--paper);border:1px solid #e5e8e4;overflow:hidden;min-width:0}.work-card.wide{grid-column:span 2;display:grid;grid-template-columns:1.14fr 1fr}.work-image{aspect-ratio:1.8;background:#e3e8e6;overflow:hidden}.work-card.wide .work-image{aspect-ratio:1.6;min-height:330px}.work-image img{height:100%;width:100%;object-fit:cover;object-position:center}.work-card.wide .work-image img{object-position:center top}.work-copy{padding:26px 28px 30px}.work-card.wide .work-copy{padding:40px;display:flex;flex-direction:column;justify-content:center}.work-copy h3{margin-bottom:10px}.work-copy p{font-size:14px;color:var(--muted);line-height:1.7;margin-bottom:16px}.work-links{display:flex;flex-wrap:wrap;gap:9px 16px}.work-links a{font-size:12px;font-weight:700;color:var(--accent);text-decoration:underline;text-decoration-color:#b6cfca;text-underline-offset:4px}.image-placeholder{height:100%;display:grid;place-items:center;letter-spacing:.2em;color:#728782;font-size:11px}.publications{padding-top:100px;padding-bottom:110px}.publications ol{list-style:none;margin:0;padding:0}.publications li{padding:19px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:22px;align-items:baseline}.publications li a{font-size:15px;font-weight:700;max-width:730px}.publications li span{font-size:12px;color:var(--muted);white-space:nowrap}.publications li a span{color:var(--accent)}.site-footer{border-top:1px solid var(--line)}.foot{display:flex;justify-content:space-between;gap:20px;padding:27px 0 36px;font-size:12px;color:var(--muted)}.home-hero{padding-top:85px;padding-bottom:95px;display:grid;grid-template-columns:1fr 1.03fr;gap:7%;align-items:center}.home-copy h1{margin:0 0 24px}.home-copy>p{max-width:500px;font-size:19px;color:var(--muted)}.hero-actions{display:flex;gap:26px;align-items:center;flex-wrap:wrap;margin-top:32px;font-size:13px;font-weight:700}.primary-link{display:inline-flex;align-items:center;gap:30px;background:var(--ink);color:white;padding:15px 20px;font-size:13px;font-weight:700}.primary-link:hover{background:var(--accent);color:white}.hero-image{position:relative;display:block;min-height:430px;background:#dfe6e4;overflow:hidden}.hero-image img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:left center}.hero-image span{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.78));color:white;padding:45px 22px 18px;font-size:11px;font-weight:700;letter-spacing:.03em}.home-work{padding-bottom:110px}.statement{border-top:1px solid var(--line);padding-top:55px;padding-bottom:95px}.statement p{font-family:Manrope,sans-serif;font-size:clamp(25px,4vw,48px);font-weight:600;letter-spacing:-.05em;line-height:1.3;max-width:950px}.about-intro{padding-bottom:55px}.about-layout{display:grid;grid-template-columns:1fr 2fr;gap:40px;padding-bottom:130px;border-top:1px solid var(--line);padding-top:40px}.prose{max-width:760px}.prose p{font-size:18px;line-height:1.8;color:#4d5b59;margin-bottom:26px}.text-link{color:var(--accent);font-weight:700}.resume-preview{padding-bottom:120px}.experience>div{display:grid;grid-template-columns:160px 1fr;gap:20px;padding:24px 0;border-bottom:1px solid var(--line)}.experience span{font-size:13px;color:var(--muted)}.experience h3{margin:0}.experience p{margin:4px 0;color:var(--muted)}.resume-note{margin-top:25px;color:var(--muted);font-size:13px}
@media(max-width:900px){.shell{width:calc(100% - 42px)}.home-hero{grid-template-columns:1fr;gap:34px;padding-top:65px}.hero-image{min-height:380px}.work-card.wide{grid-template-columns:1fr}.work-card.wide .work-image{min-height:0;aspect-ratio:1.8}.work-card.wide .work-copy{padding:26px 28px}.about-layout{grid-template-columns:1fr}.publications li{display:block}.publications li>span{display:block;margin-top:6px}}@media(max-width:580px){.nav{align-items:flex-start;flex-direction:column;justify-content:center;gap:9px;padding:18px 0}.nav nav{gap:20px;flex-wrap:wrap}.page-intro{padding-top:55px;padding-bottom:45px}.work-grid{grid-template-columns:1fr;gap:16px}.work-card.wide{grid-column:span 1}.work-copy{padding:23px}.home-hero{padding-top:55px;padding-bottom:60px}.hero-image{min-height:280px}.section-heading{align-items:start}.section-heading span{display:none}.publications{padding-top:65px;padding-bottom:65px}.foot{flex-direction:column}.experience>div{grid-template-columns:1fr;gap:6px}.home-work{padding-bottom:60px}}

/* Second direction: an understated technical / geographic personal site. */
:root{--bg:#faf9f6;--paper:#fff;--ink:#202624;--muted:#555e59;--line:#d5d8d2;--accent:#355f5a;--max:1160px}
body{font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;line-height:1.6}
h1,h2,h3,.brand,.statement p{font-family:Georgia,'Times New Roman',serif;letter-spacing:-.025em;font-weight:400}
h1{font-size:clamp(43px,5vw,68px);line-height:1.13}
h2{font-size:clamp(24px,2.5vw,32px)}h3{font-size:21px}
.brand{font-size:23px;letter-spacing:-.035em;font-weight:400}.brand-dot{display:none}
.nav{min-height:72px}.nav nav a{font-size:13px;font-weight:500;letter-spacing:0}
.home-hero{padding-top:72px;padding-bottom:82px;grid-template-columns:1fr 1fr;gap:5%}
.home-copy h1{margin-bottom:28px}.home-copy p{font-size:17px;line-height:1.72;color:var(--ink);max-width:530px}
.home-copy p:first-of-type{font-size:21px;color:var(--accent)}
.home-copy .plain-link{margin-top:25px;font-size:14px}.plain-link a{text-decoration:underline;text-underline-offset:5px}
.hero-image{min-height:390px}.hero-image span{font-size:12px;font-weight:400}
.page-intro{padding-top:76px;padding-bottom:52px}.page-intro h1{margin-bottom:18px}.page-intro>p{font-size:17px;line-height:1.75;max-width:780px}
.section-heading{margin-bottom:22px}.section-heading h2{font-size:27px}
.work-grid{gap:22px}.work-card{border:1px solid var(--line);background:transparent}
.work-copy{padding:23px 24px 26px}.work-card.wide .work-copy{padding:32px}
.work-copy p{font-size:14px;color:#4c5652;line-height:1.65}
.work-links a{font-size:12px;font-weight:500;text-decoration-thickness:1px}
.publications{padding-top:82px}.publications li{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(220px,1fr);align-items:start;gap:26px}.publications li a{font-size:15px;font-weight:500}.publications li span{font-size:12px;white-space:normal}
.about-layout{padding-bottom:90px}.prose p{font-size:17px;line-height:1.8}
@media(max-width:900px){.publications li{grid-template-columns:1fr;gap:4px}}
@media(max-width:580px){.home-hero{padding-top:55px}.hero-image{min-height:260px}.work-card.wide .work-copy{padding:23px}}

/* V3: sans-serif typography and varied card rhythm */
h1,h2,h3,.brand,.statement p{font-family:'DM Sans',Arial,Helvetica,sans-serif;letter-spacing:-.035em}
.brand{font-weight:700;font-size:20px}h1,h2{font-weight:600}h3{font-size:19px;font-weight:650}.statement p{font-weight:500}
.work-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:22px}
.work-card{grid-column:span 6}
.work-card.feature-split{grid-column:span 12;display:grid;grid-template-columns:1.35fr 1fr}
.work-card.feature-split .work-image{aspect-ratio:auto;min-height:350px}
.work-card.feature-split .work-copy{padding:36px;display:flex;flex-direction:column;justify-content:center}
.work-card.feature-stack{grid-column:span 12;display:block}
.work-card.feature-stack .work-image{aspect-ratio:2.5;min-height:0}
.work-card.feature-stack .work-copy{padding:24px 28px 28px;display:block}
.work-card.feature-stack .work-copy p{max-width:800px}
@media(max-width:900px){.work-card.feature-split{grid-template-columns:1fr}.work-card.feature-split .work-image,.work-card.feature-stack .work-image{min-height:0;aspect-ratio:1.8}}
@media(max-width:650px){.work-grid{grid-template-columns:1fr}.work-card,.work-card.feature-split,.work-card.feature-stack{grid-column:span 1}.work-card.feature-split .work-copy,.work-card.feature-stack .work-copy{padding:23px}}

/* V4: compact, varied, deliberately editorial rather than uniformly oversized. */
.work-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-bottom:25px}
.work-grid>.work-card{grid-column:span 4;min-width:0}
.work-grid>.work-card.feature-lead{grid-column:span 6}
.work-grid>.work-card.feature-lead:first-child{grid-column:span 6}
.work-grid>.work-card.feature-ems{grid-column:span 6;background:#eaf0eb;border-color:#a9bdb4}
.work-card .work-image{aspect-ratio:1.8;min-height:0}
.work-card .work-image img{width:100%;height:100%;object-fit:cover}
.work-card .work-copy{padding:17px 18px 18px}
.work-card .work-copy h3{font-size:17px;line-height:1.25;margin-top:0}
.work-card .work-copy p{font-size:13px;line-height:1.5;margin:9px 0}
.work-card .work-links{font-size:12px;line-height:1.5}
.work-card.feature-lead .work-image{aspect-ratio:2.15}
.work-card.feature-lead .work-copy{padding:20px 22px}
.work-card.feature-ems .work-image{aspect-ratio:2.15;max-height:115px}
.work-card.feature-ems .image-placeholder{font-size:12px;letter-spacing:.12em}
.work-card.compact-card .work-image{aspect-ratio:2.1}
.work-card.compact-card .image-placeholder{font-size:11px}
.project-index{border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 30px;margin:28px 0 55px}
.index-item{padding:16px 0;border-bottom:1px solid var(--line)}
.index-item h3{font-size:15px;line-height:1.3;margin:0 0 5px;font-weight:650}
.index-item p{font-size:13px;line-height:1.5;color:var(--muted);margin:0 0 6px}
.index-item .work-links{font-size:12px}
@media(max-width:900px){.work-grid>.work-card{grid-column:span 6}.work-grid>.work-card.feature-lead,.work-grid>.work-card.feature-ems{grid-column:span 6}}
@media(max-width:620px){.work-grid>.work-card,.work-grid>.work-card.feature-lead,.work-grid>.work-card.feature-ems{grid-column:span 12}.project-index{grid-template-columns:1fr}}

/* V5: selective visual emphasis, with compact supporting projects. */
.work-grid>.work-card{grid-column:span 4}
.work-grid>.work-card.feature-lead{grid-column:span 6}
.work-grid>.work-card.feature-ems{background:var(--paper);border-color:var(--line)}
.work-grid>.work-card.feature-ems .work-image{aspect-ratio:1.9;max-height:none}
.work-grid>.work-card.feature-ems .work-image img{object-position:center top}
.work-grid>.work-card.feature-utility{grid-column:span 6}
.work-grid>.work-card.feature-utility .work-image{aspect-ratio:2.15}
.work-card .work-copy{padding:15px 17px 16px}
.work-card.feature-lead .work-copy{padding:17px 19px}
.work-grid{gap:14px;margin-top:8px}
.project-index{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:25px;border-top:0}
.index-item{border:1px solid var(--line);background:rgba(255,255,255,.45);padding:15px 16px;min-width:0}
.index-item h3{font-size:14px}
.index-item p{font-size:12px}
@media(max-width:900px){.project-index{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.project-index{grid-template-columns:1fr}.work-grid>.work-card.feature-utility{grid-column:span 12}}

/* V6: spare home/about; keep Works gallery unchanged */
.home-about{max-width:860px;padding-top:clamp(68px,10vw,135px);padding-bottom:clamp(100px,15vw,210px)}
.home-about h1{font-size:clamp(44px,6vw,76px);margin-bottom:22px}
.home-about .home-lede{font-size:clamp(20px,2.5vw,29px);line-height:1.45;color:var(--ink);max-width:760px;margin-bottom:48px}
.home-about p:not(.home-lede){max-width:720px;font-size:17px;line-height:1.85;color:#4d5b59;margin-bottom:24px}
@media(max-width:580px){.home-about{padding-top:70px;padding-bottom:95px}}

/* Consolidated EMS project: one prominent card with compact supporting visuals */
.work-grid>.work-card.ems-combined{grid-column:span 6}
.ems-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:9px 9px 0}
.ems-tile{margin:0;min-width:0;background:#edf1ef;overflow:hidden}
.ems-tile.ems-primary{grid-column:span 2}
.ems-tile img{width:100%;height:96px;display:block;object-fit:cover;object-position:center top}
.ems-tile.ems-primary img{height:185px}
.ems-tile figcaption{padding:7px 9px;font-size:12px;font-weight:600;color:#465450}
.ems-tile-placeholder{height:96px;display:flex;align-items:center;justify-content:center;font-size:13px;color:#4d625c;text-align:center;padding:8px}
@media(max-width:900px){.work-grid>.work-card.ems-combined{grid-column:span 6}}
@media(max-width:620px){.work-grid>.work-card.ems-combined{grid-column:span 12}}

/* Discreet authorship context for portfolio review */
.project-role{display:inline-block;margin:5px 0 9px;color:#687672;font-size:10px;font-weight:650;letter-spacing:.095em;text-transform:uppercase;line-height:1.5}
.work-copy h3 + .project-role + p,.index-item h3 + .project-role + p{margin-top:0}
.index-item .project-role{font-size:9px;margin:4px 0 7px}

/* V17: original photographic hero and refreshed sans-serif typography */
@import url('https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;500;600;700&family=Outfit:wght@400;500;600;700&display=swap');
body{font-family:'Source Sans 3',Arial,sans-serif;font-size:16px}
h1,h2,h3,.brand,.statement p{font-family:'Outfit','Source Sans 3',Arial,sans-serif;letter-spacing:-.025em}
.brand{font-size:21px;font-weight:600;letter-spacing:-.025em}
.nav nav a{font-family:'Outfit',sans-serif;font-weight:500}
.home-photo-hero{width:100%;height:clamp(290px,40vw,540px);background:#252525 url('../images/home-forest-hero.jpg') center 45%/cover no-repeat}
.home-about{padding-top:clamp(48px,7vw,90px);padding-bottom:clamp(85px,11vw,155px)}
.home-about .home-lede{font-family:'Outfit',sans-serif;font-weight:400;letter-spacing:-.015em}
@media(max-width:580px){.home-photo-hero{height:270px;background-position:center center}}

/* V18: one-line photographic hero statement, restrained and legible */
.home-photo-hero{position:relative;display:flex;align-items:flex-end;isolation:isolate}
.home-photo-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(9,20,18,.76) 0%,rgba(9,20,18,.32) 42%,transparent 75%)}
.hero-overlay{padding-bottom:clamp(32px,5vw,68px)}
.hero-quote{max-width:770px;margin:0;color:#fff;font-family:'Outfit',Arial,sans-serif;font-size:clamp(25px,3.3vw,45px);font-weight:400;letter-spacing:-.025em;line-height:1.22;text-wrap:balance;text-shadow:0 1px 9px rgba(0,0,0,.28)}
.home-about{padding-top:clamp(48px,6vw,78px)}
@media(max-width:580px){.home-photo-hero{height:340px}.hero-overlay{padding-bottom:30px}.hero-quote{font-size:clamp(25px,7vw,34px)}}

/* Resume chronology and education */
.experience .resume-detail{font-size:13px;line-height:1.65;max-width:750px;margin-top:8px}.resume-education{padding-bottom:110px}.education-item{border-bottom:1px solid var(--line);padding:17px 0}.education-item h3{font-size:17px;margin:0}.education-item p{color:var(--muted);font-size:14px;margin:5px 0 0}.resume-education>p{margin-top:22px;font-size:14px}.resume-preview{padding-bottom:65px}

/* V24: warmer landscape and a quiet path to the portfolio */
.home-photo-hero{background-image:url('../images/home-sunlit-landscape.webp');background-position:center 50%}
.home-photo-hero::before{background:linear-gradient(0deg,rgba(9,20,18,.80) 0%,rgba(9,20,18,.42) 45%,rgba(9,20,18,.08) 100%)}
.home-about .about-work-link{margin-top:35px}
.about-work-link a{color:var(--ink);text-decoration:underline;text-decoration-color:#75958b;text-underline-offset:5px;text-decoration-thickness:1px}
.about-work-link a:hover{text-decoration-color:currentColor}

/* V25: user-provided oak woodland photograph */
.home-photo-hero{background-image:url('../images/home-oak-woodland.webp');background-position:center 49%}
.home-photo-hero::before{background:linear-gradient(0deg,rgba(7,18,12,.84) 0%,rgba(7,18,12,.42) 49%,rgba(7,18,12,.03) 100%)}

/* V26: Upper Bidwell Park photograph */
.home-photo-hero{background-image:url('../images/home-bidwell-park-sunset.webp');background-position:center 53%}
.home-photo-hero::before{background:linear-gradient(0deg,rgba(8,22,18,.79) 0%,rgba(8,22,18,.30) 42%,rgba(8,22,18,0) 78%)}

/* Resume business link */
.experience section > p:not(.resume-detail) a{color:inherit;text-decoration:underline;text-decoration-color:#8ba99f;text-underline-offset:3px}
.experience section > p:not(.resume-detail) a:hover{text-decoration-color:currentColor}

/* V30: clarify internal Kinneloa screenshot */
.feature-utility .work-image-caption{font-size:.78rem;color:#66736c;margin:.35rem 0 .8rem;line-height:1.4}
