@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap";:root{font-family:DM Sans,Arial,sans-serif;color:#262820;background:#f7f7f2;font-synthesis:none;--bg: #f7f7f2;--text: #262820;--muted: #777a70;--line: #dddfd4;--surface: #efefe7;--accent: #d5ed9b;--card: #fbfbf7;--ink: #262820;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button{background:none;border:0}a,button,summary{outline-offset:5px}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid #769f34}::selection{background:var(--accent);color:#262820}svg{flex-shrink:0}.icon-button{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%}.icon-button:hover{background:var(--surface)}.button{display:inline-flex;gap:6px;justify-content:space-between;align-items:center;padding:13px 18px;font-size:12px;border-radius:5px;font-weight:500;border:1px solid var(--line);transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.primary{background:var(--text);color:var(--bg);border-color:var(--text)}.secondary:hover{background:var(--surface)}.small-mono{font:9px/1.6 ui-monospace,SFMono-Regular,monospace;color:var(--muted);letter-spacing:.05em;text-transform:uppercase}.skip{position:fixed;top:-60px;left:10px;background:var(--text);color:var(--bg);padding:12px;z-index:100}.skip:focus{top:10px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Manrope,Arial,sans-serif}[data-theme=dark]{--bg: #171915;--text: #e7e9e0;--muted: #9a9e92;--line: #33372d;--surface: #25291f;--accent: #bbd987;--card: #1d2019;color-scheme:dark;color:var(--text);background:var(--bg)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}@media print{html{color-scheme:light!important}body{background:#fff!important;color:#111!important;font-size:10px}.skip{display:none!important}:root,[data-theme=dark]{--bg: white;--text: #111;--muted: #555;--line: #ccc;--card: white;--surface: #eee;--accent: #ddd}@page{size:A4;margin:15mm}}@media(prefers-reduced-motion:no-preference){.theme-changing,.theme-changing *,.theme-changing *:before,.theme-changing *:after{transition-property:background-color,color,border-color,box-shadow,fill,stroke;transition-duration:.42s;transition-timing-function:ease}.button:active{transform:translateY(1px) scale(.97)}.icon-button:active{transform:scale(.88)}.icon-button{transition:background-color .2s,color .2s,transform .15s}}.contact{border-top:1px solid var(--line);margin-top:80px;padding:53px 0 49px!important}.contact h2{font-size:40px;font-weight:500;letter-spacing:-1.8px;margin-top:20px;display:flex;align-items:center;justify-content:space-between}.contact h2 svg{width:43px;height:43px;color:#8ca357}.contact>p{font-size:13px;color:var(--muted);margin:15px 0 27px}.contact-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:760px}.contact-method{position:relative;border:1px solid var(--line);border-radius:7px;background:var(--card)}.contact-link{display:flex;flex-direction:column;gap:16px;padding:20px;border-radius:inherit;transition:background-color .2s}.contact-link:hover{background:var(--surface)}.contact-channel{display:flex;align-items:center;gap:9px;padding-right:32px;color:var(--muted);font-size:12px}.contact-address{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:19px;letter-spacing:-.5px}.contact-address svg{color:var(--muted)}.contact-method .copy{position:absolute;top:11px;right:12px;color:var(--muted)}.copy-status{height:15px;display:block;font-size:10px;color:var(--muted);margin-top:7px}@media(max-width:640px){.contact{margin-top:54px;padding-top:36px!important}.contact h2{font-size:30px;letter-spacing:-1.3px;gap:20px}.contact h2 svg{width:28px}.contact>p{font-size:13px;line-height:1.8}.contact-links{grid-template-columns:1fr;gap:12px}.contact-link{padding:18px}.contact-address{font-size:18px}}@media print{.copy{display:none!important}.contact h2{font-size:24px}.contact h2 svg{display:none}.contact>p{margin:10px 0}.contact{padding-bottom:0!important}}.section-heading{margin-bottom:36px}.section-label{font:10px ui-monospace,SFMono-Regular,monospace;text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}.section-heading h2{font-size:30px;font-weight:550;letter-spacing:-1px;margin:15px 0 10px}.section-heading p{font-size:13px;color:var(--muted)}@media(max-width:640px){.section-heading h2{font-size:25px}.section-heading p{font-size:12px;line-height:1.7}.section-heading{margin-bottom:27px}}@media print{.section-heading{margin-bottom:16px}.section-heading h2{font-size:22px}}.jobs{width:100%}.job{display:grid;grid-template-columns:minmax(245px,.9fr) minmax(0,2fr);gap:48px;border-top:1px solid var(--line);padding:32px 0}.job-content{min-width:0}.job-top{display:flex;align-items:flex-start;gap:14px}.company-mark{width:37px;height:37px;flex-shrink:0;background:var(--surface);border:1px solid var(--line);border-radius:8px;display:grid;place-items:center;font:700 15px Manrope,sans-serif}.current .company-mark{background:var(--text);color:var(--bg);border-color:var(--text);font-size:23px;font-weight:400}.job h3{font-size:16px;letter-spacing:-.4px;font-weight:650;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.badge{background:var(--surface);color:var(--muted);font:8px ui-monospace,monospace;padding:4px 6px;border-radius:3px;letter-spacing:0}.current .badge{background:var(--accent);color:#44532c}.job-top p{font-size:11px;margin-top:4px;color:var(--muted)}.job-date{font:10px ui-monospace,monospace;color:var(--muted);margin:14px 0 0 51px}.job-summary{font-size:13px;line-height:1.8;color:var(--muted)}.job-disclosure{margin-top:17px}.job-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:40px;gap:16px;padding:10px 12px;border-radius:4px;background:var(--surface);font-size:11px;line-height:20px;text-align:left;cursor:pointer}.job-toggle-icon{position:relative;display:block;width:16px;height:16px;flex:0 0 16px}.job-toggle-icon:before,.job-toggle-icon:after{content:"";position:absolute;background:currentColor}.job-toggle-icon:before{width:12px;height:1.5px;left:2px;top:7.25px}.job-toggle-icon:after{width:1.5px;height:12px;left:7.25px;top:2px;transition:transform .22s ease}.job-toggle[aria-expanded=true] .job-toggle-icon:after{transform:scaleY(0)}.job-disclosure-content{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .28s ease,opacity .2s ease}.job-disclosure-content[data-expanded=true]{grid-template-rows:1fr;opacity:1}.job-disclosure-inner{min-height:0;overflow:hidden}.job ul{padding:0 0 0 14px;margin:18px 0 0}.job li{font-size:12px;color:var(--muted);line-height:1.85;padding-left:5px;margin-bottom:11px}.job li::marker{color:#99ad70;font-size:8px}@media(max-width:760px){.job{grid-template-columns:1fr;gap:20px;padding:26px 0}.job h3{font-size:15px}.job-summary{font-size:13px}.job li{font-size:12px}}@media print{.job{break-inside:avoid;grid-template-columns:1fr;gap:12px;padding:15px 0}.job-disclosure-content{grid-template-rows:1fr;opacity:1}.job-toggle-icon{display:none}}@media(prefers-reduced-motion:reduce){.job-disclosure-content,.job-toggle-icon:after{transition:none}}footer{display:flex;align-items:center;border-top:1px solid var(--line);gap:20px;padding:16px 0}footer>div{width:100%;justify-content:flex-end;display:flex;align-items:center;gap:20px}footer button{min-height:32px;padding:0;line-height:1.4;font-size:9px;color:var(--muted);display:flex;gap:6px;align-items:center}@media(max-width:640px){footer{flex-wrap:wrap;gap:14px;padding:12px 0}footer>div{width:100%;margin:0;justify-content:space-between}}@media print{footer{display:none!important}}.header{height:80px;display:flex;align-items:center;border-bottom:1px solid var(--line);gap:40px}.logo{font-family:Manrope,Arial,sans-serif;font-size:33px;font-weight:800;letter-spacing:-2px}.logo span{color:#86a64f}.header nav{display:flex;gap:29px;margin-left:auto;font-size:13px}.header nav a{color:var(--muted);transition:color .2s}.header nav a:hover{color:var(--text)}.controls{display:flex;align-items:center;gap:20px}.language{display:flex;gap:8px;align-items:center;font:11px ui-monospace,SFMono-Regular,monospace}.language a{padding:8px 0;color:var(--muted)}.language a[aria-current=page]{color:var(--text);font-weight:700}.language>span{color:var(--line)}.divider{height:17px;width:1px;background:var(--line)}.theme-icon{display:inline-flex}@media(max-width:640px){.header{height:60px;gap:20px}.header nav{display:none}.controls{margin-left:auto;gap:16px}}@media print{.header{display:none!important}}.theme-changing .theme-icon{animation:theme-icon-in .34s cubic-bezier(.2,.7,.2,1)}@keyframes theme-icon-in{0%{opacity:0;transform:rotate(-65deg) scale(.65)}to{opacity:1;transform:rotate(0) scale(1)}}@media(prefers-reduced-motion:no-preference){.language a:active{transform:translateY(1px)}.language a{transition:background-color .2s,color .2s,transform .15s}}@media(prefers-reduced-motion:reduce){.theme-icon{animation:none}}@media print{.theme-icon{animation:none!important}}.print-contact{display:none}.hero{padding:66px 0 0}.eyebrow{display:flex;align-items:center;gap:9px;font:11px ui-monospace,monospace;letter-spacing:.04em}.live-dot{display:inline-block;height:6px;width:6px;border-radius:50%;background:#83a14e;box-shadow:0 0 0 4px #83a14e12}.hero-index{margin-left:auto;color:var(--muted);font-size:10px;letter-spacing:.08em}.hero-name{font-family:Manrope,Arial,sans-serif;font-size:18px;font-weight:550;letter-spacing:-.3px}.hero h1{font-weight:650;letter-spacing:-2.2px;font-size:clamp(34px,4.6vw,60px);line-height:1.16;margin:20px 0 48px}.name-dot{color:#91ad5d}.hero-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:75px}.hero h2{font-size:28px;font-weight:500;line-height:1.45;letter-spacing:-.7px}.hero h2 span{color:var(--muted)}.intro{font-size:15px;color:var(--muted);line-height:1.8;max-width:440px;margin:20px 0 27px}.hero-actions{display:flex;gap:11px}.location{margin-top:20px;display:flex;align-items:center;gap:6px;font-size:10px;color:var(--muted);flex-wrap:wrap}.dot-sep{padding:0 3px}.hero-art{position:relative;min-height:270px;align-self:center}.art-grid{position:absolute;inset:-35px -5px -10px;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:27px 27px;-webkit-mask-image:radial-gradient(ellipse,#0009,transparent 70%);mask-image:radial-gradient(ellipse,#0009,transparent 70%)}.art-window{border:1px solid var(--line);border-radius:9px;position:absolute;background:var(--card);width:370px;height:222px}.back{top:12px;left:42px;transform:rotate(5deg);background:var(--accent);border-color:#bdce9c}.front{left:18px;top:18px;transform:rotate(-3deg);box-shadow:0 12px 30px #00000006}.window-top{display:flex;gap:5px;align-items:center;padding:13px;border-bottom:1px solid var(--line)}.window-top i{width:5px;height:5px;background:var(--line);border-radius:50%}.window-top small{font:9px ui-monospace,monospace;margin-left:auto;color:var(--muted)}.window-bottom{display:flex;align-items:center;gap:7px;border-top:1px solid var(--line);padding:10px 14px;color:var(--muted);font:8px ui-monospace,monospace}.window-bottom:hover{color:var(--text);background:var(--surface)}.window-bottom>svg{margin-left:auto}.window-bottom .live-dot{width:4px;height:4px}.name-letter{display:inline-block;transform-origin:50% 70%}[data-theme=dark] .hero-art{--card: #22261d}@media(min-width:1450px){.hero{padding-top:75px}}@media(max-width:1199px){.hero-grid{gap:35px}.art-window{width:330px}}@media(max-width:900px){.hero-grid{grid-template-columns:1fr 1fr;gap:15px}.hero h2{font-size:23px}.art-window{width:280px;height:205px}.hero-art{min-height:240px}.front{left:0}.back{left:18px}}@media(max-width:640px){.hero{padding-top:38px}.eyebrow{font-size:9px}.hero-index{font-size:7px}.hero-name{font-size:16px}.hero h1{font-size:clamp(32px,8vw,46px);letter-spacing:-1.3px;margin:18px 0 30px}.hero-grid{grid-template-columns:1fr}.hero h2{font-size:24px}.intro{font-size:14px;margin:15px 0 23px}.hero-art{margin-top:53px;min-height:240px;width:310px;max-width:100%;justify-self:center}.art-window{width:280px}.location{font-size:9px}}@media print{.hero-art,.hero-actions,.location{display:none!important}.hero h1{font-size:30px;letter-spacing:-1px;margin:12px 0}.hero-grid{display:block}.hero h2{font-size:18px}.intro{max-width:none}.eyebrow{font-size:9px}.hero-index{display:none}}.name-word{white-space:nowrap}@media(prefers-reduced-motion:reduce){.name-letter{transform:none!important}}@media print{.name-letter{transform:none!important;opacity:1!important}}.art-window.front{height:auto;overflow:hidden}.about-card-body{padding:20px}.about-card-body h3{color:var(--accent);font:12px/1.5 ui-monospace,SFMono-Regular,monospace;margin-bottom:12px}[data-theme=light] .about-card-body h3{color:#597135}.about-card-body p{font-size:13px;line-height:1.7}.about-card-body p+p{margin-top:12px;color:var(--muted)}.hero-art .window-bottom{font-size:10px;padding:12px 20px}@media(max-width:900px){.hero-art{min-height:330px}.about-card-body{padding:18px}.about-card-body p{font-size:12px}}dialog{background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:12px;max-width:460px;padding:28px}dialog::backdrop{background:#0007;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog-top{display:flex;align-items:center;gap:20px;justify-content:space-between}.dialog-top h2{font-size:20px}dialog p{font-size:14px;line-height:1.8;color:var(--muted);margin-top:20px}@media print{dialog{display:none!important}}.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.project{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:var(--card)}.project-body{display:flex;flex-direction:column;flex:1;padding:23px 20px}.project h3{font-size:19px;font-weight:600;letter-spacing:-.6px;margin:6px 0 0}.project p{font-size:12px;line-height:1.85;color:var(--muted)}.tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:auto;padding-top:17px}.tags span{font:8px ui-monospace,monospace;border:1px solid var(--line);padding:5px 6px;border-radius:3px;color:var(--muted)}@media(max-width:900px){.projects{gap:16px;grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.projects{grid-template-columns:1fr;gap:23px}.project p{font-size:13px}.project-body{padding:23px}.project h3{font-size:21px}}@media print{.projects{grid-template-columns:repeat(2,1fr)}.project{break-inside:avoid}.project-body{padding:12px}}.project-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.project-link{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:8px 10px;border:1px solid var(--line);border-radius:4px;font-size:11px;line-height:1.4;transition:background-color .18s,border-color .18s}.project-link:hover{background:var(--surface);border-color:var(--muted)}.project-identity{display:flex;align-items:center;gap:14px;min-height:64px;margin-bottom:20px}.project-identity>div{min-width:0}.project-logo{display:block;width:64px;height:64px;flex-shrink:0;object-fit:contain;border-radius:12px}.project-logo-wordmark{padding:8px;background:var(--surface)}.stack-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:33px 40px}.stack-group{border-top:1px solid var(--line);padding-top:18px}.stack-group h3{font-size:12px;font-weight:600;display:flex;gap:13px;margin-bottom:19px}.stack-group h3>span{font:8px ui-monospace,monospace;color:var(--muted);padding-top:3px}.stack-tags{display:flex;flex-wrap:wrap;gap:8px}.stack-tags>span{background:var(--surface);padding:7px 10px;font-size:10px;border-radius:4px}.education{display:grid;grid-template-columns:1fr 2fr auto;gap:25px;border-top:1px solid var(--line);margin-top:45px;padding-top:27px}.education h3{font-size:12px;font-weight:600;margin-bottom:7px}.education p{font-size:11px;color:var(--muted);line-height:1.8}.education .education-languages{margin-top:12px}@media(max-width:900px){.stack-grid{gap:28px 22px}}@media(max-width:640px){.stack-grid{grid-template-columns:1fr 1fr;gap:28px 20px}.stack-group h3{font-size:11px;gap:8px}.stack-tags>span{font-size:9px;padding:7px 8px}.education{grid-template-columns:1fr auto}.education>div{grid-row:2;grid-column:1/-1}.education>.small-mono:last-child{grid-column:2;grid-row:1}}@media print{.stack-grid{grid-template-columns:repeat(3,1fr)}}.header,main,footer{max-width:1120px;margin:auto}main>section:not(.hero){padding-top:88px}@media(min-width:1450px){.header,main,footer{max-width:1160px}}@media(max-width:1199px){.header,main,footer{margin-left:48px;margin-right:48px}}@media(max-width:900px){.header,main,footer{margin-left:30px;margin-right:30px}}@media(max-width:640px){.header,main,footer{margin-left:22px;margin-right:22px}main>section:not(.hero){padding-top:59px}}@media print{main{margin:0;max-width:none}main>section{padding-top:25px!important;margin-top:0!important}}@media print{@page{size:A4;margin:14mm 15mm}html,body{background:#fff!important;color:#202020!important;font-size:10pt;line-height:1.45}main{width:auto;max-width:none;margin:0}main>section,main>section:not(.hero){padding:0!important;margin:0!important}*,*:before,*:after{animation:none!important;transition:none!important;box-shadow:none!important}p,li{orphans:3;widows:3}h2,h3,.section-heading,.job-meta{break-after:avoid}.hero{padding-bottom:6mm!important}.hero .live-dot,.hero h2,.hero-art,.hero-actions,.location,.hero-index,.name-dot,.company-mark,.badge,.job-toggle,.project-logo,.project-link svg{display:none!important}.hero-name{font-size:14pt;letter-spacing:0}.hero h1{margin:2mm 0;font-size:23pt;line-height:1.2;letter-spacing:-.7px}.hero .intro{margin:2mm 0;font-size:10pt;line-height:1.45}.print-contact{display:flex;flex-wrap:wrap;gap:2mm 5mm;margin-top:3mm;font-size:9pt}.section-heading{margin:0 0 4mm}.section-label,.section-heading>p{display:none}.section-heading h2{margin:0;font-size:16pt;line-height:1.3;letter-spacing:-.4px}.job{display:block;padding:3mm 0;break-inside:avoid}.job-meta{display:flex;align-items:baseline;justify-content:space-between;gap:4mm;margin-bottom:2mm}.job h3{font-size:11pt;letter-spacing:0}.job-top p,.job-date{font-size:8pt;line-height:1.4;margin:1mm 0 0}.job-date{text-align:right;flex-shrink:0}.job-summary,.job li{font-size:9pt;line-height:1.45}.job-disclosure{margin-top:2mm}.job-disclosure-content,.job-disclosure-inner{display:block;overflow:visible;opacity:1}.job ul{margin:0;padding-left:4mm}.job li{margin:0 0 1.5mm;padding-left:1mm}.job li:last-child{margin-bottom:0}#projects,#stack{break-before:page}.projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3mm}.project{break-inside:avoid;border-radius:2mm}.project-body{padding:3mm}.project-identity{min-height:0;margin-bottom:2mm}.project .small-mono{font-size:6.5pt;letter-spacing:0}.project h3{font-size:12pt;margin:1mm 0 0;letter-spacing:-.2px}.project p{font-size:8.5pt;line-height:1.45}.tags{gap:1mm;padding-top:2mm}.tags span{font-size:6pt;padding:.7mm 1mm}.project-links{margin-top:2mm;gap:3mm}.project-link{min-height:0;padding:0;border:0;border-radius:0;font-size:8pt;text-decoration:underline}.stack-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:5mm 7mm}.stack-group{padding-top:3mm;break-inside:avoid}.stack-group h3{font-size:10pt;margin-bottom:2mm}.stack-group h3>span{display:none}.stack-tags{gap:1mm 3mm}.stack-tags>span{background:none;padding:0;font-size:9pt;line-height:1.6}.education{grid-template-columns:1fr auto;gap:3mm;margin-top:7mm;padding-top:4mm;break-inside:avoid}.education>.small-mono:first-child{grid-column:1 / -1}.education>div{grid-column:1;grid-row:2}.education>.small-mono:last-child{grid-column:2;grid-row:2}.education h3{font-size:10pt;margin-bottom:2mm}.education p{font-size:9pt;line-height:1.5}.education .education-languages{margin-top:3mm}main>#contact{margin-top:7mm!important;padding-top:4mm!important;break-inside:avoid}.contact h2{font-size:16pt;letter-spacing:-.4px;margin:0 0 3mm}.contact>p,.copy-status{display:none}.contact-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:5mm}.contact-method{border:0}.contact-link{padding:0;gap:1mm}.contact-channel{font-size:8pt}.contact-address{font-size:11pt;letter-spacing:0}.contact-link svg{display:none}}
