:root{--bg:#0f0e0c;--bg-card:#201e1a;--bg-card-hover:#252220;--border:#342f2a;--border-subtle:#252220;--accent:#9aba94;--accent-dim:#56764f;--accent-surface:#9aba9414;--accent-glow:#9aba940f;--text-primary:#ece7de;--text-secondary:#a09890;--text-muted:#5a5550;--font-display:"Fraunces", Georgia, serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"IBM Plex Mono", monospace;--radius:5px;--ease:.22s ease;--max-width:960px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:17px;line-height:1.75}a{color:var(--accent);text-decoration:none}.nav{z-index:100;height:56px;transition:background var(--ease), border-color var(--ease);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;padding:0 2rem;display:flex;position:fixed;top:0;left:0;right:0}.nav--scrolled{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom-color:var(--border);background:#0f0e0ced}.nav-logo{font-family:var(--font-mono);color:var(--accent);letter-spacing:.06em;font-size:.82rem;font-weight:600}.nav-logo-btn{all:unset;cursor:pointer;font-family:var(--font-mono);color:var(--accent);letter-spacing:.06em;font-size:.82rem;font-weight:600}.nav-links{gap:2rem;list-style:none;display:flex}.nav-btn{all:unset;cursor:pointer;font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.08em;text-transform:lowercase;transition:color var(--ease);font-size:.75rem}.nav-btn:hover{color:var(--text-primary)}.nav-btn:focus-visible,.nav-logo-btn:focus-visible{outline:2px solid var(--accent-dim);outline-offset:4px}section{border-bottom:1px solid var(--border-subtle)}section:last-of-type{border-bottom:none}.section-inner{max-width:var(--max-width);margin:0 auto;padding:7rem 2rem}.section-label{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:1.25rem;font-size:.68rem}#hero{align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}#hero:before{content:"";pointer-events:none;background:radial-gradient(55% 60% at 75% 40%,#9aba9417 0%,#0000 65%),radial-gradient(40% 50% at 20% 70%,#be9b640f 0%,#0000 60%);position:absolute;inset:0}.hero-inner{max-width:var(--max-width);width:100%;margin:0 auto;padding:0 2rem;animation:.9s both fadeUp}.hero-greeting{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);opacity:.8;margin-bottom:1.5rem;font-size:.75rem}.hero-name{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.01em;margin-bottom:1.25rem;font-size:clamp(3rem,8.5vw,5.8rem);font-style:italic;font-weight:300;line-height:1.02}.hero-sub{font-family:var(--font-body);color:var(--text-secondary);max-width:480px;margin-bottom:2.75rem;font-size:1.075rem;font-weight:400;line-height:1.85}.hero-cta{all:unset;cursor:pointer;border:1px solid var(--accent-dim);color:var(--accent);border-radius:var(--radius);font-family:var(--font-mono);letter-spacing:.07em;transition:background var(--ease), color var(--ease), border-color var(--ease);align-items:center;gap:.5rem;padding:.65rem 1.5rem;font-size:.78rem;display:inline-flex}.hero-cta:hover{background:var(--accent);color:var(--bg);border-color:var(--accent)}.hero-scroll-hint{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.12em;margin-top:4.5rem;font-size:.65rem;animation:2.5s infinite bounce;display:block}.about-grid{grid-template-columns:1fr 1fr;align-items:start;gap:5rem;display:grid}@media (width<=640px){.about-grid{grid-template-columns:1fr;gap:2.5rem}}.about-heading{font-family:var(--font-display);color:var(--text-primary);margin-bottom:1.75rem;font-size:clamp(2rem,4.5vw,3rem);font-style:italic;font-weight:300;line-height:1.18}.about-bio p{font-family:var(--font-body);color:var(--text-secondary);margin-bottom:1rem;font-size:1rem;line-height:1.85}.skills-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.9rem;font-size:.68rem}.skills-chips{flex-wrap:wrap;gap:.5rem;display:flex}.chip{font-family:var(--font-mono);border:1px solid var(--accent-dim);color:var(--accent);background:var(--accent-surface);letter-spacing:.04em;transition:border-color var(--ease), color var(--ease), background var(--ease);border-radius:99px;padding:.3rem .8rem;font-size:.72rem}.chip:hover{color:var(--text-primary);background:#9aba9424}.projects-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:2.75rem;display:flex}.projects-heading{font-family:var(--font-display);color:var(--text-primary);font-size:clamp(2rem,4.5vw,3rem);font-style:italic;font-weight:300}.projects-github-link{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.07em;border-bottom:1px solid var(--border);transition:color var(--ease), border-color var(--ease);padding-bottom:2px;font-size:.75rem}.projects-github-link:hover{color:var(--text-secondary);border-color:var(--accent-dim)}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:inherit;transition:border-color var(--ease), transform var(--ease);flex-direction:column;gap:.85rem;padding:1.6rem;display:flex}.project-card:hover{border-color:var(--accent-dim);background:var(--bg-card-hover);transform:translateY(-2px)}.project-name{font-family:var(--font-body);color:var(--text-primary);letter-spacing:.01em;font-size:.975rem;font-weight:500}.project-desc{font-family:var(--font-body);color:var(--text-secondary);flex:1;font-size:.9rem;line-height:1.7}.project-meta{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.04em;gap:1rem;font-size:.68rem;display:flex}.project-lang:before{content:"◆ ";color:var(--accent-dim)}.project-stars:before{content:"★ "}.projects-loading{font-family:var(--font-mono);color:var(--text-muted);padding:2rem 0;font-size:.82rem}.projects-error{font-family:var(--font-mono);color:#c97b6e;padding:2rem 0;font-size:.82rem}.contact-heading{font-family:var(--font-display);color:var(--text-primary);margin-bottom:1rem;font-size:clamp(2rem,4.5vw,3rem);font-style:italic;font-weight:300}.contact-sub{font-family:var(--font-body);color:var(--text-secondary);max-width:480px;margin-bottom:2.25rem;font-size:1rem;line-height:1.85}.contact-links{flex-wrap:wrap;gap:.85rem;display:flex}.contact-link{border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-mono);color:var(--text-secondary);letter-spacing:.05em;transition:border-color var(--ease), color var(--ease);align-items:center;gap:.5rem;padding:.65rem 1.25rem;font-size:.78rem;display:flex}.contact-link:hover{border-color:var(--accent);color:var(--accent)}.blog-list{flex-direction:column;gap:.5rem;margin-top:.5rem;display:flex}.blog-card{all:unset;cursor:pointer;border:1px solid var(--border-subtle);border-radius:var(--radius);color:var(--text-secondary);transition:border-color var(--ease), color var(--ease), background var(--ease);grid-template-columns:110px 1fr auto;align-items:center;gap:1.5rem;padding:1.2rem 1.4rem;display:grid}.blog-card:hover{border-color:var(--accent-dim);background:var(--bg-card);color:var(--text-primary)}.blog-card:focus-visible{outline:2px solid var(--accent-dim);outline-offset:3px}.blog-date{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.07em;align-self:start;padding-top:.2rem;font-size:.68rem}.blog-text{flex-direction:column;gap:.3rem;display:flex}.blog-title{font-family:var(--font-body);color:inherit;font-size:.975rem;font-weight:500}.blog-summary{font-family:var(--font-body);color:var(--text-muted);font-size:.85rem;font-weight:400;line-height:1.55}.blog-arrow{font-family:var(--font-mono);color:var(--text-muted);transition:color var(--ease), transform var(--ease)}.blog-card:hover .blog-arrow{color:var(--accent);transform:translate(3px)}@media (width<=560px){.blog-card{grid-template-columns:1fr auto}.blog-date{grid-column:1/-1;padding-top:0}}.post-view{max-width:720px;animation:.6s both fadeUp}.post-back{all:unset;cursor:pointer;font-family:var(--font-mono);letter-spacing:.08em;color:var(--text-muted);transition:color var(--ease);margin-bottom:2.5rem;font-size:.72rem;display:inline-block}.post-back:hover{color:var(--accent)}.post-back:focus-visible{outline:2px solid var(--accent-dim);outline-offset:3px}.post-date{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:.9rem;font-size:.7rem}.post-title{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text-primary);margin-bottom:2.5rem;font-size:clamp(2.1rem,5vw,3.2rem);font-style:italic;font-weight:300;line-height:1.12}.post-body{font-family:var(--font-body);color:var(--text-secondary);font-size:1.0625rem;line-height:1.8}.post-body>*+*{margin-top:1.4rem}.post-body h2{font-family:var(--font-display);color:var(--text-primary);margin-top:2.8rem;font-size:1.7rem;font-style:italic;font-weight:300;line-height:1.25}.post-body h3{font-family:var(--font-display);color:var(--text-primary);margin-top:2rem;font-size:1.3rem;font-style:italic;font-weight:300}.post-body strong{color:var(--text-primary);font-weight:500}.post-body a{color:var(--accent);border-bottom:1px solid var(--accent-dim);transition:border-color var(--ease)}.post-body a:hover{border-bottom-color:var(--accent)}.post-body ol,.post-body ul{padding-left:1.4rem}.post-body li{margin-top:.5rem}.post-body li::marker{color:var(--accent-dim)}.post-body blockquote{border-left:2px solid var(--accent-dim);color:var(--text-secondary);padding:.2rem 0 .2rem 1.4rem;font-style:italic}.post-body code{font-family:var(--font-mono);background:var(--bg-card);border:1px solid var(--border-subtle);color:var(--accent);border-radius:3px;padding:.1rem .35rem;font-size:.85em}.post-body pre{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem;overflow-x:auto}.post-body pre code{color:var(--text-primary);background:0 0;border:none;padding:0;font-size:.85rem;line-height:1.6}.footer{border-top:1px solid var(--border-subtle);font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.08em;justify-content:space-between;padding:1.5rem 2rem;font-size:.68rem;display:flex}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(7px)}}@media (prefers-reduced-motion:reduce){.hero-inner,.post-view,.hero-scroll-hint{animation:none}html{scroll-behavior:auto}}
