*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

html,body{height:100%;background:#fff;color:#111;font-family:-apple-system,BlinkMacSystemFont,"Inter",sans-serif;overflow:hidden}

.shell{display:flex;flex-direction:column;height:100vh;padding:8px;gap:6px}

.tabs{display:flex;gap:6px;flex-shrink:0}

.tab{padding:5px 16px;border-radius:5px;font-size:15px;font-weight:500;cursor:pointer;border:0.5px solid #ccc;color:#555;background:#fff;transition:all 0.2s}
.tab.active{background:#111;color:#fff;border-color:#111}

.view{display:none;flex-direction:column;flex:1;min-height:0;gap:6px}
.view.active{display:flex}

.hdr{display:flex;justify-content:space-between;align-items:center;padding-bottom:7px;border-bottom:0.5px solid #e0e0e0;flex-shrink:0}
.htitle{font-size:18px;font-weight:500;color:#111;letter-spacing:0.03em}
.hsub{font-size:14px;color:#777;margin-top:2px}
.hright{display:flex;align-items:center;gap:14px}
.stat{font-size:15px;color:#555}
.stat b{color:#111;font-weight:500}
.live{display:flex;align-items:center;gap:5px;font-size:15px;color:#1a6e3c}
.livdot{width:7px;height:7px;border-radius:50%;background:#1a6e3c;animation:pulse 1.4s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.25}}

.group-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:5px;flex:1;min-height:0}

.q{background:#f7f7f7;border-radius:5px;border:0.5px solid #e0e0e0;display:flex;flex-direction:column;overflow:hidden;min-height:0}

.qhdr{padding:5px 10px;border-bottom:0.5px solid #e0e0e0;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.qtitle{font-size:14px;font-weight:500;text-transform:uppercase;letter-spacing:0.08em}
.qcount{font-size:14px;color:#777}

.qpolitical .qtitle{color:#185fa5}
.qbusiness  .qtitle{color:#854f0b}
.qcultural  .qtitle{color:#3b6d11}
.qother     .qtitle{color:#7a3b8c}

.col-hdr{display:grid;grid-template-columns:16px 100px 1fr 1fr 52px 46px;gap:4px;padding:3px 10px;border-bottom:0.5px solid #ebebeb;flex-shrink:0;align-items:center}
.col-hdr span{font-size:12px;color:#999;text-transform:uppercase;letter-spacing:0.04em}
.col-hdr span:nth-child(5),
.col-hdr span:nth-child(6){text-align:right}

.glist{flex:1;overflow-y:auto;min-height:0}
.glist::-webkit-scrollbar{width:2px}
.glist::-webkit-scrollbar-thumb{background:#ccc;border-radius:2px}

.g{display:grid;grid-template-columns:16px 100px 1fr 1fr 52px 46px;gap:4px;align-items:center;padding:3.5px 10px;border-bottom:0.5px solid #f0f0f0;transition:background 0.4s}

.gname{font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#222}
.gname-sub{font-size:12px;font-weight:400;opacity:0.7}
.gdiet{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.pill{display:inline-flex;align-items:center;padding:1px 7px;border-radius:3px;font-size:12px;font-weight:500;white-space:nowrap;line-height:1.6}
.pill-guest{background:#fff3cc;color:#7a5500;border:0.5px solid #e6c84a}
.pill-partner{background:#dceeff;color:#1a3d6e;border:0.5px solid #7ab4e8}

.gseat{font-size:15px;font-weight:500;text-align:right;font-variant-numeric:tabular-nums;color:#444}
.gtime{font-size:14px;text-align:right;font-variant-numeric:tabular-nums;color:#777}

.rdot{width:7px;height:7px;border-radius:50%;background:#1a6e3c;flex-shrink:0}
.pdot{width:7px;height:7px;border-radius:50%;flex-shrink:0}

.attended{background:#e8f5ee}
.attended .gname{color:#1a6e3c}
.attended .gtime{color:#2d7a4e}
.attended .gseat{color:#1a6e3c}
.attended .gdiet{color:#c0392b;font-weight:600}

.recent{background:#c8ecd8}
.recent .gname{color:#0d5c32;font-weight:600}
.recent .gtime{color:#0d5c32}
.recent .gseat{color:#0d5c32}
.recent .gdiet{color:#c0392b;font-weight:600}

.pending .gname{color:#888}
.pending .gseat{color:#bbb}
.pending .gtime{color:#ccc}
.pending .gdiet{color:transparent}

@keyframes flash{0%{background:#a8e6c0}100%{background:#e8f5ee}}
.g.flash{animation:flash 1s ease-out}

.table-floor{display:flex;flex-direction:column;gap:5px;flex:1;min-height:0}
.table-row{display:flex;gap:5px;flex:1;min-height:0}

.tbl{background:#f7f7f7;border-radius:5px;border:0.5px solid #e0e0e0;display:flex;flex-direction:column;overflow:hidden;min-height:0;flex:1}

.thdr{padding:4px 7px;border-bottom:0.5px solid #e0e0e0;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.tnum{font-size:14px;font-weight:500;color:#111;text-transform:uppercase;letter-spacing:0.05em}
.tprog-txt{font-size:13px;color:#777}

.prog-bar{height:2px;background:#ddd;flex-shrink:0}
.prog-fill{height:100%;border-radius:1px;background:#1a6e3c;transition:width 0.4s}

.trows{flex:1;display:flex;flex-direction:column;padding:1px 0;overflow:hidden;min-height:0}

.tr{display:flex;align-items:center;gap:3px;padding:0 6px;flex:1;min-height:0;transition:background 0.4s}

.trdot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.trname{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;color:#333}
.trdiet{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0;max-width:60px;text-align:right}

.tpill{display:inline-flex;padding:0 4px;border-radius:2px;font-size:10px;font-weight:600;flex-shrink:0;line-height:1.6}
.tpill-guest{background:#fff3cc;color:#7a5500}
.tpill-partner{background:#dceeff;color:#1a3d6e}

.t-attended{background:#e8f5ee}
.t-attended .trname{color:#1a6e3c}
.t-attended .trdot{background:#1a6e3c}
.t-attended .trdiet{color:#c0392b;font-weight:600}

.t-recent{background:#c8ecd8}
.t-recent .trname{color:#0d5c32;font-weight:600}
.t-recent .trdot{background:#0d5c32}
.t-recent .trdiet{color:#c0392b;font-weight:600}

.t-pending .trname{color:#aaa}
.t-pending .trdot{background:#ddd}
.t-pending .trdiet{color:transparent}

@keyframes tflash{0%{background:#a8e6c0}100%{background:#e8f5ee}}
.tr.tflash{animation:tflash 1s ease-out}
