:root{--page:#f4f1ea;--card:#fffdf9;--ink:#253342;--muted:#78818a;--navy:#1d3044;--gold:#aa8951;--line:#e9e3d7;--soft:#f8f5ef;--serif:"Songti SC","STSong","Noto Serif CJK SC","Noto Serif SC",Georgia,serif;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--page);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}button{font:inherit}a{color:inherit}button:focus-visible,a:focus-visible,[role="button"]:focus-visible{outline:3px solid #b89456;outline-offset:4px}.skip-link{position:absolute;left:16px;top:-60px;padding:10px;background:white;z-index:10}.skip-link:focus{top:12px}
.hero{background:var(--navy);color:#f9f5ec;overflow:hidden}.hero-inner,.site-main,.footer{max-width:1160px;margin:auto;padding-left:24px;padding-right:24px}.hero-topline,.hero-bottom{display:flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.14em;color:#d4c8ad}.hero-topline{padding-top:27px}.brand-mark{color:#e7d3a5;font-size:25px;line-height:1;letter-spacing:0}.hero-index{margin-left:auto}.hero-content{position:relative;min-height:350px;display:flex;align-items:center}.hero-copy{position:relative;z-index:1;padding:40px 0 55px}.eyebrow{margin:0 0 14px;color:var(--gold);font-size:11px;font-weight:700;letter-spacing:.2em}.hero .eyebrow{color:#dcc18c}h1,h2,h3,p{margin-top:0}h1{font:500 clamp(35px,4.7vw,61px)/1.27 var(--serif);letter-spacing:.02em;margin-bottom:25px}h1 em{display:block;font:400 clamp(22px,2.7vw,34px)/1.5 Georgia,serif;letter-spacing:.025em;color:#e6d6b2}.hero-lead{font:400 clamp(19px,2.3vw,27px)/1.6 var(--serif);margin-bottom:15px}.hero-description{font-size:13px;line-height:1.8;color:#c8d0d3;margin-bottom:0}.moon-art{position:absolute;right:4%;top:12%;width:330px;height:330px}.moon{position:absolute;right:60px;top:15px;width:225px;height:225px;border-radius:50%;background:radial-gradient(circle at 35% 31%,#fff8e9,#eeddbb 54%,#cbaa75 100%);box-shadow:0 0 85px #d8bd8333,0 0 160px #d8bd8326}.moon:after{content:"";position:absolute;inset:18px;border:1px solid #f8f1e483;border-radius:50%}.moon-line{position:absolute;left:0;right:0;bottom:50px;height:110px;border:1px solid #b6bdba42;border-radius:50%;transform:rotate(-14deg)}.moon-line-two{bottom:28px;transform:rotate(9deg);border-color:#b6bdba24}.moon-caption{position:absolute;bottom:0;right:12px;color:#b6c2c6;font:12px var(--serif);letter-spacing:.3em;writing-mode:vertical-rl}.hero-bottom{justify-content:space-between;border-top:1px solid #ffffff22;padding:18px 0 23px}.explore-link{text-decoration:none;color:#f3e7ce;letter-spacing:.08em}.explore-link span{margin-left:8px}
.site-main{padding-top:76px;padding-bottom:78px}.section-header{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:30px}.section-header h2{font:500 clamp(26px,3vw,37px)/1.2 var(--serif);margin:0}.case-count{font:400 13px var(--sans);color:var(--gold);vertical-align:top;margin-left:6px}.section-header>p{font-size:12px;color:var(--muted);margin:0 0 4px}.filters{display:flex;gap:9px;overflow-x:auto;border-bottom:1px solid #ded7ca;padding-bottom:17px;margin-bottom:26px}.filter{background:transparent;border:1px solid transparent;border-radius:99px;padding:9px 17px;color:#617080;white-space:nowrap;cursor:pointer;font-size:13px;transition:.2s}.filter span{font-size:10px;margin-left:6px;opacity:.65}.filter:hover{color:var(--navy);background:#ffffffa0}.filter.active{background:var(--navy);color:#fff}.gallery-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.case-card{min-width:0;border:1px solid #e9e4da;background:var(--card);box-shadow:0 7px 27px #29343c08;border-radius:20px;padding:23px;display:flex;flex-direction:column}.case-card.featured{grid-column:1/-1;padding:28px}.case-heading{display:flex;align-items:center;gap:14px;margin-bottom:20px}.case-number{font:italic 30px Georgia,serif;color:var(--gold);line-height:1}.case-heading h3{font:500 20px/1.3 var(--serif);margin:0}.case-heading .cat-name{font-size:11px;letter-spacing:.12em;color:var(--muted);margin-bottom:5px}.featured .case-heading h3{font-size:27px}.feature-badge{margin-left:auto;font-size:10px;letter-spacing:.12em;color:var(--gold);border:1px solid #d8c6a5;padding:7px 10px;border-radius:30px}.before-after{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;gap:12px;position:relative}.featured .before-after{gap:19px}.image-box{position:relative;min-width:0;aspect-ratio:4/3;border:0;border-radius:12px;overflow:hidden;background:#eeebe4;cursor:zoom-in;padding:0;text-align:left}.featured .image-box{aspect-ratio:1.52}.image-box img{width:100%;height:100%;object-fit:contain;display:block}.image-box .image-label{position:absolute;left:12px;top:12px;background:#fffdf9eb;border:1px solid #ffffffaa;color:var(--navy);border-radius:30px;padding:6px 11px;font-size:11px;z-index:2;box-shadow:0 2px 8px #0000000c}.after .image-label{background:#203449e8;color:white;border-color:#ffffff33}.image-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:9px;color:#888b88;background:linear-gradient(145deg,#f0eee8,#e9e6dd);padding:18px;font-size:12px;line-height:1.5}.after .image-placeholder{background:linear-gradient(145deg,#e5e8e7,#dce2e1);color:#697881}.image-placeholder .placeholder-icon{font:31px var(--serif);color:#aab0a9}.after .image-placeholder .placeholder-icon{color:#8c9e9f}.image-placeholder small{font-size:10px;color:#999;overflow-wrap:anywhere}.image-box.has-image .image-placeholder{display:none}.image-box:not(.has-image){cursor:default}.transition-arrow{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--card);border:1px solid var(--line);box-shadow:0 3px 12px #00000017;border-radius:50%;width:37px;height:37px;display:grid;place-items:center;z-index:2;color:var(--gold);font-size:18px;pointer-events:none}
.prompt-section{margin-top:22px;border-top:1px solid var(--line);padding-top:18px}.prompt-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.prompt-top h4{font-size:13px;letter-spacing:.035em;font-weight:600;margin:0}.copy-btn{background:#f6efe2;color:#896b37;border:1px solid #e7d7b8;border-radius:8px;padding:8px 12px;font-size:12px;cursor:pointer;white-space:nowrap;transition:.2s}.copy-btn:hover{background:#ecdfc9}.copy-btn:disabled{opacity:.6;cursor:wait}.prompt-text{position:relative;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;background:var(--soft);color:#5d6670;border:1px solid #f0ebe2;border-radius:10px;padding:15px 16px;margin:0;font-size:12px;max-height:9.2em;overflow:hidden}.prompt-text:not(.expanded):after{content:"";position:absolute;bottom:0;left:0;right:0;height:2em;background:linear-gradient(transparent,var(--soft))}.prompt-text.expanded{max-height:none}.expand-btn{border:0;background:none;color:#977746;padding:11px 1px 0;font-size:12px;cursor:pointer}.expand-btn:hover{text-decoration:underline}.gallery-note{color:var(--muted);font-size:12px;text-align:center;margin:34px 0 0}.footer{display:flex;justify-content:space-between;padding-top:21px;padding-bottom:32px;border-top:1px solid #ded7ca;color:#7d837e;font-size:11px}.footer a{text-decoration:none}.footer a:hover{text-decoration:underline}
.image-dialog{width:min(96vw,1100px);max-height:94vh;background:#182838;color:#fff;border:1px solid #51616e;border-radius:15px;padding:12px;box-shadow:0 20px 80px #0008}.image-dialog::backdrop{background:#101b29df;backdrop-filter:blur(4px)}.dialog-bar{display:flex;justify-content:space-between;align-items:center;padding:3px 4px 12px;font-size:13px;gap:15px}.dialog-bar button{background:transparent;color:#fff;border:1px solid #c4cdd055;padding:7px 12px;border-radius:7px;cursor:pointer}.image-dialog img{display:block;max-width:100%;max-height:calc(94vh - 82px);margin:auto;object-fit:contain;border-radius:6px}
@media(max-width:760px){.hero-inner,.site-main,.footer{padding-left:16px;padding-right:16px}.hero-topline{padding-top:20px;font-size:9px}.hero-index{display:none}.hero-content{min-height:380px;align-items:flex-start}.hero-copy{padding:72px 0 45px}.hero-description{max-width:275px}.moon-art{width:215px;height:215px;right:-66px;top:24px;opacity:.5}.moon{width:180px;height:180px;right:10px}.moon-caption,.moon-line{display:none}.hero-bottom{font-size:10px}.site-main{padding-top:49px;padding-bottom:55px}.section-header{align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:22px}.gallery-list{grid-template-columns:1fr;gap:16px}.case-card,.case-card.featured{padding:17px;border-radius:17px}.featured .case-heading h3{font-size:21px}.feature-badge{font-size:9px}.before-after,.featured .before-after{grid-template-columns:1fr;gap:12px}.image-box,.featured .image-box{aspect-ratio:4/3}.transition-arrow{top:50%;left:50%;transform:translate(-50%,-50%) rotate(90deg)}.prompt-section{margin-top:19px}.footer{gap:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* 图片加载时只显示转圈图标，不向页面展示内部文件路径。 */
.image-box:not(.has-image) img{visibility:hidden}
.loading-spinner{display:block;width:32px;height:32px;border:3px solid #d7d1c5;border-top-color:var(--gold);border-radius:50%;animation:image-spin .8s linear infinite}
.image-error .loading-spinner{animation:none;border-style:dashed;border-top-color:#9a978d}
@keyframes image-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.loading-spinner{animation:none}}
/* 公众号与备案信息居中展示，页脚不放制作署名。 */
.footer{flex-direction:column;align-items:center;gap:14px;text-align:center}
.footer-meta p{margin:0 0 7px;font-size:12px;line-height:1.5;letter-spacing:.05em}
.footer-meta p:last-child{margin-bottom:0}

.how-to{display:flex;gap:12px;align-items:baseline;margin:0 0 27px;padding:15px 18px;border-left:2px solid #b99a63;border-radius:0 10px 10px 0;background:#ebe7de;color:var(--ink);font:500 13px/1.7 var(--serif)}.how-to span{font:400 12px/1.7 var(--sans);color:#67727b}@media(max-width:760px){.how-to{display:block;padding:13px 15px}.how-to span{display:block;margin-top:4px}}

/* 合照铺满首屏，文字置于画面上；渐变只服务于可读性。 */
.hero{position:relative;isolation:isolate}
.hero-background{position:absolute;z-index:-2;top:0;right:0;width:65%;height:100%;object-fit:cover;object-position:center 47%}
.hero:after{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#1d3044 22%,#1d3044e8 40%,#1d304460 69%,#1d304414 100%),linear-gradient(0deg,#1d3044a8,transparent 24%);pointer-events:none}
.hero-inner{position:relative}
.hero-content{min-height:590px;align-items:center}
.hero-copy{max-width:570px;padding:58px 0 65px;text-shadow:0 2px 24px #08182755}
.hero-description{max-width:420px}
.hero-bottom{position:relative}
/* 横版月饼合照在手机上完整呈现，背后仍由同一张照片填满首屏。 */
.hero.mooncake-hero .hero-background{width:73%;object-position:center 49%}
.hero.mooncake-hero:after{background:linear-gradient(90deg,#1d3044 10%,#1d3044e8 35%,#1d304464 67%,#1d304410 100%),linear-gradient(0deg,#1d3044a8,transparent 25%)}
.hero.mooncake-hero h1{font-size:clamp(32px,4vw,46px)}
@media(max-width:760px){
 .hero-background{width:100%;height:100%;object-position:center 49%}
 .hero:after{background:linear-gradient(180deg,#182b3cf2 0%,#182b3cdb 18%,#182b3cb5 34%,#182b3c22 57%,#182b3c12 73%,#182b3ce8 100%)}
 .hero-content{min-height:640px;align-items:flex-start}
 .hero-copy{padding:48px 0 0;max-width:430px}
 .hero-copy .eyebrow{margin-bottom:11px}
 .hero-copy h1{font-size:clamp(32px,8vw,42px);line-height:1.23;margin-bottom:13px}
 .hero-copy h1 em{font-size:18px;line-height:1.35;margin-top:5px}
 .hero-lead{font-size:18px;line-height:1.47;margin-bottom:7px}
 .hero-description{font-size:12px;line-height:1.6;max-width:325px}
 .hero-bottom{padding-bottom:20px}
 /* 横图按原始比例铺开，不额外拉高首页。 */
 .hero.mooncake-hero{aspect-ratio:1448/1086;min-height:0}
 .hero.mooncake-hero .hero-background{inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
 .hero.mooncake-hero:after{background:linear-gradient(180deg,#142334db 0%,#142334a6 28%,#1423340a 65%,#142334a4 100%)}
 .hero.mooncake-hero .hero-inner{height:100%;display:flex;flex-direction:column}
 .hero.mooncake-hero .hero-topline{padding-top:11px}
 .hero.mooncake-hero .hero-content{min-height:0;flex:1;align-items:flex-start}
 .hero.mooncake-hero .hero-copy{padding:18px 0 0;max-width:100%}
 .hero.mooncake-hero .hero-copy .eyebrow,
 .hero.mooncake-hero .hero-copy h1 em,
 .hero.mooncake-hero .hero-lead,
 .hero.mooncake-hero .hero-description{display:none}
 .hero.mooncake-hero h1{font-size:clamp(24px,6.7vw,32px);line-height:1.26;margin:0;text-shadow:0 2px 12px #081827d9}
 .hero.mooncake-hero .hero-bottom{padding:10px 0 12px}
}
