/* ============================================================
   ta-performance-v0.6.9.css
   INBXIFY — Performance tab (T-A) — DATA
   v0.3.0 (from v0.2.0 base). KEEPS all v0.1.0 shell styles
   (head, channels, card, tables) — reproduced here so this file
   fully replaces the old one — and ADDS the data-era styles
   transcribed literally from approved mockups M1/M2/M3.

   Reuses (does NOT restyle): design tokens, .ix-channels,
   .ix-overlay/.ix-modal (ix-modals v1.0.2), .ipp-cancel-link
   concept (gold dirty per canonical .ipp-dirty treatment).

   Load AFTER title-admin-page-design + ix-modals + ix-buttons.
   ============================================================ */

/* ── v0.1.0 base (unchanged) ── */
.ta-perf__head{ margin-bottom:16px; }
.ta-perf__eyebrow{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--ix-text-light); font-weight:500; margin-bottom:4px; }
.ta-perf__title{ font-family:var(--ix-font-display); font-size:22px; font-weight:700; color:var(--ix-teal); line-height:1.15; }
.ta-perf__channels{ margin-bottom:16px; }
.ta-perf__card{ background:var(--ix-white); border:1px solid var(--ix-border-soft); border-radius:var(--ix-radius); overflow:hidden; box-shadow:var(--ix-shadow-md); }
.ta-perf__card table{ width:100%; border-collapse:collapse; }
.ta-perf__card thead th{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.06em; text-transform:uppercase; color:var(--ix-text-light); font-weight:500; text-align:left; padding:11px 18px; background:var(--ix-surface); border-bottom:1px solid var(--ix-border-soft); white-space:nowrap; }
.ta-perf__card thead th.num{ text-align:right; }
.ta-perf__card tbody td{ padding:12px 18px; border-bottom:1px solid var(--ix-border-soft); font-size:13.5px; }
.ta-perf__card tbody td.num{ text-align:right; font-variant-numeric:tabular-nums; font-family:var(--ix-font-mono); font-size:12.5px; }
.ta-perf__card tbody tr:last-child td{ border-bottom:none; }

/* ── v0.3.0: info circles ── */
.ta-perf .perf-i{ display:inline-flex; align-items:center; justify-content:center; width:13px; height:13px; border:1px solid var(--ix-border-input); border-radius:50%; font-family:var(--ix-font-body); font-size:8.5px; font-weight:600; color:var(--ix-text-light); margin-left:5px; cursor:help; position:relative; vertical-align:1px; text-transform:none; letter-spacing:0; }
.ta-perf .perf-i:hover{ color:var(--ix-blue); border-color:var(--ix-blue); }

/* ── v0.3.0: status pills ── */
.ta-perf .perf-status{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.05em; text-transform:uppercase; padding:3px 8px; border-radius:20px; white-space:nowrap; }
.ta-perf .perf-status--live{ background:rgba(39,174,96,.1); color:var(--ix-ok); }
.ta-perf .perf-status--wait{ background:var(--ix-gold-glow); color:var(--ix-gold); }

/* ── v0.3.0: rows + expand ── */
.ta-perf .perf-row{ cursor:pointer; }
.ta-perf .perf-row:hover td{ background:var(--ix-blue-ghost); }
.ta-perf .perf-chev{ font-size:10px; color:var(--ix-text-light); transition:transform var(--ix-ease); display:inline-block; }
.ta-perf .perf-row.open .perf-chev{ transform:rotate(90deg); color:var(--ix-blue); }
.ta-perf .perf-expand td{ background:var(--ix-surface); padding:0 18px 16px; cursor:default; }
.ta-perf .perf-expand-inner{ border:1px solid var(--ix-border-soft); border-radius:var(--ix-radius-sm); background:var(--ix-white); margin-top:2px; }
.ta-perf .perf-expand-inner--gap{ margin-top:10px; }
.ta-perf .perf-expand-inner h4{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.08em; text-transform:uppercase; color:var(--ix-text-light); font-weight:500; margin:0; padding:10px 14px 8px; border-bottom:1px solid var(--ix-border-soft); }
.ta-perf .perf-src table,.ta-perf .perf-content table{ width:100%; border-collapse:collapse; }
.ta-perf .perf-src td,.ta-perf .perf-content td{ padding:9px 14px; font-size:12.5px; border-bottom:1px solid var(--ix-border-soft); }
.ta-perf .perf-src tr:last-child td,.ta-perf .perf-content tr:last-child td{ border-bottom:none; }
.ta-perf .perf-src td.num,.ta-perf .perf-content td.num{ text-align:right; font-family:var(--ix-font-mono); font-size:11.5px; font-variant-numeric:tabular-nums; }
.ta-perf .perf-src .lbl{ font-weight:600; font-size:12px; }
.ta-perf .perf-content-head td{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.06em; text-transform:uppercase; color:var(--ix-text-light); background:var(--ix-surface); }
.ta-perf .perf-report-link{ font-size:11px; color:var(--ix-blue); text-decoration:none; font-family:var(--ix-font-mono); }
.ta-perf .perf-report-link:hover{ text-decoration:underline; }
.ta-perf .perf-meta{ font-size:10.5px; color:var(--ix-text-light); padding:8px 14px; border-top:1px solid var(--ix-border-soft); font-family:var(--ix-font-mono); }

