@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Outfit:wght@600;700&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root,[data-theme=dark]{--color-bg:#0b0f14;--color-surface:#111827;--color-surface-hover:#1a2433;--color-border:#1f2937;--color-text-primary:#f8fafc;--color-text-secondary:#94a3b8;--color-accent:#3b82f6;--color-accent-hover:#2563eb;--color-success:#22c55e;--color-warning:#f59e0b;--color-error:#ef4444;--spotlight-color:#3b82f612;--toggle-icon:"☀"}[data-theme=light]{--color-bg:#fff;--color-surface:#f8fafc;--color-surface-hover:#f1f5f9;--color-border:#e2e8f0;--color-text-primary:#0f172a;--color-text-secondary:#64748b;--color-accent:#2563eb;--color-accent-hover:#1d4ed8;--color-success:#16a34a;--color-warning:#d97706;--color-error:#dc2626;--spotlight-color:#2563eb0d;--toggle-icon:"☾"}html{scroll-behavior:smooth;--mouse-x:50%;--mouse-y:50%}body{background-color:var(--color-bg);color:var(--color-text-primary);background-image:radial-gradient(circle 600px at var(--mouse-x) var(--mouse-y), var(--spotlight-color), transparent 80%);min-height:100vh;font-family:Inter,system-ui,sans-serif;line-height:1.7;transition:background-color .25s,color .25s}a{color:var(--color-accent);text-decoration:none;transition:color .2s}a:hover{color:var(--color-accent-hover)}h1,h2,h3{color:var(--color-text-primary);font-family:Outfit,sans-serif;line-height:1.2}h1{font-size:clamp(1.75rem,3vw,2.5rem);font-weight:700}h2{font-size:clamp(1rem,1.5vw,1.25rem);font-weight:600}h3{font-size:1rem;font-weight:600}p{color:var(--color-text-secondary);font-size:.9375rem}.section-heading{letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-primary);margin-bottom:0;font-family:Outfit,sans-serif;font-size:.75rem;font-weight:700}.layout{max-width:1200px;min-height:100vh;margin:0 auto;display:flex}.left-panel{flex-direction:column;flex-shrink:0;width:340px;height:100vh;padding:4rem 2.5rem;display:flex;position:sticky;top:0;overflow-y:auto}.left-panel__top{flex:1}.hero-name{margin-bottom:.35rem}.hero-title{color:var(--color-text-secondary);margin-bottom:1rem;font-size:.95rem;font-weight:500}.hero-tagline{margin-bottom:2.5rem;font-size:.9rem;line-height:1.6}.nav{flex-direction:column;gap:.25rem;display:flex}.nav-link{letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-secondary);align-items:center;gap:.75rem;width:fit-content;padding:.35rem 0;font-size:.8rem;font-weight:600;text-decoration:none;transition:color .2s;display:flex;position:relative}.nav-link:before{content:"";background:currentColor;flex-shrink:0;width:2rem;height:1px;transition:width .3s;display:block}.nav-link:hover,.nav-link.active{color:var(--color-text-primary)}.nav-link:hover:before,.nav-link.active:before{width:4rem}.social-links{flex-direction:column;gap:.5rem;margin-top:2.5rem;display:flex}.social-link{color:var(--color-text-secondary);align-items:center;gap:.5rem;font-size:.8rem;text-decoration:none;transition:color .2s;display:flex}.social-link:hover{color:var(--color-text-primary)}.social-link svg{flex-shrink:0;width:16px;height:16px}.theme-toggle{border:1px solid var(--color-border);cursor:pointer;letter-spacing:.05em;color:var(--color-text-secondary);background:0 0;border-radius:9999px;align-items:center;gap:.4rem;width:fit-content;margin-top:2rem;padding:.4rem .9rem;font-size:.75rem;font-weight:600;transition:color .2s,border-color .2s,background-color .2s;display:flex}.theme-toggle:hover{color:var(--color-text-primary);border-color:var(--color-text-secondary)}.right-panel{flex:1;max-width:680px;padding:4rem 2.5rem 6rem 4rem}.section{margin-bottom:6rem}.section:last-child{margin-bottom:0}.section-header{z-index:10;background:0 0;margin-bottom:1rem;padding:1rem 0 .5rem;position:sticky;top:0}.card-list{position:relative}.card-list:has(.card:hover) .card:not(:hover){opacity:.4}.card{cursor:default;border:1px solid #0000;border-radius:.5rem;grid-template-columns:120px 1fr;gap:0 1.5rem;margin-bottom:.25rem;padding:1.25rem;transition:background-color .2s,border-color .2s,opacity .25s;display:grid}.card:hover{background-color:var(--color-surface-hover);border-color:var(--color-border)}.card__left{flex-direction:column;gap:.5rem;display:flex}.card__thumbnail{object-fit:cover;border:1px solid var(--color-border);border-radius:.375rem;width:100%;height:72px;display:block}.card__date{letter-spacing:.04em;color:var(--color-text-secondary);white-space:nowrap;font-size:.75rem;font-weight:500}.card__body{flex-direction:column;gap:.5rem;display:flex}.card__title{color:var(--color-text-primary);font-size:.9375rem;font-weight:600;line-height:1.4}.card__title a{color:inherit;align-items:center;gap:.25rem;transition:color .2s;display:inline-flex}.card__title a:hover{color:var(--color-accent)}.card__title a svg{opacity:.6;width:13px;height:13px;transition:opacity .2s,transform .2s}.card__title a:hover svg{opacity:1;transform:translate(2px,-2px)}.card__prose{flex-direction:column;gap:.6rem;display:flex}.card__prose p{color:color-mix(in srgb, var(--color-text-primary) 40%, var(--color-text-secondary));font-size:.875rem;line-height:1.75}.card__prose ul{flex-direction:column;gap:.4rem;padding-left:1rem;list-style:none;display:flex}.card__prose li{color:color-mix(in srgb, var(--color-text-primary) 40%, var(--color-text-secondary));font-size:.875rem;line-height:1.75;position:relative}.card__prose li:before{content:"–";color:var(--color-text-secondary);position:absolute;left:-1rem}.tags{flex-wrap:wrap;gap:.375rem;margin-top:.25rem;display:flex}.tag{letter-spacing:.04em;background-color:color-mix(in srgb, var(--color-accent) 15%, transparent);color:var(--color-accent);border-radius:9999px;padding:.2rem .65rem;font-size:.7rem;font-weight:600;transition:background-color .2s;display:inline-block}.card__repo-link{color:var(--color-text-secondary);align-items:center;gap:.35rem;width:fit-content;margin-top:.25rem;font-size:.75rem;font-weight:600;text-decoration:none;transition:color .2s;display:inline-flex}.card__repo-link:hover{color:var(--color-text-primary)}.card__repo-link svg{flex-shrink:0;width:14px;height:14px}[data-theme=light] .tag{background-color:color-mix(in srgb, var(--color-accent) 12%, transparent)}.resume-link{color:var(--color-text-primary);align-items:center;gap:.4rem;margin-top:2rem;font-size:.875rem;font-weight:600;text-decoration:none;transition:color .2s,gap .2s;display:inline-flex}.resume-link:hover{color:var(--color-accent);gap:.65rem}.resume-link svg{width:14px;height:14px}.about-prose{flex-direction:column;gap:1rem;display:flex}.card__context{color:var(--color-text-secondary);margin-bottom:.25rem;font-size:.8125rem;font-style:italic;line-height:1.6}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1.5rem;display:grid}.skill-group__label{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-primary);margin-bottom:.5rem;font-size:.75rem;font-weight:700}.skill-group__items{flex-wrap:wrap;gap:.375rem;display:flex}.skill-group__item{letter-spacing:.04em;background-color:color-mix(in srgb, var(--color-text-secondary) 12%, transparent);color:var(--color-text-secondary);border-radius:9999px;padding:.2rem .65rem;font-size:.7rem;font-weight:600;display:inline-block}@media (width<=1023px){.layout{flex-direction:column}.left-panel{width:100%;height:auto;padding:2.5rem 1.5rem 2rem;position:static}.right-panel{max-width:100%;padding:0 1.5rem 4rem}.nav{flex-flow:wrap;gap:.5rem 1.5rem}.nav-link:before{display:none}.social-links{flex-flow:wrap;gap:.75rem 1.5rem;margin-top:1.5rem}.card{grid-template-columns:1fr}.card__left{flex-direction:row;align-items:center;gap:.75rem}.card__thumbnail{flex-shrink:0;width:48px;height:48px}.card__date{font-size:.7rem}}@media (width<=767px){h1{font-size:1.75rem}.left-panel{padding:2rem 1rem 1.5rem}.right-panel{padding:0 1rem 3rem}.card{padding:1rem}}
