@font-face{font-family:Comfortaa;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e09a7426ee572bc0-s.0d9b3u-ouo.3o.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Comfortaa;font-style:normal;font-weight:400;font-display:swap;src:url(../media/495e600c70cb2bc9-s.18clcp7pb.4wo.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Comfortaa;font-style:normal;font-weight:400;font-display:swap;src:url(../media/f023a068af4b31cd-s.0-auefycu6t0n.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Comfortaa;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a89be221aef6f15c-s.0nlwjzy_jk62l.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Comfortaa;font-style:normal;font-weight:400;font-display:swap;src:url(../media/788f0db78d092e8d-s.0co-b7-8bj2qo.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:Comfortaa;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4373de5944805f69-s.p.0_87twn1-c7it.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:Comfortaa;font-style:normal;font-weight:700;font-display:swap;src:url(../media/e09a7426ee572bc0-s.0d9b3u-ouo.3o.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Comfortaa;font-style:normal;font-weight:700;font-display:swap;src:url(../media/495e600c70cb2bc9-s.18clcp7pb.4wo.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Comfortaa;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f023a068af4b31cd-s.0-auefycu6t0n.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Comfortaa;font-style:normal;font-weight:700;font-display:swap;src:url(../media/a89be221aef6f15c-s.0nlwjzy_jk62l.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Comfortaa;font-style:normal;font-weight:700;font-display:swap;src:url(../media/788f0db78d092e8d-s.0co-b7-8bj2qo.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:Comfortaa;font-style:normal;font-weight:700;font-display:swap;src:url(../media/4373de5944805f69-s.p.0_87twn1-c7it.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:Comfortaa Fallback;src:local(Arial);ascent-override:74.95%;descent-override:19.91%;line-gap-override:0.0%;size-adjust:117.54%}.comfortaa_77a2cc57-module__S8Bx_q__className{font-family:Comfortaa,Comfortaa Fallback;font-style:normal}.comfortaa_77a2cc57-module__S8Bx_q__variable{--font-display:"Comfortaa", "Comfortaa Fallback"}
@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/c3cb240f9c892514-s.163v2i5cux7-c.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:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.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:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/c3cb240f9c892514-s.163v2i5cux7-c.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:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.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:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/c3cb240f9c892514-s.163v2i5cux7-c.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:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.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:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/c3cb240f9c892514-s.163v2i5cux7-c.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:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.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:DM Sans Fallback;src:local(Arial);ascent-override:94.9%;descent-override:29.66%;line-gap-override:0.0%;size-adjust:104.53%}.dm_sans_6c6b4082-module__NA93NG__className{font-family:DM Sans,DM Sans Fallback;font-style:normal}.dm_sans_6c6b4082-module__NA93NG__variable{--font-body:"DM Sans", "DM Sans Fallback"}
@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b12e986493c137cf-s.0unhoe1q6hp6-.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:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/36363bfb06833f56-s.p.0-pny06~-x26a.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:DM Mono Fallback;src:local(Arial);ascent-override:73.71%;descent-override:23.03%;line-gap-override:0.0%;size-adjust:134.59%}.dm_mono_9bb14a68-module__iwFPiG__className{font-family:DM Mono,DM Mono Fallback;font-style:normal;font-weight:400}.dm_mono_9bb14a68-module__iwFPiG__variable{--font-mono:"DM Mono", "DM Mono Fallback"}
:root{--bg:#0a0a0a;--bg-card:#ffffff08;--bg-card-hover:#ffffff0f;--glass-bg:#0a0a0ad1;--cyan:#00d9ff;--amber:#f59e0b;--purple:#a78bfa;--emerald:#10b981;--rose:#f43f5e;--pink:#ec4899;--orange:#f97316;--text-primary:#f5f5f5;--text-secondary:#f5f5f5b3;--text-muted:#f5f5f559;--border:#ffffff14;--border-accent:#00d9ff33;--cyan-muted:#00d9ff14;--radius:16px;--radius-lg:20px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body{background:var(--bg);width:100%;min-height:100vh;color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}body{font-family:var(--font-body), "DM Sans", system-ui, -apple-system, sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}ul,ol{list-style:none}img{max-width:100%;display:block}*{cursor:none!important}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#ffffff26}.font-display{font-family:var(--font-display), "Comfortaa", cursive}.font-mono{font-family:var(--font-mono), "DM Mono", monospace}.cyan-glow{text-shadow:0 0 20px #00d9ff4d}.section-container{width:100%;max-width:896px;margin:0 auto}.section-divider{background:var(--border);width:100%;max-width:896px;height:1px;margin:0 auto}.section-label{font-family:var(--font-body), "DM Sans", sans-serif;letter-spacing:.35em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem;font-size:.75rem}.section-title{font-family:var(--font-display), "Comfortaa", cursive;color:var(--text-primary);font-size:clamp(2rem,5vw,3rem);font-weight:700}.glass-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(12px)}.pill-btn{font-family:var(--font-body), "DM Sans", sans-serif;letter-spacing:.3px;border-radius:100px;justify-content:center;align-items:center;gap:7px;padding:12px 28px;font-size:13px;font-weight:600;text-decoration:none;transition:transform .2s cubic-bezier(.34,1.56,.64,1),border-color .2s,box-shadow .2s;display:inline-flex;position:relative;overflow:hidden;box-shadow:0 2px 12px #00000040}.pill-btn:hover{transform:translateY(-2px)}.pill-btn:active{transform:scale(.97)}.pill-btn--cyan{color:#00d9ffcc;background:#00d9ff0d;border:1px solid #00d9ff47}.pill-btn--cyan:hover{border-color:#00d9ff80;box-shadow:0 4px 20px #00d9ff1f}.pill-btn--amber{color:#f59e0bd9;background:#f59e0b0f;border:1px solid #f59e0b40}.pill-btn--amber:hover{border-color:#f59e0b73;box-shadow:0 4px 20px #f59e0b1f}.pill-btn--emerald{color:#10b981d9;background:#10b9810f;border:1px solid #10b98140}.pill-btn--emerald:hover{border-color:#10b98173;box-shadow:0 4px 20px #10b9811f}.pill-btn--ghost{border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary)}.pill-btn--ghost:hover{border-color:#ffffff26}.pill-btn-shine{pointer-events:none;background:linear-gradient(#ffffff2e 0%,#0000 100%);border-radius:100px;height:35%;position:absolute;top:3px;left:12%;right:12%}.tech-tag{font-family:var(--font-mono), "DM Mono", monospace;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem}@keyframes floatIcon{0%,to{transform:translate(-50%,-50%)translateY(0)}33%{transform:translate(-50%,-50%)translateY(-10px)}66%{transform:translate(-50%,-50%)translateY(5px)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(44px)}to{opacity:1;transform:translateY(0)}}@keyframes navBreathe{0%,to{opacity:.15}50%{opacity:.55}}@keyframes roleSlideIn{0%{opacity:0;transform:translateY(12px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes roleSlideOut{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-12px)scale(.97)}}@keyframes pulseGlow{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.75)}}@keyframes breathe{0%,to{opacity:1}50%{opacity:.35}}.fade-section{opacity:0;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(44px)}.fade-section.visible{opacity:1;transform:translateY(0)}.proj-card{transition:border-color .25s,transform .25s,box-shadow .25s}.proj-card:hover{transform:translateY(-4px);box-shadow:0 16px 48px #00000080}@media (max-width:768px){.section-container{padding-left:1.5rem;padding-right:1.5rem}.hero-tech-icon{display:none!important}}@media (max-width:640px){*{cursor:auto!important}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.fade-section{opacity:1;transform:none}}.project-page{min-height:100vh;padding-top:80px}.project-back-bar{max-width:896px;margin:0 auto;padding:16px 24px}.project-back-btn{font-family:var(--font-body), "DM Sans", sans-serif;color:var(--text-muted);letter-spacing:.04em;border:1px solid var(--border);background:var(--bg-card);border-radius:100px;align-items:center;gap:8px;padding:8px 16px;font-size:.8rem;font-weight:600;transition:color .25s,border-color .25s,transform .2s;display:inline-flex}.project-back-btn:hover{color:var(--cyan);border-color:var(--border-accent);transform:translate(-4px)}.project-hero{padding:64px 24px 72px;position:relative;overflow:hidden}.project-hero-glow{pointer-events:none;animation:6s ease-in-out infinite heroGlowPulse;position:absolute;inset:0}@keyframes heroGlowPulse{0%,to{opacity:.6}50%{opacity:1}}.project-hero-grid{pointer-events:none;background-image:radial-gradient(#ffffff0a 1px,#0000 1px);background-size:32px 32px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(50% 60% at 50% 40%,#000,#0000);mask-image:radial-gradient(50% 60% at 50% 40%,#000,#0000)}.project-hero-content{max-width:896px;margin:0 auto;animation:.7s cubic-bezier(.16,1,.3,1) both fadeUp;position:relative}.project-badges{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:24px;display:flex}.project-badge{font-family:var(--font-mono), "DM Mono", monospace;letter-spacing:.05em;border-radius:100px;align-items:center;gap:6px;padding:4px 14px;font-size:.72rem;display:inline-flex}.project-badge--role{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary)}.project-badge-dot{border-radius:50%;width:6px;height:6px;animation:2s ease-in-out infinite pulseGlow}.project-title{color:var(--text-primary);margin-bottom:16px;font-size:clamp(2rem,5vw,3.2rem);font-weight:700;line-height:1.15}.project-accent-bar{border-radius:9999px;width:64px;height:3px;margin-bottom:20px}.project-subtitle{font-family:var(--font-body), "DM Sans", sans-serif;color:var(--text-secondary);max-width:680px;margin-bottom:24px;font-size:1rem;line-height:1.8}.project-tags{flex-wrap:wrap;gap:8px;margin-bottom:28px;display:flex}.project-tags .tech-tag{padding:4px 12px;font-size:.78rem}.project-links{flex-wrap:wrap;gap:12px;display:flex}.project-section{border-top:1px solid var(--border);padding:56px 24px}.project-section-inner{max-width:896px;margin:0 auto}.project-section-title{color:var(--text-primary);margin-bottom:32px;font-size:clamp(1.5rem,4vw,2rem);font-weight:700}.project-description{flex-direction:column;gap:20px;display:flex}.project-description p{font-family:var(--font-body), "DM Sans", sans-serif;color:var(--text-secondary);font-size:.95rem;line-height:1.85}.project-features-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;display:grid}.project-feature-card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;align-items:flex-start;gap:14px;padding:18px 20px;transition:border-color .3s,transform .3s,box-shadow .3s;animation:.5s cubic-bezier(.16,1,.3,1) both featureSlideIn;display:flex}.project-feature-card:hover{transform:translateY(-2px);box-shadow:0 8px 32px #0000004d}@keyframes featureSlideIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.project-feature-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.project-feature-text{font-family:var(--font-body), "DM Sans", sans-serif;color:var(--text-secondary);padding-top:7px;font-size:.875rem;line-height:1.65}.project-nav-footer{grid-template-columns:1fr 1fr;gap:16px;display:grid}.project-nav-card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:8px;padding:20px 24px;transition:border-color .3s,transform .25s,box-shadow .25s;display:flex}.project-nav-card:hover{transform:translateY(-3px);box-shadow:0 12px 40px #0006}.project-nav-card--right{text-align:right}.project-nav-label{font-family:var(--font-mono), "DM Mono", monospace;color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;font-size:.7rem}.project-nav-name{font-family:var(--font-display), "Comfortaa", cursive;font-size:.95rem;font-weight:700;line-height:1.3}.proj-card-view{font-family:var(--font-mono), "DM Mono", monospace;letter-spacing:.06em;opacity:0;align-items:center;gap:6px;font-size:.72rem;transition:opacity .3s,transform .3s;display:flex;transform:translate(-6px)}.proj-card:hover .proj-card-view{opacity:1;transform:translate(0)}@media (max-width:640px){.project-hero{padding:40px 20px 48px}.project-nav-footer{grid-template-columns:1fr}.project-nav-card--right{text-align:left}.project-features-grid{grid-template-columns:1fr}}.projects-list-grid{flex-direction:column;gap:16px;display:flex}.projects-list-card{color:inherit;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;text-decoration:none;transition:border-color .3s,transform .3s,box-shadow .3s;animation:.5s cubic-bezier(.16,1,.3,1) both featureSlideIn;display:flex;overflow:hidden}.projects-list-card:hover{transform:translateY(-4px);box-shadow:0 16px 48px #00000073}.projects-list-accent{flex-shrink:0;width:4px}.projects-list-body{flex-direction:column;flex:1;gap:14px;padding:24px 28px;display:flex}.projects-list-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.projects-list-name{font-family:var(--font-display), "Comfortaa", cursive;color:var(--text-primary);margin-bottom:10px;font-size:1.2rem;font-weight:700;line-height:1.3}.projects-list-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.projects-list-arrow{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .3s,border-color .3s;display:flex}.projects-list-card:hover .projects-list-arrow{transform:translate(4px)}.projects-list-desc{font-family:var(--font-body), "DM Sans", sans-serif;color:var(--text-secondary);font-size:.9rem;line-height:1.75}.projects-list-tags{flex-wrap:wrap;gap:6px;display:flex}@media (max-width:640px){.projects-list-body{padding:18px 20px}.projects-list-name{font-size:1.05rem}}.about-highlights-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.about-highlight-card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;align-items:center;gap:14px;padding:18px 20px;transition:border-color .3s,transform .25s,box-shadow .25s;display:flex}.about-highlight-card:hover{transform:translateY(-2px);box-shadow:0 8px 32px #0000004d}.about-highlight-icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}