/* ── v0.3.0: multiplier (canonical gold dirty) ── */
.ta-perf .perf-mult{ width:56px; padding:4px 6px; border:1px solid var(--ix-border-input); border-radius:6px; font-family:var(--ix-font-mono); font-size:11.5px; text-align:right; background:var(--ix-white); color:var(--ix-text-dark); }
.ta-perf .perf-mult.ipp-dirty{ border:2px solid var(--ix-gold); box-shadow:0 0 0 3px var(--ix-gold-glow); padding:3px 5px; }
/* ── v0.6.0 sortable headers (STANDING RULE, every table) ──
   Unscoped: modals mount to document.body, outside #ta-perf. The
   arrow is a fixed-width pseudo-element so a sorted header cannot
   change column width and force a wrap. */
th.perf-sortable{ cursor:pointer; user-select:none; position:relative; }
th.perf-sortable:hover{ color:var(--ix-blue); }
th.perf-sortable::after{
  content:'\2195'; opacity:.25; margin-left:5px; font-size:9px;
  display:inline-block; width:8px; text-align:center;
}
th.perf-sortable:hover::after{ opacity:.55; }
th.perf-sort-asc::after{ content:'\2191'; opacity:1; color:var(--ix-blue); }
th.perf-sort-desc::after{ content:'\2193'; opacity:1; color:var(--ix-blue); }
th.perf-sortable.num::after{ margin-left:4px; }

/* ── v0.5.1 refresh control (channel bar, both tabs) ────── */
.ta-perf .perf-asof{
  font-family:var(--ix-font-mono); font-size:10px; letter-spacing:.04em;
  color:var(--ix-text-light); margin-right:12px; white-space:nowrap; align-self:center;
}
.ta-perf .perf-refresh{
  font-family:var(--ix-font-body); font-size:11px; font-weight:600;
  color:var(--ix-text-mid); background:var(--ix-white);
  border:1px solid var(--ix-border-input); border-radius:6px;
  padding:5px 12px; cursor:pointer; white-space:nowrap; align-self:center;
}
.ta-perf .perf-refresh:hover{ color:var(--ix-blue); border-color:var(--ix-blue); }
.ta-perf .perf-refresh:disabled{ opacity:.6; cursor:default; }

