:root{--paper:#f7f7f5;--ink:#151515;--muted:#747474;--line:#dededb;--blue:#153fba;--blue-pale:#eaf0ff;--serif:"Noto Serif SC","Source Han Serif SC","Songti SC",serif;--sans:"Microsoft YaHei","HarmonyOS Sans SC",Arial,sans-serif;--mono:"IBM Plex Mono","Cascadia Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.nav{height:92px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 4.5vw;position:sticky;top:0;background:rgba(247,247,245,.9);backdrop-filter:blur(14px);z-index:10}.brand{font-family:var(--serif);font-size:22px;letter-spacing:.04em}.brand small{font:10px/1 var(--mono);letter-spacing:.28em;color:var(--muted);margin-left:14px}.nav-links{display:flex;align-items:center;gap:28px;font:11px var(--mono);letter-spacing:.17em;color:#505050}.nav-links a{transition:color .2s}.nav-links a:hover{color:var(--blue)}.nav-links a.active{color:var(--blue)}.contact-link{border:1px solid #cfcfca;border-radius:999px;padding:13px 18px;color:var(--ink)!important}.wrap{width:min(1320px,91vw);margin:auto}.hero{min-height:calc(100vh - 92px);display:grid;grid-template-columns:1.02fr .98fr;align-items:center;gap:4vw;padding:7vh 0}.eyebrow{font:11px var(--mono);letter-spacing:.18em;color:var(--blue);margin:0 0 24px}.hero h1{font:500 clamp(42px,5vw,80px)/1.16 var(--serif);letter-spacing:-.06em;margin:0 0 24px}.hero h1 em{font-style:normal;color:var(--blue)}.hero p{max-width:480px;font-size:17px;line-height:1.9;color:#555;margin:0 0 34px}.actions{display:flex;gap:14px;align-items:center}.button{font:11px var(--mono);letter-spacing:.11em;padding:15px 19px;border:1px solid var(--ink);display:inline-flex;gap:14px;align-items:center;transition:.25s}.button:hover{background:var(--ink);color:white}.button.ghost{border-color:var(--line);color:#444}.button.ghost:hover{border-color:var(--blue);background:var(--blue);color:white}.scroll-note{margin-top:12vh;color:#999;font:10px var(--mono);letter-spacing:.16em}.scroll-note:before{content:"";width:42px;border-top:1px solid #999;display:inline-block;vertical-align:middle;margin-right:12px}.hero-art{height:min(580px,66vh);position:relative;display:flex;align-items:center;justify-content:center;isolation:isolate}.halo{position:absolute;width:92%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#d9e4ff 0,rgba(220,229,255,.45) 38%,transparent 69%);filter:blur(4px);z-index:-2}.orbit{position:absolute;width:90%;aspect-ratio:1;border:1px solid rgba(21,63,186,.17);border-radius:50%;transform:rotate(-20deg)}.orbit-label{position:absolute;right:5%;top:16%;font:10px var(--mono);letter-spacing:.18em;writing-mode:vertical-rl;color:#555}.phone{width:min(280px,58%);height:min(505px,88%);background:#fff;border:9px solid white;border-radius:26px;box-shadow:0 30px 70px rgba(25,43,90,.18);transform:rotate(4deg);overflow:hidden;position:relative}.phone-top{height:45px;padding:16px 17px 0;font:9px var(--mono);letter-spacing:.14em;color:var(--blue)}.closet{height:58%;margin:0 12px;background:linear-gradient(150deg,#ede8df,#bbb3a9);position:relative;overflow:hidden}.closet:after{content:"YISHAN";font:38px var(--serif);position:absolute;left:20px;bottom:16px;color:white;letter-spacing:-.08em}.shirt{position:absolute;width:94px;height:125px;background:#1d2633;left:50%;top:32px;transform:translateX(-50%);clip-path:polygon(22% 0,38% 12%,62% 12%,78% 0,100% 23%,77% 41%,70% 100%,30% 100%,23% 41%,0 23%)}.result{margin:13px 12px;padding:12px;background:#f5f6f7;display:flex;justify-content:space-between;align-items:center;font-size:11px}.result span{color:var(--blue);font:9px var(--mono);letter-spacing:.1em}.bubble{position:absolute;background:white;padding:13px 15px;box-shadow:0 15px 30px rgba(31,49,93,.12);font:10px var(--mono);letter-spacing:.1em}.bubble.one{left:0;bottom:13%;transform:rotate(-8deg)}.bubble.two{right:0;top:20%;transform:rotate(9deg);color:var(--blue)}.section{padding:155px 0;border-top:1px solid var(--line)}.section-mark{font:11px var(--mono);letter-spacing:.18em;color:#888;margin-bottom:24px}.section-title{font:500 clamp(36px,4.4vw,66px)/1.18 var(--serif);letter-spacing:-.055em;margin:0 0 18px}.section-desc{max-width:580px;color:#555;line-height:1.9;margin:0;font-size:15px}.about-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:9vw;align-items:start}.about-copy{font:500 clamp(26px,3.1vw,46px)/1.46 var(--serif);letter-spacing:-.05em}.about-copy em{font-style:normal;color:var(--blue)}.about-detail{padding-top:8px;color:#494949;line-height:2;font-size:15px}.capabilities{margin-top:28px;display:flex;flex-wrap:wrap;gap:8px}.tag{font:10px var(--mono);letter-spacing:.08em;padding:8px 10px;background:#eee;white-space:nowrap}.feature{margin-top:65px;background:#eef2fc;min-height:625px;padding:clamp(28px,5vw,72px);display:grid;grid-template-columns:1fr 1fr;gap:8vw;position:relative;overflow:hidden}.feature:after{content:"01";position:absolute;right:3vw;top:-4vw;font:220px var(--serif);color:rgba(21,63,186,.055)}.feature-label{font:10px var(--mono);letter-spacing:.17em;color:var(--blue)}.feature h3{font:500 clamp(37px,5vw,70px)/1 var(--serif);letter-spacing:-.08em;margin:27px 0 21px}.feature p{max-width:430px;line-height:1.9;color:#505050}.meta{border-top:1px solid rgba(21,63,186,.22);margin-top:35px}.meta div{display:grid;grid-template-columns:112px 1fr;gap:10px;padding:11px 0;border-bottom:1px solid rgba(21,63,186,.15);font-size:12px}.meta strong{font:10px var(--mono);letter-spacing:.1em;color:var(--blue)}.feature-screen{align-self:center;background:white;padding:18px;box-shadow:0 24px 60px rgba(19,45,121,.16);transform:rotate(3deg);min-height:400px}.screen-head{font:10px var(--mono);letter-spacing:.16em;color:#777;padding:2px 0 15px}.screen-body{height:330px;background:linear-gradient(155deg,#dfd7ce,#faf8f4 48%,#bac8eb);position:relative;overflow:hidden}.screen-body:before{content:"AI\A VIRTUAL FITTING";white-space:pre;position:absolute;left:24px;bottom:22px;color:#fff;font:28px/1.1 var(--serif)}.screen-card{position:absolute;right:21px;top:21px;width:125px;background:rgba(255,255,255,.89);padding:13px;font-size:11px;line-height:1.7}.screen-card b{display:block;color:var(--blue);font:9px var(--mono);letter-spacing:.1em}.projects{margin-top:58px}.project-row{display:grid;grid-template-columns:90px 1fr 1.6fr auto;gap:25px;align-items:center;padding:28px 0;border-top:1px solid var(--line);transition:.25s}.project-row:last-child{border-bottom:1px solid var(--line)}.project-row:hover{padding-left:12px;background:rgba(21,63,186,.025)}.project-no{font:11px var(--mono);color:var(--blue)}.project-name{font:500 25px var(--serif);letter-spacing:-.04em}.project-text{color:#555;font-size:13px;line-height:1.7}.arrow{font:18px var(--mono);color:var(--blue)}.experiment-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:55px}.experiment{border:1px solid var(--line);padding:28px;min-height:260px;display:flex;flex-direction:column;justify-content:space-between;transition:.25s}.experiment:hover{border-color:var(--blue);transform:translateY(-4px)}.experiment .type{font:10px var(--mono);letter-spacing:.14em;color:var(--blue)}.experiment h3{font:500 28px var(--serif);letter-spacing:-.04em;margin:20px 0 9px}.experiment p{font-size:13px;color:#555;line-height:1.8;margin:0}.experiment a{font:10px var(--mono);letter-spacing:.1em;color:var(--blue)}.now{display:grid;grid-template-columns:1fr 1fr;gap:7vw;align-items:end}.now-list{border-top:1px solid var(--line)}.now-list div{display:flex;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line);font:13px var(--mono);letter-spacing:.05em}.now-list span:last-child{color:var(--blue)}.contact{text-align:center;display:flex;flex-direction:column;align-items:center;padding-top:120px;padding-bottom:0}.contact h2{font:500 clamp(55px,9vw,128px)/1 var(--serif);letter-spacing:.02em;margin:0 0 30px}.contact-links{display:flex;gap:24px;justify-content:center;color:var(--blue);font-size:17px}.contact-note{color:#888;font:10px var(--mono);letter-spacing:.13em;margin-top:28px}.contact .wrap{margin:0 auto}.footer{border-top:1px solid var(--line);padding:23px 4.5vw;display:flex;justify-content:space-between;color:#888;font:9px var(--mono);letter-spacing:.12em}@media(max-width:800px){.nav{height:70px;padding:0 5vw}.brand{font-size:18px}.brand small{display:none}.nav-links{display:none}.nav:after{content:"MENU";font:10px var(--mono);letter-spacing:.14em;color:var(--blue)}.hero{grid-template-columns:1fr;padding:8vh 0 10vh;gap:6vh}.hero-art{height:410px;order:-1}.hero h1{font-size:47px}.section{padding:92px 0}.about-grid,.feature,.now{grid-template-columns:1fr;gap:35px}.feature{min-height:0}.feature-screen{min-height:300px}.project-row{grid-template-columns:48px 1fr auto;gap:12px}.project-text{display:none}.experiment-grid{grid-template-columns:1fr}.contact{padding-top:76px}.contact-links{font-size:14px;gap:15px;justify-content:center}.footer{padding:18px 5vw}.footer span:last-child{display:none}}
/* === 简历向增强（02-EXPERIENCE / HERO 打字 / 身份标签） === */
.caret{display:inline-block;width:1px;height:1.05em;background:var(--blue);margin-left:5px;vertical-align:-2px;animation:blink .95s steps(1) infinite}
@keyframes blink{0%,55%{opacity:1}56%,100%{opacity:0}}
.hero-facts{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 34px}
.hero-facts span{font:10px var(--mono);letter-spacing:.1em;padding:9px 12px;border:1px solid var(--line);color:#555}
.timeline{margin-top:72px;border-top:1px solid var(--line)}
.tl-item{display:grid;grid-template-columns:150px 1fr;gap:7vw;padding:38px 0;border-bottom:1px solid var(--line);align-items:start}
.tl-year{font:500 clamp(30px,3.4vw,46px)/1 var(--serif);letter-spacing:-.04em;color:var(--blue);padding-top:2px}
.tl-body h3{font:500 clamp(21px,2vw,28px)/1.3 var(--serif);letter-spacing:-.03em;margin:0 0 12px}
.tl-body p{color:#555;font-size:14px;line-height:1.9;max-width:580px;margin:0}
.tl-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.tl-tags span{font:10px var(--mono);letter-spacing:.08em;padding:6px 9px;border:1px solid var(--line);color:var(--blue)}
@media(max-width:800px){.tl-item{grid-template-columns:1fr;gap:14px;padding:28px 0}.hero-facts{gap:6px}.hero-facts span{font-size:9px;padding:8px 10px}}
/* === HERO 3D 项目轮播 === */
.carousel{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;perspective:1400px;cursor:grab;z-index:2}
.c-item{position:absolute;width:min(250px,46%);height:min(360px,52%);background:#fff;border:1px solid var(--line);padding:16px;display:flex;flex-direction:column;gap:12px;transform-style:preserve-3d;transition:transform .75s cubic-bezier(.2,.7,.2,1),opacity .55s;opacity:.3;box-shadow:0 22px 55px rgba(25,43,90,.12);backface-visibility:hidden}
.c-item.is-on{opacity:1;box-shadow:0 30px 80px rgba(21,63,186,.22);border-color:rgba(21,63,186,.4)}
.c-visual{flex:1;position:relative;overflow:hidden;min-height:120px;display:flex;align-items:flex-end}
.yishan-mini{background:linear-gradient(150deg,#ede8df,#b7a99b)}
.yishan-mini:after{content:"";position:absolute;left:50%;top:16%;width:44%;height:56%;background:#1d2633;clip-path:polygon(22% 0,38% 12%,62% 12%,78% 0,100% 23%,77% 41%,70% 100%,30% 100%,23% 41%,0 23%);transform:translateX(-50%)}
.yishan-mini span{position:relative;z-index:2;padding:10px 14px;font:26px var(--serif);color:#fff;letter-spacing:-.05em}
.mindmap-mini{background:#0f172f}
.mindmap-mini .mn{position:absolute;width:34px;height:26px;border:1px solid rgba(168,196,255,.8);background:rgba(20,44,103,.56)}
.mindmap-mini .a{left:12%;top:22%}
.mindmap-mini .b{right:12%;top:26%}
.mindmap-mini .c{left:16%;bottom:22%}
.mindmap-mini .d{right:16%;bottom:18%}
.mindmap-mini b{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;color:var(--blue);font:9px var(--mono);letter-spacing:.06em;padding:11px 9px;border-radius:50%}
.studio-mini{background:linear-gradient(140deg,#dbe4ff,#eef2fc)}
.studio-mini span{position:relative;z-index:2;padding:10px 14px;font:26px var(--serif);color:var(--blue);letter-spacing:-.05em}
.c-item h4{font:500 20px var(--serif);margin:0;letter-spacing:-.02em}
.c-item p{font:10px var(--mono);letter-spacing:.08em;color:var(--blue);margin:0}
.carousel-hint{position:absolute;bottom:6%;left:50%;transform:translateX(-50%);font:9px var(--mono);letter-spacing:.18em;color:#999;z-index:6}
@media(max-width:800px){.c-item{width:min(220px,54%);height:270px}.carousel-hint{display:none}}
/* === 轮播环形：三卡可见 === */
.hero-art{overflow:hidden}
.c-item{width:min(220px,44%);height:min(340px,50%)}
/* === CAPABILITIES 能力板块 === */
.cap-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:60px}
.cap-item{border:1px solid var(--line);padding:26px;display:flex;flex-direction:column;gap:14px;transition:.25s}
.cap-item:hover{border-color:var(--blue);transform:translateY(-3px);box-shadow:0 26px 50px rgba(21,63,186,.18)}
.cap-no{font:10px var(--mono);letter-spacing:.14em;color:var(--blue)}
.cap-item h3{font:500 21px var(--serif);letter-spacing:-.03em;margin:0}
.cap-item p{font-size:13px;color:#555;line-height:1.8;margin:0}
/* === SKILLS & TOOLS === */
.skills{display:grid;grid-template-columns:.9fr 1.1fr;gap:6vw;align-items:start}
.skill-list{border-top:1px solid var(--line)}
.skill-row{display:grid;grid-template-columns:150px 1fr;gap:20px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}
.skill-cat{font:10px var(--mono);letter-spacing:.14em;color:var(--blue)}
.skill-tags{display:flex;flex-wrap:wrap;gap:8px}
.skill-tags span{font:11px var(--sans);color:#333;border:1px solid var(--line);padding:6px 10px;letter-spacing:.02em}.skill-tags a{color:var(--blue)}.skill-tags a:hover{text-decoration:underline}
@media(max-width:800px){.cap-grid{grid-template-columns:1fr 1fr}.skills{grid-template-columns:1fr;gap:32px}.skill-row{grid-template-columns:1fr;gap:10px}.skill-tags span{font-size:10px}}

/* === HERO 标题悬停字距 === */
.hero h1,.section-title{transition:letter-spacing .65s cubic-bezier(.2,.7,.2,1)}
.hero h1:hover,.section-title:hover{letter-spacing:-.015em}
/* === CAPABILITIES 3D 磁吸基础 === */
.cap-item{transform-style:preserve-3d;will-change:transform;transition:transform .18s ease-out,box-shadow .28s ease-out}
/* === 深色模式 === */
body[data-theme="dark"]{--paper:#0f1116;--ink:#e9e7e2;--muted:#8a8d96;--line:#2a2d38;--blue:#6f9dff;--blue-pale:#141a2c;background:var(--paper);color:var(--ink)}
body[data-theme="dark"] .nav{background:rgba(15,17,22,.86)}
body[data-theme="dark"] .nav-links{color:var(--muted)}
body[data-theme="dark"] .contact-link{border-color:var(--line)}
body[data-theme="dark"] .hero p,body[data-theme="dark"] .section-desc,body[data-theme="dark"] .tl-body p,body[data-theme="dark"] .cap-item p,body[data-theme="dark"] .experiment p,body[data-theme="dark"] .project-text,body[data-theme="dark"] .about-detail,body[data-theme="dark"] .contact-note{color:var(--muted)}
body[data-theme="dark"] .hero-facts span,body[data-theme="dark"] .tl-tags span,body[data-theme="dark"] .button.ghost{color:var(--muted)}
body[data-theme="dark"] .skill-tags span{color:var(--ink);background:#161923;border-color:var(--line)}
body[data-theme="dark"] .c-item{background:#161923;box-shadow:0 22px 55px rgba(0,0,0,.5)}
body[data-theme="dark"] .c-item.is-on{box-shadow:0 30px 80px rgba(111,157,255,.18)}
body[data-theme="dark"] .scroll-note,body[data-theme="dark"] .carousel-hint{color:var(--muted)}
body[data-theme="dark"] .footer{background:#0b0d12}
body[data-theme="dark"] .contact-links{color:var(--blue)}
body[data-theme="dark"] .feature{background:rgba(21,63,186,.08)}
body[data-theme="dark"] .feature-screen{background:#161923}
body[data-theme="dark"] .section-mark{color:var(--muted)}
body[data-theme="dark"] .experiment:hover{background:rgba(21,63,186,.05)}
