:root{--paper:#f4f3ef;--ink:#111210;--muted:#70716d;--line:#d8d7d1;--acid:#d8ff44;--max:1440px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,system-ui,sans-serif;font-size:16px;line-height:1.5}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}.progress{position:fixed;z-index:20;top:0;left:0;width:100%;height:2px}.progress span{display:block;height:100%;width:0;background:var(--ink)}.topbar{height:78px;max-width:var(--max);margin:auto;padding:0 4vw;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line);position:relative;z-index:10}.wordmark{font-size:23px;font-weight:600;letter-spacing:-.08em}.wordmark span{color:#8b8d86}.topbar nav{display:flex;gap:30px;font-size:13px}.topbar nav a,.contact a{position:relative}.topbar nav a:after,.contact a:after{content:"";position:absolute;left:0;right:100%;bottom:-4px;height:1px;background:currentColor;transition:.3s}.topbar nav a:hover:after,.contact a:hover:after{right:0}.availability{justify-self:end;font-family:"DM Mono",monospace;font-size:11px;text-transform:uppercase}.availability i{display:inline-block;width:7px;height:7px;background:#61a62e;border-radius:50%;margin-right:8px}.menu,.mobile-nav{display:none}main{overflow:hidden}.hero{min-height:calc(100svh - 78px);max-width:var(--max);margin:auto;padding:9vh 4vw 3vh;display:flex;flex-direction:column}.eyebrow,.section-head>p,.contact>p{font-family:"DM Mono",monospace;text-transform:uppercase;letter-spacing:.08em;font-size:11px}.hero h1{font-size:clamp(48px,7.4vw,112px);line-height:.94;letter-spacing:-.065em;font-weight:500;margin:7vh 0}.hero h1 em{font-style:normal;color:#858680}.contact h2 em{font-style:normal;color:var(--acid)}.hero-bottom{display:flex;align-items:end;justify-content:space-between;margin-top:auto}.hero-bottom>p{max-width:570px;font-size:clamp(17px,1.5vw,22px);letter-spacing:-.02em}.round-link{width:58px;height:58px;border:1px solid var(--ink);border-radius:50%;display:grid;place-items:center;transition:.3s}.round-link:hover{background:var(--ink);color:var(--paper);transform:translateY(4px)}.hero-index{display:grid;grid-template-columns:1fr auto 1fr;padding-top:4vh;margin-top:4vh;border-top:1px solid var(--line);font-family:"DM Mono",monospace;font-size:10px;text-transform:uppercase}.hero-index span:last-child{text-align:right}.section{padding:16vh 4vw;max-width:var(--max);margin:auto;border-top:1px solid var(--line)}.section-head{display:grid;grid-template-columns:1fr 2fr;margin-bottom:10vh}.section-head h2{margin:0;font-size:clamp(42px,5.5vw,80px);font-weight:500;letter-spacing:-.055em;line-height:1}.timeline{margin-left:33.33%}.job{border-top:1px solid var(--line)}.job:last-child{border-bottom:1px solid var(--line)}.job-toggle{width:100%;border:0;background:none;padding:27px 0;display:grid;grid-template-columns:25% 1fr auto;text-align:left;cursor:pointer}.job-toggle .date{font-family:"DM Mono",monospace;font-size:11px}.job-toggle b{display:block;font-size:18px;font-weight:500}.job-toggle small{display:block;color:var(--muted);margin-top:5px}.job-toggle i{font-style:normal;font-size:20px}.job-detail{display:grid;grid-template-columns:25% 1fr;max-height:0;overflow:hidden;opacity:0;transition:max-height .45s ease,opacity .3s}.job.open .job-detail{max-height:350px;opacity:1}.job-detail>*{grid-column:2;margin-top:0}.job-detail p{font-size:16px;max-width:650px}.job-detail ul{padding-left:18px;color:var(--muted);margin-bottom:32px}.education-grid{display:grid;grid-template-columns:1fr 2fr;gap:7vw}.edu-feature{background:var(--ink);color:var(--paper);padding:38px;min-height:390px;display:flex;flex-direction:column}.edu-feature span{font-family:"DM Mono",monospace;font-size:10px;text-transform:uppercase;color:var(--acid)}.edu-feature h3{font-size:40px;line-height:1;letter-spacing:-.04em;margin:auto 0 15px}.edu-feature p{color:#b9bab4}.edu-feature time{font-family:"DM Mono",monospace;font-size:11px}.edu-list article{display:grid;grid-template-columns:25% 1fr;border-top:1px solid var(--line);padding:20px 0}.edu-list article:last-child{border-bottom:1px solid var(--line)}.edu-list time{font-family:"DM Mono",monospace;font-size:10px}.edu-list h3{font-size:18px;font-weight:500;margin:0}.edu-list p{margin:5px 0;color:var(--muted)}.skill-lines{margin-left:33.33%}.skill-lines>div{display:grid;grid-template-columns:9% 1fr 1fr;align-items:center;border-top:1px solid var(--line);padding:28px 0}.skill-lines>div:last-child{border-bottom:1px solid var(--line)}.skill-lines span{font-family:"DM Mono",monospace;font-size:10px}.skill-lines h3{font-size:22px;font-weight:500;margin:0}.skill-lines p{color:var(--muted);margin:0}.skill-lines .meta-pair{font-family:inherit;font-size:inherit;white-space:nowrap}.skill-lines .skill-tools h3{font-size:18px}.project{display:grid;grid-template-columns:10% 1fr auto;align-items:center;padding:44px 0;border-top:1px solid var(--line);transition:padding .3s,background .3s}.project:last-child{border-bottom:1px solid var(--line)}.project:hover{padding-left:24px;padding-right:24px;background:#ebeae5}.project-n,.project p{font-family:"DM Mono",monospace;font-size:10px;text-transform:uppercase}.project p{margin:0;color:var(--muted)}.project h3{font-size:clamp(30px,4vw,58px);font-weight:500;letter-spacing:-.045em;line-height:1;margin:8px 0}.project small{color:var(--muted)}.project b{font-size:26px;font-weight:400}.contact{background:var(--ink);color:var(--paper);min-height:88svh;padding:14vh max(4vw,calc((100vw - var(--max))/2 + 4vw)) 3vh;display:flex;flex-direction:column}.contact>p{color:var(--acid)}.contact h2{font-weight:500;letter-spacing:-.06em;line-height:.95;font-size:clamp(54px,8vw,120px);margin:8vh 0 auto}.contact>div{display:flex;gap:40px;font-size:18px;margin:8vh 0}.contact footer{display:flex;justify-content:space-between;border-top:1px solid #333;padding-top:22px;color:#8c8d88;font-family:"DM Mono",monospace;font-size:10px;text-transform:uppercase}.contact footer a{color:var(--paper);font-weight:500;transition:color .25s}.contact footer a:hover{color:var(--acid)}.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}@media(max-width:960px){.topbar{height:64px;grid-template-columns:1fr auto;padding:0 20px}.topbar nav,.availability{display:none}.menu{display:block;border:0;background:none;font-family:"DM Mono",monospace;font-size:11px;text-transform:uppercase}.mobile-nav{position:fixed;inset:64px 0 auto;background:var(--paper);z-index:9;border-bottom:1px solid var(--line);padding:20px;flex-direction:column;gap:18px;font-size:14px}.mobile-nav.open{display:flex}}@media(max-width:780px){.topbar{height:64px;grid-template-columns:1fr auto;padding:0 20px}.topbar nav,.availability{display:none}.menu{display:block;border:0;background:none;font-family:"DM Mono",monospace;font-size:11px;text-transform:uppercase}.mobile-nav{position:fixed;inset:64px 0 auto;background:var(--paper);z-index:9;border-bottom:1px solid var(--line);padding:20px;flex-direction:column;gap:18px;font-size:14px}.mobile-nav.open{display:flex}.hero{min-height:calc(100svh - 64px);padding:8vh 20px 20px}.hero h1{font-size:13vw;margin:8vh 0 5vh}.hero-bottom{align-items:flex-end}.hero-bottom>p{font-size:16px;width:78%}.hero-index{margin-top:5vh}.section{padding:12vh 20px}.section-head{grid-template-columns:1fr;margin-bottom:7vh}.section-head>p{margin-bottom:30px}.timeline,.skill-lines{margin-left:0}.job-toggle{grid-template-columns:28% 1fr auto;gap:8px}.job-toggle b{font-size:15px}.job-detail{grid-template-columns:28% 1fr}.education-grid{grid-template-columns:1fr;gap:28px}.edu-feature{min-height:330px}.skill-lines>div{grid-template-columns:12% 1fr;align-items:start}.skill-lines p{grid-column:2;margin-top:8px}.skill-lines .meta-pair{white-space:normal}.project{grid-template-columns:12% 1fr auto;padding:30px 0}.contact{padding:11vh 20px 24px}.contact h2{font-size:15vw;margin-top:10vh}.contact>div{flex-direction:column;gap:15px}.contact footer{gap:20px}.project:hover{padding-left:10px;padding-right:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}*{transition:none!important}}
