/* One visual language: calligraphic space, glass, ink and light. */
:root{--paper:#f7f8f3;--ink:#213d39;--muted:#546b65;--line:#cbd7cf;--green:#286e65;--accent:#784f83;--electric:#47cbbb;--violet:#b776b4;--wash:#edf2eb}
a:hover{color:var(--accent)}a:focus-visible{outline-color:var(--accent)}
.site-header{border-bottom-color:#ccd7cf}.site-header nav a{position:relative}.site-header nav a:hover,.site-header nav a[aria-current]{color:var(--accent)}
.site-header nav a:after{content:'';position:absolute;bottom:-7px;left:0;right:0;height:1px;background:linear-gradient(90deg,#3a9f8e,#a669ae);transform:scaleX(0);transform-origin:left;transition:transform .2s}.site-header nav a:hover:after,.site-header nav a[aria-current]:after{transform:scaleX(1)}
.home-hero{isolation:isolate;min-height:550px;background:var(--paper)}
.home-hero .ink-scene{inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%;opacity:1;z-index:0}
.home-hero:after{content:'';position:absolute;inset:auto 0 0;height:65px;pointer-events:none;background:linear-gradient(transparent,var(--paper));z-index:0}
.hero-inner{min-height:550px;padding:64px 0 95px;position:relative;z-index:1}
.hero-copy{max-width:620px}.hero-copy h1{font:clamp(48px,5vw,72px)/1.1 var(--serif);letter-spacing:-2.5px;margin:24px 0}
.hero-copy h1 em{color:var(--green);background:none;-webkit-text-fill-color:initial;text-shadow:none}
.hero-copy p{font-size:16px;line-height:1.8;max-width:450px}.hero-copy .eyebrow{color:var(--muted);font-size:10px;letter-spacing:1.5px}.hero-copy .text-link{margin-top:26px;border-image:linear-gradient(90deg,#379780,#ac78b2) 1}
.hero-note{bottom:18px;font-size:9px;letter-spacing:1.4px;color:var(--muted)}
.work-shell{background:var(--paper);position:relative}.work-index{padding:24px 0 62px}
.sectionbar{border-bottom-color:#becfc5}.sectionbar h2{font-family:'Courier New',monospace;font-size:12px;letter-spacing:1.6px}.sectionbar>span{color:var(--muted)}
.collections{gap:30px}.collection,.collection+.collection{padding:30px 20px 23px 0;border-left:0;border-bottom:1px solid var(--line);background:transparent;transition:border-color .25s,background .25s}
.collection+.collection{padding-left:0}.collection .index{font:11px/1.6 'Courier New',monospace;letter-spacing:1.5px;color:#65786d}
.collection h3{font:43px/1.09 var(--serif);letter-spacing:-1.2px;color:var(--ink);margin:22px 0 18px}.collection h3 em{color:var(--green);font-style:italic;text-shadow:none}
.collection:nth-child(2) h3 em{color:#5b6487}.collection:nth-child(3) h3 em{color:#796085}
.collection p{font-size:14px;color:var(--muted)}.collection-bottom{color:var(--muted);font-size:11px;margin-top:30px}.collection-bottom>span:last-child{color:#528f84;transition:transform .2s}
.collection:hover{background:#ecf2ec80;color:var(--ink);border-bottom-color:#69b9aa}.collection:nth-child(2):hover,.collection:nth-child(3):hover{border-bottom-color:#b88db7}.collection:hover .collection-bottom>span:last-child{transform:translate(3px,-3px);color:var(--accent)}
.about{border-top:0;padding-top:32px;padding-bottom:80px}.about h2 em{color:var(--green)}.contacts a{border-bottom:1px solid #acbfb2;text-decoration:none}.contacts a:hover{border-color:var(--accent)}
.collection-head>.eyebrow,.case-head>.eyebrow{color:#677365}.card-copy h2 a span,.report-copy h2 span,.level-copy h2 span{color:var(--accent)}.card-copy h2 a:hover{color:var(--accent)}
.project-card{transition:border-color .2s}.project-card:hover{border-bottom-color:#9463aa}.card-image{border-top:1px solid #8db8a6}.project-card:nth-child(2) .card-image{border-top-color:#b8a8bd}.collection-note>.eyebrow{color:var(--accent)}
.report-graphic{background:#e8eee6;color:var(--ink);border-top:1px solid #63a898;border-bottom:1px solid #bd9fbf}.report-graphic .eyebrow{color:var(--muted)}.resource-type em{color:var(--green);text-shadow:none}.graphic-rule{color:#7c6080;border-color:var(--line)}
.tags span{border-color:#c9d3ca}.tags span:nth-child(2){color:#705d78;border-color:#d0c3d5}.level-image{border-bottom:1px solid #ad9eb3}
.project-status .current{color:var(--accent);border-color:var(--accent)}.contents a>span{color:var(--accent)}.contents a:hover{color:var(--accent)}.article blockquote{border-image:linear-gradient(#369f90,#a468b7) 1}.article .eyebrow{color:#65756a}.resource-grid{border-top:2px solid #78a995}.route-flow li>span{color:var(--accent)}.text-link:hover{border-color:var(--accent)}
@media(min-width:1600px){.home-hero,.hero-inner{min-height:600px}.hero-inner{padding-top:80px}}
@media(max-width:1050px) and (min-width:761px){.hero-copy{max-width:55%}.hero-copy h1{font-size:52px}.hero-copy p{font-size:15px}.hero-copy .eyebrow{font-size:9px;letter-spacing:1px}.desktop-break{display:none}.collection h3{font-size:37px}.collections{gap:22px}.collection,.collection+.collection{padding-right:8px}}
@media(max-width:760px){.home-hero,.hero-inner{min-height:600px}.hero-inner{padding-top:36px;padding-bottom:250px}.hero-copy{max-width:100%}.hero-copy h1{font-size:48px;letter-spacing:-2px;margin:20px 0}.hero-copy p{font-size:14px;max-width:340px}.hero-copy .eyebrow{font-size:9px;letter-spacing:1px}.home-hero .ink-scene{object-position:68% bottom;object-fit:cover}.home-hero:before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#f7f8f3f0 0%,#f7f8f3e6 36%,#f7f8f370 54%,transparent 72%);pointer-events:none}.hero-inner{z-index:2}.hero-note{bottom:13px;font-size:8px;background:#f7f8f3d9;padding:3px 6px}.hero-copy .text-link{margin-top:22px}.work-index{padding:20px 0 38px}.collections{gap:0}.collection,.collection+.collection{padding:24px 0}.collection h3{font-size:35px;margin:16px 0 0}.collection p{font-size:13px}.collection-bottom{margin-top:16px;font-size:11px}.sectionbar h2{font-size:10px}.about{padding-top:10px;padding-bottom:55px}.site-header nav a:after{bottom:-5px}}
@media(prefers-reduced-motion:reduce){.collection:hover .collection-bottom>span:last-child{transform:none}}
/* Project surfaces inherit the installation's translucent planes and fine light edges. */
.home-hero,.hero-inner{min-height:515px}.hero-inner{padding-top:53px}.home-hero:after{height:30px}
.collections{gap:23px;padding-top:27px}
.collection,.collection+.collection{display:flex;flex-direction:column;position:relative;padding:22px 22px 19px;border:1px solid #c7d4cb;border-top-color:#a2c2b4;background:linear-gradient(140deg,#ffffffb8,#f0f4ed85);box-shadow:inset 1px 1px 0 #fff,4px 5px 0 -1px #edf1e9,4px 5px 0 0 #d6dfd4;backdrop-filter:blur(7px);transition:transform .2s,border-color .2s,box-shadow .2s}
.collection:before{content:'';height:2px;position:absolute;left:22px;right:55%;top:-1px;background:linear-gradient(90deg,#41bca7,#afd9ca);box-shadow:0 0 7px #6bddc32e}
.collection:nth-child(2):before{background:linear-gradient(90deg,#689aaa,#b69ac0)}.collection:nth-child(3):before{background:linear-gradient(90deg,#b97caf,#c3c4cb)}
.collection .index{font-size:10px;letter-spacing:1.25px;color:#50665d}
.collection-visual{height:162px;margin-top:20px;border:1px solid #c8d4cb;overflow:hidden;background:#eaf0e8;position:relative;flex-shrink:0}
.design-preview{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#c6d6cc;border-color:#c6d6cc}
.mini-study{display:flex;flex-direction:column;justify-content:center;gap:20px;padding:13px 8px;background:#f5f7f0}.mini-study img{width:100%;height:74px;object-fit:contain}.mini-study>span{font:8px/1.5 'Courier New',monospace;text-align:center;letter-spacing:.4px;color:#4f6e62}
.systems-preview{padding:15px 17px;background:#eef3ed}.preview-label{display:block;font:8px/1.4 'Courier New',monospace;letter-spacing:.3px;color:#596f64;margin-bottom:11px}
.systems-preview>div{display:grid;grid-template-columns:1fr 25px 1.4fr;gap:7px;align-items:center;font-size:12px;line-height:1.5;padding:5px 0;border-top:1px solid #d2ddd3}.systems-preview>div>span:nth-child(2){color:#65a795}.systems-preview>div>span:last-child{font-family:var(--serif);font-style:italic;font-size:15px;color:#3c6e63}
.level-preview>img{height:100%;width:100%;object-fit:cover;object-position:50% 51%}.preview-caption{position:absolute;bottom:0;left:0;right:0;font:8px/1.4 'Courier New',monospace;letter-spacing:.7px;padding:8px 10px;color:#e4f8ef;background:#132e39de}
.collection h3{font-size:36px;line-height:1.08;margin:23px 0 16px;letter-spacing:-.7px}.collection p{font-size:13px;line-height:1.8}.collection-bottom{margin-top:auto;padding-top:23px;gap:9px;font-size:10px}.collection-bottom>span:last-child{font-size:23px}
.collection:hover{transform:translateY(-3px);background:linear-gradient(140deg,#ffffffdf,#eff6eecc);border-color:#93bca8;box-shadow:inset 1px 1px 0 #fff,4px 7px 0 -1px #edf1e9,4px 7px 0 0 #c8dad0}.collection:focus-visible{outline-offset:8px}.collection:nth-child(2):hover,.collection:nth-child(3):hover{border-color:#b8a3bd}
.project-card{border:1px solid #ccd8cf;background:#ffffff70;box-shadow:3px 4px 0 0 #e4ebe1}.card-copy{padding:22px 25px 27px}.card-image{border-top:0;border-bottom:1px solid #c1d5ca}.project-card:nth-child(2) .card-image{border-bottom-color:#c4b5c8}.report-feature,.level-feature{border:1px solid #c7d5ca;background:#ffffff65;padding:24px;gap:35px;box-shadow:4px 5px 0 0 #e5ece2}.report-graphic{border:1px solid #bfd1c3;background:linear-gradient(145deg,#f1f5ee,#e4ece2);box-shadow:inset 1px 1px 0 #fff}.level-image{border:1px solid #c3d4c8}.report-copy,.level-copy{padding-right:12px}.study-facts,.source-note{border:1px solid #cad9cb;background:linear-gradient(135deg,#f3f6ef,#eaf0e7);box-shadow:inset 1px 1px 0 #fff}.resource-grid{box-shadow:3px 4px 0 0 #e8eee4;background:#ffffff40}
@media(min-width:1600px){.home-hero,.hero-inner{min-height:555px}.hero-inner{padding-top:65px}}
@media(max-width:1050px) and (min-width:761px){.collections{gap:17px}.collection,.collection+.collection{padding:18px 15px}.collection h3{font-size:32px}.collection-visual{height:150px}.systems-preview{padding:12px}.systems-preview>div{font-size:11px;grid-template-columns:1fr 17px 1.4fr;gap:3px}.systems-preview>div>span:last-child{font-size:14px}.mini-study>span{font-size:7px}.collection-bottom{font-size:9px}.collection p{font-size:12px}.report-feature,.level-feature{gap:25px;padding:20px}.card-copy{padding:20px}}
@media(max-width:760px){.home-hero,.hero-inner{min-height:550px}.hero-inner{padding-top:32px;padding-bottom:225px}.home-hero:before{background:linear-gradient(180deg,#f7f8f3f5,#f7f8f3e0 38%,#f7f8f350 55%,transparent 70%)}.collections{gap:22px;padding-top:23px}.collection,.collection+.collection{display:grid;grid-template-columns:1fr 1.1fr;column-gap:16px;padding:19px;border:1px solid #c7d4cb}.collection .index{grid-column:1/-1}.collection-visual{grid-column:1/-1;height:180px;margin-top:17px}.collection h3{font-size:32px;margin:20px 0 0}.collection p{font-size:12px;margin-top:18px}.collection-bottom{grid-column:1/-1;padding-top:20px;margin:0;font-size:10px}.mini-study img{height:88px}.mini-study>span{font-size:9px}.systems-preview{padding:17px 20px}.preview-label{font-size:9px;margin-bottom:12px}.systems-preview>div{font-size:13px;padding:6px 0}.systems-preview>div>span:last-child{font-size:17px}.report-feature,.level-feature{padding:18px;gap:25px}.report-copy,.level-copy{padding-right:0}.card-copy{padding:20px}.collection:hover{transform:none}.work-index{padding-bottom:46px}}
@media(prefers-reduced-motion:reduce){.collection:hover{transform:none}}

/* Resume actions in the personal introduction. */
.resume-links{display:flex;align-items:center;flex-wrap:wrap;gap:16px 28px;margin-top:28px;padding-top:22px;border-top:1px solid var(--line);font-size:13px}.resume-links a,.resume-links .text-link{display:inline-flex;align-items:baseline;gap:6px;font:inherit;line-height:1.7;margin:0;padding:0 0 6px;border:0;border-bottom:1px solid var(--green);text-decoration:none;vertical-align:baseline}.resume-links+.contacts{margin-top:18px;flex-wrap:wrap}

/* A compact language choice, shared by every page. */
.site-header>nav{margin-left:auto}.language-switch{display:flex;align-items:center;gap:9px;flex-shrink:0;font:13px/1.5 var(--sans);white-space:nowrap}.language-switch a{text-decoration:none;padding:5px 0;color:var(--muted)}.language-switch a[aria-current=true]{color:var(--ink);border-bottom:1px solid var(--green)}.language-switch>span{color:var(--line)}
html[lang=zh-CN]{--sans:'Microsoft YaHei','微软雅黑','Microsoft YaHei UI','PingFang SC',sans-serif;--serif:var(--sans)}html[lang=zh-CN] .hero-copy h1{font-size:clamp(38px,4.5vw,64px);line-height:1.35;letter-spacing:0}html[lang=zh-CN] .collection h3{line-height:1.25;letter-spacing:0}html[lang=zh-CN] .eyebrow{letter-spacing:.1em}
@media(max-width:1050px) and (min-width:761px){.site-header{flex-wrap:wrap;gap:18px}.site-header>nav{order:3;width:100%;justify-content:flex-end}.language-switch{margin-left:auto}}
@media(max-width:760px){.site-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 14px}.site-header>.brand{grid-column:1;grid-row:1}.site-header>.language-switch{grid-column:2;grid-row:1}.site-header>nav{grid-column:1/-1;grid-row:2;margin:0}.language-switch{font-size:13px}html[lang=zh-CN] .hero-copy h1{font-size:38px}html[lang=zh-CN] .hero-copy p{line-height:1.9}}

/* Keep all Chinese interface typography consistent, including editorial headings. */
html[lang=zh-CN] body,html[lang=zh-CN] h1,html[lang=zh-CN] h2,html[lang=zh-CN] h3,html[lang=zh-CN] h4,html[lang=zh-CN] p,html[lang=zh-CN] a,html[lang=zh-CN] span,html[lang=zh-CN] em,html[lang=zh-CN] small,html[lang=zh-CN] button,html[lang=zh-CN] input,html[lang=zh-CN] textarea,html[lang=zh-CN] select{font-family:var(--sans)}
html[lang=zh-CN] em{font-style:normal}

/* Diagrams carry information all the way to their edges. Never crop or zoom them. */
.diagram-card .card-image{padding:18px;background:#f2f5ee}
.diagram-card .card-image img{object-fit:contain;object-position:center;transform:none}
.project-card.diagram-card:hover .card-image img{transform:none}
/* Owner-set text dimensions stay inside their column and expand for long copy. */
.cms-text-box{box-sizing:border-box;max-width:100%;min-width:0;overflow-wrap:anywhere;height:auto}
:is(a,span,small).cms-text-box{display:inline-block}
@media(max-width:760px){.diagram-card .card-image{padding:12px}}
