:root{color:#e8e6f2;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#0f0e14;font-family:DM Sans,system-ui,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{min-height:100vh;margin:0}#root{min-height:100vh}a{color:#a5b4fc}button,input,select{font:inherit}button{cursor:pointer}.app-shell{max-width:1100px;margin:0 auto;padding:1.5rem 1.25rem 3rem}.card{background:#181622;border:1px solid #2a2638;border-radius:12px;margin-bottom:1.25rem;padding:1.25rem 1.5rem}.card h2{color:#f4f2ff;margin:0 0 .75rem;font-size:1.05rem;font-weight:600}.muted{color:#9d97b0;font-size:.875rem}.row{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}label.field{color:#b8b2cc;flex-direction:column;gap:.25rem;font-size:.8rem;display:flex}label.field input,label.field select{color:#f0ecff;background:#12111a;border:1px solid #3d3752;border-radius:8px;min-width:8rem;padding:.45rem .6rem}.btn{color:#fff;background:linear-gradient(135deg,#6366f1,#7c3aed);border:none;border-radius:8px;padding:.5rem 1rem;font-weight:600}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-secondary{color:#e8e6f2;background:#2a2638;border:1px solid #3d3752}table.data{border-collapse:collapse;width:100%;font-size:.85rem}table.data th,table.data td{text-align:left;border-bottom:1px solid #2a2638;padding:.5rem .6rem}table.data th{color:#9d97b0;font-weight:500}.pill{color:#c4bdd9;background:#2a2638;border-radius:999px;padding:.15rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.pill.ok{color:#86efac;background:#14532d}.pill.warn{color:#fde68a;background:#713f12}.pill.err{color:#fecaca;background:#7f1d1d}.login-viewport{box-sizing:border-box;justify-content:center;align-items:center;min-height:100vh;padding:1.5rem 1.25rem;display:flex}.login-card{width:100%;max-width:360px;margin-bottom:0}.login-card h1{margin:0 0 .5rem;font-size:1.5rem}.transcript{background:#12111a;border:1px solid #2a2638;border-radius:8px;max-height:280px;padding:.75rem;font-size:.82rem;overflow:auto}.transcript .line{margin-bottom:.5rem}.transcript .role{color:#818cf8;margin-right:.35rem;font-weight:600}.campaignFold{margin-bottom:1.25rem}.campaignFold>summary{cursor:pointer;color:#f4f2ff;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;padding:.15rem 0;font-weight:600;list-style:none;display:flex}.campaignFold>summary::-webkit-details-marker{display:none}.campaignFold>summary::marker{display:none}.campaignFold .campaignFoldBody{border-top:1px solid #2a2638;margin-top:.85rem;padding-top:.85rem}.campaignFoldMuted{color:#9d97b0;font-size:.88rem;font-weight:400}.campaignFold summary .btn{margin-left:auto}.campaignStatsCard .campaignStatsGrid{grid-template-columns:repeat(auto-fit,minmax(10.5rem,1fr));gap:.85rem;display:grid}.campaignStatTile{background:#ffffff0a;border:1px solid #2a2638;border-radius:10px;padding:.85rem 1rem}.campaignStatValue{color:#f4f2ff;font-size:1.45rem;font-weight:700;line-height:1.2}.campaignStatLabel{color:#c4bdd9;margin-top:.35rem;font-size:.82rem;font-weight:600}.campaignStatHint{color:#7a7394;margin-top:.2rem;font-size:.72rem;line-height:1.35}.rosterTableWrap{overflow-x:auto}table.rosterTable{width:max-content;min-width:100%}table.rosterTable tbody tr{white-space:nowrap}table.rosterTable th,table.rosterTable td{vertical-align:middle}table.rosterTable .rosterColCheck{width:2.2rem}.rosterCell--muted{color:#9d97b0;font-size:.78rem}.rosterCell--mono{font-variant-numeric:tabular-nums}.rosterCell--num{font-variant-numeric:tabular-nums;text-align:right}.rosterCell--date{font-size:.76rem}.rosterCell--clip{text-overflow:ellipsis;white-space:nowrap;max-width:14rem;overflow:hidden}.rosterActions{flex-wrap:nowrap;align-items:center;gap:.25rem;display:inline-flex}.btnCompact{white-space:nowrap;padding:.18rem .42rem;font-size:.68rem;line-height:1.2}.rosterDialogBackdrop{z-index:1000;background:#08060eb8;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.rosterDialog{background:#1a1724;border:1px solid #3d3752;border-radius:12px;width:min(32rem,100%);max-height:min(70vh,28rem);padding:1.1rem 1.25rem;overflow:auto;box-shadow:0 16px 48px #00000073}.rosterDialogWide{width:min(36rem,100%);max-height:min(80vh,32rem)}.rosterDetailGrid{grid-template-columns:8.5rem 1fr;gap:.45rem .85rem;margin:0;font-size:.88rem;display:grid}.rosterDetailGrid dt{color:#9d97b0;margin:0;font-weight:500}.rosterDetailGrid dd{color:#e8e4f5;word-break:break-word;margin:0}.rosterDialogBody{white-space:pre-wrap;word-break:break-word;color:#e8e4f5;margin:0;font-size:.92rem;line-height:1.55}
