.loader-overlay[data-v-2fb7fcb6]{position:fixed;inset:0;background:rgba(10,25,47,1);display:grid;place-items:center;z-index:9999}.logo[data-v-2fb7fcb6]{width:140px;height:140px;overflow:visible}.stroke[data-v-2fb7fcb6]{fill:none;stroke:url(#g);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:600;stroke-dashoffset:600;animation:draw-2fb7fcb6 1.2s ease forwards}.hex.stroke[data-v-2fb7fcb6]{animation-delay:0s}.txt.stroke[data-v-2fb7fcb6]{animation-delay:.25s}.fill[data-v-2fb7fcb6]{fill:#64ffda14;opacity:0;animation:fillIn-2fb7fcb6 .8s ease forwards 1.2s}@keyframes draw-2fb7fcb6{to{stroke-dashoffset:0}}@keyframes fillIn-2fb7fcb6{to{opacity:1}}.logo-wrap[data-v-2fb7fcb6]{transform:translateY(0);opacity:1;transition:transform .6s ease,opacity .6s ease}.logo-wrap.done[data-v-2fb7fcb6]{transform:translateY(-12px);opacity:0}#app{text-align:left}.bg-decorations{position:fixed;inset:0;pointer-events:none;z-index:-1}.blob{position:absolute;filter:blur(40px);opacity:.35}.blob-a{width:420px;height:420px;left:-120px;top:-80px;background:radial-gradient(circle at 30% 30%,rgba(100,255,218,.35),transparent 60%);animation:floatA 12s ease-in-out infinite}.blob-b{width:520px;height:520px;right:-160px;top:120px;background:radial-gradient(circle at 70% 40%,rgba(100,255,218,.25),transparent 60%);animation:floatB 14s ease-in-out infinite}.grid-dots{position:absolute;inset:0;background-image:radial-gradient(rgba(136,146,176,.15) 1px,transparent 1px);background-size:24px 24px}@keyframes floatA{0%,to{transform:translateY(0)}50%{transform:translateY(20px)}}@keyframes floatB{0%,to{transform:translateY(0)}50%{transform:translateY(-16px)}}.hero[data-v-7503bf70]{min-height:80vh;display:flex;align-items:center;position:relative}.stars-canvas[data-v-7503bf70]{position:absolute;inset:0;width:100%;height:100%;display:block}.hero-title[data-v-7503bf70]{font-size:42px;margin:0 0 12px}.hero-subtitle[data-v-7503bf70]{font-size:18px;color:var(--text-1);margin:0 0 24px;max-width:640px}.about-details ul[data-v-0656cdc8]{list-style:none;padding:0;margin:0}.about-details li[data-v-0656cdc8]{margin:8px 0}.experience[data-v-79de2252]{padding:2rem 0}.section-title[data-v-79de2252]{font-size:28px;margin-bottom:16px}.experience-list[data-v-79de2252]{display:flex;flex-direction:column;gap:1.5rem}.experience-item[data-v-79de2252]{transition:transform .2s}.experience-item[data-v-79de2252]:hover{transform:translateY(-5px)}.job-title[data-v-79de2252]{font-size:20px;margin:0 0 4px}.company-name[data-v-79de2252]{font-size:16px;color:var(--text-1)}.job-duration[data-v-79de2252]{font-size:14px;color:var(--text-1)}.job-description[data-v-79de2252]{margin-top:8px;font-size:14px}.projects-section[data-v-73c4e409]{padding:2rem 0}.section-title[data-v-73c4e409]{text-align:center;font-size:2rem;margin-bottom:1.5rem}.projects-container[data-v-73c4e409]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.project-card[data-v-73c4e409]{background:var(--card);border:1px solid var(--muted);border-radius:8px;padding:16px;transition:transform .3s}.project-card[data-v-73c4e409]:hover{transform:translateY(-5px)}.project-image[data-v-73c4e409]{width:100%}.project-title[data-v-73c4e409]{font-size:1.5rem;margin:.5rem 0}.project-description[data-v-73c4e409]{font-size:14px;color:var(--text-1)}.project-tech[data-v-73c4e409]{margin:.5rem 0}.tech-badge[data-v-73c4e409]{background:var(--muted);color:var(--text-0);border-radius:4px;padding:2px 6px;margin-right:6px;font-size:12px}.project-links[data-v-73c4e409]{display:flex;justify-content:space-between}.btn[data-v-73c4e409]{background:#007bff;color:#fff;padding:.5rem 1rem;border-radius:5px;text-decoration:none;transition:background .3s}.btn[data-v-73c4e409]:hover{background:#0056b3}.contact-section[data-v-83bc2e60]{padding:2rem 0}.section-title[data-v-83bc2e60]{font-size:28px;margin-bottom:16px}.contact-form[data-v-83bc2e60]{display:flex;flex-direction:column}.form-group[data-v-83bc2e60]{display:flex;gap:12px;align-items:center;margin-bottom:1rem}.message-group[data-v-83bc2e60]{min-height:200px}.message-group>label[data-v-83bc2e60]{width:64px}.message-group>textarea[data-v-83bc2e60]{flex:1;height:160px;resize:vertical}label[data-v-83bc2e60]{width:64px;margin-bottom:.5rem;font-weight:700}input[data-v-83bc2e60],textarea[data-v-83bc2e60]{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:1rem}.submit-button[data-v-83bc2e60]{padding:10px 16px;background:var(--accent);color:var(--bg-0);border:none;border-radius:4px;cursor:pointer}.submit-button[data-v-83bc2e60]:hover{opacity:.9}.success-message[data-v-83bc2e60]{margin-top:12px;color:var(--accent);text-align:center}.error-message[data-v-83bc2e60]{margin-top:12px;color:red;text-align:center}.resume[data-v-40db2e25]{padding:20px}.resume-title[data-v-40db2e25]{text-align:center;font-size:2em;margin-bottom:20px}.resume-section[data-v-40db2e25]{margin-bottom:20px}.section-title[data-v-40db2e25]{font-size:1.5em;margin-bottom:10px}.skills-list[data-v-40db2e25]{list-style-type:none;padding:0}.download-button[data-v-40db2e25]{display:block;margin:20px auto;padding:10px 20px;background:var(--accent);color:var(--bg-0);border:none;border-radius:5px;cursor:pointer}.download-button[data-v-40db2e25]:hover{opacity:.9}:root{--bg-0: #0a192f;--bg-1: #0e243a;--text-0: #e6f1ff;--text-1: #8892b0;--accent: #64ffda;--muted: #233554;--card: #112240}html,body,#app{height:100%}*{box-sizing:border-box}body{margin:0;background:var(--bg-0);color:var(--text-0);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;line-height:1.6}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.container{width:100%;max-width:1100px;margin:0 auto;padding:0 24px}header.site-header{position:sticky;top:0;z-index:100;backdrop-filter:saturate(180%) blur(12px);background:rgba(10,25,47,.55);border-bottom:1px solid rgba(100,255,218,.12)}nav ul{list-style:none;display:flex;gap:20px;padding:0;margin:0}nav a{color:var(--text-1)}nav a.active,nav a:hover{color:var(--accent)}main{display:block}section.section{padding:120px 0;border-bottom:1px solid var(--muted)}.section-title{margin:0 0 24px;font-size:28px;color:var(--text-0)}.muted{color:var(--text-1)}.btn{display:inline-block;padding:10px 16px;color:var(--bg-0);background:var(--accent);border-radius:4px;font-weight:600;cursor:pointer;box-shadow:0 6px 16px #64ffda40;transform:translateY(0) scale(1);transition:transform .15s ease,box-shadow .2s ease,filter .2s ease}.btn:hover{box-shadow:0 10px 24px #64ffda59;transform:translateY(-1px) scale(1.02)}.btn:active{transform:translateY(0) scale(.98);filter:saturate(110%)}.card{background:rgba(17,34,64,.6);border:1px solid rgba(100,255,218,.12);border-radius:12px;padding:16px;backdrop-filter:blur(8px) saturate(120%);box-shadow:0 10px 30px #020c1b4d}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}.reveal.revealed{opacity:1;transform:translateY(0)}.footer{text-align:center;color:var(--text-1);padding:40px 0}html{scroll-behavior:smooth}.project-card{position:relative;background:rgba(17,34,64,.5);border:1px solid rgba(100,255,218,.1);border-radius:14px;padding:16px;transition:transform .25s ease,box-shadow .25s ease;backdrop-filter:blur(8px);transform-style:preserve-3d}.project-card:after{content:"";position:absolute;inset:-1px;border-radius:14px;background:radial-gradient(600px 200px at var(--mx,50%) var(--my,0%),rgba(100,255,218,.15),transparent 40%);pointer-events:none;opacity:0;transition:opacity .25s ease}.project-card:hover{transform:translateY(-6px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));box-shadow:0 20px 40px #020c1b73}.project-card:hover:after{opacity:1}.side-socials{position:fixed;left:24px;bottom:32px;display:flex;flex-direction:column;gap:12px;z-index:90}.side-socials a{width:28px;height:28px;display:grid;place-items:center;color:var(--text-1);border:1px solid rgba(136,146,176,.2);border-radius:6px;background:rgba(17,34,64,.4);backdrop-filter:blur(8px)}.side-socials a:hover{color:var(--accent);border-color:#64ffda80}.back-to-top{position:fixed;right:24px;bottom:32px;z-index:90}.back-to-top button{width:42px;height:42px;border-radius:50%;border:1px solid rgba(136,146,176,.25);background:rgba(17,34,64,.5);color:var(--text-0);cursor:pointer;backdrop-filter:blur(8px)}.back-to-top button:hover{border-color:#64ffda99;color:var(--accent)}
