:root{--ink:#15282c;--muted:#526469;--paper:#f7f8f4;--line:#d8dfd7;--acid:#d9f275;--dark:#162e32}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.7}a{color:inherit;text-decoration:none}button{font:inherit}header{height:88px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;background:rgba(247,248,244,.96);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:9}.wordmark{font-weight:800;font-size:25px;letter-spacing:-1px}.wordmark span{font-size:10px;letter-spacing:1.4px;margin-left:16px;font-weight:500}nav{display:flex;gap:30px;font-size:13px}nav a:hover,nav a.active{border-bottom:2px solid var(--ink)}#menu{display:none}.skip{position:fixed;left:10px;top:-80px;background:var(--acid);padding:10px;z-index:20}.skip:focus{top:10px}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #708e12;outline-offset:5px}.hero{padding:76px 5% 0;display:grid;grid-template-columns:1.04fr 1fr;gap:40px;max-width:1600px;margin:auto}.eyebrow,.section-label,.meta,.hero-foot,.tags{font-family:monospace;font-size:11px;letter-spacing:1.3px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#537a1b;margin-right:6px}h1{font-size:clamp(44px,4.8vw,75px);line-height:1.04;letter-spacing:-3.5px;margin:30px 0}h1>span{display:block;font-weight:400;color:#4e6468;margin-top:15px}p{color:var(--muted);margin:0 0 20px}.lead{font-size:20px;line-height:1.55;max-width:600px}.lead strong{color:var(--ink);font-weight:400}.hero-copy>p:not(.eyebrow){max-width:580px}.actions{display:flex;align-items:center;gap:24px;margin:30px 0 40px}.button{display:inline-flex;justify-content:space-between;gap:35px;align-items:center;background:var(--acid);padding:15px 23px;font-weight:600;font-size:13px}.button:hover{filter:brightness(.96)}.button span{font-size:20px}.textlink{font-size:13px;border-bottom:1px solid}.hero-art{margin:0;align-self:stretch;background:var(--dark);min-height:510px;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.hero-art img{width:100%;padding:20px}.hero-art figcaption{color:var(--acid);font-family:monospace;font-size:11px;letter-spacing:1px;padding:25px 30px;border-top:1px solid #3b5256;margin-top:auto}.hero-art figcaption span{display:block;color:#b4c8c7;font-size:10px;margin-top:6px}.hero-foot{grid-column:1/-1;border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:23px 0;font-size:10px}.section{max-width:1600px;margin:auto;padding:95px 5%;display:grid;grid-template-columns:160px 1fr;gap:35px;border-top:1px solid var(--line);scroll-margin-top:0}.section-label{font-size:10px;padding-top:12px}h2{font-size:clamp(32px,3.2vw,50px);line-height:1.15;font-weight:500;letter-spacing:-1.7px;margin:0 0 38px}h3{font-size:21px;line-height:1.35;font-weight:500;margin:0 0 16px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:40px}.two-col p{font-size:15px;line-height:1.85}.principles{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;border-top:1px solid var(--line);padding-top:28px;margin-top:30px}.principles b{font-family:monospace;font-size:12px;color:#647d26}.principles h3{font-size:17px;margin:14px 0 8px}.principles p{font-size:13px;margin:0}.projects{background:#edf0e9}.section-heading{display:flex;justify-content:space-between;gap:30px;align-items:start}.section-heading>p{font-size:13px;max-width:270px;padding-top:7px}.project{display:grid;grid-template-columns:.9fr 1fr;gap:45px;padding:45px 0 55px;border-top:1px solid #cdd6cb;align-items:start}.project figure{margin:0;position:sticky;top:125px}.project figure img{display:block;width:100%;background:#f8faf5;aspect-ratio:1.18;object-fit:contain}.project figcaption{font-size:10px;color:#62736d;margin-top:10px}.project-copy h3{font-size:32px;letter-spacing:-.9px;line-height:1.15;margin:20px 0 15px}.project-copy>p{font-size:14px;line-height:1.8}.project-copy strong{color:var(--ink);font-weight:600}.meta{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:9px;letter-spacing:.6px}.badge{border:1px solid #a6b29f;padding:4px 8px;font-size:8px;font-family:monospace;white-space:nowrap;letter-spacing:.7px}.tags{color:#5c7330!important;font-size:10px!important}.reverse figure{grid-column:2;grid-row:1}.reverse .project-copy{grid-column:1;grid-row:1}.discovery{border:1px solid #bac8b2;display:flex;gap:30px;padding:30px;margin-top:5px}.discovery .eyebrow{font-size:10px;margin-bottom:15px}.discovery h3{font-size:22px}.discovery p{font-size:13px;margin-bottom:0}.discovery .badge{align-self:start;background:var(--acid);color:var(--ink)}.goals-intro{max-width:800px;font-size:18px}.roadmap{margin:35px 0}.roadmap img{width:100%;display:block}.resume{background:#fff}.button.dark{background:var(--ink);color:white;white-space:nowrap}.resume-grid{display:grid;grid-template-columns:1fr 1fr;gap:55px}.resume-grid h3{border-bottom:1px solid var(--line);padding-bottom:15px;font-size:18px}.job{margin:22px 0}.job span{font-family:monospace;font-size:10px;color:#687771}.job h4{font-size:19px;margin:5px 0;font-weight:500}.job p,.resume-grid>div>p{font-size:14px}.skill-tags{display:flex;flex-wrap:wrap;gap:8px}.skill-tags span{font-family:monospace;background:#eff2e9;padding:5px 12px;font-size:11px}.education-title{margin-top:36px}.resume-preview{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:35px}.resume-preview summary{cursor:pointer;padding:19px 0;display:flex;justify-content:space-between;font-size:14px}.resume-preview[open] summary span{transform:rotate(45deg)}.contact{background:var(--dark);color:#eff5e9;padding:75px 5% 0}.contact>.eyebrow{color:var(--acid)}.contact h2{font-size:clamp(38px,5vw,74px);line-height:1.1;margin-top:30px}.contact>p:not(.eyebrow){color:#bdceca;max-width:550px}.contact>a{font-size:clamp(18px,2.7vw,36px);border-bottom:1px solid #6f8788;display:inline-block;padding:10px 0}.contact>a span{color:var(--acid);margin-left:25px}footer{margin-top:70px;border-top:1px solid #486064;display:flex;justify-content:space-between;padding:25px 0;font-family:monospace;font-size:10px;letter-spacing:.7px;color:#b4c6c4}
@media(min-width:1600px){.contact{padding-left:calc((100vw - 1440px)/2);padding-right:calc((100vw - 1440px)/2)}}
@media(max-width:1050px){.wordmark span{display:none}.hero{gap:25px}.hero-art{min-height:440px}.section{grid-template-columns:110px 1fr;gap:20px}.project{gap:25px}.meta{flex-wrap:wrap}.section-heading{display:block}.section-heading>.button{margin-bottom:30px}h1{letter-spacing:-2px}.project-copy h3{font-size:28px}}
@media(max-width:700px){header{height:70px}#menu{display:block;border:0;background:none;font-size:12px;padding:10px}#menu span{margin-left:8px}nav{display:none;position:absolute;top:70px;left:0;right:0;background:var(--paper);padding:20px 5%;border-bottom:1px solid var(--line);flex-direction:column;gap:16px}nav.open{display:flex}nav a{align-self:start}.hero{padding-top:40px;grid-template-columns:1fr}.hero-art{min-height:0}.hero-art img{max-height:420px}.hero-foot{flex-direction:column;gap:7px;margin-top:15px}.hero h1{font-size:50px}.lead{font-size:19px}.hero-copy>p:not(.eyebrow){font-size:15px}.section{display:block;padding:52px 5%}.section-label{margin-bottom:25px}.two-col{grid-template-columns:1fr;gap:0}.principles{grid-template-columns:1fr;gap:25px}.principles>div{display:grid;grid-template-columns:30px 1fr}.principles h3{margin:0 0 7px}.principles p{grid-column:2}.project{grid-template-columns:1fr;gap:24px;padding:30px 0}.project figure{position:static}.project figure img{aspect-ratio:1.35}.reverse figure,.reverse .project-copy{grid-column:auto;grid-row:auto}.meta{justify-content:start;gap:14px}.project-copy h3{font-size:30px}.discovery{padding:23px;display:block;margin-top:20px}.discovery .badge{display:inline-block;margin-top:20px}.resume-grid{grid-template-columns:1fr;gap:25px}.contact{padding-top:50px}footer{flex-direction:column;gap:12px}.actions{gap:20px}.button{gap:22px}.roadmap{overflow-x:auto}.roadmap img{min-width:650px}.resume-preview object{height:600px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* Portfolio documents and hardware journal */
.personal-photo{position:relative;min-height:590px}.personal-photo img{display:block;width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:50% 70%;padding:0}.personal-photo figcaption{position:relative;margin-top:auto;background:linear-gradient(transparent,rgba(10,30,28,.92));border:0;padding:65px 30px 25px;color:#fff}.personal-photo figcaption span{color:#eef5e8}.research-project figure img{aspect-ratio:auto;padding:18px;background:#fff}.figure-detail{font-size:12px;margin-top:18px}.figure-detail summary{cursor:pointer;color:var(--ink);border-bottom:1px solid var(--line);padding-bottom:10px}.figure-detail img{margin-top:15px}.document-actions{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-top:25px}.document-actions .button{gap:20px}.document-actions .textlink{font-size:12px}.resume-versions{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:40px;scroll-margin-top:110px}.resume-card{padding:27px;border:1px solid var(--line);background:var(--paper);min-width:0}.resume-card h3{font-size:24px}.resume-card>p{font-size:14px}.resume-card .eyebrow{font-size:10px;color:#526a2c}.resume-card .resume-preview{margin-top:25px}.resume-card object{display:block;max-width:100%}.kicad-prompt{background:#dfe9cd;padding:30px;margin:15px 0 35px;display:flex;align-items:center;justify-content:space-between;gap:25px}.kicad-prompt p{font-size:13px;margin-bottom:0}.kicad-prompt .eyebrow{font-size:10px;margin-bottom:10px}.kicad-prompt h3{font-size:24px}.contact-details{display:flex;gap:80px;margin-top:35px;color:#e7f1e5}.contact-details>div{display:flex;flex-direction:column;gap:8px}.contact-details span{font:10px monospace;letter-spacing:1.3px;color:#b3c2b9}.contact-details a,.contact-details address{font-style:normal;font-size:17px;line-height:1.6}.contact-details a:hover{text-decoration:underline}nav a[aria-current="page"]{border-bottom:2px solid var(--ink)}.kicad-hero{padding:75px 5% 0;max-width:1200px;margin:auto}.kicad-hero h1{font-weight:500}.kicad-hero>p:not(.eyebrow){max-width:760px}.kicad-hero .badge{display:inline-block;margin:10px 0 25px}.kicad-nav{display:flex;gap:35px;border-top:1px solid var(--line);padding:20px 0;margin-top:25px;font:12px monospace}.design-slot{max-width:1200px;margin:auto;display:grid;grid-template-columns:160px 1fr;gap:35px;padding:65px 5%;border-top:1px solid var(--line);scroll-margin-top:100px}.design-slot h2{font-size:35px;margin-bottom:22px}.design-slot>div>p{max-width:730px}.empty-design{border:1px dashed #a8b8a0;background:linear-gradient(135deg,#edf2e5,#f8faf6);min-height:300px;padding:45px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;margin-top:30px}.empty-design .empty-symbol{font:32px monospace;color:#91a782;margin-bottom:20px}.empty-design h3{font-size:22px}.empty-design p{font-size:14px}.empty-design>span:last-child{font:11px monospace;color:#687c62}.compact-contact h2{font-size:45px}
@media(max-width:1050px){nav{gap:20px}.resume-versions{grid-template-columns:1fr}.personal-photo{min-height:530px}}
@media(max-width:700px){.personal-photo{min-height:440px}.personal-photo img{object-position:50% 70%}.kicad-prompt{display:block;padding:23px}.kicad-prompt .button{margin-top:20px}.contact-details{flex-direction:column;gap:25px}.kicad-hero{padding-top:45px}.kicad-hero h1{font-size:46px}.kicad-nav{flex-wrap:wrap;gap:20px}.design-slot{display:block;padding:40px 5%}.design-slot .section-label{margin-bottom:20px}.design-slot h2{font-size:30px}.empty-design{min-height:240px;padding:25px}.empty-design>span:last-child{line-height:1.8}.resume-card{padding:22px}.research-project figure img{padding:8px}}
.resume-versions{align-items:start}
.hero h1>span{font-size:clamp(27px,2.8vw,42px);line-height:1.22;letter-spacing:-1px;margin-top:22px}
@media(max-width:700px){.hero h1>span{font-size:29px;letter-spacing:-.7px}}

.soa-transcript{margin-top:30px;padding-top:28px;border-top:1px solid var(--line)}.soa-transcript>.eyebrow{font-size:10px;color:#526a2c}.soa-transcript>p{font-size:14px}.soa-transcript h3{font-size:23px}

/* Personal vlog */
.vlog-intro{max-width:1500px;margin:auto;padding:75px 5% 65px;display:grid;grid-template-columns:.9fr 1.1fr;gap:65px;align-items:center}.vlog-intro h1{font-size:clamp(42px,5vw,68px);font-weight:500;letter-spacing:-2px;margin:25px 0}.vlog-intro>div>p:not(.eyebrow){max-width:530px}.vlog-cover{margin:0;background:var(--dark)}.vlog-cover img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.vlog-cover figcaption{padding:20px 24px;font:11px monospace;letter-spacing:1px;color:var(--acid)}.vlog-cover figcaption span{display:block;color:#c0d0c9;font-size:11px;letter-spacing:0;margin-top:7px}.vlog-section{max-width:1500px;margin:auto;padding:65px 5%;display:grid;grid-template-columns:160px 1fr;gap:35px;border-top:1px solid var(--line);scroll-margin-top:90px}.vlog-section h2{font-size:38px}.vlog-section .section-heading{align-items:center}.vlog-section .section-heading h2{margin-bottom:25px}.vlog-section .section-heading .badge{margin-bottom:25px}.vlog-empty{min-height:270px;background:#eaf0e2;border:1px solid #d3ddc8;padding:35px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.play-outline{height:55px;width:55px;border:1px solid #91a480;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;margin-bottom:22px;color:#4c663a}.vlog-empty h3{font-size:23px}.vlog-empty p{font-size:14px;max-width:470px;margin-bottom:15px}.vlog-status{font:10px monospace;letter-spacing:.7px;color:#64765a}.photo-entry{display:grid;grid-template-columns:1.1fr .9fr;gap:35px;align-items:center}.photo-entry img{display:block;width:100%;height:auto}.photo-entry h3{font-size:28px}.photo-entry p{font-size:14px}.photo-entry .eyebrow{font-size:10px}.vlog-home{padding:45px 5%;display:flex;align-items:center;justify-content:space-between;gap:30px;background:#e5edd9;border-top:1px solid var(--line)}.vlog-home h2{font-size:35px;margin-bottom:12px}.vlog-home p{font-size:14px;margin-bottom:0}.vlog-home .eyebrow{font-size:10px;margin-bottom:12px}
@media(max-width:1100px){.vlog-intro{gap:35px}nav{gap:16px;font-size:12px}}
@media(max-width:700px){.vlog-intro{grid-template-columns:1fr;padding:40px 5%;gap:20px}.vlog-intro h1{font-size:45px}.vlog-cover{margin-top:10px}.vlog-section{display:block;padding:40px 5%}.vlog-section .section-label{margin-bottom:25px}.vlog-section h2{font-size:32px}.vlog-section .section-heading{display:flex}.vlog-empty{padding:25px;min-height:270px}.photo-entry{grid-template-columns:1fr;gap:20px}.vlog-home{display:block;padding:35px 5%}.vlog-home .button{margin-top:23px}}

.photo-entry+.photo-entry{margin-top:45px;padding-top:40px;border-top:1px solid var(--line)}
