.dv-table-wrap{overflow-x:auto;overflow-y:visible;max-width:100%;overscroll-behavior-x:contain}
.dv-table-scroll{max-height:min(62vh,620px);overflow-y:auto}

.dv-table{table-layout:auto}
.dv-table thead th{position:sticky;top:0;z-index:2;border-bottom:none;box-shadow:inset 0 -1px 0 var(--bd)}
.dv-table tbody tr:hover{background:var(--surface-2)}
.dv-table tbody tr:focus-within{background:var(--accent-50)}

.dv-table-num,.dv-num{text-align:right;font-variant-numeric:tabular-nums}
.dv-table th.dv-table-num,.dv-table th.dv-num{text-align:right}
.dv-table-money{text-align:right;font-family:var(--mono);font-size:var(--fs-sm,13px);font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}
.dv-table th.dv-table-money{text-align:right}
.dv-table-money-strong{font-weight:var(--fw-semibold,600)}
.dv-table-tight td,.dv-table-tight th{padding-left:var(--space-4,12px);padding-right:var(--space-4,12px)}

.dv-sort{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:0;margin:0;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}
.dv-sort:hover{color:var(--ink-2)}
.dv-sort-caret{width:9px;height:9px;flex:none;opacity:0}
[aria-sort="ascending"] .dv-sort-caret,[aria-sort="descending"] .dv-sort-caret{opacity:1}
[aria-sort="descending"] .dv-sort-caret{transform:rotate(180deg)}
[aria-sort] .dv-sort{color:var(--accent-700)}

.dv-cell-state{padding:0 !important;border-bottom:none !important}
.dv-cell-state .dv-state{padding:44px 22px;text-align:center}
.dv-cell-state .dv-state-body{margin-left:auto;margin-right:auto}

.dv-toolbar{display:flex;align-items:center;gap:var(--space-3,10px);flex-wrap:wrap;padding:var(--space-5,14px) var(--space-8,18px);border-bottom:1px solid var(--bd)}
.dv-toolbar-grow{flex:1 1 240px;min-width:0}

.dv-search{display:flex;align-items:center;gap:9px;height:var(--field-height);padding:0 var(--field-padding-x);border:1px solid var(--field-border);border-radius:var(--radius-field);background:var(--field-background)}
.dv-search:focus-within{border-color:var(--accent);box-shadow:var(--focus-ring)}
.dv-search svg{width:16px;height:16px;flex:none;fill:none;stroke:var(--ink-3);stroke-width:1.8;stroke-linecap:round}
.dv-search input{width:100%;min-width:0;border:0;outline:0;background:none;font:inherit;font-size:var(--field-font-size);color:var(--field-color)}
.dv-search input::placeholder{color:var(--field-placeholder)}

.dv-rail{display:flex;align-items:center;gap:7px;padding:var(--space-3,10px) var(--space-8,18px);border-bottom:1px solid var(--bd);overflow-x:auto;overscroll-behavior-x:contain}
.dv-rail .dv-chip{flex:none}

.dv-pager{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5,14px);flex-wrap:wrap;padding:var(--space-5,14px) var(--space-8,18px);border-top:1px solid var(--bd)}
.dv-pager-label{font-family:var(--mono);font-size:var(--fs-xs,12.5px);color:var(--ink-3);font-variant-numeric:tabular-nums}
.dv-pager-btns{display:flex;gap:9px}
.dv-pager-btns .ash-btn-ghost:disabled{opacity:.45;cursor:not-allowed}

.dv-money{font-variant-numeric:tabular-nums;white-space:nowrap}
.dv-money-lg{font-family:var(--display);font-size:var(--fs-h2,24px);font-weight:var(--fw-regular,400);letter-spacing:var(--tracking-tight,-.02em);font-variant-numeric:tabular-nums}
.dv-money-credit{color:var(--accent-700)}

.dv-meter{height:7px;border-radius:var(--radius-pill,20px);background:var(--bd);overflow:hidden}
.dv-meter > span{display:block;height:100%;border-radius:var(--radius-pill,20px);background:var(--accent)}
.dv-meter-split{display:flex}
.dv-meter-split > span{border-radius:0}