.ta-perf .perf-save{ font-family:var(--ix-font-body); font-size:11px; font-weight:600; color:#fff; background:var(--ix-blue); border:none; border-radius:6px; padding:5px 12px; cursor:pointer; margin-left:8px; }
.ta-perf .perf-save:hover{ background:var(--ix-blue-deep); }
.ta-perf .perf-save:disabled{ opacity:.6; cursor:default; }
.ta-perf .ipp-cancel-link{ font-size:10.5px; color:var(--ix-text-light); text-decoration:underline; cursor:pointer; margin-left:8px; font-family:var(--ix-font-body); }
.ta-perf .ipp-cancel-link:hover{ color:var(--ix-danger); }
.ta-perf .perf-multcell{ white-space:nowrap; }

/* ── v0.3.0: semantic text ── */
.ta-perf .perf-est{ color:var(--ix-text-mid); }
.ta-perf .perf-dash{ color:var(--ix-text-tiny); }
/* v0.5.3: UNSCOPED on purpose. The newsletter modal is appended to
   document.body, so it sits outside #ta-perf and any '.ta-perf .x'
   descendant rule silently fails there. Same convention as nlm-*. */
.perf-type{ display:inline-block; font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.05em; text-transform:uppercase; color:var(--ix-text-light); background:var(--ix-surface); border:1px solid var(--ix-border-soft); border-radius:12px; padding:2px 7px; margin-left:6px; vertical-align:middle; white-space:nowrap; }
.perf-cust{ color:var(--ix-blue); cursor:pointer; }
.perf-cust:hover{ text-decoration:underline; }

/* ── v0.3.0: advertiser drill-in ── */
.ta-perf .perf-back{ font-size:12px; color:var(--ix-blue); cursor:pointer; font-weight:600; display:inline-block; margin-bottom:12px; }
.ta-perf .perf-back:hover{ text-decoration:underline; }
.ta-perf .perf-cust-head{ display:flex; align-items:baseline; gap:12px; margin-bottom:14px; }
.ta-perf .perf-cust-name{ font-family:var(--ix-font-display); font-size:19px; font-weight:700; color:var(--ix-teal); }
.ta-perf .perf-genreport{ font-size:11.5px; color:var(--ix-blue); cursor:pointer; text-decoration:underline; font-weight:500; }
.ta-perf .perf-genreport:hover{ color:var(--ix-blue-deep); }
.ta-perf .perf-totals{ display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin-bottom:14px; }
.ta-perf .perf-total{ background:var(--ix-white); border:1px solid var(--ix-border-soft); border-radius:var(--ix-radius-sm); padding:12px 14px; }
.ta-perf .perf-total .l{ font-family:var(--ix-font-mono); font-size:8.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ix-text-light); margin-bottom:4px; }
.ta-perf .perf-total .v{ font-family:var(--ix-font-mono); font-size:19px; font-weight:500; color:var(--ix-text-dark); font-variant-numeric:tabular-nums; }
.ta-perf .perf-total .v .est{ font-size:10px; color:var(--ix-text-light); margin-left:3px; }

