:root{--bg:#f4f7fc;--ink:#23334d;--ink-soft:#5b6b8c;--brand:#3469d5;--brand-dark:#2450ac;--card:#fff;--line:#e4eaf4;--ok:#1f9d66;--warn:#c27815;--bad:#c2402f;--radius:18px}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);min-height:100vh;font-family:Heebo,sans-serif}#root{flex-direction:column;max-width:520px;min-height:100vh;margin:0 auto;display:flex}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}input,select,textarea{font-family:inherit;font-size:16px}.topbar{z-index:10;color:#fff;background:linear-gradient(135deg,#2b4a8f,#3469d5);border-radius:0 0 22px 22px;align-items:center;gap:12px;padding:14px 18px;display:flex;position:sticky;top:0;box-shadow:0 6px 24px #23334d2e}.topbar .mark{background:#ffffff29;border-radius:12px;justify-content:center;align-items:center;width:40px;height:40px;font-size:20px;font-weight:900;display:flex}.topbar h1{font-size:18px;font-weight:800;line-height:1.2}.topbar .sub{opacity:.85;font-size:12.5px;font-weight:400}.topbar .spacer{flex:1}.pill{background:#ffffff2e;border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:600}.screen{flex:1;padding:20px 18px 90px;animation:.25s fade}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.hero{text-align:center;padding:34px 8px 26px}.hero .logo{color:#fff;background:linear-gradient(135deg,#3469d5,#6a9bf0);border-radius:24px;justify-content:center;align-items:center;width:84px;height:84px;margin:0 auto 16px;font-size:40px;font-weight:900;display:flex;box-shadow:0 12px 32px #3469d559}.hero h2{margin-bottom:8px;font-size:26px;font-weight:900}.hero p{color:var(--ink-soft);font-size:15px;line-height:1.6}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:14px;padding:18px;box-shadow:0 2px 10px #23334d0d}.card h3{margin-bottom:10px;font-size:16.5px;font-weight:800}.muted{color:var(--ink-soft);font-size:13.5px}.small{font-size:12.5px}.btn{background:var(--brand);color:#fff;text-align:center;border-radius:14px;width:100%;padding:14px;font-size:16px;font-weight:700;transition:background .15s,transform .1s;display:block}.btn:hover{background:var(--brand-dark)}.btn:active{transform:scale(.985)}.btn.secondary{color:var(--brand-dark);background:#ebf1fc}.btn.secondary:hover{background:#dce8fa}.btn.ghost{color:var(--ink-soft);background:0 0;font-weight:600}.btn.sm{border-radius:10px;width:auto;padding:8px 16px;font-size:14px;display:inline-block}.btn.danger{color:var(--bad);background:#fbeae7}.btn.ok{color:var(--ok);background:#e5f4ec}.btn:disabled{opacity:.5;cursor:default}.field{margin-bottom:14px}.field label{color:var(--ink-soft);margin-bottom:6px;font-size:13.5px;font-weight:600;display:block}.field input,.field select,.field textarea{border:1.5px solid var(--line);background:#fafbfe;border-radius:12px;outline:none;width:100%;padding:12px 14px;transition:border-color .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);background:#fff}.tabs{z-index:5;background:#e9eef8;border-radius:14px;gap:6px;margin-bottom:16px;padding:5px;display:flex;position:sticky;top:68px}.tabs button{color:var(--ink-soft);border-radius:10px;flex:1;padding:9px 4px;font-size:13.5px;font-weight:700}.tabs button.active{color:var(--ink);background:#fff;box-shadow:0 2px 8px #23334d1f}.announce{border-right:4px solid var(--brand)}.announce .ts{color:var(--ink-soft);margin-top:8px;font-size:12px}.reactions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.chip{border:1.5px solid var(--line);background:#fafbfe;border-radius:999px;align-items:center;gap:5px;padding:4px 11px;font-size:13.5px;display:inline-flex}.chip.on{border-color:var(--brand);background:#ebf1fc}.chip .n{color:var(--ink-soft);font-size:12.5px;font-weight:700}.event-date{color:#fff;background:linear-gradient(135deg,#3469d5,#6a9bf0);border-radius:14px;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;width:58px;height:58px;display:flex}.event-date .d{font-size:20px;font-weight:900;line-height:1}.event-date .m{font-size:11.5px;font-weight:600}.row{align-items:flex-start;gap:12px;display:flex}.row .grow{flex:1;min-width:0}.rsvp-row{gap:6px;margin-top:12px;display:flex}.rsvp-row button{border:1.5px solid var(--line);color:var(--ink-soft);background:#fafbfe;border-radius:10px;flex:1;padding:8px 4px;font-size:13px;font-weight:700}.rsvp-row button.yes.on{border-color:var(--ok);color:var(--ok);background:#e5f4ec}.rsvp-row button.maybe.on{border-color:var(--warn);color:var(--warn);background:#fbf3e2}.rsvp-row button.no.on{border-color:var(--bad);color:var(--bad);background:#fbeae7}.counts{color:var(--ink-soft);margin-top:8px;font-size:12.5px}.duty{align-items:center;gap:12px;display:flex}.avatar{width:42px;height:42px;color:var(--brand-dark);background:#ebf1fc;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:17px;font-weight:800;display:flex}.badge{border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:700;display:inline-block}.badge.pending{color:var(--warn);background:#fbf3e2}.badge.approved{color:var(--ok);background:#e5f4ec}.badge.rejected{color:var(--bad);background:#fbeae7}.member-row{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:10px 0;display:flex}.member-row:last-child{border-bottom:none}.admin-bar{color:#fff;background:linear-gradient(135deg,#23334d,#3d5479);border-radius:14px;align-items:center;gap:10px;margin-bottom:16px;padding:12px 16px;font-size:14px;display:flex}.admin-bar .dot{background:#7be3ae;border-radius:50%;width:8px;height:8px}.toast{color:#fff;z-index:50;text-align:center;background:#23334d;border-radius:999px;max-width:88vw;padding:11px 20px;font-size:14px;font-weight:600;animation:.2s fade;position:fixed;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000040}.empty{text-align:center;color:var(--ink-soft);padding:34px 12px}.empty .ic{margin-bottom:10px;font-size:34px}.code-box{text-align:center;letter-spacing:8px;color:var(--brand-dark);direction:ltr;background:#ebf1fc;border-radius:14px;margin:12px 0;padding:16px;font-size:30px;font-weight:900}.divider{background:var(--line);height:1px;margin:16px 0}.link-btn{color:var(--brand);padding:6px;font-size:14.5px;font-weight:700}.center{text-align:center}.mt{margin-top:12px}.mb{margin-bottom:12px}
