@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=Source+Serif+4:opsz,wght@8..60,600;8..60,700&display=swap";:root{--bg:#eef1f4;--bg-accent:#dfe6ee;--surface:#f7f9fb;--ink:#1a2332;--muted:#5a6a7d;--line:#c5d0dc;--accent:#0f6b5c;--accent-hover:#0c574b;--danger:#9b2c2c;--warn:#8a6d1d;--ok:#1f6b3a;--radius:6px;--font:"IBM Plex Sans", system-ui, sans-serif;--display:"Source Serif 4", Georgia, serif;color:var(--ink);background:radial-gradient(ellipse 80% 50% at 10% -10%, #d4e4df 0%, transparent 55%), radial-gradient(ellipse 60% 40% at 100% 0%, #d5dde8 0%, transparent 50%), var(--bg);font-family:var(--font);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,textarea,select{font:inherit}button{cursor:pointer}.app-shell{max-width:1240px;margin:0 auto;padding:1.5rem 1.25rem 3rem}.app-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1.75rem;padding-bottom:1rem;display:flex}.brand{font-family:var(--display);letter-spacing:-.02em;color:var(--ink);margin:0;font-size:1.65rem;font-weight:700}.brand span{color:var(--accent)}.nav-link{color:var(--muted);font-size:.95rem;font-weight:500}.page-title{font-family:var(--display);letter-spacing:-.02em;margin:0 0 .35rem;font-size:1.75rem}.page-sub{color:var(--muted);margin:0 0 1.5rem;line-height:1.45}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:1.25rem;padding:1.25rem}.panel h2{margin:0 0 1rem;font-size:1.05rem;font-weight:600}.stack{flex-direction:column;gap:.85rem;display:flex}.row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}label.field{color:var(--muted);flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:500;display:flex}label.field>:is(input,textarea,select){color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:.55rem .7rem;font-weight:400}label.field textarea{resize:vertical;min-height:120px;line-height:1.45}.btn{border-radius:var(--radius);background:var(--accent);color:#fff;border:1px solid #0000;justify-content:center;align-items:center;gap:.4rem;padding:.55rem 1rem;font-weight:500;transition:background .15s;display:inline-flex}.btn:hover:not(:disabled){background:var(--accent-hover)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{color:var(--ink);border-color:var(--line);background:#fff}.btn-secondary:hover:not(:disabled){background:var(--bg-accent)}.btn-ghost{color:var(--muted);background:0 0;border-color:#0000;padding-inline:.5rem}.btn-ghost:hover:not(:disabled){color:var(--ink);background:0 0}.btn-danger{color:var(--danger);border-color:var(--line);background:0 0}.table-wrap{overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:.92rem}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.65rem .5rem}table.data th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:500}.badge{background:var(--bg-accent);color:var(--muted);border-radius:3px;padding:.15rem .45rem;font-size:.75rem;font-weight:500;display:inline-block}.badge.ready,.badge.edited{color:var(--ok);background:#e2f0e7}.badge.generating,.badge.pending{color:var(--warn);background:#f5efd8}.badge.error{color:var(--danger);background:#f5e0e0}.progress-bar{background:var(--bg-accent);border-radius:99px;height:8px;display:flex;overflow:hidden}.progress-bar>span{background:var(--accent);height:100%;transition:width .35s;display:block}.progress-bar-lg{height:12px;margin:.85rem 0 1rem}.progress-bar .seg-ok{background:var(--ok)}.progress-bar .seg-err{background:var(--danger)}.progress-bar .seg-run{background:#c4a035;animation:1.2s ease-in-out infinite pulse-seg}@keyframes pulse-seg{0%,to{opacity:1}50%{opacity:.55}}.progress-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:0;padding:1.25rem}.progress-panel--side{flex-direction:column;gap:.85rem;display:flex}.progress-panel.is-live{border-color:#9bb8a8;box-shadow:0 0 0 1px #0f6b5c1f}.campaign-workspace{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:1.25rem;display:grid}.campaign-workspace__side{max-height:calc(100vh - 1.5rem);position:sticky;top:.75rem;overflow:auto}.campaign-workspace__main{min-width:0}.campaign-tabs{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;gap:.35rem;margin-bottom:.85rem;padding:.25rem;display:flex}.campaign-tabs__btn{appearance:none;color:var(--muted);font:inherit;border-radius:calc(var(--radius) - 2px);background:0 0;border:none;align-items:center;gap:.4rem;padding:.55rem .85rem;font-size:.9rem;font-weight:500;display:inline-flex}.campaign-tabs__btn:hover{color:var(--ink);background:var(--bg-accent)}.campaign-tabs__btn.is-active{color:var(--accent);background:#e8f3ef}.campaign-tabs__hint{color:var(--muted);background:var(--bg-accent);text-align:center;border-radius:999px;min-width:1.25rem;padding:.1rem .45rem;font-size:.75rem;font-weight:600}.campaign-tabs__btn.is-active .campaign-tabs__hint{color:var(--accent);background:#fff}.campaign-tab-link{margin:.5rem 0 .75rem;font-size:.85rem}.campaign-tab-link code{word-break:break-all;font-size:.82rem}.campaign-quick-links{flex-wrap:wrap;gap:.45rem .75rem;font-size:.85rem;display:flex}.campaign-quick-links a{color:var(--accent);text-decoration:none}.campaign-quick-links a:hover{text-decoration:underline}.dash-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.dash-banner{border-radius:var(--radius);border:1px solid var(--line);background:#f7f8fa;margin-bottom:1rem;padding:.85rem 1rem}.dash-banner strong{margin-bottom:.25rem;display:block}.dash-banner p{color:var(--muted);margin:0;font-size:.92rem;line-height:1.4}.dash-banner--ok{background:#eef7f1;border-color:#b7dcc4}.dash-banner--warn{background:#fff8e8;border-color:#f0d79a}.dash-banner--danger{background:#fdeeee;border-color:#f0b4b4}.dash-banner--muted{background:#f5f6f8}.dash-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-bottom:1.1rem;display:grid}.dash-kpi{border:1px solid var(--line);border-radius:var(--radius);background:#fff;flex-direction:column;gap:.15rem;min-height:5.2rem;padding:.75rem .65rem;display:flex}.dash-kpi strong{font-size:1.35rem;font-weight:650;line-height:1.1}.dash-kpi span{font-size:.86rem;font-weight:600}.dash-kpi small{color:var(--muted);font-size:.72rem;line-height:1.25}.dash-kpi.is-ok strong{color:var(--ok)}.dash-kpi.is-danger strong{color:var(--danger)}.dash-hints{border:1px solid var(--line);border-radius:var(--radius);background:#fafbfc;margin-bottom:1rem;padding:.85rem 1rem}.dash-hints h3{margin:0 0 .55rem;font-size:.98rem}.dash-hints ul{gap:.55rem;margin:0;padding:0;list-style:none;display:grid}.dash-hints li{color:var(--muted);grid-template-columns:7.5rem 1fr;align-items:start;gap:.65rem;font-size:.88rem;line-height:1.35;display:grid}.dash-filters{flex-wrap:wrap;gap:.35rem;margin:.75rem 0 .85rem;display:flex}.dash-filter.is-active{color:var(--accent);border-color:var(--accent);background:#eef5f2}.dash-send-row{cursor:pointer}.dash-send-row:hover{background:#f3f8f6}.dash-send-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dash-send-subject{white-space:nowrap;text-overflow:ellipsis;max-width:22rem;margin-top:.15rem;font-size:.78rem;overflow:hidden}.dash-modal-backdrop{z-index:80;background:#12161c73;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.dash-modal{border-radius:calc(var(--radius) + 2px);border:1px solid var(--line);background:#fff;flex-direction:column;width:min(920px,100%);max-height:min(90vh,900px);display:flex;overflow:hidden;box-shadow:0 18px 50px #0000002e}.dash-modal__head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:1rem;padding:.9rem 1rem;display:flex}.dash-modal__body{background:#f4f5f7;flex:1;min-height:320px;padding:0;overflow:hidden}.dash-mail-frame{background:#fff;border:0;width:100%;height:min(70vh,720px);display:block}.dash-mail-plain{white-space:pre-wrap;max-height:min(70vh,720px);margin:0;padding:1rem;font-family:Arial,Helvetica,sans-serif;font-size:.92rem;line-height:1.45;overflow:auto}@media (width<=960px){.dash-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-hints li{grid-template-columns:1fr;gap:.25rem}}.campaign-tab-panel{margin-bottom:0}.campaign-tab-panel h2{margin-top:0}.segment-card{border-top:1px solid var(--border);margin-top:.75rem;padding-top:.5rem}.segment-card__head{cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border:0;justify-content:space-between;gap:1rem;padding:.4rem 0;display:flex}.segment-card__body{margin-top:.5rem}.zone-preview{white-space:pre-wrap;background:var(--bg-accent);border-radius:6px;padding:.65rem .75rem;font-size:.9rem;line-height:1.45}.zone-mark{color:#1a4d3c;background:#d8ebe3;border-radius:3px;padding:0 .15rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}.progress-panel-head{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.progress-head-actions{flex-direction:column;align-items:flex-end;gap:.5rem;display:flex}.progress-pct{font-family:var(--display);color:var(--accent);text-align:right;min-width:3.5rem;font-size:1.75rem;font-weight:700;line-height:1}.progress-stages{counter-reset:stage;grid-template-columns:repeat(3,1fr);gap:.5rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.progress-stages li{counter-increment:stage;color:var(--muted);border-radius:var(--radius);background:var(--bg-accent);text-align:center;padding:.45rem .55rem;font-size:.82rem;font-weight:500}.progress-stages li:before{content:counter(stage) ". "}.progress-stages li.active{color:var(--accent);background:#e8f3ef}.progress-stages li.done{color:var(--ok);background:#e2f0e7}.progress-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-bottom:0;display:grid}.progress-panel--side .progress-stages{grid-template-columns:1fr}.progress-panel--side .progress-table-wrap{flex:1;max-height:min(42vh,360px)}.progress-stats .stat{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;color:var(--ink);background:#fff;flex-direction:column;align-items:center;gap:.15rem;padding:.55rem .4rem;display:flex}.progress-stats .stat strong{font-size:1.15rem;font-weight:600;line-height:1.1}.progress-stats .stat span{color:var(--muted);text-align:center;font-size:.72rem;line-height:1.2}.progress-stats .stat.active{border-color:var(--accent);background:#f0f7f5}.progress-stats .stat.ok strong{color:var(--ok)}.progress-stats .stat.warn strong{color:var(--warn)}.progress-stats .stat.danger strong{color:var(--danger)}.progress-meta{margin:0 0 .85rem}.progress-meta strong{color:var(--ink);font-weight:600}.segment-progress{border-top:1px solid var(--line);margin:0 0 .85rem;padding-top:.75rem}.segment-progress__head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.segment-progress__head h3{margin:0;font-size:.95rem;font-weight:650}.segment-progress__list{flex-direction:column;gap:.45rem;max-height:220px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.segment-progress__row{text-align:left;background:var(--bg-accent,#f4f7f5);cursor:pointer;width:100%;font:inherit;color:inherit;border:1px solid #0000;border-radius:8px;padding:.45rem .55rem}.segment-progress__row:hover{border-color:var(--line)}.segment-progress__row.is-active{border-color:var(--accent);background:#e8f3ef}.segment-progress__meta{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.3rem;font-size:.85rem;display:flex}.segment-progress__label{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.segment-progress__bar{height:6px}.progress-table-wrap{border:1px solid var(--line);border-radius:var(--radius);max-height:280px;overflow:auto}.progress-table{margin:0}.progress-table th{z-index:1;background:#f3f6f9;position:sticky;top:0}.progress-table .row-status-generating{background:#fff8e8}.progress-table .row-status-error{background:#fbf0f0}.progress-table .row-status-ready,.progress-table .row-status-edited{background:#f4faf6}.text-danger{color:var(--danger);font-size:.85rem}.row-selected td{background:#f0f7f5}@media (width<=960px){.campaign-workspace{grid-template-columns:1fr}.campaign-workspace__side{max-height:none;position:static}.progress-panel--side .progress-stages{grid-template-columns:repeat(3,1fr)}.progress-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=720px){.progress-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.progress-stages,.progress-panel--side .progress-stages{grid-template-columns:1fr}.campaign-tabs{flex-wrap:nowrap;overflow-x:auto}.campaign-tabs__btn{white-space:nowrap}}.draft-card{border-top:1px solid var(--line);padding:1.1rem 0}.draft-card:first-child{border-top:none;padding-top:0}.draft-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:.75rem;font-size:.9rem;display:flex}.draft-meta strong{color:var(--ink);font-weight:600}.error-box{color:var(--danger);border-radius:var(--radius);background:#f8ecec;border:1px solid #e4c4c4;margin-bottom:1rem;padding:.75rem 1rem;font-size:.92rem}.empty{color:var(--muted);padding:1.5rem 0}.campaign-link{color:var(--ink);font-weight:500}.campaign-link:hover{color:var(--accent)}.checkbox-row{color:var(--ink);align-items:center;gap:.5rem;font-size:.95rem;display:flex}.provider-list{margin:0;padding:0;list-style:none}.provider-list li{border-top:1px solid var(--line);padding:.75rem 0}.provider-list li:first-child{border-top:none;padding-top:0}.muted{color:var(--muted);font-size:.9rem;line-height:1.4}@media (width<=640px){.app-header{flex-direction:column;align-items:flex-start}.brand{font-size:1.4rem}}
