/* Four invitation compositions; intentionally scoped away from guest and staff UI. */
.invitation-v2{--inv-bg:#13221c;--inv-ink:#f0e5cb;--inv-muted:#c4c5b1;--inv-accent:#d5b679;--inv-line:#82958250;background:var(--inv-bg);color:var(--inv-ink);padding-bottom:30px;font-family:LocalSong,"Songti SC","STSong",serif;min-height:100vh;isolation:isolate}
.invitation-v2 ::selection{background:var(--inv-accent);color:var(--inv-bg)}
.invitation-v2 .invitation-hero{height:430px;background-repeat:no-repeat;background-size:cover;background-position:center;position:relative}
.invitation-v2 .invitation-brand{top:27px;left:30px;right:28px;position:absolute;color:#f0e5cb;font-size:15px;letter-spacing:.14em;gap:11px;line-height:1.6;z-index:1}
.invitation-v2 .seal{width:31px;height:35px;border-color:currentColor;font-size:20px;background:transparent;color:inherit}
.invitation-v2 .invite-hero-heading{position:absolute;top:113px;left:34px;right:28px}
.invitation-v2 h1{font-size:45px;font-weight:400;line-height:1.35;letter-spacing:.16em;text-align:left;color:var(--inv-ink);text-wrap:balance;overflow-wrap:anywhere}
.invitation-v2 .invitation-inner{padding:0 30px}
.invitation-v2 .invite-copy{font-size:15px;line-height:2;color:var(--inv-muted);text-align:left;white-space:pre-line;margin:23px 0 26px;overflow-wrap:anywhere}
.invitation-v2 .invite-coupon{outline:0;border:0;border-radius:0;background:none;padding:22px 0;margin:24px 0;color:var(--inv-ink)}
.invitation-v2 .invite-coupon-label{font-size:13px;letter-spacing:.12em;color:var(--inv-muted)}
.invitation-v2 .invite-coupon-value{font:60px/1.1 Georgia,"Times New Roman",serif;color:var(--inv-ink);margin:8px 0 0;white-space:nowrap;letter-spacing:-.025em;font-variant-numeric:lining-nums}
.invitation-v2 .invite-coupon-value small{font:16px LocalSong,"Songti SC",serif;margin-left:7px;letter-spacing:0}
.invitation-v2 .invite-coupon-value .currency{font-size:26px;vertical-align:top;display:inline-block;padding-top:9px;margin-right:3px}
.invitation-v2 .invite-coupon p{font:12px/1.9 -apple-system,"PingFang SC",sans-serif;color:var(--inv-muted);margin-top:15px;overflow-wrap:anywhere}
.invitation-v2 .invite-details{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;margin:0 0 30px}
.invitation-v2 .invite-details div{display:block;border-bottom:1px solid var(--inv-line);padding:16px 0;grid-column:1/-1}
.invitation-v2 .invite-details dt{width:auto;font:12px/1.5 -apple-system,"PingFang SC",sans-serif;color:var(--inv-muted);letter-spacing:.08em}
.invitation-v2 .invite-details dd{color:var(--inv-ink);font-size:17px;margin:7px 0 0;overflow-wrap:anywhere}
.invitation-v2 .invite-details .invite-date,.invitation-v2 .invite-details .invite-time{grid-column:auto;padding-top:2px;padding-bottom:23px}
.invitation-v2 .invite-date dd,.invitation-v2 .invite-time dd{font:32px/1.3 Georgia,LocalSong,"Songti SC",serif}
.invitation-v2 .invite-date small{display:block;font:12px/1.6 -apple-system,"PingFang SC",sans-serif;color:var(--inv-muted);margin-top:9px}
.invitation-v2 .invite-details div:nth-child(n+3){display:flex;align-items:baseline;gap:24px;padding:12px 0}
.invitation-v2 .invite-details div:nth-child(n+3) dt{flex:0 0 36px}
.invitation-v2 .invite-details div:nth-child(n+3) dd{margin:0;min-width:0}
.invitation-v2 .invite-manager{color:var(--inv-ink);margin:26px 0 20px;gap:10px}
.invitation-v2 .invite-manager .avatar{color:var(--inv-accent);border-color:var(--inv-line);width:42px;height:42px}
.invitation-v2 .invite-manager small{color:var(--inv-muted);font-size:11px}
.invitation-v2 .invite-manager .btn{color:var(--inv-ink);border-color:var(--inv-line);min-height:44px}
.invitation-v2 .invite-address{color:var(--inv-muted);font:12px/1.8 -apple-system,"PingFang SC",sans-serif;margin:18px 0 24px}
.invitation-v2 .invite-event{font-size:14px;line-height:1.9;color:var(--inv-muted);text-align:left;border:0;margin:24px 0;padding:0}
.invitation-v2 .invite-actions{gap:10px;margin:26px 0 18px}
.invitation-v2 .invite-actions .btn{font:15px/1.5 LocalSong,"Songti SC",serif;min-height:48px;letter-spacing:.07em;color:var(--inv-ink);border:1px solid var(--inv-line);background:transparent;padding:12px 8px;border-radius:3px}
.invitation-v2 .invite-actions .gold{background:var(--inv-accent);border-color:var(--inv-accent);color:var(--inv-bg)}
.invitation-v2 a:focus-visible,.invitation-v2 button:focus-visible{outline:2px solid var(--inv-accent);outline-offset:3px}
.invitation-v2 .invite-actions .btn:hover{filter:brightness(1.08)}
.invitation-v2 .invite-footer{font:11px/1.9 -apple-system,"PingFang SC",sans-serif;color:var(--inv-muted);text-align:left;margin:22px 0 0}
.invitation-v2 .invite-footer a{text-decoration:underline;text-underline-offset:4px;display:inline-block;padding:10px 0}
.invitation-v2 .invite-preview{background:var(--inv-bg);color:var(--inv-muted);font:11px/1.6 -apple-system,"PingFang SC",sans-serif;padding:8px 12px;border-bottom:1px solid var(--inv-line)}

/* 松影雅宴: a formal vertical opening, then a precise date / time pair. */
.invitation--arrival .invitation-hero{height:415px;background-image:linear-gradient(180deg,#13221c00 68%,#13221c),url('/assets/invitation-arrival-v2.jpg');background-position:center 58%}
.invitation--arrival .invite-hero-heading{top:119px;left:34px}
.invitation--arrival h1{font-size:45px;line-height:1.45;letter-spacing:.23em}
.invitation--arrival .invite-copy{margin-top:6px;margin-bottom:30px}

/* 绛红花信: full floral still life, with an arched birthday gift below. */
.invitation--birthday{--inv-bg:#4a171e;--inv-ink:#f9e4d2;--inv-muted:#e4bfb5;--inv-accent:#edd0ae;--inv-line:#efc6b440}
.invitation--birthday .invitation-hero{height:430px;background-image:linear-gradient(180deg,#4a171e00 76%,#4a171e),url('/assets/invitation-birthday-v2.jpg');background-position:center 53%}
.invitation--birthday .invite-hero-heading{top:128px;left:37px;right:24px}
.invitation--birthday h1{font-size:50px;line-height:1.42;letter-spacing:.19em}
.invitation--birthday .invite-hero-heading p{color:#f8ddd0;font-size:14px;margin-top:17px;max-width:165px;line-height:1.8;overflow-wrap:anywhere}
.invitation--birthday .invite-coupon{background:#edc9b4;color:#4a171e;border-radius:90px 90px 3px 3px;padding:29px 24px 23px;margin:-12px 12px 26px;text-align:center;position:relative}
.invitation--birthday .invite-coupon-label,.invitation--birthday .invite-coupon p{color:#63343a}
.invitation--birthday .invite-coupon-value{color:#4a171e;font-size:64px}
.invitation--birthday .invite-copy{text-align:center;margin:25px 0}
.invitation--birthday .invite-event{text-align:center}

/* 青瓷时令: daylight and negative space; a horizontal, unboxed benefit. */
.invitation--recall{--inv-bg:#e9ede2;--inv-ink:#293f35;--inv-muted:#52624f;--inv-accent:#355745;--inv-line:#435d3c40}
.invitation--recall .invitation-hero{height:440px;background-image:linear-gradient(180deg,#e9ede200 81%,#e9ede2),url('/assets/invitation-recall-v2.jpg');background-position:center 57%}
.invitation--recall .invitation-brand{color:#334b3b}
.invitation--recall .invite-hero-heading{top:106px;left:32px;right:34px}
.invitation--recall h1{font-size:37px;line-height:1.65;letter-spacing:.08em;max-width:280px}
.invitation--recall .invite-copy{margin-top:2px;line-height:2}
.invitation--recall .invite-coupon{display:flex;gap:22px;align-items:center;border-top:1px solid var(--inv-line);border-bottom:1px solid var(--inv-line);padding:22px 0;margin:26px 0}
.invitation--recall .invite-coupon-main{flex:0 0 auto;max-width:53%}
.invitation--recall .invite-coupon-value{font-size:54px}
.invitation--recall .invite-coupon p{margin:0;font-size:11px;line-height:2}
.invitation--recall .invite-actions .gold{color:#f1f0e5}

/* 靛蓝私笺: the photograph is a letter cover; the invitation is inside. */
.invitation--personal{--inv-bg:#152435;--inv-ink:#eee5d6;--inv-muted:#b7c7d0;--inv-accent:#d9c49c;--inv-line:#b0c3ce45}
.invitation--personal .invitation-hero{height:245px;background-image:linear-gradient(180deg,#15243540,#15243500 80%),url('/assets/invitation-personal-v2.jpg');background-position:center 55%}
.invitation--personal .invitation-brand{color:#f2e4cc}
.invitation--personal .invitation-inner{padding:0 24px}
.invitation--personal .invite-letter{position:relative;margin-top:-18px;padding:32px 25px 26px;background:#f0e9da;color:#34414c;box-shadow:0 12px 26px #020e1940}
.invitation--personal .invite-salutation{font-size:14px;color:#5b655f;line-height:1.8;margin-bottom:18px;overflow-wrap:anywhere}
.invitation--personal h1{color:#233b4c;font-size:31px;letter-spacing:.1em;margin:0 0 21px}
.invitation--personal .invite-copy{color:#525e61;font-size:15px;line-height:2.2;margin:0 0 23px}
.invitation--personal .invite-coupon{border-top:1px solid #a2a896;border-bottom:1px solid #a2a896;padding:17px 0;margin:20px 0}
.invitation--personal .invite-coupon-main{display:flex;align-items:center;justify-content:space-between;gap:14px}
.invitation--personal .invite-coupon-label{max-width:100px;color:#536159;font-size:13px;line-height:1.8;letter-spacing:.08em}
.invitation--personal .invite-coupon-value{color:#2c485b;font-size:46px;margin:0}
.invitation--personal .invite-coupon p{color:#5c655f;font-size:11px;margin-top:10px}
.invitation--personal .invite-signature{text-align:right;color:#5c685f;font-size:13px;letter-spacing:.08em;margin-top:21px}
.invitation--personal .invite-event{font-size:13px;margin:25px 5px}

/* The gallery stays below rules; its only job is to show the four actual designs. */
.invite-gallery{margin-top:44px}
.invite-gallery-head{margin-bottom:20px;gap:14px;flex-wrap:wrap}
.invite-gallery-head .subheading{font-size:17px}
.invite-gallery-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.invite-thumb{container-type:inline-size;padding:14px 12px 0;border:0;border-radius:12px;overflow:hidden;background:#e4e7df;gap:0;align-items:center}
.invite-thumb[data-kind=birthday]{background:#e9e0dc}
.invite-thumb[data-kind=recall]{background:#dde5d8}
.invite-thumb[data-kind=personal]{background:#dce2e6}
.invite-phone.mini{width:390px;height:760px;zoom:calc(100cqw / 390px);border:0;border-radius:6px;box-shadow:none;background:transparent;flex-shrink:0}
.invite-phone.mini .invitation{min-height:760px}
.invite-thumb>.btn{border:0;border-radius:0;background:transparent;min-height:54px;padding:14px 0;font-size:13px;color:#34463c;justify-content:space-between}
.invite-thumb>.btn::after{content:'查看请帖';font-size:11px;color:#5e6a60}
.invite-thumb:has(>.btn:hover){filter:brightness(.98)}
.invite-phone:not(.mini){border:0;border-radius:12px;box-shadow:none;width:min(406px,100%);height:min(760px,calc(92vh - 145px));scrollbar-width:thin;scrollbar-color:#a9a392 #243029}
.invite-phone .invitation{min-height:100%}
@media(max-width:1150px){.invite-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.invite-thumb{padding:18px 18px 0}.invite-phone.mini{width:390px;zoom:calc(100cqw / 390px)}}
@media(max-width:600px){.invite-gallery-grid{gap:12px}.invite-thumb{padding:8px 8px 0}.invite-thumb>.btn{font-size:12px;min-height:48px;justify-content:center}.invite-thumb>.btn::after{display:none}.invite-gallery-head .muted{font-size:11px}.modal:has(.invite-phone) .modal-body{padding:12px}.invitation-body:has(.invitation-v2){background:#15241d}}
@media(max-width:360px){.invitation-v2 .invitation-inner{padding-left:22px;padding-right:22px}.invitation--personal .invitation-inner{padding-left:18px;padding-right:18px}.invitation--personal .invite-letter{padding-left:19px;padding-right:19px}.invitation--recall .invite-coupon{gap:13px}.invitation--recall .invite-coupon-value{font-size:47px}}

.invitation--recall.invite-long-name h1{font-size:27px;line-height:1.65;max-width:100%}
