@import"https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";:root{--background: #282c33;--accent: #c778dd;--gray: #abb2bf;--white: #ffffff;--font-mono: "Fira Code", monospace;--font-sans: "Inter", sans-serif;font-family:var(--font-mono);line-height:1.5;font-weight:400;color-scheme:dark;color:var(--gray);background-color:var(--background);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#app{width:100%;margin:0 auto}h1,h2,h3,h4,h5,h6{color:var(--white);font-weight:500}a{font-weight:500;color:var(--gray);text-decoration:none;transition:color .3s}a:hover{color:var(--white)}*{box-sizing:border-box}.container{max-width:1024px;margin:0 auto;padding:0 20px}@media(max-width:768px){.container{padding:0 16px}}@media(max-width:480px){.container{padding:0 12px}}.text-accent{color:var(--accent)}.btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border:1px solid var(--accent);background:transparent;color:var(--white);font-family:var(--font-mono);cursor:pointer;transition:background .3s}.btn:hover{background:#c778dd33}.section-padding{padding:80px 0}@media(max-width:768px){.section-padding{padding:48px 0}}@media(max-width:480px){.section-padding{padding:32px 0}}.border-box{border:1px solid var(--gray);padding:16px}.splash-screen[data-v-afbcf338]{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#282c33;display:flex;align-items:center;justify-content:center;z-index:9999;overflow:hidden}.splash-content[data-v-afbcf338]{position:relative;text-align:center;color:#fff;z-index:1}.splash-logo[data-v-afbcf338]{margin-bottom:0;animation:pulse-afbcf338 2s ease-in-out infinite}.splash-logo .logo-wrapper[data-v-afbcf338]{width:100px;height:100px;margin:0 auto;background:#ffffff1a;border-radius:50%;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.splash-logo .logo-wrapper svg[data-v-afbcf338]{width:60px;height:60px;color:#fff}.splash-logo .logo-circle[data-v-afbcf338]{animation:draw-circle-afbcf338 2s ease-in-out infinite}.splash-logo .logo-check[data-v-afbcf338]{animation:draw-check-afbcf338 2s ease-in-out infinite;animation-delay:.5s}@keyframes pulse-afbcf338{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes draw-circle-afbcf338{0%,to{stroke-dasharray:0 500}50%{stroke-dasharray:500 500}}@keyframes draw-check-afbcf338{0%,to{stroke-dasharray:0 100}50%{stroke-dasharray:100 100}}.splash-fade-enter-active[data-v-afbcf338]{transition:opacity .3s ease}.splash-fade-leave-active[data-v-afbcf338]{transition:opacity .5s ease}.splash-fade-enter-from[data-v-afbcf338],.splash-fade-leave-to[data-v-afbcf338]{opacity:0}.navbar[data-v-3c0f1313]{position:sticky;top:0;background:var(--background);border-bottom:1px solid var(--gray);z-index:100;padding:16px 0}.navbar-content[data-v-3c0f1313]{display:flex;justify-content:space-between;align-items:center}.logo[data-v-3c0f1313]{font-size:16px;font-weight:700;color:var(--white);text-decoration:none}.nav-links[data-v-3c0f1313]{display:flex;align-items:center;gap:32px}.nav-link[data-v-3c0f1313]{font-size:16px;color:var(--gray);text-decoration:none;transition:color .3s}.nav-link[data-v-3c0f1313]:hover,.nav-link.router-link-active[data-v-3c0f1313]{color:var(--white)}.language-switcher[data-v-3c0f1313]{display:flex;gap:4px;color:var(--gray)}.language-switcher .active[data-v-3c0f1313]{color:var(--white)}.language-switcher .divider[data-v-3c0f1313]{color:var(--gray)}.mobile-menu-toggle[data-v-3c0f1313]{display:none;flex-direction:column;gap:4px;background:transparent;border:none;cursor:pointer;padding:8px}.hamburger-line[data-v-3c0f1313]{width:24px;height:2px;background:var(--white);transition:all .3s}@media(max-width:768px){.logo[data-v-3c0f1313]{font-size:14px}.mobile-menu-toggle[data-v-3c0f1313]{display:flex}.nav-links[data-v-3c0f1313]{position:fixed;top:57px;right:-100%;width:70%;max-width:300px;height:calc(100vh - 57px);background:var(--background);border-left:1px solid var(--gray);flex-direction:column;align-items:flex-start;padding:24px;gap:24px;transition:right .3s ease;overflow-y:auto}.nav-links.mobile-open[data-v-3c0f1313]{right:0}.nav-link[data-v-3c0f1313]{font-size:18px;width:100%}.language-switcher[data-v-3c0f1313]{margin-top:auto;padding-top:24px;border-top:1px solid var(--gray);width:100%}}.social-sidebar[data-v-d9f02ee1]{position:fixed;left:20px;top:0;height:100vh;display:flex;flex-direction:column;align-items:center;gap:8px;z-index:50}.line[data-v-d9f02ee1]{width:1px;flex:1;background:var(--gray)}.social-icons[data-v-d9f02ee1]{display:flex;flex-direction:column;gap:16px;padding:20px 0}.social-link[data-v-d9f02ee1]{color:var(--gray);transition:color .3s}.social-link[data-v-d9f02ee1]:hover{color:var(--accent)}@media(max-width:768px){.social-sidebar[data-v-d9f02ee1]{display:none}}.footer[data-v-d164b5ac]{border-top:1px solid var(--gray);padding:32px 0;margin-top:80px}.footer-content[data-v-d164b5ac]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:48px;gap:32px}.footer-logo[data-v-d164b5ac]{font-weight:700;font-size:16px}.footer-logo p[data-v-d164b5ac]{margin:8px 0 0;color:var(--gray);font-size:14px;font-weight:400}.footer-right h3[data-v-d164b5ac]{font-size:24px;margin:0 0 12px}.footer-social[data-v-d164b5ac]{display:flex;gap:16px}.footer-social a[data-v-d164b5ac]{color:var(--gray);transition:color .3s}.footer-social a[data-v-d164b5ac]:hover{color:var(--accent)}.footer-bottom[data-v-d164b5ac]{text-align:center;padding-top:32px;border-top:1px solid var(--gray)}.footer-bottom p[data-v-d164b5ac]{margin:0;color:var(--gray);font-size:14px}@media(max-width:768px){.footer[data-v-d164b5ac]{padding:24px 0;margin-top:48px}.footer-content[data-v-d164b5ac]{flex-direction:column;margin-bottom:32px}.footer-logo[data-v-d164b5ac]{font-size:14px}.footer-right h3[data-v-d164b5ac]{font-size:20px}.footer-bottom p[data-v-d164b5ac]{font-size:12px}}@media(max-width:480px){.footer-logo p[data-v-d164b5ac]{font-size:12px}.footer-right h3[data-v-d164b5ac]{font-size:18px}}#drinks-box[data-v-1ab96f5d]{width:320px;height:240px;text-align:center;right:0;bottom:0;position:fixed;z-index:9999}@media(max-width:768px){#drinks-box[data-v-1ab96f5d]{transform:scale(.8);transform-origin:bottom right}}.list[data-v-1ab96f5d],.list li[data-v-1ab96f5d]{list-style:none;list-style-type:none;margin:0;padding:0}.left-100[data-v-1ab96f5d]{width:100%;height:100%;float:left}.tr3[data-v-1ab96f5d],.list li[data-v-1ab96f5d]{transition:all .3s}.icon-donate[data-v-1ab96f5d],.list li[data-v-1ab96f5d]{cursor:pointer}#drinks-icons[data-v-1ab96f5d]{background:no-repeat center center url(/images/buymeacoffee/text.png)}.drinks-button>div[data-v-1ab96f5d]{position:absolute;top:0;left:0;transition:all .3s;transform-style:preserve-3d;transform-origin:center center}.icon-donate[data-v-1ab96f5d]{width:64px;height:64px;position:absolute;left:calc(50% - 32px);top:calc(50% - 32px)}.icon-donate img[data-v-1ab96f5d]{max-width:64px;max-height:64px}#drinks-button-box[data-v-1ab96f5d]{display:none;opacity:0;transform:scale(1.3)}#drinks-button-bg[data-v-1ab96f5d]{position:absolute;top:70px;left:0;height:100px;opacity:0}#donate-buttons[data-v-1ab96f5d]{position:absolute;overflow:hidden;top:calc(50% - 18px);left:60px;height:36px;border-radius:8px;background-color:#62cdff;box-shadow:0 10px 20px 1px #67cff880}li[id$=_donate][data-v-1ab96f5d]{position:relative;width:100px;height:36px;line-height:600px;overflow:hidden;cursor:pointer;background:no-repeat center center;background-size:60px;float:left;text-align:center}li[id$=_donate][data-v-1ab96f5d]:after{content:"";position:absolute;top:-5px;left:calc(50% - 5px);height:0;width:0;opacity:0;border:5px solid #fff;border-color:#fff transparent transparent transparent;transition:all .3s}li[id$=_donate][data-v-1ab96f5d]:hover:after{opacity:1;top:0}#github-box[data-v-1ab96f5d]{width:32px;height:32px;position:absolute;top:calc(50% - 16px);background:no-repeat center center url(/images/buymeacoffee/github.svg);background-size:contain;right:72px;line-height:600px;overflow:hidden;transform:rotate(20deg);opacity:0;transition:all .3s ease-out}#drinks-button-box:hover #github-box[data-v-1ab96f5d],#drinks-button-box.Mobile #github-box[data-v-1ab96f5d]{top:calc(50% - 40px);right:64px;transform:rotate(5deg);opacity:.8}#binance_donate[data-v-1ab96f5d]{background-image:url(/images/buymeacoffee/Binance.svg)}#vietcombank_donate[data-v-1ab96f5d]{background-image:url(/images/buymeacoffee/Vietcombank.svg)}#drinks-qrcodes[data-v-1ab96f5d]{display:none}#drinks-qrcode[data-v-1ab96f5d]{position:absolute;top:calc(50% - 90px);left:calc(50% - 90px);width:180px;height:180px;background:#fff no-repeat center center;background-size:160px;border-radius:6px;cursor:pointer;box-shadow:0 10px 20px #67cff880}.donate-animation-1>#drinks-icons[data-v-1ab96f5d],.donate-animation-4>#drinks-icons[data-v-1ab96f5d],.donate-animation-3>#drinks-button-box[data-v-1ab96f5d]{transform:scale(.7);filter:blur(2px);display:block;opacity:1}.donate-animation-1>#drinks-button-box[data-v-1ab96f5d],.donate-animation-4>#drinks-button-box[data-v-1ab96f5d],.donate-animation-3>#drinks-qrcodes[data-v-1ab96f5d]{display:block;opacity:1;transform:scale(1)}.donate-animation-2>#drinks-button-box[data-v-1ab96f5d],.donate-animation-4>#drinks-qrcodes[data-v-1ab96f5d]{display:block;transform:scale(1);animation-name:hideBox-1ab96f5d;animation-duration:.3s;animation-timing-function:ease-in-out;animation-iteration-count:1;animation-fill-mode:forwards}.donate-animation-3>#drinks-icons[data-v-1ab96f5d]{transform:scale(.4);filter:blur(2px)}.showBox[data-v-1ab96f5d]{animation-name:showBox-1ab96f5d;animation-duration:.3s;animation-timing-function:ease-in-out;animation-iteration-count:1;animation-fill-mode:forwards}@keyframes showBox-1ab96f5d{0%{opacity:0;transform:scale(1.3)}to{opacity:1;transform:scale(1)}}@keyframes hideBox-1ab96f5d{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.3)}}.app-wrapper{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1;padding-left:60px}@media(max-width:768px){.main-content{padding-left:0}}.section-title[data-v-bfa401a1]{display:flex;align-items:center;gap:16px;margin-bottom:48px}.section-title h2[data-v-bfa401a1]{font-size:32px;font-weight:500;margin:0;white-space:nowrap}.line[data-v-bfa401a1]{flex:1;height:1px;background:var(--accent);max-width:511px}@media(max-width:768px){.section-title[data-v-bfa401a1]{margin-bottom:32px}.section-title h2[data-v-bfa401a1]{font-size:24px}}@media(max-width:480px){.section-title[data-v-bfa401a1]{margin-bottom:24px}.section-title h2[data-v-bfa401a1]{font-size:20px}.line[data-v-bfa401a1]{max-width:200px}}.project-card[data-v-e38fe532]{border:1px solid var(--gray);display:flex;flex-direction:column;transition:transform .3s}.project-card[data-v-e38fe532]:hover{transform:translateY(-4px)}.project-image[data-v-e38fe532]{width:100%;height:200px;overflow:hidden;border-bottom:1px solid var(--gray)}.project-image img[data-v-e38fe532]{width:100%;height:100%;object-fit:cover}.project-tech[data-v-e38fe532]{padding:8px;border-bottom:1px solid var(--gray);font-size:14px;color:var(--gray)}.project-content[data-v-e38fe532]{padding:16px;flex:1;display:flex;flex-direction:column}.project-content h3[data-v-e38fe532]{font-size:24px;margin:0 0 16px;color:var(--white)}.project-content p[data-v-e38fe532]{color:var(--gray);margin:0 0 16px;flex:1}.project-links[data-v-e38fe532]{display:flex;gap:16px;flex-wrap:wrap}.skill-box[data-v-c6b55c8c]{border:1px solid var(--gray)}.skill-header[data-v-c6b55c8c]{padding:8px;border-bottom:1px solid var(--gray);font-weight:600;color:var(--white)}.skill-list[data-v-c6b55c8c]{padding:8px;color:var(--gray);font-size:14px}.hero[data-v-88417a3f]{padding-top:60px}.hero-content[data-v-88417a3f]{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}.hero-text h1[data-v-88417a3f]{font-size:32px;margin:0 0 32px;line-height:1.5;word-wrap:break-word}.hero-text p[data-v-88417a3f]{color:var(--gray);margin:0 0 24px}.hero-image[data-v-88417a3f]{position:relative}.hero-image img[data-v-88417a3f]{width:100%;height:auto}.status-badge[data-v-88417a3f]{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid var(--gray);margin-top:16px;font-size:14px}.status-dot[data-v-88417a3f]{width:16px;height:16px;background:var(--accent);display:inline-block}.quote-section[data-v-88417a3f]{padding:60px 0}.quote-box[data-v-88417a3f]{border:1px solid var(--gray);padding:32px;position:relative}.quote-box[data-v-88417a3f]:before{content:'"';position:absolute;top:-20px;left:16px;font-size:60px;color:var(--white);background:var(--background);padding:0 8px}.quote-box[data-v-88417a3f]:after{content:'"';position:absolute;bottom:-20px;right:16px;font-size:60px;color:var(--white);background:var(--background);padding:0 8px}.quote-text[data-v-88417a3f]{margin:0 0 16px;color:var(--white);font-size:24px;word-wrap:break-word}.quote-author[data-v-88417a3f]{margin:0;color:var(--gray);text-align:right}.section-header[data-v-88417a3f]{display:flex;justify-content:space-between;align-items:center}.view-all[data-v-88417a3f]{color:var(--white);text-decoration:none;transition:color .3s}.view-all[data-v-88417a3f]:hover{color:var(--accent)}.projects-grid[data-v-88417a3f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px}.skills-grid[data-v-88417a3f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}.about-content[data-v-88417a3f]{display:grid;grid-template-columns:1fr 1fr;gap:48px}.about-text p[data-v-88417a3f]{color:var(--gray);margin:0 0 16px;line-height:1.6}.about-text .btn[data-v-88417a3f]{margin-top:16px}.image-placeholder[data-v-88417a3f]{width:100%;height:400px;border:1px solid var(--gray);background:#c778dd1a}.contacts-content[data-v-88417a3f]{display:grid;grid-template-columns:1fr 1fr;gap:48px}.contacts-content>p[data-v-88417a3f]{color:var(--gray);line-height:1.6}.contact-box[data-v-88417a3f]{border:1px solid var(--gray);padding:16px}.contact-box h3[data-v-88417a3f]{margin:0 0 16px;font-size:16px;color:var(--white)}.contact-links[data-v-88417a3f]{display:flex;flex-direction:column;gap:8px}.contact-links a[data-v-88417a3f]{display:flex;align-items:center;gap:8px;color:var(--gray);text-decoration:none;transition:color .3s}.contact-links a[data-v-88417a3f]:hover{color:var(--accent)}@media(max-width:768px){.hero[data-v-88417a3f]{padding-top:32px}.hero-content[data-v-88417a3f],.about-content[data-v-88417a3f],.contacts-content[data-v-88417a3f]{grid-template-columns:1fr;gap:32px}.hero-text h1[data-v-88417a3f]{font-size:20px;line-height:1.4;margin:0 0 20px}.hero-text p[data-v-88417a3f]{font-size:14px;margin:0 0 20px}.status-badge[data-v-88417a3f]{font-size:12px;padding:6px}.quote-section[data-v-88417a3f]{padding:40px 0}.quote-box[data-v-88417a3f]{padding:20px}.quote-box[data-v-88417a3f]:before,.quote-box[data-v-88417a3f]:after{font-size:40px}.quote-text[data-v-88417a3f]{font-size:16px}.quote-author[data-v-88417a3f]{font-size:14px}.section-padding[data-v-88417a3f]{padding:48px 0}.section-header[data-v-88417a3f]{flex-direction:column;align-items:flex-start;gap:16px}.projects-grid[data-v-88417a3f]{grid-template-columns:1fr}.skills-grid[data-v-88417a3f]{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.image-placeholder[data-v-88417a3f]{height:250px}.contact-box[data-v-88417a3f]{padding:12px}.contact-links a[data-v-88417a3f]{font-size:14px}}.icon-hand-sm[data-v-88417a3f]{display:none}@media(max-width:767px){.icon-hand-md[data-v-88417a3f]{display:none}.icon-hand-sm[data-v-88417a3f]{display:inline}}@media(max-width:480px){.hero-text h1[data-v-88417a3f]{font-size:18px}.quote-text[data-v-88417a3f]{font-size:14px}.skills-grid[data-v-88417a3f]{grid-template-columns:1fr}}.shopee-page[data-v-487c2dce]{padding-top:100px;padding-bottom:60px;min-height:100vh}.page-header[data-v-487c2dce]{margin-bottom:48px}.back-link[data-v-487c2dce]{display:inline-flex;align-items:center;gap:8px;color:var(--gray);text-decoration:none;margin-bottom:24px;transition:color .3s}.back-link[data-v-487c2dce]:hover{color:var(--accent)}.header-content h1[data-v-487c2dce]{font-size:32px;margin:0 0 16px}.header-content p[data-v-487c2dce]{color:var(--gray);max-width:600px;line-height:1.6}.products-grid[data-v-487c2dce]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;margin-bottom:48px}.links-section[data-v-487c2dce]{margin-bottom:48px}.links-grid[data-v-487c2dce]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.quick-link[data-v-487c2dce]{display:block;padding:12px 16px;border:1px solid var(--gray);color:var(--white);text-decoration:none;font-size:14px;transition:all .3s;background:var(--background)}.quick-link[data-v-487c2dce]:hover{border-color:var(--accent);color:var(--accent);transform:translate(5px)}.product-card[data-v-487c2dce]{border:1px solid var(--gray);background:var(--background);display:flex;flex-direction:column;transition:transform .3s,border-color .3s}.product-card[data-v-487c2dce]:hover{transform:translateY(-5px);border-color:var(--accent)}.product-image[data-v-487c2dce]{position:relative;width:100%;height:200px;border-bottom:1px solid var(--gray);overflow:hidden}.product-image img[data-v-487c2dce]{width:100%;height:100%;object-fit:cover;transition:transform .5s}.product-card:hover .product-image img[data-v-487c2dce]{transform:scale(1.1)}.product-category[data-v-487c2dce]{position:absolute;top:12px;right:12px;background:var(--accent);color:var(--white);padding:4px 12px;font-size:12px;font-weight:500}.product-info[data-v-487c2dce]{padding:20px;flex:1;display:flex;flex-direction:column}.product-info h3[data-v-487c2dce]{margin:0 0 12px;font-size:20px;color:var(--white)}.product-info p[data-v-487c2dce]{color:var(--gray);font-size:14px;line-height:1.5;margin:0 0 20px;flex:1}.product-footer[data-v-487c2dce]{display:flex;justify-content:space-between;align-items:center}.price[data-v-487c2dce]{color:var(--accent);font-weight:600;font-size:18px}.shopee-footer[data-v-487c2dce]{margin-top:60px;padding:40px;border:1px dashed var(--gray);text-align:center}.shopee-footer p[data-v-487c2dce]{color:var(--gray);margin-bottom:20px}.btn-large[data-v-487c2dce]{padding:12px 32px;font-size:18px}@media(max-width:768px){.shopee-page[data-v-487c2dce]{padding-top:80px}.header-content h1[data-v-487c2dce]{font-size:24px}.products-grid[data-v-487c2dce]{grid-template-columns:1fr}}
