@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{--ink:#14292d;--muted:#52666b;--paper:#fcfcfa;--line:#d9e2df;--accent:#125b4a;--mint:#d2efc3;--night:#132b2d;--max:1160px;font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0;font-size:1rem;line-height:1.65}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.25em}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #ec874c;outline-offset:5px}::selection{background:var(--mint);color:var(--ink)}.wrap{max-width:var(--max);margin:auto;padding:0 32px}.skip{position:fixed;top:-100px;left:16px;background:white;padding:10px;z-index:100}.skip:focus{top:10px}.site-header{border-bottom:1px solid var(--line);background:var(--paper)}.header-inner{display:flex;justify-content:space-between;align-items:center;gap:24px;min-height:94px}.brand{text-decoration:none;display:flex;gap:12px;align-items:center;font-weight:700}.monogram{display:grid;place-items:center;width:40px;height:40px;background:var(--ink);color:var(--paper);font-family:'Manrope',sans-serif;font-size:.8rem;letter-spacing:-.02em}.nav{display:flex;align-items:center;gap:28px}.nav a{font-size:.9rem;text-decoration:none;padding:9px 0;border-bottom:2px solid transparent}.nav a:hover,.nav a[aria-current=page]{border-color:var(--accent)}.menu-toggle{display:none;border:1px solid var(--line);padding:8px 14px;background:transparent}.eyebrow{font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;font-weight:600;line-height:1.5}.hero{background:var(--night);color:#f4f7ef;overflow:hidden}.hero-inner{padding-top:68px;padding-bottom:64px;display:grid;grid-template-columns:1.5fr 1fr;gap:68px;align-items:center}.hero .eyebrow{color:#b6c9c6}.hero h1{font-family:'Manrope',sans-serif;font-weight:500;font-size:clamp(4rem,7.3vw,6.7rem);line-height:1.02;letter-spacing:-.065em;margin:26px 0 28px}.hero h1 span{color:var(--mint)}.intro{font-size:1.15rem;line-height:1.75;max-width:580px;color:#d2e0dc}.hero .actions{margin-top:32px}.actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:12px 22px;text-decoration:none;border:1px solid var(--ink);background:var(--ink);color:white;font-weight:500;min-height:48px;font-size:.93rem}.button.primary{background:var(--mint);color:var(--ink);border-color:var(--mint)}.button.secondary{background:transparent;color:inherit;border-color:#78908b}.button.light{background:transparent;color:var(--ink);border-color:var(--line)}.button:hover{filter:brightness(.94)}.hero-note{margin-top:46px;font-size:.83rem;color:#afc6c0;display:flex;gap:20px;flex-wrap:wrap}.field-card{border:1px solid #466160;padding:26px;background:#1b3637}.field-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid #466160;padding-bottom:19px}.field-head span{font-size:.78rem;color:#b3c9c2}.field-body{padding:36px 0 20px}.field-body h2{font-size:1.55rem;font-weight:500;line-height:1.3;letter-spacing:-.025em;margin:0 0 24px}.signal-flow{display:grid;gap:12px}.signal-flow div{border-left:2px solid var(--mint);padding:10px 16px;background:#244243}.signal-flow strong{display:block;font-size:.95rem;font-weight:500}.signal-flow span{display:block;color:#b9cfca;font-size:.83rem;margin-top:2px}.field-foot{font-size:.8rem;color:#b9cfca;border-top:1px solid #466160;padding-top:18px}.section{padding-top:70px;padding-bottom:74px}.section-top{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:28px}.section-top h2{margin:5px 0 0;font-size:2.35rem;letter-spacing:-.045em;line-height:1.2;font-weight:500}.text-link{font-size:.93rem}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.project-card{display:flex;flex-direction:column;border-top:1px solid var(--ink);padding:23px 0 15px;text-decoration:none}.project-card:hover h3{text-decoration:underline;text-underline-offset:.2em}.project-no{font-size:.8rem;color:var(--muted);display:flex;justify-content:space-between;gap:12px}.project-card h3{font-size:1.4rem;letter-spacing:-.035em;line-height:1.3;font-weight:500;margin:25px 0 12px}.project-card p{color:var(--muted);font-size:.98rem;margin:0 0 22px}.project-card .tags{margin-top:auto}.tags{display:flex;flex-wrap:wrap;gap:8px}.tag{border:1px solid var(--line);padding:3px 9px;font-size:.76rem;color:var(--muted)}.home-about{background:#edf2ef;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.split{display:grid;grid-template-columns:1fr 1.5fr;gap:80px}.split h2{font-weight:500;font-size:2rem;letter-spacing:-.04em;line-height:1.3;margin:0}.split p{margin:0 0 22px;color:var(--muted)}.site-footer{padding:28px 0;color:var(--muted);font-size:.83rem}.footer-inner{display:flex;gap:24px;justify-content:space-between;align-items:center}.footer-links{display:flex;gap:22px}.footer-links a{text-decoration:none}.page-head{padding-top:62px;padding-bottom:42px;border-bottom:1px solid var(--line)}.page-head h1{font-size:clamp(2.8rem,5vw,4.5rem);font-weight:500;line-height:1.1;letter-spacing:-.06em;margin:18px 0}.page-head .lead{max-width:760px;color:var(--muted);font-size:1.1rem;margin:0}.page-head .actions{margin-top:26px}.prose{max-width:760px}.prose p{color:var(--muted)}.prose h2{font-weight:500;font-size:1.7rem;letter-spacing:-.03em;line-height:1.3}.prose h3{font-weight:600;font-size:1.05rem}.muted{color:var(--muted)}.small{font-size:.85rem}.rule{border:0;border-top:1px solid var(--line);margin:38px 0}.project-list{display:grid;gap:0}.project-row{padding:40px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:70px 1fr 1.1fr;gap:30px}.project-row h2{font-size:1.9rem;line-height:1.2;letter-spacing:-.04em;font-weight:500;margin:8px 0 17px}.project-row p{margin-top:0;color:var(--muted)}.project-row .eyebrow{color:var(--accent)}.index{font-family:'Manrope',sans-serif;font-size:2.3rem;color:#8eaaa1;line-height:1.2}.project-row .text-link{display:inline-block;margin-top:18px}.content-grid{display:grid;grid-template-columns:250px 1fr;gap:70px}.aside-label{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;margin-top:3px}.resume-section{padding:35px 0;border-bottom:1px solid var(--line)}.resume-section:first-child{padding-top:0}.resume-item{margin-bottom:32px}.resume-item:last-child{margin-bottom:0}.resume-item h3{font-size:1.15rem;margin:0;font-weight:600;line-height:1.45}.meta{color:var(--muted);font-size:.88rem;margin:4px 0 12px}.resume-item p{color:var(--muted);margin:10px 0}.resume-item ul,.prose ul{padding-left:20px;color:var(--muted)}.skill-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}.skill-grid h3{font-size:.95rem;margin:0 0 6px}.skill-grid p{font-size:.95rem;margin:0;color:var(--muted)}.course-group{margin:0 0 38px}.course-group h3{font-size:1.1rem;font-weight:600;margin:0;padding-bottom:13px;border-bottom:1px solid var(--ink)}.course{display:grid;grid-template-columns:90px 1fr;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);font-size:.97rem}.course-code{font-size:.82rem;color:var(--muted);padding-top:3px}.status-label{font-size:.78rem;border:1px solid var(--line);padding:4px 10px;display:inline-block;color:var(--muted)}.direction{background:var(--night);padding:38px;color:white;margin-top:35px}.direction p{color:#d2e0dc}.direction h2{font-size:1.8rem;font-weight:500;letter-spacing:-.03em;margin:12px 0 20px}.contact-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:80px}.contact-link{display:block;text-decoration:none;padding:24px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.contact-link span{display:block;font-size:.8rem;color:var(--muted);margin-bottom:10px;letter-spacing:.09em;text-transform:uppercase}.contact-link strong{font-weight:500;font-size:clamp(1.2rem,2vw,1.65rem);letter-spacing:-.03em}.contact-link:hover strong{text-decoration:underline}.contact-note{padding:30px;background:#edf2ef;align-self:start}.contact-note h2{font-size:1.45rem;font-weight:500;margin:0 0 16px}.contact-note p{color:var(--muted);margin:0}.back{font-size:.88rem;color:var(--muted);display:inline-block;margin-bottom:12px}.case-grid{display:grid;grid-template-columns:1fr 300px;gap:70px}.case-facts{align-self:start;background:#edf2ef;padding:26px}.case-facts dt{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:16px 0 4px}.case-facts dt:first-child{margin-top:0}.case-facts dd{margin:0;font-size:.98rem}.case-steps{display:grid;gap:0}.case-step{padding:23px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:35px 1fr;gap:18px}.case-step span{font-size:.8rem;color:var(--muted);padding-top:6px}.case-step h3{margin:0 0 8px}.case-step p{margin:0}.download-note{margin:14px 0 0;font-size:.8rem;color:var(--muted)}.course-note{padding:17px 20px;background:#edf2ef;font-size:.9rem;color:var(--muted);margin:0 0 30px}.cta-strip{padding:35px 0;border-top:1px solid var(--line);display:flex;gap:20px;align-items:center;justify-content:space-between}.cta-strip p{margin:0;font-size:1.1rem}.pdf-frame{display:block;width:100%;height:780px;border:1px solid var(--line);margin-top:28px}.no-print{display:initial}
@media(max-width:900px){.hero-inner{gap:35px;grid-template-columns:1.2fr 1fr}.nav{gap:17px}.brand-name{display:none}.hero h1{font-size:4.8rem}.split{gap:40px}.content-grid{grid-template-columns:180px 1fr;gap:35px}.case-grid{grid-template-columns:1fr 250px;gap:35px}.project-row{grid-template-columns:45px 1fr 1fr;gap:20px}.contact-grid{gap:35px}}
@media(max-width:680px){.wrap{padding:0 22px}.header-inner{min-height:76px;flex-wrap:wrap;gap:0}.brand-name{display:initial}.menu-toggle{display:block}.nav{width:100%;flex-wrap:wrap;gap:8px 22px;padding:10px 0 20px}.nav[data-collapsed=true]{display:none}.nav a{font-size:.93rem}.hero-inner{grid-template-columns:1fr;padding-top:44px;padding-bottom:38px;gap:34px}.hero h1{font-size:clamp(3.75rem,16vw,5.3rem);margin-top:23px}.hero-note{margin-top:30px}.intro{font-size:1.06rem}.field-card{padding:22px}.field-body{padding-top:22px}.signal-flow{grid-template-columns:repeat(3,1fr);gap:7px}.signal-flow div{padding:9px;border-left:0;border-top:2px solid var(--mint)}.signal-flow strong{font-size:.83rem}.signal-flow span{font-size:.76rem;line-height:1.5}.field-foot{margin-top:10px}.section{padding-top:44px;padding-bottom:44px}.section-top{align-items:start;gap:18px}.section-top h2{font-size:1.9rem}.section-top .text-link{font-size:.84rem;white-space:nowrap;margin-top:26px}.project-grid,.split,.content-grid,.contact-grid,.case-grid{grid-template-columns:1fr;gap:27px}.project-card{padding-top:18px}.project-card h3{margin-top:16px}.project-card p{margin-bottom:15px}.footer-inner{align-items:start;flex-direction:column;gap:12px}.page-head{padding-top:38px;padding-bottom:34px}.page-head h1{font-size:3rem}.project-row{grid-template-columns:36px 1fr;gap:16px;padding:30px 0}.project-row>div:last-child{grid-column:2}.index{font-size:1.8rem}.project-row h2{font-size:1.7rem}.skill-grid{grid-template-columns:1fr;gap:22px}.resume-section{padding:28px 0}.aside-label{margin-bottom:0}.direction{padding:26px}.contact-note{margin-top:8px}.cta-strip{align-items:start;flex-direction:column}.course{grid-template-columns:76px 1fr}.pdf-frame{height:540px}}
@media(prefers-reduced-motion:no-preference){.button,.project-card h3,.nav a{transition:background .15s,border-color .15s,filter .15s}html{scroll-behavior:smooth}}@media print{.site-header,.site-footer,.actions,.no-print,.pdf-frame{display:none!important}body{font-size:10pt;background:white}.wrap{max-width:none;padding:0}.section,.page-head{padding:18px 0}.content-grid{grid-template-columns:150px 1fr;gap:30px}.resume-item{break-inside:avoid}a{text-decoration:none}}