.dv-avatar{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:var(--radius-round,50%);background:var(--accent-100);color:var(--accent-700);font-size:var(--fs-2xs,11px);font-weight:var(--fw-bold,700);letter-spacing:.03em}
.dv-tag{display:inline-flex;align-items:center;height:21px;padding:0 8px;border-radius:var(--radius-sm,8px);background:var(--accent-50);color:var(--accent-700);font-size:var(--fs-2xs,11px);font-weight:var(--fw-semibold,600);white-space:nowrap}
.dv-tag-mut{background:var(--surface-2);border:1px solid var(--bd);color:var(--ink-3)}
.dv-tags{display:flex;align-items:center;gap:5px;flex-wrap:wrap}

.dv-dotstate{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs,12.5px);font-weight:var(--fw-semibold,600);color:var(--ink-3)}
.dv-dotstate::before{content:"";width:6px;height:6px;flex:none;border-radius:var(--radius-round,50%);background:currentColor}
.dv-dotstate-ok{color:var(--accent-700)}
.dv-dotstate-warn{color:var(--warn-700,#8a6516)}
.dv-dotstate-bad{color:var(--danger-700,#8c261f)}

@media (max-width:760px){
  .dv-toolbar{padding:var(--space-4,12px) var(--space-5,14px)}
  .dv-rail,.dv-pager{padding-left:var(--space-5,14px);padding-right:var(--space-5,14px)}
  .dv-table-scroll{max-height:none}
}

/* ─────────────────────────────────────────────── dp-*: the approved data-page
   vocabulary (contacts, campaigns, analytics, activity). Additive: the dv-*
   rules above are still used by billing, team, api-keys, webhooks and mandate. */

.dp-page{padding-top:28px}

.dp-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.dp-head-main{flex:1;min-width:220px}
.dp-title{font-family:var(--display);font-weight:var(--fw-regular);font-size:28px;line-height:var(--lh-heading);letter-spacing:var(--tracking-tight);margin:0 0 4px}
.dp-sub{margin:0;font-size:13.5px;line-height:var(--lh-ui);color:var(--ink-2);max-width:78ch}
.dp-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.dp-head-actions .ash-btn,.dp-head-actions .ash-btn-ghost,.dp-head-actions .ash-btn-secondary{height:36px;padding:0 14px;border-radius:var(--radius-md)}

.dp-back{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:0;margin:0 0 12px;font-family:var(--sans);font-size:12.5px;font-weight:var(--fw-semibold);color:var(--ink-3);cursor:pointer}
.dp-back:hover{color:var(--ink)}

.dp-eyebrow{font-size:11px;font-weight:var(--fw-bold);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4)}

/* ------------------------------------------------------------------- pills */

.dp-pills{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.dp-pill{display:inline-flex;align-items:center;gap:7px;padding:6px 11px;border:1px solid var(--bd);border-radius:var(--radius-pill);background:var(--surface);font-family:var(--sans);font-size:12.5px;font-weight:var(--fw-medium);color:var(--ink-2);cursor:pointer;white-space:nowrap}
.dp-pill:hover{background:var(--surface-2);color:var(--ink)}
.dp-pill[aria-pressed="true"]{background:var(--accent-50);border-color:var(--accent-100);color:var(--accent-700)}
.dp-pill-n{font-family:var(--mono);font-size:11px;color:var(--ink-4);font-variant-numeric:tabular-nums}
.dp-pill[aria-pressed="true"] .dp-pill-n{color:var(--accent-700);opacity:.75}

/* ------------------------------------------------------------------- cards */

.dp-card{background:var(--surface);border:1px solid var(--bd);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:hidden}
.dp-card-pad{padding:20px 22px}
.dp-card-label{font-size:11px;font-weight:var(--fw-bold);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);margin-bottom:12px}
.dp-cards{display:flex;flex-direction:column;gap:16px}

.dp-secthead{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:14px 16px;border-bottom:1px solid var(--bd)}
.dp-secthead h2{font-size:14px;font-weight:var(--fw-bold);margin:0}
.dp-secthead p{font-size:12px;line-height:var(--lh-ui);color:var(--ink-3);margin:3px 0 0}

/* --------------------------------------------------------------- table bar */

.dp-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 16px;border-bottom:1px solid var(--bd);background:var(--surface-2)}
.dp-bar-count{font-size:12.5px;font-weight:var(--fw-semibold);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.dp-bar-grow{flex:1 1 200px;min-width:0;max-width:360px;margin-right:auto}
.dp-bar-act{border:0;background:none;padding:0;font-family:var(--sans);font-size:12.5px;color:var(--ink-3);cursor:pointer}
.dp-bar-act:hover{color:var(--ink)}
.dp-bar-act:disabled{opacity:.5;cursor:default}
.dp-bar-select{height:var(--field-height);padding:0 30px 0 var(--field-padding-x);border:1px solid var(--field-border);border-radius:var(--radius-field);background-color:var(--field-background);font-family:var(--sans);font-size:var(--field-font-size);color:var(--field-color);max-width:190px}

.dp-search{display:flex;align-items:center;gap:9px;height:var(--field-height);padding:0 var(--field-padding-x);border:1px solid var(--field-border);border-radius:var(--radius-field);background:var(--field-background)}
.dp-search:focus-within{border-color:var(--accent);box-shadow:var(--focus-ring)}
.dp-search svg{width:16px;height:16px;flex:none;color:var(--field-placeholder)}
.dp-search input{width:100%;min-width:0;border:0;outline:0;background:none;font-family:var(--sans);font-size:var(--field-font-size);color:var(--field-color)}
.dp-search input::placeholder{color:var(--field-placeholder)}

/* ------------------------------------------------------------ grid tables */

.dp-scroll{overflow-x:auto;overscroll-behavior-x:contain}
.dp-table{width:100%;min-width:var(--dp-min,840px);border-collapse:collapse}
.dp-table thead,.dp-table tbody,.dp-table tr{display:block}
.dp-table tr{display:grid;grid-template-columns:var(--dp-cols);gap:var(--dp-gap,14px);align-items:center;padding:12px 16px;border-bottom:1px solid var(--bd);text-align:left}
.dp-table th,.dp-table td{display:block;min-width:0;padding:0;border:0;font-weight:inherit;vertical-align:middle}
.dp-table thead tr{padding:9px 16px;font-size:10.5px;font-weight:var(--fw-bold);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-4)}
.dp-table-shaded thead tr{background:var(--surface-2)}
.dp-table tbody tr:last-child{border-bottom:0}
.dp-table tbody tr:hover,.dp-table tbody tr:focus-within{background:var(--surface-2)}
.dp-row-link{cursor:pointer}

.dp-name{display:block;font-size:13.5px;font-weight:var(--fw-semibold);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dp-meta{display:block;font-size:11.5px;color:var(--ink-3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dp-cell{font-size:12.5px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dp-mono{font-family:var(--mono);font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.dp-num{font-family:var(--mono);font-size:12.5px;color:var(--ink-2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.dp-num-strong{color:var(--ink);font-weight:var(--fw-semibold)}
.dp-when{font-size:12px;color:var(--ink-3);text-align:right;white-space:nowrap}
.dp-person{display:flex;align-items:center;gap:11px;min-width:0}
.dp-person-main{display:block;min-width:0}

.dp-linkbtn{border:0;background:none;padding:0;text-align:left;min-width:0;font:inherit;color:inherit;cursor:pointer}
.dp-linkbtn:hover .dp-name{color:var(--accent-700)}

.dp-cell-state{grid-column:1 / -1}
.dp-state-row{padding:0}
.dp-state-row:hover{background:none}
.dp-cell-state .dv-state{padding:40px 22px;text-align:center}
.dp-cell-state .dv-state-body{margin-left:auto;margin-right:auto}

.dp-acts{display:flex;justify-content:flex-end;gap:2px}
.dp-acts a,.dp-acts button{width:30px;height:30px;flex:none;display:grid;place-items:center;border:0;background:none;border-radius:8px;color:var(--ink-3);text-decoration:none;cursor:pointer}
.dp-acts a:hover,.dp-acts button:hover{background:var(--accent-50);color:var(--accent-700)}

.dp-pager{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--bd)}
.dp-pager-label{font-family:var(--mono);font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.dp-pager-btns{display:flex;align-items:center;gap:8px}
.dp-pager-btns .ash-btn-ghost{height:30px;padding:0 12px;font-size:12.5px;border-radius:var(--radius-sm)}
.dp-pager-btns .ash-btn-ghost:disabled{opacity:.45}

/* --------------------------------------------------------- status & badges */

.dp-status{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:var(--radius-pill);font-size:11px;font-weight:var(--fw-semibold);white-space:nowrap;background:var(--surface-2);border:1px solid var(--bd);color:var(--ink-3)}
.dp-status-cap{text-transform:capitalize}
.dp-status-ok{background:var(--accent-50);border-color:transparent;color:var(--accent-700)}
.dp-status-live{background:var(--info-50);border-color:transparent;color:var(--info-700)}
.dp-status-warn{background:var(--warn-50);border-color:transparent;color:var(--warn-700)}
.dp-status-bad{background:var(--danger-50);border-color:transparent;color:var(--danger-700)}

.dp-tags{display:flex;gap:5px;flex-wrap:wrap;min-width:0}
.dp-tag{display:inline-flex;align-items:center;height:21px;padding:0 8px;border-radius:var(--radius-sm);background:var(--accent-50);color:var(--accent-700);font-size:11px;font-weight:var(--fw-semibold);white-space:nowrap}
.dp-tag-mut{background:var(--surface-2);border:1px solid var(--bd);color:var(--ink-3)}

/* ------------------------------------------------------------------- stats */

.dp-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
.dp-stat{padding:16px 18px}
.dp-stat-k{font-size:11px;font-weight:var(--fw-bold);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4)}
.dp-stat-v{font-family:var(--mono);font-size:26px;font-weight:var(--fw-semibold);line-height:1.1;margin-top:8px;font-variant-numeric:tabular-nums;color:var(--ink)}
.dp-stat-d{font-size:12.5px;line-height:var(--lh-ui);color:var(--ink-3);margin-top:6px}

/* ----------------------------------------------------------- key/value list */

.dp-kv{display:flex;align-items:baseline;gap:12px;padding:7px 0;border-bottom:1px solid var(--bd)}
.dp-kv:last-child{border-bottom:0}
.dp-kv-k{flex:1;font-size:12.5px;color:var(--ink-2)}
.dp-kv-v{font-family:var(--mono);font-size:12.5px;font-weight:var(--fw-semibold);text-align:right;color:var(--ink);overflow-wrap:anywhere}

/* -------------------------------------------------------- WhatsApp preview */

.dp-preview{padding:20px 18px;background:var(--info-50)}
.dp-bubble{max-width:290px;padding:11px 13px;border-radius:12px;border-top-left-radius:3px;background:var(--surface);box-shadow:var(--shadow-sm);font-size:13.5px;line-height:1.5;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
.dp-bubble-btn{max-width:290px;margin-top:5px;padding:9px;border-radius:10px;background:var(--surface);box-shadow:var(--shadow-sm);text-align:center;font-size:13px;font-weight:var(--fw-semibold);color:var(--accent-700)}

/* ------------------------------------------------------------------ funnel */

.dp-funnel-stage{margin-bottom:16px}
.dp-funnel-stage:last-child{margin-bottom:0}
.dp-funnel-head{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}
.dp-funnel-label{flex:1;font-size:13px;font-weight:var(--fw-semibold);color:var(--ink)}
.dp-funnel-value{font-family:var(--mono);font-size:14px;font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}
.dp-funnel-pct{width:52px;text-align:right;font-family:var(--mono);font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.dp-funnel-bar{height:7px;border-radius:var(--radius-pill);background:var(--bg);overflow:hidden}
.dp-funnel-bar span{display:block;height:100%;border-radius:var(--radius-pill);background:var(--accent)}
.dp-funnel-sent .dp-funnel-bar span{background:color-mix(in srgb,var(--accent) 45%,var(--surface))}
.dp-funnel-read .dp-funnel-bar span{background:var(--accent-700)}
.dp-funnel-note{font-size:11.5px;line-height:var(--lh-ui);color:var(--ink-3);margin-top:5px}

/* ------------------------------------------------------------ step layout */

.dp-split{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}
.dp-aside{display:flex;flex-direction:column;gap:16px;position:sticky;top:18px}

.dp-step{padding:20px 22px}
.dp-step-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}
.dp-step-n{font-family:var(--mono);font-size:11px;color:var(--ink-4)}
.dp-step-h{font-size:14px;font-weight:var(--fw-bold);margin:0}
.dp-step-sub{margin:0 0 14px;font-size:12.5px;line-height:var(--lh-ui);color:var(--ink-3)}

.dp-opts{display:flex;flex-direction:column;gap:8px}
.dp-opts-row{flex-direction:row;flex-wrap:wrap}
.dp-opts-row>.dp-opt{flex:1 1 240px}
@media(max-width:640px){.dp-opts-row{flex-direction:column}}
.dp-opt{display:flex;align-items:flex-start;gap:11px;width:100%;padding:11px 13px;border:1px solid var(--bd);border-radius:var(--radius-md);background:var(--surface);font-family:var(--sans);text-align:left;cursor:pointer}
.dp-opt:hover{background:var(--surface-2)}
.dp-opt[aria-pressed="true"],.dp-opt[aria-selected="true"]{border-color:var(--accent);background:var(--accent-50)}
.dp-opt-radio{width:15px;height:15px;flex:none;margin-top:2px;border:1.5px solid var(--bd-2);border-radius:var(--radius-round);background:var(--surface)}
.dp-opt[aria-pressed="true"] .dp-opt-radio,.dp-opt[aria-selected="true"] .dp-opt-radio{border-color:var(--accent);border-width:4.5px}
.dp-opt-main{flex:1;min-width:0}
.dp-opt-t{font-size:13.5px;font-weight:var(--fw-semibold);color:var(--ink)}
.dp-opt-d{display:block;font-size:12px;line-height:var(--lh-ui);color:var(--ink-3);margin-top:2px}

.dp-note{display:flex;gap:10px;padding:11px 13px;border-radius:10px;background:var(--warn-50);border:1px solid var(--warn-100);color:var(--warn-700)}
.dp-note-ic{width:16px;height:16px;flex:none;margin-top:1px;display:grid;place-items:center;border-radius:var(--radius-round);background:var(--warn);color:var(--surface);font-size:10px;font-weight:var(--fw-bold)}
.dp-note-body{flex:1;font-size:12px;line-height:1.5}

/* --------------------------------------------------------------- responsive */

@media (max-width:1024px){
  .dp-split{grid-template-columns:1fr}
  .dp-aside{position:static}
}
@media (max-width:760px){
  .dp-page{padding-top:22px}
  .dp-title{font-size:24px}
  .dp-scroll{overflow-x:visible}
  .dp-table{min-width:0}
  .dp-table thead{display:none}
  .dp-table tbody tr{grid-template-columns:1fr;gap:7px;padding:14px 16px}
  .dp-num,.dp-when{text-align:left}
  /* The header row is gone on this width, so each cell has to name itself. */
  .dp-table td[data-l]::before{content:attr(data-l);margin-right:7px;font-family:var(--mono);font-size:10.5px;font-weight:var(--fw-bold);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-4)}
  .dp-table td[data-l] .dp-tags{display:inline-flex;vertical-align:middle}
  .dp-acts{justify-content:flex-start}
  .dp-bar{padding:10px 14px}
  .dp-bar-select{max-width:none;flex:1 1 140px}
  .dp-stat-v{font-size:23px}
}
.ct-import-report{margin-top:14px;border:1px solid var(--bd);border-radius:var(--radius-md);padding:12px 14px}
.ct-import-report table{width:100%;margin-top:10px;border-collapse:collapse;font-size:12.5px}
.ct-import-report th,.ct-import-report td{padding:6px 8px;text-align:left;border-bottom:1px solid var(--bd)}
.ct-import-links{margin:10px 0 0}
.ct-import-history{margin-top:14px;font-size:13px}
.ct-import-history summary{cursor:pointer;color:var(--ink-2)}
.ct-import-history table{width:100%;margin-top:10px;border-collapse:collapse;font-size:12.5px}
.ct-import-history th,.ct-import-history td{padding:6px 8px;text-align:left;border-bottom:1px solid var(--bd)}
.dv-linkish{background:none;border:0;padding:0;color:var(--accent,#0b6bcb);cursor:pointer;font:inherit;text-decoration:underline}
.ct-conditions{display:grid;gap:8px;margin:10px 0}
.ct-condition{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.ct-condition .ash-field{flex:1 1 130px;min-width:0}
.ct-cond-remove{flex:0 0 auto;border:1px solid var(--bd);background:var(--surface);border-radius:var(--radius-sm);padding:6px;color:var(--ink-3);cursor:pointer}
.cmp-outcomes{margin-top:18px;border-top:1px solid var(--bd);padding-top:14px}
.cmp-outcome-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.cmp-outcome-list li{display:flex;align-items:center;gap:10px;font-size:13px}
.cmp-outcome-n{min-width:52px;font-weight:600;font-variant-numeric:tabular-nums}
.cmp-outcome-l{flex:1;color:var(--ink-2)}
.cmp-follow-note{margin-bottom:14px}
.dp-pager-btns .dv-select-btn{height:30px;font-size:12.5px}
