@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--ink: #0f172a;--muted: #64748b;--line: #dbe4ef;--bg: #f6f8fb;--surface: #ffffff;--surface-2: #f0f4fa;--brand: #0f5db9;--brand-2: #1282a2;--danger: #b91c1c;--ok: #137f56;--shadow: 0 30px 70px rgba(15, 23, 42, .14);--radius: 18px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Space Grotesk,Segoe UI,sans-serif;color:var(--ink);background:radial-gradient(1200px 520px at 84% -5%,rgba(18,130,162,.26),transparent 68%),radial-gradient(900px 460px at -5% 8%,rgba(15,93,185,.2),transparent 72%),linear-gradient(180deg,#f7fbff,#eef4fb 42%,#f6f8fb)}h1,h2,h3,h4,h5,p{margin:0}.kicker,.mono,.pill,.status,th{font-family:IBM Plex Mono,monospace}button,input,textarea,select{font:inherit}input,textarea,select{width:100%;border:1px solid var(--line);border-radius:12px;padding:11px 12px;background:var(--surface);color:var(--ink);transition:border-color .18s ease,box-shadow .18s ease}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px #0f5db91f}textarea{resize:vertical;min-height:120px}label{display:grid;gap:8px}label span{font-size:13px;color:var(--muted)}label .field-hint{font-size:12px;color:#92400e}.label-with-help{display:inline-flex;align-items:center;gap:6px}.help-tooltip-trigger{position:relative;display:inline-grid;place-items:center;width:16px;height:16px;border-radius:999px;background:#dbeafe;color:#1e3a8a;font-family:IBM Plex Mono,monospace;font-size:11px;line-height:1;cursor:help}.help-tooltip{position:absolute;top:22px;left:0;z-index:50;width:min(420px,78vw);padding:10px;border:1px solid #d7e2f0;border-radius:10px;background:#fff;box-shadow:0 16px 35px #0f172a29;color:#1e293b;display:none;white-space:normal}.help-tooltip strong{display:block;font-size:12px;margin-bottom:6px}.help-tooltip span{display:block;font-size:12px;color:#334155}.help-tooltip-trigger:hover .help-tooltip,.help-tooltip-trigger:focus .help-tooltip,.help-tooltip-trigger:focus-visible .help-tooltip{display:block}.auth-page{min-height:100vh;padding:28px;display:grid;place-items:center;position:relative;overflow:hidden;background:radial-gradient(960px 520px at 8% -8%,rgba(255,31,45,.42),transparent 65%),radial-gradient(840px 460px at 92% 106%,rgba(255,31,45,.3),transparent 66%),linear-gradient(170deg,#090909,#13090c 46%,#050505)}.aurora{position:absolute;border-radius:999px;filter:blur(40px);opacity:.65;animation:float 8s ease-in-out infinite}.aurora-one{width:460px;height:460px;top:-150px;left:-90px;background:linear-gradient(130deg,#ff37488c,#90091533)}.aurora-two{width:420px;height:420px;bottom:-120px;right:-70px;background:linear-gradient(130deg,#ff1e2d66,#46050b33);animation-delay:1.2s}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}.auth-card{width:min(560px,96vw);position:relative;z-index:2;background:linear-gradient(165deg,#141414f2,#090909ed);border:1px solid rgba(255,56,69,.42);border-radius:24px;padding:28px;box-shadow:0 32px 70px #0000008c,inset 0 1px #ffffff0d;display:grid;gap:20px;color:#f8fafc}.auth-card h1{font-size:clamp(1.7rem,3vw,2.4rem);line-height:1.08;color:#fff;letter-spacing:.02em}.auth-brand{display:flex;align-items:center;gap:14px}.auth-logo{width:74px;height:74px;border-radius:18px;border:1px solid rgba(255,55,70,.55);background:#050505;box-shadow:0 10px 25px #ff1f2d33}.auth-card .kicker{color:#ff8089;font-size:12px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:5px}.auth-card label span{color:#e2aab0}.auth-card input{background:#101012;border-color:#4b171c;color:#fff}.auth-card input:focus{border-color:#ff3a46;box-shadow:0 0 0 4px #ff3a4633}.auth-card .btn-primary{background:linear-gradient(135deg,#ff1f2d,#b00b16)}.subtitle{color:var(--muted)}.stack{display:grid;gap:14px}.stack-lg{display:grid;gap:18px}.stack-xs{display:grid;gap:8px}.btn{border:0;border-radius:12px;padding:10px 14px;cursor:pointer;transition:transform .16s ease,opacity .16s ease,background-color .16s ease}.btn:disabled{opacity:.6;cursor:not-allowed}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff}.btn-ghost{background:#e9f0fa;color:#0a3d72}.btn-danger{background:#fee2e2;color:var(--danger)}.btn-sm{padding:6px 10px;font-size:12px}.notice{padding:12px 14px;border-radius:12px;border:1px solid transparent;font-size:14px}.notice-success{background:#def8eb;border-color:#86e3b7;color:#0f5b3d}.notice-error{background:#fee2e2;border-color:#fca5a5;color:#7f1d1d}.notice-info{background:#e0f2fe;border-color:#93c5fd;color:#1e3a8a}.notice-warning{background:#fef3c7;border-color:#fcd34d;color:#78350f}.toast-stack{position:fixed;right:16px;bottom:16px;z-index:60;display:grid;gap:8px;width:min(420px,calc(100vw - 32px));pointer-events:none}.toast{display:flex;align-items:flex-start;gap:10px;box-shadow:0 16px 40px #0f172a2e;pointer-events:auto}.toast-text{flex:1;min-width:0;overflow-wrap:anywhere}.toast-close{border:0;background:transparent;color:inherit;font-size:18px;line-height:1;padding:0 2px;cursor:pointer;opacity:.7}.toast-close:hover{opacity:1}.connection-chip{align-self:center;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:#fef3c7;color:#92400e;font-size:12px}.connection-chip:before{content:"";width:8px;height:8px;border-radius:999px;background:#f59e0b}.app-page{min-height:100vh;display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;padding:16px}.sidebar{background:#ffffffe0;border:1px solid rgba(15,23,42,.08);border-radius:var(--radius);padding:18px;display:grid;align-content:start;gap:18px;box-shadow:0 16px 45px #0f172a14}.brand-block{display:grid;gap:8px}.brand-block .kicker{color:var(--brand);font-size:12px;letter-spacing:.08em;text-transform:uppercase}.brand-block h2{font-size:1.35rem}.brand-block p{color:var(--muted);font-size:14px}.tab-list{display:grid;gap:8px}.tab{text-align:left;border:1px solid transparent;border-radius:12px;background:#f1f5fb;color:#243044;padding:10px 12px;cursor:pointer;font-weight:500}.tab.active{border-color:#0f5db947;background:#e0ecff;color:#0f4c90}.workspace{display:grid;align-content:start;gap:14px;min-width:0}.topbar{background:#ffffffe6;border:1px solid rgba(15,23,42,.08);border-radius:var(--radius);padding:16px 18px;display:flex;justify-content:space-between;gap:12px;align-items:center}.topbar h1{font-size:clamp(1.2rem,2.5vw,1.8rem)}.topbar p{color:var(--muted);font-size:14px;margin-top:4px}.topbar-actions{display:flex;gap:10px;flex-wrap:wrap}.sending-off-banner{margin:0;padding:10px 16px;border:1px solid #fca5a5;border-radius:12px;background:#fee2e2;color:var(--danger);font-weight:600}.panel{background:#ffffffeb;border:1px solid rgba(15,23,42,.08);border-radius:var(--radius);padding:18px}.headline-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-end}.headline-row p{color:var(--muted);font-size:14px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stat-card{background:linear-gradient(160deg,#f8fbff,#f0f5fd);border:1px solid #d8e3f1;border-radius:14px;padding:14px;display:grid;gap:6px}.stat-label{color:var(--muted);font-size:13px}.stat-value{font-size:clamp(1.4rem,2.4vw,2rem);font-weight:700}.stat-meta{color:#41536b;font-size:13px}.split-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mini-panel{background:var(--surface-2);border:1px solid #d7e2f0;border-radius:14px;padding:14px;display:grid;align-content:start;gap:12px}.mono{color:#365072;font-size:13px}.item-list{margin:0;padding:0;list-style:none;display:grid;gap:8px}.item-list li{display:flex;justify-content:space-between;gap:10px;align-items:center}.pill{background:#e0ecff;color:#124a91;border-radius:999px;padding:2px 8px;font-size:12px}.inline-form{display:flex;gap:10px;align-items:center}.inline-form input{flex:1}.table-wrap{overflow:auto;border:1px solid #dae4f0;border-radius:12px;background:#fff}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #edf2f8;vertical-align:top;font-size:14px}th{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:#365072;background:#f8fbff;position:sticky;top:0}tbody tr:hover{background:#f7fbff}.table-actions{white-space:nowrap}.table-inline-actions{display:flex;gap:8px;flex-wrap:wrap}.segment-live-badge{display:inline-block;border-radius:999px;padding:3px 8px;font-family:IBM Plex Mono,monospace;font-size:11px;border:1px solid #d7e2f0;background:#f8fbff;color:#334155;white-space:nowrap}.segment-live-ready{background:#dcfce7;border-color:#86efac;color:#166534}.segment-live-pending{background:#fef3c7;border-color:#fcd34d;color:#92400e}.segment-live-running{background:#dbeafe;border-color:#93c5fd;color:#1e3a8a}.segment-live-stale{background:#e2e8f0;border-color:#cbd5e1;color:#334155}.segment-live-failed{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.segment-live-unknown{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.segment-live-error{margin-top:6px;max-width:260px;font-size:12px;color:#7f1d1d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.segment-table-meta{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}.recount-progress{margin-top:8px;display:grid;gap:6px;min-width:220px}.recount-progress-track{height:8px;border-radius:999px;background:#fee2e2;border:1px solid #fecaca;overflow:hidden}.recount-progress-fill{height:100%;background:linear-gradient(90deg,#ef4444,#b91c1c);transition:width .24s ease}.recount-progress-meta{display:flex;justify-content:space-between;gap:8px;font-family:IBM Plex Mono,monospace;font-size:11px;color:#7f1d1d}.user-seasons-row td{background:#f8fbff}.user-seasons-grid{display:grid;gap:8px}.season-card{border:1px solid #d8e4f1;border-radius:10px;background:#fff;padding:10px;display:grid;gap:4px}.season-card strong{font-size:13px}.season-card span{font-size:13px;color:#365072}.edit-row td{background:#f4f8ff}.game-edit-form{display:grid;gap:12px}.edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.edit-actions{display:flex;justify-content:flex-end;gap:8px}.ingest-key-cell{display:grid;gap:6px;min-width:170px}.ingest-key-reveal{display:grid;gap:8px}.ingest-key-reveal-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.ingest-key-reveal-row input{flex:1 1 320px;min-width:0}.ingest-key-reveal .field-hint{font-size:12px;color:#92400e}.pager{display:flex;align-items:center;gap:12px;justify-content:flex-end}.toggle-grid{display:grid;gap:10px}.toggle{display:flex;align-items:center;gap:10px;font-size:14px}.toggle input{width:auto}.json-preview{border:1px solid #d7e2f0;border-radius:12px;background:#f8fbff;padding:10px}.json-preview p{margin-bottom:8px;color:#365072;font-size:13px}.json-preview pre{margin:0;font-family:IBM Plex Mono,monospace;font-size:12px;white-space:pre-wrap;word-break:break-word}.campaign-editor-toolbar{display:flex;flex-wrap:wrap;gap:8px}.campaign-editor-toolbar .btn{min-width:42px;padding-inline:12px}.campaign-editor-variables{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.campaign-message-meta{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:#64748b}.emoji-pack-section{display:grid;gap:8px;border:1px solid #d8e4f1;border-radius:12px;background:#f8fbff;padding:10px}.emoji-pack-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.emoji-pack-head strong{font-size:13px;color:#1f2937}.emoji-pack-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:6px;max-height:182px;overflow:auto;padding-right:2px}.emoji-pack-item{border:1px solid #d7e2f0;border-radius:10px;background:#fff;min-height:36px;display:grid;place-items:center;padding:4px;cursor:pointer}.emoji-pack-item:hover{border-color:#93c5fd;background:#eff6ff}.emoji-pack-item span{font-size:20px;line-height:1}.campaign-help{margin:0;font-size:12px;color:#475569}.campaign-help-error{color:#b91c1c}.campaign-help a{color:#0f4c90}.campaign-upload-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.campaign-button-box{border:1px solid #d8e4f1;border-radius:12px;background:#f8fbff;padding:10px}.campaign-button-style-group{margin:0;border:1px solid #d8e4f1;border-radius:10px;background:#fff;padding:8px 10px 10px}.campaign-button-style-group legend{padding:0 6px;font-size:12px;color:#334155}.campaign-button-style-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.campaign-button-style-option{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#1f2937;cursor:pointer}.campaign-button-style-option input{margin:0}.campaign-list{display:grid;gap:12px}.campaign-card{background:#fff;border:1px solid #d8e4f1;border-radius:12px;padding:12px;display:grid;gap:10px;min-width:0}.campaign-head{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}.campaign-head h5{font-size:15px;margin:0;min-width:0;overflow-wrap:anywhere}.status{font-size:11px;padding:3px 8px;border-radius:999px;letter-spacing:.02em;white-space:nowrap}.status-draft{background:#dbeafe;color:#1e3a8a}.status-sending{background:#dcfce7;color:#166534}.status-paused{background:#fef3c7;color:#92400e}.status-pausing{background:#fde68a;color:#92400e}.status-scheduled{background:#ede9fe;color:#5b21b6}.status-completed{background:#e2e8f0;color:#334155}.status-failed{background:#dc2626;color:#fff;font-weight:700}.status-counts{display:flex;flex-wrap:wrap;gap:6px}.campaign-card-failed{border-color:#fca5a5;box-shadow:inset 4px 0 #dc2626}.campaign-failure-help{display:grid;gap:4px;padding:8px 10px;border-radius:10px;background:#f8fafc;border:1px solid #e2e8f0}.campaign-card .campaign-failure-help p{margin:0;font-size:12px;color:#475569}.process-badge{display:inline-block;font-family:IBM Plex Mono,monospace;font-size:12px;border-radius:999px;padding:3px 9px}.process-running{background:#dcfce7;color:#166534}.process-stopped{background:#fee2e2;color:#991b1b}.process-degraded{background:#fef3c7;color:#92400e}.process-unknown{background:#e2e8f0;color:#334155}.process-link{color:#0f4c90;text-decoration:none}.process-link:hover{text-decoration:underline}.campaign-card p{color:#334155;font-size:14px}.campaign-metrics{display:flex;flex-wrap:wrap;gap:8px}.campaign-metrics span{font-family:IBM Plex Mono,monospace;background:#f1f5fb;border-radius:999px;padding:3px 8px;font-size:12px}.campaign-progress{display:grid;gap:6px}.campaign-progress-track{height:8px;border-radius:999px;background:#dcfce7;border:1px solid #86efac;overflow:hidden}.campaign-progress-fill{height:100%;background:linear-gradient(90deg,#22c55e,#15803d);transition:width .24s ease}.campaign-progress-meta{display:flex;justify-content:space-between;gap:8px;font-family:IBM Plex Mono,monospace;font-size:11px;color:#14532d}.campaign-progress-status-ready{color:#166534;font-weight:700}.campaign-progress-note{margin:0;font-size:12px;color:#475569}.campaign-progress-alert{color:var(--danger);font-weight:600}.campaign-lock-badge{display:inline-block;font-family:IBM Plex Mono,monospace;font-size:11px;border-radius:999px;padding:3px 9px;background:#fee2e2;color:#991b1b;width:fit-content}.campaign-actions{display:flex;justify-content:flex-start;gap:8px;flex-wrap:wrap}.campaign-actions .btn{min-width:0;white-space:normal}.logs-limit-select{max-width:130px}.log-level{display:inline-block;border-radius:999px;padding:2px 8px;font-family:IBM Plex Mono,monospace;font-size:11px;border:1px solid #d7e2f0;background:#f8fbff;color:#334155}.log-level-info{background:#e0f2fe;color:#0c4a6e;border-color:#bae6fd}.log-level-warning{background:#fef3c7;color:#92400e;border-color:#fde68a}.log-level-error{background:#fee2e2;color:#991b1b;border-color:#fecaca}.log-message-cell{white-space:pre-wrap;word-break:break-word;font-family:IBM Plex Mono,monospace;font-size:12px}@media(max-width:1100px){.app-page{grid-template-columns:minmax(0,1fr)}.sidebar{min-width:0;padding:8px;gap:0}.brand-block{display:none}.tab-list{display:flex;gap:6px;overflow-x:auto}.tab{flex:0 0 auto;white-space:nowrap;text-align:center}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split-grid{grid-template-columns:1fr}}@media(max-width:760px){.auth-page,.app-page{padding:10px}.auth-card,.topbar,.panel{border-radius:14px;padding:14px}.sidebar{border-radius:14px}.auth-logo{width:62px;height:62px;border-radius:14px}.topbar{display:grid;gap:10px}.topbar-actions,.inline-form{display:grid;grid-template-columns:1fr}.stat-grid,.edit-grid{grid-template-columns:1fr}.edit-actions{display:grid;grid-template-columns:1fr}.emoji-pack-grid{grid-template-columns:repeat(auto-fill,minmax(34px,1fr))}.campaign-message-meta{flex-direction:column}.campaign-upload-row{grid-template-columns:1fr}.logs-limit-select{max-width:none}}.confirm-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px;background:#0f172a73}.confirm-dialog{width:min(480px,100%);max-height:calc(100vh - 32px);overflow-y:auto;display:grid;gap:14px;padding:22px;border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.confirm-facts{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0}.confirm-facts dt{color:var(--muted)}.confirm-facts dd{margin:0;font-weight:500;overflow-wrap:anywhere}.confirm-field{display:grid;gap:6px}.confirm-actions{display:flex;justify-content:flex-end;gap:10px}.campaign-schedule-box{margin:0;border:1px solid #d8e4f1;border-radius:12px;background:#f8fbff;padding:8px 10px 10px;display:grid;gap:10px}.campaign-schedule-box legend{padding:0 6px;font-size:12px;color:#334155}.campaign-schedule-box input[type=radio],.campaign-schedule-box input[type=checkbox]{width:auto}.campaign-schedule-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.campaign-schedule-weekdays{display:flex;flex-wrap:wrap;gap:12px}.campaign-card .campaign-schedule-note{margin:0;font-size:13px;font-weight:600;color:var(--brand)}.plan-days{display:grid;gap:12px}.plan-day h4{margin:0 0 8px}.plan-missed{border-color:#fca5a5;background:#fff5f5}.plan-missed h4{color:var(--danger)}.plan-items{list-style:none;margin:0;padding:0;display:grid;gap:8px}.plan-item{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:2px 10px;align-items:center}.plan-time{font-family:IBM Plex Mono,monospace;font-weight:700}.plan-name{overflow-wrap:anywhere}.plan-meta{grid-column:2;font-size:12px;color:var(--muted)}.plan-item>.btn,.plan-actions{grid-column:3;grid-row:1 / span 2}.plan-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.plan-item-wide{grid-template-columns:max-content minmax(0,1fr) auto}.plan-overdue{color:var(--danger);font-weight:600}.split-grid>.agent-keys{grid-column:1 / -1}.agent-key-form{display:flex;gap:8px;flex-wrap:wrap}.agent-key-form input{flex:1 1 260px}.agent-key-setup{width:100%;resize:vertical;font-size:12px}.agent-key-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.agent-key{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px}.agent-key.revoked{opacity:.55}.team .agent-key{flex-wrap:wrap}.team-password-form{flex-basis:100%}
