: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-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)}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{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.1rem 1.4rem;display:grid}.blog-card:hover{border-color:var(--accent-dim);background:var(--bg-card);color:var(--text-primary)}.blog-date{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.07em;font-size:.68rem}.blog-title{font-family:var(--font-body);color:inherit;font-size:.975rem;font-weight:400}.blog-arrow{font-family:var(--font-mono);color:var(--text-muted);transition:color var(--ease)}.blog-card:hover .blog-arrow{color:var(--accent)}.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,.hero-scroll-hint{animation:none}}
