:root{--bg: #ffffff;--card: #ffffff;--line: #dbe2ec;--line-soft: #edf1f7;--ink: #0b0b0c;--ink-soft: #2b2f36;--muted: #6b7280;--faint: #9ca3af;--accent: #0a4f4b;--accent-ink: #073b38;--accent-dim: rgba(10, 79, 75, .08);--sky: #8fb4dd;--sky-dim: rgba(143, 180, 221, .22);--green: #1e7e34;--green-dim: rgba(30, 126, 52, .08);--red: #c92a2a;--red-dim: rgba(201, 42, 42, .07);--gold: #b45309;--radius: 10px}*{box-sizing:border-box}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,.display{font-family:Oswald,Inter,sans-serif;text-transform:uppercase;letter-spacing:.03em;margin:0 0 10px;line-height:1.15}h2{font-size:1.5rem}h3{font-size:1.05rem}p{margin:0 0 10px}.muted{color:var(--muted)}.small{font-size:.85rem}.tiny{font-size:.75rem}.error{color:var(--red);font-weight:600}.pos{color:var(--green);font-weight:700}.neg{color:var(--red);font-weight:700}a{color:var(--accent-ink)}.shell{min-height:100vh}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}.brand{display:flex;align-items:center;gap:10px}.brand-logo{height:40px;width:auto;display:block}.auth-logo{width:88px;height:88px;border-radius:50%;object-fit:cover;display:block;margin:0 auto 14px;border:2px solid var(--line)}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--ink);color:var(--bg);font-family:Oswald,sans-serif;font-weight:700;font-size:1.1rem;border-radius:6px;flex-shrink:0}.brand-name{font-family:Oswald,sans-serif;font-weight:700;font-size:1.1rem;letter-spacing:.05em;line-height:1.1}.brand-tag{font-size:.65rem;letter-spacing:.12em;color:var(--muted);font-weight:600}.userbox{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--muted);flex-shrink:0}.userbox .who{font-weight:700;color:var(--ink-soft)}.role-chip{font-size:.65rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;background:var(--accent-dim);color:var(--accent-ink);border-radius:20px;padding:3px 9px}.linklike{background:none;border:none;padding:0;color:var(--muted);font-size:.8rem;font-family:inherit;cursor:pointer;text-decoration:underline}.tabnav{display:flex;gap:2px;padding:8px 12px 0;background:var(--card);border-bottom:1px solid var(--line);overflow-x:auto;position:sticky;top:57px;z-index:49;-webkit-overflow-scrolling:touch}.tabnav a{padding:10px 14px;text-decoration:none;color:var(--muted);font-weight:600;font-size:.88rem;border-bottom:2px solid transparent;white-space:nowrap}.tabnav a.active{color:var(--ink);border-bottom-color:var(--accent)}.content{max-width:860px;margin:0 auto;padding:18px 16px 60px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:12px}.card.tight{padding:12px 14px}.badge{display:inline-block;font-size:.65rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;border-radius:20px;padding:3px 10px;margin-right:6px}.badge.blue{background:var(--accent-dim);color:var(--accent-ink)}.badge.black{background:var(--ink);color:#fff}.badge.green{background:var(--green-dim);color:var(--green)}.badge.gold{background:#b453091a;color:var(--gold)}.badge.gray{background:var(--line-soft);color:var(--muted)}.badge.red{background:var(--red-dim);color:var(--red)}.meta-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.78rem;color:var(--muted);margin-bottom:8px}.meta-row .author{font-weight:700;color:var(--ink-soft)}.btn{display:inline-block;background:var(--ink);color:var(--bg);border:1px solid var(--ink);border-radius:8px;padding:9px 18px;font-size:.88rem;font-weight:600;cursor:pointer;text-decoration:none;font-family:inherit}.btn:hover{opacity:.88}.btn:disabled{opacity:.5;cursor:default}.btn.small{padding:6px 12px;font-size:.8rem}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}.btn.ghost:hover{border-color:var(--ink);opacity:1}.btn.accent{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{color:var(--red);border-color:var(--line);background:transparent}.btn.block{display:block;width:100%;text-align:center}.btn-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.rsvp-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.rsvp-btn{flex:1 1 0;min-width:90px;border:1px solid var(--line);background:var(--card);border-radius:8px;padding:8px 6px;font-size:.8rem;font-weight:700;cursor:pointer;font-family:inherit;color:var(--ink-soft)}.rsvp-btn .count{display:block;font-size:.7rem;font-weight:600;color:var(--muted)}.rsvp-btn.sel-going{background:var(--green-dim);border-color:var(--green);color:var(--green)}.rsvp-btn.sel-going .count{color:var(--green)}.rsvp-btn.sel-no{background:var(--red-dim);border-color:var(--red);color:var(--red)}.rsvp-btn.sel-no .count{color:var(--red)}.rsvp-btn.sel-maybe{background:var(--accent-dim);border-color:var(--accent);color:var(--accent-ink)}.rsvp-btn.sel-maybe .count{color:var(--accent-ink)}.form label{display:block;font-size:.8rem;font-weight:600;color:var(--ink-soft);margin-bottom:10px}.form input,.form select,.form textarea{display:block;width:100%;margin-top:4px;padding:9px 12px;font-size:.92rem;font-family:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px}.form textarea{min-height:90px;resize:vertical}.form input:focus,.form select:focus,.form textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.checkline{display:flex!important;align-items:center;gap:8px;flex-direction:row!important}.checkline input{width:auto!important;margin-top:0!important}.auth-wrap{max-width:420px;margin:40px auto}.auth-wrap .brand{margin-bottom:18px}.comments{margin-top:12px;border-top:1px solid var(--line-soft);padding-top:10px}.comment{padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:.88rem}.comment:last-child{border-bottom:none}.comment .who{font-weight:700;font-size:.78rem;color:var(--ink-soft)}.comment .when{font-size:.72rem;color:var(--faint);margin-left:6px}.comment-row{display:flex;gap:8px;margin-top:8px}.comment-row input{flex:1;padding:8px 12px;font-size:.88rem;font-family:inherit;border:1px solid var(--line);border-radius:8px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.photo-cell{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--card)}.photo-cell img{width:100%;height:150px;object-fit:cover;display:block}.photo-cell .cap{padding:8px 10px;font-size:.78rem;color:var(--ink-soft)}.photo-cell .meta{padding:0 10px 8px;font-size:.68rem;color:var(--faint)}.poll-opt{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:8px;cursor:pointer;font-size:.9rem}.poll-opt.voted{border-color:var(--accent);background:var(--accent-dim)}.poll-bar{height:6px;background:var(--line-soft);border-radius:4px;margin-top:6px;overflow:hidden}.poll-bar>div{height:100%;background:var(--accent)}.poll-counts{font-size:.75rem;color:var(--muted);margin-top:4px}.roster-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.roster-card{border:1px solid var(--line);border-radius:var(--radius);padding:14px;background:var(--card)}.roster-card .pname{font-weight:800;font-size:1rem}.roster-card .pnum{display:inline-block;background:var(--ink);color:#fff;font-size:.72rem;font-weight:800;border-radius:4px;padding:1px 7px;margin-right:6px}.roster-card .crow{font-size:.82rem;color:var(--ink-soft);margin-top:6px}.roster-card .crow .lbl{color:var(--muted);font-size:.7rem;letter-spacing:.06em;font-weight:700;display:block}.link-card{display:block;text-align:center;padding:34px 20px;text-decoration:none;color:var(--ink)}.link-card .big{font-size:1.3rem;font-weight:800;margin-bottom:6px}.invite-code{font-family:monospace;font-size:1.05rem;font-weight:700;background:var(--line-soft);border-radius:6px;padding:6px 12px;word-break:break-all}.empty{text-align:center;padding:36px 18px;color:var(--muted)}.empty p{max-width:30em;margin:0 auto 12px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:4px 0 12px;flex-wrap:wrap}.section-head h2{margin:0}.divider{border:none;border-top:1px solid var(--line-soft);margin:14px 0}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}@media (max-width: 640px){.content{padding:14px 12px 50px}.tabnav{padding:8px 8px 0}.brand-tag{display:none}}.chat-wrap{display:flex;flex-direction:column;height:calc(100vh - 240px);min-height:380px}.chat-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:4px 2px 12px}.chat-msg{max-width:85%;align-self:flex-start}.chat-msg.mine{align-self:flex-end;text-align:right}.chat-who{font-size:.72rem;font-weight:700;color:var(--muted);margin-bottom:2px}.chat-bubble{display:inline-block;background:var(--line-soft);border-radius:14px;padding:8px 14px;font-size:.95rem;text-align:left}.chat-msg.mine .chat-bubble{background:var(--accent);color:#fff}.chat-when{font-size:.68rem;color:var(--muted);margin-top:2px}.chat-form{display:flex;gap:8px;padding-top:10px;border-top:1px solid var(--line-soft);position:sticky;bottom:0;background:var(--bg)}.chat-form input{flex:1;border:1px solid var(--line);border-radius:999px;padding:10px 16px;font-size:.95rem}.push-prompt{display:flex;gap:12px;align-items:center;justify-content:space-between;border-left:4px solid var(--accent)}
