*,:before,:after{box-sizing:border-box}@font-face{font-family:Calibre;src:url(/assets/Calibre-Regular-BF8rtuU2.woff2)format("woff2"),url(/assets/Calibre-Regular--1hlrhWf.woff)format("woff");font-weight:400;font-style:normal;font-display:auto}@font-face{font-family:Calibre;src:url(/assets/Calibre-Medium-Dr3uPw4d.woff2)format("woff2"),url(/assets/Calibre-Medium-CLLEtnc8.woff)format("woff");font-weight:500;font-style:normal;font-display:auto}@font-face{font-family:Calibre;src:url(/assets/Calibre-Semibold-ctWswtER.woff2)format("woff2"),url(/assets/Calibre-Semibold-4458Tx-4.woff)format("woff");font-weight:600;font-style:normal;font-display:auto}@font-face{font-family:SF Mono;src:url(/assets/SFMono-Regular-CefSygqP.woff2)format("woff2"),url(/assets/SFMono-Regular-pHQ7OiT5.woff)format("woff");font-weight:400;font-style:normal;font-display:auto}@font-face{font-family:SF Mono;src:url(/assets/SFMono-Semibold-Cbwo1XB1.woff2)format("woff2"),url(/assets/SFMono-Semibold-GntYHmax.woff)format("woff");font-weight:600;font-style:normal;font-display:auto}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#060609;--bg-soft:#0a0a0f;--surface:#101017;--surface-2:#161622;--surface-3:#1d1d2b;--line:#282839;--line-strong:#3d3b52;--text:#ececf1;--text-soft:#c9c7d6;--muted:#9693a6;--muted-2:#6d6a7a;--accent:#aeb7ff;--accent-strong:#c8ceff;--accent-tint:#aeb7ff1f;--accent-2:#d2a16f;--accent-2-strong:#e3b987;--accent-2-tint:#d2a16f1f;--danger:#ff8f8f;--shadow:0 18px 40px #00000059;--font:"Calibre", "Inter", "San Francisco", "SF Pro Text", -apple-system, system-ui, sans-serif;--mono:"SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;--radius:4px;--nav-height:80px;--nav-scroll-height:62px;--nav-height-small:60px;--transition:.18s cubic-bezier(.645, .045, .355, 1)}html{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--line-strong) var(--bg);width:100%}body{background:radial-gradient(circle at 18% 0%, #aeb7ff12, transparent 320px), linear-gradient(180deg, #d2a16f06, transparent 340px), repeating-linear-gradient(90deg, #ffffff03 0 1px, transparent 1px 96px), var(--bg);min-width:320px;min-height:100vh;color:var(--muted);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:20px;line-height:1.3;overflow-x:hidden}body:before{content:"";z-index:0;pointer-events:none;opacity:.58;background-image:radial-gradient(#ececf114 .7px,#0000 .7px),radial-gradient(#d2a16f0b .8px,#0000 .8px);background-position:0 0,9px 12px;background-size:18px 18px,34px 34px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000000d1,#00000057 58%,#0000 88%);mask-image:linear-gradient(#000000d1,#00000057 58%,#0000 88%)}body.menu-open{overflow:hidden}body.menu-open #content,body.menu-open .side-rail,body.menu-open .site-footer{filter:blur(5px)brightness(.65);pointer-events:none;-webkit-user-select:none;user-select:none}#root{z-index:1;min-height:100vh;position:relative}.app-shell{counter-reset:section;grid-template-rows:1fr auto;min-height:100vh;display:grid}main{width:100%;max-width:1600px;min-height:100vh;margin:0 auto;padding:0 150px}section{max-width:1000px;margin:0 auto;padding:100px 0}a{color:inherit;transition:color var(--transition), transform var(--transition), border-color var(--transition), background var(--transition);text-decoration:none}a:hover,a:focus-visible{color:var(--accent)}button,input,textarea{font:inherit}button{color:inherit;cursor:pointer;background:0 0;border:0}button:disabled{cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px dashed var(--accent);outline-offset:4px}img,svg{max-width:100%;display:block}svg{width:1em;height:1em}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{color:var(--text);letter-spacing:0;font-weight:600;line-height:1.1}p{color:var(--muted);line-height:1.3}::selection{background:var(--line-strong);color:var(--text)}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--line-strong);border:3px solid var(--bg);border-radius:999px}.inline-link{color:var(--accent);font-family:var(--mono);font-size:13px;display:inline-block;position:relative}.inline-link:after{content:"";opacity:.35;transform-origin:0;height:1px;transition:transform var(--transition);background:currentColor;position:absolute;bottom:.08em;left:0;right:0;transform:scaleX(0)}.inline-link:hover:after,.inline-link:focus-visible:after{transform:scaleX(1)}.text-link{color:var(--accent);font-family:var(--mono);padding:10px;font-size:13px}.cta-button,.resume-button{border:1px solid var(--accent);border-radius:var(--radius);min-height:42px;color:var(--accent);font-family:var(--mono);white-space:nowrap;transition:color var(--transition), background var(--transition), box-shadow var(--transition), transform var(--transition), border-color var(--transition);background:0 0;justify-content:center;align-items:center;font-size:14px;line-height:1;display:inline-flex}.cta-button:hover,.cta-button:focus-visible,.resume-button:hover,.resume-button:focus-visible{color:var(--accent-strong);box-shadow:3px 3px 0 0 var(--accent);background:0 0;outline:0;transform:translate(-4px,-4px)}.cta-button.large{padding:1.25rem 1.75rem}.cta-button.large:hover,.cta-button.large:focus-visible{box-shadow:4px 4px 0 0 var(--accent);transform:translate(-5px,-5px)}.resume-button{padding:.75rem 1rem}.resume-button.small{min-height:38px;padding:.65rem .9rem;font-size:13px}.big-heading{margin:0;font-size:clamp(40px,7vw,80px)}.numbered-heading{width:100%;color:var(--text);letter-spacing:0;white-space:nowrap;align-items:center;margin:10px 0 40px;font-size:clamp(26px,5vw,32px);font-weight:600;line-height:1.1;display:flex;position:relative}.numbered-heading:before{counter-increment:section;content:"0" counter(section) ".";color:var(--accent);font-family:var(--mono);margin-right:10px;font-size:clamp(16px,3vw,20px);font-weight:400;position:relative;bottom:4px}.numbered-heading:after{content:"";background:var(--line);width:300px;height:1px;margin-left:20px;display:block;position:relative;top:-5px}.site-header{z-index:20;width:100%;height:var(--nav-height);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:height var(--transition), transform var(--transition), background var(--transition), box-shadow var(--transition);background:#060609b8;border-bottom:0;padding:0 50px;position:fixed;top:0;filter:none!important;pointer-events:auto!important;-webkit-user-select:auto!important;user-select:auto!important}.site-header.is-scrolled{height:var(--nav-scroll-height);background:#060609db;box-shadow:0 10px 30px -10px #000000b3}.site-header.is-hidden{transform:translateY(calc(var(--nav-scroll-height) * -1))}.site-nav{height:100%;color:var(--text);font-family:var(--mono);counter-reset:nav-item;justify-content:space-between;align-items:center;display:flex}.logo-mark{width:auto;height:auto;color:var(--text);clip-path:none;letter-spacing:-.01em;border:0;align-items:baseline;font-size:15px;font-weight:600;display:inline-flex}.logo-mark span{color:var(--muted);font-weight:500}.logo-mark:hover,.logo-mark:focus-visible{color:var(--accent);transform:translateY(-2px)}.desktop-nav{align-items:center;gap:18px;display:flex}.nav-link-list{counter-reset:nav-item;align-items:center;gap:4px;margin:0;padding:0;list-style:none;display:flex}.nav-link-list li{counter-increment:nav-item;font-size:13px}.nav-link-list a{color:var(--text-soft);align-items:baseline;padding:10px;display:inline-flex}.nav-link-list a:before{content:"0" counter(nav-item) ".";color:var(--accent);margin-right:5px;font-size:12px}.hamburger-button,.mobile-menu{display:none}.side-rail{z-index:10;width:40px;color:var(--muted);position:fixed;bottom:0}.side-rail-left{left:40px}.side-rail-right{right:40px}.side-social-list{flex-direction:column;align-items:center;gap:2px;margin:0;padding:0;list-style:none;display:flex}.side-social-list:after,.side-rail-right:after{content:"";background:var(--muted);width:1px;height:90px;margin:20px auto 0;display:block}.side-social-list a{place-items:center;width:40px;height:40px;font-size:19px;display:grid;position:relative}.side-social-list a:hover,.side-social-list a:focus-visible{transform:translateY(-3px)}.side-social-list a:before,.project-links a[data-tooltip]:before{content:attr(data-tooltip);z-index:4;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-2);width:max-content;max-width:160px;color:var(--text);box-shadow:var(--shadow);font-family:var(--mono);opacity:0;pointer-events:none;transition:opacity var(--transition), transform var(--transition);padding:5px 8px;font-size:11px;line-height:1;position:absolute;transform:translateY(4px)}.side-social-list a:before{left:46px}.project-links a[data-tooltip]:before{bottom:calc(100% + 6px);left:50%;transform:translate(-50%,4px)}.side-social-list a:hover:before,.side-social-list a:focus-visible:before,.project-links a[data-tooltip]:hover:before,.project-links a[data-tooltip]:focus-visible:before{opacity:1}.side-social-list a:hover:before,.side-social-list a:focus-visible:before{transform:translateY(0)}.project-links a[data-tooltip]:hover:before,.project-links a[data-tooltip]:focus-visible:before{transform:translate(-50%)}.side-email{writing-mode:vertical-rl;color:var(--muted);font-family:var(--mono);letter-spacing:.08em;align-items:center;margin:20px auto 0;padding:10px;font-size:12px;display:flex}.side-email:hover,.side-email:focus-visible{transform:translateY(-3px)}.hero-section{max-width:1000px;min-height:100dvh;padding:var(--nav-height) 0 0;flex-direction:column;justify-content:center;align-items:flex-start;display:flex}.hero-overline{color:var(--accent);font-family:var(--mono);margin:0 0 30px 4px;font-size:clamp(14px,5vw,16px)}.hero-name{color:var(--text)}.hero-subtitle{color:var(--muted);font-family:var(--mono);letter-spacing:-.01em;margin-top:6px;font-size:clamp(18px,3.2vw,34px);font-weight:500}.hero-copy{max-width:540px;margin-top:20px;font-size:20px;line-height:1.3}.hero-section .cta-button{margin-top:50px}.about-section{max-width:900px}.about-inner{grid-template-columns:3fr 2fr;align-items:start;gap:50px;display:grid}.about-copy{gap:15px;display:grid}.about-copy a{color:var(--accent)}.skills-list,.fancy-list,.project-tech-list,.tile-tech-list,.featured-list,.project-card-grid,.home-post-list,.post-archive-list,.archive-grid{margin:0;padding:0;list-style:none}.skills-list{grid-template-columns:repeat(2,minmax(140px,200px));gap:10px;margin-top:6px;display:grid}.skills-list li,.fancy-list li{color:var(--muted);font-family:var(--mono);padding-left:20px;font-size:13px;position:relative}.skills-list li:before,.fancy-list li:before{content:"▹";color:var(--accent-2);font-size:14px;line-height:1.2;position:absolute;left:0}.portrait-wrap{z-index:0;max-width:300px;position:relative}.portrait-link{z-index:1;border-radius:var(--radius);background:var(--accent-2);width:100%;box-shadow:var(--shadow);display:block;position:relative}.portrait-link:before,.portrait-link:after{content:"";border-radius:var(--radius);transition:transform var(--transition), background var(--transition);position:absolute;inset:0}.portrait-link:before{background:var(--bg);mix-blend-mode:screen;display:block}.portrait-link:after{z-index:-1;border:2px solid var(--accent-2);width:100%;height:100%;inset:14px auto auto 14px;transform:none}.portrait-link:hover,.portrait-link:focus-visible{outline:0;transform:translate(-4px,-4px)}.portrait-link:hover:after,.portrait-link:focus-visible:after{transform:translate(8px,8px)}.portrait-link:hover img,.portrait-link:focus-visible img{filter:none;mix-blend-mode:normal}.portrait-link img{aspect-ratio:1;border-radius:var(--radius);object-fit:cover;filter:grayscale()contrast();mix-blend-mode:multiply;width:100%;transition:filter var(--transition), mix-blend-mode var(--transition);position:relative}.experience-section{max-width:700px}.jobs-inner{min-height:340px;display:flex}.tab-list{z-index:1;flex:none;position:relative}.tab-button{border-left:2px solid var(--line);width:100%;height:42px;color:var(--muted);font-family:var(--mono);text-align:left;white-space:nowrap;transition:color var(--transition), background var(--transition);align-items:center;padding:0 20px 2px;font-size:13px;display:flex}.tab-button:hover,.tab-button:focus-visible,.tab-button.is-active{color:var(--accent);background:var(--accent-tint)}.tab-highlight{border-radius:var(--radius);background:var(--accent);width:2px;height:42px;transform:translateY(calc(var(--active-tab,0) * 42px));transition:transform .25s cubic-bezier(.645,.045,.355,1);position:absolute;top:0;left:0}.tab-panels{width:100%;margin-left:20px}.job-panel{padding:10px 5px}.job-panel h3{margin-bottom:4px;font-size:22px;font-weight:500}.job-panel .company{color:var(--accent)}.job-range{color:var(--muted);font-family:var(--mono);margin-bottom:12px;font-size:13px}.certificate-link{color:var(--accent-2);font-family:var(--mono);margin-bottom:24px;font-size:13px;display:inline-flex}.fancy-list{gap:12px;display:grid}.fancy-list li{font-family:var(--font);font-size:18px;line-height:1.3}.featured-list{gap:100px;display:grid}.featured-project{grid-template-columns:repeat(12,1fr);align-items:center;gap:10px;display:grid;position:relative}.featured-project:nth-child(odd) .project-content{text-align:right;grid-column:7/-1}.featured-project:nth-child(odd) .project-image{grid-column:1/8}.featured-project:nth-child(odd) .project-tech-list,.featured-project:nth-child(odd) .project-links{justify-content:flex-end}.featured-project:nth-child(odd) .project-tech-list{margin-left:auto}.project-content{z-index:2;grid-area:1/1/-1/7;position:relative}.project-image{z-index:1;border-radius:var(--radius);background:var(--accent);height:100%;min-height:300px;box-shadow:var(--shadow);transition:background var(--transition), box-shadow var(--transition);grid-area:1/6/-1/-1;position:relative;overflow:hidden}.project-image:before{content:"";z-index:2;background:var(--bg);mix-blend-mode:screen;transition:background var(--transition);position:absolute;inset:0}.project-image:hover:before,.project-image:focus-visible:before{background:0 0}.project-image:hover,.project-image:focus-visible{background:0 0;outline:0}.project-image img,.project-image-fallback{z-index:1;object-fit:cover;object-position:top center;filter:grayscale()contrast()brightness(90%);mix-blend-mode:multiply;width:100%;height:100%;min-height:300px;transition:filter var(--transition), mix-blend-mode var(--transition);position:relative}.project-image:hover img,.project-image:focus-visible img{filter:none;mix-blend-mode:normal}.project-image-fallback{background:linear-gradient(to right, #ffffff0e 1px, transparent 1px), linear-gradient(to bottom, #ffffff0e 1px, transparent 1px), var(--surface);background-size:32px 32px;place-items:center;padding:24px;display:grid}.project-image-fallback span{color:var(--text);font-family:var(--mono);font-size:15px}.project-overline{color:var(--accent);font-family:var(--mono);margin:10px 0;font-size:13px}.project-title{margin-bottom:20px;font-size:clamp(24px,5vw,28px)}.project-description{z-index:2;border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);padding:25px;position:relative}.project-description p{color:var(--text-soft);font-size:18px;line-height:1.3}.project-tech-list{z-index:2;max-width:min(100%,420px);color:var(--muted);font-family:var(--mono);flex-wrap:wrap;gap:0 20px;margin-top:25px;font-size:13px;display:flex;position:relative}.project-tech-list li{white-space:nowrap;margin-bottom:5px}.project-links{color:var(--text-soft);align-items:center;gap:8px;margin-top:10px;display:flex}.project-links a{place-items:center;min-width:36px;min-height:36px;padding:8px;display:grid;position:relative}.other-projects-header{justify-items:center;gap:10px;margin-top:110px;display:grid}.other-projects-header h2{font-size:clamp(24px,5vw,32px)}.project-card-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:15px;margin-top:50px;display:grid}.project-tile{min-height:100%}.project-tile-inner,.archive-card article{border-radius:var(--radius);background:var(--surface);min-height:100%;box-shadow:var(--shadow);transition:transform var(--transition), background var(--transition);flex-direction:column;justify-content:space-between;align-items:flex-start;padding:2rem 1.75rem;display:flex}.project-tile:hover .project-tile-inner,.project-tile:focus-within .project-tile-inner,.archive-card:hover article,.archive-card:focus-within article{background:var(--surface-2);transform:translateY(-7px)}.project-tile-top{justify-content:space-between;align-items:center;width:100%;margin-bottom:35px;display:flex}.folder-icon{width:40px;height:31px;color:var(--accent-2);border-radius:var(--radius);border:2px solid;position:relative}.folder-icon:before{content:"";border-radius:var(--radius) var(--radius) 0 0;border:2px solid;border-bottom:0;width:18px;height:10px;position:absolute;top:-10px;left:-2px}.project-tile h3,.archive-card h2{margin-bottom:10px;font-size:22px}.project-tile p,.archive-card p{color:var(--text-soft);font-size:17px}.tile-tech-list{color:var(--muted);font-family:var(--mono);flex-wrap:wrap;align-items:flex-end;gap:0 15px;margin-top:24px;font-size:12px;line-height:1.75;display:flex}.blog-section{max-width:760px}.blog-heading-row{gap:6px;display:grid}.home-post-list{gap:12px;display:grid}.home-post-link{border-bottom:1px solid var(--line);grid-template-columns:110px minmax(0,1fr) auto;align-items:center;gap:18px;padding:18px 0;display:grid}.post-date,.post-meta,.post-tags,.result-count,.page-overline,.article-header p,.article-back{color:var(--muted);font-family:var(--mono);font-size:13px}.post-title{color:var(--text-soft);font-size:18px}.home-post-link:hover .post-title,.home-post-link:focus-visible .post-title{color:var(--accent)}.contact-section{text-align:center;max-width:600px;margin:0 auto 100px}.contact-overline{color:var(--accent);font-family:var(--mono);justify-content:center;margin-bottom:18px;font-size:16px;font-weight:400}.contact-overline:before{font-size:14px;bottom:0}.contact-overline:after{display:none}.contact-section h3{font-size:clamp(40px,5vw,60px)}.contact-section p{margin-top:18px}.contact-section .cta-button{margin-top:50px}.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000ad;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-panel{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);width:min(100%,520px);max-height:min(760px,100dvh - 40px);padding:34px;position:relative;overflow-y:auto;box-shadow:0 24px 80px #0000007a}.modal-close{border:1px solid var(--line);border-radius:var(--radius);width:30px;height:30px;color:var(--muted);place-items:center;display:grid;position:absolute;top:16px;right:16px}.modal-close:hover,.modal-close:focus-visible{color:var(--accent);border-color:var(--accent)}.modal-header{margin-bottom:26px;padding-right:38px}.modal-header p{color:var(--accent);font-family:var(--mono);margin-bottom:8px;font-size:13px}.modal-header h2{font-size:28px}.contact-form,.field{gap:10px;display:grid}.contact-form{gap:16px}.form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.field label{color:var(--text-soft);font-family:var(--mono);font-size:12px}.field input,.field textarea,.search-field input{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-soft);width:100%;color:var(--text);transition:border-color var(--transition), background var(--transition);outline:none;font-size:15px}.field input,.search-field input{min-height:44px;padding:10px 12px}.field textarea{resize:vertical;min-height:132px;padding:12px;line-height:1.55}.field input:focus,.field textarea:focus,.search-field input:focus{border-color:var(--accent);background:#0a0f11}.form-submit{border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent-tint);min-height:46px;color:var(--accent);font-family:var(--mono);justify-content:center;align-items:center;gap:10px;font-size:14px;display:inline-flex}.form-submit:hover:not(:disabled),.form-submit:focus-visible{background:var(--accent-tint);box-shadow:3px 3px 0 0 var(--accent);outline:0;transform:translate(-4px,-4px)}.form-submit:disabled{opacity:.65}.toast{z-index:60;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-2);max-width:calc(100vw - 32px);color:var(--text);font-family:var(--mono);box-shadow:var(--shadow);align-items:center;gap:8px;padding:12px 16px;font-size:13px;display:inline-flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast.is-error{color:var(--danger);border-color:#ff8f8f73}.site-footer{text-align:center;max-width:1000px;color:var(--muted);font-family:var(--mono);margin:0 auto;padding:28px 24px;font-size:12px}.page-shell{width:min(100%,1100px);min-height:100vh;margin:0 auto;padding:160px 0 110px}.page-header{max-width:720px;margin-bottom:50px}.page-overline{color:var(--accent);margin-bottom:18px}.page-header h1{margin-bottom:18px;font-size:clamp(42px,8vw,70px)}.page-header p{max-width:620px}.archive-controls{max-width:none;margin-bottom:42px;padding:0}.search-field{max-width:480px;color:var(--text-soft);font-family:var(--mono);gap:8px;font-size:12px;display:grid}.tag-filter-list{flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.tag-filter{border:1px solid var(--line);border-radius:var(--radius);min-height:32px;color:var(--muted);font-family:var(--mono);padding:5px 12px;font-size:12px}.tag-filter:hover,.tag-filter:focus-visible,.tag-filter.is-active{border-color:var(--accent);color:var(--accent);background:var(--accent-tint)}.tag-filter.clear{color:var(--text-soft)}.result-count{margin-top:16px}.archive-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:15px;display:grid}.archive-card article{min-height:360px}.empty-state{border:1px solid var(--line);border-radius:var(--radius);min-height:260px;color:var(--muted);place-items:center;gap:14px;display:grid}.empty-state button{color:var(--accent);font-family:var(--mono);font-size:13px}.post-archive-list{gap:14px;max-width:900px;display:grid}.post-archive-link{border-bottom:1px solid var(--line);grid-template-columns:140px minmax(0,1fr) auto;grid-template-areas:"meta name icon""meta desc icon""meta tags icon";gap:8px 24px;padding:22px 0;display:grid;position:relative}.post-archive-link .post-meta{grid-area:meta}.post-archive-link .post-name{color:var(--text);grid-area:name;font-size:22px;font-weight:600}.post-archive-link .post-description{color:var(--muted);grid-area:desc;font-size:16px;line-height:1.55}.post-archive-link .post-tags{grid-area:tags}.post-archive-link svg{grid-area:icon;align-self:start;margin-top:4px}.article-page{max-width:780px}.article-back{align-items:center;gap:8px;margin-bottom:42px;display:inline-flex}.article-header{margin-bottom:34px}.article-header p{color:var(--accent);margin-bottom:18px}.article-header h1{margin-bottom:22px;font-size:clamp(36px,7vw,62px)}.article-tags{flex-wrap:wrap;gap:8px;display:flex}.article-tags span{border:1px solid var(--line);border-radius:var(--radius);color:var(--muted);font-family:var(--mono);padding:5px 10px;font-size:12px}.article-body{gap:20px;display:grid}.article-body p{color:var(--text-soft);font-size:18px;line-height:1.75}.article-body .article-description{color:var(--muted);font-size:20px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=1080px){main{padding:0 100px}.site-header{padding:0 40px}.side-rail-left{left:20px}.side-rail-right{right:20px}.numbered-heading:after{width:200px}.featured-project:nth-child(odd) .project-content{grid-column:5/-1}.project-tech-list{max-width:min(100%,360px)}.project-content{grid-column:1/9}}@media (width<=768px){main{padding:0 50px}section{padding:80px 0}.site-header{height:var(--nav-height-small);padding:0 25px}.site-header.is-scrolled{height:var(--nav-height-small)}.desktop-nav,.side-rail{display:none}.hamburger-button{z-index:31;width:44px;height:44px;color:var(--accent);margin-right:-10px;display:block;position:relative}.ham-box{width:30px;height:24px;display:inline-block;position:relative}.ham-line,.ham-line:before,.ham-line:after{height:2px;transition:transform var(--transition), width var(--transition), opacity var(--transition), top var(--transition), bottom var(--transition);background:currentColor;border-radius:999px;position:absolute;right:0}.ham-line{width:30px;top:50%}.ham-line:before,.ham-line:after{content:""}.ham-line:before{width:36px;top:-10px}.ham-line:after{width:24px;bottom:-10px}.hamburger-button.is-open .ham-line{transform:rotate(225deg)}.hamburger-button.is-open .ham-line:before{opacity:0;top:0}.hamburger-button.is-open .ham-line:after{width:30px;bottom:0;transform:rotate(-90deg)}.mobile-menu{z-index:30;background:var(--surface);visibility:hidden;justify-content:center;align-items:center;width:min(75vw,400px);height:100dvh;padding:50px 10px;transition:transform .25s cubic-bezier(.645,.045,.355,1),visibility .25s;display:flex;position:fixed;top:0;right:0;transform:translate(100%);box-shadow:-10px 0 30px -15px #000000bf}.mobile-menu.is-open{visibility:visible;transform:translate(0)}.mobile-menu nav{width:100%;color:var(--text);font-family:var(--mono);text-align:center;flex-direction:column;align-items:center;display:flex}.mobile-menu .nav-link-list{gap:4px;width:100%;display:grid}.mobile-menu .nav-link-list li{font-size:clamp(14px,4vw,18px)}.mobile-menu .nav-link-list a{justify-items:center;width:100%;padding:8px 20px 18px;display:grid}.mobile-menu .nav-link-list a:before{margin:0 0 6px}.mobile-menu .resume-button{margin-top:28px;padding:18px 48px}.numbered-heading:after{width:100%;margin-left:12px}.hero-section{padding-top:var(--nav-height-small)}.about-inner{display:block}.portrait-wrap{width:70%;margin:50px auto 0}.jobs-inner{min-height:auto;display:block}.tab-list{width:calc(100% + 100px);margin-bottom:30px;margin-left:-50px;padding-left:50px;display:flex;overflow-x:auto}.tab-button{border-left:0;border-bottom:2px solid var(--line);text-align:center;justify-content:center;min-width:130px}.tab-highlight{width:130px;height:2px;transform:translateX(calc(var(--active-tab,0) * 130px));top:auto;bottom:0;left:50px}.tab-panels{margin-left:0}.featured-list{gap:70px}.featured-project,.featured-project:nth-child(odd){background:var(--surface);min-height:420px;box-shadow:var(--shadow);display:block}.featured-project .project-content,.featured-project:nth-child(odd) .project-content{text-align:left;flex-direction:column;justify-content:center;align-items:flex-start;min-height:420px;padding:40px;display:flex}.featured-project .project-image,.featured-project:nth-child(odd) .project-image{opacity:.22;min-height:100%;box-shadow:none;position:absolute;inset:0}.project-description{box-shadow:none;background:0 0;padding:20px 0}.featured-project:nth-child(odd) .project-tech-list,.featured-project:nth-child(odd) .project-links{justify-content:flex-start}.project-tech-list,.featured-project:nth-child(odd) .project-tech-list{max-width:100%;margin-left:0}.home-post-link{grid-template-columns:1fr auto;gap:8px 14px}.post-date{grid-column:1/-1}.page-shell{padding-top:120px}.post-archive-link{grid-template-columns:1fr auto;grid-template-areas:"meta icon""name icon""desc desc""tags tags"}}@media (width<=600px){main{padding:0 25px}section{padding:70px 0}.numbered-heading{white-space:normal}.numbered-heading:after{margin-left:10px}.skills-list{grid-template-columns:1fr}.tab-list{width:calc(100% + 50px);margin-left:-25px;padding-left:25px}.tab-highlight{left:25px}.featured-project .project-content,.featured-project:nth-child(odd) .project-content{padding:30px 25px 24px}.project-card-grid,.archive-grid,.form-grid{grid-template-columns:1fr}.modal-panel{padding:28px 22px}}@media (width<=480px){body{font-size:18px}.numbered-heading:before{margin-bottom:-3px;margin-right:5px}.hero-copy{font-size:18px}}@media (width<=420px){.hero-copy{font-size:18px}.cta-button.large{width:100%}.project-tile-inner,.archive-card article{padding:1.5rem}}
