/* 统一视觉变量，便于全站调整配色、间距与字体。 */
:root{color-scheme:dark;--bg:#111210;--surface:#191b18;--line:#2c2f29;--text:#eeefe9;--muted:#858b7e;--green:#c3fa72;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace;--sans:Arial,'PingFang SC','Microsoft YaHei',sans-serif}
*{box-sizing:border-box}html{scroll-padding-top:100px;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid var(--green);outline-offset:5px}button{border:0}::selection{background:var(--green);color:var(--bg)}.wrap{width:min(1240px,calc(100% - 112px));margin-inline:auto}.mono{font-family:var(--mono);font-size:10px;letter-spacing:1.2px}.accent{color:var(--green)}.muted{color:#8d9385}.section{padding-block:104px}.section-kicker{display:flex;gap:14px;align-items:center;font-size:10px;letter-spacing:2px;margin-bottom:27px}.section-kicker .accent{letter-spacing:0}h1,h2,h3,p{margin:0}h2{font-size:38px;font-weight:600;line-height:1.5;letter-spacing:-1.7px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:24px}.section-heading p{color:#9a9f93;line-height:1.8;margin-top:15px;font-size:13px}.section-index{color:#9a9f93;white-space:nowrap}.section-index .accent{font-size:28px;margin-left:27px}.status-dot{width:6px;height:6px;display:inline-block;border-radius:50%;background:var(--green);box-shadow:0 0 10px #c3fa7233;flex:none}.button{display:inline-flex;align-items:center;justify-content:center;gap:32px;padding:16px 24px;font-size:12px;font-weight:600;letter-spacing:.4px;transition:background .2s,color .2s,transform .2s}.button:hover{transform:translateY(-3px)}.button-primary{background:var(--green);color:#181e10}.button-primary:hover{background:#d5ff9b}.button span{font-size:18px;font-weight:400}.button-outline{border:1px solid #535a49;background:transparent}.button-outline:hover{border-color:var(--green);color:var(--green)}.text-link{display:inline-flex;gap:24px;align-items:center;font-size:12px}.text-link:hover{color:var(--green)}.text-link span{font-size:18px}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link:focus{position:fixed;z-index:50;top:10px;left:10px;padding:15px;background:var(--green);color:#111}
/* 半透明固定导航保持内容的阅读位置。 */
.site-header{position:sticky;top:0;z-index:20;background:#111210ed;backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}.header-inner{height:83px;display:flex;align-items:center;justify-content:space-between}.wordmark{display:inline-flex;gap:1px;align-items:center;font-size:20px;font-weight:600;letter-spacing:1px}.brand-symbol{font-family:var(--mono);color:var(--green);margin-right:11px;font-size:25px;font-weight:400;letter-spacing:-5px;padding-right:7px}.name-star{color:var(--green);margin:3px 2px 0}.brand-period{color:var(--green);font-size:26px}.desktop-nav{display:flex;gap:34px;margin-left:50px}.desktop-nav a{color:#b0b4aa;font-size:12px;position:relative;transition:color .2s}.desktop-nav a:hover,.desktop-nav a.current{color:var(--green)}.desktop-nav a.current:after{content:'';position:absolute;width:3px;height:3px;background:var(--green);border-radius:50%;bottom:-10px;left:calc(50% - 1.5px)}.header-cta{font-size:11px;border:1px solid #444b3c;padding:11px 17px;display:flex;gap:29px;align-items:center}.header-cta:hover{border-color:var(--green);color:var(--green)}.header-cta span{color:var(--green);font-size:16px}.menu-toggle,.mobile-nav{display:none}
/* 首屏采用文字与原生程序图形并列的编辑式构图。 */
.hero{display:grid;grid-template-columns:1.08fr 1fr;position:relative;min-height:645px;padding-top:73px;column-gap:20px}.hero-copy{position:relative;z-index:2}.eyebrow{font-family:var(--mono);font-size:9px;letter-spacing:1.5px;display:flex;align-items:center;gap:10px;color:#bec4b6;white-space:nowrap}.eyebrow-line{width:22px;height:1px;background:#687059;margin-inline:2px}.hero-intro{font-size:16px;color:#bec4b6;margin-top:44px;letter-spacing:1px}.intro-wave{margin-left:10px;color:var(--green);font-size:23px}h1{font-size:clamp(58px,5.9vw,85px);line-height:1.28;font-weight:600;letter-spacing:-4px;margin-top:17px}.outlined-word{color:transparent;-webkit-text-stroke:1px #dce3cf;font-weight:500;margin-left:3px}.hero-description{font-size:12px;color:#a5ab9b;line-height:2.1;margin-top:24px;letter-spacing:.5px}.hero-actions{display:flex;align-items:center;gap:31px;margin-top:31px}.hero-caption{display:flex;align-items:center;gap:10px;font-size:10px;color:#8f9783;margin-top:38px}.tiny-cross{color:var(--green);font-family:var(--mono);font-size:16px}.caption-coordinate{font-family:var(--mono);font-size:8px;color:#747e67;margin-left:10px;letter-spacing:.7px}.hero-art{position:relative;height:465px;margin-top:0;background-image:linear-gradient(#c3fa7208 1px,transparent 1px),linear-gradient(90deg,#c3fa7208 1px,transparent 1px);background-size:38px 38px;mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}.hero-art:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 50%,#96e8400e,transparent 65%);pointer-events:none}.art-topline,.art-bottomline{position:absolute;left:25px;right:25px;color:#737e63;display:flex;justify-content:space-between;font-size:8px;letter-spacing:1px;z-index:2}.art-topline{top:19px}.art-bottomline{bottom:12px;align-items:center}.art-bottomline button{background:none;font-family:var(--mono);font-size:8px;color:#b2be9c;padding:10px;letter-spacing:1px}.art-bottomline button:hover{color:var(--green)}#motion-icon{font-size:11px;color:var(--green);margin-right:3px}#orbit{width:100%;height:100%;display:block}.art-cross{position:absolute;color:#7f8e6a;font:18px var(--mono)}.cross-one{left:20px;top:69px}.cross-two{right:17px;bottom:65px}.orbit-label{position:absolute;bottom:71px;left:50%;transform:translateX(-50%);border:1px solid #49553a;padding:9px 12px;font-size:8px;color:#c4d0b1;display:flex;align-items:center;gap:9px;white-space:nowrap;background:#171d12c9}.orbit-label .status-dot{width:4px;height:4px}.hero-bottom{grid-column:1/-1;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;color:#9aa28e;margin-top:43px;padding:22px 0;font-size:8px;letter-spacing:1.5px}.hero-bottom>span:first-child span{margin-left:13px;color:var(--green);font-size:14px}.hero-bottom>span:last-child{letter-spacing:1px;font-family:var(--sans);font-size:10px}.hero-bottom>span:last-child .accent{font-size:18px;margin-left:15px}.stats-wrap{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#171915}.stats{display:grid;grid-template-columns:repeat(4,1fr);padding-block:31px}.stats>div{padding-left:36px;border-right:1px solid #30342a}.stats>div:first-child{padding-left:0}.stats>div:last-child{border:0}.stats strong{font:400 43px var(--mono);letter-spacing:-2.3px}.stats strong>span{font:400 11px var(--sans);letter-spacing:0;margin-left:5px;color:#b8c1a9}.stats strong>.stat-arrow{font:24px var(--mono);color:var(--green);margin-left:15px}.stats strong>.stat-to{font:28px var(--mono);color:var(--green);margin-inline:5px}.stats p{font-size:10px;color:#a1a995;margin-top:11px;letter-spacing:.5px}
/* 关于与项目使用明确的阅读层级，避免过多装饰影响内容。 */
.about-section{border-bottom:1px solid var(--line)}.about-grid{display:grid;grid-template-columns:1fr 1.08fr;gap:76px}.about-grid h2{font-size:37px;line-height:1.6}.about-copy>p{font-size:12px;line-height:2.2;color:#a8ae9f}.about-copy>p+p{margin-top:13px}.about-notes{display:flex;gap:26px;margin-top:25px;color:#c1c9b5;font-size:10px}.about-notes>span{display:flex;align-items:center;gap:8px}.mini-icon{font-style:normal;color:var(--green);font-size:16px}.projects-section{padding-top:94px}.project-filters{display:flex;gap:10px;margin-top:35px;margin-bottom:27px}.filter{padding:10px 17px;background:transparent;border:1px solid transparent;color:#a2a997;font-size:11px;transition:background .2s,color .2s,border .2s}.filter:hover{color:var(--green);border-color:#414937}.filter.active{background:var(--green);color:#192010;border-color:var(--green)}.filter span{font:9px var(--mono);margin-left:8px;opacity:.65}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 26px}.project-card{min-width:0}.project-open{display:block;width:100%;text-align:left;padding:0;background:transparent}.project-visual{height:292px;position:relative;overflow:hidden;background:#21271b;border:1px solid #343e2b;transition:border-color .3s}.project-open:hover .project-visual{border-color:#6b864b}.project-open:hover .project-arrow{background:var(--green);color:#15210b;transform:rotate(45deg)}.visual-label{position:absolute;top:19px;left:21px;font:8px var(--mono);color:#a2b388;letter-spacing:1.5px;z-index:2}.visual-note{position:absolute;bottom:15px;right:17px;color:#acb7a0;font-size:8px;letter-spacing:1px;z-index:2}.project-title-row{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:21px}.project-title-row h3{font-size:17px;font-weight:500;letter-spacing:-.3px}.project-number{font:10px var(--mono);color:#7f8c70;margin-right:12px}.project-arrow{width:30px;height:30px;border:1px solid #46523b;display:grid;place-items:center;color:#c3d8a8;flex:none;font-size:18px;transition:transform .25s,background .25s}.project-summary{font-size:11px;color:#99a18f;line-height:1.8;margin:10px 0 14px}.project-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}.project-tags{display:flex;gap:5px;flex-wrap:wrap}.project-tags span{font:8px var(--mono);color:#b7bfad;padding:5px 7px;border:1px solid #343d2d}.project-period{font:8px var(--mono);color:#8e9881;white-space:nowrap}.project-disclaimer{font-size:10px;color:#828d76;margin-top:28px}.project-disclaimer span{color:var(--green);margin-right:5px}.project-visual>div:not(.visual-label){transition:transform .5s}.project-open:hover .phones{transform:translateY(-5px) rotate(-8deg)}
/* 项目界面是代码绘制的概念示意，不是实际产品截图。 */
.medical-visual{background:radial-gradient(ellipse at 60% 100%,#46683544,transparent 80%),#20291b}.preview-sideword{position:absolute;bottom:32px;left:26px;font:54px var(--mono);letter-spacing:-4px;line-height:.9;color:#a9c18d22;transform:rotate(-90deg);transform-origin:20px 20px;white-space:nowrap}.phones{position:absolute;display:flex;align-items:center;gap:16px;top:41px;left:26%;transform:rotate(-8deg)}.phone{width:132px;height:253px;border-radius:22px;border:5px solid #1c2318;box-shadow:0 15px 35px #0005;background:#f6f8f1;overflow:hidden;color:#273625;padding:11px 10px;position:relative}.phone-back{margin-top:67px;background:#e7eedf;transform:rotate(12deg)}.phone-notch{width:38px;height:9px;border-radius:0 0 8px 8px;background:#1c2318;position:absolute;top:0;left:50%;transform:translateX(-50%)}.phone-status{font:6px var(--mono);display:flex;justify-content:space-between;margin-bottom:12px}.phone-greeting{font-size:7px;color:#78846f}.phone h4{font-size:12px;margin:6px 0 9px}.phone-search{padding:5px 7px;background:#e7ecdf;border-radius:5px;font-size:5px;color:#99a58b}.phone-banner{padding:12px 8px;background:#d1e5b6;margin-top:9px;border-radius:7px;position:relative}.phone-banner strong{font-size:9px;display:block}.phone-banner small{display:block;font-size:5px;margin-top:5px}.phone-banner b{position:absolute;right:7px;top:6px;font-size:32px;color:#8eaf69}.phone-icons{display:flex;justify-content:space-around;margin:11px 0;font-size:5px;text-align:center}.phone-icons i{display:block;background:#e1eacd;border-radius:7px;padding:7px;color:#5e793d;margin-bottom:4px;font-size:10px;font-style:normal}.phone-course{border:1px solid #e1e7d7;border-radius:5px;padding:7px;margin-top:6px;font-size:6px;display:flex;gap:6px;align-items:center}.phone-course em{font-size:15px;color:#8fae6c;font-style:normal}.phone-course small{display:block;color:#8c9981;font-size:4px;margin-top:3px}.phone-back h4{margin:18px 0 8px}.phone-progress{width:70px;height:70px;border-radius:50%;border:6px solid #c1dba1;border-top-color:#6a9740;margin:14px auto;display:grid;place-items:center;font:18px var(--mono)}.phone-options{font-size:5px;padding:8px;border:1px solid #c8d5b6;margin:5px 0;border-radius:4px}.phone-options.selected{background:#d8e8c5;border-color:#a3bf7d}.harmony-visual{background:radial-gradient(ellipse at 50% 55%,#294748,transparent 75%),#172b2c;border-color:#304547}.harmony-visual .visual-label{color:#9abdbb}.harmony-rings{position:absolute;width:270px;height:270px;left:50%;top:45%;transform:translate(-50%,-50%)}.harmony-rings i{position:absolute;border:1px solid #7dada440;inset:0;border-radius:50%}.harmony-rings i:nth-child(2){inset:21px}.harmony-rings i:nth-child(3){inset:44px}.harmony-rings:before,.harmony-rings:after{content:'';position:absolute;width:6px;height:6px;border-radius:50%;background:#c4ece1;top:60px;right:18px;box-shadow:0 0 15px #b0ffdf}.harmony-rings:after{top:auto;bottom:48px;right:auto;left:25px;width:4px;height:4px}.harmony-device{position:absolute;left:50%;top:50%;transform:translate(-50%,-49%) rotate(9deg);width:126px;height:229px;border-radius:25px;border:5px solid #203b3b;background:linear-gradient(160deg,#d2e8d7,#71a59a);box-shadow:12px 18px 40px #0007;color:#183c34;padding:14px}.harmony-clock{font:34px var(--mono);text-align:center;letter-spacing:-3px;margin-top:23px}.harmony-clock small{font:6px var(--sans);display:block;letter-spacing:1px;margin-top:5px}.harmony-apps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:26px}.harmony-apps span{height:23px;width:23px;border-radius:7px;background:#ffffff66;display:grid;place-items:center;font-size:12px}.harmony-apps .med-app{background:#e8f4d9;color:#567c38}.harmony-word{position:absolute;font:29px var(--sans);letter-spacing:-1px;color:#9bb9b1;right:20px;bottom:33px}.harmony-word small{font:7px var(--mono);display:block;letter-spacing:2.8px;color:#7faaa0;margin-top:6px}.harmony-cert{position:absolute;left:23px;bottom:30px;color:#9bbcaf;font:8px var(--mono);line-height:1.8;letter-spacing:1px}.crm-visual{background:radial-gradient(ellipse at 45% 80%,#51436e44,transparent 85%),#24212e;border-color:#3b3449}.crm-visual .visual-label{color:#afa1c8}.dashboard-preview{width:82%;height:222px;position:absolute;top:60px;left:9%;background:#f4f3fa;border:4px solid #3a334c;border-radius:7px;color:#403951;box-shadow:0 15px 40px #0004;transform:perspective(600px) rotateY(-8deg) rotateX(5deg) rotate(-3deg);overflow:hidden}.dashboard-bar{height:20px;background:#fff;display:flex;align-items:center;gap:3px;padding:0 8px;border-bottom:1px solid #e9e5ef;font-size:5px;color:#83788f}.dashboard-bar i{width:4px;height:4px;background:#ccc4da;border-radius:50%;display:inline-block}.dashboard-bar span{margin-left:10px}.dashboard-layout{display:grid;grid-template-columns:56px 1fr;height:100%}.dashboard-sidebar{padding:12px 6px;background:#292339;color:#b4a8c4;font-size:5px;line-height:3.1}.dashboard-sidebar b{color:#e4dcf2;display:block;font-size:7px;margin-bottom:9px}.dashboard-sidebar span{display:block}.dashboard-sidebar .selected{background:#443955;color:white;border-radius:2px;padding-left:4px}.dashboard-main{padding:11px 12px}.dashboard-main h4{font-size:9px;margin:0 0 10px;font-weight:500}.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.mini-stats>div{background:white;padding:7px;border:1px solid #e8e3ed;font-size:4px;color:#887c99}.mini-stats strong{font:13px var(--mono);display:block;color:#51435f;margin-top:5px}.chart-panel{margin-top:10px;background:white;padding:9px;font-size:5px;border:1px solid #e8e3ed}.chart-bars{display:flex;align-items:flex-end;gap:7px;height:63px;border-bottom:1px solid #e5dfed;margin-top:9px}.chart-bars i{width:7%;background:#c9badf;border-radius:2px 2px 0 0}.chart-bars i:nth-child(2n){background:#8f78ac}.pipeline-visual{background:radial-gradient(ellipse at 50% 80%,#4d533033,transparent 75%),#25271e;border-color:#3b3e2e}.terminal-preview{width:83%;position:absolute;top:55px;left:8.5%;border:1px solid #4e5640;border-radius:6px;background:#181c13;box-shadow:0 14px 40px #0004;transform:rotate(-3deg);padding-bottom:15px}.terminal-bar{height:27px;border-bottom:1px solid #353c2a;display:flex;align-items:center;padding:0 10px;gap:5px;color:#8b9678;font:7px var(--mono)}.terminal-bar i{width:5px;height:5px;border-radius:50%;background:#596b42}.terminal-bar i:first-child{background:#bba47d}.terminal-bar i:nth-child(2){background:#9fbd66}.terminal-bar span{margin:auto}.terminal-code{padding:15px 17px;color:#9ca98a;font:8px/2 var(--mono)}.terminal-code .cmd{color:#d2e4b3}.terminal-code .success{color:var(--green)}.terminal-code .dim{color:#6f7d5e}.terminal-code em{font-style:normal;float:right;color:#9eb781}.pipeline-steps{display:flex;gap:4px;align-items:center;margin:3px 17px 0;font:6px var(--mono);color:#a1b686}.pipeline-steps b{font-weight:400;border:1px solid #52623d;padding:6px 10px;flex:1;text-align:center;background:#222c18}.pipeline-steps span{color:#78965a}
/* 技术栈与时间线让职业信息可快速扫描。 */
.skills-section{background:#171915;border-block:1px solid var(--line)}.toolkit-symbol{font-size:75px;color:var(--green);line-height:1}.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);margin-top:44px;border-top:1px solid #343a2c}.skill-group{padding:29px 29px 2px;border-right:1px solid #343a2c}.skill-group:first-child{padding-left:0}.skill-group:last-child{border:0;padding-right:0}.skill-number{font-size:8px;color:#7d896e}.skill-group h3{font-size:17px;font-weight:500;margin-top:24px;display:flex;align-items:center;gap:13px}.skill-icon{color:var(--green);font:23px var(--mono);min-width:25px}.skill-group>p{font-size:11px;color:#9aa68c;margin-top:11px}.skill-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:21px}.skill-tags span{font:10px var(--mono);color:#bac5ac;border:1px solid #414b35;background:#20271a;padding:8px 10px}.experience-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:90px}.experience-intro h2{font-size:43px;line-height:1.4}.experience-intro>p{font-size:11px;line-height:2.2;color:#9fa995;margin-top:20px}.experience-intro .button{margin-top:30px;gap:22px}.experience-intro>.download-note{font-size:9px;margin-top:10px;color:#7b8870}.timeline{border-left:1px solid #3d4833;padding-left:28px}.timeline-item{position:relative;padding-bottom:31px;margin-bottom:29px;border-bottom:1px solid var(--line)}.timeline-item:last-child{padding-bottom:0;margin-bottom:0;border:0}.timeline-item:before{position:absolute;content:'';width:7px;height:7px;border-radius:50%;background:#7f9861;left:-32px;top:5px;box-shadow:0 0 0 5px var(--bg)}.timeline-item:first-child:before{background:var(--green);box-shadow:0 0 0 5px var(--bg),0 0 12px #c3fa7233}.timeline-period{font:9px var(--mono);color:#a4b68b;letter-spacing:.5px}.timeline-title{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:14px}.timeline-title h3{font-size:17px;font-weight:500}.timeline-title>span{font-size:10px;color:#b4bdab}.timeline-item>p{font-size:11px;line-height:2.1;color:#9aa68d;margin-top:12px}.timeline-tags{font-size:9px;color:#778b65;margin-top:12px;letter-spacing:.4px}
/* 尾屏延续排版，提供清晰的回访入口。 */
.closing{position:relative;border-top:1px solid #414b35;padding-top:25px;padding-bottom:25px}.closing-top{display:flex;justify-content:space-between;color:#8a997a;font-size:8px;letter-spacing:1px}.closing-top>span:first-child{display:flex;gap:9px;align-items:center}.closing-top .status-dot{height:4px;width:4px}.closing>p{font-size:clamp(42px,5.4vw,76px);line-height:1.4;letter-spacing:-2px;padding:51px 0 38px}.cursor{font-family:var(--mono);animation:blink 1.1s steps(1,end) infinite}.closing-arrow{position:absolute;right:22px;top:92px;width:99px;height:99px;border:1px solid #6c8150;border-radius:50%;display:grid;place-items:center;font-size:56px;color:var(--green);transition:background .25s,color .25s,transform .25s}.closing-arrow:hover{background:var(--green);color:var(--bg);transform:rotate(-45deg)}.closing-bottom{display:flex;justify-content:space-between;font-size:11px;color:#9ba98c}.closing-bottom a{color:#c3cfb4}.closing-bottom a:hover{color:var(--green)}.closing-bottom a span{color:var(--green);margin-left:20px}.site-footer{padding-block:30px;border-top:1px solid var(--line);margin-top:32px;display:flex;justify-content:space-between;align-items:center}.site-footer .wordmark{font-size:15px}.site-footer .brand-period{font-size:20px}.site-footer>.mono{font-size:8px;color:#7c8970;letter-spacing:.7px}.privacy-note{font-size:9px;color:#9eae8c;display:flex;gap:7px}.privacy-note>span{color:var(--green)}
/* 弹窗、移动菜单和提示均有明确的键盘操作路径。 */
dialog{background:#191e15;border:1px solid #4c5c3c;color:var(--text);width:min(660px,calc(100% - 32px));padding:0;max-height:85dvh;overscroll-behavior:contain}dialog::backdrop{background:#080c06c9;backdrop-filter:blur(9px)}.dialog-inner{padding:43px 40px}.dialog-close{position:absolute;right:13px;top:10px;background:none;color:#b2c29f;font-size:30px;width:40px;height:40px}.dialog-close:hover{color:var(--green)}dialog .section-kicker{color:var(--green);font-size:9px;display:block;margin-bottom:19px}dialog h2{font-size:28px;line-height:1.5;letter-spacing:-.7px}#dialog-period{margin-top:13px;color:#9db187;font-size:10px}#dialog-tags{margin:20px 0 27px}#dialog-intro{font-size:13px;line-height:2;color:#b5c0aa}dialog h3{font-size:14px;margin-top:28px;font-weight:500}#dialog-outcomes{padding-left:19px;color:#b5c0aa;font-size:12px;line-height:2.2}#dialog-outcomes li{padding-left:5px;margin-bottom:10px}#dialog-outcomes li::marker{color:var(--green)}.dialog-footer{border-top:1px solid #39462e;padding-top:20px;margin-top:25px;color:#90a779;font:9px var(--mono);display:flex;gap:10px;align-items:center;letter-spacing:1px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);border:1px solid #6c864d;background:#25351c;color:#d8edc0;font-size:12px;padding:15px 24px;z-index:50;box-shadow:0 8px 25px #0004;max-width:calc(100% - 30px);width:max-content;line-height:1.7}.reveal-enabled .reveal{opacity:0;transform:translateY(16px);transition:opacity .6s,transform .6s}.reveal-enabled .reveal.is-visible{opacity:1;transform:translateY(0)}[hidden]{display:none!important}@keyframes blink{50%{opacity:0}}
/* 中等屏幕减小留白，保持首屏和项目卡片的比例。 */
@media(min-width:1500px){.hero{padding-top:95px;min-height:710px}.hero-art{height:480px}.hero-description{font-size:13px}.hero-intro{margin-top:50px}}
@media(max-width:1100px){.wrap{width:calc(100% - 72px)}.hero{padding-top:55px;min-height:600px;grid-template-columns:1.05fr 1fr}.hero-art{height:440px}.eyebrow{font-size:7px;letter-spacing:1px;gap:7px}.hero-intro{margin-top:39px}h1{font-size:65px;letter-spacing:-3px}.hero-description{font-size:11px}.hero-actions{gap:20px}.button{padding:15px 19px;gap:22px}.hero-caption{margin-top:30px}.caption-coordinate{display:none}.hero-bottom{margin-top:30px}.section{padding-block:80px}h2{font-size:32px}.about-grid{gap:40px}.about-grid h2{font-size:32px}.project-visual{height:260px}.phones{left:23%;top:37px}.phone{width:116px;height:235px}.harmony-device{height:211px;width:116px}.project-title-row h3{font-size:15px}.project-number{margin-right:7px}.project-meta{align-items:flex-start;flex-direction:column}.skills-grid{margin-top:33px}.skill-group{padding:24px 20px 0}.skill-group h3{font-size:15px;gap:8px}.skill-tags{gap:6px}.skill-tags span{font-size:9px;padding:7px}.experience-grid{gap:45px;grid-template-columns:1fr 1.4fr}.stats>div{padding-left:25px}.stats strong{font-size:38px}.stats strong>span{font-size:9px}.about-notes{gap:18px}}
/* 小屏导航与项目改为单列，触摸操作至少留出足够空间。 */
@media(max-width:760px){html{scroll-padding-top:88px}.wrap{width:calc(100% - 40px)}.header-inner{height:68px}.wordmark{font-size:18px}.brand-symbol{font-size:23px}.desktop-nav,.header-cta{display:none}.menu-toggle{display:flex;flex-direction:column;justify-content:center;gap:6px;width:44px;height:44px;background:none;padding:10px}.menu-toggle span{display:block;height:1px;width:24px;background:var(--green);transition:transform .2s}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.mobile-nav{display:flex;padding:12px 20px 24px;gap:0;flex-direction:column;background:#171c13;border-top:1px solid var(--line)}.mobile-nav a{padding:14px;font-size:13px;color:#c5d2b7}.mobile-nav a:hover{color:var(--green)}.hero{display:flex;flex-direction:column;padding-top:36px;min-height:auto;gap:0}.eyebrow{font-size:7px;letter-spacing:.8px;gap:8px}.eyebrow-line{width:18px}.hero-intro{font-size:14px;margin-top:33px}.intro-wave{font-size:20px}h1{font-size:clamp(52px,11vw,76px);letter-spacing:-3px;line-height:1.35;margin-top:14px}.hero-description{font-size:11px;margin-top:20px;line-height:2.1}.hero-actions{margin-top:26px;gap:27px}.button{font-size:11px;padding:15px 21px;gap:25px}.text-link{font-size:11px;gap:20px}.hero-caption{font-size:9px;margin-top:26px}.hero-art{height:345px;max-width:480px;width:100%;margin:15px auto 0}.art-topline,.art-bottomline{font-size:7px;left:12px;right:12px}.art-topline{top:10px}.art-bottomline{bottom:4px}.orbit-label{bottom:53px;font-size:7px}.cross-one{top:43px;left:7px}.cross-two{bottom:42px;right:6px}.hero-bottom{margin-top:5px;padding:18px 0;font-size:7px;letter-spacing:1px}.hero-bottom>span:last-child{font-size:8px}.hero-bottom>span:last-child .accent{margin-left:7px;font-size:15px}.stats{grid-template-columns:repeat(2,1fr);padding-block:10px}.stats>div,.stats>div:first-child{padding:22px 15px 22px 0}.stats>div:nth-child(even){padding-left:26px;border-right:0}.stats>div:nth-child(-n+2){border-bottom:1px solid #30342a}.stats strong{font-size:36px}.stats strong>span{font-size:10px}.stats p{font-size:9px;margin-top:9px}.section{padding-block:64px}.section-kicker{font-size:8px;letter-spacing:1.7px;gap:11px;margin-bottom:22px}h2{font-size:29px;letter-spacing:-1px}.about-grid{grid-template-columns:1fr;gap:25px}.about-grid h2{font-size:31px}.about-copy>p{font-size:11px;line-height:2.15}.about-notes{gap:24px;margin-top:20px;font-size:9px}.mini-icon{font-size:15px}.section-heading{gap:10px}.section-heading p{font-size:11px;margin-top:10px}.section-index{display:none}.project-filters{gap:4px;margin-top:25px;margin-bottom:21px;justify-content:space-between}.filter{font-size:10px;padding:11px 10px;white-space:nowrap;min-height:44px}.filter span{font-size:8px;margin-left:3px}.project-grid{grid-template-columns:1fr;gap:32px}.project-visual{height:280px}.project-title-row{margin-top:17px}.project-title-row h3{font-size:16px}.project-summary{font-size:11px;margin:8px 0 12px}.project-meta{flex-direction:row;align-items:center}.project-tags span{font-size:7px;padding:5px}.project-period{font-size:7px}.project-number{font-size:9px;margin-right:8px}.project-disclaimer{font-size:9px;line-height:1.9;margin-top:25px}.phones{left:27%;top:38px}.phone{width:125px;height:250px}.dashboard-preview{height:220px}.terminal-preview{top:56px}.terminal-code{font-size:8px}.toolkit-symbol{font-size:45px}.skills-grid{grid-template-columns:1fr;margin-top:30px}.skill-group,.skill-group:first-child,.skill-group:last-child{padding:24px 0 27px;border:0;border-bottom:1px solid #343a2c}.skill-group:last-child{padding-bottom:0}.skill-group h3{margin-top:16px;font-size:16px}.skill-group>p{font-size:11px}.skill-tags{margin-top:18px;gap:7px}.skill-tags span{font-size:10px;padding:8px 10px}.experience-grid{grid-template-columns:1fr;gap:41px}.experience-intro h2{font-size:36px}.experience-intro>p{margin-top:15px}.experience-intro .button{margin-top:22px}.timeline{margin-left:5px;padding-left:23px}.timeline-item:before{left:-27px}.timeline-title h3{font-size:16px}.timeline-title>span{font-size:9px}.timeline-item>p{font-size:11px}.timeline-period{font-size:8px}.timeline-tags{font-size:8px}.closing{padding-top:20px}.closing-top{font-size:6px;letter-spacing:.5px}.closing-top>span:last-child{display:none}.closing>p{font-size:40px;letter-spacing:-1.6px;padding:40px 0 33px;line-height:1.5}.closing-arrow{width:61px;height:61px;right:0;top:77px;font-size:36px}.closing-bottom{font-size:9px}.closing-bottom a span{margin-left:10px}.site-footer{padding-block:23px;gap:20px;flex-wrap:wrap;margin-top:27px}.site-footer .wordmark{font-size:15px}.site-footer>.mono{order:3;width:100%;font-size:7px}.privacy-note{font-size:8px}.dialog-inner{padding:45px 23px 25px}dialog h2{font-size:23px}#dialog-intro{font-size:12px}#dialog-outcomes{font-size:11px}.toast{font-size:11px;padding:13px 17px}}
@media(max-width:380px){.wrap{width:calc(100% - 32px)}.eyebrow{font-size:6px;gap:6px}h1{font-size:51px}.hero-actions{gap:20px}.button{padding:14px 17px;gap:20px}.hero-art{height:310px}.stats strong{font-size:31px}.stats>div:nth-child(even){padding-left:18px}h2{font-size:26px}.filter{padding:10px 7px;font-size:9px}.project-visual{height:260px}.phones{left:21%}.project-title-row h3{font-size:14px}.project-meta{align-items:flex-start;flex-direction:column}.closing>p{font-size:35px}.closing-arrow{top:79px;width:52px;height:52px;font-size:30px}.about-notes{gap:17px}}
/* 页头、页尾与站点图标共用几何 H，避免不同尺寸出现品牌差异。 */
.brand-logo{display:block;width:36px;height:36px;flex:none;margin-right:10px;transition:filter .2s,transform .2s}.wordmark:hover .brand-logo{filter:drop-shadow(0 0 7px #c3fa7233);transform:translateY(-1px)}.site-footer .brand-logo{width:28px;height:28px;margin-right:8px}
@media(max-width:760px){.brand-logo{width:32px;height:32px;margin-right:9px}.site-footer .brand-logo{width:26px;height:26px}}
/* Q 版人物独立展示，图像始终存在，动画只提供渐进增强。 */
.character-scene{overflow:hidden;mask-image:none}.avatar-stage{position:absolute;inset:35px 0 53px;display:flex;justify-content:center;align-items:center;perspective:1000px}.avatar-figure{position:relative;z-index:2;height:100%;max-width:82%;padding:0;background:none;transform:rotateX(var(--avatar-rx,0deg)) rotateY(var(--avatar-ry,0deg));transition:transform .22s ease-out;transform-style:preserve-3d;outline-offset:8px!important}.avatar-float{height:100%;display:block;animation:avatar-float 5s ease-in-out infinite;transform-origin:50% 85%}.avatar-image{height:100%;width:auto;max-width:100%;object-fit:contain;display:block;user-select:none;filter:drop-shadow(0 8px 15px #0005)}.avatar-figure:hover .avatar-image{filter:drop-shadow(0 4px 17px #b8f47126)}.avatar-shadow{position:absolute;bottom:4px;left:50%;width:150px;height:14px;transform:translateX(-50%);border-radius:50%;background:#0a1008;box-shadow:0 0 25px #9fd95b30}.avatar-backdrop{position:absolute;width:300px;height:300px;left:50%;top:49%;transform:translate(-50%,-50%);border:1px solid #b4e87412;border-radius:50%;background:radial-gradient(ellipse,#99db4820,transparent 70%)}.avatar-backdrop>span{position:absolute;inset:28px;border:1px dashed #b4e87415;border-radius:50%}.avatar-backdrop>span:nth-child(2){inset:-31px;border:1px solid #b4e8740a}.avatar-backdrop>i{position:absolute;right:0;top:29px;color:var(--green);font-size:25px;font-style:normal;transform:rotate(15deg)}.avatar-hint{position:absolute;bottom:47px;left:50%;transform:translateX(-50%);font-size:9px;letter-spacing:.7px;display:flex;align-items:center;gap:8px;color:#c8d8b6;white-space:nowrap;padding:8px 12px;background:#1a2414e6;border:1px solid #4c6135;pointer-events:none;z-index:4}.avatar-hint .status-dot{height:4px;width:4px}.avatar-hint>span:last-child{color:var(--green)}.avatar-message{position:absolute;right:9px;top:70px;max-width:185px;font-size:11px;line-height:1.8;background:#c3fa72;color:#1b2911;padding:10px 14px;box-shadow:0 8px 30px #0003;border-radius:10px 10px 10px 2px;z-index:5;pointer-events:none;animation:avatar-message .2s ease-out}.avatar-figure.is-greeting .avatar-image{animation:avatar-greet .8s ease-in-out;transform-origin:50% 85%}.character-scene.is-still .avatar-float{animation-play-state:paused}.character-scene .cross-one{z-index:1}.character-scene .cross-two{z-index:1}@keyframes avatar-float{0%,100%{transform:translateY(2px)}50%{transform:translateY(-6px)}}@keyframes avatar-greet{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-9px) rotate(-3deg)}60%{transform:translateY(-3px) rotate(2deg)}}@keyframes avatar-message{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:760px){.character-scene{height:390px}.avatar-stage{inset:25px 0 44px}.avatar-hint{bottom:37px;font-size:8px;padding:7px 10px}.avatar-backdrop{width:245px;height:245px}.avatar-message{right:8px;top:55px;max-width:155px;font-size:10px}.avatar-backdrop>i{font-size:21px}}
/* 辅助文字放大并提高对比度，装饰性微标记保留较小字号。 */
.stats p{font-size:14px;line-height:1.8;color:#bac3ae}.stats strong>span{font-size:13px}.hero-description{font-size:15px;line-height:1.95;color:#bbc3af}.desktop-nav a{font-size:14px}.header-cta{font-size:13px}.button{font-size:14px}.text-link{font-size:14px}.hero-caption{font-size:12px}.about-copy>p{font-size:14px;line-height:2;color:#b6bfaa}.about-notes{font-size:12px}.section-heading p{font-size:14px;color:#b3bda6}.project-title-row h3{font-size:18px}.project-summary{font-size:14px;line-height:1.9;color:#b6c0a9}.filter{font-size:13px;min-height:42px}.project-tags span{font-size:10px;padding:6px 8px}.project-period{font-size:10px}.project-meta{flex-wrap:wrap}.project-disclaimer{font-size:12px;line-height:1.9}.skill-group>p{font-size:13px;color:#b4bea8}.skill-tags span{font-size:12px}.timeline-item>p{font-size:14px;line-height:1.95;color:#b4bea7}.timeline-title>span{font-size:12px}.timeline-period{font-size:12px}.timeline-tags{font-size:11px}.experience-intro>p{font-size:14px;line-height:2}.experience-intro>.download-note{font-size:11px}.avatar-hint{font-size:11px}.avatar-message{font-size:13px;max-width:215px}.privacy-note{font-size:11px}.closing-bottom{font-size:13px}
/* 背景星空、柔和光团和鼠标光环均固定在独立层，不遮挡内容。 */
body{isolation:isolate}.ambient-field{position:fixed;inset:0;z-index:-2;pointer-events:none;overflow:hidden;background:radial-gradient(ellipse at 82% 19%,#91d6440c,transparent 48%)}.ambient-field:before,.ambient-field:after{content:'';position:absolute;width:46vw;height:46vw;min-width:260px;min-height:260px;border-radius:50%;background:radial-gradient(circle,#8dc63f12,transparent 68%);filter:blur(35px);animation:ambient-drift 24s ease-in-out infinite alternate}.ambient-field:before{right:-12vw;top:8vh}.ambient-field:after{left:-20vw;bottom:-17vh;animation-delay:-12s;background:radial-gradient(circle,#8dcc6f10,transparent 68%)}.particle-field{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}.reading-progress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:100;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,#75b83c,var(--green),#e8ffbb);box-shadow:0 0 12px #baf66d66;pointer-events:none}.pointer-ring{position:fixed;top:0;left:0;width:28px;height:28px;border:1px solid #bff66f99;border-radius:50%;z-index:90;pointer-events:none;transform:translate3d(var(--pointer-x,-100px),var(--pointer-y,-100px),0) translate(-50%,-50%);opacity:0;transition:width .2s,height .2s,opacity .2s,background .2s;box-shadow:0 0 13px #c3fa7215}.pointer-ring.is-visible{opacity:.85}.pointer-ring.over-control{width:44px;height:44px;background:#c3fa7212;border-color:#d6ff9b}.avatar-spark{position:absolute;z-index:7;pointer-events:none;color:var(--green);font:23px var(--mono);line-height:1;animation:spark-burst .9s ease-out forwards;text-shadow:0 0 8px #c3fa7266}.avatar-hint{box-shadow:0 0 20px #b8ee6410}.avatar-backdrop{box-shadow:0 0 50px #b3ef5210}.avatar-backdrop>span:nth-child(1){animation:orbit-outline 45s linear infinite}.button-primary{position:relative;overflow:hidden;box-shadow:0 0 0 #b8f47100;transition:transform .2s,background .2s,box-shadow .2s}.button-primary:after{content:'';position:absolute;top:-50%;left:-70%;width:50%;height:200%;background:linear-gradient(90deg,transparent,#ffffff55,transparent);transform:skewX(-20deg);pointer-events:none}.button-primary:hover{box-shadow:0 6px 28px #b8f47124}.button-primary:hover:after{animation:button-shimmer .65s ease-out}.project-open{transition:transform .25s}.project-visual:after{content:'';position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;transition:opacity .25s;background:radial-gradient(220px circle at var(--shine-x,50%) var(--shine-y,45%),#c3fa722b,transparent 70%)}.project-open:hover .project-visual:after,.project-open:focus-visible .project-visual:after{opacity:1}.outlined-word{transition:filter .35s}.hero-copy:hover .outlined-word{filter:drop-shadow(0 0 8px #c3fa7240)}@keyframes ambient-drift{to{transform:translate(8vw,-7vh) scale(1.2)}}@keyframes orbit-outline{to{transform:rotate(360deg)}}@keyframes button-shimmer{to{left:140%}}@keyframes spark-burst{from{opacity:1;transform:translate(-50%,-50%) scale(.5)}20%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--spark-x)),calc(-50% + var(--spark-y))) rotate(100deg) scale(.2)}}
@media(hover:hover) and (pointer:fine){.project-open:hover{transform:translateY(-5px)}}
@media(max-width:760px){.hero-description{font-size:14px;line-height:2}.eyebrow{font-size:8px;letter-spacing:.7px}.button{font-size:13px}.text-link{font-size:13px}.hero-caption{font-size:11px}.stats p{font-size:13px;line-height:1.75}.stats strong>span{font-size:12px}.about-copy>p{font-size:14px;line-height:1.95}.about-notes{font-size:11px;gap:18px}.section-heading p{font-size:13px}.project-title-row h3{font-size:17px}.project-summary{font-size:13px}.filter{font-size:12px;padding:11px 9px}.project-tags span{font-size:10px;padding:6px}.project-meta{align-items:flex-start;flex-direction:column;gap:9px}.project-period{font-size:10px}.project-disclaimer{font-size:11px}.skill-group>p{font-size:13px}.skill-tags span{font-size:12px}.timeline-item>p{font-size:14px}.timeline-period{font-size:11px}.timeline-title>span{font-size:11px}.timeline-tags{font-size:11px;line-height:1.8}.experience-intro>p{font-size:14px}.avatar-hint{font-size:10px}.avatar-message{font-size:12px;max-width:165px}.closing-bottom{font-size:12px}.privacy-note{font-size:10px}.pointer-ring{display:none}.ambient-field:before,.ambient-field:after{filter:blur(22px)}}
/* 第二轮动效强调反馈和入场层次，不增加持续闪烁。 */
.headline-char{display:inline-block;animation:headline-enter .65s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--char-index) * 45ms);transform-origin:50% 100%}.project-card{perspective:1000px}.click-ripple{position:fixed;z-index:95;width:14px;height:14px;border:1px solid #c3fa72bb;border-radius:50%;pointer-events:none;box-shadow:0 0 12px #c3fa7222;animation:click-ripple .75s ease-out forwards}.click-ripple:after{content:'';position:absolute;inset:3px;border:1px solid #e1ffaf55;border-radius:50%}.stats strong{font-variant-numeric:tabular-nums}.skill-tags span{transition:border-color .2s,background .2s,box-shadow .2s,transform .2s}.skill-tags span:hover{transform:translateY(-3px);border-color:#b6ee6977;background:#2b3a1f;box-shadow:0 4px 15px #a7dc4e12}.timeline-item:before{transition:box-shadow .3s,background .3s}.timeline-item:hover:before{background:var(--green);box-shadow:0 0 0 5px var(--bg),0 0 18px #bff46c77}.timeline-item:hover .timeline-title h3{color:#d9edbf}.dialog-inner{animation:dialog-enter .25s ease-out}@keyframes headline-enter{from{opacity:0;transform:translateY(22px) rotateX(55deg);filter:blur(4px)}to{opacity:1;transform:translateY(0) rotateX(0);filter:blur(0)}}@keyframes click-ripple{from{opacity:.9;transform:translate(-50%,-50%) scale(.5)}to{opacity:0;transform:translate(-50%,-50%) scale(6)}}@keyframes dialog-enter{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(hover:hover) and (pointer:fine){.project-open{transform:perspective(1000px) rotateX(var(--card-rx,0deg)) rotateY(var(--card-ry,0deg));transition:transform .18s ease-out}.project-open:hover{transform:perspective(1000px) translateY(-5px) rotateX(var(--card-rx,0deg)) rotateY(var(--card-ry,0deg))}.project-open:hover .project-visual{box-shadow:0 16px 34px -25px #bcfa6c88}}
/* 备案信息独占页脚底部一行，在桌面和手机端均居中显示。 */
.site-footer{flex-wrap:wrap;gap:20px}.icp-record{flex-basis:100%;order:4;text-align:center;font-size:13px;line-height:1.8;color:#b4bea7;padding-block:8px}.icp-record:hover{color:var(--green);text-decoration:underline;text-underline-offset:4px}
/* 尊重系统减少动态效果设置，所有内容仍保持可见和可操作。 */
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal-enabled .reveal{opacity:1;transform:none}}
