@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Libre+Caslon+Display&display=swap');
:root{--bg:#f0eee7;--paper:#f8f6ef;--ink:#181816;--muted:#6e6b63;--line:#c9c5ba;--green:#173d32;--green2:#244f42;--max:1460px;--serif:"Libre Caslon Display",Georgia,serif;--sans:"DM Sans",Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.6}a{color:inherit;text-decoration:none}button{font:inherit}strong{font-weight:600}::selection{background:var(--green);color:#fff}.wrap{width:min(calc(100% - 48px),var(--max));margin:auto}
.header{height:86px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.logo{font:400 1.35rem var(--serif);white-space:nowrap}.nav{display:flex;gap:26px;align-items:center;font-size:.86rem}.nav a{position:relative;padding:7px 0}.nav a:after{content:"";position:absolute;left:0;bottom:2px;width:0;height:1px;background:currentColor;transition:.25s}.nav a:hover:after,.nav a.active:after{width:100%}.nav .pill{border:1px solid var(--ink);border-radius:999px;padding:9px 14px}.nav .pill:after{display:none}.nav .pill:hover{background:var(--ink);color:var(--bg)}.menu{display:none;background:none;border:0;padding:10px 0;cursor:pointer}.menu span{display:block;width:27px;height:1px;background:var(--ink);margin:6px 0}.mobile-nav{display:none}
.kicker,.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:.71rem;color:var(--muted)}.section{padding:92px 0 110px;border-bottom:1px solid var(--line)}.section-head{display:grid;grid-template-columns:190px 1fr;gap:30px;margin-bottom:64px}.section h2,.page-hero h1{font:400 clamp(3rem,5.8vw,6.2rem)/.96 var(--serif);letter-spacing:-.043em;margin:0}.lead{font-size:clamp(1.05rem,1.4vw,1.3rem);max-width:760px}.reveal{opacity:0;transform:translateY(18px);transition:.7s ease}.reveal.visible{opacity:1;transform:none}
/* HOME */
.home-intro{max-width:1120px;padding:105px 0 90px}.home-intro .status,.availability{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:8px 13px;font-size:.74rem;letter-spacing:.04em;color:var(--green);margin-bottom:28px;background:rgba(255,255,255,.18)}.home-intro h1{font:400 clamp(4.4rem,8.7vw,8.8rem)/.86 var(--serif);letter-spacing:-.055em;margin:0 0 22px}.home-intro h2{font:500 clamp(1rem,1.55vw,1.35rem)/1.45 var(--sans);letter-spacing:0;margin:0 0 38px;color:var(--green)}.home-intro h2 span{color:var(--muted);padding:0 7px}.home-intro p{max-width:800px;font-size:1.05rem;color:#4e4b45;margin:0 0 16px}.button-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--ink);padding:11px 16px;border-radius:999px;font-size:.84rem;transition:.2s}.button:hover,.button.primary{background:var(--ink);color:var(--bg)}.button.primary:hover{background:var(--green)}.home-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line);margin-bottom:90px}.home-card{min-height:280px;padding:28px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;transition:.2s}.home-card:hover{background:#e6e2d7}.home-card small{color:var(--muted)}.home-card h3{font:400 2rem/1.05 var(--serif);margin:55px 0 14px}.home-card p{color:var(--muted);margin:0 0 30px}.home-card span{margin-top:auto;font-size:.82rem}
/* PAGE HERO */
.page-hero{padding:96px 0 84px;border-bottom:1px solid var(--line)}.page-hero .intro{max-width:860px;font-size:1.1rem;color:var(--muted);margin:28px 0 0}.page-hero .availability{margin-top:30px;margin-bottom:0}
/* WORK */
.experience-stack{border-top:1px solid var(--line)}.experience-card{display:grid;grid-template-columns:210px 1fr;gap:55px;padding:52px 0;border-bottom:1px solid var(--line)}.experience-side{display:flex;flex-direction:column;gap:8px;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.experience-side strong{font:400 1.4rem/1.1 var(--serif);text-transform:none;letter-spacing:0;color:var(--ink)}.experience-card h2{font:400 clamp(2.2rem,3.8vw,4rem)/1 var(--serif);margin:0 0 8px;letter-spacing:-.03em}.experience-card .org{font-size:.85rem;color:var(--green);margin-bottom:24px}.experience-card p{max-width:900px;color:#55524c}.detail-list{columns:2;column-gap:40px;padding-left:18px;margin:26px 0}.detail-list li{break-inside:avoid;margin:0 0 10px;color:#55524c}.tag-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:25px}.tag-row span{font-size:.7rem;border:1px solid var(--line);border-radius:999px;padding:6px 10px;color:var(--muted)}
/* ABOUT / SKILLS */
.split{display:grid;grid-template-columns:1fr 1fr;gap:9vw}.big-copy{font:400 clamp(2.3rem,4.1vw,4.5rem)/1.04 var(--serif);letter-spacing:-.035em;margin:0}.copy p{color:#55524c;font-size:1.02rem}.fact{border-top:1px solid var(--line);padding:18px 0}.fact b{font:400 1.5rem var(--serif);display:block}.fact span{font-size:.85rem;color:var(--muted)}.skills{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.skill{min-height:180px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px;display:flex;flex-direction:column;justify-content:space-between;transition:.2s}.skill:hover{background:#e7e3d8}.skill small{color:var(--muted);font-size:.72rem}.skill strong{font:400 1.75rem/1.08 var(--serif)}.skill-groups{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.skill-group{padding:32px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.skill-group>span{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.skill-group h3{font:400 2rem/1.05 var(--serif);margin:35px 0 20px}.skill-group ul{margin:0;padding-left:18px;color:#55524c}.skill-group li{margin:5px 0}
/* CV */
.project-detail{margin-top:65px;border-top:1px solid var(--line);padding-top:38px;max-width:1100px}.project-detail h3{font:400 clamp(2.2rem,4vw,4rem)/1 var(--serif);margin:0 0 22px}.project-detail p{color:#55524c}.two-col-list{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin:28px 0}.two-col-list ul{padding-left:18px;color:#55524c}.two-col-list li{margin-bottom:9px}.timeline{border-top:1px solid var(--line)}.timeline-row{display:grid;grid-template-columns:170px 1fr 220px;gap:35px;padding:30px 0;border-bottom:1px solid var(--line)}.timeline-row h3{font:400 clamp(1.8rem,2.8vw,3rem)/1.05 var(--serif);margin:0 0 10px}.timeline-row p{margin:0;color:var(--muted);max-width:800px}.date,.side{font-size:.78rem;color:var(--muted)}.side{text-align:right}
/* CONTACT */
.contact-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:9vw}.contact-main{align-self:start}.email{font:400 clamp(1.6rem,3vw,3rem) var(--serif);display:block;width:fit-content;border-bottom:1px solid var(--ink);margin:18px 0 24px}.contact-main p{max-width:650px;color:var(--muted)}.contact-facts{border-top:1px solid var(--line)}.contact-fact{padding:22px 0;border-bottom:1px solid var(--line)}.contact-fact>span{display:block;text-transform:uppercase;letter-spacing:.1em;font-size:.68rem;color:var(--muted);margin-bottom:8px}.contact-fact strong{font:400 1.45rem var(--serif)}.contact-fact p{color:var(--muted);margin:8px 0 0}
/* PROJECT LIST / LEGACY PROJECT PAGES */
.project-list{border-top:1px solid var(--line)}.project-row{display:grid;grid-template-columns:62px 1fr 220px;gap:28px;padding:34px 0;border-bottom:1px solid var(--line);transition:.25s}.project-row:hover{padding-left:12px}.project-row h3{font:400 clamp(2rem,3vw,3.6rem)/1 var(--serif);letter-spacing:-.03em;margin:0 0 12px}.project-row p{margin:0;color:var(--muted);max-width:780px}.meta{text-align:right;color:var(--muted);font-size:.78rem;line-height:1.7}.num{font-size:.78rem;color:var(--muted);padding-top:7px}.project-hero{display:grid;grid-template-columns:1.1fr .9fr;gap:7vw;align-items:end;padding:95px 0;border-bottom:1px solid var(--line)}.project-hero h1{font:400 clamp(4rem,8vw,8rem)/.86 var(--serif);letter-spacing:-.05em;margin:18px 0 0}.project-summary{font-size:1.1rem;color:var(--muted)}.project-body{display:grid;grid-template-columns:220px 1fr;gap:60px;padding:90px 0}.sticky{position:sticky;top:30px;align-self:start}.sticky p{font-size:.8rem;color:var(--muted);margin:0 0 8px}.article{max-width:900px}.article h2{font:400 clamp(2.4rem,4vw,4.4rem)/1 var(--serif);letter-spacing:-.03em;margin:70px 0 24px}.article h2:first-child{margin-top:0}.article p,.article li{color:#55524c;font-size:1.02rem}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:35px 0}.stat{background:var(--paper);padding:24px;min-height:140px}.stat b{font:400 2.3rem var(--serif);display:block}.stat span{font-size:.72rem;color:var(--muted)}
/* GITHUB */
.github-profile{display:grid;grid-template-columns:.8fr 1.2fr;gap:8vw;align-items:start}.github-mark{aspect-ratio:1;background:var(--green);color:white;display:flex;align-items:end;padding:30px;font:400 clamp(4rem,8vw,8rem)/.8 var(--serif);letter-spacing:-.06em}.github-copy h2{font:400 clamp(2.8rem,5vw,5.2rem)/.96 var(--serif);letter-spacing:-.04em;margin:0 0 25px}.github-copy p{color:#55524c;max-width:760px}
footer{min-height:88px;display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:.76rem;color:var(--muted)}
@media(max-width:1000px){.nav{gap:18px}.home-grid{grid-template-columns:1fr}.home-card{min-height:220px}.skills{grid-template-columns:repeat(2,1fr)}.experience-card{grid-template-columns:160px 1fr}.contact-layout,.github-profile{grid-template-columns:1fr}.timeline-row{grid-template-columns:130px 1fr}.timeline-row .side{grid-column:2;text-align:left}}
@media(max-width:800px){.wrap{width:min(calc(100% - 28px),var(--max))}.header{height:72px}.nav{display:none}.menu{display:block}.mobile-nav{position:fixed;inset:0;background:var(--bg);z-index:90;padding:95px 28px 35px;transform:translateY(-105%);transition:.35s;display:flex;flex-direction:column}.mobile-nav.open{transform:none}.mobile-nav a{font:400 clamp(2.2rem,10vw,4rem) var(--serif);padding:10px 0;border-bottom:1px solid var(--line)}.home-intro{padding:70px 0}.home-intro h1{font-size:clamp(4rem,17vw,7rem)}.section,.page-hero{padding:70px 0}.section-head,.split,.project-hero,.project-body{grid-template-columns:1fr}.section-head{gap:16px}.experience-card{grid-template-columns:1fr;gap:22px}.experience-side{flex-direction:row;justify-content:space-between}.detail-list{columns:1}.skill-groups{grid-template-columns:1fr}.project-row{grid-template-columns:44px 1fr;gap:12px}.meta{grid-column:2;text-align:left}.sticky{position:static}.two-col-list{grid-template-columns:1fr}.timeline-row{grid-template-columns:1fr;gap:8px}.timeline-row .side{grid-column:1}.stat-grid{grid-template-columns:1fr}.github-mark{max-width:420px}footer{flex-wrap:wrap;padding:22px 0}}
@media(max-width:520px){.skills{grid-template-columns:1fr}.button-row{flex-direction:column}.button{width:100%}.home-intro h2 span{display:none}.home-intro h2{max-width:330px}.email{font-size:1.45rem}.experience-side{display:block}.experience-side strong{margin-top:7px}.project-row{grid-template-columns:1fr}.project-row .num,.project-row .meta{grid-column:1}footer{flex-direction:column;align-items:flex-start}}
