@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--color-bg: #161826;--color-surface: #232532;--color-text: #e9e9ed;--color-accent: #9184d9;--color-accent-2: #a7a1db;--color-divider: color-mix(in srgb, #e9e9ed 16%, transparent);--color-neutral-100: #f3f5fe;--color-neutral-200: #e4e7f5;--color-neutral-300: #cfd3e5;--color-neutral-400: #b2b6ca;--color-neutral-500: #9397ab;--color-neutral-600: #75798c;--color-neutral-700: #595d6c;--color-neutral-800: #3f424d;--color-neutral-900: #292b31;--color-accent-100: #f5f4ff;--color-accent-200: #e7e5fe;--color-accent-300: #d2cefd;--color-accent-400: #b5abfc;--color-accent-500: #968ae0;--color-accent-600: #796cbf;--color-accent-700: #5d5294;--color-accent-800: #423a6a;--color-accent-900: #2b2741;--color-accent-2-100: #f5f4ff;--color-accent-2-200: #e7e5fe;--color-accent-2-300: #d2cefd;--color-accent-2-400: #b5afe8;--color-accent-2-500: #9690c9;--color-accent-2-600: #7972a9;--color-accent-2-700: #5c5783;--color-accent-2-800: #423e5d;--color-accent-2-900: #2b293a;--color-section: #262a60;--color-section-glow: #353b80;--color-section-ghost: #4c5397;--font-heading: "Inter", system-ui, sans-serif;--font-heading-weight: 500;--font-body: "Inter", system-ui, sans-serif;--space-1: 2.8px;--space-2: 5.6px;--space-3: 8.4px;--space-4: 11.2px;--space-6: 16.8px;--space-8: 22.4px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--shadow-sm: 0 0 0 1px #3f424d;--shadow-md: 0 0 0 1px #595d6c, 0 6px 18px rgba(0,0,0,.55);--shadow-lg: 0 0 0 1px #9397ab, 0 16px 40px rgba(0,0,0,.65)}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body)}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:var(--font-heading-weight)}.lighten{mix-blend-mode:lighten;background-color:transparent}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-size:15px;line-height:1.55;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-heading-weight);line-height:1.12;letter-spacing:-.015em;margin:0 0 var(--space-2)}h1{font-size:42px}h2{font-size:32px}h3{font-size:25px}h4{font-size:20px}h5{font-size:16px}h6{font-size:13px}h6{letter-spacing:.08em;text-transform:uppercase}p{margin:0 0 var(--space-3)}a{color:var(--color-accent);text-underline-offset:3px}img{display:block;max-width:100%}figure{margin:0}figcaption{font-size:11px;margin-top:var(--space-1);color:color-mix(in srgb,var(--color-text) 55%,transparent)}.text-muted{color:color-mix(in srgb,var(--color-text) 55%,transparent)}:focus{outline:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::selection{background:color-mix(in srgb,var(--color-accent) 30%,transparent)}.hr{height:1px;border:0;margin:var(--space-4) 0;background:linear-gradient(to right,transparent,var(--color-divider) 48px,var(--color-divider) calc(100% - 48px),transparent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;text-decoration:none;font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:14px;line-height:1.2;color:var(--color-text);background:transparent;border:1px solid transparent;padding:var(--space-2) calc(var(--space-3) * 1.2);border-radius:var(--radius-md)}.btn svg{display:block}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{color:var(--color-accent);border-color:var(--color-accent)}.btn-primary:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)}.btn-primary:active{background:color-mix(in srgb,var(--color-accent) 22%,transparent)}.btn-secondary{border-color:var(--color-divider)}.btn-secondary:hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.btn-secondary:active{background:color-mix(in srgb,var(--color-text) 14%,transparent)}.btn-ghost{color:var(--color-accent);padding-inline:var(--space-1)}.btn-ghost:hover{background:color-mix(in srgb,var(--color-accent) 10%,transparent)}.btn-ghost:active{background:color-mix(in srgb,var(--color-accent) 18%,transparent)}.btn-icon{width:36px;height:36px;padding:0}.btn-block{width:100%;margin-top:var(--space-2)}.field>label{display:block;font-size:12px;margin-bottom:5px;color:color-mix(in srgb,var(--color-text) 70%,transparent)}.input{width:100%;min-height:36px;padding:6px 10px;font:inherit;font-size:14px;color:var(--color-text);caret-color:var(--color-accent);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-md)}.input:hover{border-color:color-mix(in srgb,var(--color-text) 45%,transparent)}.input:focus-visible{border-color:var(--color-accent);outline-offset:0}textarea.input{min-height:90px;resize:vertical}.radio{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.radio input,.seg-opt input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.radio .dot{width:16px;height:16px;flex:none;border-radius:50%;border:1.5px solid var(--color-divider)}.radio:hover .dot{border-color:var(--color-accent)}.radio input:checked+.dot{border-color:var(--color-accent);background:var(--color-accent);box-shadow:inset 0 0 0 4px var(--color-bg)}.radio input:focus-visible+.dot{outline:2px solid var(--color-accent);outline-offset:2px}.seg{display:inline-flex;overflow:hidden;border:1px solid var(--color-divider);border-radius:var(--radius-md)}.seg-opt{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;font-size:13px;cursor:pointer}.seg-opt+.seg-opt{border-left:1px solid var(--color-divider)}.seg-opt:has(input:checked){color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.seg-opt:not(:has(input:checked)):hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.seg-opt:has(input:focus-visible){outline:2px solid var(--color-accent);outline-offset:-2px}.card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-surface)}.card-kicker{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent)}.card-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:17px;line-height:1.2}.card-body{margin:0;font-size:13px;opacity:.8;flex:1}.card-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:color-mix(in srgb,var(--color-text) 50%,transparent)}.elev-sm{box-shadow:var(--shadow-sm)}.elev-md{box-shadow:var(--shadow-md)}.elev-lg{box-shadow:var(--shadow-lg)}.tag{display:inline-flex;align-items:center;font-size:11px;letter-spacing:.02em;padding:3px 10px;border-radius:calc(var(--radius-md) * .75)}.tag-accent{background:var(--color-accent-800);color:var(--color-accent-100)}.tag-accent-2{background:var(--color-accent-2-800);color:var(--color-accent-2-100)}.tag-neutral{background:var(--color-neutral-800);color:var(--color-neutral-100)}.tag-outline{border:1px solid var(--color-accent);color:var(--color-accent)}.nav{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:none}.nav-brand{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:18px;margin-right:auto}.nav a{color:inherit;text-decoration:none;font-size:14px}.nav a:hover,.nav a[aria-current=page]{color:var(--color-accent)}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--color-text) 60%,transparent);padding:var(--space-2);border-bottom:1px solid transparent}.table td{padding:var(--space-2);border-bottom:1px solid transparent}.table thead tr{background:linear-gradient(to right,transparent,var(--color-divider) 48px,var(--color-divider) calc(100% - 48px),transparent) no-repeat bottom / 100% 1px}.table tbody tr{background:linear-gradient(to right,transparent,color-mix(in srgb,var(--color-text) 8%,transparent) 48px,color-mix(in srgb,var(--color-text) 8%,transparent) calc(100% - 48px),transparent) no-repeat bottom / 100% 1px}.table tbody tr:hover{background:linear-gradient(color-mix(in srgb,var(--color-text) 4%,transparent),color-mix(in srgb,var(--color-text) 4%,transparent)) no-repeat 0 0 / 100% 100%,linear-gradient(to right,transparent,color-mix(in srgb,var(--color-text) 8%,transparent) 48px,color-mix(in srgb,var(--color-text) 8%,transparent) calc(100% - 48px),transparent) no-repeat bottom / 100% 1px}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--space-4);background:color-mix(in srgb,var(--color-neutral-900) 50%,transparent)}.dialog{width:min(440px,100%);display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-lg)}.dialog-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:20px}.dialog-body{font-size:14px;opacity:.85}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2)}:root{--font-body: "Inter", "Noto Sans TC", "Noto Sans SC", "Noto Sans JP", "Noto Sans KR", system-ui, sans-serif;--font-heading: var(--font-body);--cat-groom-bg: #2b3a5e;--cat-groom-tx: #bacaf2;--cat-groom-bd: #4a5f92;--cat-bride-bg: #5a2c3e;--cat-bride-tx: #f2c3d1;--cat-bride-bd: #8d4a62;--cat-shared-bg: #3f424d;--cat-shared-tx: #e4e7f5;--cat-shared-bd: #595d6c;--sat-1: #63a67f;--sat-2: #c2a24d;--sat-3: #c77a4e;--sat-4: #c35f62;--backdrop: color-mix(in srgb, var(--color-neutral-900) 62%, transparent);--muted: var(--color-neutral-500);--faint: var(--color-neutral-600)}:lang(zh-Hans){--font-body: "Inter", "Noto Sans SC", "Noto Sans TC", system-ui, sans-serif}:lang(ja){--font-body: "Inter", "Noto Sans JP", system-ui, sans-serif}:lang(ko){--font-body: "Inter", "Noto Sans KR", system-ui, sans-serif}html,body,#root{height:100%}body{font-family:var(--font-body);font-size:13px}button{font-family:inherit}.btn{font-size:12.5px;white-space:nowrap}.btn[aria-pressed=true]{color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.btn-danger{color:var(--sat-4);border-color:color-mix(in srgb,var(--sat-4) 45%,transparent)}.btn-danger:hover{background:color-mix(in srgb,var(--sat-4) 12%,transparent)}.btn-ghost.btn-danger{border-color:transparent}.muted{color:var(--muted)}.faint{color:var(--faint)}.grow{flex:1}.row{display:flex;align-items:center;gap:var(--space-2)}.col{display:flex;flex-direction:column;gap:var(--space-2)}.num{font-variant-numeric:tabular-nums}.seg-opt{font-size:12px;background:none;border:0;color:var(--muted);font-family:inherit}.seg-opt[aria-pressed=true]{color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.seg-opt:first-child{border-radius:calc(var(--radius-md) - 1px) 0 0 calc(var(--radius-md) - 1px)}.seg-opt:last-child{border-radius:0 calc(var(--radius-md) - 1px) calc(var(--radius-md) - 1px) 0}.seg-opt:only-child{border-radius:calc(var(--radius-md) - 1px)}.input{font-size:13px}select.input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.search{position:relative}.search>svg{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--faint)}.search>.input{padding-left:28px;min-height:32px;font-size:12px}.check{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;color:var(--color-neutral-400)}.check input{accent-color:var(--color-accent)}.shell{display:flex;flex-direction:column;height:100%}.topnav{display:flex;align-items:flex-end;gap:var(--space-8);padding:var(--space-3) var(--space-6) 0;background:var(--color-surface)}.brand{display:flex;align-items:baseline;gap:8px;font:500 18px/1 var(--font-heading);padding-bottom:12px}.brand small{font:400 11px/1 var(--font-body);color:var(--muted);letter-spacing:.14em}.brand-event{font:400 13px/1 var(--font-body);color:var(--muted);margin-left:var(--space-2)}.tabs{display:flex;gap:2px;margin-right:auto}.tab{padding:10px 16px;border-radius:var(--radius-md) var(--radius-md) 0 0;display:flex;align-items:center;gap:7px;color:var(--muted);text-decoration:none;font-size:13px}.tab:hover{color:var(--color-text)}.tab.active{background:var(--color-bg);color:var(--color-text);font-weight:500}.nav-actions{display:flex;gap:var(--space-2);padding-bottom:8px;align-items:center}.page{flex:1;min-height:0;overflow:auto}.bottomnav{display:none}.lang-select{width:auto;min-height:32px;padding:4px 8px;font-size:12px}@media (max-width: 639px){.topnav{display:none}.bottomnav{display:flex;background:var(--color-surface);border-top:1px solid var(--color-divider);padding:8px 0 max(10px,env(safe-area-inset-bottom))}.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:10px;color:var(--muted);text-decoration:none}.bottomnav a.active{color:var(--color-accent)}}.stats{display:flex;align-items:center;gap:var(--space-8);padding:var(--space-3) var(--space-6);background:var(--color-bg);border-bottom:1px solid var(--color-divider);flex-wrap:wrap}.stats .big{font:500 19px/1 var(--font-heading)}.pill{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;color:var(--color-accent-300);border:1px solid var(--color-accent-800);border-radius:999px;padding:3px 8px;cursor:help}.bar{height:4px;border-radius:999px;background:var(--color-neutral-900);overflow:hidden}.bar>div{height:100%;background:var(--color-accent)}.bands{display:flex;align-items:center;gap:18px;margin-left:auto}.bands .b{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--faint)}.bands .b strong{font-weight:500;font-size:12px;color:var(--color-text)}.vr{width:1px;height:20px;background:var(--color-divider)}.stats-compact{display:none}@media (max-width: 639px){.stats{display:none}.stats-compact{display:flex;gap:14px;padding:8px 16px;background:var(--color-surface);font-size:11px;color:var(--muted)}.stats-compact strong{color:var(--color-text);font-weight:500;font-size:13px}}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex:none}.sat-1{--sat: var(--sat-1)}.sat-2{--sat: var(--sat-2)}.sat-3{--sat: var(--sat-3)}.sat-4{--sat: var(--sat-4)}.dot.sat-1,.dot.sat-2,.dot.sat-3,.dot.sat-4{background:var(--sat)}.cat-groom{--cbg: var(--cat-groom-bg);--ctx: var(--cat-groom-tx);--cbd: var(--cat-groom-bd)}.cat-bride{--cbg: var(--cat-bride-bg);--ctx: var(--cat-bride-tx);--cbd: var(--cat-bride-bd)}.cat-shared{--cbg: var(--cat-shared-bg);--ctx: var(--cat-shared-tx);--cbd: var(--cat-shared-bd)}.cat-tag{background:var(--cbg);color:var(--ctx);font-size:10.5px}.pip{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;flex:none;font:500 11px/1 var(--font-body);background:var(--cbg);color:var(--ctx);-webkit-user-select:none;user-select:none}.pip.scored{box-shadow:0 0 0 2px var(--sat)}.pip.companion{font-size:10.5px}.pip.empty{background:none;border:1px dashed var(--color-accent-700);color:var(--color-accent);font-size:13px}.pip.sm{width:24px;height:24px;font-size:10px}.pip.lg{width:38px;height:38px;font-size:14px}.snm{font-size:9.5px;line-height:1.1;color:var(--color-neutral-400);white-space:nowrap;max-width:64px;overflow:hidden;text-overflow:ellipsis}.chip{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:var(--radius-sm);background:var(--cbg);color:var(--ctx);border:1px solid var(--cbd);font-size:11px;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.chip .plus{opacity:.6}.chip.guiding{box-shadow:0 0 0 1px var(--color-accent),0 0 12px color-mix(in srgb,var(--color-accent) 40%,transparent)}.ring{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:none;background:conic-gradient(var(--sat) 0 calc(var(--p) * 1turn),var(--color-neutral-900) 0 1turn)}.ring:after{content:"";width:16px;height:16px;border-radius:50%;background:var(--color-surface)}.tag-avoid{border:1px solid var(--sat-4);color:var(--sat-4)}.tag{gap:4px}.delta-pos{color:var(--sat-1)}.delta-neg{color:var(--sat-3)}.kicker{font:500 10.5px/1 var(--font-heading);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.seating{display:flex;flex-direction:column;height:100%}.seating-main{flex:1;display:flex;min-height:0}.pool{width:248px;flex:none;border-right:1px solid var(--color-divider);display:flex;flex-direction:column;background:var(--color-surface);min-height:0}.pool.collapsed{display:none}.pool-head{padding:var(--space-4) var(--space-4) var(--space-3)}.pool-body{flex:1;overflow:auto;padding:0 var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)}.pool-body.drop-over{background:color-mix(in srgb,var(--color-accent) 6%,transparent)}.pool-cat{display:flex;align-items:center;gap:7px;margin-bottom:var(--space-2);font-size:11px}.pool-cat .bar3{width:3px;height:11px;border-radius:2px;background:var(--cbd)}.pool-grp{font-size:9.5px;color:var(--faint);margin:10px 0 6px 10px;letter-spacing:.08em}.pool-grp:first-of-type{margin-top:0}.chips{display:flex;flex-wrap:wrap;gap:5px;margin-left:10px}.stage{flex:1;position:relative;min-width:0}.stage-tools{position:absolute;top:var(--space-4);right:var(--space-4);z-index:4;display:flex;gap:var(--space-2)}.stage-tools .seg,.stage-tools .btn-secondary{background:var(--color-surface)}.toolbar{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-6);background:var(--color-surface);border-top:1px solid var(--color-divider);flex-wrap:wrap}.auto-panel{padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--color-divider);display:flex;flex-direction:column;gap:var(--space-2)}.auto-hint{display:flex;align-items:flex-start;gap:6px;font-size:10.5px;line-height:1.45;color:var(--muted)}.auto-hint svg{color:var(--color-accent);flex:none;margin-top:1px}.dirty-dot{width:6px;height:6px;border-radius:50%;background:var(--color-accent)}.canvas{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background-color:var(--color-bg);background-image:radial-gradient(circle,var(--color-neutral-800) 1px,transparent 1px);touch-action:none;cursor:default}.canvas.panning{cursor:grabbing}.world{position:absolute;left:0;top:0;transform-origin:0 0}.rtable{position:absolute;width:340px;height:340px}.rtable.dim{opacity:.22}.rtable .sel{position:absolute;top:-12px;right:-12px;bottom:-12px;left:-12px;border-radius:50%;border:1px dashed var(--color-accent-700);pointer-events:none}.rtable.guide-best .sel{border-color:var(--sat-1)}.rtable .grp{position:absolute;top:54px;right:54px;bottom:54px;left:54px;border-radius:50%}.rtable .center{position:absolute;top:74px;right:74px;bottom:74px;left:74px;border-radius:50%;background:var(--color-surface);box-shadow:var(--shadow-sm);display:grid;place-items:center;text-align:center;cursor:grab}.rtable .center.drop-over{box-shadow:0 0 0 2px var(--color-accent)}.rtable .t-name{font:500 12px/1 var(--font-heading);color:var(--color-neutral-400);letter-spacing:.06em}.rtable .t-count{font:500 26px/1.2 var(--font-heading);margin-top:4px}.rtable .t-count small{color:var(--faint);font-size:16px}.rtable .t-avg{display:inline-flex;align-items:center;gap:5px;margin-top:5px;font-size:10.5px;color:var(--muted)}.seat{position:absolute;left:50%;top:50%;width:0;height:0}.seat>.seat-in{position:absolute;left:-36px;width:72px;height:56px;display:flex;flex-direction:column-reverse;align-items:center;gap:4px}.seat .pip{cursor:pointer}.seat.drop-over .pip{box-shadow:0 0 0 2px var(--color-accent),0 0 14px color-mix(in srgb,var(--color-accent) 50%,transparent)}.canvas.lod-low .snm,.canvas.lod-low .t-tools{display:none}.zoom{position:absolute;left:var(--space-4);bottom:var(--space-4);display:flex;align-items:center;gap:2px;padding:3px;border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm);z-index:3}.zoom .btn{font-size:11px;padding:4px 8px}.zoom .btn-icon{width:26px;height:26px}.zoom .pct{font-size:11px;min-width:38px;text-align:center}.canvas-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--muted);font-size:13px;padding:24px;text-align:center;pointer-events:none}.board{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto;background:var(--color-bg)}.board-head{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);padding-right:220px}.board-grid{padding:0 var(--space-6) var(--space-6);display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:var(--space-4)}.tcard{padding:var(--space-4);gap:var(--space-3)}.tcard.full{opacity:.85}.tcard.drop-over{box-shadow:0 0 0 1px var(--color-accent)}.tcard-head{display:flex;align-items:center;gap:9px}.tcard-head .t{font:500 14px/1 var(--font-heading)}.seat-cell{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.seat-cell.drop-over .pip{box-shadow:0 0 0 2px var(--color-accent)}.tcard-foot{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--faint)}.add-card{display:grid;place-items:center;min-height:150px;border:1px dashed var(--color-neutral-800);border-radius:var(--radius-md);color:var(--faint);background:none;cursor:pointer;font-family:inherit}.add-card:hover{border-color:var(--color-accent-700)}@media (max-width: 639px){.board-head{padding-right:var(--space-6)}.board-grid{grid-template-columns:1fr;padding:12px 16px 120px}.pip.touch{width:34px;height:34px}}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--backdrop);display:grid;place-items:center;padding:var(--space-4)}.backdrop.clear{background:transparent;display:block}.dialog{max-height:calc(100vh - 32px);overflow:auto}.dialog.wide{width:min(620px,100%)}.dialog-head{display:flex;align-items:flex-start;gap:var(--space-3)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.popover{position:fixed;z-index:51;width:400px;max-height:min(560px,calc(100vh - 24px));overflow:auto;border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-lg);padding:var(--space-4)}@media (max-width: 639px){.dialog.wide{width:100%;height:100%;max-height:none;border-radius:0}.grid2{grid-template-columns:1fr}.backdrop.sheet-host{place-items:end stretch;padding:0}.popover{left:0!important;right:0;top:auto!important;bottom:0;width:auto;border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:80vh;padding-bottom:max(22px,env(safe-area-inset-bottom))}.popover:before{content:"";display:block;width:36px;height:4px;border-radius:999px;background:var(--color-neutral-800);margin:-4px auto 12px}}.cand{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:var(--radius-md);cursor:pointer;border:0;width:100%;text-align:left;font-family:inherit;color:inherit;background:none}.cand:hover:not(:disabled){background:color-mix(in srgb,var(--color-text) 6%,transparent)}.cand.top{background:var(--color-bg)}.cand.top:first-of-type{box-shadow:inset 0 0 0 1px var(--color-accent-800)}.cand:disabled{opacity:.45;cursor:not-allowed}.cand .nm{font:500 12px/1.2 var(--font-heading)}.cand .sub{font-size:9.5px;line-height:1.3;color:var(--faint)}.cand .sc{text-align:right;font-size:9.5px}.cand .sc strong{display:block;font:500 14px/1 var(--font-heading);color:var(--color-text);margin-bottom:2px}.menu-item{display:flex;align-items:center;gap:10px;padding:11px 4px;font-size:13.5px;background:none;border:0;width:100%;color:var(--color-text);cursor:pointer;font-family:inherit;text-align:left;border-radius:var(--radius-sm)}.menu-item:hover{background:color-mix(in srgb,var(--color-text) 6%,transparent)}.menu-item svg{color:var(--color-accent)}.menu-item.danger,.menu-item.danger svg{color:var(--sat-4)}.divider{height:1px;background:var(--color-divider);margin:6px 0}.hovercard{position:fixed;z-index:40;width:232px;padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-lg);pointer-events:none}.toast{position:fixed;left:50%;bottom:84px;transform:translate(-50%);z-index:60;background:var(--color-surface);box-shadow:var(--shadow-lg);border-radius:var(--radius-md);padding:10px 14px;display:flex;gap:12px;align-items:center;max-width:min(560px,calc(100vw - 32px));font-size:12.5px}.ghost{position:fixed;z-index:70;pointer-events:none;transform:translate(-50%,-50%)}.guide-line{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:30}.guide-badge{position:fixed;z-index:31;pointer-events:none;padding:3px 7px;border-radius:var(--radius-sm);background:var(--color-accent-900);font:500 10.5px/1 var(--font-body)}.guide-hint{position:fixed;z-index:31;pointer-events:none;display:flex;align-items:center;gap:6px;padding:5px 9px;border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm);font-size:10.5px;color:var(--color-neutral-400)}.fabs{position:fixed;right:16px;bottom:84px;display:none;flex-direction:column;gap:10px;z-index:20}.fab{width:50px;height:50px;border-radius:50%;border:0;display:grid;place-items:center;cursor:pointer;background:var(--color-surface);color:var(--color-accent);box-shadow:var(--shadow-md)}.fab.primary{background:var(--color-accent-900);color:var(--color-accent-200)}@media (max-width: 639px){.fabs{display:flex}.pool,.toolbar-desktop,.stage-tools .print-btn,.zoom .desk{display:none!important}.toolbar{padding:8px 12px;gap:6px}}.guests-page{padding:var(--space-4) var(--space-6) var(--space-6)}.guests-head{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-3)}.guests-head h1{font-size:17px;margin:0}.kpi{text-align:right}.kpi strong{display:block;font:500 15px/1 var(--font-heading)}.kpi span{font-size:10px;color:var(--faint)}.filters{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.table td,.table th{font-size:12px}.table tbody tr{cursor:pointer}.table .trash{visibility:hidden}.table tbody tr:hover .trash{visibility:visible}.table tr.declined{opacity:.5}.table tr.declined .gname{text-decoration:line-through}.gname{font:500 13px/1.25 var(--font-heading)}.gsub{font-size:10px;color:var(--faint)}.tags{display:flex;gap:4px;flex-wrap:wrap}.tags .tag{font-size:10px;padding:2px 7px}.gcards{display:none}@media (max-width: 639px){.guests-page{padding:12px 16px 100px}.guests-table{display:none}.gcards{display:flex;flex-direction:column;gap:8px}.gcard{display:flex;gap:10px;padding:10px;border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer}.kpi-row{display:none!important}}.tag-input{display:flex;flex-wrap:wrap;gap:4px;padding:6px;border:1px solid var(--color-divider);border-radius:var(--radius-md);min-height:36px;position:relative}.tag-input .tag{cursor:pointer}.tag-input input{border:0;background:none;color:var(--color-text);font:inherit;font-size:11.5px;min-width:80px;flex:1;outline:none}.suggest{position:absolute;left:0;right:0;top:100%;z-index:5;margin-top:4px;background:var(--color-surface);box-shadow:var(--shadow-md);border-radius:var(--radius-md);max-height:200px;overflow:auto}.suggest button{display:flex;width:100%;gap:8px;align-items:center;padding:6px 10px;background:none;border:0;color:var(--color-text);cursor:pointer;font:inherit;font-size:12px}.suggest button:hover,.suggest button:focus-visible{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.stepper{display:flex;align-items:center;gap:var(--space-2)}.stepper .btn-icon{width:32px;height:32px}.narrow{max-width:760px;padding:var(--space-6)}.narrow h1{font-size:20px}.panel{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4);margin-bottom:var(--space-6)}.panel h2{font-size:14px;margin:0}.wedding-list .wedding{gap:var(--space-3);cursor:pointer}.wedding-list .wedding:hover,.wedding-list .wedding:focus-visible{box-shadow:inset 0 0 0 1px var(--color-accent);outline:none}.wedding-stats{display:flex;flex-wrap:wrap;gap:var(--space-4);font-size:12px;color:var(--muted)}.msg-list{margin:0;padding-left:18px;font-size:12px}.err{color:var(--sat-4)}.warn{color:var(--sat-2)}.login{min-height:100%;display:grid;place-items:center;padding:16px}.login .dialog{width:min(360px,100%)}@media (max-width: 639px){.backdrop.clear{background:var(--backdrop)}}.m-head{display:none}@media (max-width: 639px){.m-head{display:flex;align-items:center;gap:10px;padding:12px 16px 10px}}.explain{background:var(--color-bg);border-radius:var(--radius-md);padding:var(--space-4);font-size:12px;color:var(--color-neutral-400)}.explain p{margin:0 0 var(--space-2);line-height:1.6}.explain strong{color:var(--color-accent-300);font-weight:500;margin-right:4px}.num-preview{border-collapse:collapse;font-size:11.5px;font-variant-numeric:tabular-nums}.num-preview th{text-align:left;color:var(--faint);font-weight:500;padding:2px 8px 2px 0}.num-preview td{text-align:center;padding:2px 5px;min-width:22px;color:var(--color-text)}.num-preview td.changed{color:var(--color-accent)}.pip.pending{outline:1px dashed var(--color-neutral-400);outline-offset:3px}.chip.pending{border-style:dashed}.canvas,.board,.pool-body{-webkit-user-select:none;user-select:none}.pip{letter-spacing:-.04em;white-space:nowrap}.pip.sm{font-size:9px}.seat-flow{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start}.seat-flow .seat-cell{width:58px}.party{display:flex;gap:10px;position:relative;isolation:isolate}.party:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;z-index:-1;border-radius:14px;background:color-mix(in srgb,var(--cbg) 55%,transparent);border:1px solid var(--cbd)}.snm{max-width:72px}.pip{position:relative}.pip.pending{outline:2px dashed color-mix(in srgb,var(--color-text) 75%,transparent);outline-offset:2px}.pip.pending:after{content:"?";position:absolute;top:-5px;right:-5px;width:13px;height:13px;border-radius:50%;display:grid;place-items:center;font:700 9px/1 var(--font-body);letter-spacing:0;background:var(--color-text);color:var(--color-bg);box-shadow:0 0 0 1.5px var(--color-surface)}.chip.pending{border-style:dashed;border-width:1.5px}.chip.pending:after{content:"?";font-weight:700;margin-left:2px}.backdrop.top{z-index:80}.seat .pip{width:36px;height:36px;font-size:12px}.rtable .t-name{display:inline-flex;align-items:center;gap:4px}.rtable .t-tools{display:flex;justify-content:center;gap:2px;margin-top:4px;visibility:hidden}.rtable .t-tools .btn{padding:2px 5px;font-size:12px}.rtable:hover .t-tools,.rtable.selected .t-tools{visibility:visible}@media (hover: none){.rtable .t-tools{visibility:visible}}.seat>.seat-in{transform-origin:50% calc(100% - 18px)}.rtable .grp{z-index:0}.party-arcs{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:visible;z-index:1}.rtable .seat{z-index:2}.party-arcs path{fill:none;stroke-linecap:round}.party-arcs .party-edge{stroke:var(--cbd);stroke-width:44px}.party-arcs .party-fill{stroke:color-mix(in srgb,var(--cbd) 50%,var(--color-surface));stroke-width:39px}.seat-flow .pip{width:34px;height:34px}.pip .badge{position:absolute;bottom:-4px;width:14px;height:14px;border-radius:50%;display:grid;place-items:center;background:var(--color-surface);color:var(--color-text);box-shadow:0 0 0 1px var(--color-neutral-600);letter-spacing:0}.pip .badge-wheel{left:-5px}.pip .badge-baby{right:-5px}.need{display:inline-flex;align-items:center;color:var(--color-accent-300);margin-left:3px;vertical-align:-1px}.th-sort{display:inline-flex;align-items:center;gap:4px;background:none;border:0;padding:0;cursor:pointer;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit}.th-sort:hover{color:var(--color-text)}.table .num-col{width:36px;text-align:right;padding-right:10px}.board-sort .seg-opt{padding:4px 10px;font-size:11.5px}html[data-theme=festive]{--color-bg: #2a0c11;--color-surface: #3c1219;--color-text: #fbeee2;--color-accent: #e3b24f;--color-divider: color-mix(in srgb, #fbeee2 16%, transparent);--color-neutral-100: #fff4ec;--color-neutral-200: #f6e2d6;--color-neutral-300: #e9cbbd;--color-neutral-400: #d4ae9f;--color-neutral-500: #b98e80;--color-neutral-600: #9a6f63;--color-neutral-700: #7a5048;--color-neutral-800: #5a3531;--color-neutral-900: #3f2020;--color-accent-100: #fff8e6;--color-accent-200: #fbe9b8;--color-accent-300: #f4d384;--color-accent-400: #ebc062;--color-accent-500: #dcaa45;--color-accent-600: #bb8c30;--color-accent-700: #926b24;--color-accent-800: #664a1b;--color-accent-900: #432f14;--shadow-sm: 0 0 0 1px #5a3531;--shadow-md: 0 0 0 1px #7a5048, 0 6px 18px rgba(0, 0, 0, .5);--shadow-lg: 0 0 0 1px #b98e80, 0 16px 40px rgba(0, 0, 0, .6);--cat-groom-bg: #25395c;--cat-groom-tx: #c3d4f6;--cat-groom-bd: #4d6ca2;--cat-bride-bg: #6e1f33;--cat-bride-tx: #ffd3de;--cat-bride-bd: #a8465f;--cat-shared-bg: #4b3531;--cat-shared-tx: #f3e3db;--cat-shared-bd: #74564f}html[data-theme=day]{--color-bg: #f4f3ef;--color-surface: #ffffff;--color-text: #1d2030;--color-accent: #5b4cc4;--color-divider: color-mix(in srgb, #1d2030 14%, transparent);--color-neutral-100: #1b1d27;--color-neutral-200: #2a2d3a;--color-neutral-300: #3d4152;--color-neutral-400: #525769;--color-neutral-500: #686d7e;--color-neutral-600: #80859a;--color-neutral-700: #b9bcc7;--color-neutral-800: #dcdad4;--color-neutral-900: #ebe9e4;--color-accent-100: #251d63;--color-accent-200: #332a85;--color-accent-300: #4638a8;--color-accent-400: #5b4cc4;--color-accent-500: #7163d3;--color-accent-600: #8f84df;--color-accent-700: #b3aaec;--color-accent-800: #d9d4f7;--color-accent-900: #eeebfc;--shadow-sm: 0 0 0 1px #dcdad4;--shadow-md: 0 1px 2px rgba(20, 22, 40, .06), 0 6px 18px rgba(20, 22, 40, .1);--shadow-lg: 0 0 0 1px #dcdad4, 0 16px 40px rgba(20, 22, 40, .18);--backdrop: rgba(24, 26, 40, .35);--cat-groom-bg: #dbe6fb;--cat-groom-tx: #1d3e84;--cat-groom-bd: #8eaee8;--cat-bride-bg: #fbe1e8;--cat-bride-tx: #8a2343;--cat-bride-bd: #eb9ab0;--cat-shared-bg: #ecedf1;--cat-shared-tx: #353a4a;--cat-shared-bd: #c3c7d2;--sat-1: #3d9764;--sat-2: #b0861c;--sat-3: #c0622c;--sat-4: #c2434a}.print-root{--ink: #20222f;--ink-2: #4c5065;--ink-3: #7d8194;--rule: #d5d6de;--rule-2: #e7e8ee;--pa: #5b4fb0;--pa-tint: #ece9f8;--pg: #e5eaf6;--pg-ink: #2f4479;--pb: #f7e6ec;--pb-ink: #7a3350;--pc: #eceef2;--pc-ink: #43485c;--ps3: #9a4f1e;background:var(--color-bg);min-height:100%;padding:16px 0 40px;color:var(--ink)}.print-bar{display:flex;justify-content:center;gap:8px;margin-bottom:16px}.ppage{width:210mm;min-height:297mm;margin:0 auto 16px;background:#fbfbfa;padding:.62in .6in;display:flex;flex-direction:column;font-family:var(--font-body);box-shadow:var(--shadow-md)}.phead{display:flex;align-items:flex-end;gap:14px;border-bottom:1.5px solid var(--ink);padding-bottom:9px}.kick{font-size:8.5px;letter-spacing:.2em;color:var(--pa);text-transform:uppercase}.ptitle{font:500 20px/1.2 var(--font-body);margin-top:5px}.ptitle.sm{font-size:14px;margin:0}.pmeta{font-size:9.5px;color:var(--ink-2);margin-top:3px;font-weight:400}.pright{margin-left:auto;text-align:right;font-size:8.5px;line-height:1.5;color:var(--ink-3)}.legend{display:flex;align-items:center;gap:16px;padding:8px 0 10px;border-bottom:1px solid var(--rule-2);font-size:8.5px;color:var(--ink-2);flex-wrap:wrap}.lg-k{font-weight:500;letter-spacing:.12em;color:var(--ink-3)}.tgrid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-top:11px}.tbl{border:1px solid var(--rule);border-radius:6px;padding:9px 10px 10px;display:flex;flex-direction:column;gap:7px;break-inside:avoid}.tbl-h{display:flex;align-items:baseline;gap:6px;border-bottom:1px solid var(--rule-2);padding-bottom:5px}.tbl-n{font:500 12.5px/1 var(--font-body)}.tbl-sub{font-size:9px;color:var(--pa)}.tbl-c{font-size:9.5px;color:var(--ink-3);margin-left:auto}.gl{display:flex;flex-direction:column;gap:2.5px}.g{display:flex;align-items:baseline;gap:5px;font-size:10px;line-height:1.3}.gi{width:11px;flex:none;color:var(--ink-3);font-size:8.5px;text-align:right}.gt{font-size:8px;padding:1px 4px;border-radius:3px}.gt.p-groom{background:var(--pg);color:var(--pg-ink)}.gt.p-bride{background:var(--pb);color:var(--pb-ink)}.gt.p-shared{background:var(--pc);color:var(--pc-ink)}.gp{font-size:8.5px;color:var(--ink-3)}.gd{font-size:8px;color:var(--ps3);margin-left:auto;white-space:nowrap}.box{border:1px solid var(--rule);border-radius:6px;padding:9px 10px;font-size:9.5px;color:var(--ink-2);break-inside:avoid}.box.tint{background:var(--pa-tint)}.box-h{display:flex;align-items:baseline;gap:8px;border-bottom:1px solid var(--rule-2);padding-bottom:5px;margin-bottom:6px;font-size:10.5px;color:var(--ink)}.uchips{display:flex;flex-wrap:wrap;gap:5px 7px}.uchips span{padding:3px 7px;border:1px solid var(--rule);border-radius:4px}.index{column-count:4;column-gap:16px;margin-top:11px}.idx{display:flex;align-items:baseline;gap:6px;font-size:9.5px;line-height:1.45;border-bottom:1px dotted var(--rule);padding-bottom:1.5px;break-inside:avoid}.idx-n{margin-left:auto;color:var(--pa)}.sums{display:grid;grid-template-columns:1fr 1fr 1fr;gap:11px;margin-top:16px}.kv{display:flex;gap:8px;line-height:1.6}.kv span:last-child{margin-left:auto;color:var(--ink)}.pfoot{margin-top:auto;padding-top:9px;border-top:1px solid var(--rule-2);display:flex;font-size:8px;color:var(--ink-3)}@page{size:A4;margin:0}@media print{body,.print-root{background:#fff;padding:0}.print-bar{display:none}.ppage{margin:0;box-shadow:none;break-after:page;height:297mm}}@media (max-width: 800px){.ppage{width:100%;min-height:0;padding:20px}}
