
:root{--ink:#17211e;--paper:#f4f2eb;--green:#59756a;--lime:#c9dc76;--orange:#e88962;--line:rgba(23,33,30,.14);--white:#fff;--max:1280px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,"Noto Sans SC",sans-serif}a{color:inherit;text-decoration:none}button{font:inherit}.nav{position:fixed;z-index:50;top:0;left:0;right:0;height:72px;padding:0 max(4vw,24px);display:flex;align-items:center;justify-content:space-between;background:rgba(244,242,235,.86);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}.brand{font-weight:800;font-size:28px}.brand span{color:var(--orange)}nav{display:flex;gap:26px;font-size:13px}nav a:hover{color:var(--green)}.menu{display:none;border:0;background:none;font-size:22px}.hero{min-height:100vh;padding:145px max(6vw,28px) 70px;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:5vw;max-width:1500px;margin:auto}.eyebrow,.section-head>p{letter-spacing:.16em;font-size:12px;font-weight:700;color:var(--green)}h1{font-size:clamp(68px,10vw,148px);line-height:.86;margin:18px 0 28px;letter-spacing:-.065em}.hero h2{font-size:clamp(22px,3vw,42px);margin:0}.lead{font-size:18px;color:var(--green)}.intro{max-width:700px;line-height:1.8;margin-bottom:5px}.intro.en{color:#59645f}.actions{display:flex;gap:12px;margin-top:30px}.btn{padding:14px 20px;border:1px solid var(--ink);border-radius:100px;font-size:14px}.btn.primary{background:var(--ink);color:white}.hero-art{position:relative;height:min(65vh,650px);border-radius:42% 42% 20% 20%;overflow:hidden;background:#dfe5dc}.grid{position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:38px 38px}.orb{position:absolute;border-radius:50%;filter:blur(2px)}.orb.one{width:75%;aspect-ratio:1;background:var(--lime);top:2%;left:20%}.orb.two{width:65%;aspect-ratio:1;background:var(--orange);bottom:-15%;left:-12%;mix-blend-mode:multiply}.hero-art span{position:relative;z-index:2;display:block;font-size:clamp(36px,6vw,90px);font-weight:800;line-height:1.05;margin:7% 8%;color:rgba(255,255,255,.72)}.section{max-width:var(--max);margin:auto;padding:120px max(4vw,24px)}.section-head{display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:22px;margin-bottom:40px}.section-head h2{font-size:clamp(34px,4.5vw,64px);margin:0;letter-spacing:-.04em}.section-head h2 span{display:block;font-size:17px;color:var(--green);letter-spacing:0;margin-top:8px}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.panel{background:rgba(255,255,255,.55);padding:34px;border-radius:24px;border:1px solid rgba(255,255,255,.7)}.panel h3{font-size:24px;margin-top:0}.education{display:grid;grid-template-columns:80px 1fr;gap:16px;padding:22px 0;border-top:1px solid var(--line)}.education span{color:var(--orange);font-weight:700}.education p{margin:7px 0}.education small,.media-card small{color:#64706a;line-height:1.6}.skill{padding:17px 0;border-top:1px solid var(--line)}.skill p{color:#59645f;line-height:1.7}.hint{color:#64706a}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}.project-card{position:relative;min-height:460px;border-radius:24px;overflow:hidden;background:#d9dfd7;cursor:pointer}.project-card img{width:100%;height:100%;position:absolute;object-fit:cover;transition:transform .7s}.project-card:hover img{transform:scale(1.045)}.project-card:after{content:"";position:absolute;inset:35% 0 0;background:linear-gradient(transparent,rgba(15,25,21,.9))}.card-copy{position:absolute;z-index:2;bottom:0;padding:28px;color:white}.card-copy span{font-size:12px;letter-spacing:.1em}.card-copy h3{font-size:28px;margin:8px 0}.no-cover{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(135deg,#789287,#c9dc76);font-size:72px;font-weight:800;color:rgba(255,255,255,.7)}.media-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.media-card{border-top:3px solid var(--ink);padding:28px 4px;min-height:260px}.media-card .number{font-size:12px;color:var(--orange)}.media-card h3{font-size:28px}.media-card p{line-height:1.8}.award-block{margin-top:50px;background:var(--ink);color:white;border-radius:28px;padding:34px;display:grid;grid-template-columns:.7fr 1.3fr;gap:30px;align-items:center}.award-block h3{font-size:34px;margin-bottom:5px}.award-block h4{color:var(--lime)}.video-area video{width:100%;border-radius:16px;max-height:520px}.placeholder{aspect-ratio:16/9;border:1px dashed rgba(255,255,255,.35);border-radius:16px;display:grid;place-items:center;text-align:center;color:#aab5af}.masonry{columns:3 280px;column-gap:16px}.photo{break-inside:avoid;margin:0 0 16px;border-radius:16px;overflow:hidden;cursor:zoom-in}.photo img{width:100%;display:block;transition:transform .5s}.photo:hover img{transform:scale(1.03)}footer{max-width:var(--max);margin:auto;padding:50px max(4vw,24px);border-top:1px solid var(--line);display:flex;justify-content:space-between}.modal,.lightbox{padding:0;border:0;background:#f7f5ef;color:var(--ink);width:min(1200px,96vw);height:94vh;border-radius:24px}.modal::backdrop,.lightbox::backdrop{background:rgba(9,15,13,.82);backdrop-filter:blur(8px)}.close{position:fixed;z-index:9;right:3vw;top:3vh;width:46px;height:46px;border:0;border-radius:50%;background:white;font-size:28px;cursor:pointer}.modal-top{padding:65px 6vw 30px}.modal-top h2{font-size:clamp(34px,5vw,66px);margin:10px 0}.modal-top p{color:var(--green)}.gallery{padding:0 4vw 80px;display:grid;gap:20px}.gallery img{width:100%;border-radius:12px;cursor:zoom-in}.file-link{display:block;padding:20px;border:1px solid var(--line);border-radius:12px}.lightbox{background:#0d1210;width:100vw;height:100vh;max-width:none;max-height:none;border-radius:0}.lightbox img{width:100%;height:100%;object-fit:contain}.arrow{position:fixed;z-index:8;top:50%;width:52px;height:52px;border:0;border-radius:50%;font-size:34px;background:rgba(255,255,255,.8)}.arrow.left{left:2vw}.arrow.right{right:2vw}.reveal{opacity:0;transform:translateY(24px);transition:.8s}.reveal.visible{opacity:1;transform:none}
@media(max-width:800px){nav{display:none;position:absolute;top:72px;left:0;right:0;background:var(--paper);padding:22px;flex-direction:column}nav.open{display:flex}.menu{display:block}.hero{grid-template-columns:1fr;padding-top:120px}.hero-art{height:420px}.about-grid,.project-grid,.media-grid,.award-block{grid-template-columns:1fr}.section{padding-top:85px}.section-head{display:block}.project-card{min-height:380px}.education{grid-template-columns:60px 1fr}footer{display:block}}

/* Updated project covers and descriptions */
.project-card{min-height:0;aspect-ratio:3/2}.project-card img{inset:0}.project-description{max-width:850px;margin-top:28px;padding-top:24px;border-top:1px solid var(--line)}.project-description p{font-size:16px;line-height:1.85;color:#3f4c46}.project-description p:last-child{color:#6a746f}.xhs-card{display:grid;grid-template-columns:1fr minmax(170px,.65fr);gap:24px;align-items:center}.xhs-image img{display:block;width:100%;max-height:300px;object-fit:cover;border-radius:18px}.card-copy p{margin:6px 0 0}.media-card.xhs-card{padding-right:0}@media(max-width:800px){.project-card{aspect-ratio:3/2;min-height:0}.xhs-card{grid-template-columns:1fr}.xhs-image img{max-height:none}}

/* V3: compact covers with descriptions on the projects page */
.project-grid{max-width:1120px;margin:36px auto 0;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}
.project-card{display:block;aspect-ratio:auto;min-height:0;background:rgba(255,255,255,.63);border:1px solid rgba(23,33,30,.1);border-radius:22px;overflow:hidden;box-shadow:0 10px 35px rgba(23,33,30,.06);transition:transform .35s,box-shadow .35s}
.project-card:hover{transform:translateY(-5px);box-shadow:0 18px 45px rgba(23,33,30,.12)}
.project-card:after{display:none}
.project-cover{position:relative;width:100%;aspect-ratio:3/2;max-height:310px;overflow:hidden;background:linear-gradient(135deg,#d7ded7,#aab8af)}
.project-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s}
.project-card:hover .project-cover img{transform:scale(1.025)}
.project-cover.image-error:after{content:'封面图片未载入，请重新双击 run.bat';position:absolute;inset:0;display:grid;place-items:center;padding:30px;text-align:center;color:#4e5d56}
.project-cover.image-error img{display:none}
.project-card .no-cover{position:absolute;inset:0}
.project-card .card-copy{position:static;color:var(--ink);padding:24px 25px 26px}
.project-card .card-copy span{color:var(--green);font-weight:700}
.project-card .card-copy h3{font-size:23px;line-height:1.35;margin:10px 0 6px}
.project-en{color:#68756f;font-size:14px;line-height:1.5;margin:0 0 16px!important}
.project-summary{font-size:14px;line-height:1.8;color:#36433d;margin:0!important}
.view-more{margin:18px 0 0!important;font-size:13px;font-weight:700;color:var(--orange)}
@media(max-width:800px){.project-grid{grid-template-columns:1fr}.project-cover{max-height:none}.project-card{aspect-ratio:auto}}
