/* 网页版补充样式：屏幕适配、悬浮元素定位、弹层、提示、放大查看、请柬生成器新增部分 */
:root{color-scheme:only light;--w:100vw;--r:calc(100vw / 750);--gut:0px}
@media (min-width:520px){:root{--w:520px;--r:calc(520px / 750);--gut:calc((100vw - 520px) / 2)}}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;min-height:100vh;background-color:#f8f1e7;background-size:calc(188*var(--r)) calc(188*var(--r))}
@media (min-width:520px){html{background:#efe6d9}body{box-shadow:0 0 40px rgba(80,60,40,.12);max-width:520px;margin:0 auto}}
*{-webkit-tap-highlight-color:transparent}
#app{position:relative;min-height:100vh;overflow-x:hidden}
button{cursor:pointer;font-family:inherit;-webkit-appearance:none;appearance:none;outline:0;display:inline-block}
button:disabled{cursor:default}
a{color:inherit;text-decoration:none}
img{max-width:100%;-webkit-user-drag:none}
input,select{font-family:inherit;border:0;outline:0;background:transparent;border-radius:0;-webkit-appearance:none;appearance:none;color:inherit;margin:0;font-size:16px}
input::placeholder{color:#b9b0a7}
.hfix{width:auto;max-width:none}
button.primary:active,button.outline:active,button.route-card:active,button.nav-item:active,button.music-toggle:active,button.studio-toggle:active,button.dm-toggle:active,button.album-back:active,button.h-submit:active,button.guest-generate:active{opacity:.82}

/* 悬浮元素在宽屏上跟随居中的版心 */
button.music-toggle{right:calc(24*var(--r) + var(--gut));top:calc(22*var(--r) + env(safe-area-inset-top))}
button.studio-toggle,button.dm-toggle{left:calc(24*var(--r) + var(--gut));top:calc(22*var(--r) + env(safe-area-inset-top))}
.bottom-nav{left:var(--gut);right:var(--gut)}
.dm-layer{left:var(--gut);right:var(--gut)}
button.album-back{left:calc(170*var(--r) + var(--gut));right:calc(170*var(--r) + var(--gut))}
.modal-backdrop{padding-left:calc(20*var(--r) + var(--gut));padding-right:calc(20*var(--r) + var(--gut))}
.h-input,.table-search input,.guest-search,.admin-grid input{font-size:16px}
.h-input{min-width:0;width:100%}
.table-search input{height:calc(78*var(--r));min-height:36px}
.h-choice-btn,.h-step-btn,.h-submit{white-space:nowrap}
.h-step-btn:disabled{color:#cfc6bc;border-color:#e0d8ce;background:transparent}
.h-submit:disabled{background:#b98a85;color:#f8f1e7}
.mum-scroll,.sheet-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch}
.mum-sheet{height:86vh;height:86dvh}
/* 照片墙：不提供长按保存/拖拽另存（图片不接收触摸，长按落在相框上，微信不会弹「保存图片」） */
.album-page img{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none}
.album-page .photo-frame,.album-page .a-wide{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
/* 照片墙 · 杂志式版式：暖白纯色底，照片通栏贴边，无相框无阴影无倾斜；英文用衬线体，章节标签用疏排大写 */
.m-album{background:#fffdf9}
.m-album .a-chapter .en-label{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:calc(20*var(--r));letter-spacing:calc(10*var(--r));text-transform:uppercase}
.m-album .a-head{padding-bottom:calc(8*var(--r))}
.m-full{margin-top:calc(64*var(--r))}
.m-full + .m-full{margin-top:calc(14*var(--r))}
.m-full img,.m-arch img,.m-off-img img,.m-duo img{display:block;width:100%}
.m-hero{margin-top:calc(56*var(--r))}
.m-caps{margin-top:calc(34*var(--r));padding:0 calc(40*var(--r));text-align:center;font-family:Georgia,"Times New Roman",serif;font-size:calc(22*var(--r));letter-spacing:calc(9*var(--r));text-indent:calc(9*var(--r));text-transform:uppercase;color:#8a3833;line-height:1.6}
.m-names{margin-top:calc(14*var(--r));text-align:center;font-size:calc(34*var(--r));font-weight:600;letter-spacing:calc(12*var(--r));text-indent:calc(12*var(--r));color:#2f2a26}
.m-capbox{margin-top:calc(30*var(--r));padding:0 calc(48*var(--r));text-align:center}
.m-en{font-family:Georgia,"Times New Roman",serif;font-style:italic;font-size:calc(26*var(--r));letter-spacing:calc(2*var(--r));color:#8a3833;line-height:1.5;margin-bottom:calc(8*var(--r))}
.m-cap{font-size:calc(25*var(--r));letter-spacing:calc(5*var(--r));text-indent:calc(5*var(--r));color:#5a4f47;line-height:1.7}
/* 拱形：左侧贴边，右侧竖排文字 */
.m-arch-row{display:flex;align-items:stretch;margin-top:calc(64*var(--r))}
.m-arch{width:calc(540*var(--r));flex:none;overflow:hidden;border-radius:calc(270*var(--r)) calc(270*var(--r)) 0 0}
.m-arch-row .m-arch{margin-left:calc(-24*var(--r))}
.m-vert{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:calc(4*var(--r))}
.m-vert-t{writing-mode:vertical-rl;font-size:calc(30*var(--r));letter-spacing:calc(14*var(--r));color:#8a3833;line-height:1.6}
.m-vert-t i{font-style:normal;margin:calc(10*var(--r)) 0}
.m-vert-line{width:1px;height:calc(120*var(--r));background:#8a3833;margin-top:calc(24*var(--r))}
.m-arch-c{width:calc(560*var(--r));margin:calc(96*var(--r)) auto 0;border-radius:calc(280*var(--r)) calc(280*var(--r)) 0 0}
/* 偏置大图：右侧贴边，左侧留白写小字 */
.m-offset{display:flex;align-items:flex-end;margin-top:calc(64*var(--r))}
.m-off-cap{flex:1;padding:0 calc(28*var(--r)) calc(10*var(--r)) calc(56*var(--r))}
.m-off-cap span{display:block;font-size:calc(23*var(--r));line-height:2;letter-spacing:calc(4*var(--r));color:#6b5f56}
.m-off-img{width:calc(460*var(--r));flex:none}
/* 左右拼图：两张竖图贴边并排，中间一道细缝 */
.m-duo{display:flex;gap:calc(6*var(--r));margin-top:calc(64*var(--r))}
.m-duo img{flex:1;min-width:0}
.m-verse{margin-top:calc(44*var(--r));padding:0 calc(56*var(--r))}
/* 照片墙里的倒计时：去掉方框，大号衬线数字 + 细竖线分隔 */
.m-album .cd .en-label{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:calc(20*var(--r));letter-spacing:calc(10*var(--r));text-transform:uppercase}
.m-album .cd-row{gap:0}
.m-album .cd-cell{width:calc(132*var(--r));border:0;background:none;padding:calc(6*var(--r)) 0}
.m-album .cd-cell::after{display:none}
.m-album .cd-cell + .cd-cell{border-left:1px solid #e6d3cc}
.m-album .cd-num{font-size:calc(56*var(--r))}

/* 地图：静态地图图片，加载失败时显示可点击的占位 */
button.map-box{position:relative;display:block;width:100%;background:#efe6d9;overflow:hidden}
.map-box img{width:100%;height:100%;object-fit:cover;display:block}
.live-map-box{height:calc(340*var(--r))}
.r-map-box{height:calc(760*var(--r))}
.map-fallback{position:absolute;left:0;top:0;right:0;bottom:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:calc(10*var(--r));color:#8a3833;font-size:calc(26*var(--r));letter-spacing:calc(3*var(--r));background:repeating-linear-gradient(45deg,#f3eadd,#f3eadd calc(14*var(--r)),#efe4d5 calc(14*var(--r)),#efe4d5 calc(28*var(--r)))}
.map-fallback img{width:calc(48*var(--r));height:auto}
.map-box.fail .map-fallback{display:flex}
.map-box.fail > img.map-img{visibility:hidden}
.map-svg{position:absolute;left:0;top:0;width:100%;height:100%}
.map-tap{position:absolute;right:calc(12*var(--r));bottom:calc(12*var(--r));padding:calc(6*var(--r)) calc(16*var(--r));border-radius:calc(20*var(--r));background:rgba(138,56,51,.88);color:#f8f1e7;font-size:calc(21*var(--r));letter-spacing:calc(2*var(--r))}

/* 选择地图 App 的底部弹层 */
.place-title{text-align:center;font-size:calc(30*var(--r));font-weight:600;color:#3a3531;letter-spacing:calc(4*var(--r));padding-bottom:calc(8*var(--r))}
.place-sub{text-align:center;font-size:calc(22*var(--r));color:#8b847d;letter-spacing:calc(1*var(--r));line-height:1.7;padding-bottom:calc(18*var(--r));border-bottom:1px solid #d9d1c6}
.place-list a,.place-list button{display:flex;width:100%;align-items:center;justify-content:space-between;padding:calc(28*var(--r)) calc(8*var(--r));border-bottom:1px solid #e4ddd3;font-size:calc(28*var(--r));color:#3f3a36;letter-spacing:calc(2*var(--r));text-align:left}
.place-list a span,.place-list button span{color:#a39a91;font-size:calc(22*var(--r))}
.sheet-cancel{display:block;width:100%;margin-top:calc(18*var(--r));padding:calc(22*var(--r));color:#9a5a54;font-size:calc(26*var(--r));letter-spacing:calc(6*var(--r))}

/* 提示 */
#toast{position:fixed;left:50%;top:42%;transform:translate(-50%,-50%);z-index:200;max-width:78vw;padding:12px 18px;border-radius:8px;background:rgba(58,53,49,.9);color:#f8f1e7;font-size:14px;line-height:1.6;text-align:center;letter-spacing:1px;pointer-events:none;opacity:0;transition:opacity .2s}
#toast.show{opacity:1}

/* 放大查看图片 */
.lightbox{position:fixed;left:0;top:0;right:0;bottom:0;z-index:120;background:rgba(20,14,10,.92);overflow:auto;-webkit-overflow-scrolling:touch;display:flex;align-items:center;justify-content:center}
.lightbox img{width:100%;max-width:1000px;height:auto;display:block}
.lightbox.zoom{display:block}
.lightbox.zoom img{width:220%;max-width:none}
.lightbox-bar{position:fixed;left:0;right:0;bottom:0;z-index:121;padding:12px 16px calc(12px + env(safe-area-inset-bottom));display:flex;justify-content:space-between;color:#f8f1e7;font-size:14px;letter-spacing:1px;background:linear-gradient(transparent,rgba(0,0,0,.6))}
.lightbox-bar button{color:#f8f1e7;padding:6px 10px;border:1px solid rgba(248,241,231,.6);border-radius:4px;font-size:14px}

/* 口令输入 */
.code-sheet{text-align:center}
.code-sheet .code-input{display:block;width:100%;margin:calc(26*var(--r)) 0 calc(20*var(--r));padding:10px 4px;border-bottom:1px solid #8a3833;text-align:center;letter-spacing:4px}
.code-actions{display:flex;gap:calc(18*var(--r))}
.code-actions button{flex:1}

/* 请柬生成器：链接、二维码、回执表 */
.link-box{margin-top:calc(22*var(--r));padding:calc(16*var(--r)) calc(18*var(--r));background:rgba(255,253,249,.7);border:1px dashed #c29a91;font-size:calc(22*var(--r));color:#5b5550;word-break:break-all;line-height:1.6}
.qr-wrap{margin-top:calc(26*var(--r));text-align:center}
.qr-wrap img{width:calc(360*var(--r));height:calc(360*var(--r));margin:0 auto;background:#fff;padding:calc(14*var(--r));box-shadow:0 calc(6*var(--r)) calc(18*var(--r)) rgba(80,60,40,.12);image-rendering:pixelated}
.qr-cap{margin-top:calc(12*var(--r));font-size:calc(21*var(--r));color:#8b847d;letter-spacing:calc(2*var(--r))}
.guest-select{width:100%;height:calc(72*var(--r));min-height:36px;border:1px solid #d9d1c6;border-radius:4px;padding:0 calc(18*var(--r));color:#6d6660;font-size:14px;background:rgba(255,253,249,.5)}
.rsvp-sum{display:flex;gap:calc(12*var(--r));margin-bottom:calc(18*var(--r))}
.rsvp-sum div{flex:1;text-align:center;padding:calc(14*var(--r)) 0;border:1px solid #d9d1c6;background:rgba(255,253,249,.5)}
.rsvp-sum b{display:block;font-size:calc(36*var(--r));color:#8a3833;font-weight:600}
.rsvp-sum span{font-size:calc(20*var(--r));color:#8b847d;letter-spacing:calc(2*var(--r))}
.rsvp-table{width:100%;border-collapse:collapse;font-size:calc(22*var(--r));color:#3f3a36}
.rsvp-table th{font-weight:400;color:#a39a91;text-align:left;padding:calc(10*var(--r)) calc(6*var(--r));border-bottom:1px solid #d9d1c6;white-space:nowrap}
.rsvp-table td{padding:calc(12*var(--r)) calc(6*var(--r));border-bottom:1px solid #e4ddd3;vertical-align:top}
.rsvp-table td.no{color:#a39a91}
.empty-note{padding:calc(30*var(--r)) 0;text-align:center;color:#a39a91;font-size:calc(22*var(--r))}
.loading-note{padding:calc(40*var(--r)) 0;text-align:center;color:#a39a91;font-size:calc(24*var(--r));letter-spacing:calc(2*var(--r))}
.page-top-back{position:fixed;top:calc(22*var(--r) + env(safe-area-inset-top));left:calc(24*var(--r) + var(--gut));z-index:40;height:calc(68*var(--r));padding:0 calc(24*var(--r));border-radius:calc(34*var(--r));border:1px solid #c29a91;background:rgba(248,241,231,.92);color:#8a3833;font-size:calc(24*var(--r));letter-spacing:calc(2*var(--r))}
.route-page{padding-top:calc(120*var(--r))}
.admin-page{padding-top:calc(40*var(--r))}

/* 微信里分享：指向右上角「···」的提示层 */
.share-guide{position:fixed;left:0;top:0;right:0;bottom:0;z-index:150;background:rgba(20,14,10,.82);color:#f8f1e7;text-align:right;padding:calc(10px + env(safe-area-inset-top)) 22px 0}
.share-arrow{font-size:64px;line-height:1;margin-right:4px;transform:rotate(-8deg);display:inline-block}
.share-text{margin-top:10px;font-size:20px;line-height:1.9;letter-spacing:2px}
.share-text b{color:#ffd766;font-weight:600}
.share-tip{margin-top:26px;font-size:13px;line-height:1.8;color:rgba(248,241,231,.72);letter-spacing:1px}
.share-close{display:inline-block;margin-top:34px;padding:8px 26px;border:1px solid rgba(248,241,231,.7);border-radius:20px;font-size:15px;letter-spacing:4px}
button.guest-copy + button.guest-copy{margin-left:calc(8*var(--r))}

/* 开启页：灰度请柬 + 封面卡片，点击后变彩色 */
body.gated{overflow:hidden}
#cover{position:fixed;left:0;top:0;right:0;bottom:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:0 calc(40*var(--r) + var(--gut));background:rgba(46,40,36,.42);-webkit-backdrop-filter:grayscale(1);backdrop-filter:grayscale(1);transition:opacity .9s ease;cursor:pointer;animation:cv-fade .6s ease-out}
#cover.leaving{opacity:0;pointer-events:none}
@keyframes cv-fade{from{opacity:0}to{opacity:1}}
.cv-card{position:relative;width:100%;max-width:calc(600*var(--r));border:1px solid #c29a91;padding:calc(10*var(--r));background:#f8f1e7;box-shadow:0 calc(20*var(--r)) calc(60*var(--r)) rgba(20,12,8,.35);animation:cv-rise .7s ease-out}
@keyframes cv-rise{from{transform:translateY(calc(30*var(--r)));opacity:0}to{transform:none;opacity:1}}
.cv-card .dia{position:absolute;width:calc(11*var(--r));height:calc(11*var(--r));border:1px solid #c29a91;background:#f8f1e7;transform:rotate(45deg)}
.cv-card .dia.tl{left:calc(-6*var(--r));top:calc(-6*var(--r))}.cv-card .dia.tr{right:calc(-6*var(--r));top:calc(-6*var(--r))}.cv-card .dia.bl{left:calc(-6*var(--r));bottom:calc(-6*var(--r))}.cv-card .dia.br{right:calc(-6*var(--r));bottom:calc(-6*var(--r))}
.cv-in{border:1px solid #dcc5bc;padding:calc(70*var(--r)) calc(30*var(--r)) calc(56*var(--r));text-align:center}
.cv-welcome{width:calc(430*var(--r));margin:0 auto}
.cv-to{margin-top:calc(44*var(--r));font-size:calc(30*var(--r));letter-spacing:calc(6*var(--r));color:#3f3a36;line-height:1.6}
.cv-to b{font-weight:inherit;color:#8a3833}
.cv-rule{width:calc(96*var(--r));height:1px;background:#c29a91;margin:calc(34*var(--r)) auto}
.cv-names{font-size:calc(32*var(--r));font-weight:600;letter-spacing:calc(6*var(--r));color:#3a3531}
.cv-date{margin-top:calc(14*var(--r));font-size:calc(22*var(--r));letter-spacing:calc(4*var(--r));color:#8b847d}
button.cv-btn{position:relative;display:inline-block;margin-top:calc(56*var(--r));padding:calc(22*var(--r)) calc(64*var(--r));border-radius:calc(44*var(--r));background:#8a3833;color:#f8f1e7;font-size:calc(30*var(--r));letter-spacing:calc(10*var(--r));text-indent:calc(10*var(--r));box-shadow:0 calc(8*var(--r)) calc(22*var(--r)) rgba(138,56,51,.35)}
button.cv-btn::after{content:"";position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;border:2px solid #8a3833;animation:cv-pulse 1.8s ease-out infinite}
@keyframes cv-pulse{from{transform:scale(1);opacity:.7}to{transform:scale(1.25,1.5);opacity:0}}
.cv-hint{margin-top:calc(26*var(--r));font-size:calc(20*var(--r));letter-spacing:calc(3*var(--r));color:#a39a91}


/* 底部菜单：更像可以点的按钮（图标统一用酒红色、字更大更深、选中项有底色） */
.bottom-nav{background-color:rgba(252,248,242,.98);border-top:1px solid #e2d3c8;box-shadow:0 calc(-6*var(--r)) calc(24*var(--r)) rgba(80,60,40,.10);padding:calc(12*var(--r)) calc(12*var(--r)) calc(calc(12*var(--r)) + env(safe-area-inset-bottom))}
button.nav-item{margin:0 calc(6*var(--r));padding:calc(10*var(--r)) 0 calc(6*var(--r));border-radius:calc(18*var(--r));color:#4a4540;font-size:calc(24*var(--r));font-weight:500;letter-spacing:calc(3*var(--r));gap:calc(6*var(--r))}
button.nav-item img{width:calc(48*var(--r));height:calc(48*var(--r));opacity:.78}
button.nav-item.active{background:rgba(138,56,51,.10);color:#8a3833;font-weight:600}
button.nav-item.active img{opacity:1}
/* 菜单图标：四个一起、同一节奏轻跳，一直保持（每 2.4 秒跳两下） */
.bottom-nav button.nav-item img{animation:nav-hop 2.4s ease-in-out infinite}
@keyframes nav-hop{0%,40%,100%{transform:translateY(0)}10%,30%{transform:translateY(calc(-9*var(--r)))}20%{transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){.bottom-nav button.nav-item img{animation:none}}


/* 专属称呼：姓名与其他字同样的字体、字号、字重，只把颜色换成酒红 */
.g-name,.invitation-home-greeting.is-long .g-name,.invitation-home-greeting.is-xlong .g-name{font-size:inherit;font-weight:inherit;letter-spacing:inherit;color:#8a3833;margin:0 calc(2*var(--r))}
.invitation-home-greeting .g-name{font-size:calc(30*var(--r));letter-spacing:calc(6*var(--r))}
.invitation-home-greeting.is-long .g-name{font-size:calc(26*var(--r));letter-spacing:calc(4*var(--r))}
.invitation-home-greeting.is-xlong .g-name{font-size:calc(22*var(--r));letter-spacing:calc(2*var(--r))}


/* 婚礼倒计时 */
.cd{margin:calc(80*var(--r)) calc(64*var(--r)) 0;text-align:center}
.cd .en-label{letter-spacing:calc(6*var(--r))}
.cd-cn{margin-top:calc(6*var(--r));font-size:calc(21*var(--r));letter-spacing:calc(6*var(--r));color:#b1a89f}
.cd-row{display:flex;justify-content:center;gap:calc(18*var(--r));margin-top:calc(26*var(--r))}
.cd-cell{width:calc(116*var(--r));padding:calc(16*var(--r)) 0 calc(12*var(--r));border:1px solid #c29a91;background:rgba(255,253,249,.55);position:relative}
.cd-cell::after{content:"";position:absolute;left:calc(5*var(--r));top:calc(5*var(--r));right:calc(5*var(--r));bottom:calc(5*var(--r));border:1px solid #ecdcd3;pointer-events:none}
.cd-num{display:block;font-family:Georgia,"Times New Roman",serif;font-size:calc(48*var(--r));line-height:1.15;color:#8a3833;font-variant-numeric:tabular-nums;letter-spacing:calc(1*var(--r))}
.cd-unit{display:block;margin-top:calc(4*var(--r));font-size:calc(20*var(--r));letter-spacing:calc(4*var(--r));color:#8b847d}
.cd-done{margin-top:calc(24*var(--r));font-size:calc(28*var(--r));letter-spacing:calc(6*var(--r));color:#8a3833}

/* 婚礼当天天气卡片 */
.wx-home{margin:calc(80*var(--r)) calc(58*var(--r)) 0}
.wx-guide{margin:calc(44*var(--r)) calc(44*var(--r)) 0}
.wx-card .frame-in{padding:calc(30*var(--r)) calc(30*var(--r)) calc(26*var(--r))}
.wx-head{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:calc(16*var(--r));border-bottom:1px solid #e4d6cc}
.wx-cn{font-size:calc(23*var(--r));color:#5b5550;letter-spacing:calc(2*var(--r))}
.wx-main{display:flex;align-items:center;justify-content:space-between;padding:calc(22*var(--r)) 0 calc(14*var(--r))}
.wx-temp{font-family:Georgia,"Times New Roman",serif;font-size:calc(58*var(--r));color:#8a3833;line-height:1.1;white-space:nowrap}
.wx-sep{margin:0 calc(6*var(--r));font-size:calc(40*var(--r))}
.wx-deg{font-size:calc(30*var(--r));margin-left:calc(4*var(--r))}
.wx-desc{text-align:right}
.wx-text{display:block;font-size:calc(30*var(--r));color:#3a3531;letter-spacing:calc(4*var(--r))}
.wx-wind{display:block;margin-top:calc(4*var(--r));font-size:calc(21*var(--r));color:#8b847d;letter-spacing:calc(2*var(--r))}
.wx-tip{font-size:calc(24*var(--r));line-height:1.9;color:#4a4540;letter-spacing:calc(1*var(--r));text-align:left}
.wx-tip-k{display:inline-block;margin-right:calc(10*var(--r));padding:0 calc(12*var(--r));border-radius:calc(20*var(--r));background:#8a3833;color:#f8f1e7;font-size:calc(20*var(--r));letter-spacing:calc(2*var(--r));line-height:1.7;vertical-align:1px}
.wx-note{margin-top:calc(12*var(--r));font-size:calc(19*var(--r));color:#a39a91;letter-spacing:calc(1*var(--r))}
.wx-loading{padding:calc(30*var(--r)) 0;text-align:center;color:#a39a91;font-size:calc(22*var(--r))}

/* 照片墙里的倒计时 */
.album-page .cd{margin:calc(96*var(--r)) calc(56*var(--r)) 0}

/* 平面图：每张桌子上叠一个放大的桌号（原图里的数字太小） */
.t-num{position:absolute;left:50%;top:50%;width:38%;height:38%;transform:translate(-50%,-50%);border-radius:50%;background:#f3ebe0;box-shadow:inset 0 0 0 1px rgba(120,90,70,.18);display:flex;align-items:center;justify-content:center;font-family:Georgia,"Times New Roman",serif;font-weight:600;line-height:1;color:#2f2a26;pointer-events:none;z-index:1}

/* 婚礼流程：标签移到上方单独一行，流程项占满整行，长说明不再被挤成窄条 */
.h-row.h-process{display:block}
.h-process .h-key{width:auto;display:flex;align-items:baseline;gap:calc(16*var(--r));margin-bottom:calc(22*var(--r))}
.h-process .h-key .cn-label{margin-top:0}
.h-process .h-steps{padding-left:calc(4*var(--r))}
.h-process .h-time{width:calc(150*var(--r))}
.h-process .h-note{margin-top:calc(4*var(--r));line-height:1.75}

.fa-guide{text-align:right}
.fa-btns{position:absolute;left:22px;right:22px;bottom:calc(30px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;text-align:center}
.fa-btns button{font:inherit;border:0;border-radius:16px;height:60px;font-size:20px;font-weight:600;letter-spacing:1px}
.fa-done{background:#2E7D4F;color:#fff}
.fa-back{background:rgba(255,255,255,.92);color:#2b2622}
.fa-peek{background:none;color:rgba(248,241,231,.8);height:40px!important;font-size:16px!important;text-decoration:underline}

/* 宴会席位：您初步定在 X 号桌 */
.my-seat{margin:calc(24*var(--r)) 0 calc(6*var(--r));padding:calc(30*var(--r)) calc(28*var(--r));border:1px solid #d9b9b2;border-radius:calc(14*var(--r));background:rgba(255,250,242,.85);text-align:center}
.my-seat-hi{font-size:calc(28*var(--r));color:#5a4f47;letter-spacing:calc(2*var(--r))}
.my-seat-no{margin:calc(8*var(--r)) 0 calc(6*var(--r));font-size:calc(34*var(--r));color:#8a3833;letter-spacing:calc(3*var(--r))}
.my-seat-no b{font-size:calc(96*var(--r));font-family:Georgia,serif;font-weight:600;line-height:1;vertical-align:calc(-6*var(--r));margin-right:calc(6*var(--r))}
.my-seat-no span{display:inline-block;margin-left:calc(12*var(--r));padding:calc(2*var(--r)) calc(14*var(--r));border-radius:calc(20*var(--r));background:#8a3833;color:#fff;font-size:calc(22*var(--r));vertical-align:calc(6*var(--r))}
.my-seat-line{font-size:calc(24*var(--r));color:#6b5f56;line-height:1.8;letter-spacing:calc(1*var(--r))}
.my-seat-note{margin-top:calc(10*var(--r));font-size:calc(21*var(--r));color:#a39a91;letter-spacing:calc(1*var(--r))}

/* 备案号：首页最底部一行小字 */
.icp{display:block;margin-top:calc(26*var(--r));text-align:center;font-size:calc(19*var(--r));color:#b5ada5;letter-spacing:1px;text-decoration:none}
