:root{--surface:#fbf8f3;--surface-2:#f3eee5;--ink:#2b2420;--ink-soft:#6b6159;--line:#e4dccd;--plum:#6d2b5b;--plum-deep:#561f46;--plum-soft:#f0e2ec;--danger:#b3261e;--ok:#1e6b3c;--radius:10px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--surface);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif;line-height:1.5}a{color:var(--plum)}.container{overflow-wrap:anywhere;max-width:920px;margin:0 auto;padding:clamp(16px,4vw,48px)}.card{border:1px solid var(--line);border-radius:var(--radius);background:#fffdf9;padding:clamp(20px,4vw,32px)}.field{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.field label{font-size:.95rem;font-weight:600}.field input,.field select{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:8px;padding:11px 12px;font-size:1rem}.btn{cursor:pointer;color:#fff;background:var(--plum);border:none;border-radius:8px;justify-content:center;align-items:center;padding:11px 18px;font-size:1rem;font-weight:600;transition:background .15s;display:inline-flex}.btn:hover{background:var(--plum-deep)}.btn:disabled{cursor:not-allowed;background:#c9b8c3}.btn-block{width:100%}.btn-ghost{color:var(--plum);border:1px solid var(--plum);background:0 0}.btn-ghost:hover{background:var(--plum-soft)}.logo{letter-spacing:.02em;font-size:1.25rem;font-weight:700}.logo b{color:var(--plum)}.muted{color:var(--ink-soft)}.hint{color:var(--ink-soft);font-size:.85rem}.empty,.error-banner{border-radius:var(--radius);margin:16px 0;padding:18px}.empty{background:var(--surface-2);border:1px dashed var(--line)}.error-banner{color:var(--danger);background:#fdeceb;border:1px solid #f4c6c1}.ok-banner{color:var(--ok);border-radius:var(--radius);background:#e8f4ec;border:1px solid #bfe0cb;margin:16px 0;padding:14px}.offline-banner{color:#7a5a00;border-radius:var(--radius);background:#fff4dc;border:1px solid #ecd9a0;margin:12px 0;padding:12px 14px}:focus-visible{outline:3px solid var(--plum);outline-offset:2px}table{border-collapse:collapse;width:100%;margin-top:8px;font-size:.95rem}th,td{text-align:left;border-bottom:1px solid var(--line);padding:10px}th{color:var(--ink-soft);font-size:.85rem;font-weight:600}.table-wrap{overflow-x:auto}.chip{border-radius:999px;padding:3px 10px;font-size:.78rem;font-weight:600;display:inline-block}.chip.accepted{color:var(--ok);background:#e8f4ec}.chip.declined{color:var(--danger);background:#fdeceb}.chip.undecided{color:var(--plum-deep);background:#f0e2ec}.chip.pending{color:var(--ink-soft);background:#eee9df}.count-grid{gap:10px;margin:8px 0 20px;display:grid}@media (min-width:700px){.count-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}}.count-box{border:1px solid var(--line);border-radius:var(--radius);background:#fffdf9;padding:12px 14px}.count-box .num{font-size:1.35rem;font-weight:700}.count-box .lbl{color:var(--ink-soft);font-size:.85rem}.rsvp-person{border:1px solid var(--line);border-radius:var(--radius);background:#fffdf9;margin-bottom:12px;padding:14px 16px}.rsvp-person .name{font-weight:600}.radio-row{flex-wrap:wrap;gap:18px;margin-top:8px;display:flex}.radio-row label{align-items:center;gap:6px;font-size:.95rem;display:inline-flex}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;display:flex}.actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.spin{border:2px solid var(--line);border-top-color:var(--plum);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spin{animation:none}}
