/* ═══════════════════════════════════════════════════════════
   Please Sit — design system
   One committed visual world: warm, joyful, wedding-paper.
   Every colour painted explicitly so it holds on any host.
   ═══════════════════════════════════════════════════════════ */
:root{
  --cream:#FFF9F3; --panel:#FFFFFF; --panel2:#FFF2E9; --panel3:#FDEBE1;
  --ink:#3A2A38; --ink-soft:#8B7386; --ink-faint:#B9A6B2;
  --rose:#E4577B; --rose-deep:#C23A61; --rose-soft:#FBE3EA;
  --coral:#F49E6B; --coral-soft:#FDEADA;
  --lilac:#9D7BD8; --lilac-soft:#EFE7FB;
  --sage:#7FA886; --sage-soft:#E4F0E6;
  --gold:#E9B94E; --gold-soft:#FBF0D7; --gold-ink:#96751F;
  --sky:#7FB8E0; --sky-soft:#E2F0FA;
  --danger:#E0526B; --danger-soft:#FBE2E6;
  --grey-thread:#B9BCD0;
  --rule-blue:#2563EB; --rule-blue-soft:#E9F0FF;
  --rule-green:#07835D; --rule-green-soft:#E1F6EC;
  --rule-red:#E33F55; --rule-red-soft:#FFE5EA;
  --guest-border:#CFC4CC;
  --shadow-s:0 4px 14px rgba(58,42,56,.07);
  --shadow:0 10px 30px rgba(58,42,56,.10);
  --shadow-l:0 24px 60px rgba(58,42,56,.16);
  --r-s:14px; --r:22px; --r-l:30px;
  --spring:cubic-bezier(.34,1.56,.64,1);
  --ease:cubic-bezier(.22,1,.36,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:hidden}
body{
  margin:0;background:var(--cream);color:var(--ink);
  font-family:"Nunito","Segoe UI",system-ui,Arial,sans-serif;
  font-size:16px;line-height:1.5;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit}
input,textarea{font-family:inherit;font-size:inherit;color:inherit}
:focus-visible{outline:3px solid var(--rose);outline-offset:3px;border-radius:8px}
.fr{font-family:"Fraunces",Georgia,serif}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ── top bar ────────────────────────────────────────────── */
.bar{
  position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:12px;
  padding:12px 20px;background:var(--cream);border-bottom:1px solid var(--panel3);
}
.logo{display:flex;align-items:center;gap:10px;font-weight:900;font-size:1.1rem}
.logo .dots{display:flex}
.logo .dots i{width:14px;height:14px;border-radius:50%;display:block}
.logo .dots i:first-child{background:var(--rose)}
.logo .dots i:last-child{background:var(--gold);margin-left:-5px}
.bar .spacer{flex:1}
.iconbtn{
  width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:1.05rem;
  background:var(--panel);box-shadow:var(--shadow-s);transition:transform .25s var(--spring);
}
.iconbtn:hover{transform:translateY(-2px) scale(1.08)}
.iconbtn:disabled{opacity:.35;cursor:not-allowed;transform:none}
.iconbtn.app-only{display:none}
body.in-app .iconbtn.app-only{display:grid}
.bar-cta{
  background:var(--rose);color:#fff;font-weight:800;
  padding:10px 20px;border-radius:999px;box-shadow:0 6px 16px rgba(228,87,123,.28);
  transition:transform .2s var(--ease);white-space:nowrap;
}
.bar-cta:hover{transform:translateY(-1px)}
.bar-cta.owned{background:var(--sage);box-shadow:none}
.lang-switch{
  color:var(--ink-soft);font-size:.76rem;font-weight:900;letter-spacing:.04em;
  padding:8px 10px;border-radius:999px;white-space:nowrap;transition:background .2s,color .2s;
}
.lang-switch:hover{background:var(--panel2);color:var(--rose)}

/* ── hero ───────────────────────────────────────────────── */
.hero{position:relative;z-index:1;text-align:center;padding:60px 20px 34px;max-width:780px;margin:0 auto}
.hero h1{
  font-family:"Fraunces",Georgia,serif;font-weight:700;font-size:clamp(2.1rem,5.6vw,3.4rem);
  line-height:1.08;margin:0 0 14px;text-wrap:balance;color:var(--ink);
}
.hero p{color:var(--ink-soft);font-weight:700;font-size:1.08rem;margin:0 0 24px}
.hero .go{
  font-size:1.12rem;font-weight:900;color:#fff;padding:16px 38px;border-radius:999px;
  background:var(--rose);box-shadow:0 10px 24px rgba(228,87,123,.28);
  transition:transform .2s var(--ease);
}
.hero .go:hover{transform:translateY(-1px)}
.hero .hint{margin-top:14px;font-size:.85rem;color:var(--ink-soft);font-weight:700}
.hero .founder{margin:8px 0 0;font-size:.82rem;color:var(--ink-faint);font-weight:700}
.hero-preview{
  display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:28px auto 0;max-width:520px;
  pointer-events:none;
}
.hero-preview .chip{box-shadow:var(--shadow-s)}
.hero .rules{margin:18px 0 0;font-size:.86rem;font-weight:800;color:var(--ink-soft)}
.site-foot{position:relative;z-index:1;text-align:center;padding:28px 16px 36px;font-weight:800;font-size:.82rem}
.site-foot a{color:var(--ink-faint)}
.site-foot a:hover{color:var(--rose)}
body.in-app .site-foot{display:none}

/* ── stepper ────────────────────────────────────────────── */
.stepper{position:relative;z-index:1;display:flex;justify-content:center;gap:8px;padding:6px 12px 20px;flex-wrap:wrap}
.stepper button{display:flex;align-items:center;gap:9px;color:var(--ink-soft);font-weight:800;font-size:.88rem;padding:6px 14px 6px 6px;border-radius:999px;transition:background .3s,color .3s}
.stepper .dot{
  width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-size:1.05rem;
  background:var(--panel);box-shadow:var(--shadow-s);transition:transform .35s var(--spring),background .3s;
}
.stepper button.on{color:var(--rose);background:var(--rose-soft)}
.stepper button.on .dot{background:#fff;transform:scale(1.1)}
.stepper button.done .dot::after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:var(--sage);transform:translate(14px,-14px);border:2px solid var(--cream)}
.stepper .dot{position:relative}

/* ── stage / panels ─────────────────────────────────────── */
.stage{position:relative;z-index:1;max-width:1160px;margin:0 auto;padding:0 16px 140px}
.panel{
  display:none;background:var(--panel);border-radius:var(--r);box-shadow:var(--shadow-l);
  padding:24px 24px 26px;
}
.panel.show{display:block;animation:segue .55s var(--ease) both}
.panel.show.back{animation:segueBack .55s var(--ease) both}
@keyframes segue{from{opacity:0;transform:translateX(46px) rotate(.6deg) scale(.985)}to{opacity:1;transform:none}}
@keyframes segueBack{from{opacity:0;transform:translateX(-46px) rotate(-.6deg) scale(.985)}to{opacity:1;transform:none}}
.phead{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.phead h2{font-family:"Fraunces",Georgia,serif;font-size:1.45rem;margin:0}
.phead .sub{color:var(--ink-soft);font-weight:700;font-size:.9rem;margin:3px 0 0}
.phead .grow{flex:1}
.sample-cta{display:inline-flex;align-items:center;gap:7px;align-self:center;padding:9px 13px;border:1px solid #E7DDEA;border-radius:999px;background:linear-gradient(135deg,#FFF8E8,#F4EDFF);color:#765D79;font-size:.76rem;font-weight:900;box-shadow:var(--shadow-s);transition:transform .22s var(--spring),box-shadow .22s}
.sample-cta:hover{transform:translateY(-2px) rotate(-1deg);box-shadow:0 10px 22px rgba(126,91,149,.16)}

/* tooltips */
.tip{
  display:inline-grid;place-items:center;width:19px;height:19px;border-radius:50%;
  background:var(--lilac-soft);color:var(--lilac);font-size:.72rem;font-weight:900;
  position:relative;cursor:help;vertical-align:2px;margin-left:5px;flex:none;
}
.tip::after{
  content:attr(data-t);position:absolute;bottom:135%;left:50%;transform:translateX(-50%) scale(.9);
  background:var(--ink);color:#FFF9F3;font-size:.76rem;font-weight:700;padding:9px 13px;border-radius:11px;
  width:max-content;max-width:240px;text-align:center;line-height:1.35;
  opacity:0;pointer-events:none;transition:.25s var(--spring);z-index:9;
}
.tip:hover::after,.tip:focus::after{opacity:1;transform:translateX(-50%) scale(1)}

/* ── pill toolbar ───────────────────────────────────────── */
.toolrow{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.tool{
  display:flex;align-items:center;gap:7px;font-weight:800;font-size:.85rem;padding:9px 16px;
  border-radius:999px;background:var(--panel2);transition:transform .25s var(--spring),box-shadow .2s;
}
.tool:hover{transform:translateY(-2px)}
.tool.on{box-shadow:0 0 0 2.5px currentColor inset;transform:scale(1.05)}
.tool.gold{color:var(--gold-ink);background:var(--gold-soft)}
.tool.grey{color:#6C6F8A;background:#ECECF4}
.tool.red{color:var(--danger);background:var(--danger-soft)}
.tool.plain{color:var(--ink-soft);background:var(--panel2)}
.thread-line{width:20px;height:0;border-top:3px solid currentColor;border-radius:3px;flex:none}
.tool.grey .thread-line{border-top-style:dotted}
.tool.red .thread-line{border-top-style:dashed}
.addrow{display:flex;gap:8px;margin-left:auto}
.addrow input{
  border:2px solid var(--panel2);background:var(--cream);border-radius:999px;padding:9px 18px;
  font-weight:700;width:150px;transition:border .2s,width .3s;
}
.addrow input:focus{outline:none;border-color:var(--rose);width:180px}
.round{
  width:40px;height:40px;border-radius:50%;background:var(--rose);color:#fff;font-size:1.25rem;
  font-weight:800;display:grid;place-items:center;flex:none;transition:transform .3s var(--spring);
}
.round:hover{transform:rotate(90deg) scale(1.1)}

/* ── guests: people first, rules as a playful graph ─────── */
:root{--guest-card-min:280px}
.people-actions{display:flex;align-items:center;gap:9px;flex:1;min-width:0}.people-actions[hidden],.rule-dock[hidden]{display:none}
.guest-filter{display:flex;align-items:center;gap:7px;min-width:min(100%,260px);padding:2px 5px 2px 12px;border:2px solid var(--panel2);border-radius:999px;background:var(--cream);color:var(--ink-soft);transition:border-color .2s,box-shadow .2s}.guest-filter:focus-within{border-color:var(--rose);box-shadow:0 0 0 4px var(--rose-soft)}.guest-filter-icon{font-size:1.1rem;line-height:1}.guest-filter input{width:170px;min-width:0;border:0;outline:0;background:transparent;padding:7px 0;font-weight:750;color:var(--ink)}.guest-filter button{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;font-size:1.25rem;line-height:1;color:var(--ink-soft)}.guest-filter button:hover{background:var(--rose-soft);color:var(--rose)}.guest-filter-count{font-size:.74rem;font-weight:900;color:var(--ink-faint);white-space:nowrap}
.rule-dock{width:100%;display:flex;align-items:center;gap:12px;padding:10px 11px 10px 15px;border:1px solid #E8DDE4;border-radius:20px;background:linear-gradient(105deg,#FFF8FB,#F8FBFF);box-shadow:var(--shadow-s);animation:dockin .45s var(--ease) both}
@keyframes dockin{from{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:none}}
.rule-dock-copy{display:flex;flex-direction:column;gap:1px;min-width:160px;max-width:220px}
.rule-kicker{font-size:.78rem;text-transform:uppercase;letter-spacing:.075em;font-weight:900;color:var(--ink-soft)}
.rule-hint{font-size:.76rem;line-height:1.25;font-weight:800;color:var(--ink)}
.rule-tools{display:flex;gap:7px;align-items:center;flex:1;flex-wrap:wrap}
.rule-tools .tool{padding:8px 11px;font-size:.78rem}
.rule-tools .tool.gold{color:var(--rule-blue);background:var(--rule-blue-soft)}
.rule-tools .tool.grey{color:var(--rule-green);background:var(--rule-green-soft)}
.rule-tools .tool.red{color:var(--rule-red);background:var(--rule-red-soft)}
.rule-tools .tool.on{box-shadow:0 0 0 2.5px currentColor inset,0 8px 18px color-mix(in srgb,currentColor 17%,transparent);transform:translateY(-1px) scale(1.02)}
.rule-face{font-size:1.02rem;line-height:1}
.rule-done{flex:none;border-radius:999px;padding:10px 15px;font-size:.82rem;font-weight:900;color:#fff;background:var(--ink);box-shadow:0 7px 16px rgba(58,42,56,.16);transition:transform .25s var(--spring)}
.rule-done:hover{transform:translateY(-2px) scale(1.04)}

.tray{position:relative;min-height:270px;padding:8px 0 4px;isolation:isolate}
.tray > svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:12;overflow:visible}
.guest-cluster{position:relative;z-index:3}
.guest-cluster[hidden]{display:none}
.cluster-head{display:flex;align-items:center;gap:7px;margin:4px 0 10px;color:var(--ink-soft)}
.cluster-head h3{margin:0;font-size:.78rem;letter-spacing:.075em;text-transform:uppercase;font-weight:900}
.cluster-dot{width:10px;height:10px;border-radius:50%;background:var(--rule-blue);box-shadow:0 0 0 6px var(--rule-blue-soft)}
.cluster-dot.quiet{background:var(--ink-faint);box-shadow:0 0 0 6px var(--panel2)}
.cluster-count{font-size:.75rem;font-weight:900;color:var(--ink-faint)}
.linked-groups{display:grid;gap:22px}
.linked-group{position:relative;padding:14px 16px 16px;border:1px solid #F0E8EC;border-radius:22px;background:linear-gradient(140deg,rgba(255,249,243,.88),rgba(255,255,255,.92));box-shadow:0 12px 28px rgba(58,42,56,.055);animation:groupin .52s var(--ease) both;animation-delay:var(--group-delay)}
@keyframes groupin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.group-caption{margin:0 0 12px;font-size:.7rem;font-weight:900;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint)}
.group-cards,.chips{position:relative;z-index:3;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--guest-card-min)),1fr));gap:20px 24px;align-items:stretch;padding:4px 0 12px}
.group-cards{justify-items:stretch;min-height:0}.group-pair .group-cards,.group-small .group-cards,.group-hub .group-cards{grid-template-areas:none;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--guest-card-min)),1fr));gap:20px 24px;min-height:0}.group-small .group-cards .chip:first-child,.group-hub .group-cards .chip:nth-child(n){grid-area:auto;grid-column:auto;justify-self:stretch;width:100%}
.chip{position:relative;z-index:3;width:100%;min-width:0;display:flex;align-items:center;gap:10px;text-align:left;background:#FFFDFC;border:3px solid var(--guest-border);border-radius:22px;padding:10px 12px;box-shadow:0 9px 22px rgba(58,42,56,.10);font-weight:800;font-size:.92rem;transition:transform .28s var(--spring),box-shadow .28s,border-color .25s;animation:popin .5s var(--spring) both}
@keyframes popin{from{opacity:0;transform:scale(.86)}to{opacity:1;transform:scale(1)}}
.hero-preview .chip{width:auto;min-width:auto;border-width:0;border-radius:999px;padding:7px 8px 7px 7px;background:var(--cream)}
.chip:hover{transform:translateY(-3px) rotate(-.45deg);box-shadow:0 16px 30px rgba(58,42,56,.16)}
.chip .face{width:44px;height:44px;border-radius:15px;display:grid;place-items:center;color:#fff;font-size:1.02rem;font-weight:900;flex:none;box-shadow:inset 0 0 0 2px rgba(255,255,255,.35)}
.hero-preview .chip .face{width:34px;height:34px;border-radius:50%;font-size:.85rem}
.guest-copy{min-width:0;display:flex;flex:1;flex-direction:column;gap:1px}
.chip .nm{display:block;max-width:100%;overflow-wrap:anywhere;word-break:normal;white-space:normal;font-size:1rem;line-height:1.2}
.guest-meta{display:flex;align-items:center;flex-wrap:wrap;gap:3px 5px;min-width:0;max-width:100%;color:var(--ink-soft);font-size:.74rem;font-weight:900;white-space:normal}.guest-meta .rsvp{font-size:.72rem}.guest-meta .meta-sep{color:#C7BBC3}.guest-meta .hearts{letter-spacing:-2px;color:var(--rose);font-size:.7rem;overflow-wrap:anywhere}
.picked-context{position:relative;z-index:14;display:flex;align-items:center;gap:8px;margin:0 0 13px;padding:9px 12px;border:1px solid #C9DAFF;border-radius:15px;background:var(--rule-blue-soft);color:#1F4CA8;font-size:.8rem;font-weight:900}.picked-context::before{content:'✓';display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--rule-blue);color:#fff;flex:none}
.connector-nub{position:absolute;right:-8px;top:50%;width:12px;height:12px;border:3px solid var(--guest-border);border-radius:50%;background:#FFFDFC;transform:translateY(-50%);opacity:0;transition:opacity .2s,transform .25s var(--spring)}
.guest-playground[data-mode="rules"] .chip{cursor:crosshair;touch-action:none}.guest-playground[data-mode="rules"] .chip:hover{border-color:#948690}.guest-playground[data-mode="rules"] .chip:hover .connector-nub,.guest-playground[data-mode="rules"] .chip.picked .connector-nub{opacity:1;transform:translateY(-50%) scale(1.15)}
.chip.picked{border-color:var(--rose);box-shadow:0 0 0 4px var(--rose-soft),0 13px 28px rgba(228,87,123,.23);transform:translateY(-4px) scale(1.025)}
.chip.drag-origin{border-color:var(--rule-blue);box-shadow:0 0 0 5px var(--rule-blue-soft),0 14px 30px rgba(37,99,235,.22)}
.chip.declined{opacity:.58}.chip.declined .nm{text-decoration:line-through;text-decoration-color:var(--ink-faint)}
.thread-under{opacity:.96}.thread-line{filter:drop-shadow(0 2px 2px rgba(58,42,56,.12));opacity:.96}.thread-preview{opacity:.9;stroke-dasharray:7 8;animation:threadmarch .6s linear infinite}.thread-energy{stroke-dasharray:10 82;animation:threadcharge 1s ease-out both}@keyframes threadmarch{to{stroke-dashoffset:-30}}@keyframes threadcharge{from{stroke-dashoffset:100;opacity:0}25%{opacity:1}to{stroke-dashoffset:0;opacity:0}}
.chip.link-formed.formed-gold{border-color:var(--rule-blue);box-shadow:0 0 0 5px var(--rule-blue-soft),0 0 26px rgba(37,99,235,.55)}.chip.link-formed.formed-grey{border-color:var(--rule-green);box-shadow:0 0 0 5px var(--rule-green-soft),0 0 26px rgba(7,131,93,.48)}.chip.link-formed.formed-red{border-color:var(--rule-red);box-shadow:0 0 0 5px var(--rule-red-soft),0 0 28px rgba(227,63,85,.54)}
.chip.seesaw-left{animation:seesawLeft .78s ease-in-out 2}.chip.seesaw-right{animation:seesawRight .78s ease-in-out 2}@keyframes seesawLeft{0%,100%{transform:rotate(0)}25%{transform:rotate(-2.3deg) translateY(-4px)}75%{transform:rotate(2.3deg) translateY(1px)}}@keyframes seesawRight{0%,100%{transform:rotate(0)}25%{transform:rotate(2.3deg) translateY(1px)}75%{transform:rotate(-2.3deg) translateY(-4px)}}
.link-reaction{position:absolute;z-index:20;pointer-events:none;transform:translate(-50%,-50%);width:1px;height:1px}.reaction-face,.reaction-particle{position:absolute;display:grid;place-items:center;opacity:0}.reaction-face{font-size:2rem;left:-16px;top:-18px;filter:drop-shadow(0 5px 6px rgba(58,42,56,.2))}.reaction-particle{font-size:1.1rem;left:-7px;top:-8px}.link-reaction.play .reaction-face{animation:faceburst .9s var(--spring) both}.link-reaction.play .p0{animation:particle0 .95s ease-out both}.link-reaction.play .p1{animation:particle1 .95s ease-out both}.link-reaction.play .p2{animation:particle2 .95s ease-out both}.link-reaction.play .p3{animation:particle3 .95s ease-out both}@keyframes faceburst{0%{opacity:0;transform:scale(.2) rotate(-18deg)}35%{opacity:1;transform:scale(1.35) rotate(8deg)}100%{opacity:0;transform:scale(.9) translateY(-24px)}}@keyframes particle0{25%{opacity:1}100%{opacity:0;transform:translate(-38px,-38px) rotate(35deg)}}@keyframes particle1{25%{opacity:1}100%{opacity:0;transform:translate(40px,-31px) rotate(-35deg)}}@keyframes particle2{25%{opacity:1}100%{opacity:0;transform:translate(44px,28px) rotate(45deg)}}@keyframes particle3{25%{opacity:1}100%{opacity:0;transform:translate(-38px,29px) rotate(-45deg)}}
.empty{color:var(--ink-faint);font-weight:700;padding:36px 0;text-align:center}

/* ── room canvas ────────────────────────────────────────── */
.room{
  --u:1;                       /* one dial sizes everything inside */
  position:relative;height:440px;border-radius:18px;overflow:hidden;touch-action:none;
  transition:height .4s var(--ease);
  background:radial-gradient(circle at 50% 20%,#FFF3E4 0%,#FDE9EC 55%,#F4E6F7 100%);
}
@media (max-width:640px){.room{--mob:.8}}
.room.compact{height:400px}
.room .rings{position:absolute;inset:0;width:100%;height:100%}
.tbl{position:absolute;transform:translate(-50%,-50%);text-align:center;transition:transform .35s var(--spring);z-index:2}
.tbl:hover{transform:translate(-50%,-50%) scale(1.05)}
.tbl.dragging{transition:none;z-index:5;cursor:grabbing}
.tbl{--s:calc(var(--u) * var(--mob,1))}
.tbl .disc{
  width:calc(88px * var(--s));height:calc(88px * var(--s));border-radius:50%;margin:0 auto;
  display:grid;place-items:center;gap:1px;
  background:#fff;box-shadow:0 10px 24px rgba(58,42,56,.14);font-weight:900;
  font-size:calc(.76rem * max(.82, var(--s)));
  cursor:grab;padding:calc(6px * var(--s));line-height:1.15;
}
.tbl.table-node .disc{width:calc(var(--table-w, 88px) * var(--s));height:calc(var(--table-d, 88px) * var(--s));min-width:calc(64px * var(--s));min-height:calc(64px * var(--s));transform:rotate(var(--table-rotation,0deg))}.tbl.table-node.rect-table .disc{border-radius:18px}.tbl.table-node .disc>span{transform:rotate(calc(-1 * var(--table-rotation,0deg)))}
.tbl .disc .cap{font-size:calc(.66rem * max(.82, var(--s)));font-weight:800;color:var(--ink-faint)}
.tbl.head .disc{
  width:calc(118px * var(--s));height:calc(72px * var(--s));border-radius:40px;color:#fff;
  background:linear-gradient(120deg,var(--rose),var(--coral));animation:glowpulse 3s ease-in-out infinite;
}
@keyframes glowpulse{0%,100%{box-shadow:0 10px 24px rgba(228,87,123,.35)}50%{box-shadow:0 10px 40px rgba(228,87,123,.6)}}
.tbl .stars{position:relative;z-index:4;font-size:calc(.82rem * max(.75, var(--s)));margin-top:5px;user-select:none;display:inline-block;padding:2px 6px;border-radius:999px;transition:transform .3s var(--spring);cursor:pointer}
.tbl .stars:hover{transform:scale(1.18);background:#fff8}
.tbl .stars .off{opacity:.24}
.tbl .tx{
  position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;background:#fff;
  color:var(--ink-faint);font-size:.8rem;display:grid;place-items:center;box-shadow:var(--shadow-s);opacity:0;transition:.2s;
}
.tbl:hover .tx{opacity:1}
.tbl .tx:hover{background:var(--danger-soft);color:var(--danger)}
.seats{position:absolute;inset:0;pointer-events:none;z-index:3}
.seat{
  position:absolute;transform:translate(-50%,-50%);background:#fff;border-radius:999px;
  --ss:calc(var(--u,1) * var(--mob,1));
  font-size:calc(.68rem * max(.72, var(--ss)));font-weight:800;
  padding:calc(4px * max(.75, var(--ss))) calc(9px * max(.75, var(--ss)));box-shadow:0 5px 14px rgba(58,42,56,.18);
  white-space:nowrap;pointer-events:auto;cursor:pointer;transition:transform .2s var(--spring);
}
.seat:hover{transform:translate(-50%,-50%) scale(1.12)}
.seat.land{animation:seatland .6s var(--spring) both}
@keyframes seatland{
  0%{transform:translate(-50%,-160%) scale(.3) rotate(-10deg);opacity:0}
  60%{opacity:1}
  100%{transform:translate(-50%,-50%) scale(1) rotate(0);opacity:1}
}
.seat.locked{filter:blur(5px);user-select:none;pointer-events:none}
.lockbadge{
  position:absolute;transform:translate(-50%,-50%);z-index:4;cursor:pointer;
  background:var(--ink);color:#fff;font-weight:800;font-size:.72rem;
  padding:7px 13px;border-radius:999px;box-shadow:var(--shadow);
}
@keyframes lockin{from{transform:translate(-50%,-50%) scale(0)}to{transform:translate(-50%,-50%) scale(1)}}
.lockbadge:hover{animation:none;transform:translate(-50%,-50%) scale(1.12)}
.tscore-in{font-weight:900 !important;animation:popin .5s var(--spring) both}
.tscore-in.good{color:var(--sage) !important}
.tscore-in.mid{color:var(--gold-ink) !important}
.tscore-in.low{color:var(--danger) !important}
.tscore{
  position:absolute;transform:translate(-50%,-50%);z-index:4;font-size:.66rem;font-weight:900;
  padding:3px 9px;border-radius:999px;background:#fff;box-shadow:var(--shadow-s);animation:popin .5s var(--spring) both;
}
.tscore.good{color:var(--sage)} .tscore.mid{color:var(--gold-ink)} .tscore.low{color:var(--danger)}

/* ── solve header ───────────────────────────────────────── */
.tada-top{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.solvebtn{
  font-size:1.06rem;font-weight:900;color:#fff;padding:14px 32px;border-radius:999px;
  background:var(--ink);box-shadow:var(--shadow);
  transition:transform .2s var(--ease);position:relative;
}
.solvebtn:hover{transform:translateY(-1px)}
.solvebtn.solving{animation:shake .4s ease-in-out infinite}
@keyframes shake{0%,100%{transform:rotate(0)}25%{transform:rotate(1.4deg)}75%{transform:rotate(-1.4deg)}}
.meter{flex:1;min-width:210px}
.meter .lab{font-size:.74rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);display:flex;justify-content:space-between;align-items:baseline}
.meter .lab b{color:var(--rose);font-size:1.05rem;font-variant-numeric:tabular-nums}
.meter .track{height:13px;border-radius:99px;background:var(--panel2);overflow:hidden;margin-top:5px}
.meter .fill{height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--gold),var(--coral),var(--rose));transition:width 1.5s var(--ease)}

/* ── magic bar ──────────────────────────────────────────── */
.magic{
  position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:60;
  width:min(660px,calc(100% - 24px));background:var(--ink);border-radius:999px;
  padding:7px 7px 7px 18px;display:flex;align-items:center;gap:9px;
  box-shadow:0 18px 44px rgba(58,42,56,.4);animation:magicin 1s .7s var(--spring) both;
}
@keyframes magicin{from{opacity:0;transform:translate(-50%,80px)}to{opacity:1;transform:translate(-50%,0)}}
.magic .spark{font-size:1.1rem;flex:none}
.magic input{flex:1;background:none;border:none;color:#FFF6EE;font-weight:700;font-size:.94rem;min-width:0}
.magic input::placeholder{color:#B8A3B3}
.magic input:focus{outline:none}
.pro{
  font-size:.63rem;font-weight:900;letter-spacing:.1em;color:#4A2F14;flex:none;
  background:var(--gold-soft);padding:5px 10px;border-radius:999px;
}
.magic .send,.magic .cam{
  width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex:none;
  transition:transform .25s var(--spring);
}
.magic .cam{background:#4C3B49;color:#FFE9D6;font-size:1rem}
.magic .send{background:linear-gradient(120deg,var(--rose),var(--lilac));color:#fff;font-size:1.05rem}
.magic .send:hover,.magic .cam:hover{transform:scale(1.12) rotate(-8deg)}
.magic.busy .spark{opacity:.55}
.parsed{
  position:fixed;left:50%;bottom:80px;transform:translateX(-50%);z-index:59;
  display:flex;gap:8px;flex-wrap:wrap;justify-content:center;width:min(660px,calc(100% - 24px));
}
.pchip{
  background:#fff;border-radius:999px;padding:8px 15px;font-weight:800;font-size:.84rem;
  box-shadow:0 10px 26px rgba(58,42,56,.22);animation:popin .5s var(--spring) both;
}

/* ── modal ──────────────────────────────────────────────── */
.veil{position:fixed;inset:0;z-index:80;background:rgba(58,42,56,.45);backdrop-filter:blur(6px);display:none;place-items:center;padding:18px;overflow-y:auto}
.veil.show{display:grid;animation:fadein .3s both}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.modal{
  background:var(--panel);border-radius:var(--r-l);max-width:430px;width:100%;padding:32px 28px;text-align:center;
  animation:springin .55s var(--spring) both;box-shadow:var(--shadow-l);margin:auto;
}
.modal.wide{max-width:560px;text-align:left}
@keyframes springin{from{opacity:0;transform:scale(.7) translateY(40px)}to{opacity:1;transform:none}}
.modal .big{font-size:2.5rem}
.modal .big[hidden]{display:none}
.modal h3{font-family:"Fraunces",Georgia,serif;font-size:1.4rem;margin:10px 0 8px}
.modal p{color:var(--ink-soft);font-weight:700;font-size:.92rem;margin:0 0 16px}
.modal .price{font-family:"Fraunces",Georgia,serif;font-size:2.2rem;font-weight:700;color:var(--rose)}
.modal .once{font-size:.74rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--sage);margin-bottom:16px}
.perks{list-style:none;margin:0 0 20px;padding:0;text-align:left;font-weight:700;font-size:.89rem;display:flex;flex-direction:column;gap:7px}
.perks li{padding:6px 0;border-bottom:1px solid var(--panel2)}
.perks li:last-child{border-bottom:none}
.buy{
  width:100%;font-size:1.03rem;font-weight:900;color:#fff;padding:15px;border-radius:999px;
  background:var(--rose);box-shadow:0 8px 20px rgba(228,87,123,.28);
  transition:transform .2s var(--ease);
}
.buy:hover{transform:scale(1.04)}
.fine a{color:var(--rose)}
.later{margin-top:11px;font-weight:800;font-size:.84rem;color:var(--ink-soft)}
.later:hover{color:var(--rose)}
.ta{
  width:100%;min-height:150px;border:2px solid var(--panel2);border-radius:var(--r-s);padding:13px;
  background:var(--cream);font-weight:600;resize:vertical;line-height:1.5;
}
.ta:focus{outline:none;border-color:var(--rose)}
.modal .row{display:flex;gap:9px;margin-top:14px}
.modal .row .buy{flex:1}
.ghost{
  font-weight:800;padding:15px 22px;border-radius:999px;background:var(--panel2);color:var(--ink-soft);
  transition:transform .25s var(--spring);
}
.ghost:hover{transform:scale(1.04);color:var(--ink)}

/* ── floor-plan review ─────────────────────────────────── */
.floorplan-modal{max-width:760px;max-height:min(90dvh,900px);overflow:auto}.floorplan-modal>h3{margin-top:2px}.floorplan-preview-wrap{display:grid;place-items:center;min-height:150px;max-height:270px;margin:12px 0;border:1px solid #EEE1E7;border-radius:18px;overflow:hidden;background:var(--panel2)}.floorplan-preview-wrap img{display:block;max-width:100%;max-height:268px;object-fit:contain;transition:transform .35s var(--ease)}.floorplan-review-actions{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 12px}.floorplan-review-actions .tool{font-size:.75rem;padding:7px 11px}.floorplan-warnings{display:grid;gap:6px;margin:0 0 10px}.floorplan-warning{padding:8px 10px;border-radius:12px;background:var(--gold-soft);color:var(--gold-ink);font-size:.77rem;font-weight:800}.floorplan-stage-row{margin:0 0 10px;padding:8px 10px;border:1px solid #E9DFE5;border-radius:12px;color:var(--ink-soft);font-size:.78rem;font-weight:800}.floorplan-table-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:7px;max-height:260px;overflow:auto;padding:2px}.floorplan-table{display:flex;align-items:center;gap:8px;min-width:0;padding:8px 9px;border:1px solid #E9DFE5;border-radius:12px;background:#FFFDFC;font-size:.76rem;font-weight:900;text-align:left}.floorplan-table input{accent-color:var(--rose);flex:none}.floorplan-table span{min-width:0;overflow-wrap:anywhere}.floorplan-table small{display:block;margin-top:2px;color:var(--ink-faint);font-size:.64rem;font-weight:800}.floorplan-table.marked{opacity:.62;background:#FFF7F8;text-decoration:line-through}.floorplan-confirm-actions{position:sticky;bottom:0;padding-top:12px;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 22%)}

/* Each detected table remains editable before a scan can replace the room. */
.floorplan-table{align-items:flex-start}.floorplan-table .scan-include{accent-color:var(--rose);flex:none;margin-top:7px}.floorplan-table span{flex:1}.scan-table-name{width:100%;border:0;border-bottom:1px solid transparent;outline:0;background:transparent;padding:3px 0;color:var(--ink);font:inherit;font-weight:900}.scan-table-name:focus{border-bottom-color:var(--rose)}.floorplan-table small{display:flex;align-items:center;gap:4px}.scan-table-cap{width:42px;border:1px solid #E9DFE5;border-radius:7px;background:#fff;padding:3px 4px;color:var(--ink);font:inherit;font-size:.7rem;font-weight:900}.floorplan-table.marked{text-decoration:none}.floorplan-table.marked .scan-table-name{text-decoration:line-through}

/* ── first-run guest intake ─────────────────────────────── */
.intake-modal{max-width:620px;padding:26px 38px 24px;text-align:center;overflow:hidden}
.intake-orbit{position:relative;width:124px;height:62px;margin:0 auto 2px}
.intake-avatar,.intake-list{position:absolute;display:grid;place-items:center;border-radius:50%;font-weight:900;box-shadow:0 7px 18px rgba(58,42,56,.12)}
.intake-avatar{width:38px;height:38px;color:#fff;top:13px;font-size:.83rem;animation:intakebob 2.8s ease-in-out infinite}
.intake-avatar.a1{left:1px;background:var(--rose);animation-delay:-.2s}.intake-avatar.a2{left:29px;background:var(--lilac);animation-delay:-.8s}.intake-avatar.a3{left:57px;background:var(--gold);animation-delay:-1.35s}
.intake-list{right:0;top:3px;width:58px;height:58px;background:#fff;color:var(--rose);font-size:1.7rem;transform:rotate(7deg);border:2px solid var(--rose-soft);animation:intakelist 3s var(--spring) infinite}
.intake-orbit i{position:absolute;width:16px;height:3px;border-radius:9px;background:var(--gold);left:77px;top:29px;transform:rotate(-21deg)}.intake-orbit i:nth-of-type(2){left:78px;top:36px;width:12px;background:var(--rose);transform:rotate(18deg)}.intake-orbit i:nth-of-type(3){left:74px;top:42px;width:10px;background:var(--lilac);transform:rotate(42deg)}
@keyframes intakebob{50%{transform:translateY(-5px) rotate(4deg)}}@keyframes intakelist{50%{transform:rotate(-5deg) translateY(-2px)}}
.intake-eyebrow{margin:0 0 2px!important;color:var(--rose)!important;text-transform:uppercase;letter-spacing:.13em;font-size:.7rem!important;font-weight:900!important}.intake-modal h3{font-size:clamp(1.55rem,4vw,2rem);margin:0 0 5px}.intake-lead{max-width:460px;margin:0 auto 15px!important;text-wrap:balance}
.intake-textarea{min-height:138px;text-align:left;border-color:#F1DFE5;background:linear-gradient(135deg,#FFF9F3,#FFFDFB);resize:vertical}.intake-textarea:focus{border-color:var(--rose);box-shadow:0 0 0 4px var(--rose-soft)}
.intake-upload{display:flex;align-items:center;gap:10px;width:100%;margin-top:9px;padding:10px 12px;border:1.5px dashed #DFC9D2;border-radius:16px;background:#FFFBF8;color:var(--ink-soft);text-align:left;transition:border-color .2s,background .2s,transform .2s var(--spring)}.intake-upload:hover{border-color:var(--rose);background:#FFF5F5;transform:translateY(-1px)}.intake-upload:focus-visible{outline:3px solid var(--rose-soft);outline-offset:2px}.intake-upload:disabled{cursor:wait;opacity:.68;transform:none}.intake-upload-icon{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:10px;background:var(--rose-soft);color:var(--rose);font-size:1.15rem;font-weight:900}.intake-upload-copy{display:flex;min-width:0;flex:1;flex-direction:column}.intake-upload-copy strong{color:var(--ink);font-size:.84rem}.intake-upload-copy small{font-size:.7rem;font-weight:750}.intake-upload .pro{flex:none}.intake-file-status{min-height:17px;margin:5px 0 0!important;color:var(--ink-soft)!important;font-size:.68rem!important}.intake-file-status.error{color:#A53B57!important}.intake-preview{min-height:34px;display:flex;justify-content:center;align-items:center;margin:7px 0 -1px}.intake-preview-empty{font-size:1.05rem;opacity:.55}.intake-preview .face{display:grid;place-items:center;width:30px;height:30px;margin-left:-7px;border:2px solid #fff;border-radius:50%;color:#fff;font-size:.68rem;font-weight:900;box-shadow:0 3px 7px rgba(58,42,56,.13)}.intake-preview .face:first-child{margin-left:0}.intake-preview-more{margin-left:7px;color:var(--ink-soft);font-size:.77rem;font-weight:900}
.intake-count{min-height:21px;margin:0 0 10px!important;color:var(--ink-soft)!important;font-size:.8rem!important}.intake-count:not(.ready){opacity:.65}.intake-start:disabled{opacity:.48;cursor:not-allowed;box-shadow:none;transform:none}.intake-start.ready{animation:intakeReady .62s var(--spring) both}@keyframes intakeReady{40%{transform:scale(1.045);filter:brightness(1.06)}}
.intake-secondary{display:flex;justify-content:center;align-items:center;gap:6px;width:max-content;max-width:100%;margin:10px auto 0;padding:10px 16px;border:1px solid #EADFE4;border-radius:999px;background:var(--panel2);color:var(--ink-soft);font-weight:900;font-size:.84rem;transition:transform .22s var(--spring),background .22s}.intake-secondary:hover{transform:translateY(-2px);background:#FCECF1;color:var(--rose)}.intake-explore{display:block;margin:10px auto 0}
.restart-modal{max-width:470px}.restart-actions{display:grid;gap:9px;margin-top:17px}.restart-actions .ghost{width:100%}
#tray.personalizing{pointer-events:none}#tray.personalizing .chip{animation:sampleOut .34s var(--ease) both}@keyframes sampleOut{to{opacity:0;transform:translateY(-12px) scale(.9)}}#tray.personalized .chip{animation:personalIn .5s var(--spring) both}@keyframes personalIn{from{opacity:0;transform:translateY(13px) scale(.9)}to{opacity:1;transform:none}}

/* ── toast / confetti ───────────────────────────────────── */
.toast{
  position:fixed;top:70px;left:50%;transform:translateX(-50%) translateY(-20px);z-index:90;opacity:0;
  background:var(--ink);color:#FFF6EE;font-weight:800;font-size:.89rem;padding:12px 22px;border-radius:999px;
  box-shadow:0 14px 34px rgba(58,42,56,.35);transition:.4s var(--spring);pointer-events:none;max-width:90vw;text-align:center;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#confetti{position:fixed;inset:0;z-index:70;pointer-events:none}

/* ── nav buttons ────────────────────────────────────────── */
.pfoot{display:flex;justify-content:space-between;align-items:center;margin-top:18px;gap:10px}
.next{
  font-weight:900;color:#fff;padding:13px 28px;border-radius:999px;background:var(--ink);
  transition:transform .25s var(--spring);
}
.next:hover{transform:translateX(4px) scale(1.04)}
.prev{font-weight:800;color:var(--ink-soft);padding:13px 8px}
.prev:hover{color:var(--rose)}

/* ── seat explain popover ───────────────────────────────── */
.explain{
  position:fixed;z-index:75;background:var(--ink);color:#FFF6EE;font-weight:700;font-size:.82rem;
  padding:11px 15px;border-radius:14px;max-width:250px;box-shadow:0 14px 34px rgba(58,42,56,.4);
  animation:popin .35s var(--spring) both;pointer-events:none;line-height:1.4;
}

/* ── responsive ─────────────────────────────────────────── */
@media (max-width:520px){
  .bar{padding:10px 12px;gap:7px}
  .logo{font-size:.92rem;white-space:nowrap}
  .logo .dots i{width:11px;height:11px}
  .iconbtn{width:34px;height:34px;font-size:.88rem}
  .bar-cta{padding:9px 13px;font-size:.78rem}
  .lang-switch{padding:8px 7px;font-size:.69rem}
  .chips{gap:8px}
  .chip{font-size:.84rem;padding:5px 7px 5px 5px;gap:7px}
  .chip .face{width:28px;height:28px;font-size:.85rem}
  .chip .hearts{font-size:.7rem;padding:3px 4px}
  .chip .x{opacity:1;width:20px;height:20px}
  .toolrow{gap:7px}
  .tool{padding:8px 13px;font-size:.8rem}
  .magic{padding:6px 6px 6px 14px}
  .magic input{font-size:.86rem}
  .magic .send,.magic .cam{width:36px;height:36px}
  .pro{font-size:.58rem;padding:4px 7px}
}
@media (max-width:640px){
  .stage{padding:0 10px 130px}
  .panel{padding:18px 14px 20px;border-radius:var(--r-s)}
  .room{height:360px}
  .addrow{margin-left:0;width:100%}
  .addrow input{flex:1;width:auto}
  .addrow input:focus{width:auto}
  .stepper button span:not(.dot){display:none}
  .stepper button{padding:6px}
  .hero{padding:40px 16px 26px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
}

/* ── share modal ────────────────────────────────────────── */
.qrwrap{display:flex;justify-content:center;padding:14px;background:var(--panel2);border-radius:var(--r-s);margin-bottom:14px}
.qrwrap canvas{max-width:220px;width:100%;height:auto;border-radius:8px;background:#fff}
.linkrow{display:flex;gap:8px;margin-top:10px}
.linkfield{
  flex:1;min-width:0;border:2px solid var(--panel2);background:var(--cream);border-radius:999px;
  padding:10px 16px;font-weight:700;font-size:.82rem;color:var(--ink-soft);
}
.linkfield:focus{outline:none;border-color:var(--rose)}
.fine{font-size:.78rem;color:var(--ink-faint);font-weight:700;margin:6px 2px 0}
.mic.hot,#mic.hot{background:var(--rose);animation:pulse 1.1s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.16)}}

/* ── print picker ───────────────────────────────────────── */
.perks.pick li{padding:0;background:none;border:none}
.perks.pick button{
  width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;
  background:var(--panel2);border-radius:12px;padding:12px 15px;font-weight:800;
  transition:transform .25s var(--spring),background .2s;
}
.perks.pick button:hover{transform:translateX(4px);background:var(--rose-soft)}
.perks.pick span{font-weight:700;font-size:.79rem;color:var(--ink-soft)}

/* ── paper ──────────────────────────────────────────────── */
.print-sheet{display:none}
@media print{
  @page{margin:14mm}
  body{background:#fff!important}
  body > *:not(.print-sheet){display:none!important}
  .print-sheet{display:block!important;color:#2B2129;font-family:"Nunito",Arial,sans-serif}
  .print-sheet h1{font-size:30pt;margin:0 0 2pt;text-align:center;font-weight:700}
  .print-sheet .psub{
    text-align:center;margin:0 0 18pt;font-size:8pt;font-weight:800;
    letter-spacing:.22em;text-transform:uppercase;color:#8B7386;
  }
  .pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10pt}
  .pcard{border:.6pt solid #E5DAD3;border-radius:7pt;padding:9pt 11pt;break-inside:avoid}
  .pcard h2{font-size:12pt;margin:0 0 5pt;padding-bottom:4pt;border-bottom:.6pt solid #E5DAD3}
  .pcard ul{margin:0;padding-left:11pt;font-size:9.5pt;line-height:1.55}
  .plist{width:100%;border-collapse:collapse;font-size:10pt}
  .plist th{text-align:left;padding:0 0 4pt;color:#8B7386;font-size:7.5pt;letter-spacing:.08em;text-transform:uppercase;border-bottom:.8pt solid #D9CCC4}
  .plist td{padding:4.5pt 0;border-bottom:.4pt dotted #D9CCC4}
  .plist .pt{text-align:right;color:#8B7386;font-weight:800;white-space:nowrap}
  .pwarning{padding:7pt 9pt;border:.6pt solid #EAB765;border-radius:6pt;background:#FFF6DD;color:#82641D;font-size:8.5pt;font-weight:800}
  .pcards{display:grid;grid-template-columns:repeat(2,1fr);gap:0}
  .pcardlet{
    height:62mm;border:.4pt dashed #CBBBC4;display:flex;flex-direction:column;
    align-items:center;justify-content:center;gap:5pt;break-inside:avoid;padding:8pt;
  }
  .pcardlet .pname{font-size:19pt;text-align:center;line-height:1.15}
  .pcardlet .pdiv{color:#A84A63;font-size:9pt}
  .pcardlet .ptable{
    font-size:8.5pt;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#8B7386;
  }
}

/* ── rsvp ───────────────────────────────────────────────── */
.chip .rsvp{
  font-size:.78rem;padding:4px 6px;border-radius:999px;line-height:1;transition:background .2s,transform .3s var(--spring);
}
.chip .rsvp:hover{background:var(--sage-soft);transform:scale(1.15)}
.chip.declined{opacity:.5}
.chip.declined .nm{text-decoration:line-through;text-decoration-color:var(--ink-faint)}

/* ── saved venues ───────────────────────────────────────── */
.venues{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.venue-library-head{display:flex;align-items:center;gap:10px;width:100%;font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.venue-library-head label{margin-left:auto}.venue-library-head input{width:180px;border:1px solid #EADFE4;border-radius:999px;background:#fff;padding:7px 11px;font-family:inherit;font-weight:800;font-size:.75rem;color:var(--ink)}.venue-library-head input:focus{outline:none;border-color:var(--rose)}.venue-scope{display:flex;padding:2px;border-radius:999px;background:var(--panel2)}.venue-scope button{padding:5px 9px;border-radius:999px;font-family:inherit;font-weight:900;font-size:.65rem;color:var(--ink-soft)}.venue-scope button.on{background:#fff;color:var(--rose);box-shadow:var(--shadow-s)}.venue-list{display:flex;flex-wrap:wrap;gap:8px;width:100%}.venue-empty{color:var(--ink-faint);font-size:.78rem;font-weight:800}.venue-share{padding:6px 9px;border-radius:999px;background:var(--lilac-soft);color:var(--lilac);font-size:.68rem;font-weight:900;white-space:nowrap}
.venue{
  display:flex;align-items:center;background:var(--sage-soft);border-radius:999px;
  padding:2px 4px 2px 2px;font-weight:800;font-size:.82rem;color:#4C6252;
  transition:transform .25s var(--spring);
}
.venue:hover{transform:translateY(-2px)}
.venue .vname{padding:6px 8px 6px 12px}
.venue .vx{width:22px;height:22px;border-radius:50%;color:#7d9184;font-size:.75rem}
.venue .vx:hover{background:var(--danger-soft);color:var(--danger)}

/* ── tables ⇄ seats switch ──────────────────────────────── */
.modeswitch{display:flex;gap:3px;background:var(--panel2);border-radius:999px;padding:3px;flex:none}
.modeswitch button{
  font-weight:800;font-size:.83rem;padding:8px 15px;border-radius:999px;color:var(--ink-soft);
  transition:background .3s,color .3s,transform .3s var(--spring);white-space:nowrap;
}
.modeswitch button.on{background:var(--panel);color:var(--rose);box-shadow:var(--shadow-s);transform:scale(1.03)}
.modeswitch button:hover:not(.on){color:var(--ink)}

/* ── a single chair ─────────────────────────────────────── */
.tbl.seat1 .disc{
  width:calc(74px * var(--s));height:calc(56px * var(--s));
  border-radius:calc(14px * var(--s)) calc(14px * var(--s)) calc(9px * var(--s)) calc(9px * var(--s));
  padding:calc(4px * var(--s));gap:0;
  background:linear-gradient(180deg,#fff 62%,var(--panel2) 62%);
  box-shadow:0 5px 14px rgba(58,42,56,.13);
}
.tbl.seat1 .disc .num{font-size:calc(.6rem * max(.8, var(--s)));font-weight:900;color:var(--ink-faint);letter-spacing:.04em}
.tbl.seat1 .disc .who{
  font-size:calc(.62rem * max(.78, var(--s)));font-weight:900;line-height:1.15;
  max-width:calc(68px * var(--s));color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  word-break:break-word;
}
.tbl.seat1.taken .disc{background:linear-gradient(180deg,var(--rose-soft) 62%,var(--panel3) 62%)}
.tbl.seat1.taken .disc .num{color:var(--rose)}
.tbl.seat1 .stars{font-size:calc(.62rem * max(.75, var(--s)));margin-top:2px}
.tbl.seat1 .who.locked{filter:blur(4px);user-select:none}
.tbl.seat1.hidden-seat .disc{cursor:pointer}
.room.seatmode .rings{opacity:.55}
@media (max-width:640px){
  .modeswitch button{padding:7px 11px;font-size:.78rem}
}


/* ── the ＋ chair that grows a row ───────────────────────── */
.tbl.addseat{padding:0;background:none}
.tbl.addseat .disc{
  background:none;border:2px dashed var(--ink-faint);box-shadow:none;cursor:pointer;
  color:var(--ink-faint);font-size:calc(1.05rem * var(--s));display:grid;place-items:center;
  transition:border-color .25s,color .25s;
}
.tbl.addseat:hover{transform:translate(-50%,-50%) scale(1.1)}
.tbl.addseat:hover .disc{border-color:var(--rose);color:var(--rose)}

/* ── room size dial ─────────────────────────────────────── */
.zoomctl{display:flex;gap:3px;background:var(--panel2);border-radius:999px;padding:3px;margin-left:auto}
.zoomctl button{
  width:34px;height:34px;border-radius:50%;font-weight:900;font-size:1rem;color:var(--ink-soft);
  display:grid;place-items:center;transition:background .2s,color .2s,transform .25s var(--spring);
}
.zoomctl button:hover{background:var(--panel);color:var(--rose);transform:scale(1.1)}

/* ── edit sheet ─────────────────────────────────────────── */
.field{
  width:100%;border:2px solid var(--panel2);background:var(--cream);border-radius:999px;
  padding:13px 20px;font-weight:800;font-size:1rem;text-align:center;
}
.field:focus{outline:none;border-color:var(--rose)}
.caprow{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px}
.caprow .lab{font-size:.78rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
.caprow button{
  width:38px;height:38px;border-radius:50%;background:var(--panel2);font-size:1.15rem;font-weight:900;
  color:var(--ink-soft);transition:transform .25s var(--spring),background .2s;
}
.caprow button:hover{background:var(--rose-soft);color:var(--rose);transform:scale(1.1)}
.caprow [data-edit-stars]{width:auto;min-width:38px;padding:0 8px;color:#C69A2A}.caprow [data-edit-stars]:not(.on){opacity:.3;filter:grayscale(1)}
.caprow b{font-family:"Fraunces",Georgia,serif;font-size:1.5rem;min-width:2ch;text-align:center;font-variant-numeric:tabular-nums}
.object-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px;text-align:left}.object-controls label{display:flex;flex-direction:column;gap:4px;color:var(--ink-soft);font-size:.7rem;font-weight:900;letter-spacing:.05em;text-transform:uppercase}.object-controls select,.object-controls input[type="number"]{width:100%;border:1px solid #EADFE4;border-radius:10px;background:#fff;padding:8px;color:var(--ink);font:inherit;text-transform:none;letter-spacing:normal}.object-controls .object-blocks{grid-column:1 / -1;flex-direction:row;align-items:center;text-transform:none;letter-spacing:normal;font-size:.78rem}.object-actions{grid-column:1 / -1;margin-top:0}.object-actions .danger-ghost{color:var(--danger)}

/* ── guest detail sheet and graph breakpoints ───────────── */
.guest-sheet{position:relative;text-align:left;max-width:500px}.sheet-close{position:absolute;top:12px;right:14px;width:35px;height:35px;border-radius:50%;display:grid;place-items:center;color:var(--ink-soft);font-size:1.6rem;transition:background .2s,color .2s}.sheet-close:hover{background:var(--panel2);color:var(--rose)}
.guest-sheet-head{display:flex;align-items:center;gap:12px;margin:2px 32px 18px 0}.guest-sheet-head .face{width:50px;height:50px;border-radius:17px;color:#fff;display:grid;place-items:center;font-weight:900;font-size:1.2rem}.eyebrow{margin:0 !important;color:var(--ink-faint) !important;text-transform:uppercase;letter-spacing:.08em;font-size:.7rem !important;font-weight:900 !important}.guest-sheet h3{margin:0}.sheet-label{display:block;margin:0 0 6px 2px;color:var(--ink-soft);font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900}.guest-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.guest-choice{margin:0;padding:11px;border:1px solid #EEE4E9;border-radius:15px;min-width:0}.guest-choice legend{padding:0 4px;color:var(--ink-soft);font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;font-weight:900}.choice-row{display:flex;gap:5px;flex-wrap:wrap}.choice-row button{border-radius:10px;padding:7px 8px;color:var(--ink-soft);font-size:.74rem;font-weight:900;background:var(--panel2);transition:transform .22s var(--spring),background .2s,color .2s}.choice-row button:hover{transform:translateY(-1px)}.choice-row button.on{color:var(--rose);background:var(--rose-soft);box-shadow:0 0 0 2px #F6C8D7 inset}.heart-choice button{letter-spacing:-3px;font-size:.78rem}.sheet-note{margin:14px 1px 0 !important;font-size:.78rem !important}.danger-ghost{color:var(--danger)}.sheet-actions{align-items:center}.sheet-actions .ghost{flex:none}

@media (max-width:820px){
  .rule-dock{align-items:stretch;flex-wrap:wrap}.rule-dock-copy{max-width:none;flex:1 1 230px}.rule-tools{flex:1 1 100%}.rule-done{margin-left:auto}
  .group-hub .group-cards{grid-template-columns:1fr;gap:15px}
}
@media (max-width:640px){
  .guest-switch{width:100%;justify-content:space-between}.guest-switch button{flex:1}
  .people-actions{width:100%;flex-wrap:wrap}.people-actions .tool{flex:none}.people-actions .addrow{flex:1;min-width:190px}
  .tray{min-height:250px;padding-top:4px}.linked-groups{gap:16px}.linked-group{padding:11px 10px 14px;border-radius:18px;overflow:visible}.group-caption{margin-bottom:9px}
  .group-cards,.group-pair .group-cards,.group-small .group-cards,.group-hub .group-cards{grid-template-columns:1fr;grid-template-areas:none;gap:15px;padding-inline:0;min-height:0}
  .group-cards .chip{min-height:67px;padding:9px 12px;gap:10px;border-radius:19px;font-size:.9rem}.group-cards .chip .face{width:42px;height:42px;border-radius:14px;font-size:.9rem}.group-cards .chip .nm{font-size:.98rem}.group-cards .guest-meta{gap:3px 5px;font-size:.72rem}.group-cards .guest-meta .hearts{font-size:.65rem}
  #threads .thread-under{stroke-width:14px}#threads .thread-line{stroke-width:6px;filter:drop-shadow(0 2px 3px rgba(58,42,56,.2))}
  .chips{grid-template-columns:1fr;gap:15px;padding:0 0 12px}.chip{min-height:67px;padding:9px 12px;border-radius:19px;font-size:.9rem}.chip .face{width:42px;height:42px}.chip .nm{font-size:.98rem}.guest-meta{font-size:.72rem}.guest-meta .hearts{font-size:.65rem}.connector-nub{right:-7px}.rule-dock{padding:11px;border-radius:17px;gap:9px}.rule-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px}.rule-tools .tool{justify-content:center;padding:9px 8px}.rule-tools .tool.red{grid-column:1 / -1}.rule-done{width:100%;margin:0}.guest-detail-grid{grid-template-columns:1fr}.guest-sheet{padding:25px 18px}.choice-row button{flex:1}.guest-filter{order:-1;width:100%;min-width:0}.guest-filter input{flex:1;width:auto}.guest-filter-count{width:100%;padding-left:4px}
  .sample-cta{width:100%;justify-content:center;order:4}.intake-veil{align-items:end;padding:0}.intake-modal{width:100%;max-width:none;max-height:100dvh;min-height:0;margin:0;padding:20px 18px max(20px,env(safe-area-inset-bottom));border-radius:25px 25px 0 0;overflow-y:auto}.intake-orbit{transform:scale(.86);margin-top:-8px;margin-bottom:-5px}.intake-modal h3{font-size:1.55rem}.intake-lead{font-size:.86rem!important;margin-bottom:11px!important}.intake-textarea{min-height:112px;padding:11px}.intake-upload{padding:8px 10px}.intake-secondary{margin-top:8px}.intake-explore{margin-top:7px}.restart-modal{margin-bottom:0;border-radius:25px 25px 0 0}
  #floorplan-veil{align-items:end;padding:0}.floorplan-modal{width:100%;max-width:none;max-height:92dvh;margin:0;padding:22px 17px max(18px,env(safe-area-inset-bottom));border-radius:25px 25px 0 0}.floorplan-table-list{grid-template-columns:1fr;max-height:220px}.floorplan-confirm-actions{flex-direction:column}.floorplan-confirm-actions .ghost{width:100%}
}
@media (max-width:390px){.rule-tools{grid-template-columns:1fr}.rule-tools .tool.red{grid-column:auto}.group-cards,.group-pair .group-cards,.group-small .group-cards,.group-hub .group-cards{padding-inline:0;gap:13px}.chip .face{width:39px;height:39px}.guest-meta{font-size:.68rem}.guest-meta .hearts{font-size:.62rem}}

/* ── polished controls and mixed-room canvas ─────────────── */
svg{display:block}
.iconbtn svg,.stepper .dot svg,.tool svg,.zoomctl svg,.magic svg,.collab-mark svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.iconbtn{color:var(--ink-soft);border:1px solid rgba(139,115,134,.12)}
.iconbtn:hover{color:var(--rose);border-color:var(--rose-soft)}
.stepper .dot{font-size:0;color:var(--ink-soft)}
.stepper button.on .dot{color:var(--rose)}
.stepper button.done .dot{color:var(--sage)}
.layout-status{display:flex;align-items:center;gap:8px;padding:9px 13px;border:1px solid #EDE1E6;border-radius:999px;background:linear-gradient(120deg,#FFF8EF,#F8F4FF);color:var(--ink-soft);font-size:.77rem;font-weight:900;white-space:nowrap}
.layout-status > span:first-child{width:9px;height:9px;border-radius:50%;background:linear-gradient(135deg,var(--rose),var(--lilac));box-shadow:0 0 0 4px var(--rose-soft)}
.room-add svg,.tool.plain>svg{width:17px;height:17px;color:var(--rose);flex:none}
.zoomctl button{font-size:0}.zoomctl button svg{width:17px;height:17px}
.stage-node{position:absolute;transform:translate(-50%,-50%);z-index:2;cursor:grab;touch-action:none}
.stage-node.dragging{cursor:grabbing;z-index:8}
.stage-node .stage-disc{min-width:130px;padding:10px 14px;border-radius:16px;background:linear-gradient(135deg,var(--coral),var(--rose));color:#fff;box-shadow:0 14px 26px rgba(228,87,123,.28);font-size:.76rem;font-weight:900;text-align:center}
.stage-node .stage-disc svg{display:inline-block;width:15px;height:15px;vertical-align:-3px;margin-right:5px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tbl.table-node .disc{border:2px solid rgba(255,255,255,.75)}
.tbl.table-node .quality{display:none}
.tbl.seat1 .quality{display:none}
.room .object-node .disc{width:calc(var(--object-w, 88px) * var(--s));height:calc(var(--object-d, 42px) * var(--s));border-radius:14px;background:rgba(58,42,56,.09);box-shadow:none;border:2px dashed rgba(58,42,56,.25);color:var(--ink-soft);font-size:.68rem;transform:rotate(var(--object-rotation, 0deg));transition:transform .2s var(--ease),background .2s}.room .object-node .item-kind{z-index:2}
.tbl .item-kind{position:absolute;top:-9px;left:50%;transform:translateX(-50%);padding:3px 7px;background:var(--ink);color:#fff;border-radius:999px;font-size:.55rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;opacity:0;transition:opacity .2s}
.tbl:hover .item-kind{opacity:1}
.manual-panel{display:flex;align-items:center;gap:16px;margin-top:14px;padding:14px 16px;border:1px solid #F0E2E7;border-radius:18px;background:linear-gradient(105deg,#FFF9F5,#F7F3FF);animation:rise .4s var(--ease) both}
.manual-panel[hidden]{display:none}.manual-panel>div{flex:1}.manual-panel strong{display:block;font-size:.91rem}.manual-panel p{margin:2px 0 0;color:var(--ink-soft);font-size:.78rem;font-weight:700}.seat.manual-pick{box-shadow:0 0 0 4px var(--gold-soft),0 9px 20px rgba(233,185,78,.3);background:#fff9e7}.tbl.drop-target .disc{outline:3px solid var(--gold);outline-offset:5px}.seating-title{display:flex;align-items:center;gap:11px}.seating-title .eyebrow{white-space:nowrap}
.magic{border:1px solid rgba(255,255,255,.12);border-radius:22px;padding-left:12px;gap:7px}
.magic-label{display:flex;align-items:center;gap:6px;color:#FFE9D6;font-size:.72rem;font-weight:900;white-space:nowrap}.magic-label svg{width:17px;height:17px;color:#FFC76D}
.magic .send{width:auto;padding:0 13px;gap:6px;border-radius:15px;font-size:.77rem;font-weight:900}.magic .send svg{width:17px;height:17px}.magic .cam{font-size:0}.magic.busy .magic-label{opacity:.55}
.collab-mark{display:grid;place-items:center;width:52px;height:52px;margin:0 auto;border-radius:18px;background:var(--lilac-soft);color:var(--lilac)}.collab-mark svg{width:27px;height:27px}.collab-note{display:flex;flex-direction:column;gap:3px;margin:18px 0;padding:13px;border-radius:14px;background:var(--panel2);color:var(--ink-soft);font-size:.82rem;font-weight:700;text-align:left}.collab-note b{color:var(--ink);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.collab-links{display:flex;flex-direction:column;gap:8px;margin:0 0 18px;text-align:left}.collab-link-row{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:12px;background:var(--panel2);font-size:.76rem;font-weight:900;color:var(--ink)}.collab-link-row span{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collab-link-row small{color:var(--ink-soft);font-size:.66rem;font-weight:700}.collab-link-row button{flex:none;padding:6px 9px;font-size:.66rem}.collab-link-row button:disabled{opacity:.55;cursor:default}
@media (max-width:640px){.layout-status{order:3;width:100%;justify-content:center}.room-add span{display:none}.room-add{width:40px;justify-content:center;padding:10px}.manual-panel{align-items:flex-start;flex-direction:column}.magic-label span{display:none}.magic-label{padding-left:2px}.magic .send span{display:none}.magic .send{width:36px;padding:0;border-radius:50%}.bar #collaborate{display:inline-flex!important;width:40px;min-width:40px;padding:9px;justify-content:center}.bar #collaborate span{display:none}}
