@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/outfit-latin-ext-400-normal-5tcqmc2S.woff2)format("woff2"),url(/assets/outfit-latin-ext-400-normal-DHm7mdGe.woff)format("woff");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:Outfit;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/outfit-latin-400-normal-BGsTXAXT.woff2)format("woff2"),url(/assets/outfit-latin-400-normal-DMwTpYkH.woff)format("woff");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:Outfit;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/outfit-latin-ext-700-normal-CI4iH74K.woff2)format("woff2"),url(/assets/outfit-latin-ext-700-normal-fjS8-Gm7.woff)format("woff");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:Outfit;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/outfit-latin-700-normal-Cu9v6i1X.woff2)format("woff2"),url(/assets/outfit-latin-700-normal-D4itBLBr.woff)format("woff");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:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-vietnamese-400-normal-B7xT_GF5.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-400-normal-BIWiOVfw.woff)format("woff");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:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-ext-400-normal-CfP_5XZW.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-400-normal-DRPE3kg4.woff)format("woff");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:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2)format("woff2"),url(/assets/space-grotesk-latin-400-normal-BnQMeOim.woff)format("woff");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:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-vietnamese-700-normal-DMty7AZE.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-700-normal-Duxec5Rn.woff)format("woff");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:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-ext-700-normal-BQnZhY3m.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-700-normal-HVCqSBdx.woff)format("woff");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:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2)format("woff2"),url(/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff)format("woff");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}:root{--bg:#090c12;--bg-muted:#121826;--surface:#151c2e;--surface-2:#1a2236;--text:#f4f7ff;--text-muted:#afbbd9;--accent:#33d1a0;--accent-strong:#0eb485;--border:#28344f;--shadow:0 14px 30px #0000005c;--max-width:1320px}*{box-sizing:border-box}html{scroll-behavior:smooth;background-color:var(--bg);overscroll-behavior-y:none}body{color:var(--text);background:radial-gradient(circle at 15% 5%, #33d1a026, transparent 45%), linear-gradient(160deg, var(--bg) 0%, var(--bg-muted) 40%, var(--bg) 100%);background-color:var(--bg);overscroll-behavior-y:none;min-height:100svh;margin:0;font-family:Space Grotesk,Helvetica Neue,sans-serif;font-weight:400;overflow-x:hidden}#root{background-color:#0000;min-height:100svh;overflow-x:hidden}a{color:inherit;text-decoration:none}main{width:min(100%, var(--max-width));margin:0 auto;padding:1.2rem clamp(.7rem,1.6vw,1.05rem) 0}section{scroll-margin-top:1rem}h1,h2,h3{letter-spacing:.01em;margin:0;font-family:Outfit,Helvetica Neue,sans-serif}p{color:var(--text-muted);margin:0;font-weight:400;line-height:1.75}@media (width<=768px){main{padding-top:.9rem;padding-inline:.7rem}}._hero_1edme_1{text-align:left;border-bottom:1px solid #afbbd91f;align-content:center;justify-items:start;gap:.95rem;min-height:100dvh;padding:0 clamp(.75rem,2vw,1.4rem);font-weight:400;display:grid;position:relative;overflow:hidden}._kicker_1edme_15{color:#9eddd2;letter-spacing:.07em;text-transform:uppercase;font-size:.8rem;font-weight:700}._hero_1edme_1 h1{font-size:clamp(2.6rem,6vw,5.3rem);font-weight:800;line-height:.96}._subtitle_1edme_29{color:#d7def4;font-size:clamp(1.02rem,2.2vw,1.3rem);font-weight:700}._description_1edme_35{z-index:2;color:#d7def4;max-width:56ch;font-weight:400}._actions_1edme_42{flex-wrap:wrap;justify-content:flex-start;gap:.85rem;padding-top:.5rem;display:flex}._sectionLinks_1edme_50{color:#c9d5f4;flex-wrap:wrap;align-items:center;gap:.9rem;font-size:.92rem;font-weight:700;display:flex}._sectionLinks_1edme_50 a{border-bottom:1px solid #0000;line-height:1.1;transition:color .2s,border-color .2s}._sectionLinks_1edme_50 a:hover{color:#9eddd2;border-color:#9eddd2b3}._primaryBtn_1edme_71,._secondaryBtn_1edme_72{border-radius:.75rem;padding:.85rem 1.2rem;font-weight:800;transition:transform .22s,box-shadow .22s,background .22s}._primaryBtn_1edme_71{color:#071117;background:linear-gradient(140deg,#33d1a0 0%,#20aee5 100%)}._secondaryBtn_1edme_72{border:1px solid var(--border);color:var(--text);background:#ffffff05}._primaryBtn_1edme_71:hover,._secondaryBtn_1edme_72:hover{box-shadow:var(--shadow);transform:translateY(-2px)}._glow_1edme_96{z-index:1;pointer-events:none;border-radius:50%;width:clamp(9.5rem,16vw,14rem);height:clamp(9.5rem,16vw,14rem);position:absolute;inset:auto clamp(.45rem,1.6vw,1.15rem) clamp(1.6rem,4.2vh,2.6rem) auto}._glow_1edme_96 span{border-radius:inherit;will-change:transform, opacity;transform-origin:50%;background:radial-gradient(circle,#33d1a080 0%,#33d1a000 70%);width:100%;height:100%;animation:4.5s ease-in-out infinite alternate _pulse_1edme_1;display:block}@keyframes _pulse_1edme_1{0%,to{opacity:.72;transform:translate(0)scale(.9)}50%{opacity:1;transform:translate(10px,-8px)scale(1.06)}}@media (width<=768px){._hero_1edme_1{padding-top:0;padding-inline:.8rem;align-content:center;min-height:100dvh;padding-bottom:0}._glow_1edme_96{width:clamp(7.8rem,24vw,11rem);height:clamp(7.8rem,24vw,11rem);inset:auto clamp(.35rem,2.2vw,.7rem) clamp(1.25rem,3.5vh,2rem) auto}._sectionLinks_1edme_50{gap:.75rem;font-size:.88rem}}._about_qf6ik_1{border-bottom:1px solid #afbbd91f;grid-template-columns:1.6fr 1fr;gap:1.75rem;padding:clamp(2.4rem,6vh,4rem) 0;display:grid}._content_qf6ik_9{border:1px solid var(--border);background:linear-gradient(145deg,#1a2236f2,#0e1422f2);border-radius:1rem;padding:1.5rem;transition:transform .24s,box-shadow .24s,border-color .24s}._content_qf6ik_9:hover{box-shadow:var(--shadow);border-color:#33d1a099;transform:translateY(-4px)}._content_qf6ik_9 h2{margin-bottom:.75rem;font-size:1.9rem}._content_qf6ik_9 p+p{margin-top:.8rem}._content_qf6ik_9 h3{color:#d7def4;margin:1.15rem 0 .35rem;font-size:1.05rem}._educationLine_qf6ik_38{color:#c9d6f8;font-weight:700}._photoCard_qf6ik_43{border:1px solid var(--border);background:radial-gradient(circle at 20% 20%,#33d1a033,#0000 45%),linear-gradient(#1f2a45 0%,#121b30 100%);border-radius:1rem;place-items:center;min-height:300px;transition:transform .24s,box-shadow .24s,border-color .24s;display:grid;overflow:hidden}._photoCard_qf6ik_43:hover{box-shadow:var(--shadow);border-color:#33d1a099;transform:translateY(-4px)}._photo_qf6ik_43{object-fit:cover;width:100%;height:100%}._photoCard_qf6ik_43 span{color:#e7eefc;letter-spacing:.08em;font-family:Outfit,sans-serif;font-size:clamp(3rem,9vw,5rem);font-weight:700}@media (width<=860px){._about_qf6ik_1{grid-template-columns:1fr;padding:4rem 0}._photoCard_qf6ik_43{min-height:220px}}._skills_bs8ii_1{border-bottom:1px solid #afbbd91f;padding:clamp(2.8rem,6vw,4rem) 0}._skills_bs8ii_1 h2{margin-bottom:1rem;font-size:1.9rem}._grid_bs8ii_11{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}._group_bs8ii_17{border:1px solid var(--border);background:linear-gradient(165deg,#151c2efa,#101624fa);border-radius:1rem;padding:1.1rem;transition:transform .2s,border-color .2s}._group_bs8ii_17:hover{border-color:#33d1a099;transform:translateY(-3px)}._group_bs8ii_17 h3{margin-bottom:.8rem;font-size:1.06rem}._tags_bs8ii_35{flex-wrap:wrap;gap:.55rem;display:flex}._tag_bs8ii_35{border:1px solid var(--border);color:#d7def4;cursor:default;-webkit-user-select:none;user-select:none;background:#ffffff05;border-radius:999px;padding:.42rem .72rem;font-size:.86rem;font-weight:400;display:inline-flex}._tag_bs8ii_35:hover{color:#071117;background:linear-gradient(140deg,#8af6da 0%,#33d1a0 100%);border-color:#8af6dae6;font-weight:700}@media (width<=920px){._grid_bs8ii_11{grid-template-columns:1fr}}._projects_g7u9t_1{border-bottom:1px solid #afbbd91f;padding:clamp(2.8rem,6vw,4rem) 0}._projects_g7u9t_1 h2{margin-bottom:1rem;font-size:1.9rem}._grid_g7u9t_11{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}._card_g7u9t_17{border:1px solid var(--border);background:linear-gradient(165deg,#151c2ef2,#0a0f1bf2);border-radius:1rem;grid-template-rows:auto 1fr auto auto;align-content:start;gap:.9rem;padding:1.2rem;transition:transform .24s,box-shadow .24s,border-color .24s;display:grid}._card_g7u9t_17:hover{box-shadow:var(--shadow);border-color:#33d1a099;transform:translateY(-4px)}._card_g7u9t_17 h3{margin:0;font-size:1.18rem}._card_g7u9t_17 p{margin:0;line-height:1.65}._tags_g7u9t_45{flex-wrap:wrap;gap:.5rem;display:flex}._tag_g7u9t_45{border:1px solid var(--border);color:#dde4f8;cursor:default;-webkit-user-select:none;user-select:none;border-radius:999px;padding:.36rem .68rem;font-size:.8rem;font-weight:400}._tag_g7u9t_45:hover{color:#071117;background:linear-gradient(140deg,#8af6da 0%,#33d1a0 100%);border-color:#8af6dae6;font-weight:700}._actions_g7u9t_70{gap:.6rem;margin-top:auto;display:flex}._linkBtn_g7u9t_76{text-align:center;border:1px solid var(--border);color:var(--text);border-radius:.65rem;flex:1;padding:.64rem .7rem;transition:transform .2s,background .2s}._linkBtn_g7u9t_76:hover{background:#ffffff0f;transform:translateY(-2px)}._demoBtn_g7u9t_94{color:#071117;background:linear-gradient(140deg,#8af6da 0%,#33d1a0 100%);border-color:#0000;font-weight:600}._demoBtn_g7u9t_94:hover{background:linear-gradient(140deg,#8af6da 0%,#33d1a0 100%)}@media (width<=960px){._grid_g7u9t_11{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){._grid_g7u9t_11{grid-template-columns:1fr}}._contact_k47rg_1{padding:clamp(2.8rem,6vw,4rem) 0}._form_k47rg_5{border:1px solid var(--border);background:linear-gradient(165deg,#151c2ef2,#0a0f1bf2);border-radius:1rem;gap:.95rem;width:100%;margin:0;padding:1.2rem;transition:transform .24s,box-shadow .24s,border-color .24s;display:grid}._form_k47rg_5:hover{box-shadow:var(--shadow);border-color:#33d1a099;transform:translateY(-4px)}._form_k47rg_5 h2{margin-bottom:.15rem;font-size:1.9rem}._intro_k47rg_28{max-width:56ch;margin-bottom:0}._header_k47rg_33{gap:.45rem;margin-bottom:.15rem;display:grid}._fields_k47rg_39{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;display:grid}._fieldGroup_k47rg_45{gap:.5rem;display:grid}._fieldFull_k47rg_50{grid-column:1/-1}._form_k47rg_5 label{color:#d7def4;font-size:.9rem;font-weight:700}._form_k47rg_5 input,._form_k47rg_5 textarea{border:1px solid var(--border);width:100%;color:var(--text);font:inherit;background:#ffffff05;border-radius:.7rem;outline:none;padding:.82rem .9rem;transition:border-color .2s,box-shadow .2s}._form_k47rg_5 input[aria-invalid=true],._form_k47rg_5 textarea[aria-invalid=true]{border-color:#ff9fa8;box-shadow:0 0 0 3px #ff9fa82e}._form_k47rg_5 input:focus,._form_k47rg_5 textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #33d1a033}._form_k47rg_5 button{font:inherit;color:#071117;cursor:pointer;background:linear-gradient(140deg,#8af6da 0%,#33d1a0 100%);border:0;border-radius:.7rem;justify-self:start;margin-top:.4rem;padding:.85rem 1.3rem;font-weight:600;transition:transform .2s,box-shadow .2s}._form_k47rg_5 button:disabled{opacity:.8;cursor:wait}._form_k47rg_5 button:hover{box-shadow:var(--shadow);transform:translateY(-2px)}._success_k47rg_109,._error_k47rg_110{margin-top:.2rem;font-size:.94rem}._success_k47rg_109{color:#8ef2d4}._error_k47rg_110{color:#ff9fa8}._fieldError_k47rg_123{color:#ff9fa8;margin-top:-.15rem;font-size:.85rem;line-height:1.45}@media (width<=860px){._form_k47rg_5{padding:1rem}._fields_k47rg_39{grid-template-columns:1fr}._fieldFull_k47rg_50{grid-column:auto}}._footer_t65ku_1{width:min(100%, var(--max-width));margin-top:1.5rem;border-top:1px solid #afbbd91f;justify-content:space-between;align-items:center;gap:.8rem;margin-inline:auto;padding:1.4rem clamp(.7rem,1.6vw,1.05rem) 2.2rem;display:flex}._footer_t65ku_1 p{margin:0;font-size:.9rem}._links_t65ku_18{align-items:center;gap:.7rem;display:flex}._links_t65ku_18 a{border:1px solid var(--border);border-radius:50%;place-items:center;width:2.2rem;height:2.2rem;transition:transform .2s,border-color .2s;display:grid}._links_t65ku_18 a:hover{border-color:#33d1a0cc;transform:translateY(-2px)}._links_t65ku_18 svg{fill:#d9e2fb;width:1.05rem;height:1.05rem}@media (width<=640px){._footer_t65ku_1{flex-direction:column;align-items:flex-start}}
