@font-face{font-family:Notebook;src:url('/css/fonts/librebaskerville/librebaskerville-italic-webfont.woff') format('woff');font-style:italic;font-weight:400;font-display:swap}
@font-face{font-family:Reading;src:url('/css/fonts/opensans/OpenSans-Regular-webfont.woff') format('woff');font-weight:400;font-display:swap}
:root{--paper:#f7f8f2;--ink:#222922;--muted:#626b60;--green:#174d3c;--accent:#d5f29b;--line:#dce0d4;--white:#fff;--sans:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace;--serif:Notebook,Georgia,serif;--container:1184px}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:104px}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}
::selection{background:var(--accent);color:var(--green)}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
button{color:inherit;cursor:pointer}
button:disabled{cursor:wait}
img,svg{max-width:100%}
img{height:auto}
button,a,input,summary{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:3px solid #46856e;outline-offset:5px;border-radius:2px}
[hidden]{display:none!important}
.container{width:min(var(--container),calc(100% - 96px));margin-inline:auto}
.icon{flex-shrink:0;vertical-align:middle}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;top:10px;left:10px;transform:translateY(-200%);background:var(--green);color:white;padding:12px 20px;z-index:100}
.skip-link:focus{transform:translateY(0)}
.eyebrow{font-family:var(--mono);text-transform:uppercase;font-size:10px;letter-spacing:.12em;line-height:1.6;font-weight:500}
.site-header{position:sticky;top:0;background:rgb(247 248 242 / 94%);backdrop-filter:blur(16px);z-index:20;border-bottom:1px solid var(--line)}
.header-inner{height:88px;display:flex;align-items:center;justify-content:space-between;gap:30px}
.brand{display:inline-flex;align-items:center;gap:12px;font-size:23px;font-weight:750;letter-spacing:-.8px;line-height:1}
.brand svg{color:var(--green)}
.brand-dot{color:var(--green)}
.site-nav{display:flex;align-items:center;gap:32px;font-size:13px;font-weight:500}
.site-nav>a:not(.nav-cv){position:relative;padding:12px 0}
.site-nav>a:not(.nav-cv)::after{content:'';position:absolute;bottom:6px;left:0;right:0;height:2px;transform:scaleX(0);transform-origin:left;background:var(--green);transition:transform .2s}
.site-nav>a:hover::after,.site-nav>a[aria-current]::after{transform:scaleX(1)}
.nav-cv{display:flex;align-items:center;gap:16px;border:1px solid #c8cfc0;border-radius:4px;padding:11px 16px;transition:background .2s,border-color .2s}
.nav-cv:hover{background:var(--accent);border-color:var(--accent)}
.nav-cv .icon{width:15px;height:15px}
.menu-toggle{display:none;background:none;border:1px solid var(--line);border-radius:4px;align-items:center;justify-content:center;width:44px;height:44px}
.hero{display:grid;grid-template-columns:1.16fr 1fr;gap:60px;align-items:center;padding-block:87px 75px}
.hero-eyebrow{display:flex;align-items:center;gap:9px;color:var(--green);margin:0 0 25px}
.identity-mark{width:7px;height:7px;background:var(--green);flex-shrink:0}
h1,h2,h3,h4,p{margin-top:0}
h1,h2,h3{font-weight:550;letter-spacing:-.04em;line-height:1.12}
.hero h1{font-size:clamp(52px,5.3vw,76px);letter-spacing:-.055em;margin:0 0 25px;line-height:1.03}
.hero h1>span,.page-hero h1>span{font-family:var(--serif);font-weight:400;color:var(--green);font-size:.97em;letter-spacing:-.065em}
.hero-intro{color:var(--muted);font-size:15px;line-height:1.85;max-width:490px;margin-bottom:31px}
.hero-actions{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.button{display:inline-flex;align-items:center;justify-content:center;gap:23px;padding:15px 22px;font-size:13px;font-weight:500;border:1px solid transparent;border-radius:4px;transition:background .2s,transform .2s}
.button-dark{background:var(--ink);color:var(--paper)}
.button-dark:hover{background:var(--green);transform:translateY(-2px)}
.button .icon{width:17px;height:17px}
.text-link{display:inline-flex;align-items:center;gap:12px;font-size:13px;font-weight:500;line-height:1.6}
.text-link:hover{color:var(--green)}
.text-link .icon{width:16px;height:16px;transition:transform .2s}
.text-link:hover .icon{transform:translate(2px,-2px)}
.hero-caption{display:flex;align-items:center;gap:12px;margin-top:40px;font-size:10px;line-height:1.6;color:var(--ink)}
.hero-caption>span>span{color:var(--muted)}
.location-mark{font-size:28px;color:var(--green);line-height:1}
.system-card{background:#193b29;color:var(--paper);border-radius:9px;padding:28px 26px 18px;position:relative;box-shadow:0 14px 35px -25px #193b2970;transform:rotate(1.5deg)}
.system-card-header{display:flex;justify-content:space-between;gap:12px;color:#b5c7b5}
.system-card-header .eyebrow{font-size:9px}
.system-card-index{font-family:var(--mono);font-size:9px;color:#9eb49f}
.system-card-title{font-size:22px;line-height:1.5;letter-spacing:-.04em;margin:26px 0 7px}
.system-card-title em{font-family:var(--serif);font-weight:400;color:var(--accent);font-size:.93em}
.system-map{display:block;width:100%;height:auto;margin-bottom:15px}
.system-card-footer{display:flex;align-items:center;gap:8px;border-top:1px solid #45634c;padding-top:17px;font-size:9px;font-family:var(--mono);color:#c4d0bb}
.system-card-footer>.icon{margin-left:auto;width:16px;height:16px}
.system-dot{width:5px;height:5px;background:var(--accent);border-radius:50%}
.metrics{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:180px 1fr;gap:30px;padding-block:30px;align-items:center}
.metrics-label{color:var(--muted);font-size:9px;line-height:1.8}
.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.metric{display:flex;flex-direction:column;padding-left:26px;border-left:1px solid var(--line)}
.metric strong{font-size:32px;letter-spacing:-.055em;font-weight:550;line-height:1.2;white-space:nowrap}
.metric:last-child strong{font-size:27px;line-height:1.42}
.metric>span{font-size:11px;margin-top:7px}
.metric small{font-size:9px;color:var(--muted);margin-top:4px}
.section{padding-block:95px}
.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:35px}
.section-number{color:var(--green);margin-bottom:19px}
.section-heading h2,.about-copy h2{font-size:42px;line-height:1.14;margin-bottom:0;letter-spacing:-.045em}
.section-heading>p{font-size:12px;color:var(--muted);line-height:1.8;margin-bottom:3px;max-width:310px}
.section-heading>.text-link{flex-shrink:0;margin-bottom:4px}
.focus-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.focus-card{padding:28px 26px;border:1px solid var(--line);border-radius:5px;display:flex;flex-direction:column;transition:border-color .2s,background .2s}
.focus-card:hover{background:#f0f3e8;border-color:#adc1a5}
.focus-card-top{display:flex;justify-content:space-between;align-items:center;color:var(--green);margin-bottom:42px;font-family:var(--mono);font-size:10px}
.focus-card-top .icon{width:28px;height:28px;stroke-width:1.2}
.focus-card h3{font-size:24px;letter-spacing:-.035em;margin-bottom:15px}
.focus-card>p{font-size:12px;line-height:1.85;color:var(--muted);margin-bottom:24px;flex:1}
.tags{display:flex;flex-wrap:wrap;gap:6px;list-style:none;padding:0;margin:0}
.tags li{font-family:var(--mono);font-size:8px;line-height:1.5;border:1px solid var(--line);border-radius:3px;padding:5px 7px;color:var(--muted);background:rgb(255 255 255 / 35%)}
.experience-section{background:#eef1e7;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.experience-list{margin-top:45px}
.experience-item{display:grid;grid-template-columns:250px 1fr;gap:50px;padding:32px 0;border-top:1px solid #d7ddce}
.experience-period{display:flex;flex-direction:column;gap:13px;font-size:11px;color:var(--muted);font-family:var(--mono);padding-top:3px}
.current-badge{align-self:flex-start;display:inline-flex;font-size:9px;background:var(--accent);color:var(--green);border-radius:3px;padding:3px 8px;font-family:var(--sans);font-weight:500}
.company{font-size:12px;font-weight:600;margin-bottom:12px}
.company>span{color:var(--muted);font-weight:400;font-size:10px;margin-left:8px}
.experience-content h3{font-size:23px;line-height:1.3;letter-spacing:-.025em;margin-bottom:15px}
.experience-content ul{font-size:12px;line-height:1.85;color:var(--muted);padding-left:17px;margin:0;max-width:760px}
.experience-content li{padding-left:4px;margin:7px 0}
.experience-content li::marker{color:#8ca087;font-size:.8em}
.earlier-experience{border-top:1px solid #d7ddce}
.earlier-experience summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:15px;font-size:12px;font-weight:500;padding-block:25px}
.earlier-experience summary::-webkit-details-marker{display:none}
.summary-meta{font-family:var(--mono);font-size:10px;color:var(--muted);font-weight:400;margin-left:auto}
.summary-plus{font-size:21px;line-height:1;font-weight:400;color:var(--green);transition:transform .2s;margin-left:20px}
.earlier-experience[open] .summary-plus{transform:rotate(45deg)}
.about-section{display:grid;grid-template-columns:1fr 1fr;gap:90px}
.about-copy h2{margin-bottom:27px}
.about-copy>p:not(.eyebrow){font-size:13px;color:var(--muted);line-height:1.9;max-width:450px}
.about-copy .text-link{margin-top:10px}
.education-card{border-left:2px solid var(--green);padding:2px 0 2px 25px;margin-bottom:35px}
.education-card>.eyebrow{color:var(--muted);font-size:9px}
.education-card h3{font-size:23px;margin:15px 0 5px}
.education-card p{color:var(--muted);font-size:12px;line-height:1.85;margin-bottom:0}
.education-card .education-minor{font-size:11px;margin-bottom:11px}
.education-card .education-school{color:var(--ink);font-weight:500;margin-bottom:10px}
.skill-group{margin-top:22px}
.skill-group h3{font-family:var(--mono);font-weight:400;font-size:9px;letter-spacing:.08em;text-transform:uppercase;line-height:1.6;margin-bottom:11px}
.skill-group .tags{gap:7px}
.skill-group .tags li{font-size:9px;padding:5px 9px}
.contributions{padding-top:0}
.contribution-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.contribution-card{background:#edf1e7;border:1px solid var(--line);border-radius:5px;padding:29px;display:flex;flex-direction:column;transition:background .2s,border-color .2s}
.contribution-card:hover{background:#e5ecdc;border-color:#b0c0a4}
.contribution-top{display:flex;align-items:center;justify-content:space-between;color:var(--green);gap:15px;margin-bottom:30px}
.contribution-card h3{font-size:26px;line-height:1.3;letter-spacing:-.04em;margin-bottom:14px}
.contribution-card>p{color:var(--muted);font-size:12px;line-height:1.85;margin-bottom:30px;flex:1}
.card-link-label{font-size:11px;font-weight:500;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#a5b69a}
.writing-section{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f1f3eb}
.writing-section .section-heading{margin-bottom:18px}
.section-intro{color:var(--muted);font-size:12px;margin-bottom:35px}
.post-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.post-card{border:1px solid var(--line);border-radius:5px;background:var(--paper);transition:transform .2s,border-color .2s,box-shadow .2s;min-width:0}
.post-card:hover{transform:translateY(-4px);border-color:#a9bba0;box-shadow:0 10px 18px -16px #1d3c26}
.post-card-link{display:flex;flex-direction:column;padding:25px 24px;height:100%}
.post-card-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:32px}
.post-card-top .eyebrow{font-size:8px;color:var(--green)}
.post-card h3{font-size:25px;line-height:1.2;letter-spacing:-.035em;margin-bottom:17px}
.post-card p{color:var(--muted);font-size:12px;line-height:1.85;margin-bottom:36px;flex:1}
.post-card-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:9px;color:var(--muted);padding-top:17px;border-top:1px solid var(--line)}
.post-card-bottom .icon{width:16px;height:16px;color:var(--green)}
.meta-dot{padding-inline:8px;color:#7b8976}
.contact-section{display:grid;grid-template-columns:1fr auto;gap:28px;align-items:center;padding-block:85px 70px}
.contact-section .eyebrow{color:var(--muted);font-size:9px;margin-bottom:16px}
.contact-section h2{font-size:70px;line-height:1.15;letter-spacing:-.055em;margin-bottom:16px}
.contact-section h2>span{color:var(--green)}
.contact-section p{color:var(--muted);font-size:13px;margin-bottom:0}
.contact-email{grid-column:1/-1;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:25px;font-size:11px;color:var(--muted)}
.contact-email a:hover{color:var(--green);text-decoration:underline;text-underline-offset:4px}
.site-footer{background:var(--ink);color:var(--paper)}
.footer-main{display:flex;justify-content:space-between;align-items:center;padding-block:45px 38px}
.site-footer .brand{font-size:21px}
.site-footer .brand svg,.site-footer .brand-dot{color:var(--accent)}
.footer-main p{font-size:11px;color:#b4bdab;margin:13px 0 0}
.footer-links{display:flex;gap:27px;font-size:11px}
.footer-links a{display:flex;gap:7px;align-items:center}
.footer-links .icon{width:13px;height:13px;color:#b4bdab}
.footer-links a:hover,.footer-bottom a:hover{color:var(--accent)}
.footer-bottom{border-top:1px solid #414a3d;display:flex;justify-content:space-between;gap:25px;padding-block:22px;font-size:9px;color:#b4bdab}
.page-hero{padding-block:70px 38px;border-bottom:1px solid var(--line)}
.page-hero>.eyebrow{margin-bottom:25px}
.page-hero h1{font-size:80px;line-height:1.04;letter-spacing:-.055em;margin-bottom:28px}
.page-hero>p:not(.eyebrow){font-size:14px;color:var(--muted);line-height:1.9;margin-bottom:32px}
.page-hero-foot{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted)}
.page-hero-foot .text-link{font-size:10px}
.archive-section{padding-block:32px 85px}
.archive-tools{display:flex;align-items:center;justify-content:space-between;gap:20px}
.filters{display:flex;flex-wrap:wrap;gap:6px}
.filter-button{background:transparent;border:1px solid transparent;padding:8px 12px;border-radius:4px;font-size:10px;color:var(--muted);line-height:1.5;transition:background .2s}
.filter-button:hover{background:#eaf0e2}
.filter-button[aria-pressed=true]{background:var(--green);color:var(--paper)}
.search-field{border:1px solid var(--line);border-radius:4px;display:flex;align-items:center;gap:10px;padding:10px 12px;min-width:210px;color:var(--muted)}
.search-field .icon{width:15px;height:15px}
.search-field:focus-within{border-color:var(--green)}
.search-field input{min-width:0;width:100%;border:0;background:none;font-size:11px;color:var(--ink);outline:none}
.archive-count{font-family:var(--mono);font-size:9px;color:var(--muted);margin-top:24px;margin-bottom:16px}
.archive-grid{row-gap:22px}
.archive-grid .post-card-link{min-height:305px}
.empty-state{text-align:center;padding:65px 20px;border:1px dashed var(--line);border-radius:4px}
.empty-state h3{font-size:30px}
.empty-state p{font-size:13px;color:var(--muted)}
.notes-link{display:flex;align-items:center;gap:25px;border:1px solid var(--line);border-radius:5px;padding:26px;margin-top:40px;background:#edf1e6;transition:background .2s}
.notes-link:hover{background:#e5ecdc}
.notes-icon{display:flex;align-items:center;justify-content:center;width:50px;height:50px;border:1px solid #c7d2bd;border-radius:4px;color:var(--green);flex-shrink:0}
.notes-link .eyebrow{font-size:8px;color:var(--green)}
.notes-link h3{font-size:23px;line-height:1.3;letter-spacing:-.035em;margin:9px 0 7px}
.notes-link p{font-size:12px;color:var(--muted);margin-bottom:0}
.notes-link>.icon{margin-left:auto;color:var(--green)}
.article-shell{max-width:1080px;padding-block:38px 0}
.article-breadcrumb{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-bottom:35px}
.article-breadcrumb>.eyebrow{color:var(--green);font-size:9px}
.article-breadcrumb>.text-link{font-size:11px}
.article-header{max-width:820px;padding-block:22px 34px}
.article-header h1{font-size:clamp(35px,4.1vw,55px);letter-spacing:-.045em;line-height:1.13;margin-bottom:27px;overflow-wrap:break-word}
.article-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:11px;color:var(--muted)}
.article-meta .meta-dot{padding-inline:4px}
.author-monogram{width:30px;height:30px;border-radius:50%;background:#e7eede;color:var(--green);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:9px;margin-right:5px}
.archive-note{font-size:10px;color:var(--muted);margin-top:23px;margin-bottom:0;padding-left:12px;border-left:2px solid #c5d3b8;line-height:1.8}
.article-layout{display:grid;grid-template-columns:minmax(0,735px) 1fr;gap:65px;align-items:start;border-top:1px solid var(--line);padding-top:38px}
.prose{min-width:0;font-family:Reading,var(--sans);font-size:15px;line-height:1.95;color:#444e42;overflow-wrap:break-word}
.prose p{margin:0 0 25px}
.prose h2,.prose h3,.prose h4,.prose h5{font-family:var(--sans);color:var(--ink);letter-spacing:-.035em;line-height:1.3;margin:42px 0 19px;scroll-margin-top:115px}
.prose h2{font-size:30px}
.prose h3{font-size:23px}
.prose h4{font-size:19px}
.prose h5{font-size:16px}
.prose>h2:first-child{margin-top:0}
.prose ul,.prose ol{padding-left:24px;margin-top:0;margin-bottom:25px}
.prose li{padding-left:5px;margin-bottom:8px}
.prose li p{margin-bottom:10px}
.prose a{color:var(--green);text-decoration:underline;text-decoration-color:#a4b595;text-underline-offset:4px}
.prose a:hover{text-decoration-color:var(--green)}
.prose blockquote{margin:28px 0;padding:15px 24px;border-left:3px solid var(--green);background:#edf1e6;font-size:14px}
.prose blockquote p:last-child{margin-bottom:0}
.prose img{display:block;max-width:100%;margin:30px auto;padding:15px;background:#fff;border:1px solid var(--line);border-radius:5px}
.prose :not(pre)>code{font-family:var(--mono);font-size:.85em;background:#e8edde;border-radius:3px;color:var(--green);padding:3px 5px}
.code-block{background:#222e23;border:1px solid #334a36;border-radius:5px;margin:28px 0;overflow:hidden;min-width:0;color:#e8f0de}
.code-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:9px 17px;background:#2b392c;border-bottom:1px solid #405140;font-family:var(--mono);font-size:9px;line-height:1.4;color:#b3c5a5}
.copy-code{border:1px solid #53634c;background:none;color:#d8e4ce;padding:5px 10px;border-radius:3px;font-family:var(--mono);font-size:9px}
.copy-code:hover{background:#40513a}
.prose pre{overflow-x:auto;font-family:var(--mono);font-size:12px;line-height:1.9;margin:0;padding:23px 21px;tab-size:4;white-space:pre;color:#e8f0de;background:#222e23;border-radius:4px}
.prose pre code{font:inherit;color:inherit;padding:0;background:none;white-space:pre}
.article-aside{position:sticky;top:130px;border-left:1px solid var(--line);padding-left:24px;font-size:11px;color:var(--muted)}
.article-aside>.eyebrow{font-size:9px;color:var(--green)}
.article-aside>p{font-size:11px;line-height:1.8;margin-top:14px}
.article-aside nav ul{list-style:none;padding:0;margin:17px 0 0}
.article-aside nav li{margin-bottom:12px}
.article-aside nav a:hover{color:var(--green)}
.aside-author{margin-top:35px;padding-top:23px;border-top:1px solid var(--line)}
.aside-author>.eyebrow{font-size:8px}
.aside-author>p{color:var(--ink);font-size:14px;font-weight:500;margin:12px 0 8px}
.aside-author>span:not(.eyebrow){display:block;font-size:10px;line-height:1.8}
.aside-author .text-link{margin-top:16px;font-size:10px;gap:6px}
.aside-author .icon{width:12px;height:12px}
.article-end{text-align:center;max-width:735px;margin-block:45px 60px;padding-top:35px;border-top:1px solid var(--line)}
.end-mark{font-size:30px;color:var(--green)}
.article-end>p{font-size:13px;color:var(--muted);margin:12px 0 17px}
.reading-progress{position:fixed;top:88px;left:0;height:2px;background:var(--green);width:0;z-index:21;transition:width .05s linear}
.related-section{background:#eef1e7;border-top:1px solid var(--line);padding-block:60px}
.related-section h2{font-size:33px}
.notes-shell{max-width:900px;padding-bottom:70px}
.notes-prose{border-top:1px solid var(--line);padding-top:35px}
.notes-prose #table-of-contents{border:1px solid var(--line);border-radius:5px;padding:25px;background:#eef1e7;margin-bottom:50px}
.notes-prose #table-of-contents h2{margin-top:0;font-size:24px}
.notes-prose #table-of-contents ul{font-size:12px;margin-bottom:0;padding-left:22px}
.notes-prose .src{font-size:12px;margin:24px 0;max-width:100%;color:#e8f0de}
.notes-prose table{display:block;max-width:100%;overflow:auto;border-collapse:collapse;margin:25px 0;font-size:13px}
.notes-prose td,.notes-prose th{padding:10px;border:1px solid var(--line)}
.notes-prose .section-number-2,.notes-prose .section-number-3,.notes-prose .section-number-4{color:var(--muted);font-family:var(--mono);font-size:.65em;margin-right:6px}
.not-found{padding-block:95px 120px}
.not-found>.eyebrow{color:var(--green);margin-bottom:25px}
.not-found h1{font-size:80px;letter-spacing:-.06em;line-height:1.05;margin-bottom:25px}
.not-found>p:not(.eyebrow){color:var(--muted);font-size:14px;margin-bottom:35px}
@media(min-width:1500px){.hero h1{font-size:78px}.hero{padding-block:100px 90px}}
@media(max-width:1150px){.container{width:calc(100% - 64px)}.hero{gap:40px}.hero h1{font-size:60px}.system-card{padding:24px 22px 17px}.system-card-title{font-size:21px}.metrics{grid-template-columns:135px 1fr;gap:20px}.metric{padding-left:18px}.metric strong{font-size:29px}.metric:last-child strong{font-size:23px}.about-section{gap:60px}.experience-item{grid-template-columns:210px 1fr;gap:40px}.archive-tools{align-items:flex-start}.filters{gap:4px}.filter-button{padding-inline:9px}.search-field{min-width:180px}.article-layout{gap:35px;grid-template-columns:minmax(0,1fr) 175px}}
@media(max-width:900px){.hero{gap:28px;padding-block:65px 55px}.hero h1{font-size:49px}.hero-eyebrow{font-size:8px;letter-spacing:.09em}.hero-intro{font-size:13px}.hero-actions{gap:18px}.hero-actions .button{gap:15px;padding:13px 16px;font-size:11px}.hero-actions .text-link{font-size:11px}.system-card-title{font-size:18px}.system-card-header .eyebrow{font-size:7px}.system-card-footer{font-size:7px}.metrics{grid-template-columns:1fr;gap:18px}.metrics-label br{display:none}.metrics-label{font-size:8px}.metric:first-child{padding-left:0;border-left:0}.section{padding-block:70px}.section-heading h2,.about-copy h2{font-size:36px}.section-heading>p{font-size:11px}.focus-card{padding:24px 19px}.focus-card h3{font-size:20px}.focus-card p{font-size:11px}.focus-card-top{margin-bottom:32px}.tags li{font-size:7px}.experience-item{grid-template-columns:170px 1fr;gap:25px}.experience-period{font-size:9px}.experience-content h3{font-size:20px}.experience-content ul{font-size:11px}.about-section{gap:38px}.about-copy p:not(.eyebrow){font-size:12px}.education-card{padding-left:20px}.education-card h3{font-size:20px}.skill-group .tags li{font-size:8px}.contributions{padding-top:0}.contribution-card{padding:24px}.contribution-card h3{font-size:23px}.post-card-link{padding:22px 19px}.post-card h3{font-size:22px}.post-card p{font-size:11px}.post-card-bottom{font-size:8px}.post-card-bottom .meta-dot{padding-inline:4px}.contact-section h2{font-size:62px}.page-hero h1{font-size:70px}.archive-tools{flex-direction:column;gap:18px}.search-field{width:100%;max-width:320px}.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.article-aside{display:none}.article-layout{grid-template-columns:minmax(0,1fr)}.article-shell{max-width:800px}.article-end{max-width:none}.related-section h2{font-size:31px}}
@media(max-width:650px){html{scroll-padding-top:88px}.container{width:calc(100% - 40px)}.header-inner{height:72px;gap:15px;flex-wrap:wrap}.brand{font-size:21px;gap:10px}.brand svg{width:25px;height:25px}.menu-toggle{display:flex}.site-nav{width:100%;gap:20px;flex-wrap:wrap;padding:15px 0 20px;border-top:1px solid var(--line);font-size:12px;background:var(--paper)}.site-header:has(.site-nav){position:relative}.site-header:has(.menu-toggle[aria-expanded=true]) .header-inner{height:auto;min-height:72px;padding-top:14px}.has-js .site-header{position:sticky}.has-js .site-nav{display:none}.has-js .site-nav.is-open{display:flex}.header-inner:has(.site-nav){height:auto;min-height:72px;padding-top:15px}.has-js .header-inner{height:72px;padding-top:0}.nav-cv{margin-left:auto;padding:9px 11px;gap:10px}.hero{grid-template-columns:1fr;padding-block:48px 42px;gap:45px}.hero h1{font-size:clamp(47px,10.5vw,67px);margin-bottom:23px}.hero-eyebrow{font-size:8px;margin-bottom:23px}.hero-intro{font-size:14px;max-width:480px;line-height:1.85;margin-bottom:27px}.hero-actions{gap:24px}.hero-actions .button{padding:15px 20px;font-size:12px;gap:20px}.hero-actions .text-link{font-size:12px}.hero-caption{margin-top:28px;font-size:10px}.system-card{max-width:440px;width:100%;justify-self:center;transform:rotate(1deg);padding:25px 22px 17px}.system-card-title{font-size:23px;margin-top:25px}.system-card-header .eyebrow{font-size:8px}.system-card-footer{font-size:9px}.metrics{padding-block:26px}.metrics-grid{grid-template-columns:repeat(2,1fr);gap:25px 18px}.metric{padding-left:18px}.metric:nth-child(3){padding-left:0;border-left:0}.metric strong{font-size:31px}.metric:last-child strong{font-size:27px}.metric>span{font-size:10px}.metric small{font-size:9px}.section{padding-block:55px}.section-heading{gap:20px;align-items:flex-start;margin-bottom:28px}.section-number{font-size:9px;margin-bottom:17px}.section-heading h2,.about-copy h2{font-size:34px}.section-heading>p{display:none}.focus-grid{grid-template-columns:1fr;gap:14px}.focus-card{padding:26px}.focus-card-top{margin-bottom:26px}.focus-card h3{font-size:25px}.focus-card p{font-size:13px;margin-bottom:23px}.tags li{font-size:8px}.experience-section .section-heading{align-items:flex-end}.experience-section .section-heading .text-link{font-size:10px;gap:6px;white-space:nowrap}.experience-item{grid-template-columns:1fr;gap:14px;padding:26px 0}.experience-period{flex-direction:row;align-items:center;justify-content:space-between;font-size:9px;padding:0}.experience-content h3{font-size:22px}.experience-content ul{font-size:12px}.company{font-size:12px;margin-bottom:11px}.company>span{font-size:9px;margin-left:5px}.experience-list{margin-top:30px}.about-section{grid-template-columns:1fr;gap:35px}.about-copy p:not(.eyebrow){font-size:13px}.education-card h3{font-size:22px}.education-card p{font-size:12px}.skill-group .tags li{font-size:9px}.contributions{padding-top:0}.contribution-grid{grid-template-columns:1fr;gap:14px}.contribution-card{padding:25px}.contribution-top{margin-bottom:25px}.contribution-card h3{font-size:25px}.contribution-card p{font-size:13px}.writing-section .section-heading{align-items:flex-end}.writing-section .section-heading .text-link{font-size:10px;gap:8px}.section-intro{font-size:12px;margin-bottom:25px}.post-grid{grid-template-columns:1fr;gap:14px}.post-card-link{padding:25px}.post-card-top{margin-bottom:25px}.post-card-top .eyebrow{font-size:9px}.post-card h3{font-size:26px}.post-card p{font-size:13px;margin-bottom:25px}.post-card-bottom{font-size:10px}.contact-section{grid-template-columns:1fr;padding-block:55px 40px;gap:25px}.contact-section h2{font-size:57px}.contact-section>.button{justify-self:start}.contact-email{flex-direction:column;gap:8px;font-size:11px;padding-top:20px;margin-top:8px}.footer-main{flex-direction:column;align-items:flex-start;gap:28px;padding-block:35px 30px}.footer-links{gap:25px}.footer-bottom{flex-wrap:wrap;gap:12px;font-size:8px;padding-block:20px}.footer-bottom>span:nth-child(2){display:none}.footer-bottom>a{margin-left:auto}.page-hero{padding-block:46px 28px}.page-hero h1{font-size:64px;margin-bottom:25px}.page-hero>p:not(.eyebrow){font-size:13px}.page-hero>p br{display:none}.page-hero-foot{font-size:9px}.archive-section{padding-block:26px 50px}.filter-button{font-size:9px;padding:8px 10px}.filters{gap:6px}.search-field{max-width:none}.archive-count{margin-block:22px 15px}.archive-grid .post-card-link{min-height:0}.notes-link{padding:22px 18px;gap:14px;align-items:flex-start;margin-top:28px}.notes-icon{width:36px;height:36px}.notes-link h3{font-size:21px}.notes-link p{font-size:11px}.notes-link>.icon{width:15px;height:15px;margin-top:9px}.article-shell{padding-top:25px}.article-breadcrumb{padding-bottom:25px}.article-breadcrumb>.eyebrow{font-size:8px}.article-header{padding-block:18px 28px}.article-header h1{font-size:35px;line-height:1.18;margin-bottom:24px}.article-meta{font-size:10px;gap:4px}.article-meta .meta-dot{padding-inline:3px}.archive-note{font-size:9px}.article-layout{padding-top:27px}.prose{font-size:14px;line-height:1.9}.prose h2{font-size:27px}.prose h3{font-size:22px}.prose pre{font-size:11px;padding:18px 15px}.prose blockquote{padding:15px 18px;font-size:13px}.article-end{margin-block:35px 45px}.reading-progress{top:72px}.related-section{padding-block:45px}.related-section h2{font-size:30px}.notes-prose #table-of-contents{padding:20px 15px}.notes-prose #table-of-contents ul{font-size:11px;padding-left:17px}.notes-prose pre{font-size:10px}.not-found{padding-block:70px 90px}.not-found h1{font-size:64px}.not-found>p:not(.eyebrow){font-size:13px}}
html:not(.has-js) .menu-toggle,html:not(.has-js) .copy-code,html:not(.has-js) .archive-tools{display:none}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.system-card{transform:none}}
/* Shared, readable type scale. Keep these after the layout breakpoints so
   narrower viewports never shrink supporting copy into caption-sized text. */
:root {
  --text-body: 15px;
  --text-caption: 12px;
  --text-label: 11px;
}
.eyebrow,
.hero-eyebrow,
.post-card-top .eyebrow,
.system-card-header .eyebrow,
.contribution-top .eyebrow,
.education-card > .eyebrow,
.notes-link .eyebrow,
.contact-section .eyebrow,
.article-breadcrumb > .eyebrow,
.article-aside > .eyebrow,
.aside-author > .eyebrow,
.skill-group h3 {
  font-size: var(--text-label);
}
.section-number,
.tags li,
.skill-group .tags li,
.post-card-bottom,
.metric small,
.metrics-label,
.experience-period,
.summary-meta,
.company > span,
.footer-bottom,
.archive-count,
.page-hero-foot,
.page-hero-foot .text-link,
.system-card-index,
.system-card-footer {
  font-size: var(--text-caption);
}
.focus-card > p,
.experience-content ul,
.contribution-card > p,
.post-card p,
.about-copy > p:not(.eyebrow),
.education-card p,
.notes-link p,
.section-intro,
.page-hero > p:not(.eyebrow),
.empty-state p {
  font-size: var(--text-body);
  line-height: 1.7;
}
.section-heading > p { font-size: var(--text-body); }
.card-link-label,
.earlier-experience summary { font-size: 14px; }
.experience-content ul {
  color: #444e42;
  max-width: 68ch;
}
.company { font-size: 14px; }
.current-badge { font-size: 11px; padding: 4px 10px; }
.education-card .education-minor { font-size: 13px; }
.education-card .education-school { font-size: var(--text-body); }
.tags { gap: 7px; }
.tags li,
.skill-group .tags li { padding: 5px 8px; }
.site-nav { font-size: 15px; }
.text-link,
.button,
.hero-actions .button,
.hero-actions .text-link,
.experience-section .section-heading .text-link,
.writing-section .section-heading .text-link,
.article-breadcrumb > .text-link {
  font-size: 14px;
}
.hero { padding-block: 64px 60px; }
.hero-name {
  font-size: 20px;
  font-weight: 600;
  letter-spacing: -.025em;
  margin-bottom: 8px;
}
.hero-eyebrow { margin-bottom: 23px; }
.hero-intro {
  font-size: 18px;
  line-height: 1.7;
  max-width: 52ch;
  margin-bottom: 28px;
}
.hero-caption { font-size: 12px; margin-top: 30px; }
.metrics { grid-template-columns: 150px 1fr; }
.metric strong,
.metric:last-child strong {
  font-size: 32px;
  line-height: 1.2;
  white-space: normal;
}
.metric > span { font-size: 14px; color: var(--ink); line-height: 1.5; }
.metric small { line-height: 1.5; margin-top: 6px; }
.metrics-label { color: var(--green); }
.post-card h3 { font-size: 24px; line-height: 1.3; overflow-wrap: anywhere; }
.post-card-top { margin-bottom: 24px; }
.post-card p { margin-bottom: 26px; }
.post-card-bottom { flex-wrap: wrap; }
.archive-grid .post-card-link { min-height: 0; }
.notes-link { grid-column: span 2; margin-top: 0; align-self: stretch; }
.notes-link > div { min-width: 0; }
.filters { gap: 8px; }
.filter-button {
  font-size: 13px;
  min-height: 44px;
  padding: 9px 14px;
  border-color: var(--line);
}
.filter-button[aria-pressed=true] { border-color: var(--green); }
.search-field { min-height: 46px; min-width: 240px; }
.search-field input { font-size: 16px; }
.search-field:focus-within {
  outline: 3px solid #46856e;
  outline-offset: 2px;
}
.article-layout { grid-template-columns: minmax(0,650px) minmax(160px,1fr); gap: 64px; }
.prose { font-size: 17px; line-height: 1.75; max-width: 68ch; }
.prose blockquote { font-size: inherit; }
.prose pre,
.notes-prose .src { font-size: 14px; line-height: 1.7; }
.code-toolbar,
.copy-code { font-size: 12px; }
.copy-code { min-height: 40px; min-width: 64px; }
.archive-note { font-size: 13px; line-height: 1.7; }
.article-meta { font-size: 13px; gap: 7px; }
.author-monogram { font-size: 11px; }
.article-aside { font-size: 13px; }
.aside-author > p { font-size: 16px; }
.aside-author > span:not(.eyebrow),
.aside-author .text-link,
.article-aside > p { font-size: 13px; }
.article-aside:not(.has-contents) .aside-author { margin-top: 0; padding-top: 0; border-top: 0; }
.notes-prose { max-width: none; }
.notes-prose #table-of-contents ul { font-size: 15px; }
.notes-prose table { font-size: 14px; }
.footer-main p { font-size: 14px; }
.footer-links { font-size: 13px; }
.contact-section p { font-size: 15px; }
.contact-email { font-size: 13px; }
.projects-section { padding-top: 0; }
.projects-intro { color: var(--muted); max-width: 68ch; margin-bottom: 32px; }
.project-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 18px; }
.project-card { border: 1px solid var(--line); border-radius: 5px; transition: background .2s,border-color .2s; }
.project-card:hover,
.project-card:focus-within { background: #f0f3e8; border-color: #adc1a5; }
.project-card-link { display: flex; flex-direction: column; height: 100%; padding: 26px; border-radius: 5px; }
.project-card-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; color: var(--green); margin-bottom: 24px; }
.project-card-top .icon { width: 24px; height: 24px; }
.project-card h3 { font-size: 25px; line-height: 1.25; overflow-wrap: anywhere; margin-bottom: 14px; }
.project-card-link > p { font-size: var(--text-body); line-height: 1.7; color: var(--muted); flex: 1; margin-bottom: 23px; }
.project-card .tags { margin-bottom: 24px; }
.project-card-footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid var(--line); padding-top: 17px; font-size: 14px; font-weight: 500; color: var(--green); }
.project-card-footer .icon { width: 17px; height: 17px; }
@media (max-width: 900px) {
  .metrics { grid-template-columns: 1fr; }
  .article-layout { grid-template-columns: minmax(0,1fr); }
  .notes-link { grid-column: span 1; }
  .project-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 650px) {
  .hero { padding-block: 36px 30px; gap: 26px; }
  .hero-eyebrow { letter-spacing: .06em; }
  .hero-intro { font-size: 17px; }
  .hero-actions { gap: 18px; }
  .hero-actions .button { padding: 14px 17px; gap: 15px; }
  .hero-actions .text-link { gap: 8px; }
  .hero-caption { margin-top: 25px; }
  .system-card { transform: none; padding: 18px 20px; }
  .system-map,
  .system-card-footer { display: none; }
  .system-card-title { font-size: 21px; margin: 13px 0 0; }
  .system-card-header .eyebrow,
  .system-card-index { font-size: 11px; }
  .metrics-grid { gap: 25px 18px; }
  .metric strong,
  .metric:last-child strong { font-size: 32px; }
  .search-field { min-width: 0; }
  .filter-button { padding-inline: 12px; }
  .prose { font-size: 16px; line-height: 1.7; }
  .prose pre,
  .notes-prose .src { font-size: 13px; }
  .copy-code { min-height: 44px; }
  .article-meta { gap: 5px; font-size: 12px; }
  .notes-link { gap: 14px; }
  .projects-section { padding-top: 0; }
  .projects-section .section-heading { flex-direction: column; gap: 20px; }
  .project-grid { grid-template-columns: minmax(0,1fr); gap: 14px; }
  .project-card-link { padding: 25px; }
}
@media print{.site-header,.site-footer,.article-aside,.reading-progress,.copy-code,.related-section,.hero-actions,.contact-section,.system-card,.filters,.search-field{display:none!important}body{background:#fff;color:#000;font-size:11pt}.container{width:100%;max-width:none}.hero,.about-section,.article-layout{display:block}.hero,.section{padding-block:20px}.hero h1{font-size:38px}.section h2{font-size:28px}.experience-item{grid-template-columns:170px 1fr}.prose{font-size:11pt;color:#000}.prose pre{white-space:pre-wrap;overflow:visible;background:#eee;color:#000;font-size:9pt}.post-card,.focus-card,.contribution-card{break-inside:avoid}.earlier-experience>div{display:block!important}.article-header h1{font-size:28px}a{text-decoration:none}}
