:root{--bg:#fff;--fg:#111;--muted:#6b7280;--muted-bg:#f4f4f5;--card:#fff;--border:#e9e9ec;--accent:#111;--accent-fg:#fff;--ring:#00000014;--radius:14px;--maxw:672px;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, monospace}[data-theme=dark]{--bg:#0e0e11;--fg:#f4f4f5;--muted:#a1a1aa;--muted-bg:#1a1b20;--card:#16171c;--border:#ffffff1a;--accent:#fafafa;--accent-fg:#111;--ring:#ffffff1f}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}a{color:inherit}.page{max-width:var(--maxw);z-index:1;margin:0 auto;padding:96px 24px 80px;position:relative}.grid-bg{pointer-events:none;background-image:linear-gradient(to right, var(--border) 1px, transparent 1px), linear-gradient(to bottom, var(--border) 1px, transparent 1px);opacity:.7;background-size:28px 28px;height:220px;position:fixed;inset:0 0 auto;-webkit-mask-image:linear-gradient(#000,#0000);mask-image:linear-gradient(#000,#0000)}main{flex-direction:column;gap:56px;display:flex}section h2.section-title{letter-spacing:-.01em;margin:0 0 16px;font-size:20px;font-weight:700}.topnav-wrap{top:14px;z-index:50;pointer-events:none;justify-content:center;display:flex;position:fixed;inset-inline:0}.topnav{pointer-events:auto;background:color-mix(in srgb, var(--card) 88%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);box-shadow:0 8px 30px -12px var(--ring);border-radius:999px;align-items:center;gap:4px;padding:6px;display:flex}.topnav a,.topnav button.nav-btn{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:7px;padding:7px 13px;font-size:13.5px;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.topnav a:hover,.topnav button.nav-btn:hover{color:var(--fg);background:var(--muted-bg)}.topnav a.active{color:var(--fg);background:var(--muted-bg);border-color:var(--border)}.topnav .search-btn{border:1px solid var(--border);background:var(--muted-bg);color:var(--muted)}.topnav .search-btn:hover{color:var(--fg)}kbd{font-family:var(--mono);border:1px solid var(--border);background:var(--card);color:var(--muted);border-bottom-width:2px;border-radius:6px;padding:1px 5px;font-size:11px;line-height:1.4}.icon-btn{width:33px;height:33px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{color:var(--fg);background:var(--muted-bg)}.hero{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.hero-text h1{letter-spacing:-.03em;margin:0 0 6px;font-size:clamp(32px,5vw,44px);font-weight:700;line-height:1.1}.role-badge{border:1px solid var(--border);background:var(--muted-bg);border-radius:999px;align-items:center;gap:6px;margin-bottom:10px;padding:3px 12px;font-size:13px;font-weight:600;display:inline-flex}.role-dot{background:#22c55e;border-radius:999px;width:7px;height:7px;box-shadow:0 0 0 4px #22c55e26}.hero-text p{color:var(--muted);text-wrap:pretty;max-width:600px;margin:0;font-size:17px}.avatar{object-fit:cover;border:1px solid var(--border);width:104px;height:104px;box-shadow:0 8px 24px -8px var(--ring);border-radius:999px;flex:none}.avatar-fallback{background:var(--muted-bg);border:1px solid var(--border);border-radius:999px;flex:none;justify-content:center;align-items:center;width:104px;height:104px;font-size:32px;font-weight:700;display:flex}.contact-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.copy-email-btn{border:1px solid var(--border);background:var(--accent);color:var(--accent-fg);cursor:pointer;box-shadow:0 6px 18px -8px var(--ring);border-radius:12px;align-items:center;gap:8px;padding:9px 18px;font-family:inherit;font-size:14px;font-weight:600;transition:transform .12s,opacity .12s;display:inline-flex}.copy-email-btn:hover{opacity:.9;transform:translateY(-1px)}.social-icon-btn{color:var(--muted);border-radius:8px;justify-content:center;align-items:center;padding:6px;transition:color .12s,transform .12s;display:inline-flex}.social-icon-btn:hover{color:var(--fg);transform:translateY(-1px)}.skills{flex-wrap:wrap;gap:8px;display:flex}.skill-pill{border:1px solid var(--border);background:var(--card);border-radius:12px;align-items:center;gap:8px;padding:6px 14px 6px 8px;font-size:13.5px;font-weight:500;display:inline-flex;box-shadow:0 0 0 2px #00000004}.skill-pill img{object-fit:contain;width:20px;height:20px}.exp-list{flex-direction:column;display:flex}.exp-block{min-width:0}.exp-head,.exp-sub{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.exp-company{letter-spacing:-.01em;margin:0;font-size:17px;font-weight:700}.exp-dates,.exp-loc{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;flex:none;font-size:13px}.exp-sub{margin-top:2px}.exp-role{color:var(--muted);font-size:14.5px}.exp-tech-label{margin:14px 0 8px;font-size:14.5px;font-weight:700}.exp-techs{flex-wrap:wrap;gap:8px;display:flex}.exp-tech-pill{font-size:12.5px}.exp-tech-pill img{width:16px;height:16px}.exp-bullets{flex-direction:column;gap:8px;margin:14px 0 0;padding:0;list-style:none;display:flex}.exp-bullets li{color:var(--muted);max-width:65ch;padding-left:18px;font-size:14px;position:relative}.exp-bullets li:before{content:"▪";font-size:11px;position:absolute;top:1px;left:0}.exp-desc{color:var(--muted);max-width:65ch;margin:14px 0 0;font-size:14px}.exp-divider{background:var(--border);opacity:.6;height:1px;margin:26px 0}.projects-head{text-align:center;margin-bottom:20px}.pill-divider{align-items:center;gap:0;width:100%;margin-bottom:14px;display:flex}.pill-line{flex:1;min-width:0;height:1px}.pill-line:first-child{background:linear-gradient(to right, transparent 5%, var(--border) 95%)}.pill-line:last-child{background:linear-gradient(to left, transparent 5%, var(--border) 95%)}.pill-label{background:var(--accent);color:var(--accent-fg);border:1px solid var(--accent);white-space:nowrap;border-radius:999px;margin-bottom:14px;padding:4px 16px;font-size:12.5px;font-weight:600;display:inline-block}.pill-divider .pill-label{z-index:1;flex:none;margin-bottom:0;position:relative}.projects-head h2{letter-spacing:-.03em;margin:0 0 8px;font-size:30px;font-weight:800}.projects-head p{color:var(--muted);text-wrap:balance;max-width:52ch;margin:0 auto}.projects-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=640px){.projects-grid{grid-template-columns:1fr}}.project-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);flex-direction:column;height:100%;transition:box-shadow .15s,transform .15s;display:flex;overflow:hidden}.project-card:hover{box-shadow:0 12px 32px -14px var(--ring);transform:translateY(-1px)}.project-cover{background:var(--muted-bg);justify-content:center;align-items:center;height:180px;display:flex;position:relative;overflow:hidden}.project-cover span{color:#ffffffeb;letter-spacing:-.04em;font-size:40px;font-weight:800}.project-cover-img{object-fit:cover;width:100%;height:100%;display:block}.project-badges{gap:6px;display:flex;position:absolute;top:8px;right:8px}.mini-badge{color:#fff;background:#000000d9;border-radius:999px;align-items:center;gap:5px;padding:4px 10px;font-size:11px;font-weight:600;text-decoration:none;display:inline-flex}.mini-badge:hover{background:#000}.project-body{flex-direction:column;flex:1;gap:8px;padding:18px;display:flex}.project-body h3{margin:0;font-size:15.5px}.project-body time{color:var(--muted);font-size:12px}.project-body p{color:var(--muted);flex:1;margin:0;font-size:13px}.tags{flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:8px;display:flex}.tag{border:1px solid var(--border);background:var(--muted-bg);border-radius:999px;padding:2px 9px;font-size:11px;font-weight:500}.view-all{justify-content:center;margin-top:16px;display:flex}.btn{border:1px solid var(--border);background:var(--card);cursor:pointer;color:var(--fg);border-radius:999px;align-items:center;gap:8px;padding:9px 18px;font-size:13.5px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--muted-bg)}.btn-primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn-primary:hover{opacity:.88;background:var(--accent)}.palette-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;background:#00000059;justify-content:center;padding:12vh 16px 16px;display:flex;position:fixed;inset:0}.palette{background:var(--card);border:1px solid var(--border);border-radius:16px;flex-direction:column;width:100%;max-width:520px;height:fit-content;max-height:60vh;display:flex;overflow:hidden;box-shadow:0 24px 80px -12px #00000059}.palette-input{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:14px 16px;display:flex}.palette-input input{color:var(--fg);background:0 0;border:0;outline:0;flex:1;font-family:inherit;font-size:15px}.palette-list{padding:8px;overflow:auto}.palette-item{width:100%;color:var(--fg);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:14px;display:flex}.palette-item.active,.palette-item:hover{background:var(--muted-bg)}.palette-item small{color:var(--muted);flex:none;margin-left:auto;font-size:11px}.palette-empty{text-align:center;color:var(--muted);padding:24px;font-size:14px}.about-text{color:var(--muted);text-wrap:pretty;max-width:65ch;margin:0;font-size:15.5px}.about-text a{color:var(--fg)}html.custom-cursor,html.custom-cursor body,html.custom-cursor :not(input):not(textarea){cursor:none!important}html.custom-cursor input,html.custom-cursor textarea{cursor:text!important}.edu-list{flex-direction:column;display:flex}.edu-row{color:inherit;border-radius:10px;justify-content:space-between;align-items:center;gap:14px;padding:14px 0;text-decoration:none;transition:background .15s;display:flex}.edu-row+.edu-row{border-top:1px solid var(--border)}.edu-row--link{cursor:pointer;margin:0 -8px;padding:14px 8px}.edu-row--link:hover{background:var(--muted-bg);background:var(--muted-bg)}.edu-row--link:hover .edu-arrow{color:var(--fg);transform:translate(2px,-2px)}.edu-arrow{color:var(--muted);flex:none;transition:transform .15s,color .15s}.edu-main{align-items:center;gap:14px;min-width:0;display:flex}.edu-logo{object-fit:contain;object-position:center;background:#111214;border:1px solid #ffffff14;border-radius:12px;flex:none;width:48px;height:48px;padding:6px}.edu-logo-fallback{color:#fff;background:#111214;border:1px solid #ffffff14;border-radius:12px;flex:none;justify-content:center;align-items:center;width:48px;height:48px;font-size:15px;font-weight:700;display:flex}.edu-school{font-size:16px;font-weight:600}.edu-degree{color:var(--muted);font-size:14px}.edu-location{color:var(--muted);font-size:13px}.edu-side{flex:none;align-items:center;gap:8px;display:flex}.edu-dates{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13.5px}.cert-list{flex-direction:column;display:flex}.cert-row{color:inherit;border-radius:10px;justify-content:space-between;align-items:center;gap:14px;padding:14px 0;text-decoration:none;transition:background .15s;display:flex}.cert-row+.cert-row{border-top:1px solid var(--border)}.cert-row--link{cursor:pointer;margin:0 -8px;padding:14px 8px}.cert-row--link:hover{background:var(--muted-bg)}.cert-row--link:hover .cert-arrow{color:var(--fg);transform:translate(2px,-2px)}.cert-arrow{color:var(--muted);flex:none;transition:transform .15s,color .15s}.cert-main{align-items:center;gap:14px;min-width:0;display:flex}.cert-logo{object-fit:contain;object-position:center;border:1px solid var(--border);background:#fff;border-radius:12px;flex:none;width:48px;height:48px;padding:6px}.cert-logo-fallback{background:var(--muted-bg);border:1px solid var(--border);border-radius:12px;flex:none;justify-content:center;align-items:center;width:48px;height:48px;font-size:15px;font-weight:700;display:flex}.cert-name{font-size:16px;font-weight:600}.cert-issuer{color:var(--muted);font-size:14px}.cert-side{flex:none;align-items:center;gap:8px;display:flex}.cert-date{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13.5px}.footer{text-align:center;color:var(--muted);border-top:1px solid var(--border);margin-top:56px;padding:20px 0 8px;font-size:13px}
