@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700&family=Playfair+Display:wght@400;500&display=swap";:root{--bg:#0c0f13;--panel:#12171d;--panel2:#171e25;--ink:#eff2f3;--muted:#a4afb9;--line:#2b343d;--accent:#75d2c1;--accent-soft:#19302f;--serif:"Playfair Display", Georgia, serif;--sans:"DM Sans", sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-theme=light]{--bg:#f8faf9;--panel:#edf2f0;--panel2:#e4ece8;--ink:#18242b;--muted:#52646b;--line:#c8d5d0;--accent:#176c61;--accent-soft:#daeae4;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{background:var(--bg);color:var(--ink);font:16px/1.7 var(--sans);margin:0;transition:background .2s,color .2s}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}a,button{touch-action:manipulation}:is(button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,select:focus-visible){outline:2px solid var(--accent);outline-offset:5px}img{max-width:100%;height:auto}p{color:var(--muted);margin:12px 0 20px}h1,h2,h3{margin:0 0 20px;line-height:1.18}h1,h2{font-family:var(--serif);letter-spacing:-1.5px;font-weight:400}h1{font-size:clamp(42px,5.7vw,74px)}h2{font-size:clamp(30px,3.4vw,44px)}h3{letter-spacing:-.4px;font-size:21px;font-weight:500}.shell{max-width:1232px;margin:auto;padding:0 48px}.site-header{z-index:20;border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:25px;min-height:87px;display:flex}.brand{font-family:var(--serif);white-space:nowrap;align-items:center;gap:10px;font-size:18px;line-height:1.3;display:flex}.brand small{font:9px/1.5 var(--sans);letter-spacing:2.1px;color:var(--muted);margin-top:5px;display:block}.brand img{width:42px}.nav{gap:25px;font-size:14px;display:flex}.nav a{padding:7px 0}.nav [aria-current=page]{color:var(--accent);box-shadow:0 1px var(--accent)}.header-actions{align-items:center;gap:13px;display:flex}.icon-button{width:38px;height:38px;color:var(--ink);border:1px solid var(--line);background:0 0;place-items:center;display:grid}.mobile-menu{display:none}.button{background:var(--ink);color:var(--bg);border:1px solid var(--ink);border-radius:2px;justify-content:center;align-items:center;gap:18px;min-height:46px;padding:12px 21px;font-size:14px;font-weight:600;display:inline-flex}.button:hover{background:var(--accent);border-color:var(--accent);color:var(--bg)}.button.secondary{color:var(--ink);border-color:var(--line);background:0 0}.button.secondary:hover{color:var(--accent);border-color:var(--accent)}.button.small{min-height:38px;padding:7px 15px;font-size:13px}.eyebrow{letter-spacing:2.2px;text-transform:uppercase;color:var(--accent);font-size:11px;font-weight:600;line-height:1.8}.hero{grid-template-columns:1.3fr 1fr;align-items:center;gap:82px;padding-top:66px;padding-bottom:70px;display:grid}.location{letter-spacing:1.7px;border:1px solid var(--line);color:var(--muted);align-items:center;gap:10px;margin-bottom:18px;padding:7px 12px;font-size:11px;display:inline-flex}.location>span{background:var(--accent);border-radius:50%;width:6px;height:6px}.hero .eyebrow{letter-spacing:2.1px;font-size:10px}.hero h1{letter-spacing:-2.6px;margin:22px 0 27px;font-size:clamp(55px,6.1vw,80px);line-height:1.05}.hero h1>span{color:var(--muted);letter-spacing:-.5px;margin-bottom:8px;font-size:29px;display:block}.hero h1 em{color:var(--accent);font-style:normal}.lead{max-width:740px;font-size:18px;line-height:1.75}.hero .lead{font-size:17px}.hero-actions{flex-wrap:wrap;gap:14px;margin:28px 0;display:flex}.socials{flex-wrap:wrap;align-items:center;gap:23px;display:flex}.socials a{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:inline-flex}.socials a:hover{color:var(--accent)}.medium-icon{font:700 19px Georgia}.hero-profile{margin-top:15px;position:relative}.profile-frame{clip-path:polygon(14% 0,100% 0,100% 86%,86% 100%,0 100%,0 14%);background:#111e29;border:1px solid #3a4850;justify-content:center;align-items:center;height:327px;display:flex;position:relative}.profile-frame>img{width:226px}.frame-label{font:9px var(--sans);color:#91a7ad;letter-spacing:2px;position:absolute;top:21px;left:22%}.frame-bottom{font:9px var(--sans);color:#91a7ad;letter-spacing:1.5px;justify-content:space-between;display:flex;position:absolute;bottom:22px;left:23px;right:23px}.profile-caption{background:var(--panel);border:1px solid var(--line);margin:18px -15px 0 25px;padding:25px 26px;position:relative}.profile-caption .eyebrow{font-size:10px}.profile-caption h2{letter-spacing:-.6px;margin:8px 0 10px;font-size:25px;line-height:1.3}.profile-caption p{margin:0;font-size:12px;line-height:1.7}.stack-band{border-block:1px solid var(--line);background:var(--panel)}.stack-band .shell{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:22px;padding-top:23px;padding-bottom:23px;display:flex}.stack-band span{letter-spacing:2px;color:var(--muted);font-size:10px}.stack-band strong{font-family:Manrope, var(--sans);color:var(--muted);font-size:19px;font-weight:500}.section{padding-top:80px;padding-bottom:80px}.section.compact{padding-top:16px}.section-heading{justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:34px;display:flex}.section-heading h2{margin:10px 0 0}.section-heading p{max-width:660px;margin-bottom:0}.text-link{color:var(--accent);white-space:nowrap;align-items:center;gap:10px;font-size:14px;display:inline-flex}.about-split{grid-template-columns:1fr 1.1fr;gap:70px;display:grid}.about-split h3{font-family:var(--serif);font-size:32px;font-weight:400;line-height:1.5}.about-split em{color:var(--accent);font-style:normal}.focus-grid{grid-template-columns:repeat(4,1fr);gap:18px;margin-top:38px;display:grid}.focus-card{border-top:1px solid var(--line);padding:25px 0 0}.focus-card>div{color:var(--accent);justify-content:space-between;margin-bottom:20px;display:flex}.focus-card>div>span{color:var(--muted);font-size:11px}.focus-card h3{font-size:18px}.focus-card p{font-size:14px}.tinted{background:var(--panel);border-block:1px solid var(--line)}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px;display:grid}.project-card{border:1px solid var(--line);background:var(--bg);transition:transform .2s}.project-card:hover{transform:translateY(-3px)}.project-visual{color:#c1d9de;background:#15262e;border-bottom:1px solid #344852;flex-direction:column;justify-content:space-between;min-height:235px;padding:20px;display:flex}.project-visual.ai{color:#cbcaeb;background:#202336}.visual-caption,.visual-footer{letter-spacing:1.5px;color:#afc1cb;justify-content:space-between;font-size:9px;display:flex}.visual-footer{letter-spacing:.4px;font-size:10px}.flow{justify-content:center;align-items:stretch;margin:30px 0;display:flex}.flow-part{flex:1;align-items:center;min-width:0;display:flex}.flow-node{text-align:center;background:#111b24;border:1px solid #50616d;flex-direction:column;flex:1;justify-content:center;min-height:75px;padding:12px 10px;font-size:12px;line-height:1.4;display:flex}.flow-node small{color:#83bcb9;letter-spacing:1px;margin-bottom:5px;font-size:9px;display:block}.flow-arrow{color:#729795;margin:0 6px}.project-body{padding:27px}.card-label{color:var(--accent);justify-content:space-between;gap:15px;margin-bottom:18px;font-size:10px;display:flex}.card-label>span{color:var(--muted);text-align:right}.project-body h3{font-size:25px}.project-body h3 a{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-body p{font-size:15px}.tags{flex-wrap:wrap;gap:8px;margin:20px 0 24px;display:flex}.tags>span{border:1px solid var(--line);color:var(--muted);padding:3px 9px;font-size:11px}.repo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:17px;display:grid}.repo-card{border:1px solid var(--line);background:var(--panel);flex-direction:column;align-items:flex-start;padding:23px;display:flex}.repo-card>svg{color:var(--accent);margin-bottom:17px}.repo-card h3{overflow-wrap:anywhere;flex:1;font-size:16px;line-height:1.5}.repo-card>div{width:100%;color:var(--muted);justify-content:space-between;margin-top:14px;font-size:12px;display:flex}.feed-status{color:var(--muted);align-items:center;gap:7px;margin:0 0 20px;font-size:12px;display:flex}.feed-loading{border:1px solid var(--line);color:var(--muted);padding:35px}.feed-loading>span{background:var(--accent);border-radius:50%;width:8px;height:8px;margin-right:12px;display:inline-block}.timeline article{border-top:1px solid var(--line);grid-template-columns:30% 1fr;gap:30px;padding:30px 0;display:grid}.timeline-date{color:var(--muted);font-size:13px}.timeline-date>span{color:var(--accent);margin-right:25px}.timeline h3{margin:0 0 10px;font-size:23px}.timeline p{max-width:620px;margin:0}.article-item{border-top:1px solid var(--line);align-items:center;gap:25px;padding:26px 0;display:flex}.article-number{color:var(--muted);font-size:13px}.article-item>div{flex:1}.article-item h3{margin:9px 0 0;font-size:23px;line-height:1.35}.article-item .eyebrow{font-size:10px}.article-item>svg{color:var(--accent);flex-shrink:0}.faq-split{grid-template-columns:1fr 1.2fr;gap:80px;display:grid}.faq-split h2{margin:12px 0}.faq details{border-top:1px solid var(--line);padding:21px 0}.faq summary{cursor:pointer;font-size:17px}.faq p{font-size:15px}.contact-banner{border:1px solid var(--line);background:var(--panel);justify-content:space-between;align-items:center;gap:30px;padding:48px;display:flex}.contact-banner h2{margin:14px 0 20px}.contact-banner p{margin-bottom:0}.contact-banner .button{background:var(--accent);border-color:var(--accent);color:var(--bg);flex-shrink:0}footer{border-top:1px solid var(--line);background:var(--panel)}.footer-top{grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px;padding-top:50px;padding-bottom:40px;display:grid}.footer-top>div>a:not(.brand){color:var(--muted);margin-top:10px;font-size:14px;display:block}.footer-top p{font-size:14px;line-height:1.9}.footer-top .eyebrow{font-size:10px}.footer-bottom{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:20px;padding-top:20px;padding-bottom:20px;font-size:12px;display:flex}.page-heading{padding-top:64px;padding-bottom:40px}.page-heading h1{max-width:860px;margin-top:20px}.page-heading .lead{max-width:800px}.explorer-toolbar{flex-wrap:wrap;justify-content:space-between;gap:20px;display:flex}.filters{flex-wrap:wrap;gap:8px;display:flex}.filters button{border:1px solid var(--line);color:var(--muted);background:0 0;padding:9px 13px;font-size:12px}.filters button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.search{border:1px solid var(--line);align-items:center;gap:10px;padding:0 12px;display:flex}.search input{color:var(--ink);background:0 0;border:0;width:100%;min-width:200px;padding:10px 0;font-size:13px}.result-count{font-size:12px}.empty{text-align:center;border:1px solid var(--line);padding:55px}.spaced{margin-top:50px}.back-link{color:var(--muted);margin-bottom:35px;font-size:13px;display:block}.case-layout{grid-template-columns:220px 1fr;gap:60px;padding-bottom:30px;display:grid}.case-layout>aside{align-self:start;position:sticky;top:120px}.case-layout>aside>a{color:var(--muted);margin-top:18px;font-size:14px;display:block}.status-note{border-left:2px solid var(--accent);background:var(--panel);color:var(--muted);margin-top:28px;padding:12px;font-size:12px}.case-layout article section{margin-top:45px}.case-layout article h2{margin-top:12px;font-size:32px}.diagram-caption{font-size:12px}.contact-grid{grid-template-columns:1.4fr 1fr;gap:60px;display:grid}.contact-panel{background:var(--panel);border:1px solid var(--line);padding:37px}.contact-panel h2{margin-top:15px}.contact-details{padding:25px 0}.contact-details .socials{margin-top:22px}dt{color:var(--muted);margin-top:24px;font-size:12px}dd{margin:5px 0}.email-link{overflow-wrap:anywhere;color:var(--accent);margin-top:20px;display:block}.prose{max-width:900px;padding-bottom:65px}.prose h2{margin-top:30px;font-size:30px}.skip{position:absolute;left:-10000px}.skip:focus{z-index:30;background:var(--ink);color:var(--bg);padding:10px;top:12px;left:12px}.notice{background:var(--accent-soft);border-left:2px solid var(--accent);padding:18px}.notice a{text-decoration:underline}.admin-login{max-width:550px;margin:0 auto;padding:50px 25px 80px}.admin-login h1{font-size:40px}.editor{padding-top:40px;padding-bottom:60px}.editor-top{justify-content:space-between;align-items:center;gap:25px;margin-bottom:30px;display:flex}.editor-top h1{font-size:40px}.editor-toolbar{flex-wrap:wrap;gap:12px;display:flex}.editor label,.admin-login label{color:var(--muted);margin:18px 0;font-size:13px;display:block}.editor input,.editor textarea,.editor select,.admin-login input{background:var(--panel);width:100%;color:var(--ink);border:1px solid var(--line);margin-top:6px;padding:10px 12px;display:block}.editor textarea{resize:vertical;min-height:120px}.editor .json-editor{min-height:550px;font:13px/1.6 monospace}.editor-tabs{flex-wrap:wrap;gap:10px;margin-bottom:25px;display:flex}.editor-tabs button{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:9px 15px}.editor-tabs button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.editor-grid{grid-template-columns:1fr 1fr;gap:0 30px;display:grid}.editor-fieldset{border:1px solid var(--line);margin:25px 0;padding:25px}.editor .error,.admin-login .error{color:#ec9a91}.saved{color:var(--accent)}button:disabled{opacity:.5;cursor:wait}@media (min-width:1400px){.hero{padding-top:80px;padding-bottom:85px}}@media (max-width:1050px){.shell{padding-left:30px;padding-right:30px}.header-inner{gap:16px}.nav{gap:17px}.brand{font-size:16px}.header-actions .button{display:none}.hero{gap:45px}.hero h1{font-size:65px}.focus-grid{grid-template-columns:repeat(2,1fr)}.footer-top{gap:20px}.case-layout{grid-template-columns:180px 1fr;gap:35px}.faq-split{gap:35px}}@media (max-width:750px){.shell{padding-left:22px;padding-right:22px}.site-header{position:sticky}.header-inner{flex-wrap:wrap;gap:10px;min-height:76px}.brand{font-size:16px}.brand small{font-size:8px}.mobile-menu{display:grid}.nav{order:3;justify-content:space-between;width:100%;padding:8px 0 18px;display:none}.nav.open{display:flex}.hero{grid-template-columns:1fr;gap:35px;padding-top:35px;padding-bottom:40px}.hero h1{font-size:clamp(52px,11vw,75px)}.hero h1>span{font-size:26px}.hero-profile{width:100%;max-width:480px;margin:10px auto 0}.profile-frame{height:270px}.profile-frame>img{width:190px}.profile-caption{margin:12px 0 0 25px}.stack-band .shell{justify-content:flex-start;gap:18px 27px}.stack-band span{width:100%}.stack-band strong{font-size:17px}.section{padding-top:48px;padding-bottom:48px}.section-heading{flex-direction:column;align-items:start;gap:17px;margin-bottom:25px}.section-heading h2{font-size:34px}.about-split,.faq-split,.contact-grid{grid-template-columns:1fr;gap:22px}.about-split h3{margin:0;font-size:28px}.project-grid,.repo-grid{grid-template-columns:1fr}.project-visual{min-height:210px}.flow-node{padding:10px 5px;font-size:11px}.flow-arrow{margin:0 4px}.project-body{padding:22px}.card-label{font-size:10px}.project-body h3{font-size:23px}.timeline article{grid-template-columns:1fr;gap:14px;padding:23px 0}.article-item{gap:13px}.article-item h3{font-size:20px}.article-item .eyebrow{letter-spacing:1px}.contact-banner{flex-direction:column;align-items:start;padding:25px}.contact-banner h2{font-size:32px}.footer-top{grid-template-columns:1fr 1fr;gap:25px;padding-top:35px}.footer-top>div:first-child,.footer-top>div:last-child{grid-column:1/-1}.footer-bottom{flex-wrap:wrap}.page-heading{padding-top:40px;padding-bottom:25px}.page-heading h1{font-size:43px;line-height:1.12}.lead{font-size:17px}.case-layout{grid-template-columns:1fr;gap:25px}.case-layout>aside{flex-wrap:wrap;gap:0 15px;display:flex;position:static}.case-layout>aside>.eyebrow{width:100%}.case-layout>aside .status-note{width:100%;margin-top:15px}.case-layout article h2{font-size:29px}.search{width:100%}.editor-top{flex-direction:column;align-items:start}.editor-grid{grid-template-columns:1fr}.editor-fieldset{padding:17px}.contact-panel{padding:25px}}@media (max-width:380px){.hero h1{font-size:49px}.hero-actions .button{gap:10px;padding:10px 13px}.socials{gap:16px}.focus-grid{grid-template-columns:1fr}.header-actions{gap:7px}.brand{font-size:14px}.brand img{width:35px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.nav{perspective:900px;gap:12px}.nav a{isolation:isolate;border:1px solid #0000;border-radius:5px;padding:8px 12px;transition:background .18s,border-color .18s,box-shadow .18s,color .18s;position:relative}.nav a>span{display:inline-block;transform:translateZ(8px)}.nav a[aria-current=page]{background:var(--accent-soft);border-color:var(--line);box-shadow:0 3px 0 var(--line), inset 0 1px 0 color-mix(in srgb, var(--accent) 18%, transparent)}:is(.nav a:hover,.nav a:focus-visible){background:var(--panel2);border-color:var(--line);box-shadow:0 4px 0 var(--line), 0 9px 20px #00000012}.motion-surface{transform:perspective(1000px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transform-style:preserve-3d;transition:transform .2s cubic-bezier(.2,.7,.2,1),box-shadow .22s,border-color .22s}.motion-surface.is-tilting{transform:perspective(1000px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateY(-3px)}.project-card.is-tilting,.repo-card.is-tilting{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 18px 30px #00000020}.hero-profile.is-tilting .profile-caption{border-color:color-mix(in srgb, var(--accent) 40%, var(--line))}.profile-caption,.project-body h3 svg,.button svg,.text-link svg,.article-item>svg{transition:transform .2s,border-color .2s}.button:hover svg,.text-link:hover svg,.article-item:hover>svg,.project-body h3 a:hover svg{transform:translate(2px,-2px)}.button,.icon-button{transition:background .18s,border-color .18s,color .18s,transform .18s}.button:active,.icon-button:active{transform:translateY(1px)}@media (max-width:1050px){.nav{gap:3px}.nav a{padding:8px}}@media (max-width:750px){.nav.open{animation:.18s ease-out menu-arrive}.nav a{padding:8px 9px}}@keyframes menu-arrive{0%{opacity:.5;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}@media (hover:none){.project-card:hover{transform:none}}@media (prefers-reduced-motion:reduce){.motion-surface,.motion-surface.is-tilting,.nav a>span,.project-card:hover,.button:active,.icon-button:active,.button:hover svg,.text-link:hover svg,.article-item:hover>svg,.project-body h3 a:hover svg{transform:none!important}}.timeline .employer{color:var(--accent);margin:0 0 8px;font-size:17px}.timeline .employment-meta{margin-bottom:16px;font-size:13px}.timeline .experience-copy{margin-top:14px}.timeline .tags{margin-bottom:0}.education-grade{border:1px solid var(--line);color:var(--accent);margin:8px 0;padding:3px 12px;font-size:12px;display:inline-block}.education-activities{margin-top:18px}.education-activities summary{cursor:pointer;font-size:14px}.education-activities p{margin-top:12px}.architecture-figure{border:1px solid var(--line,#36504d);border-radius:18px;margin:0;padding:1.5rem}.architecture-figure h2{font-size:1.5rem}.architecture-boundaries{gap:1rem;margin:1.5rem 0;display:grid}.architecture-boundary{border:1px dashed;border-radius:12px;padding:1rem}.architecture-boundary h3{margin:0 0 .8rem;font-size:1rem}.architecture-boundary p{overflow-wrap:anywhere;background:#5eaa941a;border-radius:8px;margin:.5rem 0;padding:.7rem}.architecture-figure dt{margin-top:1rem;font-weight:700}.architecture-figure dd{margin:.5rem 0;line-height:1.7}.evidence-panel{border-bottom:1px solid var(--line,#36504d);padding-bottom:2rem}.cv-download{flex-wrap:wrap;align-items:center;gap:1rem;padding-top:2rem;display:flex}.cv-download span{opacity:.75;font-size:.8rem}
