/* Campaigns module. Uses the app tokens from styles.css. */
.lang-toggle{white-space:nowrap;flex:none;border:1px solid var(--line);background:var(--paper);color:var(--green);border-radius:999px;padding:5px 11px;font-size:11px;font-weight:850;letter-spacing:.04em}
.campaign-view{padding:30px 32px 40px;overflow:auto;flex:1;min-height:0}
.cmp-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px;flex-wrap:wrap}
.cmp-head h1{font-size:30px;letter-spacing:-.05em;line-height:1.15;color:var(--dark);margin:11px 0 8px}
.cmp-head p{margin:0;font-size:13px;color:#6c8275;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cmp-actions{display:flex;gap:8px;flex-wrap:wrap}
.outline-btn.danger{color:#b44a3a;border-color:#ecc9c1}
.outline-btn:disabled,.primary:disabled{opacity:.5;cursor:not-allowed}
.cmp-card{background:var(--paper);border:1px solid #dfe6dc;border-radius:14px;padding:18px 20px;box-shadow:var(--shadow);margin-bottom:16px;min-width:0}
.cmp-card h2{font-size:14px;color:var(--dark);margin:0 0 14px;letter-spacing:-.01em}
.cmp-card h2 small{font-weight:600;color:var(--muted);font-size:11px;margin-left:6px}
.cmp-empty{padding:40px;text-align:center;color:var(--muted);font-size:13px}
.cmp-empty.sm{padding:14px}
.cmp-note,.muted{color:var(--muted);font-size:12px;line-height:1.6}
.cmp-table{width:100%;border-collapse:collapse;font-size:12px}
.cmp-table th{text-align:left;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#93a59a;font-weight:800;padding:8px 10px;border-bottom:1px solid var(--line)}
.cmp-table td{padding:11px 10px;border-bottom:1px solid #edf1ea;vertical-align:middle;color:#3f5c4f}
.cmp-table td strong{display:block;color:var(--dark);font-size:12px}
.cmp-table td small{display:block;color:#8b9c91;font-size:10px;margin-top:3px}
.cmp-table tbody tr[data-open]{cursor:pointer}
.cmp-table tbody tr:hover{background:#f6f8f3}
.cmp-chip{display:inline-flex;align-items:center;border-radius:999px;padding:3px 9px;font-size:10px;font-weight:800;background:#e2f0e0;color:var(--green);white-space:nowrap}
.cmp-chip.waiting{background:#f7ecdc;color:#a8692c}
.cmp-chip.danger{background:#f6e1dc;color:#ad4636}
.cmp-bar{height:6px;border-radius:99px;background:#e9eeeb;overflow:hidden;min-width:60px;flex:1}
.cmp-bar i{display:block;height:100%;background:var(--green);border-radius:99px}
.cmp-bar.lg{height:9px}
.cmp-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}
.cmp-tabs button{border:0;background:none;padding:10px 14px;font-size:12px;font-weight:800;color:#7a8f82;border-bottom:2px solid transparent;white-space:nowrap}
.cmp-tabs button.on{color:var(--green);border-bottom-color:var(--green)}
.cmp-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.cmp-metric{background:var(--paper);border:1px solid #dfe6dc;border-radius:13px;padding:15px 16px;box-shadow:var(--shadow)}
.cmp-metric span{font-size:11px;color:var(--muted);font-weight:700}
.cmp-metric strong{display:block;font-size:24px;color:var(--dark);letter-spacing:-.04em;margin:6px 0 4px}
.cmp-metric small{font-size:11px;color:#8b9c91}
.cmp-phases{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.phase{border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:#f7f8f3}
.phase b{display:block;font-size:12px;color:#62786c}
.phase small{font-size:10px;color:#8b9c91;overflow-wrap:anywhere}
.phase.done{background:#e8f2e5;border-color:#c7dfc3}.phase.done b{color:var(--green)}
.phase.current{background:#fff6ea;border-color:#efd3ad}.phase.current b{color:#a8692c}
.cmp-progress{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--muted)}
.cmp-progress strong{color:var(--dark)}
.cmp-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.cmp-grid3 .span2{grid-column:span 2}
.cmp-dist{display:grid;grid-template-columns:110px 1fr 30px;align-items:center;gap:10px;font-size:12px;margin-bottom:9px;color:#4f6a5b}
.cmp-dist strong{text-align:right;color:var(--dark)}
.cmp-budget{display:flex;align-items:center;gap:18px}
.cmp-budget .ring{width:86px;height:86px;border-radius:50%;display:grid;place-items:center;flex:none}
.cmp-budget .ring span{width:64px;height:64px;border-radius:50%;background:var(--paper);display:grid;place-items:center;font-weight:850;color:var(--dark)}
.cmp-budget dl,.wiz-summary dl{display:grid;grid-template-columns:auto auto;gap:6px 16px;margin:0;font-size:12px}
.cmp-budget dt,.wiz-summary dt{color:var(--muted)}
.cmp-budget dd,.wiz-summary dd{margin:0;font-weight:800;color:var(--dark);text-align:right}
.plan-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.plan-facts div{background:#f5f7f1;border-radius:10px;padding:10px 12px}
.plan-facts span{display:block;font-size:10px;color:var(--muted);font-weight:700}
.plan-facts strong{font-size:14px;color:var(--dark)}
.plan-flow{position:relative;display:grid;grid-template-columns:repeat(3,minmax(170px,1fr));gap:34px 26px;padding:10px 70px 10px 10px;overflow-x:auto}
.plan-flow svg{position:absolute;inset:0;pointer-events:none}
.flow-node{position:relative;z-index:1;background:#fbfcf8;border:1px solid #d6e3d3;border-radius:12px;padding:10px 12px;min-height:74px}
.flow-node .node-meta{font-size:9px;letter-spacing:.1em;color:#93a89a;font-weight:850;margin-bottom:4px}
.flow-node strong{display:block;font-size:12px;color:var(--dark)}
.flow-node small{display:block;font-size:10px;color:#7b9083;margin-top:3px;line-height:1.45}
.flow-node.start,.flow-node.end{background:#eef5eb}
.flow-node.decision{border-style:dashed;background:#fff9ef;border-color:#ecd3ae}
.flow-node.external{background:#f1f5f8;border-color:#d4e0e8}
.flow-channels{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.flow-channels i,.plan-step .chans i{font-style:normal;font-size:9px;font-weight:800;color:var(--green);background:#e4f0e1;border-radius:6px;padding:2px 6px}
.plan-step .chans i.pref{background:var(--green);color:#fff}
.plan-steps{display:grid;gap:10px}
.plan-step{border:1px solid var(--line);border-radius:11px;padding:12px 14px}
.plan-step header{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.plan-step .day{font-size:10px;font-weight:850;color:#a8692c;background:#f7ecdc;border-radius:6px;padding:2px 7px}
.plan-step strong{font-size:12px;color:var(--dark)}
.plan-step .chans{display:flex;gap:4px;margin-left:auto}
.plan-step p{margin:4px 0;font-size:12px;color:#4f6a5b;line-height:1.55}
.plan-step p b{color:var(--dark);margin-right:6px}
.mat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.mat{border:1px solid var(--line);border-radius:11px;padding:12px;display:flex;flex-direction:column;gap:4px}
.mat .kind{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:#a8692c;font-weight:850}
.mat strong{font-size:12px;color:var(--dark)}
.mat small{font-size:10px;color:var(--muted)}
.mat code{font-size:9px;color:#94a69b;overflow-wrap:anywhere}
.cust-tools{display:flex;gap:10px;align-items:center;margin-bottom:10px;flex-wrap:wrap}
.cust-tools input,.cust-tools select,.wiz input,.wiz select{border:1px solid var(--line);border-radius:9px;padding:8px 10px;font:inherit;font-size:12px;background:#fff;color:var(--ink)}
.cust-tools input{flex:1;min-width:180px}
.cust-tools span{font-size:11px;color:var(--muted);margin-left:auto}
.cust-pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:12px;font-size:12px;color:var(--muted)}
/* dialogs */
.campaign-dialog{border:0;border-radius:16px;padding:0;width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 40px);background:var(--paper);box-shadow:0 30px 80px rgba(15,43,35,.25);color:var(--ink)}
.campaign-dialog::backdrop{background:rgba(18,51,43,.35)}
.journey-dialog{width:min(1040px,calc(100vw - 32px))}
.wiz,.journey{padding:22px 24px}
.wiz-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.wiz-head h2{margin:8px 0 2px;font-size:22px;letter-spacing:-.04em;color:var(--dark)}
.wiz-head p{margin:0}
.dialog-close{border:0;background:none;font-size:24px;color:#7a8f82;line-height:1}
.wiz-steps{display:flex;gap:16px;font-size:11px;font-weight:800;color:#a3b2a8;margin-bottom:16px}
.wiz-steps .on{color:var(--green)}.wiz-steps .done{color:#6c8a78}
.wiz-body{display:grid;gap:12px}
.wiz-body h3{margin:0;font-size:13px;color:var(--dark)}
.wiz label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#4f6a5b}
.wiz-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tpl-grid{display:grid;gap:10px}
.tpl{border:1px solid var(--line);background:#fff;border-radius:12px;padding:14px;text-align:left;display:grid;gap:5px}
.tpl.on{border-color:var(--green);box-shadow:0 0 0 3px #dcebdc}
.tpl strong{font-size:13px;color:var(--dark)}.tpl span{font-size:12px;color:#5f7669}.tpl small{font-size:11px;color:var(--muted)}
.mode-pick{border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mode-pick legend{font-size:12px;font-weight:700;color:#4f6a5b;margin-bottom:6px}
.mode-pick label{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;cursor:pointer;display:grid;gap:4px}
.mode-pick label.on{border-color:var(--green);box-shadow:0 0 0 3px #dcebdc}
.mode-pick input{position:absolute;opacity:0;pointer-events:none}
.mode-pick strong{font-size:13px;color:var(--dark)}.mode-pick span{font-size:11px;color:var(--muted);font-weight:500;line-height:1.5}
.wiz-summary{background:#f5f7f1;border-radius:12px;padding:12px 14px}
.wiz-summary h3{margin:0 0 8px;font-size:12px}
.wiz-error{color:#ad4636;font-size:12px;margin:10px 0 0}
.wiz-foot{display:flex;align-items:center;gap:8px;margin-top:18px}
.wiz-foot span{flex:1}
.cmp-config{max-width:920px}
.cfg-materials{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.cfg-materials label{display:flex;align-items:center;gap:9px;padding:10px;border:1px solid var(--line);border-radius:9px}
.cfg-materials input{width:auto}
.sim-summary{display:flex;flex-wrap:wrap;gap:18px;margin:18px 0;font-size:13px}
.sim-customer{border-top:1px solid var(--line);padding:18px 0}
.sim-customer .ct-head{gap:16px}
.sim-reaction{border-left:2px solid var(--line);padding:5px 12px;margin:8px 0;font-size:13px}
.sim-reaction p{margin:5px 0}
.j-summary{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:14px}
.j-summary div{background:#f5f7f1;border-radius:10px;padding:9px 11px}
.j-summary span{display:block;font-size:10px;color:var(--muted);font-weight:700}
.j-summary strong{font-size:13px;color:var(--dark)}
.j-body{display:grid;grid-template-columns:260px 1fr;gap:18px;max-height:calc(100vh - 260px);overflow:auto}
.j-body h3{font-size:12px;color:var(--dark);margin:4px 0 8px}
.j-body h3 small{color:var(--muted);font-weight:600}
.kv{display:flex;justify-content:space-between;gap:10px;font-size:11px;padding:5px 0;border-bottom:1px solid #eef2eb}
.kv span{color:var(--muted)}.kv strong{color:var(--dark);text-align:right;overflow-wrap:anywhere}
.j-item{border:1px solid var(--line);border-left:3px solid #b8d4bf;border-radius:10px;padding:10px 12px;margin-bottom:9px;background:#fff}
.j-item.action{border-left-color:var(--green)}.j-item.event{border-left-color:var(--orange)}.j-item.policy{border-left-color:#c3cec6;background:#fafbf8}
.j-top{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.j-top strong{font-size:12px;color:var(--dark)}.j-top time{font-size:10px;color:var(--muted)}
.j-tags{display:flex;gap:5px;flex-wrap:wrap;margin:6px 0}
.j-tags span{font-size:10px;background:#eef4ea;color:#4f6a5b;border-radius:6px;padding:2px 7px}
.j-item p{font-size:12px;color:#4f6a5b;margin:6px 0;line-height:1.55}
.j-msg{border-radius:9px;padding:8px 10px;margin-top:6px;background:#f3f7f1}
.j-msg.in{background:#fff4e8}
.j-msg div{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.j-msg b{font-size:11px;color:var(--dark)}.j-msg small{font-size:10px;color:var(--muted)}
.j-msg p{white-space:pre-wrap;margin:5px 0 0}
@media (max-width:1100px){.cmp-metrics{grid-template-columns:repeat(2,1fr)}.cmp-grid3{grid-template-columns:1fr}.cmp-grid3 .span2{grid-column:auto}.cmp-phases,.plan-facts{grid-template-columns:repeat(2,1fr)}.j-body{grid-template-columns:1fr}}
@media (max-width:700px){.campaign-view{padding:18px 16px}.cmp-table{display:block;overflow-x:auto;white-space:nowrap}.j-summary{grid-template-columns:repeat(2,1fr)}.mode-pick,.wiz-row{grid-template-columns:1fr}}
.utility>span[data-i18n],.nav-item>span[data-i18n]{width:auto!important;text-align:left!important;white-space:nowrap}
.new-btn>span[data-i18n]{font-size:13px}
.ct-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;flex-wrap:wrap;margin-bottom:6px}.ct-head h2{margin-bottom:4px}
.ct-actions{text-align:right;white-space:nowrap}.cmp-table td input[type=checkbox]{accent-color:var(--green)}
.ct-edit td{background:#f6f8f3}.ct-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.ct-form label{display:grid;gap:4px;font-size:11px;font-weight:700;color:#4f6a5b}
.ct-form input{border:1px solid var(--line);border-radius:8px;padding:6px 8px;font:inherit;font-size:12px;background:#fff}.ct-form .chk{display:flex;align-items:center;gap:6px}
.ct-form-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.imp-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:260px;overflow:auto}.imp-map label{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:8px;font-weight:600}
.imp-map span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dark)}.imp-sum{font-size:12px;font-weight:800;color:var(--dark);margin:4px 0}
.imp-issues{font-size:11px;color:#8b5a4f;max-height:140px;overflow:auto;margin:6px 0;padding-left:18px}
.cmp-metric strong.sm{font-size:14px;letter-spacing:0;line-height:1.5}
@media (max-width:900px){.ct-form,.imp-map{grid-template-columns:1fr 1fr}}
.mat-pick{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0;display:grid;gap:6px;max-height:180px;overflow:auto}.mat-pick legend{font-size:12px;font-weight:700;color:#4f6a5b;padding:0 4px}
.mat-pick label{display:flex!important;align-items:center;gap:8px;font-weight:600}.mat-pick small{color:var(--muted);font-weight:500}
.dr-item{border:1px solid var(--line);border-radius:11px;padding:12px 14px;margin-top:10px}.dr-item header{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dr-item time{font-size:11px;color:var(--muted)}
.dr-act{margin-left:auto;display:flex;gap:6px}.dr-days{display:grid;gap:4px;margin-top:8px;font-size:12px;color:#4f6a5b}
/* plan progress: current node / step and already executed ones */
.flow-node .node-meta{display:flex;align-items:center;justify-content:space-between;gap:6px}
.now-badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;font-size:10px;font-weight:850;letter-spacing:0;background:var(--green);color:#fff;white-space:nowrap}
.now-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:#fff;animation:cmp-pulse 1.6s ease-in-out infinite}
.done-badge{display:inline-flex;border-radius:999px;padding:2px 8px;font-size:10px;font-weight:800;background:#e2f0e0;color:var(--green);white-space:nowrap}
@keyframes cmp-pulse{50%{opacity:.35}}
.flow-node.current{border:2px solid var(--green);box-shadow:0 0 0 4px rgba(42,115,84,.12)}
.flow-node.done{opacity:.72}
.plan-step.current{border-color:var(--green);box-shadow:0 0 0 3px rgba(42,115,84,.1)}
.plan-step.done{opacity:.75}
.plan-step header{flex-wrap:wrap}
/* contact detail */
.ct-detail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin:12px 0}
.ct-detail .kv{display:flex;flex-direction:column;gap:2px;border-bottom:1px solid var(--line);padding:6px 0}
.ct-detail .kv span{font-size:11px;color:#7b9083}
.ct-detail .kv strong{font-size:13px;word-break:break-word}
.ct-table tbody tr[data-ct-open]{cursor:pointer}
@media (max-width:640px){.ct-detail{grid-template-columns:1fr}}
.plan-facts{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.ct-detail .kv{align-items:flex-start;justify-content:flex-start}
.mode-pick label.off{opacity:.5;cursor:not-allowed}
