:root{--bg:#f8f5f0;--surface:#f1ede5;--surface-elevated:#e8e3d8;--border:#d8d2c4;--border-strong:#c2bba8;--text:#1a1a1a;--text-muted:#5a5a5a;--text-subtle:#8a8a8a;--accent:#1a1a1a;--accent-hover:#000;--accent-subtle:#1a1a1a0d;--nav-active:#1a1a1a;--nav-active-bg:#1a1a1a0f;--font-body:"Inter",system-ui,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans, -apple-system, BlinkMacSystemFont, sans-serif;--font-display:"Space Grotesk", "Inter", sans-serif;--font-mono:"JetBrains Mono", "SF Mono", Menlo, Monaco, Consolas, monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--width-content:720px;--width-wide:1100px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-pill:999px;--transition-fast:.15s ease;--transition-base:.2s ease}[data-theme=dark]{--bg:#0e1116;--surface:#161b22;--surface-elevated:#1c222b;--border:#2a313c;--border-strong:#3d4654;--text:#e6edf3;--text-muted:#8b949e;--text-subtle:#6e7681;--accent:#e6edf3;--accent-hover:#fff;--accent-subtle:#e6edf30d;--nav-active:#e6edf3;--nav-active-bg:#e6edf30f}body{transition:background-color .2s,color .2s;transition:background-color var(--transition-base), color var(--transition-base)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:#f8f5f0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,-apple-system,BlinkMacSystemFont,sans-serif;font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.6}h1,h2,h3,h4{font-family:Space Grotesk,Inter,sans-serif;font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-weight:600;line-height:1.2}h1{font-size:max(2rem,min(5vw,3rem))}h2{font-size:max(1.5rem,min(3vw,2rem))}h3{font-size:1.25rem}h4{font-size:1rem}p{margin:0 0 1rem;margin:0 0 var(--space-4)}a{color:var(--text);-webkit-text-decoration:underline #8a8a8a;text-decoration:underline #8a8a8a;-webkit-text-decoration-color:var(--text-subtle);text-decoration-color:var(--text-subtle);text-underline-offset:3px;transition:text-decoration-color .15s;transition:text-decoration-color var(--transition-fast)}a:hover{text-decoration-color:#1a1a1a;-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}::selection{color:var(--text);background:#1a1a1a26}[data-theme=dark] ::selection{background:#e6edf333}:focus-visible{outline:2px solid #1a1a1a;outline:2px solid var(--text);outline-offset:2px;border-radius:6px;border-radius:var(--radius-sm)}.container{width:100%;max-width:720px;max-width:var(--width-content);padding:0 1rem;padding:0 var(--space-4);margin:0 auto}.container-wide{width:100%;max-width:1100px;max-width:var(--width-wide);padding:0 1rem;padding:0 var(--space-4);margin:0 auto}.site-header{background:var(--bg);border-bottom:1px solid var(--border)}.header-inner{max-width:var(--width-wide);padding:var(--space-5) var(--space-4);justify-content:flex-end;align-items:center;margin:0 auto;display:flex}.nav{gap:var(--space-6);display:flex}.nav a{color:var(--text-muted);padding:var(--space-2) 0;transition:color var(--transition-fast);font-size:.95rem;font-weight:400;-webkit-text-decoration:none;text-decoration:none}.nav a:hover{color:var(--text)}.nav a.active{color:var(--text);font-weight:500}@media (width<=540px){.header-inner{padding:var(--space-4)}.nav{gap:var(--space-4)}.nav a{font-size:.9rem}}.theme-toggle{padding:var(--space-2);margin-left:var(--space-8);cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.theme-toggle:hover{color:var(--text);background:var(--accent-subtle)}main{flex-direction:column;width:100%;min-height:100vh;display:flex}ul{padding-left:var(--space-6);margin:0}li{padding-bottom:var(--space-1)}.content_wrap{flex:1;width:100%}.content{padding:var(--space-12) var(--space-4);justify-content:center;display:flex}article{width:100%;max-width:var(--width-wide);gap:var(--space-8);flex-direction:column;display:flex}.bttn{padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);background:var(--accent);color:var(--bg);cursor:pointer;transition:background var(--transition-fast), transform var(--transition-fast);border:none;font-size:.95rem;font-weight:600;-webkit-text-decoration:none;text-decoration:none;display:inline-block}.bttn:hover{background:var(--accent-hover);color:var(--bg)}.bttn-secondary{color:var(--text);border:1px solid var(--border);background:0 0}.bttn-secondary:hover{background:var(--surface);color:var(--accent);border-color:var(--accent)}@media (width>=768px){.content{padding:var(--space-16) var(--space-8)}}.hero{padding:var(--space-12) 0 var(--space-16);max-width:var(--width-content);width:100%;margin:0 auto}.hero-title{margin-bottom:var(--space-6);letter-spacing:-.03em;font-size:max(2.25rem,min(5vw,3.25rem));font-weight:700}.hero-name{color:var(--text)}.hero-lede{color:var(--text-muted);margin-bottom:var(--space-4);max-width:60ch;font-size:1.125rem;line-height:1.7}.hero-links{gap:var(--space-3);margin-top:var(--space-8);flex-wrap:wrap;display:flex}.hero-link{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);transition:border-color var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);font-size:.95rem;font-weight:500;-webkit-text-decoration:none;text-decoration:none;display:inline-flex}.hero-link:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.hero-link-icon{flex-shrink:0}.posts{max-width:var(--width-content);width:100%;padding:var(--space-8) 0;margin:0 auto}.posts-header{margin-bottom:var(--space-6)}.posts-header h2{font-size:1.5rem}.posts-list{flex-direction:column;display:flex}.post-item{grid-gap:var(--space-4);align-items:baseline;gap:var(--space-4);padding:var(--space-4) 0;color:var(--text);border-bottom:1px solid var(--border);transition:padding var(--transition-fast);grid-template-columns:130px 1fr auto;-webkit-text-decoration:none;text-decoration:none;display:grid}.post-item:last-child{border-bottom:none}.post-item-date{font-family:var(--font-mono);color:var(--text-muted);font-size:.85rem}.post-item-title{color:var(--text);font-weight:500}.post-item-arrow{color:var(--text-subtle);transition:transform var(--transition-fast), color var(--transition-fast);font-size:1.1rem}.post-item:hover{padding-left:var(--space-2)}.post-item:hover .post-item-title{color:var(--accent)}.post-item:hover .post-item-arrow{color:var(--accent);transform:translate(4px)}@media (width<=540px){.post-item{gap:var(--space-2);grid-template-columns:1fr auto}.post-item-date{margin-bottom:var(--space-1);order:-1;grid-column:1/-1}}.home-footer{max-width:var(--width-content);width:100%;padding:var(--space-12) 0 var(--space-8);border-top:1px solid var(--border);margin:0 auto;margin-top:var(--space-12);justify-content:center;display:flex}.view-counter{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);font-family:var(--font-mono);color:var(--text-muted);cursor:help;font-size:.8rem;display:inline-flex}.view-counter-dot{background:var(--accent);border-radius:50%;width:6px;height:6px;animation:2s ease-in-out infinite pulse}.view-counter-count{color:var(--text);font-weight:600}.view-counter-label{color:var(--text-subtle)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.resume{width:100%;max-width:var(--width-wide);margin:0 auto}.resume-toolbar{margin-bottom:var(--space-8);justify-content:flex-end;display:flex}.resume-toolbar .bttn{align-items:center;gap:var(--space-2);font-size:.9rem;display:inline-flex}.resume-header{text-align:center;padding:var(--space-8) 0 var(--space-12);border-bottom:1px solid var(--border);margin-bottom:var(--space-12)}.resume-name{margin-bottom:var(--space-2);letter-spacing:-.03em;font-size:max(2.5rem,min(5vw,3.5rem))}.resume-contact{justify-content:center;gap:var(--space-4) var(--space-8);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.resume-contact li{align-items:center;gap:var(--space-2);color:var(--text-muted);padding:0;font-size:.9rem;display:inline-flex}.resume-contact a{color:var(--text-muted)}.resume-contact a:hover{color:var(--accent)}.resume-grid{grid-gap:var(--space-12);gap:var(--space-12);grid-template-columns:260px 1fr;display:grid}@media (width<=768px){.resume-grid{gap:var(--space-8);grid-template-columns:1fr}}.resume-section{margin-bottom:var(--space-10)}.resume-section-title{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.15em;color:var(--text-muted);padding-bottom:var(--space-3);border-bottom:1px solid var(--border);margin-bottom:var(--space-6);font-size:.75rem;font-weight:600}.resume-cert-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.resume-cert{gap:var(--space-1);padding-bottom:var(--space-3);border-bottom:1px solid var(--border);flex-direction:column;display:flex}.resume-cert:last-child{border-bottom:none}.resume-cert-title{color:var(--text);font-size:.9rem;font-weight:500;line-height:1.3}.resume-cert-date{font-family:var(--font-mono);color:var(--text-subtle);font-size:.75rem}.resume-skills{gap:var(--space-4);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.resume-skill{gap:var(--space-1);flex-direction:column;padding:0;display:flex}.resume-skill-category{color:var(--text);font-size:.8rem;font-weight:600}.resume-skill-items{color:var(--text-muted);font-size:.85rem;line-height:1.5}.resume-section-items{gap:var(--space-8);flex-direction:column;display:flex}.resume-item{position:relative}.resume-item-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-3);display:flex}.resume-item-title-block{flex:1;min-width:0}.resume-item-title{color:var(--text);margin-bottom:var(--space-1);font-size:1.05rem;font-weight:600;line-height:1.3}.resume-item-subtitle{color:var(--text-muted);margin:0 0 var(--space-1);font-size:.95rem}.resume-item-company{color:var(--text-muted);margin:0;font-size:.9rem}.resume-item-duration{font-family:var(--font-mono);color:var(--text-subtle);white-space:nowrap;padding-top:4px;font-size:.8rem}.resume-item-bullets{margin:var(--space-3) 0 0;gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.resume-item-bullets li{padding-left:var(--space-5);color:var(--text-muted);font-size:.95rem;line-height:1.6;position:relative}.resume-item-bullets li:before{content:"•";left:var(--space-2);color:var(--text-subtle);font-weight:700;position:absolute;top:0}@media (width<=540px){.resume-item-header{gap:var(--space-2);flex-direction:column}.resume-item-duration{padding-top:0}}@media print{body{color:#000;background:#fff}.site-header,.resume-toolbar,.home-footer{display:none}.resume-header{border-color:#ccc}.resume-section-title{color:#555;border-color:#ccc}.resume-item-title,.resume-item-bullets li,.resume-cert-title,.resume-skill-category,.resume-skill-items{color:#000}.resume-tagline,.resume-item-duration,.resume-cert-date,.resume-item-company,.resume-item-subtitle{color:#555}.resume-item-bullets li:before{background:#999}a{color:#000;-webkit-text-decoration:underline;text-decoration:underline}}.projects-page{width:100%;max-width:var(--width-content);margin:0 auto}.projects-header{margin-bottom:var(--space-12)}.projects-title{margin-bottom:var(--space-4);letter-spacing:-.02em;font-size:max(2rem,min(4vw,2.75rem))}.projects-lede{color:var(--text-muted);max-width:60ch;font-size:1.05rem;line-height:1.7}.projects-grid{flex-direction:column;display:flex}.project-card{padding:var(--space-8) 0;border-bottom:1px solid var(--border);transition:padding var(--transition-base)}.project-card:last-child{border-bottom:none}.project-card:hover{padding-left:var(--space-3)}.project-info{gap:var(--space-3);flex-direction:column;display:flex}.project-name{letter-spacing:-.01em;transition:color var(--transition-fast);margin:0;font-size:1.4rem}.project-card:hover .project-name{color:var(--accent)}.project-tags{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.project-tag{font-family:var(--font-mono);color:var(--text-muted);background:var(--surface);border:1px solid var(--border);padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:.75rem}.project-tags-large .project-tag{padding:var(--space-1) var(--space-3);font-size:.8rem}.project-description{color:var(--text-muted);max-width:60ch;margin:0;line-height:1.6}.project-link{align-items:center;gap:var(--space-1);margin-top:var(--space-2);color:var(--accent);width:fit-content;transition:gap var(--transition-fast), color var(--transition-fast);font-size:.95rem;font-weight:500;-webkit-text-decoration:none;text-decoration:none;display:inline-flex}.project-link:hover{gap:var(--space-2);color:var(--accent-hover)}.project-detail{width:100%;max-width:var(--width-content);margin:0 auto}.project-back{align-items:center;gap:var(--space-2);color:var(--text-muted);margin-bottom:var(--space-8);transition:color var(--transition-fast), gap var(--transition-fast);font-size:.9rem;-webkit-text-decoration:none;text-decoration:none;display:inline-flex}.project-back:hover{color:var(--accent);gap:var(--space-3)}.project-detail-header{padding-bottom:var(--space-8);border-bottom:1px solid var(--border);margin-bottom:var(--space-8)}.project-detail-title{margin-bottom:var(--space-4);letter-spacing:-.02em;color:var(--text);font-size:max(1.75rem,min(4vw,2.5rem))}.project-detail-description{color:var(--text-muted);margin:var(--space-4) 0 0;font-size:1.1rem;line-height:1.7}.project-detail-body{color:var(--text);font-size:1rem;line-height:1.7}.project-detail-body h1{display:none}.project-detail-body h2{margin-top:var(--space-10);margin-bottom:var(--space-4);color:var(--text);font-size:1.5rem}.project-detail-body h3{margin-top:var(--space-6);margin-bottom:var(--space-3);color:var(--text);font-size:1.15rem}.project-detail-body p{margin-bottom:var(--space-4);color:var(--text-muted)}.project-detail-body strong{color:var(--text);font-weight:600}.project-detail-body em{color:var(--text-subtle)}.project-detail-body ul,.project-detail-body ol{margin:var(--space-4) 0;padding-left:var(--space-6)}.project-detail-body li{margin-bottom:var(--space-2);color:var(--text-muted);line-height:1.7}.project-detail-body code{font-family:var(--font-mono);background:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--accent);padding:2px 6px;font-size:.85em}.project-detail-body a{color:var(--accent);border-bottom:1px solid var(--accent-subtle)}.project-detail-body a:hover{border-bottom-color:var(--accent)}.project-figure{margin:var(--space-8) 0}.project-figure img{border:1px solid var(--border);border-radius:var(--radius-md);background:#111827;width:100%}.project-figure figcaption{margin-top:var(--space-3);color:var(--text-muted);text-align:center;font-size:.85rem;font-style:italic}
