@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.8e0177b5.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.b97b3418.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.853070df.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist","Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.c1fdd6c2.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.799d8ef8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.dbea232f.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
:root{--bg:#0b0d10;--surface:#11151b;--text:#e6edf3;--muted:#9aa4b2;--border:#202735;--accent:#7aa2ff;--accent-strong:#9bb6ff;--tag-bg:#141b25;--tag-text:#b9c4d0;--code-bg:#0f141a;--shadow:0 0 0 1px #7aa2ff1f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-theme=light]{--bg:#f6f7f9;--surface:#fff;--text:#111827;--muted:#5b6472;--border:#e4e7ec;--accent:#3451ff;--accent-strong:#1e3aff;--tag-bg:#f0f2f6;--tag-text:#4b5563;--code-bg:#f3f5f8;--shadow:0 0 0 1px #3451ff1f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--font-geist-sans),system-ui,-apple-system,sans-serif;letter-spacing:-.01em;-webkit-font-smoothing:antialiased;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto}main{display:block}.page{max-width:1100px;margin:0 auto;padding:48px 24px 96px}.page-center{text-align:center}.page-center .card{text-align:left}.stack{flex-direction:column;gap:24px;display:flex}.profile-row{align-items:center;gap:18px;display:flex}.profile-row-center{text-align:center;justify-content:center}.profile-avatar{border:1px solid var(--border);box-shadow:var(--shadow);border-radius:50%}.hero-text{text-align:center;align-items:center}.hero-name.section-title{font-size:3rem}.hero-description{color:var(--muted);gap:6px;font-size:.95rem;display:grid}.education-card{position:relative;overflow:hidden}.education-shape{opacity:.2;pointer-events:none;width:200px;height:200px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.education-shape-kayak{aspect-ratio:16/9;object-fit:contain;width:280px;height:auto}html[data-theme=dark] .education-shape-invert{filter:invert()brightness(1.2)}.education-content{flex-direction:column;gap:16px;display:flex;position:relative}.education-timeline,.experience-timeline{flex-direction:column;gap:24px;padding:12px 0;display:flex;position:relative}.education-timeline:before,.experience-timeline:before{content:"";background:var(--border);width:2px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.education-row{grid-template-columns:1fr 1fr;align-items:start;display:grid;position:relative}.education-card{width:100%;max-width:400px}.education-row.left .education-card{grid-column:1/2;justify-self:end;margin-right:32px}.education-row.right .education-card{grid-column:2/3;justify-self:start;margin-left:16px}.education-header{gap:14px}.timeline-dot{background:var(--accent);border-radius:50%;width:12px;height:12px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 6px #7aa2ff26}.education-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.education-header.left-logo{flex-direction:row;justify-content:flex-start}.education-header.right-logo{flex-direction:row-reverse;justify-content:flex-end}.education-header.right-logo>div,.education-header.left-logo>div{text-align:left}.education-header.right-logo{padding-right:12px}.education-header.left-logo{padding-left:12px}.education-logo{aspect-ratio:1;object-fit:contain;border:1px solid var(--border);background:#fff;border-radius:12px;width:80px;height:80px}.education-block ul{color:var(--muted);gap:6px;margin-top:6px;padding-left:18px;display:grid}.experience-header{align-items:center;gap:16px;margin-bottom:12px;display:flex}.grid{gap:20px;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.focus-grid{text-align:center}.focus-grid .card{flex-direction:column;align-items:center;display:flex}.grid-3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;padding:18px 18px 20px}.project-card{flex-direction:column;min-height:100%;display:flex}.project-image-wrapper{border:1px solid var(--border);background:#fff;border-radius:12px;width:100%;margin-bottom:14px;overflow:hidden}.project-image{width:100%;height:auto;display:block}.certifications-grid{align-items:stretch}.certification-card{text-align:center;gap:16px;display:grid}.certification-badge{object-fit:contain;width:120px;height:120px;margin:0 auto}.project-footer{margin-top:auto}.card h3{margin-bottom:6px;font-size:1.05rem}.card p{color:var(--muted);font-size:.95rem}.tag-row{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.tag{background:var(--tag-bg);color:var(--tag-text);border:1px solid #0000;border-radius:999px;padding:4px 8px;font-size:.75rem}.muted{color:var(--muted)}.section-title{letter-spacing:-.02em;text-align:center;font-size:1.85rem}.section-subtitle{color:var(--muted);font-size:.95rem}.nav{border-bottom:1px solid var(--border);background:var(--bg);z-index:20;justify-content:space-between;align-items:center;gap:16px;padding:20px 24px;display:flex;position:sticky;top:0}.nav a{color:var(--muted);font-size:.9rem}.nav-links{flex-wrap:wrap;gap:16px;display:flex}.nav a.active,.nav a:hover{color:var(--text)}.footer{border-top:1px solid var(--border);color:var(--muted);padding:32px 24px 48px;font-size:.85rem}.button-row{flex-wrap:wrap;gap:10px;display:flex}.button-row-center{justify-content:center}.button{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;align-items:center;gap:8px;padding:8px 12px;font-size:.85rem;transition:border .2s,color .2s;display:inline-flex}.filter-button.active{border-color:var(--accent);color:var(--accent-strong)}.filter-row{margin-bottom:8px}.button:hover{border-color:var(--accent);color:var(--accent-strong)}.icon-button{border:1px solid var(--border);background:var(--surface);border-radius:10px;align-items:center;gap:8px;padding:8px 10px;font-size:.85rem;display:inline-flex}.icon{width:16px;height:16px}.tech-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;display:grid}.tech-card{background:var(--surface);border:1px solid var(--border);text-align:center;min-height:110px;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:18px 12px;display:flex}.tech-icon{background:#7aa2ff14;border:1px solid #7aa2ff24;border-radius:12px;place-items:center;width:36px;height:36px;display:grid}.tech-icon--nodedotjs{background:#fff;border-color:#e5e7eb}html[data-theme=dark] .tech-icon--nodedotjs{background:#fff;border-color:#fff}.tech-icon-image.icon-invert-dark,html[data-theme=light] .tech-icon-image.icon-invert-light{filter:invert()brightness(1.1)}html[data-theme=light] .tech-icon-image.icon-invert-dark,html[data-theme=dark] .tech-icon-image.icon-invert-light{filter:none}.swagger-icon{place-items:center;width:28px;height:28px;display:grid}.swagger-icon svg{width:28px;height:28px}.swagger-icon-dark,html[data-theme=dark] .swagger-icon-light{display:none}html[data-theme=dark] .swagger-icon-dark{display:block}.theme-icon{place-items:center;width:28px;height:28px;display:grid}.theme-icon-dark,html[data-theme=dark] .theme-icon-light{display:none}html[data-theme=dark] .theme-icon-dark{display:block}.tech-icon img{width:24px;height:24px}.tech-name{color:var(--text);font-size:.85rem}.list{flex-direction:column;gap:12px;display:flex}.key-value{flex-direction:column;gap:6px;display:flex}.key-value span{color:var(--muted);font-size:.85rem}.divider{background:var(--border);height:1px;margin:24px 0}@media (max-width:720px){.nav{flex-direction:column;align-items:center;position:sticky;top:0}.nav-links{justify-content:center}.page{padding:36px 20px 80px}.profile-row,.education-header{flex-direction:column;align-items:flex-start}.education-timeline:before{left:8px;transform:none}.education-row{grid-template-columns:1fr}.education-row.left .education-card,.education-row.right .education-card{grid-column:1/-1;justify-self:stretch;margin:0 0 0 24px}.timeline-dot{left:8px;transform:none}.tech-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
