:root{--ink: #10151c;--ink-2: #38424f;--ink-3: #6b7684;--line: #dfe3e8;--line-2: #eef1f4;--bg: #f6f7f9;--surface: #ffffff;--run: #0d7a4f;--run-bg: #e8f5ee;--pause: #8a5a00;--pause-bg: #fdf3e0;--fail: #b32318;--fail-bg: #fdecea;--review: #7c3aed;--review-bg: #f3edff;--action: #1a4fd6;--action-hover: #1640ad;--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--r: 6px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.mono,.num,td.num,.time{font-family:var(--mono);font-variant-numeric:tabular-nums}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--action);outline-offset:2px}.shell{max-width:1180px;margin:0 auto;padding:20px 20px 64px}.masthead{display:flex;align-items:baseline;gap:12px;padding-bottom:14px;margin-bottom:16px;border-bottom:1px solid var(--line)}.masthead h1{margin:0;font-size:15px;font-weight:650;letter-spacing:.14em;text-transform:uppercase}.masthead .spacer{flex:1}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin-bottom:14px}.card-pad{padding:16px}.card-head{display:flex;align-items:center;gap:10px;padding:11px 16px;border-bottom:1px solid var(--line-2)}.card-head h2{margin:0;font-size:11px;font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.card-head .spacer{flex:1}.console{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1px;background:var(--line-2);border-bottom:1px solid var(--line-2)}.slot{background:var(--surface);padding:13px 16px}.slot dt{font-size:10px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin-bottom:5px}.slot dd{margin:0;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:15px;font-weight:500;color:var(--ink)}.slot dd.sm{font-size:13px}.slot dd.muted{color:var(--ink-3)}.beacon{display:inline-flex;align-items:center;gap:7px}.beacon:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}.beacon.on{color:var(--run)}.beacon.on:before{animation:pulse 2.4s ease-in-out infinite}.beacon.off{color:var(--ink-3)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.beacon.on:before{animation:none}}.controls{display:flex;gap:8px;padding:13px 16px;flex-wrap:wrap}.tallies{display:flex;gap:26px;flex-wrap:wrap}.tally{display:flex;align-items:baseline;gap:8px}.tally .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:24px;font-weight:550;line-height:1}.tally .k{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3)}.tally.pending .v{color:var(--ink)}.tally.sent .v{color:var(--run)}.tally.failed .v{color:var(--fail)}.tally.review .v{color:var(--review)}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);font-size:13px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap}.btn:hover:not(:disabled){background:var(--bg);border-color:var(--ink-3)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn-primary{background:var(--action);border-color:var(--action);color:#fff}.btn-primary:hover:not(:disabled){background:var(--action-hover);border-color:var(--action-hover)}.btn-run{background:var(--run);border-color:var(--run);color:#fff}.btn-run:hover:not(:disabled){background:#0a6741;border-color:#0a6741}.btn-sm{padding:4px 9px;font-size:12px}.btn-danger{color:var(--fail)}.btn-danger:hover:not(:disabled){background:var(--fail-bg);border-color:var(--fail)}.field{margin-bottom:13px}.field label{display:block;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:5px}.input,.textarea,.select{width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--action);box-shadow:0 0 0 3px #1a4fd61c}.textarea{min-height:130px;resize:vertical;font-family:var(--mono);font-size:13px}.input.time{font-family:var(--mono)}.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1;min-width:130px}.days{display:flex;gap:5px;flex-wrap:wrap}.day{display:inline-flex;align-items:center;justify-content:center;min-width:46px;padding:6px 9px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);cursor:pointer;font-size:12px;font-weight:550;-webkit-user-select:none;user-select:none}.day.active{background:var(--ink);border-color:var(--ink);color:#fff}.day input{position:absolute;opacity:0;pointer-events:none}.check{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}.check input{width:15px;height:15px;accent-color:var(--action);cursor:pointer}.scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;padding:8px 12px;font-size:10px;font-weight:650;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface);position:sticky;top:0}td{padding:9px 12px;border-bottom:1px solid var(--line-2);vertical-align:top}tbody tr:hover{background:#fafbfc}tbody tr:last-child td{border-bottom:none}.truncate{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}td.time{font-size:12px;color:var(--ink-2);white-space:nowrap}.tag{display:inline-block;padding:2px 7px;border-radius:3px;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.04em;white-space:nowrap}.tag.PENDING{background:var(--line-2);color:var(--ink-2)}.tag.SENDING{background:#e6efff;color:var(--action)}.tag.SENT{background:var(--run-bg);color:var(--run)}.tag.FAILED{background:var(--fail-bg);color:var(--fail)}.tag.NEEDS_REVIEW{background:var(--review-bg);color:var(--review)}.tag.OK{background:var(--run-bg);color:var(--run)}.tag.DUP{background:var(--pause-bg);color:var(--pause)}.tag.ERR{background:var(--fail-bg);color:var(--fail)}.notice{display:flex;gap:11px;align-items:flex-start;padding:12px 15px;border-radius:var(--r);border:1px solid;margin-bottom:14px;font-size:13px}.notice-title{font-weight:650;margin-bottom:2px}.notice.warn{background:var(--pause-bg);border-color:#e8c98a;color:#6b4600}.notice.err{background:var(--fail-bg);border-color:#f0b4ae;color:#8c1b13}.notice.info{background:#eef4ff;border-color:#b9cdf5;color:#16357f}.notice.review{background:var(--review-bg);border-color:#d4c2f7;color:#55219e}.testmode{display:flex;align-items:center;gap:12px;padding:11px 16px;margin-bottom:14px;background:repeating-linear-gradient(-45deg,#fdf3e0,#fdf3e0 12px,#fbecd0 12px,#fbecd0 24px);border:1px solid #e8c98a;border-radius:var(--r);color:#6b4600;font-size:13px}.testmode strong{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.1em;padding:3px 8px;background:#6b4600;color:#fdf3e0;border-radius:3px;flex:none}.dropzone{border:2px dashed var(--line);border-radius:var(--r);padding:40px 20px;text-align:center;cursor:pointer;background:var(--bg);transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.over{border-color:var(--action);background:#f2f6ff}.dropzone.over{border-style:solid}.dropzone .big{font-size:15px;font-weight:550;margin-bottom:5px}.dropzone .sub{font-size:12px;color:var(--ink-3)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#10151c6b;display:flex;align-items:flex-start;justify-content:center;padding:32px 16px;overflow-y:auto;z-index:50}.modal{background:var(--surface);border-radius:8px;width:100%;max-width:900px;box-shadow:0 16px 48px #10151c33}.modal-head{display:flex;align-items:center;gap:12px;padding:15px 18px;border-bottom:1px solid var(--line)}.modal-head h3{margin:0;font-size:15px;font-weight:620}.modal-head .spacer{flex:1}.modal-body{padding:18px}.modal-foot{display:flex;gap:9px;justify-content:flex-end;padding:13px 18px;border-top:1px solid var(--line);flex-wrap:wrap}.x{border:none;background:none;cursor:pointer;font-size:20px;line-height:1;color:var(--ink-3);padding:3px 7px;border-radius:4px}.x:hover{background:var(--line-2);color:var(--ink)}.filters{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.chip{padding:4px 11px;border:1px solid var(--line);border-radius:20px;background:var(--surface);font-size:12px;font-weight:500;cursor:pointer}.chip.active{background:var(--ink);border-color:var(--ink);color:#fff}.empty{padding:44px 20px;text-align:center;color:var(--ink-3)}.empty .big{font-size:14px;color:var(--ink-2);margin-bottom:5px}.muted{color:var(--ink-3)}.small{font-size:12px}.mt{margin-top:14px}.hint{font-size:12px;color:var(--ink-3);margin-top:5px}.stats{display:flex;gap:20px;flex-wrap:wrap;padding:11px 14px;background:var(--bg);border-radius:var(--r);margin-bottom:14px;font-size:13px}.stats b{font-family:var(--mono);font-variant-numeric:tabular-nums}.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:20px}.login{width:100%;max-width:340px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:26px}.login h1{margin:0 0 20px;font-size:14px;font-weight:650;letter-spacing:.14em;text-transform:uppercase;text-align:center}@media(max-width:640px){.shell{padding:14px 12px 40px}.tallies{gap:18px}.truncate{max-width:150px}}:root{--high: #b42318;--high-bg: #fef3f2;--normal: #475467;--low: #667085;--drawer-w: 520px}.dash{padding:16px}.dash-top{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px}.dash-campaign{font-size:17px;font-weight:640;letter-spacing:-.01em}.dash-progress{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink-3)}.meter{height:5px;background:var(--line-2);border-radius:3px;overflow:hidden;margin-bottom:14px}.meter-fill{height:100%;background:var(--run);border-radius:3px;transition:width .4s ease}.meter-fill.full{background:var(--pause)}.dash-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:14px}.stat .k{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:3px}.stat .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:19px;font-weight:550;line-height:1.1}.stat.err .v{color:var(--fail)}.stat.rev .v{color:var(--review)}.stat.ok .v{color:var(--run)}.qlist{border-top:1px solid var(--line)}.qrow{display:grid;grid-template-columns:28px minmax(0,1.4fr) minmax(0,1.6fr) 88px 78px 88px 92px;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line-2);cursor:pointer;font-size:13px}.qrow:hover{background:#fafbfc}.qrow.selected{background:#f0f5ff}.qrow.is-next{box-shadow:inset 3px 0 0 var(--action)}.qrow .co{font-weight:550}.qrow .em{font-family:var(--mono);font-size:12px;color:var(--ink-2)}.qrow .ind{font-size:12px;color:var(--ink-3)}.qrow .eta{font-family:var(--mono);font-size:11.5px;color:var(--ink-3);text-align:right;white-space:nowrap}.qrow .trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qhead{display:grid;grid-template-columns:28px minmax(0,1.4fr) minmax(0,1.6fr) 88px 78px 88px 92px;gap:10px;padding:7px 14px;border-bottom:1px solid var(--line);font-size:10px;font-weight:650;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.qhead .right{text-align:right}.prio{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;white-space:nowrap}.prio.HIGH{color:var(--high)}.prio.NORMAL{color:var(--normal)}.prio.LOW{color:var(--low)}.nextflag{display:inline-block;padding:1px 6px;border-radius:3px;background:var(--action);color:#fff;font-family:var(--mono);font-size:10px;font-weight:650;letter-spacing:.04em}.taglist{display:flex;gap:4px;flex-wrap:wrap}.tagchip{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:11px;background:var(--line-2);color:var(--ink-2);font-size:11px;font-weight:500}.tagchip button{border:none;background:none;cursor:pointer;padding:0;color:var(--ink-3);font-size:13px;line-height:1}.tagchip button:hover{color:var(--fail)}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#10151c57;z-index:60;animation:fade .15s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.drawer{position:fixed;top:0;right:0;bottom:0;width:var(--drawer-w);max-width:100vw;background:var(--surface);z-index:61;display:flex;flex-direction:column;box-shadow:-8px 0 32px #10151c24;animation:slide .2s cubic-bezier(.32,.72,0,1)}@keyframes slide{0%{transform:translate(100%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){.drawer,.drawer-scrim{animation:none}}.drawer-head{display:flex;align-items:flex-start;gap:10px;padding:16px 18px 13px;border-bottom:1px solid var(--line)}.drawer-head h3{margin:0 0 3px;font-size:16px;font-weight:640}.drawer-head .sub{font-family:var(--mono);font-size:12px;color:var(--ink-2)}.drawer-body{flex:1;overflow-y:auto;padding:16px 18px}.drawer-foot{display:flex;gap:8px;flex-wrap:wrap;padding:12px 18px;border-top:1px solid var(--line);background:var(--bg)}.dfield{margin-bottom:15px}.dfield>.lab{font-size:10px;font-weight:650;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px}.dfield .val{font-size:13.5px}.dfield .val.mono{font-family:var(--mono);font-size:12.5px}.dgrid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.bodybox{white-space:pre-wrap;font-family:var(--mono);font-size:12.5px;line-height:1.55;background:var(--bg);padding:12px;border-radius:var(--r);border:1px solid var(--line-2);max-height:300px;overflow-y:auto}.hist{border-top:1px solid var(--line-2)}.hist-item{padding:9px 0;border-bottom:1px solid var(--line-2);font-size:12.5px}.hist-item:last-child{border-bottom:none}.hist-item .meta{font-family:var(--mono);font-size:11px;color:var(--ink-3);display:flex;gap:8px;flex-wrap:wrap;margin-top:3px}.bulkbar{position:fixed;left:50%;bottom:20px;transform:translate(-50%);display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 14px;background:var(--ink);color:#fff;border-radius:8px;box-shadow:0 8px 28px #10151c47;z-index:40;font-size:13px;max-width:calc(100vw - 24px)}.bulkbar .count{font-family:var(--mono);font-weight:650;padding-right:10px;margin-right:2px;border-right:1px solid rgba(255,255,255,.2)}.bulkbar .btn{background:#ffffff1c;border-color:transparent;color:#fff;padding:5px 10px;font-size:12px}.bulkbar .btn:hover:not(:disabled){background:#fff3}.bulkbar .btn-danger{color:#ffb4ac}.bulkbar .btn-danger:hover:not(:disabled){background:#ff645a3d}.filterbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:11px 14px;border-bottom:1px solid var(--line-2)}.select-sm{padding:4px 8px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);font-size:12px}@media(max-width:760px){.drawer{width:100vw}.drawer-scrim,.qhead{display:none}.qrow{grid-template-columns:28px minmax(0,1fr) auto;grid-template-areas:"chk co prio" "chk em status";row-gap:3px;padding:11px 12px}.qrow .chk{grid-area:chk}.qrow .co{grid-area:co}.qrow .em{grid-area:em}.qrow .prio-cell{grid-area:prio;justify-self:end}.qrow .status-cell{grid-area:status;justify-self:end}.qrow .ind,.qrow .eta{display:none}.dgrid{grid-template-columns:1fr}.bulkbar{left:12px;right:12px;transform:none;bottom:12px}.dash-stats{grid-template-columns:repeat(3,1fr)}}html,body{overflow-x:hidden}.pager{display:flex;align-items:center;justify-content:center;gap:14px;padding:14px;border-top:1px solid var(--line-2)}@media(max-width:760px){.pager{gap:10px;padding:12px}}.tag.SYS{background:#eceff3;color:var(--ink-3)}