/* ── v0.3.0: report modal form bits (shell = ix-modals) ── */
.perf-frow{ margin-bottom:16px; }
.perf-flabel{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.08em; text-transform:uppercase; color:var(--ix-text-light); font-weight:500; display:block; margin:0 0 6px; }
.perf-fselect{ width:100%; box-sizing:border-box; padding:9px 11px; border:1px solid var(--ix-border-input); border-radius:var(--ix-radius-sm); font-family:var(--ix-font-body); font-size:13px; color:var(--ix-text-dark); background:var(--ix-white); }
.perf-fincl{ display:flex; gap:14px; flex-wrap:wrap; }
.perf-fincl label{ display:flex; align-items:center; gap:6px; font-size:12.5px; color:var(--ix-text-mid); font-family:var(--ix-font-body); }
.perf-fincl input{ accent-color:var(--ix-blue); }
.perf-fhint{ font-size:11px; color:var(--ix-text-light); margin-top:5px; line-height:1.4; }
.perf-btnprimary{ font-family:var(--ix-font-body); font-size:12.5px; font-weight:600; color:#fff; background:var(--ix-blue); border:none; border-radius:var(--ix-radius-sm); padding:9px 18px; cursor:pointer; }
.perf-btnprimary:hover{ background:var(--ix-blue-deep); }
.perf-btnprimary:disabled{ opacity:.6; cursor:default; }
.perf-btnghost{ font-family:var(--ix-font-body); font-size:12.5px; font-weight:600; color:var(--ix-text-mid); background:transparent; border:none; cursor:pointer; }

/* End of ta-performance-v0.3.0.css */

/* v0.3.4 companion: diagnostic status pill */
.ta-perf .perf-status--err{ background:rgba(192,57,43,.08); color:var(--ix-danger); }

/* ── v0.3.7: FIX broken summary-row layout when a row is expanded ──
   Root cause: auto table layout let the 9-col expand cell's content
   dictate column widths, crushing the Newsletter column into a
   character-wrapped tower and detaching pills/numbers from columns. */
.ta-perf__card > table{ table-layout: fixed; }
/* column plan: chev / name / status / 6 numeric */
.ta-perf__card > table thead th:nth-child(1){ width:30px; }
.ta-perf__card > table thead th:nth-child(2){ width:22%; }
.ta-perf__card > table thead th:nth-child(3){ width:110px; }
.ta-perf .perf-row td:nth-child(2){ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ta-perf .perf-row td{ white-space:nowrap; }
/* expand cell: full-bleed, its inner tables lay out independently */
.ta-perf .perf-expand td{ white-space:normal; }
.ta-perf .perf-expand-inner{ overflow-x:auto; }
.ta-perf .perf-src table,
.ta-perf .perf-content table{ table-layout:auto; min-width:100%; }
/* advertiser + drill-in tables get the same protection */
.ta-perf .perf-totals + .ta-perf__card table{ table-layout:fixed; }


/* ══ v0.4.0 — FULL-SCREEN NEWSLETTER DETAIL MODAL (from M4) ══ */
.nlm-overlay{ align-items:stretch !important; padding:0 !important; }
.nlmodal{ width:100%; height:100%; display:flex; flex-direction:column; background:var(--ix-cream); overflow:hidden; }
.nlmodal-bar{ height:3px; background:linear-gradient(90deg,var(--ix-gold),var(--ix-gold-light,#E8C172)); flex:0 0 auto; }
.nlmodal-head{ display:flex; align-items:center; gap:18px; padding:16px 28px; background:var(--ix-white); border-bottom:1px solid var(--ix-border-soft); flex:0 0 auto; }
.nlmodal-eyebrow{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--ix-text-light); margin-bottom:2px; }
.nlmodal-title{ font-family:var(--ix-font-display); font-size:24px; font-weight:700; color:var(--ix-teal); line-height:1.1; }
.nlmodal-date{ font-family:var(--ix-font-mono); font-size:11px; color:var(--ix-text-mid); margin-top:3px; }
.nlmodal-spacer{ flex:1; }
.nlmodal-status{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.05em; text-transform:uppercase; padding:4px 10px; border-radius:20px; background:rgba(39,174,96,.1); color:var(--ix-ok); }
.nlmodal-print{ font-family:var(--ix-font-body); font-size:12.5px; font-weight:600; color:#fff; background:var(--ix-blue); border:none; border-radius:var(--ix-radius-sm); padding:9px 16px; cursor:pointer; }
.nlmodal-print:hover{ background:var(--ix-blue-deep); }
.nlmodal-close{ width:34px; height:34px; border:1px solid var(--ix-border-input); border-radius:50%; background:var(--ix-white); color:var(--ix-text-mid); font-size:14px; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.nlmodal-close:hover{ color:var(--ix-teal); border-color:var(--ix-teal); }
.nlmodal-body{ flex:1 1 auto; overflow-y:auto; padding:24px 28px 40px; }
.nlmodal-inner{ max-width:960px; margin:0 auto; }
.nlm-totals{ display:grid; grid-template-columns:repeat(6,1fr); gap:12px; margin-bottom:22px; }
.nlm-total{ background:var(--ix-white); border:1px solid var(--ix-border-soft); border-radius:var(--ix-radius-sm); padding:14px 16px; }
.nlm-total .l{ font-family:var(--ix-font-mono); font-size:8.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ix-text-light); margin-bottom:5px; }
.nlm-total .v{ font-family:var(--ix-font-mono); font-size:21px; font-weight:500; font-variant-numeric:tabular-nums; }
.nlm-card{ background:var(--ix-white); border:1px solid var(--ix-border-soft); border-radius:var(--ix-radius); overflow:hidden; margin-bottom:22px; }
.nlm-card h4{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.08em; text-transform:uppercase; color:var(--ix-text-light); font-weight:500; margin:0; padding:12px 18px 10px; border-bottom:1px solid var(--ix-border-soft); background:var(--ix-surface); }
.nlm-card table{ width:100%; border-collapse:collapse; }
.nlm-card td,.nlm-card th{ padding:11px 18px; border-bottom:1px solid var(--ix-border-soft); font-size:13px; text-align:left; }
.nlm-card tr:last-child td{ border-bottom:none; }
.nlm-card td.num,.nlm-card th.num{ text-align:right; font-family:var(--ix-font-mono); font-size:12px; font-variant-numeric:tabular-nums; }
.nlm-card th{ font-family:var(--ix-font-mono); font-size:9px; letter-spacing:.06em; text-transform:uppercase; color:var(--ix-text-light); font-weight:500; background:var(--ix-surface); }
.nlm-lbl{ font-weight:600; }
.nlm-meta{ font-size:10.5px; color:var(--ix-text-light); padding:9px 18px; border-top:1px solid var(--ix-border-soft); font-family:var(--ix-font-mono); }
.nlm-report-link{ font-size:11px; color:var(--ix-blue); font-family:var(--ix-font-mono); text-decoration:none; }
.nlm-report-link:hover{ text-decoration:underline; }
.nlm-multcell{ white-space:nowrap; }
.nlm-printfoot{ display:none; }

/* ══ v0.4.0 — PRINT: modal renders as a professional 1–2 pager ══ */
@media print{
  @page{ size:letter; margin:0.55in; }
  body.nlm-open > *:not(.nlm-overlay){ display:none !important; }
  body.nlm-open{ background:#fff !important; }
  .nlm-overlay{ position:static !important; background:#fff !important; padding:0 !important; display:block !important; }
  .nlmodal{ height:auto; background:#fff; overflow:visible; }
  .nlmodal-bar{ display:none; }
  .nlmodal-head{ border-bottom:2px solid var(--ix-teal); padding:0 0 12px; background:#fff; }
  .nlmodal-close,.nlmodal-print{ display:none !important; }
  .nlmodal-status{ border:1px solid var(--ix-ok); background:#fff; }
  .nlmodal-body{ overflow:visible; padding:16px 0 0; }
  .nlmodal-inner{ max-width:none; }
  .nlm-totals{ gap:8px; }
  .nlm-total{ border:1px solid var(--ix-border); border-radius:6px; padding:10px 12px; }
  .nlm-card{ border:1px solid var(--ix-border); border-radius:6px; break-inside:avoid; margin-bottom:14px; }
  .nlm-card td,.nlm-card th{ padding:7px 12px; font-size:11px; }
  .nlm-content-card{ break-inside:auto; }
  .nlm-content-card tr{ break-inside:avoid; }
  .perf-mult{ border:none !important; box-shadow:none !important; padding:0 !important; width:auto !important; }
  .perf-cust{ color:var(--ix-text-dark) !important; }
  .perf-i{ display:none !important; }
  .nlm-printfoot{ display:flex !important; justify-content:space-between; margin-top:18px; padding-top:10px; border-top:1px solid var(--ix-border); font-family:var(--ix-font-mono); font-size:9px; color:var(--ix-text-light); }
}

/* v0.4.2: inline-editable send time in modal header */
.nlm-sendtime{ width:76px; padding:2px 5px; border:1px solid transparent; border-radius:5px; font-family:var(--ix-font-mono); font-size:11px; color:var(--ix-text-mid); background:transparent; }
.nlm-sendtime:hover,.nlm-sendtime:focus{ border-color:var(--ix-border-input); background:var(--ix-white); }
.nlm-sendtime.ipp-dirty{ border:2px solid var(--ix-gold); box-shadow:0 0 0 3px var(--ix-gold-glow); background:var(--ix-white); }
@media print{ .nlm-sendtime{ border:none !important; background:transparent !important; box-shadow:none !important; } }


/* ══ v0.4.3 — FIXES + TABLE REDESIGN ══ */

/* FIX: info circles were scoped under .ta-perf, so inside the modal
   (mounted on body) the tip text rendered inline. Global rules: */
.perf-i{ display:inline-flex; align-items:center; justify-content:center; width:13px; height:13px; border:1px solid var(--ix-border-input); border-radius:50%; font-family:var(--ix-font-body); font-size:8.5px; font-weight:600; color:var(--ix-text-light); margin-left:5px; cursor:help; position:relative; vertical-align:1px; text-transform:none; letter-spacing:0; }
.perf-i:hover{ color:var(--ix-blue); border-color:var(--ix-blue); }
/* right-edge tips flip inward so they don't clip */

/* modal: full-height but capped width, centered on the backdrop */
.nlmodal{ max-width:940px; margin:0 auto; border-radius:0; box-shadow:0 0 60px rgba(26,58,58,.35); }

/* ── TABLE REDESIGN: one hierarchy, no inverted sizes ──
   Card title (15px, display face, dark) > column headers (11px,
   body face, medium gray, sentence case) > cells (13px). The
   mono-9px-uppercase treatment retires from titles and headers;
   mono stays for NUMBERS only, where it earns its keep. */
.nlm-card h4,
.ta-perf .perf-expand-inner h4{
  font-family:var(--ix-font-display); font-size:15px; font-weight:600;
  color:var(--ix-teal); text-transform:none; letter-spacing:0;
  padding:13px 18px 11px; background:var(--ix-white);
}
.nlm-card th,
.ta-perf__card thead th{
  font-family:var(--ix-font-body); font-size:11px; font-weight:600;
  color:var(--ix-text-mid); text-transform:none; letter-spacing:.01em;
  padding:10px 18px;
}
.nlm-card td{ font-size:13px; }
.nlm-card td.num, .ta-perf__card tbody td.num{ font-size:12.5px; }
.nlm-total .l{
  font-family:var(--ix-font-body); font-size:10px; font-weight:600;
  color:var(--ix-text-mid); text-transform:none; letter-spacing:.01em;
}
.perf-status{ letter-spacing:.02em; }
.perf-sendtime-cell{ font-family:var(--ix-font-mono); font-size:11.5px; color:var(--ix-text-mid); white-space:nowrap; }

/* column plan update for the 10-column By Newsletter table */
/* v0.6.0: By-advertiser is 5 columns after the Slots removal.
   Advertiser names are long; the numeric columns are not. */
.ta-perf .perf-adv-card > table thead th:nth-child(1){ width:auto; }
.ta-perf .perf-adv-card > table thead th:nth-child(2){ width:80px; }
.ta-perf .perf-adv-card > table thead th:nth-child(3){ width:110px; }
.ta-perf .perf-adv-card > table thead th:nth-child(4){ width:130px; }
.ta-perf .perf-adv-card > table thead th:nth-child(5){ width:100px; }
.ta-perf .perf-adv-card > table thead th,
.ta-perf .perf-adv-card > table tbody td{ white-space:nowrap; }

/* ── v0.6.5: floating tooltip ──────────────────────────────
   ONE node on document.body, position:fixed. The old nested .tip
   was clipped by overflow:hidden on the T-A tab panes (TD-229's
   root cause), so no tooltip ever appeared anywhere on the page.
   Nothing here is scoped — modals mount outside #ta-perf. */
.perf-tipfloat{
  display:none; position:fixed; z-index:2147483000; max-width:240px;
  background:var(--ix-teal, #1A3A3A); color:#fff;
  font-family:var(--ix-font-body); font-size:10.5px; font-weight:400;
  line-height:1.45; letter-spacing:0; text-align:left; text-transform:none;
  padding:8px 10px; border-radius:8px; pointer-events:none;
  box-shadow:0 4px 14px rgba(0,0,0,.18);
}
@media print{ .perf-tipfloat{ display:none !important; } }

/* v0.6.8: marks a row attributed via LINK_ATTRIBUTION rather than
   by a real utm_term. Unscoped — modals mount outside #ta-perf. */
.perf-manual{
  font-family:var(--ix-font-mono); font-size:8px; font-weight:600;
  color:var(--ix-gold); border:1px solid var(--ix-gold); border-radius:3px;
  padding:0 3px; margin-left:4px; cursor:help; vertical-align:1px;
}

/* ── v0.6.7: advertiser drill table (9 columns) ────────────
   Title column added (sponsored-article titles, truncated to 40
   chars in JS with the full string on the title attribute).
   CARDINAL RULES: nowrap everywhere, widths proportioned to real
   content, font uniform at 10.5px.
   1 Issue · 2 Date · 3 Slot · 4 Kind · 5 Title · 6 Position
   7 Clicks · 8 Views (est.) · 9 On site
   ---------------------------------------------------------- */
.ta-perf .perf-drill-card > table thead th,
.ta-perf .perf-drill-card > table tbody td{
  white-space:nowrap; padding-left:9px; padding-right:9px; font-size:10.5px;
}
.ta-perf .perf-drill-card > table thead th:first-child,
.ta-perf .perf-drill-card > table tbody td:first-child{ padding-left:16px; text-align:left; }
.ta-perf .perf-drill-card > table thead th:last-child,
.ta-perf .perf-drill-card > table tbody td:last-child{ padding-right:16px; }

.ta-perf .perf-drill-card > table thead th:nth-child(1){ width:88px; text-align:left; }
.ta-perf .perf-drill-card > table thead th:nth-child(2){ width:70px; }
.ta-perf .perf-drill-card > table thead th:nth-child(3){ width:66px; }
.ta-perf .perf-drill-card > table thead th:nth-child(4){ width:112px; }
.ta-perf .perf-drill-card > table thead th:nth-child(5){ width:232px; }
.ta-perf .perf-drill-card > table thead th:nth-child(6){ width:90px; }
.ta-perf .perf-drill-card > table thead th:nth-child(7){ width:64px; }
.ta-perf .perf-drill-card > table thead th:nth-child(8){ width:94px; }
.ta-perf .perf-drill-card > table thead th:nth-child(9){ width:auto; }

/* Truncation is done in JS at 40 chars; this is a belt-and-braces
   guard so an unexpectedly long value still cannot wrap. */
.ta-perf .perf-title-cell{
  max-width:232px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}

/* ── v0.6.3: By-Newsletter column proportions (14 columns) ──
   CARDINAL TABLE RULES: no cell wraps to a second line, and widths
   are proportioned to real content. Body font is 10.5px applied
   UNIFORMLY to every cell in this table — the size Slug already
   used. Status keeps its 9px pill scale.
   1 chev · 2 Newsletter · 3 Slug · 4 NL date · 5 Send date
   6 Status · 7 Send time · 8 Sends · 9 Opens · 10 Open rate
   11 Clicks · 12 CTR · 13 CTOR · 14 Factor
   ---------------------------------------------------------- */
.ta-perf .perf-nl-card > table thead th,
.ta-perf .perf-nl-card > table tbody td{ padding-left:8px; padding-right:8px; white-space:nowrap; }
.ta-perf .perf-nl-card > table tbody td,
.ta-perf .perf-nl-card > table tbody td.num{ font-size:10.5px; }
.ta-perf .perf-nl-card > table thead th:first-child,
.ta-perf .perf-nl-card > table tbody td:first-child{ padding-left:14px; }
.ta-perf .perf-nl-card > table thead th:last-child,
.ta-perf .perf-nl-card > table tbody td:last-child{ padding-right:14px; }

.ta-perf .perf-nl-card > table thead th:nth-child(1){ width:24px; }
.ta-perf .perf-nl-card > table thead th:nth-child(2){ width:88px; }
.ta-perf .perf-nl-card > table thead th:nth-child(3){ width:180px; }
.ta-perf .perf-nl-card > table thead th:nth-child(4){ width:60px; }
.ta-perf .perf-nl-card > table thead th:nth-child(5){ width:68px; }
.ta-perf .perf-nl-card > table thead th:nth-child(6){ width:94px; }
.ta-perf .perf-nl-card > table thead th:nth-child(7){ width:64px; }
.ta-perf .perf-nl-card > table thead th:nth-child(8){ width:52px; }
.ta-perf .perf-nl-card > table thead th:nth-child(9){ width:56px; }
.ta-perf .perf-nl-card > table thead th:nth-child(10){ width:68px; }
.ta-perf .perf-nl-card > table thead th:nth-child(11){ width:54px; }
.ta-perf .perf-nl-card > table thead th:nth-child(12){ width:50px; }
.ta-perf .perf-nl-card > table thead th:nth-child(13){ width:56px; }
.ta-perf .perf-nl-card > table thead th:nth-child(14){ width:56px; }

.ta-perf .perf-datecell{ white-space:nowrap; }

.ta-perf .perf-slug-cell{
  font-family:var(--ix-font-mono); color:var(--ix-text-light);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:212px;
}
.ta-perf .perf-row:hover .perf-slug-cell{ color:var(--ix-text-mid); }

@media print{
  .nlmodal{ max-width:none; box-shadow:none; }
  .nlm-card h4{ color:var(--ix-teal); }
}
