:root{--bg-0: #080A19;--bg-1: #0A0C1E;--bg-2: #0E1126;--text-1: #ffffff;--text-2: rgba(255, 255, 255, .8);--text-3: rgba(255, 255, 255, .55);--text-4: rgba(255, 255, 255, .25);--glass-bg: rgba(17, 16, 15, .35);--glass-bg-strong: rgba(10, 7, 7, .55);--glass-border: rgba(255, 255, 255, .08);--glass-border-strong: rgba(255, 255, 255, .16);--glass-blur: blur(20px) saturate(160%);--glass-shadow: 0 8px 40px rgba(0, 0, 0, .55);--accent-1: #8aa4ff;--accent-2: #b08fff;--accent-3: #E9E9E9;--r-sm: 10px;--r-md: 16px;--r-lg: 24px;--r-xl: 32px;--font-display-en: "Orbitron", "Playfair Display", serif;--font-serif-cn: "Noto Serif SC", "ZCOOL KuaiLe", serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;--pad-x: 48px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--text-1);overflow:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6;background-image:radial-gradient(ellipse 55% 40% at 82% 12%,rgba(100,140,255,.24),transparent 62%),radial-gradient(ellipse 50% 45% at 8% 8%,rgba(150,110,255,.2),transparent 62%),radial-gradient(ellipse 70% 50% at 55% 110%,rgba(255,90,110,.11),transparent 60%),radial-gradient(ellipse 40% 40% at 102% 85%,rgba(120,200,255,.14),transparent 62%),url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.035 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");background-color:var(--bg-0);background-attachment:fixed}::selection{background:#8aa4ff73;color:#fff}.fullpage{height:100vh;height:100dvh;width:100vw;overflow-y:scroll;overflow-x:hidden;scroll-snap-type:y mandatory;scrollbar-width:none;position:relative;z-index:1}.fullpage::-webkit-scrollbar{display:none}section.page{height:100vh;height:100dvh;width:100vw;scroll-snap-align:start;scroll-snap-stop:always;display:flex;align-items:center;justify-content:center;position:relative;padding:96px var(--pad-x) 72px;padding-left:max(var(--pad-x),env(safe-area-inset-left));padding-right:max(var(--pad-x),env(safe-area-inset-right))}section.page:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}section#hero:before{background:radial-gradient(ellipse 65% 50% at 65% 35%,rgba(100,140,255,.22),transparent 62%),radial-gradient(ellipse 55% 50% at 15% 80%,rgba(255,90,110,.1),transparent 60%)}section#about:before{background:radial-gradient(ellipse 60% 55% at 90% 15%,rgba(200,120,255,.18),transparent 60%),radial-gradient(ellipse 65% 50% at 10% 90%,rgba(100,140,255,.2),transparent 62%)}section#skills:before{background:radial-gradient(ellipse 55% 45% at 18% 18%,rgba(120,200,255,.18),transparent 60%),radial-gradient(ellipse 60% 50% at 92% 82%,rgba(176,143,255,.16),transparent 62%)}section#projects:before{background:radial-gradient(ellipse 60% 50% at 85% 10%,rgba(100,140,255,.2),transparent 62%),radial-gradient(ellipse 65% 45% at 12% 95%,rgba(255,90,110,.1),transparent 60%)}section#footer:before{background:radial-gradient(ellipse 80% 50% at 50% 115%,rgba(120,100,255,.18),transparent 60%)}.section-inner{max-width:1180px;width:100%;margin:0 auto;position:relative;z-index:2}.glass-nav{position:fixed;right:36px;top:50%;transform:translateY(-50%);z-index:50;display:flex;flex-direction:column;gap:14px;padding:16px 12px;border-radius:100px;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:border-color .3s ease,background .3s ease}.glass-nav:hover{border-color:var(--glass-border-strong);background:var(--glass-bg-strong)}.glass-dot{position:relative;width:12px;height:12px;border-radius:50%;background:var(--text-4);border:1px solid rgba(255,255,255,.08);cursor:pointer;transition:all .35s cubic-bezier(.4,0,.2,1);padding:0;-moz-appearance:none;appearance:none;-webkit-appearance:none;font:inherit}.glass-dot:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:1px solid transparent;transition:border-color .3s ease}.glass-dot:hover{background:var(--text-3);transform:scale(1.15)}.glass-dot:hover:before{border-color:#ffffff26}.glass-dot.active{background:var(--text-1);box-shadow:0 0 0 4px #ffffff14,0 0 16px #ffffff59}.glass-dot:after{content:attr(data-label);position:absolute;right:28px;top:50%;transform:translateY(-50%);white-space:nowrap;font-size:12px;letter-spacing:1px;color:var(--text-3);padding:6px 12px;border-radius:8px;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);opacity:0;pointer-events:none;transition:all .25s ease;font-family:var(--font-display-en);font-weight:500}.glass-dot:hover:after,.glass-dot.active:after{opacity:1;transform:translateY(-50%) translate(0)}.glass-topbar{position:fixed;top:24px;left:50%;transform:translate(-50%);z-index:50;display:flex;align-items:center;gap:8px;padding:10px 14px 10px 18px;border-radius:100px;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.topbar-logo{display:flex;align-items:center;gap:10px;padding-right:16px;margin-right:8px;border-right:1px solid rgba(255,255,255,.08);text-decoration:none;color:var(--text-1)}.topbar-logo-mark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#fff,#8a8a8a);display:grid;place-items:center;color:#000;font-family:var(--font-display-en);font-weight:900;font-size:15px;letter-spacing:-.5px}.topbar-logo-text{font-family:var(--font-display-en);font-weight:700;font-size:14px;letter-spacing:1.5px}.topbar-menu{display:flex;align-items:center;gap:2px}.topbar-menu button{border:none;background:transparent;color:var(--text-2);font-size:13px;padding:8px 14px;border-radius:100px;cursor:pointer;font-family:inherit;transition:all .25s ease;letter-spacing:.5px}.topbar-menu button:hover{background:#ffffff12;color:var(--text-1)}.topbar-menu button.active{background:#ffffff1f;color:var(--text-1)}.topbar-cta{margin-left:8px;padding:9px 18px!important;border-radius:100px!important;white-space:nowrap;background:var(--accent-3)!important;color:#0a0707!important;font-weight:500;letter-spacing:.3px;border:none!important;box-shadow:0 4px 18px #ffffff14;transition:all .3s ease}.topbar-cta:hover{background:#fff!important;box-shadow:0 6px 24px #ffffff24!important;transform:translateY(-1px)}.lang-dropdown{position:relative;margin-left:8px;z-index:500}.lang-toggle{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px 0 14px;border-radius:100px;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);color:var(--text-2);cursor:pointer;font-family:var(--font-display-en);font-size:13px;font-weight:600;letter-spacing:.3px;transition:all .3s cubic-bezier(.4,0,.2,1);outline:none;position:relative}.lang-toggle:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;padding:1px;background:linear-gradient(135deg,#ffffff38,#ffffff05 45%,#ffffff1f);-webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .3s ease;pointer-events:none}.lang-toggle:hover,.lang-dropdown.open .lang-toggle{color:var(--text-1);border-color:var(--glass-border-strong);background:var(--glass-bg-strong);transform:translateY(-.5px)}.lang-toggle:hover:before,.lang-dropdown.open .lang-toggle:before{opacity:1}.lang-toggle-text{line-height:1}.lang-toggle-caret{width:14px;height:14px;transition:transform .3s ease;opacity:.85}.lang-dropdown.open .lang-toggle-caret{transform:rotate(180deg);opacity:1}.lang-panel{position:absolute;top:calc(100% + 8px);right:0;min-width:160px;padding:6px;border-radius:var(--r-md);background:var(--glass-bg-strong);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border:1px solid var(--glass-border-strong);box-shadow:0 18px 50px #0000008c,inset 0 1px #ffffff1a;z-index:1000;display:flex;flex-direction:column;gap:2px;transform-origin:top right;animation:langPanelIn .22s cubic-bezier(.4,0,.2,1) both}@keyframes langPanelIn{0%{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.lang-option{display:flex;align-items:center;gap:10px;width:100%;height:38px;padding:0 12px 0 10px;border-radius:calc(var(--r-md) - 4px);border:1px solid transparent;background:transparent;color:var(--text-2);cursor:pointer;font-size:14px;font-weight:500;text-align:left;transition:all .22s ease;white-space:nowrap;outline:none}.lang-option:hover{background:#ffffff12;color:var(--text-1);border-color:#ffffff14}.lang-option.active{background:linear-gradient(135deg,#8aa4ff29,#c9a9611a);color:#fff;border-color:#8aa4ff42}.lang-option-check{width:18px;display:inline-flex;align-items:center;justify-content:center;color:var(--accent-1);opacity:0}.lang-option.active .lang-option-check{opacity:1}.lang-option-label{flex:1;font-family:var(--font-body-cn)}.section-number{display:flex;justify-content:flex-end;margin:0 0 10px;font-family:var(--font-display-en);font-size:11px;letter-spacing:3px;color:#ffffff29;font-weight:700;pointer-events:none}.section-number:after{content:none}.section-title{font-family:var(--font-serif-cn);font-size:clamp(38px,6vw,68px);font-weight:900;line-height:1.08;letter-spacing:-1px;margin-bottom:18px;background:linear-gradient(180deg,#fff,#ffffffb8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.section-desc{font-size:16px;color:var(--text-2);max-width:580px;line-height:1.85;margin-bottom:52px}.hero-eyebrow{font-family:var(--font-display-en);font-size:13px;letter-spacing:6px;color:var(--text-4);margin-bottom:24px;font-weight:700}.section-eyebrow{font-family:var(--font-display-en);font-size:11.5px;letter-spacing:4.5px;color:var(--text-4);margin-bottom:18px;font-weight:700;text-transform:uppercase;display:inline-flex;align-items:center;gap:10px}.section-eyebrow:before{content:"";width:22px;height:1px;background:linear-gradient(90deg,transparent,var(--text-4))}.hero-title{font-family:var(--font-serif-cn);font-weight:900;font-size:clamp(46px,8.2vw,108px);line-height:1.02;letter-spacing:-2.5px;margin-bottom:30px}.hero-title .line1{display:block;background:linear-gradient(180deg,#fff,#cfcfcf);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-title .line2{display:block;font-family:var(--font-display-en);font-weight:900;font-style:italic;letter-spacing:-1px;background:linear-gradient(135deg,var(--accent-1) 0%,#f5e6c4 40%,#fff 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;padding-left:.3em}.hero-subtitle{max-width:640px;font-size:16px;line-height:1.8;color:var(--text-2);margin-bottom:20px}.hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-bottom:26px}.hero-status{display:inline-flex;align-items:center;gap:9px;padding:7px 15px;border-radius:999px;font-size:13px;color:var(--text-2);background:#5ce6a00f;border:1px solid rgba(92,230,160,.22)}.hero-status-dot{width:7px;height:7px;border-radius:50%;background:#5ce6a0;box-shadow:0 0 10px #5ce6a08c;flex:none}.hero-keywords{display:flex;flex-wrap:wrap;gap:8px}.hero-keyword{font-family:var(--font-display-en);font-size:11px;letter-spacing:1.2px;padding:5px 11px;border-radius:7px;color:var(--text-3);background:#ffffff09;border:1px solid var(--glass-border)}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px}.btn-glass.is-primary{background:linear-gradient(135deg,var(--accent-1),var(--accent-2));border-color:transparent;color:#0a0c1e;font-weight:800}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;max-width:920px}.glass-contact{position:relative;display:flex;align-items:center;gap:18px;padding:22px 24px;border-radius:var(--r-md);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);cursor:pointer;text-decoration:none;color:var(--text-1);overflow:hidden;transition:transform .4s cubic-bezier(.4,0,.2,1),border-color .3s ease,background .3s ease,box-shadow .4s ease}.glass-contact:before{content:"";position:absolute;top:0;left:10%;right:10%;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent);opacity:0;transition:opacity .3s ease}.glass-contact:after{content:"";position:absolute;top:0;left:-80%;width:60%;height:100%;background:linear-gradient(120deg,transparent 40%,rgba(255,255,255,.1) 50%,transparent 60%);transform:skew(-20deg);transition:left .7s ease}.glass-contact:hover{transform:translateY(-4px);border-color:var(--glass-border-strong);background:var(--glass-bg-strong);box-shadow:0 16px 48px #00000073}.glass-contact:hover:before{opacity:1}.glass-contact:hover:after{left:130%}.contact-icon{position:relative;z-index:1;width:48px;height:48px;flex-shrink:0;border-radius:12px;display:grid;place-items:center;border:1px solid var(--glass-border)}.contact-icon.email{background:linear-gradient(135deg,#ff787838,#ff78780d);color:#ff8f8f}.contact-icon.wechat{background:linear-gradient(135deg,#07c16038,#07c1600d);color:#54d88e}.contact-icon.qq{background:linear-gradient(135deg,#12b7f538,#12b7f50d);color:#65cfff}.contact-icon svg{width:22px;height:22px;stroke-width:1.6}.contact-info{position:relative;z-index:1;flex:1;min-width:0}.contact-label{font-family:var(--font-display-en);font-size:11px;letter-spacing:2.5px;color:var(--text-4);text-transform:uppercase;margin-bottom:5px;font-weight:600}.contact-value{font-size:15px;color:var(--text-1);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-label-bar{margin:34px 0 18px;font-family:var(--font-display-en);font-size:11px;letter-spacing:4px;color:var(--text-4);text-transform:uppercase;font-weight:700;display:flex;align-items:center;gap:14px}.contact-label-bar:before{content:"";width:36px;height:1px;background:linear-gradient(90deg,transparent,var(--text-4))}.about-contact{max-width:none}.scroll-hint{position:absolute;bottom:36px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:10px;z-index:5;animation:float 3s ease-in-out infinite;color:var(--text-4)}.scroll-hint-text{font-family:var(--font-display-en);font-size:10px;letter-spacing:4px;text-transform:uppercase}.scroll-hint-line{width:1px;height:44px;background:linear-gradient(to bottom,var(--text-3),transparent);position:relative;overflow:hidden}.scroll-hint-line:after{content:"";position:absolute;top:-50%;left:0;width:100%;height:50%;background:linear-gradient(to bottom,transparent,#fff);animation:scrollDrop 2.2s ease-in-out infinite}@keyframes float{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(8px)}}@keyframes scrollDrop{0%{top:-50%}to{top:110%}}.project-card{position:relative;display:grid;grid-template-columns:.8fr 1.2fr;gap:34px;padding:34px;border-radius:var(--r-xl);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);overflow:visible;transition:all .5s cubic-bezier(.4,0,.2,1);max-width:1120px;margin:0 auto;z-index:1}.project-card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent)}.project-card:after{content:"";position:absolute;bottom:-1px;left:20%;right:20%;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.14),transparent)}.project-card:hover{border-color:var(--glass-border-strong);transform:translateY(-4px);box-shadow:0 20px 56px #00000080}.project-visual{position:relative;width:100%;min-height:280px;max-height:360px;height:100%;align-self:center;border-radius:var(--r-lg);overflow:visible;display:grid;place-items:center;isolation:isolate;background:radial-gradient(circle at 50% 100%,rgba(255,255,255,.03),transparent 60%),#ffffff03;border:1px solid rgba(255,255,255,.04)}.project-visual-glow{position:absolute;left:50%;top:55%;transform:translate(-50%,-50%);width:78%;height:78%;background:var(--visual-grad, linear-gradient(135deg, #4facfe, #00f2fe));filter:blur(44px);opacity:.32;z-index:-2;border-radius:50%;transition:all .6s cubic-bezier(.4,0,.2,1)}.project-visual-pedestal{position:absolute;left:50%;bottom:10%;transform:translate(-50%);width:64%;height:14%;border-radius:50%;background:radial-gradient(ellipse at 50% 50%,rgba(0,0,0,.32),rgba(0,0,0,.09) 55%,transparent 75%);filter:blur(4px);z-index:-1;opacity:.65;transition:all .5s cubic-bezier(.4,0,.2,1)}.project-visual-icon{position:relative;z-index:2;max-width:64%;max-height:68%;width:auto;height:auto;display:block;mix-blend-mode:multiply;filter:drop-shadow(0 20px 36px rgba(0,0,0,.55)) drop-shadow(0 5px 12px rgba(0,0,0,.3)) contrast(1.02);transform:translateY(-4%);transition:transform .6s cubic-bezier(.4,0,.2,1),filter .6s cubic-bezier(.4,0,.2,1);will-change:transform}.project-card:hover .project-visual-icon{transform:translateY(-8%) scale(1.01);filter:drop-shadow(0 26px 48px rgba(0,0,0,.65)) drop-shadow(0 8px 20px rgba(0,0,0,.4)) contrast(1.04)}.project-visual-glyph-fallback{position:absolute;z-index:1;display:none;place-items:center;font-family:var(--font-display-en);font-size:112px;font-weight:900;color:#fffffff2;text-shadow:0 10px 40px rgba(0,0,0,.3);letter-spacing:-2px;background:linear-gradient(180deg,#fff,#fff9);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.project-visual-glyph-fallback.show,.project-visual.icon-fallback .project-visual-glyph-fallback{display:grid}.project-card:hover .project-visual-glow{opacity:.5;transform:translate(-50%,-52%) scale(1.08);filter:blur(60px)}.project-card:hover .project-visual-pedestal{width:72%;height:16%;opacity:.85}.project-content{display:flex;flex-direction:column;justify-content:center;position:relative;z-index:1}.project-tag{display:inline-flex;align-items:center;gap:6px;width:fit-content;padding:6px 14px;border-radius:100px;font-size:11.5px;letter-spacing:.5px;font-weight:500;margin-bottom:16px;border:1px solid var(--glass-border);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}.project-tag:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8}.project-tag.blue{color:#6dc3ff}.project-tag.green{color:#54d88e}.project-tag.purple{color:#b08fff}.project-tag.orange{color:#ffb37a}.project-tag.pink{color:#ff94c2}.project-name{font-family:var(--font-serif-cn);font-size:32px;font-weight:900;line-height:1.2;letter-spacing:-.5px;margin-bottom:14px}.project-description{font-size:14.5px;line-height:1.8;color:var(--text-2);margin-bottom:18px}.project-block{margin-bottom:14px}.project-block:last-of-type{margin-bottom:20px}.project-block-label{font-family:var(--font-display-en);font-size:10.5px;letter-spacing:2.2px;font-weight:700;color:var(--accent-1);text-transform:uppercase;margin-bottom:7px;padding-left:10px;position:relative}.project-block-label:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:4px;border-radius:50%;background:var(--accent-1);opacity:.8}.project-tech-list{display:flex;flex-wrap:wrap;gap:6px}.tech-chip{display:inline-flex;align-items:center;padding:5px 12px;border-radius:100px;background:linear-gradient(135deg,#8aa4ff24,#ffffff05);border:1px solid rgba(138,164,255,.22);font-size:12px;font-weight:500;color:#dbe4ff;font-family:var(--font-display-en);letter-spacing:.2px;transition:all .25s ease;box-shadow:inset 0 1px #ffffff0d}.tech-chip:hover{transform:translateY(-1px);border-color:#8aa4ff61;background:linear-gradient(135deg,#8aa4ff33,#ffffff0a);box-shadow:inset 0 1px #ffffff14,0 6px 16px #8aa4ff1a;color:#fff}.project-features{display:flex;flex-wrap:wrap;gap:8px}.feature-chip{padding:7px 14px;border-radius:9px;background:#ffffff0a;border:1px solid var(--glass-border);font-size:12.5px;color:var(--text-2);transition:all .25s ease}.feature-chip:hover{background:#c9a96114;border-color:#c9a96147;color:#f2e3c2}.btn-glass{position:relative;display:inline-flex;align-items:center;gap:10px;padding:0 27px;height:48px;border-radius:12px;color:#0a0707;text-decoration:none;font-size:15px;font-weight:500;letter-spacing:.3px;background:var(--accent-3);cursor:pointer;transition:all .3s ease;overflow:hidden;width:fit-content;border:none}.btn-glass:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(120deg,transparent 45%,rgba(255,255,255,.55) 50%,transparent 55%);transition:left .75s ease}.btn-glass:hover{background:#fff;transform:translateY(-2px);box-shadow:0 8px 24px #00000059}.btn-glass:hover:before{left:100%}.btn-glass:active{transform:translateY(-1px)}.btn-glass svg{width:16px;height:16px;stroke-width:2.2;transition:transform .3s ease}.btn-glass:hover svg{transform:translate(3px)}.btn-solid{position:relative;display:inline-flex;align-items:center;gap:10px;padding:0 27px;height:48px;border-radius:12px;background:var(--accent-3);color:#0a0707;text-decoration:none;font-size:15px;font-weight:500;letter-spacing:.3px;overflow:hidden;transition:all .3s ease;border:none;cursor:pointer;width:fit-content}.btn-solid:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(120deg,transparent 45%,rgba(255,255,255,.6) 50%,transparent 55%);transition:left .75s ease}.btn-solid>*{position:relative;z-index:1}.btn-solid:hover{background:#fff;transform:translateY(-2px);box-shadow:0 8px 24px #00000059}.btn-solid:hover:before{left:100%}.btn-solid:active{transform:translateY(-1px)}.btn-solid svg{width:16px;height:16px;stroke-width:2.4;transition:transform .3s ease}.btn-solid:hover svg{transform:translate(4px)}section#projects{padding-top:96px;padding-bottom:48px}.carousel-wrap{position:relative;margin-top:20px}.carousel-arrow{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;z-index:80;background:#00000073;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid rgba(255,255,255,.18);color:#fffffff2;transition:all .35s cubic-bezier(.4,0,.2,1)}.carousel-arrow:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;padding:1px;background:linear-gradient(135deg,#ffffff47,#ffffff05 40%,#ffffff05 60%,#ffffff24);-webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.55;transition:opacity .3s ease;pointer-events:none}.carousel-arrow:hover{border-color:#ffffff61;background:#0000009e;color:#fff;transform:translateY(-50%) scale(1.08);box-shadow:0 14px 34px #0000008c,0 0 26px #78b4ff1f}.carousel-arrow:hover:before{opacity:1}.carousel-arrow:active{transform:translateY(-50%) scale(.96)}.carousel-arrow.prev{left:8px}.carousel-arrow.next{right:8px}.carousel-arrow svg{width:20px;height:20px;stroke-width:2.2}.carousel-stage{position:relative;overflow:hidden;border-radius:var(--r-xl);padding:4px 0}.carousel-active{width:100%;max-width:1120px;margin:0 auto;position:relative;min-height:320px}.slide-fade-enter-active,.slide-fade-leave-active{transition:opacity .52s cubic-bezier(.4,0,.2,1),transform .52s cubic-bezier(.4,0,.2,1)}.slide-fade-enter-from.dir-next,.slide-fade-leave-to.dir-prev{opacity:0;transform:translate(50px) scale(.985)}.slide-fade-enter-from.dir-prev,.slide-fade-leave-to.dir-next{opacity:0;transform:translate(-50px) scale(.985)}.carousel-wrap.is-single .carousel-stage{padding:0}.carousel-dots{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:26px}.carousel-dot{width:9px;height:9px;border-radius:50%;background:#ffffff24;cursor:pointer;transition:all .35s cubic-bezier(.4,0,.2,1);border:1px solid transparent}.carousel-dot:hover{background:#ffffff42;transform:scale(1.18)}.carousel-dot.is-active{background:linear-gradient(135deg,var(--accent-1),var(--accent-2));border-color:#ffffff2e;transform:scale(1.35);box-shadow:0 0 12px #8aa4ff73}.carousel-counter{position:absolute;right:6px;top:-34px;z-index:30;font-family:var(--font-display-en);font-size:12.5px;letter-spacing:2.2px;color:var(--text-4);font-weight:600;display:inline-flex;align-items:baseline;gap:4px}.carousel-counter .cur{font-size:18px;color:var(--text-1);font-weight:800;letter-spacing:.5px;background:linear-gradient(135deg,var(--accent-1),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.about-grid{display:grid;grid-template-columns:380px 1fr;gap:72px;align-items:center}.about-portrait{position:relative;width:100%;aspect-ratio:1;border-radius:var(--r-xl);overflow:hidden;isolation:isolate;background:linear-gradient(135deg,#1a1530,#0f1a2e);border:1px solid var(--glass-border);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}.about-portrait:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 42% 32%,rgba(255,255,255,.16) 0%,transparent 52%),radial-gradient(circle at 85% 78%,rgba(201,169,97,.2) 0%,transparent 55%);z-index:0}.about-portrait:after{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border-radius:calc(var(--r-xl) - 3px);border:1px solid rgba(255,255,255,.08);pointer-events:none;z-index:2}.portrait-inner{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:1}.portrait-glyph{font-family:var(--font-serif-cn);font-size:112px;font-weight:900;background:linear-gradient(180deg,#fff,#ffffffb3);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1}.portrait-sub{font-family:var(--font-display-en);font-size:12px;letter-spacing:5px;color:var(--text-3);text-transform:uppercase}.about-text{font-size:17px;line-height:1.95;color:var(--text-2);margin-bottom:32px}.about-text strong{color:var(--text-1);font-weight:700}.about-text p+p{margin-top:18px}.skills-label{font-family:var(--font-display-en);font-size:11px;letter-spacing:4px;color:var(--text-4);text-transform:uppercase;margin-bottom:18px;font-weight:700;display:flex;align-items:center;gap:14px}.skills-label:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--text-4),transparent);max-width:140px}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}.skill-tag{padding:13px 18px;text-align:center;border-radius:var(--r-sm);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);font-size:13.5px;color:var(--text-2);font-weight:500;transition:all .3s ease;position:relative;overflow:hidden}.skill-tag:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);opacity:0;transition:opacity .3s ease}.skill-tag:hover{transform:translateY(-2px);color:var(--text-1);border-color:var(--glass-border-strong);background:var(--glass-bg-strong)}.skill-tag:hover:before{opacity:1}.about2-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:64px;align-items:center}.about2-left{min-width:0}.about2-right{display:flex;justify-content:center;align-items:center}.avatar-frame{position:relative;width:100%;max-width:420px;aspect-ratio:1 / 1;border-radius:var(--r-xl);overflow:visible;isolation:isolate;background:transparent;box-shadow:0 32px 90px #000000a6,0 12px 32px #00000073;transition:transform .6s cubic-bezier(.4,0,.2,1),box-shadow .5s ease,filter .5s ease}.avatar-frame:hover{transform:translateY(-6px) rotate(-.6deg);box-shadow:0 44px 110px #000000b8,0 18px 44px #00000080}.avatar-border-inner{display:none}.avatar-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;object-position:center;z-index:1;filter:drop-shadow(0 24px 50px rgba(0,0,0,.65)) drop-shadow(0 6px 18px rgba(0,0,0,.4)) saturate(1.02);transform:scale(1);transition:transform .8s cubic-bezier(.4,0,.2,1),filter .5s ease}.avatar-frame:hover .avatar-img{transform:scale(1.04);filter:drop-shadow(0 32px 68px rgba(0,0,0,.75)) drop-shadow(0 10px 24px rgba(0,0,0,.5)) saturate(1.06) contrast(1.03)}.avatar-caption{position:absolute;left:50%;bottom:14px;transform:translate(-50%);z-index:3;display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:100px;background:#1412246b;backdrop-filter:blur(14px) saturate(1.6);-webkit-backdrop-filter:blur(14px) saturate(1.6);border:1px solid rgba(255,255,255,.14);color:#ffffffeb;font-size:11.5px;letter-spacing:2.5px;text-transform:uppercase;font-family:var(--font-display-en);font-weight:600;white-space:nowrap;box-shadow:0 10px 28px #00000073}.avatar-caption svg{color:var(--accent-1);opacity:.9}.skills-groups{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.skill-group-card{padding:26px 26px 22px;border-radius:var(--r-lg);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);transition:all .4s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.skill-group-card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);opacity:0;transition:opacity .3s ease}.skill-group-card:hover{transform:translateY(-4px);border-color:var(--glass-border-strong);background:var(--glass-bg-strong);box-shadow:0 18px 48px #0006}.skill-group-head{display:flex;align-items:center;gap:10px;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.06)}.skill-group-dot{width:10px;height:10px;border-radius:50%;background:currentColor;box-shadow:0 0 12px currentColor;opacity:.85}.skill-group-label{font-family:var(--font-display-en);font-size:13px;letter-spacing:1.5px;color:var(--text-1);font-weight:700;flex:1}.skill-group-count{font-family:var(--font-display-en);font-size:11px;letter-spacing:1.5px;color:var(--text-4);font-weight:600;padding:4px 10px;border-radius:100px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06)}.skill-group-head.color-blue{color:#6dc3ff}.skill-group-head.color-green{color:#54d88e}.skill-group-head.color-purple{color:#b08fff}.skill-group-head.color-orange{color:#ffb37a}.skill-group-head.color-pink{color:#ff94c2}.skill-group-tags{display:flex;flex-wrap:wrap;gap:10px}#footer.page{flex-direction:column;justify-content:space-between;padding-top:96px;padding-bottom:32px}.footer-cta{text-align:center;margin:auto 0}.footer-cta-label{font-family:var(--font-display-en);font-size:12px;letter-spacing:6px;color:var(--text-4);text-transform:uppercase;margin-bottom:32px;font-weight:700}.footer-cta-title{font-family:var(--font-serif-cn);font-weight:900;font-size:clamp(44px,7.5vw,92px);line-height:1;letter-spacing:-1.5px;margin-bottom:48px}.footer-cta-title .line1{display:block;background:linear-gradient(180deg,#fff,#ccc);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.footer-cta-title .line2{display:block;font-family:var(--font-display-en);font-weight:900;font-style:italic;background:linear-gradient(135deg,var(--accent-1) 0%,#fff 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;padding-left:.3em}.footer-email-pill{display:inline-flex;align-items:center;gap:12px;padding:16px 32px;border-radius:100px;color:var(--text-1);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border-strong);font-size:15.5px;font-weight:500;letter-spacing:.2px;transition:all .35s ease;position:relative;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.footer-email-pill:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(120deg,transparent 40%,rgba(255,255,255,.16) 50%,transparent 60%);transition:left .8s ease}.footer-email-pill:hover{transform:translateY(-2px);border-color:#ffffff52;background:var(--glass-bg-strong);box-shadow:0 12px 40px #0006}.footer-email-pill:hover:before{left:100%}.footer-email-pill svg,.footer-email-pill span{position:relative;z-index:1}.footer-email-pill svg{width:18px;height:18px;stroke-width:1.6}.footer-bottom{width:100%;max-width:1180px;margin:0 auto;padding-top:28px;border-top:1px solid rgba(255,255,255,.08);display:grid;grid-template-columns:1fr auto 1fr;gap:24px;align-items:center}.footer-copyright{font-size:12.5px;color:var(--text-4);font-family:var(--font-display-en);letter-spacing:.8px}.footer-beian{font-size:12.5px;color:var(--text-4);text-align:center}.footer-beian a{color:var(--text-4);text-decoration:none;transition:color .2s ease}.footer-beian a:hover{color:var(--text-2)}.footer-beian .sep{margin:0 10px;opacity:.5}.footer-quick{display:flex;flex-wrap:wrap;gap:20px;justify-content:flex-end}.footer-quick a{color:var(--text-3);text-decoration:none;font-size:13px;transition:color .2s ease;font-family:var(--font-display-en);letter-spacing:.8px}.footer-quick a:hover{color:var(--text-1)}.toast{position:fixed;top:32px;left:50%;transform:translate(-50%) translateY(-12px);padding:12px 22px;border-radius:100px;background:var(--glass-bg-strong);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border-strong);color:#fff;font-size:13.5px;z-index:9999;opacity:0;box-shadow:var(--glass-shadow);transition:all .35s cubic-bezier(.4,0,.2,1);pointer-events:none;font-weight:500}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}@media (max-width: 960px){:root{--pad-x: 24px}section.page{padding:110px var(--pad-x) 56px}.glass-topbar{padding:8px 10px}.topbar-logo-text,.topbar-menu button:not(.topbar-cta):not(.lang-btn){display:none}.topbar-logo{padding-right:10px;margin-right:4px}.lang-switcher{margin-left:4px;padding:3px}.lang-btn{min-width:30px;height:26px;padding:0 9px;font-size:11.5px}.glass-nav{right:14px;padding:12px 10px;gap:12px}.glass-dot:after{display:none}.project-card{grid-template-columns:1fr;gap:32px;padding:28px}.about-grid{grid-template-columns:1fr;gap:40px}.about-portrait{max-width:260px;margin:0 auto}.portrait-glyph{font-size:76px}.project-visual-glyph-fallback{font-size:80px}.project-name{font-size:28px}.footer-bottom{grid-template-columns:1fr;text-align:center;gap:12px}.footer-quick{justify-content:center}.about2-grid{grid-template-columns:1fr;gap:40px}.about2-left{order:2}.about2-right{order:1}.avatar-frame{max-width:300px;margin:0 auto}.avatar-caption{font-size:10.5px;letter-spacing:2px;padding:7px 16px}.skills-groups{grid-template-columns:1fr;gap:16px}.skill-group-card{padding:22px 22px 18px}.carousel-wrap{margin-top:36px}.carousel-arrow{width:44px;height:44px}.carousel-arrow.prev{left:2px}.carousel-arrow.next{right:2px}.carousel-arrow svg{width:18px;height:18px}.carousel-active{min-height:320px;max-width:100%}.carousel-counter{top:-30px;font-size:11.5px}.carousel-counter .cur{font-size:16px}}@media (max-width: 560px){.glass-contact{padding:18px;gap:14px}.contact-icon{width:42px;height:42px}.contact-icon svg{width:18px;height:18px}.hero-title{margin-bottom:22px}.hero-subtitle{margin-bottom:18px;font-size:14px}.hero-eyebrow{margin-bottom:16px;letter-spacing:4px}.hero-meta{margin-bottom:22px}.hero-status{font-size:12px;padding:6px 12px}.hero-keyword{font-size:10px;padding:4px 9px}.project-visual{aspect-ratio:16 / 10}.skills-grid{grid-template-columns:repeat(2,1fr)}.avatar-frame{max-width:240px}.carousel-arrow{width:40px;height:40px}.carousel-arrow.prev{left:-4px}.carousel-arrow.next{right:-4px}.carousel-arrow svg{width:16px;height:16px}.carousel-active{min-height:0}.carousel-dots{margin-top:22px}.skill-group-card{padding:18px 18px 14px}.skill-group-tags{gap:8px}}.glass-nav,.glass-topbar,.glass-contact,.project-card,.skill-group-card,.skill-tag,.footer-email-pill,.lang-dropdown-panel,.lang-toggle{box-shadow:inset 0 1px #ffffff1a,0 8px 40px #0000008c}.glass-nav:hover,.glass-topbar:hover,.glass-contact:hover,.project-card:hover,.skill-group-card:hover,.skill-tag:hover,.footer-email-pill:hover,.lang-toggle:hover{box-shadow:inset 0 1px #ffffff2e,0 18px 56px #0000008c}@keyframes apogee-fade-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes apogee-fade-down{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes apogee-fade-scale{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes apogee-shimmer{0%{transform:translate(-120%)}to{transform:translate(220%)}}section#hero .section-inner>.hero-eyebrow,section#hero .section-inner>.hero-title,section#hero .section-inner>.hero-subtitle,section#hero .section-inner>.btn-glass,section#hero .section-inner>.scroll-hint{opacity:0;animation:apogee-fade-up .9s cubic-bezier(.16,1,.3,1) forwards}section#hero .section-inner>.hero-eyebrow{animation-delay:.12s}section#hero .section-inner>.hero-title{animation-delay:.28s}section#hero .section-inner>.hero-subtitle{animation-delay:.48s}section#hero .section-inner>.btn-glass{animation-delay:.68s}section#hero .section-inner>.scroll-hint{animation-delay:.9s}section#about .section-inner>h2.section-label,section#about .section-inner>h3.section-title,section#about .section-inner>.about-grid{opacity:0;animation:apogee-fade-up .9s cubic-bezier(.16,1,.3,1) forwards}section#about .section-inner>h2.section-label{animation-delay:.2s}section#about .section-inner>h3.section-title{animation-delay:.36s}section#about .section-inner>.about-grid{animation-delay:.54s}section#about .about-portrait{opacity:0;transform:scale(.94);animation:apogee-fade-scale 1s cubic-bezier(.16,1,.3,1) .64s forwards}section#skills .section-inner>h2.section-label,section#skills .section-inner>h3.section-title,section#skills .section-inner>.skills-wrap{opacity:0;animation:apogee-fade-up .9s cubic-bezier(.16,1,.3,1) forwards}section#skills .section-inner>h2.section-label{animation-delay:.24s}section#skills .section-inner>h3.section-title{animation-delay:.4s}section#skills .section-inner>.skills-wrap{animation-delay:.6s}section#projects .section-inner>h2.section-label,section#projects .section-inner>h3.section-title,section#projects .section-inner>.carousel-wrap{opacity:0;animation:apogee-fade-up .9s cubic-bezier(.16,1,.3,1) forwards}section#projects .section-inner>h2.section-label{animation-delay:.28s}section#projects .section-inner>h3.section-title{animation-delay:.44s}section#projects .section-inner>.carousel-wrap{animation-delay:.64s}section#projects .project-card{opacity:0;transform:scale(.96);animation:apogee-fade-scale 1s cubic-bezier(.16,1,.3,1) .78s forwards}section#footer .footer-cta>.footer-cta-label,section#footer .footer-cta>.footer-cta-title,section#footer .footer-cta>.footer-cta-sub,section#footer .footer-cta>.footer-email-pill{opacity:0;animation:apogee-fade-up .9s cubic-bezier(.16,1,.3,1) forwards}section#footer .footer-cta>.footer-cta-label{animation-delay:.22s}section#footer .footer-cta>.footer-cta-title{animation-delay:.4s}section#footer .footer-cta>.footer-cta-sub{animation-delay:.6s}section#footer .footer-cta>.footer-email-pill{opacity:0;transform:scale(.95);animation:apogee-fade-scale .95s cubic-bezier(.16,1,.3,1) .82s forwards}@keyframes nebula-pan{0%{transform:translateZ(0) scale(1)}25%{transform:translate3d(-3.5%,2%,0) scale(1.03)}50%{transform:translate3d(2%,-3%,0) scale(1.05)}75%{transform:translate3d(-1.5%,2.5%,0) scale(1.04)}to{transform:translateZ(0) scale(1)}}@keyframes nebula-bright-core{0%{transform:translate3d(-1.5%,-1%,0) scale(1);opacity:.88}50%{transform:translate3d(2.5%,1.5%,0) scale(1.08);opacity:1}to{transform:translate3d(-1.5%,-1%,0) scale(1);opacity:.88}}body:before{content:"";position:fixed;top:-5%;right:-5%;bottom:-5%;left:-5%;width:110%;height:110%;z-index:0;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(ellipse 85% 18% at 50% 28%,rgba(120,160,255,.3),transparent 60%),radial-gradient(circle 28% at 12% 80%,rgba(180,210,255,.34),transparent 62%),radial-gradient(ellipse 35% 30% at 85% 18%,rgba(170,140,255,.26),transparent 62%),radial-gradient(ellipse 70% 10% at 40% 52%,rgba(255,140,180,.16),transparent 65%),radial-gradient(circle 18% at 90% 85%,rgba(140,220,255,.22),transparent 62%);animation:nebula-pan 22s ease-in-out infinite;opacity:1;will-change:transform}body:after{content:"";position:fixed;top:-2.5%;right:-2.5%;bottom:-2.5%;left:-2.5%;width:105%;height:105%;z-index:0;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(circle 9% at 28% 68%,rgba(160,130,255,.48),transparent 70%),radial-gradient(ellipse 60% 6% at 55% 36%,rgba(120,170,255,.35),transparent 70%);animation:nebula-bright-core 16s ease-in-out infinite;opacity:1}body{isolation:isolate}.fullpage{position:relative;z-index:1}section.page{isolation:isolate}@keyframes starfield-slow-pan{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(-2.8%,1.8%,0) scale(1.01)}}@keyframes starfield-fast-pan{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(2.2%,-2.6%,0) scale(1.015)}}@keyframes star-twinkle{0%,to{opacity:.88}40%{opacity:.94}70%{opacity:.84}}.fullpage:before{content:"";position:fixed;top:-2.5%;right:-2.5%;bottom:-2.5%;left:-2.5%;width:105%;height:105%;z-index:0;pointer-events:none;mix-blend-mode:screen;background-image:radial-gradient(1.3px 1.3px at 12% 18%,rgba(255,252,245,.78),transparent 60%),radial-gradient(1.2px 1.2px at 25% 42%,rgba(255,252,245,.72),transparent 60%),radial-gradient(1.5px 1.5px at 40% 8%,rgba(210,235,255,.7),transparent 60%),radial-gradient(1.2px 1.2px at 58% 55%,rgba(255,252,245,.66),transparent 60%),radial-gradient(1.4px 1.4px at 72% 28%,rgba(255,252,245,.8),transparent 60%),radial-gradient(1.3px 1.3px at 88% 70%,rgba(230,210,255,.72),transparent 60%),radial-gradient(1.1px 1.1px at 5% 80%,rgba(255,252,245,.62),transparent 60%),radial-gradient(1.2px 1.2px at 18% 92%,rgba(210,235,255,.68),transparent 60%),radial-gradient(1.4px 1.4px at 35% 72%,rgba(255,252,245,.74),transparent 60%),radial-gradient(1.3px 1.3px at 50% 35%,rgba(255,252,245,.7),transparent 60%),radial-gradient(1.1px 1.1px at 66% 88%,rgba(255,252,245,.6),transparent 60%),radial-gradient(1.2px 1.2px at 82% 15%,rgba(230,210,255,.72),transparent 60%),radial-gradient(1.4px 1.4px at 95% 45%,rgba(210,235,255,.68),transparent 60%),radial-gradient(1.1px 1.1px at 8% 60%,rgba(255,252,245,.58),transparent 60%),radial-gradient(1.5px 1.5px at 28% 5%,rgba(255,252,245,.82),transparent 60%),radial-gradient(1.2px 1.2px at 48% 95%,rgba(255,252,245,.66),transparent 60%),radial-gradient(1.3px 1.3px at 62% 48%,rgba(210,235,255,.64),transparent 60%),radial-gradient(1.1px 1.1px at 78% 62%,rgba(255,252,245,.6),transparent 60%),radial-gradient(1.4px 1.4px at 92% 8%,rgba(255,252,245,.76),transparent 60%),radial-gradient(1.2px 1.2px at 3% 32%,rgba(230,210,255,.64),transparent 60%),radial-gradient(2.2px 2.2px at 15% 65%,rgba(255,253,248,.86),transparent 60%),radial-gradient(2px 2px at 38% 30%,rgba(220,240,255,.84),transparent 60%),radial-gradient(2.3px 2.3px at 60% 78%,rgba(255,253,248,.88),transparent 60%),radial-gradient(2.1px 2.1px at 85% 40%,rgba(245,225,255,.82),transparent 60%),radial-gradient(2.2px 2.2px at 8% 10%,rgba(255,253,248,.84),transparent 60%),radial-gradient(2px 2px at 30% 55%,rgba(220,240,255,.8),transparent 60%),radial-gradient(2.4px 2.4px at 52% 20%,rgba(255,253,248,.9),transparent 60%),radial-gradient(2.1px 2.1px at 75% 92%,rgba(245,225,255,.78),transparent 60%),radial-gradient(2.2px 2.2px at 92% 65%,rgba(255,253,248,.84),transparent 60%),radial-gradient(2px 2px at 22% 85%,rgba(220,240,255,.78),transparent 60%);background-size:320px 320px,420px 420px;background-repeat:repeat;animation:starfield-slow-pan 90s linear infinite;opacity:1}.fullpage:after{content:"";position:fixed;top:-2.5%;right:-2.5%;bottom:-2.5%;left:-2.5%;width:105%;height:105%;z-index:0;pointer-events:none;mix-blend-mode:screen;background-image:radial-gradient(3.2px 3.2px at 20% 25%,rgba(255,255,255,.92),transparent 65%),radial-gradient(2.8px 2.8px at 55% 55%,rgba(255,255,255,.88),transparent 65%),radial-gradient(3px 3px at 80% 20%,rgba(220,240,255,.9),transparent 65%),radial-gradient(3.4px 3.4px at 10% 75%,rgba(245,225,255,.9),transparent 65%),radial-gradient(2.9px 2.9px at 90% 85%,rgba(255,255,255,.86),transparent 65%),radial-gradient(2.7px 2.7px at 45% 85%,rgba(255,255,255,.84),transparent 65%),radial-gradient(3.1px 3.1px at 70% 45%,rgba(220,240,255,.88),transparent 65%),radial-gradient(3.3px 3.3px at 30% 10%,rgba(245,225,255,.86),transparent 65%);background-size:560px 560px;background-repeat:repeat;animation:starfield-fast-pan 45s linear infinite,star-twinkle 18s ease-in-out infinite;opacity:.88}.fullpage{isolation:isolate}:focus-visible{outline:2px solid var(--accent-1);outline-offset:3px;box-shadow:0 0 0 6px #8aa4ff2e;border-radius:10px}:focus:not(:focus-visible){outline:none}.btn-glass.is-primary:hover{filter:brightness(1.08)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}body:before,body:after,.fullpage:before,.fullpage:after{animation:none!important}}:root{--bg-0: #07080f;--bg-1: #0a0b1a;--bg-2: #0d1124;--text-1: #f2f5fb;--text-2: rgba(255, 255, 255, .72);--text-3: rgba(255, 255, 255, .5);--text-4: rgba(255, 255, 255, .3);--glass-bg: rgba(255, 255, 255, .09);--glass-bg-strong: rgba(20, 22, 38, .62);--glass-border: rgba(255, 255, 255, .16);--glass-border-strong: rgba(255, 255, 255, .3);--glass-blur: blur(24px) saturate(170%);--glass-shadow: inset 0 1px 0 rgba(255, 255, 255, .3), 0 22px 50px -18px rgba(0, 0, 0, .62);--glass-panel: linear-gradient(160deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, .05));--rim: inset 0 1px 0 rgba(255, 255, 255, .32);--accent-1: #7aa2ff;--accent-2: #a78bfa;--accent-3: #e9eefc;--accent-amber: #ffb86b;--accent-green: #4fd18b;--r-sm: 12px;--r-md: 18px;--r-lg: 26px;--r-xl: 30px;--ease-glass: cubic-bezier(.16, 1, .3, 1);--ease-glass-2: cubic-bezier(.4, 0, .2, 1)}body{background-color:var(--bg-0);background-image:radial-gradient(1100px 760px at 12% 4%,rgba(74,102,214,.55),transparent 62%),radial-gradient(900px 700px at 92% 10%,rgba(150,96,220,.42),transparent 60%),radial-gradient(1000px 800px at 74% 96%,rgba(255,150,90,.26),transparent 62%),radial-gradient(800px 600px at 8% 92%,rgba(46,120,190,.3),transparent 60%),linear-gradient(160deg,#0b1027,#0a0b1a 55%,#08080f);background-attachment:fixed;background-repeat:no-repeat}body:before{content:none}.fullpage:before,.fullpage:after{content:none}section#hero:before,section#about:before,section#skills:before,section#projects:before,section#footer:before{background:none}body:after{content:"";position:fixed;top:-12%;right:-12%;bottom:-12%;left:-12%;width:auto;height:auto;z-index:-1;pointer-events:none;mix-blend-mode:normal;background:radial-gradient(46% 36% at 30% 26%,rgba(255,255,255,.13),transparent 70%),radial-gradient(40% 34% at 78% 72%,rgba(150,180,255,.12),transparent 72%);animation:glass-sheen 42s ease-in-out infinite;will-change:transform;opacity:1}@keyframes glass-sheen{0%{transform:translate3d(-2%,0,0) scale(1)}50%{transform:translate3d(2.5%,-1.6%,0) scale(1.05)}to{transform:translate3d(-2%,0,0) scale(1)}}.glass-dot:after,.lang-toggle,.lang-panel,.glass-contact,.skill-tag,.skill-group-card,.project-tag,.project-card,.carousel-arrow,.avatar-caption,.footer-email-pill,.toast{backdrop-filter:none;-webkit-backdrop-filter:none}.glass-topbar{top:20px;padding:8px 10px 8px 14px;background:#12142285;backdrop-filter:blur(22px) saturate(180%);-webkit-backdrop-filter:blur(22px) saturate(180%);border-color:#ffffff24;box-shadow:var(--rim),0 22px 50px -16px #000c;transition:background .4s var(--ease-glass),border-color .4s var(--ease-glass)}.glass-topbar:hover{background:#0e101cb8;border-color:#ffffff38}.topbar-logo-mark{border-radius:10px;background:linear-gradient(140deg,var(--accent-1),var(--accent-2));color:#0a0d1a;box-shadow:0 8px 20px -8px #7aa2ffd9}.topbar-logo-text{letter-spacing:1.6px;font-weight:700}.topbar-menu button{color:var(--text-2);letter-spacing:.4px;transition:color .25s var(--ease-glass-2),background .25s var(--ease-glass-2)}.topbar-menu button:hover{background:#ffffff1a}.topbar-menu button.active{background:#ffffff26;font-weight:600}.topbar-cta{background:linear-gradient(135deg,#8fb2ff,#b79dff)!important;color:#0a0d1a!important;box-shadow:0 12px 26px -10px #7aa2ffcc,var(--rim)!important;transition:transform .3s var(--ease-glass),box-shadow .3s var(--ease-glass)!important}.topbar-cta:hover{background:linear-gradient(135deg,#9fbeff,#c4aeff)!important;box-shadow:0 16px 34px -10px #7aa2fff2,var(--rim)!important;transform:translateY(-1px)}.glass-nav{right:22px;gap:12px;padding:14px 10px;border-radius:22px;background:#16182875;backdrop-filter:blur(26px) saturate(180%);-webkit-backdrop-filter:blur(26px) saturate(180%);border-color:#ffffff29;box-shadow:0 22px 50px -16px #000c,var(--rim);transition:background .4s var(--ease-glass)}.glass-nav:hover{background:#1a1c2e9e;border-color:#ffffff38}.glass-dot{width:10px;height:10px;background:#ffffff47;border-color:transparent;transition:transform .35s var(--ease-glass),background .35s var(--ease-glass-2),box-shadow .35s var(--ease-glass)}.glass-dot:hover{background:#ffffff8c;transform:scale(1.15)}.glass-dot.active{background:linear-gradient(135deg,var(--accent-1),var(--accent-2));box-shadow:0 0 0 3px #7aa2ff29,0 0 14px #7aa2ff8c}.glass-dot.active:not(:hover):after{opacity:0}.glass-dot:after{right:26px;padding:5px 10px;border-radius:9px;background:#181a2ae6;border-color:#ffffff29;color:var(--text-2);font-family:var(--font-body);font-size:11.5px;letter-spacing:.4px}section#hero .section-inner{position:relative;isolation:isolate;overflow:hidden;padding:44px 48px 42px;border-radius:26px;background:linear-gradient(160deg,#fff3,#ffffff12);backdrop-filter:blur(26px) saturate(170%);-webkit-backdrop-filter:blur(26px) saturate(170%);border:1px solid rgba(255,255,255,.16);box-shadow:var(--rim),0 30px 70px -24px #000000bf}section#hero .section-inner:after{content:"";position:absolute;top:-40%;left:-30%;width:60%;height:180%;z-index:-1;pointer-events:none;background:linear-gradient(100deg,transparent,rgba(255,255,255,.13),transparent);transform:rotate(12deg) translate3d(-30%,0,0);animation:glass-sweep 14s ease-in-out infinite}@keyframes glass-sweep{0%,to{transform:rotate(12deg) translate3d(-30%,0,0)}50%{transform:rotate(12deg) translate3d(210%,0,0)}}section#hero .section-inner .hero-title{font-size:clamp(44px,7.4vw,96px);letter-spacing:-2.2px;margin-bottom:26px}.hero-title .line1{background:linear-gradient(180deg,#fff,#ffffffb8);-webkit-background-clip:text;background-clip:text}.hero-title .line2{font-style:normal;background:linear-gradient(100deg,var(--accent-1) 0%,var(--accent-2) 60%,#f0d9ff 100%);-webkit-background-clip:text;background-clip:text}.hero-eyebrow{color:var(--accent-1);letter-spacing:5px;font-size:11.5px}.hero-subtitle{font-size:16px;line-height:1.85;color:var(--text-2)}.hero-status{background:#4fd18b1a;border-color:#4fd18b47;color:#e8fff3c7}.hero-status-dot{background:var(--accent-green);box-shadow:0 0 10px #4fd18bcc}.hero-keyword{font-family:var(--font-body);font-size:11px;letter-spacing:.4px;padding:6px 11px;border-radius:8px;color:var(--text-3);background:#ffffff0d;border-color:#ffffff1f}.scroll-hint{color:var(--text-4)}@media (max-width: 719px){section#hero .section-inner{padding:0;border-radius:0;background:none;border-color:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}section#hero .section-inner:after{content:none}}.glass-contact,.skill-group-card,.skill-tag,.footer-email-pill,.project-tag{background:var(--glass-panel);border:1px solid rgba(255,255,255,.16);box-shadow:var(--rim),0 16px 40px -18px #000000b3}.glass-contact{padding:20px 22px;gap:16px;border-radius:var(--r-md);transition:transform .4s var(--ease-glass),background .3s var(--ease-glass-2),border-color .3s var(--ease-glass-2),box-shadow .4s var(--ease-glass)}.glass-contact:hover{transform:translateY(-4px);background:#ffffff24;border-color:#ffffff47;box-shadow:var(--rim),0 24px 54px -20px #000c}.glass-contact:after{left:-80%;transform:skew(-20deg) translateZ(0);transition:transform .8s var(--ease-glass)}.glass-contact:hover:after{left:-80%;transform:skew(-20deg) translate3d(350%,0,0)}.contact-icon{width:42px;height:42px;border-radius:12px;border-color:#ffffff24}.contact-label{font-size:10.5px;letter-spacing:1.8px;color:var(--text-4)}.contact-value{font-size:14.5px;font-weight:600;margin-top:3px}.btn-glass,.btn-solid{height:48px;padding:0 24px;border-radius:14px;font-size:14.5px;font-weight:700;background:#ffffff17;color:var(--text-1);border:1px solid rgba(255,255,255,.18);box-shadow:var(--rim),0 8px 24px -10px #000000b3;transition:transform .3s var(--ease-glass),background .3s var(--ease-glass-2),box-shadow .3s var(--ease-glass)}.btn-glass:hover,.btn-solid:hover{background:#ffffff24;transform:translateY(-2px);box-shadow:var(--rim),0 14px 30px -12px #000c}.btn-glass:active,.btn-solid:active{transform:translateY(0) scale(.98)}.btn-glass.is-primary,.btn-solid{color:#0a0d1a;border-color:transparent;background:linear-gradient(135deg,#8fb2ff,#b79dff);box-shadow:0 12px 30px -10px #7aa2ffbf,var(--rim)}.btn-glass.is-primary:hover,.btn-solid:hover{filter:none;background:linear-gradient(135deg,#9fbeff,#c4aeff);box-shadow:0 16px 38px -10px #7aa2ffe6,var(--rim)}.btn-glass:before,.btn-solid:before,.footer-email-pill:before{left:0;transform:translate3d(-115%,0,0);transition:transform .75s var(--ease-glass)}.btn-glass:hover:before,.btn-solid:hover:before,.footer-email-pill:hover:before{left:0;transform:translate3d(115%,0,0)}.section-eyebrow{color:var(--accent-1);letter-spacing:3.5px;font-size:11px}.section-eyebrow:before{background:linear-gradient(90deg,transparent,rgba(122,162,255,.55))}.section-title{letter-spacing:-1.2px}.section-desc{font-size:15.5px;line-height:1.85;color:var(--text-3)}.section-number{color:#ffffff3d}.tech-chip{padding:6px 11px;border-radius:8px;background:#ffffff0e;border:1px solid rgba(255,255,255,.13);color:var(--text-3);font-family:var(--font-body);font-size:11px;letter-spacing:.3px;box-shadow:none;transition:color .25s var(--ease-glass-2),background .25s var(--ease-glass-2),border-color .25s var(--ease-glass-2)}.tech-chip:hover{transform:none;color:var(--text-1);background:#ffffff1a;border-color:#ffffff3d;box-shadow:none}.feature-chip{padding:6px 12px;border-radius:999px;font-size:12px;color:#b4f0cf;background:#4fd18b1a;border:1px solid rgba(79,209,139,.26);transition:background .25s var(--ease-glass-2),border-color .25s var(--ease-glass-2)}.feature-chip:hover{background:#4fd18b29;border-color:#4fd18b6b;color:#d7ffe9}.skill-tag{padding:9px 14px;border-radius:10px;background:#ffffff0d;border-color:#ffffff1f;color:var(--text-3);font-size:12.5px;transition:transform .3s var(--ease-glass),color .3s var(--ease-glass-2),background .3s var(--ease-glass-2)}.skill-tag:hover{transform:translateY(-2px);background:#ffffff1a;border-color:#ffffff38;color:var(--text-1)}.project-tag{padding:6px 13px;border-radius:999px;background:#ffffff0f}.skill-group-card{padding:26px 24px 22px;border-radius:var(--r-lg);transition:transform .5s var(--ease-glass),border-color .3s var(--ease-glass-2),background .3s var(--ease-glass-2)}.skill-group-card:hover{transform:translateY(-5px);background:#ffffff1f;border-color:#ffffff42;box-shadow:var(--rim),0 26px 56px -22px #000c}.skill-group-card:before{background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);opacity:.6}.skill-group-card:hover:before{opacity:1}.skill-group-head{border-bottom:1px solid color-mix(in srgb,currentColor 26%,transparent)}.skill-group-count{background:#ffffff0d;border-color:#ffffff14}.project-card{padding:32px 36px;border-radius:24px;background:linear-gradient(160deg,#ffffff21,#ffffff0b);border:1px solid rgba(255,255,255,.17);box-shadow:var(--rim),0 40px 80px -30px #000c;transition:transform .5s var(--ease-glass),border-color .4s var(--ease-glass-2),box-shadow .5s var(--ease-glass)}.project-card:hover{transform:translateY(-4px);border-color:#ffffff42;box-shadow:var(--rim),0 46px 92px -30px #000000d9}.project-card:before,.project-card:after{background:none}.project-visual{min-height:0;max-height:none;aspect-ratio:16 / 11;border-radius:16px;border-color:#ffffff29;background:linear-gradient(160deg,#ffffff0f,#ffffff05)}.project-visual-glow{left:0;top:0;width:100%;height:100%;border-radius:inherit;transform:none;background:var(--visual-grad, linear-gradient(135deg, #4facfe, #00f2fe));opacity:.55;filter:none;z-index:0;-webkit-mask-image:radial-gradient(circle at 50% 52%,#000 0%,transparent 72%);mask-image:radial-gradient(circle at 50% 52%,#000 0%,transparent 72%);transition:opacity .5s var(--ease-glass)}.project-card:hover .project-visual-glow{opacity:.78;transform:none;filter:none}.project-visual-pedestal{bottom:8%;width:62%;height:12%;filter:none;opacity:.65;background:radial-gradient(ellipse at 50% 50%,rgba(0,0,0,.42),rgba(0,0,0,.12) 55%,transparent 75%);transition:opacity .5s var(--ease-glass)}.project-card:hover .project-visual-pedestal{opacity:.85}.project-card:hover .project-visual-icon{transform:translateY(-8%) scale(1.02)}.project-name{letter-spacing:-.6px}.project-description{color:var(--text-2);font-size:14.5px}.project-block-label{color:var(--accent-1)}.carousel-arrow{width:44px;height:44px;background:#1618289e;border-color:#ffffff2e;box-shadow:0 14px 34px -12px #000000b3,var(--rim);transition:transform .35s var(--ease-glass),background .3s var(--ease-glass-2),border-color .3s var(--ease-glass-2)}.carousel-arrow:hover{background:#22263cc7;border-color:#ffffff57;transform:translateY(-50%) scale(1.06);box-shadow:0 18px 40px -12px #000c,var(--rim)}.carousel-dot.is-active{background:linear-gradient(135deg,var(--accent-1),var(--accent-2));box-shadow:0 0 12px #7aa2ff8c}.avatar-frame{max-width:400px;transition:transform .6s var(--ease-glass),box-shadow .5s var(--ease-glass)}.avatar-frame:hover{transform:translateY(-6px) rotate(-.6deg)}.avatar-frame:hover .avatar-img{transform:scale(1.03)}.avatar-caption{background:#1416268c;border-color:#ffffff29;border-radius:999px;box-shadow:0 12px 30px -14px #000000b3,var(--rim)}.avatar-caption svg{color:var(--accent-1)}.lang-toggle{height:34px;background:#ffffff12;border-color:#ffffff24;color:var(--text-2);transition:color .3s var(--ease-glass-2),background .3s var(--ease-glass-2),border-color .3s var(--ease-glass-2)}.lang-toggle:hover,.lang-dropdown.open .lang-toggle{background:#ffffff1f;border-color:#ffffff42;transform:none}.lang-toggle:before{display:none}.lang-panel{background:#10121ee6;border-color:#ffffff29;box-shadow:0 20px 50px -18px #000000d9,var(--rim)}.lang-option.active{background:#7aa2ff24;border-color:#7aa2ff4d}.lang-option-check{color:var(--accent-1)}.footer-email-pill{padding:15px 30px;border-radius:999px;background:var(--glass-panel);border-color:#ffffff3d;box-shadow:var(--rim),0 18px 44px -18px #000000bf;transition:transform .35s var(--ease-glass),background .3s var(--ease-glass-2),border-color .3s var(--ease-glass-2)}.footer-email-pill:hover{transform:translateY(-2px);background:#ffffff24;border-color:#ffffff57;box-shadow:var(--rim),0 24px 52px -18px #000c}.footer-cta-label{color:var(--text-4)}.footer-cta-title .line2{font-style:normal;background:linear-gradient(100deg,var(--accent-1) 0%,var(--accent-2) 60%,#f0d9ff 100%);-webkit-background-clip:text;background-clip:text}.footer-bottom{border-top-color:#ffffff1a}.toast{top:88px;background:#181a2aeb;border-color:#ffffff2e;border-radius:12px;box-shadow:0 16px 40px -12px #000c,var(--rim)}.scroll-hint-line:after{top:0;animation:glass-scroll-drop 2.2s var(--ease-glass-2) infinite}@keyframes glass-scroll-drop{0%{transform:translate3d(0,-24px,0);opacity:0}40%{opacity:1}to{transform:translate3d(0,46px,0);opacity:0}}:focus-visible{outline-color:var(--accent-1);box-shadow:0 0 0 6px #7aa2ff2e}@media (max-width: 960px){.glass-topbar{top:14px;border-radius:100px}.glass-nav{right:14px;border-radius:20px}.project-card{padding:26px}.skill-group-card{padding:22px 20px 18px}.skill-group-card:before{left:20px}}@media (max-width: 960px),(max-height: 720px),(max-width: 1100px) and (max-height: 880px){.fullpage{scroll-snap-type:none}section.page{height:auto;min-height:100dvh;scroll-snap-align:none;scroll-snap-stop:normal}}@media (prefers-reduced-motion: reduce){body:after,section#hero .section-inner:after,.scroll-hint,.scroll-hint-line:after{animation:none!important}}section.page{align-items:safe center}@media (min-width: 961px) and (max-height: 880px){section.page{padding-top:64px;padding-bottom:26px}.glass-topbar{top:12px;padding:6px 8px 6px 12px}.section-number{margin-bottom:6px}.section-eyebrow{margin-bottom:10px}.section-title{font-size:clamp(30px,4.4vw,54px);margin-bottom:12px}.section-desc{font-size:14.5px;line-height:1.7;margin-bottom:24px}.project-card{padding:20px 26px;gap:26px}.project-visual{min-height:200px;max-height:300px}.project-name{font-size:26px;margin-bottom:10px}.project-description{font-size:13.5px;line-height:1.68;margin-bottom:12px}.project-block{margin-bottom:10px}.project-block:last-of-type{margin-bottom:14px}.project-block-label{margin-bottom:5px}.tech-chip,.feature-chip{padding:4px 10px}}@media (min-width: 961px) and (max-height: 720px),(min-width: 961px) and (max-height: 880px) and (max-width: 1100px){section.page,section#projects{padding-top:88px}}@media (max-width: 960px){section#projects{padding-top:88px}}.glass-contact:focus-visible,.footer-email-pill:focus-visible{outline:2px solid var(--accent-1);outline-offset:3px}.about-paragraphs[data-v-2e052572]{margin-top:18px}.about-p[data-v-2e052572]{margin:0 0 14px;line-height:1.85;font-size:15px;color:var(--text-2)}.about-p[data-v-2e052572]:last-child{margin-bottom:0}.project-feature-label[data-v-2e052572]{margin-top:22px;margin-bottom:12px;font-family:var(--font-display-en);font-size:10.5px;letter-spacing:3.5px;color:var(--text-4);font-weight:700;text-transform:uppercase}.footer-cta-sub[data-v-2e052572]{max-width:560px;margin:0 auto 28px;color:var(--text-2);line-height:1.8;font-size:15px;text-align:center}
