/* =========================================================
 * 婚礼电子请柬 · 样式(移动端优先 / 极简高级)
 * ========================================================= */
/* 本地化衬线字体系统(英文 Cormorant Garamond + 中文思源宋,无外链,微信内可靠) */
@font-face{font-family:'Cormorant Garamond';src:url('vendor/fonts/cormorant-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('vendor/fonts/cormorant-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('vendor/fonts/cormorant-400i.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'Noto Serif SC';src:url('vendor/fonts/notoserif-sc-sub.woff2') format('woff2');font-weight:400 900;font-style:normal;font-display:swap}

:root{
  --bg:#FCFCFC; --ink:#333; --sub:#8a8a8a;
  --line:#ebebeb; --gold:#b7a078;
  --serif:'Cormorant Garamond','Noto Serif SC','Songti SC','SimSun',Georgia,'Times New Roman',serif;
  --kai:'Kaiti SC','STKaiti','KaiTi','Noto Serif SC',serif;
  --sans:system-ui,-apple-system,'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;background:none;border:0;cursor:pointer;color:inherit}

/* ─────────── 第一屏:3D 照片球 ─────────── */
#stage{position:relative;height:200vh;height:200svh}
#gl{position:fixed;inset:0;width:100%;height:100%;z-index:1;cursor:grab}
#gl:active{cursor:grabbing}
#overlay{
  position:fixed;inset:0;z-index:2;pointer-events:none;
  display:flex;flex-direction:column;justify-content:space-between;align-items:center;
  padding:max(30px,env(safe-area-inset-top)) 24px max(34px,env(safe-area-inset-bottom));
  text-align:center;
}
.kicker{font-size:11px;letter-spacing:.42em;color:var(--gold);text-transform:uppercase}
.ov-top .who{
  margin-top:14px;font-family:var(--serif);font-size:clamp(20px,5.6vw,26px);
  letter-spacing:.18em;color:#3a3a3a;
}
.ov-top .who i,.amp{font-family:Georgia,'Times New Roman',serif;font-style:italic;color:var(--gold)}
.hint{
  display:flex;align-items:center;gap:9px;
  font-size:13px;letter-spacing:.38em;text-indent:.38em;color:#5c5c5c;
  animation:float 2.1s ease-in-out infinite;
}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}

/* 开场倒计时(球下方、上滑提示上方):四格翻牌,天/时/分/秒 */
.ov-bottom{display:flex;flex-direction:column;align-items:center;gap:26px}
.countdown{text-align:center}
.cd-kicker{font-size:10px;letter-spacing:.4em;text-indent:.4em;color:var(--gold)}
.cd-main{margin-top:10px}
.cd-grid{display:flex;gap:11px;justify-content:center}
.cd-cell{text-align:center}
.cd-card{
  position:relative;display:block;width:44px;height:56px;
  color:#9E3B3B;font-family:var(--serif);font-weight:500;
  font-size:33px;line-height:56px;
}
.cd-card::after{content:'';position:absolute;left:2px;right:2px;top:50%;height:1px;background:rgba(158,59,59,.14)} /* 中缝线,翻牌卡感 */
.cd-num{display:block;transform-origin:50% 50%}
.cd-num.go{animation:cdFlip .5s ease-in-out}
@keyframes cdFlip{0%{transform:scaleY(1)}45%{transform:scaleY(.04)}55%{transform:scaleY(.04)}100%{transform:scaleY(1)}}
.cd-cell i{display:block;margin-top:7px;font-style:normal;font-size:11px;letter-spacing:.3em;text-indent:.3em;color:#9E3B3B}
.cd-over{font-family:var(--serif);font-size:24px;letter-spacing:.22em;text-indent:.22em;color:#9E3B3B}

/* ─────────── 通用节头 ─────────── */
.sec-head{text-align:center;padding:64px 0 36px}
.sec-head h2{font-family:var(--serif);font-weight:400;font-size:26px;letter-spacing:.16em;margin-top:14px}
.sec-sub{margin-top:12px;font-family:var(--serif);font-size:13px;letter-spacing:.26em;color:#9a9a9a}

/* ─────────── 第二屏:IMAX 开场 + 瀑布流 ─────────── */
#gallery{position:relative;z-index:1;background:var(--bg)}
#hero{position:relative;height:100vh;height:100svh;overflow:hidden}
#hero img{width:100%;height:100%;object-fit:cover;transform:scale(1.15);will-change:transform}
#hero::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(8,8,8,.22) 0%,rgba(8,8,8,.04) 32%,rgba(252,252,252,.45) 68%,#FCFCFC 100%);
}
.hero-cap{
  position:absolute;left:0;right:0;bottom:12vh;text-align:center;color:#fff;
  text-shadow:0 1px 16px rgba(0,0,0,.35);
}
.hero-cap h2{font-family:var(--serif);font-weight:400;font-size:clamp(28px,7.4vw,40px);letter-spacing:.24em;margin-top:14px}
.hero-sub{margin-top:12px;font-family:var(--serif);font-size:13px;letter-spacing:.3em;color:rgba(255,255,255,.92)}
#masonry{position:relative;z-index:2;background:var(--bg);display:flex;flex-direction:column;max-width:720px;margin:0 auto}

/* (杂志版式已升级为「一屏一图」全屏画廊,见 .full-fig) */

/* 章节引言卡(标题逐字浮现,IO 触发 .in;左右交替对齐,非对称序言) */
.chapter{padding:58px 0 10px;display:flex;flex-direction:column;align-items:center;text-align:center}
.chapter.align-r{align-items:flex-end;text-align:right}
.chapter .ch-en{opacity:0;transition:opacity .7s ease .1s}
.chapter .ch-line{transform:scaleX(0);transition:transform .7s ease .55s}
.chapter .ch-cn span{display:inline-block;opacity:0;transform:translateY(14px);transition:opacity .55s ease,transform .55s ease}
.chapter.in .ch-en{opacity:1}
.chapter.in .ch-line{transform:none}
.chapter.in .ch-cn span{opacity:1;transform:none}

/* 章末誓词:两行先后浮现 */
.quote .q-en{opacity:0;transform:translateY(10px);transition:opacity .6s ease .05s,transform .6s ease .05s}
.quote .q-cn{opacity:0;transform:translateY(10px);transition:opacity .6s ease .3s,transform .6s ease .3s}
.quote.in .q-en,.quote.in .q-cn{opacity:1;transform:none}

/* 章节包装:扉页 → 按图片数量选择的相册组件 → 誓词 */
.ch-wrap{display:flex;flex-direction:column}

/* 通用移动相册:2 / 3 / 4 / 8 张只由容器类名决定版式。 */
.gallery-module{width:100%;margin-bottom:80px}
.gallery-2-images,.gallery-3-images,.gallery-4-images{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end;
}
.gallery-2-images>figure{aspect-ratio:3/4}
.gallery-2-images.gallery-landscape-pair{grid-template-columns:1fr}
.gallery-2-images.gallery-landscape-pair>figure{aspect-ratio:3/2}
.heart-motion-fig{opacity:0;will-change:transform,opacity}
.gallery-landscape-pair .heart-motion-fig:first-of-type{transform:translateX(-11vw) translateY(12px) scale(.985)}
.gallery-landscape-pair .heart-motion-fig:nth-of-type(2){transform:translateX(11vw) translateY(12px) scale(.985)}
.gallery-3-images>figure:first-of-type,.gallery-4-images>figure:first-of-type{
  grid-column:1/-1;aspect-ratio:16/9;
}
.gallery-3-images>figure:nth-of-type(2),.gallery-3-images>figure:nth-of-type(3),
.gallery-4-images>figure:nth-of-type(2),.gallery-4-images>figure:nth-of-type(3){
  aspect-ratio:3/4;align-self:end;
}
.gallery-4-images>figure:nth-of-type(4){
  grid-column:1/-1;width:min(78%,360px);aspect-ratio:3/4;justify-self:center;
}
.gallery-caption{grid-column:1/-1;margin-top:4px;text-align:right}

/* 8 图:前三张复用三图组件,后五张是带边线的横向胶片卷轴。 */
.gallery-8-images{display:flex;flex-direction:column;gap:10px}
.gallery-8-feature{width:100%}
.gallery-filmstrip{
  display:flex;flex-wrap:nowrap;gap:10px;width:100%;overflow-x:auto;
  padding:12px 0;border-block:1px solid var(--line);
  -webkit-overflow-scrolling:touch;scrollbar-width:none;
}
.gallery-filmstrip::-webkit-scrollbar{display:none}
.gallery-filmstrip>figure{
  flex:0 0 72%;aspect-ratio:3/4;
}
.gallery-filmstrip:focus-visible{outline:1px solid var(--gold);outline-offset:4px}

/* 固定比例容器由 figure 裁切,不再让视差层放大导致人脸丢失。 */
#masonry .gallery-module .pw{inset:0;width:100%;height:100%}
#masonry .gallery-module .pw img{
  width:100%;height:100%;object-fit:cover;object-position:center 15%;
}

/* 红妆专用非对称杂志版式,不被通用相册组件覆盖。 */
#masonry{padding:0 20px}
.ch-wrap{gap:6vh}
.spread{display:grid;grid-template-columns:repeat(12,1fr);column-gap:14px;align-items:start}
.spread .lead-fig{grid-row:1}
.spread .side{display:flex;flex-direction:column;gap:18px}
.spread.la .lead-fig{grid-column:1/8}
.spread.la .side{grid-column:8/13;padding-top:7%}
/* 末位小图向大图方向探出,保留红妆原有层次。 */
.spread.la .side figure:last-of-type{position:relative;z-index:1;margin-top:6%;transform:translateX(-16%)}
/* 初见沿用「各自的世界」的克制节奏:滚动驱动轻移淡入,双竖图左右相向 */
.first-sight-fig{
  opacity:0;transform:translateY(24px) scale(.99);
  will-change:transform,opacity;
}
/* 图间衬线小字(英文 Cormorant italic + 中文思源宋,小字号宽字距) */
.unit-cap{padding:2px 2px 0}
.unit-cap span{display:block;font-family:var(--serif);font-style:italic;font-size:12.5px;letter-spacing:.15em;color:#8f8f8f}
.unit-cap em{display:block;margin-top:7px;font-style:normal;font-family:var(--serif);font-weight:400;font-size:10px;letter-spacing:.26em;color:#b3ab98}
#masonry figure{position:relative;overflow:hidden;border-radius:3px}
/* 红妆探出图仅以极淡阴影分层。 */
.spread.la .side figure.ok:last-of-type{box-shadow:0 8px 26px rgba(20,16,10,.12);transition:box-shadow .45s ease}
#masonry .pw{position:absolute;left:0;top:-6%;width:100%;height:112%}
#masonry .pw img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;will-change:transform,opacity}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.025)}}
img.breathing{animation:breathe 6.5s ease-in-out infinite}

.splash{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:#111}
.sp-bg{position:absolute;left:0;top:-6%;width:100%;height:112%;will-change:transform}   /* JS 驱动视差 */
.sp-bg img{width:100%;height:100%;object-fit:cover}
.sp-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,8,8,.45),rgba(10,8,8,.16) 45%,rgba(10,8,8,.52))}
.sp-txt{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;opacity:0;will-change:transform,opacity}
.sp-en{font-size:11px;letter-spacing:.52em;text-indent:.52em;color:#e8dcc4;text-shadow:0 1px 12px rgba(0,0,0,.5)}
.sp-cn{margin-top:16px;font-family:var(--serif);font-weight:400;font-size:clamp(56px,17vw,110px);letter-spacing:.3em;text-indent:.3em;color:#fff;text-shadow:0 2px 30px rgba(0,0,0,.45)}

/* 开场仪式:黑金序幕(名字浮现 → 红幕拉开) */
#opening{position:fixed;inset:0;z-index:90;background:#0b0a09;display:flex;flex-direction:column;justify-content:center;align-items:center;transition:opacity .8s ease,transform .8s ease;animation:openingFailSafe .8s ease 3.2s forwards}
#opening.away{opacity:0;transform:translateY(-3%);pointer-events:none}
@keyframes openingFailSafe{to{opacity:0;visibility:hidden;pointer-events:none}}
.op-names{font-family:var(--serif);font-size:clamp(20px,6vw,30px);color:#f2ede4;letter-spacing:.42em;text-indent:.42em;opacity:0;animation:opIn 1s ease .25s forwards}
.op-names i{font-style:italic;color:var(--gold);letter-spacing:0;text-indent:0;margin:0 .1em}
.op-date{margin-top:18px;font-family:var(--serif);font-size:13px;letter-spacing:.4em;text-indent:.4em;color:var(--gold);opacity:0;animation:opIn .9s ease .8s forwards}
@keyframes opIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* 金色微尘(永动装饰层) */
#dust{position:fixed;inset:0;z-index:40;pointer-events:none}
.ch-en{font-size:10px;letter-spacing:.42em;text-indent:.42em;color:var(--gold)}
.ch-cn{margin-top:12px;font-family:var(--serif);font-size:19px;letter-spacing:.5em;text-indent:.5em;color:#3a3a3a}
.ch-line{width:26px;height:1px;background:var(--gold);opacity:.5;margin-top:16px}

/* ─────────── 叙事屏:两个世界 ─────────── */
#worlds{padding:74px 0 26px;background:var(--bg);position:relative;z-index:1}   /* 遮住 sticky hero,避免透底 */
.worlds{display:flex;justify-content:space-between;max-width:640px;margin:0 auto;padding:0 26px}
.w-col{width:37%;display:flex;flex-direction:column;gap:18px}
.w-right{padding-top:40px}                            /* 两列错位,平行世界的疏离感 */
.w-tag{font-size:10px;letter-spacing:.42em;color:var(--gold)}
.w-right .w-tag{text-align:right}
.w-fig{
  position:relative;overflow:hidden;border-radius:3px;background:#f2f2f2;
  aspect-ratio:3/4;opacity:0;will-change:transform,opacity;
}
.w-fig img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.w-meet{
  padding:58px 20px 10px;text-align:center;line-height:1.9;
  font-family:var(--serif);font-style:italic;font-size:16px;letter-spacing:.05em;color:#9a9a9a;
}
.w-meet span{font-family:var(--kai);font-style:normal;font-size:14px;letter-spacing:.24em;color:#5a5a5a}

/* 章末双语誓词(白屏呼吸;英文衬线斜体小字宽距 + 中文楷体,字号降维) */
.quote{padding:78px 8px 64px;text-align:center}
.quote::before{content:'';display:block;width:1px;height:32px;background:var(--gold);opacity:.45;margin:0 auto 26px}
.q-en{font-family:var(--serif);font-style:italic;font-size:13.5px;letter-spacing:.15em;color:#9a9a9a}
.q-cn{margin-top:12px;font-family:var(--kai);font-size:13px;letter-spacing:.3em;text-indent:.3em;color:#5a5a5a}

/* ─────────── 第三屏:婚礼信息卡片 ─────────── */
#details{padding:0 20px 8px}
.card{
  max-width:420px;margin:0 auto;text-align:center;
  background:#fff;border:1px solid var(--line);border-radius:4px;
  outline:1px solid #f3f3f3;outline-offset:6px;          /* 双线框,仪式感 */
  padding:52px 30px 46px;
}
#names{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(2.2rem,8.5vw,2.7rem);letter-spacing:.08em;line-height:1.3;
  white-space:nowrap;                                   /* 两人名字始终同一行 */
}
.amp{font-size:.62em;vertical-align:.14em;margin:0 .08em}
.date-short{margin-top:18px;font-family:var(--serif);font-size:15px;letter-spacing:.22em;color:#555}
.divider{margin:30px auto;width:62%;display:flex;align-items:center;gap:12px;color:var(--gold);font-size:13px}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--line)}
.info{display:flex;flex-direction:column;gap:20px}
/* 婚期日历(婚礼纪式月历高亮) */
.cal{max-width:272px;margin:2px auto 6px;user-select:none}
.cal-title{font-family:var(--serif);font-size:13px;letter-spacing:.34em;text-indent:.34em;color:#5a5a5a;text-align:center}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);margin-top:10px}
.cal-w{height:26px;line-height:26px;font-size:10px;letter-spacing:.1em;color:var(--gold);text-align:center}
.cal-d{height:32px;line-height:32px;font-family:var(--serif);font-size:13px;color:#777;text-align:center}
.cal-d.dim{visibility:hidden}
.cal-d.wed{width:32px;height:32px;line-height:32px;margin:0 auto;background:#9E3B3B;color:#fff;border-radius:50%}
.info>div{display:flex;flex-direction:column;gap:7px;text-align:center}
.info dt{font-size:11px;letter-spacing:.4em;text-indent:.4em;color:#9a9a9a}
.info dd{font-family:var(--serif);font-size:16px;letter-spacing:.06em;white-space:pre-line;line-height:1.75}
.btn{
  display:block;margin:40px auto 0;width:min(100%,300px);padding:16px 0;
  background:#111;color:#fff;font-size:14px;
  letter-spacing:.32em;text-indent:.32em;text-align:center;border-radius:2px;
  transition:opacity .2s,transform .2s;
}
.btn:active{opacity:.82;transform:scale(.985)}
.btn .arr{color:var(--gold)}
/* 双导航按钮:主(实底)+ 次(描边) */
.btn-row{display:flex;gap:10px;margin:40px auto 0;width:min(100%,360px)}
.btn-row .btn{margin:0;width:auto;flex:1;font-size:13px;letter-spacing:.18em;text-indent:.18em}
.btn.ghost{background:transparent;color:#111;outline:1px solid #111;outline-offset:-1px}
.btn.ghost .arr{color:var(--gold)}
/* 地图选择面板:底部弹出,高德/百度/腾讯自选 */
#mapPicker{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end}
#mapPicker[hidden]{display:none}
.mp-mask{position:absolute;inset:0;background:rgba(0,0,0,.32)}
.mp-sheet{position:relative;width:100%;background:#fff;border-radius:14px 14px 0 0;padding:16px 18px calc(14px + env(safe-area-inset-bottom));text-align:center;animation:mpUp .25s ease}
@keyframes mpUp{from{transform:translateY(48px);opacity:0}to{transform:none;opacity:1}}
.mp-title{font-size:11px;letter-spacing:.22em;text-indent:.22em;color:#9a9a9a;padding-bottom:10px}
.mp-opts{border-top:1px solid #f0f0f0}
.mp-opts a{display:block;padding:15px 0;font-size:16px;letter-spacing:.1em;color:#333;border-bottom:1px solid #f0f0f0}
.mp-opts a:active{background:#fafafa}
.mp-cancel{margin-top:8px;width:100%;padding:12px 0;font-size:13px;letter-spacing:.3em;text-indent:.3em;color:#999}
.credit{margin:58px 0 46px;text-align:center;font-size:10px;letter-spacing:.5em;text-indent:.5em;color:#c4c4c4}
/* 版本微标:部署自查用,手机上看到与发布一致的版本号即新版已生效 */
.ver{margin:-34px 0 30px;text-align:center;font-size:9px;letter-spacing:.3em;text-indent:.3em;color:#e4e4e4}
.gallery-end{margin:52px 0 4px;text-align:center;font-size:10px;letter-spacing:.5em;text-indent:.5em;color:#c4c4c4;background:var(--bg)}

/* ─────────── Lightbox ─────────── */
#lightbox{
  position:fixed;inset:0;z-index:99;background:rgba(12,12,12,.94);
  display:none;align-items:center;justify-content:center;
}
#lightbox.open{display:flex}
#lbImg{max-width:92vw;max-height:80vh;object-fit:contain;border-radius:2px;transition:opacity .3s}
#lbCount{
  position:absolute;left:50%;transform:translateX(-50%);
  bottom:calc(26px + env(safe-area-inset-bottom));
  color:rgba(255,255,255,.55);font-size:12px;letter-spacing:.3em;
}
.lb-btn{
  position:absolute;z-index:2;width:44px;height:44px;border-radius:50%;
  color:#fff;background:rgba(255,255,255,.08);
  font-size:26px;line-height:42px;text-align:center;user-select:none;
}
.lb-close{top:calc(14px + env(safe-area-inset-top));right:14px;font-size:30px;line-height:42px}
.lb-prev{left:10px;top:50%;transform:translateY(-50%);font-family:Georgia,serif}
.lb-next{right:10px;top:50%;transform:translateY(-50%);font-family:Georgia,serif}

/* ─────────── 进场动画 ─────────── */
.reveal{opacity:0;transform:translateY(26px);filter:blur(6px);transition:opacity .9s ease,transform .9s ease,filter .9s ease}
.reveal.in{opacity:1;transform:none;filter:blur(0)}

/* 背景音乐按钮 */
#musicBtn{
  position:fixed;top:calc(14px + env(safe-area-inset-top));right:14px;z-index:50;
  width:40px;height:40px;border-radius:50%;
  background:rgba(20,20,20,.35);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  color:#fff;font-size:16px;line-height:1;
  display:flex;align-items:center;justify-content:center;
}
#musicBtn.playing{animation:spin 5s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ─────────── 桌面端微调 ─────────── */
@media (min-width:760px){
  #hero{position:sticky;top:0}                       /* 桌面:封面钉顶,内容列两侧透出大图氛围 */
  #details{padding:0 9vw 8px}
}

/* 窄屏(手机优先)· 通栏杂志流:大图一律全宽,辅图并排满宽或通栏,零侧边空白
 * 宽屏非对称拼版压进窄屏必然产生碎留白,手机改用通栏范式
 * 注意:此块须位于全部桌面版式规则之后,同权重靠源顺序取胜 */
@media (max-width:560px){
  #masonry{padding:0 20px}
  .ch-wrap{gap:4vh}
  .chapter{padding:42px 0 8px}
  .quote{padding:48px 8px 40px}
  .spread{column-gap:10px}
  /* 红妆：大图全宽 → 双小图并排，图注横贯其下。 */
  .spread.la .lead-fig{grid-column:1/-1}
  .spread.la .side{
    grid-column:1/-1;padding-top:0;
    display:grid;grid-template-columns:1fr 1fr;gap:10px;
  }
  .spread.la .side figure:first-of-type{grid-area:1/1}
  .spread.la .side figure:last-of-type{grid-area:1/2;transform:none;margin-top:6%}
  .spread.la .side .unit-cap{grid-column:1/-1;text-align:right;padding:4px 2px 0}
  .spread.la .side figure.ok:last-of-type{box-shadow:none}
  /* 全页密度收紧:章节头/两个世界/尾注/信息卡,消除整页尺度的大空白 */
  .sec-head{padding:46px 0 26px}
  /* 横版封面按原始 3:2 比例完整呈现,不再用竖屏高度裁掉两侧人物 */
  #hero{height:auto;aspect-ratio:3/2;background:#8f0808}
  #hero img{transform:scale(1.01)}
  #hero::after{background:linear-gradient(180deg,rgba(8,8,8,.18) 0%,rgba(8,8,8,.03) 30%,rgba(252,252,252,.28) 84%,#FCFCFC 100%)}
  .hero-cap{bottom:12%}
  .sec-head h2{font-size:22px;margin-top:10px}
  .sec-sub{margin-top:8px}
  #worlds{padding:50px 0 20px}
  .worlds{padding:0 20px}
  .w-col{width:45%;gap:14px}                          /* 中缝 26%→10%,两列图更大更近 */
  .w-right{padding-top:22px}
  .w-meet{padding:38px 20px 8px}
  .gallery-end{margin:34px 0 4px}
  .credit{margin:38px 0 34px}
  #details{padding:0 16px 8px}
  .card{padding:44px 22px 38px}
  .btn-row{margin:30px auto 0}
}
