@import"https://gstatic.aby.pub/css2?family=Noto+Serif+SC:wght@700&display=swap";@import"https://gstatic.aby.pub/css2?family=Noto+Sans+SC:wght@400;500;600;700&display=swap";@font-face{font-family:Great Vibes;src:local("Great Vibes"),local("GreatVibes-Regular"),url(./GreatVibes-WeddingSubset-Cy8kJEFn.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-weight:100 700;font-display:swap;src:url(./material-symbols-EXFt9z2k.ttf) format("truetype")}:root{--font-sans: "Noto Sans SC", sans-serif;--font-serif: "Noto Serif SC", "STZhongsong", "华文中宋", "Songti SC", serif}:root{--primary: #ff6b9d;--primary-light: #ffb3d1;--primary-dark: #e91e63;--secondary: #f8bbd9;--accent: #ffe0ec;--background: #fffbfc;--surface: #f5f5f5;--surface-variant: #e8e8e8;--text-primary: #2d2d2d;--text-secondary: #757575;--text-hint: #bdbdbd;--wall-line: #e0e0e0;--error: #f44336;--welcome-grad-1: rgba(255, 228, 237, 1);--welcome-grad-2: rgba(255, 199, 218, .84);--welcome-grad-3: rgba(255, 163, 194, .66);--welcome-base: #ab5270;--welcome-sub: rgba(171, 82, 112, .86);--welcome-overlay: rgba(114, 49, 71, .16);--welcome-shadow: rgba(255, 107, 157, .24)}:root[data-theme=male]{--primary: #2f80ed;--primary-light: #b3d4ff;--primary-dark: #1257a6;--secondary: #cae0ff;--accent: #e4f0ff;--background: #fdfeff;--surface: #f5f7fa;--surface-variant: #e1e9f2;--text-primary: #1f2933;--text-secondary: #52606d;--text-hint: #9aa5b1;--wall-line: #d1d9e6;--error: #f44336;--welcome-grad-1: rgba(218, 232, 252, 1);--welcome-grad-2: rgba(176, 207, 248, .84);--welcome-grad-3: rgba(126, 176, 244, .66);--welcome-base: #537098;--welcome-sub: rgba(83, 112, 152, .86);--welcome-overlay: rgba(42, 61, 85, .16);--welcome-shadow: rgba(47, 128, 237, .24)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;width:100%;min-height:100%}body{font-family:var(--font-sans);font-weight:400;font-synthesis:none;color:var(--text-primary);background:var(--background);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input{font-family:inherit;-webkit-tap-highlight-color:transparent}button,[role=button],a,summary{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus{outline:none}button:focus-visible,a:focus-visible,summary:focus-visible,[role=button]:focus-visible{outline:2px solid color-mix(in srgb,var(--primary) 35%,transparent);outline-offset:2px}.page{min-height:100vh;min-height:100dvh;background:var(--background)}.center-loading{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-secondary)}.spinner{width:36px;height:36px;border-radius:50%;border:3px solid var(--surface-variant);border-top-color:var(--primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-box{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px}.top-app-bar{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--surface-variant);background:var(--background);position:sticky;top:0;z-index:5}.icon-btn{border:0;width:36px;height:36px;border-radius:18px;background:transparent;color:var(--text-primary);cursor:pointer;display:grid;place-items:center}.icon-btn:hover{background:color-mix(in srgb,var(--surface-variant) 60%,white)}.icon-btn .material-symbols-outlined{font-size:24px}.primary-btn{border:0;border-radius:16px;min-height:52px;width:100%;color:#fff;background:linear-gradient(90deg,var(--primary),var(--primary-light));font-size:16px;font-weight:700;cursor:pointer;box-shadow:0 6px 18px color-mix(in srgb,var(--primary) 30%,transparent)}.primary-btn:disabled{cursor:not-allowed;background:var(--surface);color:var(--text-secondary);box-shadow:none;border:1px solid var(--surface-variant)}.welcome-page{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;height:100vh;height:100dvh;overflow:hidden}.welcome-header{height:56px;display:flex;align-items:center;gap:8px;padding:0 20px;color:var(--text-primary);font-size:18px;font-weight:500}.welcome-slogan{font-weight:400;line-height:1}.welcome-container{max-width:448px;width:100%;margin:0 auto;flex:1;min-height:0;padding:24px 20px 0;display:flex;flex-direction:column}.welcome-fixed{flex:0 0 auto;display:flex;flex-direction:column;gap:24px}.welcome-card{position:relative;overflow:hidden;margin:0 4px;padding:24px 30px;border-radius:16px;background-color:#fff;background-image:linear-gradient(135deg,var(--welcome-grad-1) 0%,var(--welcome-grad-2) 48%,var(--welcome-grad-3) 100%);box-shadow:0 24px 32px var(--welcome-shadow)}.welcome-date{color:var(--welcome-base);font-size:16px;font-weight:400;letter-spacing:1.2px;margin-bottom:16px}.welcome-sub{margin-top:10px;color:var(--welcome-sub);letter-spacing:3px;font-size:15px}.welcome-title{margin:10px 0 0;font-size:36px;font-weight:700;line-height:1.15;letter-spacing:1px;color:var(--welcome-base)}.welcome-watermark{position:absolute;right:-31px;top:-6px;font-family:Great Vibes,cursive;font-size:92px;letter-spacing:8px;color:var(--welcome-overlay);transform:rotate(-18.34deg);-webkit-user-select:none;user-select:none;pointer-events:none}.welcome-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:12px 0 calc(40px + env(safe-area-inset-bottom))}.who-row{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--text-secondary);font-size:18px;margin-bottom:12px}.toggle-pill{display:inline-flex;padding:4px;border-radius:50px;background:var(--accent);box-shadow:0 4px 10px color-mix(in srgb,var(--primary) 15%,transparent)}.toggle-btn{border:0;background:transparent;color:var(--text-secondary);border-radius:46px;padding:9px 22px;cursor:pointer;font-size:16px;font-weight:400;transition:transform .12s ease,background-color .12s ease,box-shadow .12s ease}.toggle-btn.selected{background:#fff;color:var(--primary);font-weight:600}.toggle-btn:active{transform:translateY(2px)}.toggle-btn:not(.selected):active{background:color-mix(in srgb,var(--surface-variant) 80%,#fff)}.toggle-btn.selected:active{background:color-mix(in srgb,#fff 84%,var(--surface-variant));box-shadow:inset 0 2px 4px color-mix(in srgb,black 18%,transparent)}.relation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0 4px}.relation-card{border-radius:12px;border:0;aspect-ratio:1.05;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;cursor:pointer;box-shadow:0 4px 10px #0000000d;transition:transform .12s ease}.relation-card:active{transform:translateY(2px)}.bottom-search-entry{display:flex;align-items:center;gap:12px;height:52px;margin:0 4px 20px;padding:0 30px;border-radius:14px;border:1px solid var(--surface-variant);background:#fff;box-shadow:0 4px 10px #0000000d;color:var(--text-secondary);font-size:15px;cursor:pointer;transition:transform .12s ease}.bottom-search-entry:active{transform:translateY(2px)}.bottom-search-entry .material-symbols-outlined{font-size:20px;color:var(--text-secondary)}.relation-icon-wrap{width:56px;height:56px;border-radius:14px;background:color-mix(in srgb,var(--relation-color) 10%,transparent);display:grid;place-items:center}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24;display:inline-block;-webkit-user-select:none;user-select:none}.relation-icon{font-size:28px;color:var(--relation-color)}.relation-label{font-size:22px;font-weight:400;color:var(--text-primary)}strong{font-weight:600}.member-panel{background:#fff;border:1px solid var(--surface-variant);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:12px;min-height:100%}.member-panel-head{display:flex;align-items:center;gap:8px}.search-input{width:100%;border:1px solid var(--surface-variant);border-radius:12px;padding:12px 14px;font-size:14px;background:color-mix(in srgb,var(--surface) 60%,white)}.search-field{position:relative;display:flex;align-items:center}.search-field-icon{position:absolute;left:14px;font-size:20px;color:var(--text-secondary);pointer-events:none}.search-field-input{width:100%;border:1px solid var(--surface-variant);border-radius:14px;padding:14px 40px 14px 42px;font-size:15px;font-family:inherit;background:var(--surface)}.search-field-input:focus{outline:none;border-color:var(--primary-light);border-width:2px;padding:13px 39px 13px 41px}.search-field-clear{position:absolute;right:6px;border:0;background:transparent;cursor:pointer;color:var(--text-secondary);display:grid;place-items:center;width:32px;height:32px}.search-field-clear .material-symbols-outlined{font-size:18px}.member-list,.modal-list{overflow:auto;display:flex;flex-direction:column;gap:8px;overscroll-behavior:contain}.member-list{flex:1;min-height:0}.modal-list{flex:1;min-height:0;padding:12px 0}.member-row{border:1px solid var(--surface-variant);border-radius:10px;background:var(--background);min-height:46px;display:flex;align-items:center;padding:10px 12px;color:var(--text-primary);cursor:pointer;box-shadow:0 1px 4px color-mix(in srgb,black 3%,transparent);transition:background .2s,border-color .2s}.member-name{flex:1;text-align:left;font-size:14px;font-weight:600}.member-pill{padding:3px 8px;border-radius:999px;font-size:11px;background:var(--surface);color:var(--text-secondary)}.member-pill.highlighted{background:var(--secondary);color:var(--primary-dark)}.member-check-area{width:22px;margin-left:24px;display:flex;align-items:center;justify-content:flex-end}.member-check{font-size:22px;color:var(--primary)}.member-row.active{border-color:var(--primary-light);border-width:1.5px;background:color-mix(in srgb,var(--accent) 50%,white);box-shadow:0 2px 8px color-mix(in srgb,var(--primary) 8%,transparent)}.member-row.active .member-name{color:var(--primary-dark)}.empty-tip{color:var(--text-secondary);text-align:center;padding:20px 10px;display:flex;flex-direction:column;align-items:center;gap:4px}.empty-tip .empty-icon{font-size:52px;color:var(--surface-variant);margin-bottom:8px}.empty-tip p{margin:0;font-weight:500;font-size:16px}.empty-tip small{font-size:13px}.chart-empty{color:var(--text-secondary);text-align:center;padding:20px 10px}.query-page{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;height:100vh;height:100dvh}.tab-bar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid var(--surface-variant)}.tab-btn{border:0;height:46px;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:15px}.tab-btn.active{color:var(--primary);font-weight:700;border-bottom:2px solid var(--primary)}.seat-card-view{flex:1;padding:12px;display:flex;align-items:center;justify-content:center}.seat-card{width:min(640px,100%);border-radius:26px;padding:28px 24px;background:#fff;box-shadow:0 8px 24px color-mix(in srgb,black 8%,transparent);text-align:center}.seat-card h1{margin:0;font-size:48px;font-weight:700}.seat-card h2{margin:0;font-size:40px;font-weight:700}.seat-card .empty-sub{color:var(--text-secondary);font-size:18px;margin:10px 0 0}.seat-subtitle{color:var(--text-secondary);font-size:18px;font-weight:500;margin:8px 0 0}.seat-metrics{margin:34px 0;border-radius:20px;background:color-mix(in srgb,var(--primary) 14%,white);padding:22px 24px;display:flex;align-items:center}.metric-cell{display:flex;flex-direction:column;align-items:center;gap:8px}.metric-table{flex:2}.metric-seat{flex:1}.metric-divider{width:1px;height:74px;background:color-mix(in srgb,var(--primary) 25%,transparent);flex-shrink:0}.seat-metrics label{color:var(--text-secondary);font-size:16px;font-weight:600}.seat-metrics strong{color:var(--primary);font-size:44px;line-height:1}.seat-wish{color:var(--text-secondary);font-size:17px;font-weight:600;margin:0 0 24px}.text-btn{border:0;background:transparent;color:var(--primary);font-size:24px;font-weight:700;text-decoration:underline;cursor:pointer}.map-view-wrap{position:relative;flex:1;min-height:0}.chart-viewport{width:100%;height:100%;min-height:100%;background:var(--surface);overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}.chart-canvas{position:relative;transform-origin:top left}.chart-stage{position:absolute;display:flex;align-items:center;justify-content:center;background:#e8eef5;color:#52606d;font-weight:600;font-size:14px}.chart-wall{background:#bdbdbd;pointer-events:none}.chart-wall-line{background:var(--wall-line);pointer-events:none}.seat-bubble{position:absolute;--bubble-scale: 1;transform:translate(-50%,-100%) scale(var(--bubble-scale));background:color-mix(in srgb,var(--primary) 80%,white);color:#fff;border-radius:4px;font-size:12px;font-weight:700;padding:2px 6px;white-space:nowrap;pointer-events:none;animation:floaty 1.6s ease-in-out infinite;z-index:2;opacity:.8}.seat-bubble:after{content:"";position:absolute;left:50%;top:calc(100% - 1px);transform:translate(-50%);border:5px solid transparent;border-top-color:color-mix(in srgb,var(--primary) 80%,white)}.seat-bubble.below{transform:translate(-50%) scale(var(--bubble-scale))}.seat-bubble.below:after{top:auto;bottom:calc(100% - 1px);border-top-color:transparent;border-bottom-color:color-mix(in srgb,var(--primary) 80%,white)}@keyframes floaty{0%,to{transform:translate(-50%,-100%) scale(var(--bubble-scale)) translateY(0)}50%{transform:translate(-50%,-100%) scale(var(--bubble-scale)) translateY(-6px)}}@keyframes floaty-below{0%,to{transform:translate(-50%) scale(var(--bubble-scale)) translateY(0)}50%{transform:translate(-50%) scale(var(--bubble-scale)) translateY(6px)}}.seat-bubble.below{animation-name:floaty-below}.fab{position:absolute;right:18px;bottom:18px;width:52px;height:52px;border-radius:50%;border:0;background:#fff;color:var(--primary);font-size:28px;box-shadow:0 6px 14px color-mix(in srgb,black 15%,transparent);cursor:pointer}.fab-icon{font-size:30px}.modal-mask{position:fixed;inset:0;background:#00000047;display:flex;justify-content:center;align-items:flex-end;z-index:20}.modal-sheet{width:min(560px,100%);min-height:50vh;min-height:50dvh;max-height:95vh;max-height:95dvh;background:var(--background);border-radius:28px 28px 0 0;padding:16px 24px;display:flex;flex-direction:column;gap:12px;transform:translateY(28px);opacity:0;overscroll-behavior:contain;transition:transform .26s cubic-bezier(.22,1,.36,1),opacity .2s ease,height .12s ease-out;will-change:transform,opacity,height}.modal-sheet.open{transform:translateY(0);opacity:1}.modal-sheet.dragging{transition:none}.sheet-handle{align-self:center;width:72px;height:24px;margin-top:-10px;margin-bottom:2px;display:flex;align-items:center;justify-content:center;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}.sheet-handle:before{content:"";width:40px;height:4px;border-radius:999px;background:var(--surface-variant)}.modal-sheet.dragging .sheet-handle{cursor:grabbing}.modal-header{display:flex;justify-content:center;align-items:center;position:relative}.modal-title{font-size:20px;font-weight:600;letter-spacing:.3px}.modal-close{position:absolute;right:0}.modal-divider{border:0;height:1px;background:var(--surface-variant);margin:0}@media(max-height:740px){.welcome-header{height:52px;padding:0 16px;font-size:17px}.welcome-container{max-width:420px;padding:12px 16px 0}.welcome-fixed{gap:14px}.welcome-scroll{padding-top:6px;padding-bottom:calc(18px + env(safe-area-inset-bottom))}.welcome-card{margin:0 4px;padding:23px 24px;border-radius:14px}.welcome-date{font-size:15px;letter-spacing:1px}.welcome-sub{margin-top:8px;font-size:14px;letter-spacing:2.5px}.welcome-title{margin-top:8px;font-size:32px}.welcome-watermark{right:-24px;top:-10px;font-size:78px}.who-row{font-size:16px}.toggle-btn{padding:7px 18px;font-size:15px}.relation-grid{gap:10px}.relation-card{aspect-ratio:1.12;gap:10px}.relation-icon-wrap{width:50px;height:50px}.relation-icon{font-size:25px}.relation-label{font-size:20px}}@media(min-height:861px){.welcome-container{padding-top:28px}.welcome-fixed{gap:30px}.welcome-scroll{padding-top:12px;padding-bottom:calc(30px + env(safe-area-inset-bottom))}.relation-grid{gap:16px}}@media(max-width:640px){.welcome-container{padding:16px 16px 0}.seat-card h1,.seat-metrics strong{font-size:36px}}@media(max-width:640px)and (max-height:740px){.welcome-container{padding:12px 16px 0}}@media(max-width:640px)and (min-height:861px){.welcome-container{padding-top:28px}}
