@import "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500;700&family=Space+Grotesk:wght@400;500;600&display=swap";:root{--bg:#f4f4ef;--ink:#0b0b0c;--muted:#5c5c5c;--line:#d6d6d0;--card:#fff;--accent:#2f6bff;--accent-soft:#2f6bff1f;--shadow:#00000014 0 24px 60px -30px;color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Space Grotesk,system-ui,sans-serif}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100vh;color:var(--ink);background:radial-gradient(circle at 100% 0,#fff 0%,#0000 45%),radial-gradient(circle at 10% 20%,#0000000d 0%,#0000 35%),linear-gradient(#f7f7f2 0%,#efefea 100%);margin:0;position:relative}body:before{content:"";opacity:.35;pointer-events:none;z-index:0;background-image:repeating-linear-gradient(0deg,#00000005 0 1px,#0000 1px 3px),repeating-linear-gradient(90deg,#00000005 0 1px,#0000 1px 3px);position:fixed;inset:0}#root{z-index:1;position:relative}h1,h2,h3{letter-spacing:-.02em;margin:0 0 16px;font-family:Playfair Display,Times New Roman,serif}h1{font-size:clamp(3rem,6vw,5rem);line-height:.95}h2{font-size:clamp(1.8rem,3vw,2.6rem)}h3{letter-spacing:-.01em;font-family:Space Grotesk,system-ui,sans-serif;font-size:1.2rem}p{color:var(--muted);margin:0;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font:inherit}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.page{flex-direction:column;gap:80px;max-width:1120px;margin:0 auto;padding:36px 24px 64px;display:flex}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;padding:6px 0 18px;display:flex}.brand{letter-spacing:.08em;text-transform:uppercase;font-size:1.2rem;font-weight:600}.nav{color:var(--muted);gap:20px;font-size:.95rem;display:flex}.nav a{padding-bottom:4px;position:relative}.nav a:after{content:"";background:var(--ink);transform-origin:100%;width:100%;height:2px;transition:transform .3s;position:absolute;bottom:0;left:0;transform:scaleX(0)}.nav a:hover:after{transform-origin:0;transform:scaleX(1)}.lang-toggle{border:1px solid var(--line);background:var(--card);cursor:pointer;text-transform:uppercase;color:var(--muted);border-radius:999px;gap:8px;padding:6px 10px;font-size:.8rem;display:inline-flex}.lang-toggle span{border-radius:999px;padding:4px 8px;transition:background .3s,color .3s}.lang-toggle span.active{background:var(--ink);color:#fff}.hero{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:center;gap:48px;display:grid}.hero-left{flex-direction:column;gap:20px;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:.3em;color:var(--muted);font-size:.75rem}.hero-sup{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);vertical-align:top;margin-left:8px;font-family:Space Grotesk,system-ui,sans-serif;font-size:.2em}.tagline{color:var(--ink);max-width:520px;font-size:1.2rem}.body-text{max-width:520px}.hero-actions{flex-wrap:wrap;gap:16px;display:flex}.btn{border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;padding:12px 20px;font-weight:500;transition:transform .2s,box-shadow .2s,background .2s,color .2s;display:inline-flex}.btn.primary{background:var(--ink);color:#fff;box-shadow:var(--shadow)}.btn.primary:hover{transform:translateY(-2px)}.btn.ghost{border:1px solid var(--line);color:var(--ink);background:0 0}.btn.ghost:hover{border-color:var(--ink)}.hero-right{flex-direction:column;gap:18px;display:flex}.profile-card{border:1px solid var(--line);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffc;border-radius:20px;padding:24px}.profile-row{color:var(--ink);justify-content:space-between;padding:8px 0;font-size:.95rem;display:flex}.profile-row .label{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-size:.85rem}.profile-divider{background:var(--line);height:1px;margin:16px 0}.profile-note{font-size:.95rem}.hero-signal{color:var(--muted);align-items:center;gap:10px;font-size:.9rem;display:inline-flex}.hero-signal .dot{background:var(--accent);border-radius:999px;width:8px;height:8px;box-shadow:0 0 10px #2f6bff99}section{flex-direction:column;gap:24px;display:flex}.section-head{gap:12px;max-width:680px;display:grid}.about{margin-bottom:20px}.projects{margin-top:20px}.about-body{max-width:680px}.projects .repo-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.repo-card{border:1px solid var(--line);background:var(--card);border-radius:14px;flex-direction:column;gap:10px;padding:16px;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex}.repo-card.featured{background:#ffffffbf;border-style:dashed}.repo-top{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.repo-lang{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-size:.8rem}.repo-desc{color:var(--muted);flex:1;font-size:.95rem}.repo-meta{color:var(--muted);justify-content:space-between;font-size:.8rem;display:flex}.repo-link{color:var(--ink);border-bottom:1px solid var(--ink);width:fit-content;margin-top:8px;font-weight:500}.status{border:1px dashed var(--line);color:var(--muted);border-radius:16px;grid-column:1/-1;padding:18px}.status.error{color:var(--ink);border-color:#0000004d}.contact-card{border:1px solid var(--line);background:var(--card);border-radius:20px;flex-wrap:wrap;align-items:center;gap:18px;padding:20px;display:flex}.contact-email{color:var(--muted);font-size:.95rem}.footer{border-top:1px solid var(--line);color:var(--muted);padding-top:24px;font-size:.85rem}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(16px)}.reveal.is-visible{opacity:1;transform:translateY(0)}@media (width<=900px){.page{gap:64px}.topbar{flex-direction:column;align-items:flex-start}.hero{grid-template-columns:1fr}.nav{flex-wrap:wrap}}@media (width<=600px){.page{padding:28px 18px 56px}.topbar{gap:14px}.repo-meta{flex-direction:column;gap:6px}}
