:root{--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono", monospace;--bg-primary: #161514;--bg-secondary: #1d1c1a;--bg-hover: #232220;--bg-header: rgba(22, 21, 20, .85);--text-primary: #e9e7e2;--text-secondary: #b6b3ac;--text-muted: #8b8880;--border-color: rgba(233, 231, 226, .09);--border-strong: rgba(233, 231, 226, .18);--accent: #c99672;--bg-card: #1b1a18;--card-shadow: 0 16px 40px -16px rgba(0, 0, 0, .55)}[data-theme=light]{--bg-primary: #faf9f7;--bg-secondary: #f1efeb;--bg-hover: #eceae4;--bg-header: rgba(250, 249, 247, .85);--text-primary: #1d1c19;--text-secondary: #4c4a45;--text-muted: #787670;--border-color: rgba(29, 28, 25, .1);--border-strong: rgba(29, 28, 25, .2);--accent: #8a5732;--bg-card: #ffffff;--card-shadow: 0 16px 40px -20px rgba(60, 50, 35, .25)}*{margin:0;padding:0;box-sizing:border-box}html{color-scheme:dark;scroll-behavior:smooth}html[data-theme=light]{color-scheme:light}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}body{background-color:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);font-size:1rem;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;transition:background-color .25s ease,color .25s ease}body:after{content:"";position:fixed;inset:0;z-index:300;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;opacity:.05}[data-theme=light] body:after{opacity:.035}::selection{background:var(--accent);color:var(--bg-primary)}a{text-decoration:none;color:inherit}ul,ol{list-style:none}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.container{max-width:1060px;margin:0 auto;padding-left:2.5rem;padding-right:2.5rem}@media(max-width:720px){.container{padding-left:1.375rem;padding-right:1.375rem}}section[id]{scroll-margin-top:5rem}.section{padding-top:7.5rem}@media(max-width:720px){.section{padding-top:5rem}}.section-head{display:flex;align-items:baseline;gap:1rem;margin-bottom:2.75rem;padding-bottom:1.25rem;border-bottom:1px solid var(--border-strong)}.section-head .section-index{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--accent)}.section-head h2{font-size:1.5rem;font-weight:600;letter-spacing:-.02em}.chip-row{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none}.chip{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.01em;padding:.25rem .625rem;border:1px solid var(--border-color);border-radius:6px;color:var(--text-muted);white-space:nowrap;transition:border-color .2s ease,color .2s ease}.not-found{padding:11rem 0 7rem}.not-found .code{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--accent);margin-bottom:1rem}.not-found h1{font-size:2rem;letter-spacing:-.02em;margin-bottom:.75rem}.not-found p{color:var(--text-secondary);max-width:40ch}.not-found .back{display:inline-block;margin-top:1.5rem;padding-bottom:2px;border-bottom:1px solid var(--border-strong);transition:border-color .2s ease}.not-found .back:hover{border-color:var(--text-primary)}.theme-toggle{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:none;border:1px solid var(--border-color);border-radius:8px;cursor:pointer;color:var(--text-muted);transition:color .2s ease,border-color .2s ease,background .2s ease}.theme-toggle:hover{color:var(--text-primary);border-color:var(--border-strong);background:var(--bg-hover)}.theme-toggle:active{transform:scale(.96)}.layout{min-height:100dvh;display:flex;flex-direction:column}.skip-link{position:absolute;top:-100%;left:1rem;z-index:100;padding:.5rem 1rem;background:var(--text-primary);color:var(--bg-primary);border-radius:6px;font-size:.875rem}.skip-link:focus{top:.75rem}.site-header{position:fixed;top:0;left:0;right:0;z-index:50;background:var(--bg-header);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border-color);transition:background .25s ease,border-color .25s ease}.site-header .header-inner{height:4rem;display:flex;align-items:center;justify-content:space-between}.site-header .wordmark{font-size:.9375rem;font-weight:550;letter-spacing:-.01em}.desktop-nav{display:none}@media(min-width:720px){.desktop-nav{display:flex;align-items:center;gap:1.75rem}}.desktop-nav a{position:relative;font-size:.875rem;color:var(--text-muted);transition:color .2s ease}.desktop-nav a:hover,.desktop-nav a.active{color:var(--text-primary)}.desktop-nav a.active:after{content:"";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;background:var(--accent)}.desktop-nav .nav-divider{width:1px;height:1rem;background:var(--border-strong)}.mobile-controls{display:flex;align-items:center;gap:.75rem}@media(min-width:720px){.mobile-controls{display:none}}.mobile-menu-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:none;border:none;cursor:pointer;color:var(--text-primary)}.mobile-menu{position:fixed;inset:4rem 0 0;z-index:40;background:var(--bg-primary)}@media(min-width:720px){.mobile-menu{display:none}}.mobile-menu .menu-content{max-width:1060px;margin:0 auto;padding-left:2.5rem;padding-right:2.5rem}@media(max-width:720px){.mobile-menu .menu-content{padding-left:1.375rem;padding-right:1.375rem}}.mobile-menu .menu-content{display:flex;flex-direction:column;padding-top:2rem}.mobile-menu .menu-content a{padding:1rem 0;font-size:1.25rem;letter-spacing:-.01em;color:var(--text-secondary);border-bottom:1px solid var(--border-color)}.mobile-menu .menu-content a:hover{color:var(--text-primary)}.mobile-menu .menu-social{display:flex;gap:1.5rem;padding-top:2rem}.mobile-menu .menu-social a{padding:0;border:none;color:var(--text-muted)}.mobile-menu .menu-social a:hover{color:var(--text-primary)}.toast-notification{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);z-index:100;background:var(--text-primary);color:var(--bg-primary);padding:.625rem 1.125rem;border-radius:8px;font-size:.875rem;font-weight:500;white-space:nowrap}.main-content{flex:1;padding-top:4rem}.site-footer{margin-top:8rem;border-top:1px solid var(--border-color);padding:3rem 0 2.5rem}@media(max-width:720px){.site-footer{margin-top:5rem}}.site-footer .footer-inner{display:flex;align-items:flex-start;justify-content:space-between;gap:2rem}@media(max-width:720px){.site-footer .footer-inner{flex-direction:column}}.site-footer .footer-name{font-weight:550;letter-spacing:-.01em}.site-footer .footer-email{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;margin-top:.375rem;background:none;border:none;padding:0;cursor:pointer;color:var(--text-muted);transition:color .2s ease}.site-footer .footer-email:hover{color:var(--accent)}.site-footer .footer-social{display:flex;gap:1.25rem}.site-footer .footer-social a{color:var(--text-muted);transition:color .2s ease}.site-footer .footer-social a:hover{color:var(--text-primary)}.site-footer .footer-meta{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;display:flex;justify-content:space-between;margin-top:2.5rem;color:var(--text-muted)}.hero{position:relative;padding:clamp(6.5rem,18vh,11rem) 0 3rem}.hero:before{content:"";position:absolute;top:-14rem;right:-10rem;width:44rem;height:44rem;z-index:-1;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 60%,transparent) 0%,transparent 62%);opacity:.13;pointer-events:none}[data-theme=light] .hero:before{opacity:.12}.hero .hero-kicker{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:.625rem;color:var(--accent);margin-bottom:1.5rem}.hero .status-dot{position:relative;width:7px;height:7px;border-radius:50%;background:#71a883;flex-shrink:0}.hero .status-dot:after{content:"";position:absolute;inset:0;border-radius:50%;background:inherit;animation:status-ping 2.5s cubic-bezier(0,0,.2,1) infinite}.hero .hero-title{font-size:clamp(2.5rem,7vw,4.25rem);font-weight:600;letter-spacing:-.035em;line-height:1.03;text-wrap:balance}.hero .hero-lede{margin-top:1.75rem;max-width:36rem;font-size:1.0625rem;line-height:1.7;color:var(--text-secondary);text-wrap:pretty}.hero .hero-actions{display:flex;align-items:center;gap:1.75rem;margin-top:2.75rem;flex-wrap:wrap}.hero .btn-primary{display:inline-block;padding:.7rem 1.375rem;background:var(--text-primary);color:var(--bg-primary);border-radius:8px;font-size:.9375rem;font-weight:500;transition:opacity .2s ease,transform .2s ease,box-shadow .2s ease}.hero .btn-primary:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 8px 24px -10px color-mix(in srgb,var(--accent) 40%,rgba(0,0,0,.5))}.hero .btn-primary:active{transform:scale(.98)}.hero .hero-social{display:flex;align-items:center;gap:1.25rem}.hero .hero-social a{display:flex;color:var(--text-muted);transition:color .2s ease,transform .2s ease}.hero .hero-social a:hover{color:var(--text-primary);transform:translateY(-1px)}.hero .hero-stats{display:flex;gap:clamp(2rem,6vw,4.5rem);margin-top:4rem;padding-top:1.75rem;border-top:1px solid var(--border-color)}.hero .hero-stats>div{display:flex;flex-direction:column-reverse}.hero .hero-stats dd{font-size:1.375rem;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.hero .hero-stats dt{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;font-size:.75rem;margin-top:.375rem;color:var(--text-muted)}@keyframes status-ping{75%,to{transform:scale(2.6);opacity:0}}.skills-section .skills-row{display:grid;grid-template-columns:13rem 1fr;gap:2rem;padding:1.25rem 0;border-bottom:1px solid var(--border-color)}@media(max-width:720px){.skills-section .skills-row{grid-template-columns:1fr;gap:.75rem}}.skills-section .skills-row dt{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--text-muted);padding-top:5px}@media(max-width:720px){.skills-section .skills-row dt{padding-top:0}}.skills-section .skills-row .chip:hover{border-color:var(--border-strong);color:var(--text-secondary)}.experience-section .experience-item{border-bottom:1px solid var(--border-color)}.experience-section .experience-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:2rem;margin:0 -1.25rem;padding:1.75rem 1.25rem;border-radius:12px;cursor:pointer;transition:background .2s ease}.experience-section .experience-summary:hover{background:var(--bg-hover)}@media(max-width:720px){.experience-section .experience-summary{gap:1rem;margin:0;padding:1.75rem 0}.experience-section .experience-summary:hover{background:none}}.experience-section .experience-heading h3{font-size:1.125rem;font-weight:550;letter-spacing:-.015em}.experience-section .experience-heading .company{display:inline-flex;align-items:center;gap:.25rem;margin-top:.25rem;font-size:.9375rem;color:var(--text-muted);transition:color .2s ease}.experience-section .experience-heading .company svg{opacity:0;transition:opacity .2s ease}.experience-section .experience-heading a.company:hover{color:var(--accent)}.experience-section .experience-heading a.company:hover svg{opacity:1}.experience-section .experience-heading .summary{margin-top:.625rem;max-width:56ch;font-size:.9375rem;color:var(--text-secondary)}.experience-section .experience-meta{display:flex;align-items:center;gap:1.25rem;flex-shrink:0}.experience-section .experience-meta .period{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--text-muted)}@media(max-width:720px){.experience-section .experience-meta{flex-direction:column-reverse;align-items:flex-end;gap:.75rem}}.experience-section .expand-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:none;border:1px solid var(--border-color);border-radius:999px;cursor:pointer;color:var(--text-muted);transition:color .2s ease,border-color .2s ease}.experience-section .expand-btn .expand-icon{transition:transform .25s ease}.experience-section .expand-btn:hover{color:var(--text-primary);border-color:var(--border-strong)}.experience-section .experience-item.open .expand-icon{transform:rotate(45deg)}.experience-section .experience-details{overflow:hidden}.experience-section .details-inner{padding-bottom:2rem}.experience-section .details-inner .projects-list{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;margin-bottom:1.25rem;color:var(--text-muted)}.experience-section .details-inner .projects-list a{color:var(--text-secondary);padding-bottom:1px;border-bottom:1px solid var(--border-strong);transition:color .2s ease,border-color .2s ease}.experience-section .details-inner .projects-list a:hover{color:var(--accent);border-color:var(--accent)}.experience-section .details-inner .bullets{display:flex;flex-direction:column;gap:.625rem;max-width:68ch}.experience-section .details-inner .bullets li{position:relative;padding-left:1.25rem;font-size:.9375rem;line-height:1.65;color:var(--text-secondary)}.experience-section .details-inner .bullets li:before{content:"";position:absolute;left:0;top:.65em;width:5px;height:1px;background:var(--text-muted)}.experience-section .details-inner .tech-stack{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;margin-top:1.25rem;max-width:68ch;line-height:1.7;color:var(--text-muted)}.projects-section h3{font-size:1.125rem;font-weight:550;letter-spacing:-.015em}.projects-section h3 a{display:inline-flex;align-items:center;gap:.375rem;transition:color .2s ease}.projects-section h3 a .title-arrow{color:var(--text-muted);transition:color .2s ease,transform .2s ease}.projects-section h3 a:hover{color:var(--accent)}.projects-section h3 a:hover .title-arrow{color:var(--accent);transform:translate(1px,-1px)}.projects-section .summary{margin-top:.5rem;font-size:.9375rem;line-height:1.6;color:var(--text-secondary)}.projects-section .card-bullets{display:flex;flex-direction:column;gap:.5rem;margin-top:.875rem}.projects-section .card-bullets li{position:relative;padding-left:1.125rem;font-size:.875rem;line-height:1.6;color:var(--text-secondary)}.projects-section .card-bullets li:before{content:"";position:absolute;left:0;top:.7em;width:5px;height:1px;background:var(--accent)}.projects-section .chip-row{margin-top:1.125rem}.projects-section .project-highlight{display:grid;grid-template-columns:1.6fr 1fr;gap:2.5rem;padding:2.25rem;background:radial-gradient(120% 140% at 0% 0%,color-mix(in srgb,var(--accent) 7%,transparent),transparent 55%),var(--bg-card);border:1px solid var(--border-color);border-radius:16px;transition:border-color .25s ease,box-shadow .25s ease}.projects-section .project-highlight:hover{border-color:color-mix(in srgb,var(--accent) 35%,transparent);box-shadow:var(--card-shadow)}@media(max-width:720px){.projects-section .project-highlight{grid-template-columns:1fr;gap:1.75rem;padding:1.5rem}}.projects-section .project-highlight .highlight-label{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:.5rem;color:var(--accent);margin-bottom:1rem}.projects-section .project-highlight .highlight-dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}.projects-section .project-highlight h3{font-size:1.5rem;letter-spacing:-.02em}.projects-section .project-highlight .summary{margin-top:.75rem;max-width:58ch;font-size:1rem}.projects-section .project-highlight .card-bullets{margin-top:1.125rem}.projects-section .project-highlight .card-bullets li{max-width:62ch;font-size:.9375rem}.projects-section .project-highlight .highlight-aside{display:flex;flex-direction:column;justify-content:center;padding-left:2.25rem;border-left:1px solid var(--border-color)}@media(max-width:720px){.projects-section .project-highlight .highlight-aside{padding-left:0;padding-top:1.5rem;border-left:none;border-top:1px solid var(--border-color)}}.projects-section .project-highlight .highlight-aside dl{display:flex;flex-direction:column;gap:1.125rem}.projects-section .project-highlight .highlight-aside dt{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;font-size:.75rem;color:var(--text-muted)}.projects-section .project-highlight .highlight-aside dd{margin-top:.2rem;font-size:.9375rem;color:var(--text-secondary)}.projects-section .project-highlight .highlight-aside .highlight-link{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;gap:.375rem;margin-top:1.5rem;color:var(--accent);transition:opacity .2s ease}.projects-section .project-highlight .highlight-aside .highlight-link:hover{opacity:.8}.projects-section .featured-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem;margin-top:1.25rem}@media(max-width:720px){.projects-section .featured-grid{grid-template-columns:1fr}}.projects-section .project-card{display:flex;flex-direction:column;padding:1.5rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:14px;transition:border-color .25s ease,transform .25s ease,box-shadow .25s ease}.projects-section .project-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 35%,transparent);box-shadow:var(--card-shadow)}.projects-section .project-card .card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.projects-section .project-card .project-index{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--text-muted)}.projects-section .project-card .code-link{display:flex;color:var(--text-muted);transition:color .2s ease}.projects-section .project-card .code-link:hover{color:var(--text-primary)}.projects-section .project-card .chip-row{margin-top:auto;padding-top:1.25rem}.projects-section .project-tags{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;margin-top:.875rem;color:var(--text-muted)}.projects-section .more-projects{margin-top:5rem}.projects-section .more-projects .more-label{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--accent);margin-bottom:1.75rem}.projects-section .more-grid{display:grid;grid-template-columns:repeat(2,1fr);column-gap:4rem;row-gap:2.25rem}@media(max-width:720px){.projects-section .more-grid{grid-template-columns:1fr}}.projects-section .more-grid .more-item{padding-top:1.25rem;border-top:1px solid var(--border-color)}.projects-section .more-grid .more-item h3{font-size:1rem}.projects-section .more-grid .more-item .summary{font-size:.875rem}.projects-section .more-grid .more-item .card-bullets{margin-top:.625rem;gap:.375rem}.projects-section .more-grid .more-item .card-bullets li{font-size:.8125rem;max-width:56ch}.projects-section .more-grid .more-item .project-tags{margin-top:.75rem;font-size:.75rem}.education-section .education-row{display:grid;grid-template-columns:13rem 1fr;gap:2rem;padding:1.5rem 0;border-bottom:1px solid var(--border-color)}@media(max-width:720px){.education-section .education-row{grid-template-columns:1fr;gap:.5rem}}.education-section .education-row .label{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--text-muted);padding-top:3px}@media(max-width:720px){.education-section .education-row .label{padding-top:0}}.education-section .education-row h3{font-size:1.125rem;font-weight:550;letter-spacing:-.015em}.education-section .education-row .subtitle{margin-top:.25rem;font-size:.9375rem;color:var(--text-muted)}.education-section .education-row .detail{margin-top:.625rem;font-size:.9375rem;color:var(--text-secondary)}.blog-post-page{padding:6rem 0 4rem}.blog-post-page .blog-post-container{max-width:720px}.blog-post-page .back-link{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;gap:.5rem;color:var(--text-muted);transition:color .2s ease}.blog-post-page .back-link:hover{color:var(--text-primary)}.blog-post-page .post-header{margin-top:3rem;margin-bottom:2.5rem}.blog-post-page .post-header .post-meta{font-family:var(--font-mono);font-size:.8125rem;font-weight:400;letter-spacing:.01em;font-variant-numeric:tabular-nums;display:flex;flex-wrap:wrap;gap:.625rem;color:var(--text-muted);margin-bottom:1.25rem}.blog-post-page .post-header h1{font-size:clamp(1.75rem,4.5vw,2.5rem);font-weight:600;letter-spacing:-.025em;line-height:1.15;text-wrap:balance}.blog-post-page .post-content{color:var(--text-secondary);line-height:1.75}.blog-post-page .post-content p{margin-bottom:1.25rem}.blog-post-page .post-content h3{margin:2.25rem 0 .875rem;font-size:1.25rem;font-weight:600;letter-spacing:-.015em;color:var(--text-primary)}.blog-post-page .post-content ul{list-style:none;margin-bottom:1.25rem}.blog-post-page .post-content ul li{position:relative;padding-left:1.25rem;margin-bottom:.5rem}.blog-post-page .post-content ul li:before{content:"";position:absolute;left:0;top:.7em;width:5px;height:1px;background:var(--text-muted)}.blog-post-page .post-content strong{color:var(--text-primary);font-weight:550}.blog-post-page .post-content code{font-family:var(--font-mono);font-size:.875em;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;padding:.125rem .375rem}
