.home{padding:0 20px 48px}.home-hero{padding:64px 0 28px;display:flex;flex-direction:column;align-items:center;text-align:center}.home-ornament{width:60px;height:2px;margin-bottom:24px;background:linear-gradient(90deg,transparent,var(--color-accent),transparent)}.home-brand{margin:0;font-family:var(--font-display);font-size:44px;font-weight:400;color:var(--color-accent);letter-spacing:.35em;-webkit-user-select:none;user-select:none}.home-tagline{margin:16px 0 0;font-size:14px;color:var(--color-text-muted);letter-spacing:.12em}.home-dot{margin-top:28px;width:24px;height:24px;border:1px solid var(--color-accent-soft);border-radius:50%;position:relative}.home-dot:after{content:"";position:absolute;inset:50% auto auto 50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--color-primary)}.home-dot.on:after{background:var(--color-accent)}.home-feats{display:flex;flex-wrap:wrap;gap:10px 18px;justify-content:center;margin:28px 0 36px;font-size:13px;color:var(--color-text-muted);letter-spacing:.08em}.home-list{display:flex;flex-direction:column;gap:14px}.home-card{background:var(--color-surface);border:1px solid var(--color-border);padding:18px 16px}.home-names{font-family:var(--font-display);font-size:22px;letter-spacing:.08em}.home-meta{margin-top:6px;font-size:14px;color:var(--color-primary-soft)}.home-venue{margin-top:4px;font-size:13px;color:var(--color-text-muted)}.home-ops{display:flex;gap:18px;margin-top:14px;padding-top:12px;border-top:1px solid var(--color-border)}.home-ops button{border:0;background:none;padding:0;color:var(--color-accent);letter-spacing:.12em;cursor:pointer}.home-ops .danger{color:var(--color-text-muted)}.home-empty{text-align:center;margin-top:48px}.home-muted{color:var(--color-text-muted);font-size:14px;text-align:center}.home-err{color:var(--color-accent);text-align:center;font-size:14px}.invite-root{width:min(100%,var(--max));margin:0 auto;height:100dvh;height:100vh;max-height:100dvh;display:flex;flex-direction:column;background:#f7f3ee;position:relative;overflow:hidden}.invite-scroll{flex:1;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}.invite-miss{padding:80px 24px;text-align:center;color:var(--color-text-muted)}.page.season{padding-bottom:24px}.hero{position:relative;width:100%;max-height:80vh;overflow:hidden;background:#2f332f}.hero-img{width:100%;height:100%;display:block;object-fit:cover;object-position:center center}.hero-fallback{min-height:min(80vh,640px);background:radial-gradient(circle at 30% 20%,rgba(181,22,40,.25),transparent 50%),linear-gradient(160deg,#5f7264,#2f332f)}.hero-veil{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(20,18,16,.22) 0%,transparent 28%,transparent 55%,rgba(20,18,16,.2) 100%);pointer-events:none}.hero-meta{position:absolute;left:20px;right:20px;top:24px;z-index:2;color:#fff;font-size:14px;letter-spacing:.06em;text-shadow:0 1px 8px rgba(0,0,0,.35)}.hero-row{display:flex;align-items:center;gap:8px}.hero-row+.hero-row{margin-top:10px}.hero-icon{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.hero-clock-face{position:relative;width:14px;height:14px;border:1.5px solid rgba(255,255,255,.95);border-radius:50%;box-sizing:border-box}.hero-clock-hand{position:absolute;left:50%;top:50%;width:1.5px;background:#fffffff2;border-radius:1px;transform-origin:center bottom}.hero-clock-hand.h{height:4px;transform:translate(-50%,-100%) rotate(25deg)}.hero-clock-hand.m{height:5.5px;transform:translate(-50%,-100%) rotate(130deg)}.hero-pin{position:relative;width:11px;height:14px}.hero-pin:before{content:"";position:absolute;left:50%;top:0;width:11px;height:11px;margin-left:-5.5px;border:1.5px solid rgba(255,255,255,.95);border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-sizing:border-box}.hero-pin:after{content:"";position:absolute;left:50%;top:3.5px;width:3px;height:3px;margin-left:-1.5px;border-radius:50%;background:#fffffff2}.hero-value{font-size:14px;letter-spacing:.06em}.hero-bottom{position:absolute;left:16px;right:16px;bottom:24px;z-index:2;display:flex;flex-direction:column;align-items:center;gap:12px;pointer-events:none}.hero-date-big{display:flex;align-items:baseline;justify-content:center;color:#fff;font-family:var(--font-display);font-size:clamp(48px,14vw,64px);font-weight:500;letter-spacing:.1em;line-height:1;text-shadow:0 4px 18px rgba(0,0,0,.4)}.hero-date-big .dot{margin:0 1px 0 0;opacity:.88;font-weight:400}.hero-deco{display:block;width:min(220px,58vw);height:auto;opacity:.95;margin-top:0}.hero-deco-text{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:0;color:#fffffff2;font-size:clamp(12px,3.4vw,15px);letter-spacing:.48em;line-height:1.4;text-indent:.48em}.hero-deco-text span{display:block;text-align:center}.names{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:28px 28px 8px}.names .name-col{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center}.names .name-py{width:100%;font-size:12px;line-height:1.4;letter-spacing:.18em;color:var(--s-muted);text-transform:uppercase}.names .name-cn{margin-top:6px;width:100%;font-family:var(--font-display);font-size:32px;line-height:1.35;letter-spacing:.14em;color:var(--s-ink)}.player{display:block;box-sizing:border-box;width:calc(100% - 92px);max-width:calc(100% - 92px);margin:12px auto 20px;padding:14px 16px;border:0;background:#fffcfae6;border:1px solid var(--color-border);text-align:left;cursor:pointer}.player-inner{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:13px;color:var(--color-text-secondary)}.player-inner>span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-wave{display:flex;gap:3px;height:14px;align-items:flex-end}.player-wave i{width:2px;height:6px;background:var(--color-accent-soft);display:block}.player-wave.on i{background:var(--color-accent);animation:wave .8s ease-in-out infinite alternate}.player-wave.on i:nth-child(2){animation-delay:.15s;height:10px}.player-wave.on i:nth-child(3){animation-delay:.3s;height:8px}@keyframes wave{0%{transform:scaleY(.5)}to{transform:scaleY(1.2)}}.player-track{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;margin-top:10px;font-size:11px;color:var(--color-text-muted)}.player-line{height:2px;background:var(--color-border)}.player-fill{height:100%;background:var(--color-accent)}.block{padding:12px 20px 28px;text-align:center}.section-head{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;margin-bottom:18px;width:100%}.leaf{width:24px;height:36px;object-fit:contain;display:block;margin:0 auto}.section-label{width:88px;display:block;margin:0 auto}.section-label.big{width:160px}.deco-title{display:block;width:min(200px,52vw);margin:0 auto 18px}.photo.wide{width:100%;aspect-ratio:4 / 3;object-fit:cover}.photo.gap{margin-top:14px}.couple-duo{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px}.duo-card{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center}.duo-img{width:100%;height:170px;object-fit:cover;display:block;background:#efeae3}.duo-date{margin-top:8px;font-size:12px;color:var(--s-muted);letter-spacing:.08em}.duo-join{text-align:center;margin:8px 0 18px;font-family:var(--font-display);font-size:15px;letter-spacing:.12em;color:var(--s-ink);line-height:1.6}.grid-2{display:flex;gap:10px;margin:14px 0 4px;align-items:stretch}.grid-img{flex:1;min-width:0;height:220px;object-fit:cover;display:block;background:#efeae3}.grid-2.tall .grid-img{height:auto;aspect-ratio:2 / 3;object-fit:cover;object-position:center}.grid-img.placeholder{visibility:hidden}.poem{margin:22px 0;text-align:center;color:var(--color-text-secondary);font-family:var(--font-display);line-height:1.9;letter-spacing:.06em}.poem p{margin:0}.poem.poem-forest{opacity:.8}.info h3{margin:8px 0 10px;font-size:13px;letter-spacing:.18em;font-weight:500;color:var(--s-muted)}.info h3.addr{margin-top:28px}.info p{margin:0 0 6px;color:var(--s-ink)}.addr-copy{border:0;background:none;padding:0;color:var(--color-text-muted);font-size:13px;text-align:left;cursor:pointer;text-decoration:underline;text-underline-offset:3px;line-height:1.55}.invite-toast{position:fixed;left:50%;bottom:calc(88px + env(safe-area-inset-bottom,0px));z-index:60;transform:translate(-50%);max-width:min(80%,280px);padding:10px 18px;background:#2f332fe0;color:#fff;font-size:13px;letter-spacing:.12em;text-align:center;pointer-events:none;animation:toast-in .22s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.cal{margin:18px 0 8px;border:1px solid var(--color-border);background:var(--color-surface);padding:14px}.cal-head{text-align:center;margin-bottom:10px;letter-spacing:.12em}.cal-week,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center;font-size:12px}.cal-week{color:var(--color-text-muted);margin-bottom:6px}.cal-cell{height:32px;display:grid;place-items:center;position:relative}.cal-cell.wedding{color:var(--color-accent);font-weight:600}.cal-cell i{position:absolute;bottom:0;font-style:normal;font-size:8px}.cal-add{margin-top:12px;width:100%;height:40px;border:1px solid var(--color-primary);background:transparent;letter-spacing:.16em;cursor:pointer}.cal-sheet-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#1e201c73;display:flex;align-items:flex-end;justify-content:center}.cal-sheet{width:min(100%,var(--max));background:var(--color-bg);padding:20px 18px calc(16px + env(safe-area-inset-bottom));animation:cal-sheet-up .28s ease-out}@keyframes cal-sheet-up{0%{transform:translateY(24px);opacity:.6}to{transform:translateY(0);opacity:1}}.cal-sheet-title{margin:0;text-align:center;letter-spacing:.2em;font-size:15px}.cal-sheet-tip{margin:10px 0 16px;text-align:center;font-size:12px;line-height:1.55;color:var(--color-text-secondary)}.cal-sheet-btn{display:block;width:100%;height:46px;margin-bottom:10px;border:0;background:var(--color-primary);color:#fff;letter-spacing:.12em;cursor:pointer}.cal-sheet-btn.alt{background:transparent;border:1px solid var(--color-primary);color:var(--color-primary)}.cal-sheet-cancel{display:block;width:100%;height:44px;margin-top:4px;border:0;background:transparent;color:var(--color-text-secondary);letter-spacing:.16em;cursor:pointer}.share-card-preview{display:flex;gap:12px;align-items:stretch;margin:0 0 16px;padding:12px;background:var(--color-bg-soft, #f3efe8);border:1px solid var(--color-border);text-align:left}.share-card-cover{width:64px;height:64px;object-fit:cover;flex-shrink:0;background:#ddd}.share-card-cover.placeholder{background:linear-gradient(135deg,#5f7264,#2f332f)}.share-card-body{min-width:0;flex:1;display:flex;flex-direction:column;justify-content:center;gap:6px}.share-card-title{font-size:14px;line-height:1.35;color:var(--color-text, #2f332f);letter-spacing:.04em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.share-card-desc{font-size:12px;line-height:1.4;color:var(--color-text-secondary, #7a756c);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.map-box{margin-top:14px;width:100%;min-height:88px;border:0;background:linear-gradient(135deg,#5f72641f,#b5162814),var(--color-bg-soft);display:flex;align-items:center;justify-content:space-between;padding:0 18px;cursor:pointer}.map-box em{font-style:normal;letter-spacing:.2em;color:var(--color-accent)}.closing{padding-bottom:24px}.closing-photo{width:100%}.closing-poem{margin:24px 0;text-align:center;font-family:var(--font-display);line-height:2;color:var(--color-text-secondary)}.closing-poem p{margin:0}.footer-mark{display:block;width:96px;margin:20px auto 0}.bottom-bar{position:fixed;left:50%;bottom:0;z-index:30;width:min(100%,var(--max));transform:translate(-50%);display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:#fbf8f3f5;border-top:1px solid var(--color-border);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 -4px 20px #2f332f0f}.bar-btn{height:44px;border:0;letter-spacing:.18em;cursor:pointer}.bar-btn.ghost{background:transparent;border:1px solid var(--color-primary);color:var(--color-primary)}.bar-btn.primary{background:var(--color-primary);color:#fff}.music-fab{position:fixed;right:max(16px,calc(50% - var(--max) / 2 + 16px));top:18px;z-index:50;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.5);background:#2f332f8c;color:#fff;font-size:18px;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.music-fab.spin{animation:spin 4s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.music-hint{position:fixed;right:max(70px,calc(50% - var(--max) / 2 + 70px));top:22px;z-index:50;padding:8px 14px;border:0;background:#2f332fe0;color:#fff;font-family:inherit;font-size:12px;letter-spacing:.1em;border-radius:16px;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;touch-action:manipulation;animation:hint-pulse 1.6s ease-in-out infinite}@keyframes hint-pulse{0%,to{opacity:.65}50%{opacity:1}}.share-guide-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#141210c7;display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;padding:env(safe-area-inset-top,8px) 18px 0;cursor:pointer;animation:guide-fade .2s ease-out}@keyframes guide-fade{0%{opacity:0}to{opacity:1}}.share-guide-arrow{margin-top:calc(env(safe-area-inset-top,8px) + 4px);margin-right:8px;filter:drop-shadow(0 2px 6px rgba(0,0,0,.35));animation:arrow-bounce 1.2s ease-in-out infinite}@keyframes arrow-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}.share-guide-text{width:100%;margin-top:18px;text-align:center;color:#fff}.share-guide-title{margin:0 0 6px;font-size:20px;letter-spacing:.18em;font-weight:500}.share-guide-sub{margin:0;font-size:13px;letter-spacing:.08em;color:#ffffffd9;line-height:1.6}.share-guide-tip{position:absolute;bottom:calc(40px + env(safe-area-inset-bottom,0px));left:0;right:0;text-align:center;color:#fff9;font-size:12px;letter-spacing:.16em}.fx-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:15;pointer-events:none;overflow:hidden}.fx-item{position:absolute;top:0;line-height:1;will-change:transform;transform:translate3d(0,-14vh,0);animation-fill-mode:backwards;animation-timing-function:linear;animation-iteration-count:infinite}.fx-snow{color:#8fa4c8;animation-name:fall-spawn-right}.fx-snow.drift-left{animation-name:fall-spawn-left}.fx-orange{animation-name:fall-orange-right;filter:saturate(.9)}.fx-orange.drift-left{animation-name:fall-orange-left}@keyframes fall-spawn-right{0%{transform:translate3d(0,-14vh,0) rotate(0)}to{transform:translate3d(18px,110vh,0) rotate(160deg)}}@keyframes fall-spawn-left{0%{transform:translate3d(0,-14vh,0) rotate(0)}to{transform:translate3d(-18px,110vh,0) rotate(-160deg)}}@keyframes fall-orange-right{0%{transform:translate3d(0,-14vh,0)}to{transform:translate3d(14px,110vh,0)}}@keyframes fall-orange-left{0%{transform:translate3d(0,-14vh,0)}to{transform:translate3d(-14px,110vh,0)}}.create{padding:20px 20px 56px}.create-head{display:flex;align-items:center;gap:12px;margin-bottom:8px}.create-head h1{margin:0;font-family:var(--font-display);font-size:24px;font-weight:400;letter-spacing:.12em}.create-head .back{border:0;background:none;padding:0;color:var(--color-text-muted);cursor:pointer}.create-hint{color:var(--color-text-muted);font-size:13px;line-height:1.7;margin:0 0 24px}.create-block{margin-bottom:28px}.create-block h2{margin:0 0 12px;font-size:14px;letter-spacing:.16em;font-weight:500;color:var(--color-text-secondary)}.create-block label{display:block;margin-bottom:12px;font-size:13px;color:var(--color-text-muted)}.create-block input[type=text],.create-block input[type=date],.create-block input[type=time],.create-block input:not([type]){display:block;width:100%;margin-top:6px;height:42px;border:1px solid var(--color-border);background:var(--color-surface);padding:0 12px;color:var(--color-text)}.pick{display:grid;place-items:center;width:100%;aspect-ratio:4 / 3;border:1px dashed var(--color-border);background:var(--color-surface);overflow:hidden;cursor:pointer;color:var(--color-text-muted)}.pick img{width:100%;height:100%;object-fit:cover}.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.slot{position:relative;aspect-ratio:1;border:1px dashed var(--color-border);background:var(--color-surface);overflow:hidden;cursor:pointer;display:grid;place-items:center;color:var(--color-text-muted)}.slot img{width:100%;height:100%;object-fit:cover}.slot em{position:absolute;left:0;right:0;bottom:0;padding:4px 6px;font-size:10px;font-style:normal;background:#2f332f8c;color:#fff;line-height:1.3;max-height:40%;overflow:hidden}.slot.empty span{font-family:var(--font-display);font-size:22px}:root{--color-bg: #f6f3ee;--color-bg-soft: #fbf8f3;--color-surface: #fffcfa;--color-primary: #2f332f;--color-primary-soft: #5f7264;--color-accent: #b51628;--color-accent-soft: #e8dfd4;--color-text: #2f332f;--color-text-secondary: #5f7264;--color-text-muted: #7a8278;--color-border: #e8dfd4;--font-display: "Songti SC", "STSong", "Noto Serif SC", "SimSun", serif;--font-body: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--page-bg: radial-gradient(ellipse 120% 60% at 50% -10%, rgba(181, 22, 40, .06), transparent 55%), linear-gradient(180deg, #fbf8f3 0%, #f6f3ee 40%, #f3efe8 100%);--s-pink: #c4a4a8;--s-ink: #3a3a3a;--s-muted: #8a8580;--max: 750px}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;height:100%;min-height:100%}body{font-family:var(--font-body);color:var(--color-text);background:var(--page-bg);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}img{display:block;max-width:100%}.btn-primary{display:flex;align-items:center;justify-content:center;width:100%;height:48px;border:0;background:var(--color-primary);color:#fff;letter-spacing:.2em;cursor:pointer}.btn-primary:active{opacity:.88}.btn-ghost{display:flex;align-items:center;justify-content:center;height:48px;border:1px solid var(--color-primary);background:transparent;color:var(--color-primary);letter-spacing:.2em;cursor:pointer}.shell{width:min(100%,var(--max));margin:0 auto;min-height:100vh}.site-footer{width:100%;padding:16px 12px 24px;text-align:center;font-size:11px;line-height:1.6;color:var(--color-text-muted);background:var(--page-bg)}.site-footer a{color:var(--color-text-muted);text-decoration:none}.site-footer a:active{opacity:.7}
