@font-face{font-family:Poppins;font-style:normal;font-weight:300;font-display:swap;src:url(../media/7e832ad540183e91-s.280oih_b74u9j.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:300;font-display:swap;src:url(../media/2094fb60fd9c8287-s.3qxy1tqak831c.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:Poppins;font-style:normal;font-weight:300;font-display:swap;src:url(../media/c875c6f5d3e977ac-s.p.1h18_wedhzk4h.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:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(../media/41e95f694c5c4549-s.2b_sldcwg6mn_.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6c55a692938ebbbc-s.1emuuracu50qd.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:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a218039a3287bcfd-s.p.43zbiuwnnoiok.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:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(../media/bdc7e24a509eb931-s.0ynx40_3oa9rk.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0da9c7f357bd9d4d-s.1975l3y3401x_.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:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(../media/8e6fa89aa22d24ec-s.p.2o7m9ogm38dql.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:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(../media/0a7740363b4d4863-s.3ji57o093q1kd.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(../media/5f9d24ebef5d5292-s.19xuq3td7fwu_.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:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(../media/e2334d715941921e-s.p.3o_v2fun1jzxk.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:Poppins;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b53057dbf91a7acf-s.11ypmpdlzqdb_.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:700;font-display:swap;src:url(../media/798ea22d9983e047-s.3go-kn2r40gie.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:Poppins;font-style:normal;font-weight:700;font-display:swap;src:url(../media/47fe1b7cd6e6ed85-s.p.3bh2vc0w-r-ll.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:Poppins Fallback;src:local(Arial);ascent-override:93.62%;descent-override:31.21%;line-gap-override:8.92%;size-adjust:112.16%}.poppins_2c280a8a-module__Y-u4hG__className{font-family:Poppins,Poppins Fallback;font-style:normal}.poppins_2c280a8a-module__Y-u4hG__variable{--font-poppins:"Poppins", "Poppins Fallback"}
@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(../media/88731e1a74492905-s.0tlm39yf_ckdx.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:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(../media/861011d7404b02f6-s.3fnhzl7vreycw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(../media/3381337b621a9a6a-s.0jxe124sc_62t.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(../media/5413d6e6d8960ee4-s.0iws-x-_m0m6k.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:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0951afe60dbf5d36-s.0f7v04cdymq72.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(../media/97e7b204180d1274-s.3xa5d8otat0m1.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:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b8b552e8609c5636-s.p.2qe5xx8d5sx8i.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:Fira Code;font-style:normal;font-weight:500;font-display:swap;src:url(../media/88731e1a74492905-s.0tlm39yf_ckdx.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:Fira Code;font-style:normal;font-weight:500;font-display:swap;src:url(../media/861011d7404b02f6-s.3fnhzl7vreycw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Fira Code;font-style:normal;font-weight:500;font-display:swap;src:url(../media/3381337b621a9a6a-s.0jxe124sc_62t.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Fira Code;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5413d6e6d8960ee4-s.0iws-x-_m0m6k.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:Fira Code;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0951afe60dbf5d36-s.0f7v04cdymq72.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Fira Code;font-style:normal;font-weight:500;font-display:swap;src:url(../media/97e7b204180d1274-s.3xa5d8otat0m1.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:Fira Code;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b8b552e8609c5636-s.p.2qe5xx8d5sx8i.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:Fira Code Fallback;src:local(Arial);ascent-override:73.56%;descent-override:23.92%;line-gap-override:0.0%;size-adjust:134.59%}.fira_code_c580ee57-module__pT2Uxq__className{font-family:Fira Code,Fira Code Fallback;font-style:normal}.fira_code_c580ee57-module__pT2Uxq__variable{--font-fira-code:"Fira Code", "Fira Code Fallback"}
:root{--color-bg:#1f1f38;--color-bg-alt:#191930;--color-bg-variant:#2c2c6c;--color-primary:#4db5ff;--color-primary-variant:#4db5ff66;--color-white:#fff;--color-light:#fff9}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-poppins),sans-serif;color:#ffffffbf;background:var(--color-bg);line-height:1.7}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.wrap{max-width:1140px;margin:0 auto;padding:0 24px}nav{z-index:100;-webkit-backdrop-filter:blur(14px);background:#1f1f38d9;border-bottom:1px solid #ffffff0f;position:fixed;top:0;left:0;right:0}.nav-inner{justify-content:space-between;align-items:center;max-width:1140px;height:64px;margin:0 auto;padding:0 24px;display:flex}.nav-logo{color:#fff;font-size:20px;font-weight:700}.nav-logo span{color:var(--color-primary)}.nav-links{align-items:center;gap:8px;display:flex}.nav-links a{color:var(--color-light);border-radius:8px;padding:8px 16px;font-size:14px;font-weight:500;transition:all .15s}.nav-links a:hover{color:var(--color-primary);background:#4db5ff14}.nav-links .cta{background:var(--color-primary);color:var(--color-bg);border-radius:8px;padding:8px 20px;font-weight:600}.nav-links .cta:hover{color:var(--color-bg);background:#fff}.hamburger{cursor:pointer;background:0 0;border:none;padding:8px;display:none}.hamburger span{background:#fff;border-radius:2px;width:22px;height:2px;margin:5px 0;transition:all .2s;display:block}@media (max-width:768px){.nav-links{display:none}.hamburger{display:block}.nav-links.open{background:var(--color-bg-variant);border-bottom:1px solid #ffffff14;flex-direction:column;gap:4px;padding:16px 24px;display:flex;position:absolute;top:64px;left:0;right:0}.nav-links.open a{width:100%;padding:12px 16px}}#hero{text-align:center;background:linear-gradient(180deg,var(--color-bg-variant) 0%,var(--color-bg) 100%);padding:120px 0 80px}.hero-badge{font-family:var(--font-fira-code),monospace;color:var(--color-primary);letter-spacing:.03em;background:#4db5ff14;border:1px solid #4db5ff33;border-radius:99px;margin-bottom:24px;padding:6px 18px;font-size:12px;font-weight:500;display:inline-block}h1.hero-title{letter-spacing:-.02em;color:#fff;font-size:clamp(32px,5vw,56px);font-weight:700;line-height:1.15}h1.hero-title span{color:var(--color-primary)}.hero-desc{color:var(--color-light);max-width:580px;margin:18px auto 0;font-size:17px;font-weight:400;line-height:1.8}.hero-btns{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:32px;display:flex}.btn-primary{background:var(--color-primary);color:var(--color-bg);border-radius:10px;align-items:center;gap:8px;padding:13px 28px;font-size:14px;font-weight:600;transition:all .15s;display:inline-flex;box-shadow:0 4px 16px #4db5ff40}.btn-primary:hover{background:#fff;transform:translateY(-2px);box-shadow:0 6px 24px #4db5ff59}.btn-primary svg{stroke:currentColor;fill:none;stroke-width:2px;width:16px;height:16px}.btn-ghost{border:1.5px solid var(--color-primary);color:var(--color-primary);background:0 0;border-radius:10px;align-items:center;gap:8px;padding:13px 28px;font-size:14px;font-weight:600;transition:all .15s;display:inline-flex}.btn-ghost:hover{color:var(--color-bg);background:#fff;border-color:#0000;transform:translateY(-2px)}.hero-stats{justify-content:center;gap:48px;margin-top:56px;display:flex}.hero-stat{text-align:center}.hero-stat-num{color:var(--color-primary);font-size:32px;font-weight:700;line-height:1}.hero-stat-label{color:var(--color-light);margin-top:4px;font-size:13px;font-weight:500}.section{padding:80px 0}.section-alt{background:var(--color-bg-alt)}.sec-header{text-align:center;margin-bottom:56px}.sec-badge{font-family:var(--font-fira-code),monospace;color:var(--color-primary);letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:500}.sec-title{color:#fff;letter-spacing:-.015em;margin-top:8px;font-size:clamp(24px,3vw,36px);font-weight:700}.sec-sub{color:var(--color-light);max-width:500px;margin:10px auto 0;font-size:15px}.about-grid{grid-template-columns:1fr;align-items:center;gap:48px;display:grid}@media (min-width:768px){.about-grid{grid-template-columns:1fr 1.3fr}}.about-img-wrap{position:relative}.about-img{aspect-ratio:1;background:linear-gradient(135deg,var(--color-bg-variant) 0%,var(--color-bg) 100%);border:4px solid var(--color-bg-variant);border-radius:20px;justify-content:center;align-items:center;width:100%;max-width:380px;margin:0 auto;display:flex;overflow:hidden;box-shadow:0 8px 32px #4db5ff26}.about-img-initials{color:var(--color-primary);opacity:.35;letter-spacing:-.04em;font-size:80px;font-weight:700}.about-decorator{z-index:-1;background:#4db5ff14;border-radius:50%;width:80px;height:80px;position:absolute;top:-12px;right:20px}.about-decorator2{z-index:-1;background:#4db5ff0f;border-radius:50%;width:50px;height:50px;position:absolute;bottom:-8px;left:30px}.about-text h3{color:#fff;margin-bottom:16px;font-size:24px;font-weight:700}.about-text p{color:var(--color-light);margin-bottom:14px;font-size:15px;line-height:1.85}.about-tags{flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.about-tag{font-family:var(--font-fira-code),monospace;color:var(--color-primary);background:#4db5ff14;border:1px solid #4db5ff2e;border-radius:8px;padding:5px 14px;font-size:12px;font-weight:500}.proj-grid{grid-template-columns:1fr;gap:24px;display:grid}@media (min-width:768px){.proj-grid{grid-template-columns:repeat(3,1fr)}}.proj-card{background:var(--color-bg-variant);border:1px solid #ffffff0f;border-radius:16px;flex-direction:column;transition:all .25s;display:flex;overflow:hidden}.proj-card:hover{border-color:var(--color-primary-variant);transform:translateY(-6px);box-shadow:0 12px 40px #00000059}.proj-thumb{background:linear-gradient(135deg,var(--color-bg-variant),var(--color-bg));justify-content:center;align-items:center;height:180px;display:flex;position:relative;overflow:hidden}.proj-thumb-icon{opacity:.4;color:var(--color-primary);font-size:48px}.proj-thumb svg{width:56px;height:56px;stroke:var(--color-primary);stroke-width:1.2px;fill:none;opacity:.4}.proj-body{flex-direction:column;flex:1;padding:22px 24px 24px;display:flex}.proj-body h3{color:#fff;font-size:17px;font-weight:600;line-height:1.35}.proj-body p{color:var(--color-light);flex:1;margin-top:10px;font-size:13.5px;line-height:1.75}.proj-tools{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.proj-tool{font-family:var(--font-fira-code),monospace;color:var(--color-primary);background:#4db5ff14;border-radius:6px;padding:3px 10px;font-size:11px}.proj-links{border-top:1px solid #ffffff0f;gap:16px;margin-top:16px;padding-top:14px;display:flex}.proj-links a{align-items:center;gap:5px;font-size:13px;font-weight:600;transition:all .15s;display:inline-flex}.proj-links a svg{stroke:currentColor;fill:none;stroke-width:2px;width:14px;height:14px}.proj-links a.demo{color:var(--color-primary)}.proj-links a.code{color:var(--color-light)}.proj-links a:hover{color:#fff}.skills-grid{grid-template-columns:1fr;gap:20px;display:grid}@media (min-width:768px){.skills-grid{grid-template-columns:repeat(4,1fr)}}.sk-card{background:var(--color-bg-variant);text-align:center;border:1px solid #ffffff0f;border-radius:16px;padding:28px 22px;transition:all .25s}.sk-card:hover{border-color:var(--color-primary-variant);transform:translateY(-4px);box-shadow:0 8px 28px #0000004d}.sk-icon{border-radius:14px;justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 18px;display:flex}.sk-icon svg{stroke-width:1.8px;fill:none;width:26px;height:26px}.sk-card h4{color:#fff;margin-bottom:8px;font-size:15px;font-weight:600}.sk-card p{color:var(--color-light);font-size:12.5px;line-height:1.7}.contact-grid{grid-template-columns:1fr;gap:32px;margin-top:48px;display:grid}@media (min-width:768px){.contact-grid{grid-template-columns:1fr 1fr}}.contact-info{flex-direction:column;gap:16px;display:flex}.ci{background:var(--color-bg-variant);border:1px solid #ffffff0f;border-radius:14px;align-items:center;gap:16px;padding:18px 22px;transition:all .15s;display:flex}.ci:hover{border-color:var(--color-primary-variant);box-shadow:0 4px 16px #4db5ff1a}.ci-icon{background:#4db5ff1a;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.ci-icon svg{width:20px;height:20px;stroke:var(--color-primary);fill:none;stroke-width:2px}.ci-text .ci-label{color:var(--color-light);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:500}.ci-text .ci-val{color:#fff;margin-top:2px;font-size:14px;font-weight:500}.social-card{background:linear-gradient(135deg,var(--color-primary) 0%,#2f8fd6 100%);color:var(--color-bg);border-radius:16px;flex-direction:column;justify-content:center;padding:36px;display:flex}.social-card h3{margin-bottom:8px;font-size:20px;font-weight:600}.social-card p{opacity:.8;margin-bottom:24px;font-size:14px;line-height:1.7}.social-links{flex-wrap:wrap;gap:10px;display:flex}.social-link{color:var(--color-bg);background:#1f1f3826;border:1px solid #1f1f3826;border-radius:10px;align-items:center;gap:8px;padding:10px 18px;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.social-link:hover{background:#1f1f3847;transform:translateY(-2px)}.social-link svg{stroke:currentColor;fill:none;stroke-width:2px;width:16px;height:16px}footer{background:var(--color-bg-alt);text-align:center;border-top:1px solid #4db5ff26;padding:40px 0 32px}.footer-inner{flex-direction:column;align-items:center;gap:14px;display:flex}.footer-logo{color:#fff;font-size:18px;font-weight:700}.footer-logo span{color:var(--color-primary)}footer p{color:var(--color-light);font-size:13px}footer a{color:var(--color-primary);font-weight:600;transition:all .15s}footer a:hover{color:#fff}.reveal{opacity:0;transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1);transform:translateY(28px)}.reveal.v{opacity:1;transform:translateY(0)}.r1{transition-delay:80ms}.r2{transition-delay:.16s}.r3{transition-delay:.24s}.r4{transition-delay:.32s}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}}
