/* ============================================================================
   RolsBet Partners CRM — Dashboard redesign  ·  desktop, dark-lux
   Brand-strict: red = #ff0000 (core), gold value, warm-dark surfaces.
   Built on Montserrat Alternates (self-hosted at ../fonts/).
   ============================================================================ */

@font-face{ font-family:"Montserrat Alternates"; font-weight:400; font-style:normal; font-display:swap;
  src:url("../fonts/MontserratAlternates-Regular.ttf") format("truetype"); }
@font-face{ font-family:"Montserrat Alternates"; font-weight:500; font-style:normal; font-display:swap;
  src:url("../fonts/MontserratAlternates-Medium.ttf") format("truetype"); }
@font-face{ font-family:"Montserrat Alternates"; font-weight:600; font-style:normal; font-display:swap;
  src:url("../fonts/MontserratAlternates-SemiBold.ttf") format("truetype"); }
@font-face{ font-family:"Montserrat Alternates"; font-weight:700; font-style:normal; font-display:swap;
  src:url("../fonts/MontserratAlternates-Bold.ttf") format("truetype"); }
@font-face{ font-family:"Montserrat Alternates"; font-weight:800; font-style:normal; font-display:swap;
  src:url("../fonts/MontserratAlternates-ExtraBold.ttf") format("truetype"); }
@font-face{ font-family:"Montserrat Alternates"; font-weight:800; font-style:italic; font-display:swap;
  src:url("../fonts/MontserratAlternates-ExtraBoldItalic.ttf") format("truetype"); }

:root{
  /* surfaces — warm lux dark */
  --bg:#0a0a0a; --bg2:#0f0d0d; --card:#161313; --card2:#1c1817; --card3:#241f1d;
  --line:#2d2624; --line-soft:rgba(255,255,255,.06);
  /* text */
  --txt:#ece8e6; --dim:#928a85; --dim2:#6c6562;
  /* brand — Tier 1 core */
  --red:#ff0000; --red-deep:#9b111e; --red-soft:rgba(255,0,0,.12);
  /* functional accents */
  --gold:#ffd700; --gold-dim:#b89322; --gold-soft:rgba(255,215,0,.12);
  --green:#3fbf86; --green-deep:#2e9e6b; --green-soft:rgba(63,191,134,.12);
  --blue:#5a8fd6; --blue-soft:rgba(90,143,214,.12);
  /* brand bar gradient (core-faithful) */
  --brandbar:linear-gradient(90deg,#9b111e,#ff0000 55%,#ffd700);/* @kind color */

  --r-sm:6px; --r-md:8px; --r-lg:10px; --r-pill:999px;
  --font:"Montserrat Alternates","Montserrat",system-ui,sans-serif;

  /* density (overridden by .density-compact) */
  --pad-card:22px; --gap-grid:18px; --gap-stack:14px; --row-h:46px;
  --fs-kpi:46px; --fs-sec:13px; --shell-pad:40px;
}
.density-compact{
  --pad-card:15px; --gap-grid:12px; --gap-stack:10px; --row-h:38px;
  --fs-kpi:36px; --fs-sec:12px; --shell-pad:26px;
}

*{ box-sizing:border-box; }
html,body{ margin:0; height:100%; }
body{ background:var(--bg); color:var(--txt); font-family:var(--font);
  -webkit-font-smoothing:antialiased; font-variant-numeric:tabular-nums; }
::selection{ background:var(--red); color:#fff; }
a{ color:inherit; text-decoration:none; }
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-thumb{ background:#2a2422; border-radius:99px; border:2px solid var(--bg); }
::-webkit-scrollbar-track{ background:transparent; }

/* ============================================================ APP SHELL */
.app{ display:grid; grid-template-columns:248px 1fr; min-height:100vh; }
.app.density-compact{ grid-template-columns:224px 1fr; }

/* ---------------------------------------------------------------- SIDEBAR */
.sb{ background:var(--bg2); border-right:1px solid var(--line);
  display:flex; flex-direction:column; position:sticky; top:0; height:100vh; }
.sb__bar{ height:3px; background:var(--brandbar); }
.sb__brand{ display:flex; align-items:center; gap:10px; padding:20px 20px 18px; cursor:pointer; text-decoration:none; }
.sb__brand img{ height:24px; width:auto; display:block; }
.sb__brand .ptag{ font-size:10px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--dim); padding:3px 7px; border:1px solid var(--line); border-radius:var(--r-pill); }
.sb__nav{ display:flex; flex-direction:column; gap:2px; padding:6px 12px; overflow-y:auto; flex:1; }
.sb__grouplbl{ font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:var(--dim2); padding:16px 10px 7px; }
.nav{ display:flex; align-items:center; gap:11px; padding:9px 11px; border-radius:var(--r-md);
  color:var(--dim); font-weight:600; font-size:13.5px; cursor:pointer; position:relative;
  text-decoration:none; border:1px solid transparent; transition:background .12s,color .12s; }
.nav svg{ width:18px; height:18px; flex:0 0 auto; }
.nav:hover{ background:var(--card); color:var(--txt); }
.nav--active{ background:var(--card2); color:var(--txt); border-color:var(--line); }
.nav--active::before{ content:""; position:absolute; left:-12px; top:8px; bottom:8px; width:3px;
  background:var(--red); border-radius:0 3px 3px 0; }
.nav__badge{ margin-left:auto; min-width:20px; height:20px; padding:0 6px; border-radius:var(--r-pill);
  background:var(--red); color:#fff; font-size:11px; font-weight:800; display:grid; place-items:center; }
.nav__badge--muted{ background:var(--card3); color:var(--dim); }
.sb__foot{ border-top:1px solid var(--line); padding:14px; }

/* ----------------------------------------------------------- PERSON CHIP */
.person{ display:flex; align-items:center; gap:10px; padding:8px; border-radius:var(--r-md);
  cursor:pointer; }
.person:hover{ background:var(--card); }
.person__av{ width:34px; height:34px; border-radius:50%; flex:0 0 auto; display:grid; place-items:center;
  font-weight:800; font-size:14px; color:#fff; background:linear-gradient(135deg,#3a2020,#1c1817);
  border:1px solid var(--line); }
.person__meta{ min-width:0; }
.person__name{ font-weight:700; font-size:13.5px; line-height:1.15; }
.person__role{ font-size:11px; color:var(--dim); font-weight:600; }
.person__out{ margin-left:auto; color:var(--dim2); display:grid; place-items:center; }
.person__out:hover{ color:var(--red); }

/* ============================================================ MAIN COLUMN */
.main{ min-width:0; display:flex; flex-direction:column; }
.topbar{ display:flex; align-items:center; gap:16px; padding:18px var(--shell-pad);
  border-bottom:1px solid var(--line); position:sticky; top:0; background:rgba(10,10,10,.82);
  backdrop-filter:blur(14px); z-index:30; }
.topbar__t{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.topbar__eyebrow{ font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--gold-dim); }
.topbar__title{ font-size:21px; font-weight:800; line-height:1; }
.topbar__sub{ font-size:12.5px; color:var(--dim); font-weight:500; }
.topbar__spacer{ flex:1; }
.topbar__search{ display:flex; align-items:center; gap:9px; height:38px; padding:0 14px;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-pill);
  color:var(--dim); font-size:13px; min-width:220px; cursor:text; }
.topbar__search svg{ width:16px; height:16px; }
.topbar__search kbd{ margin-left:auto; font-family:var(--font); font-size:10px; font-weight:700;
  color:var(--dim2); border:1px solid var(--line); border-radius:4px; padding:1px 5px; }
.topbar__search input{ flex:1; min-width:0; background:transparent; border:0; outline:none;
  color:var(--txt); font-family:inherit; font-size:13px; padding:0; }
.topbar__search input::placeholder{ color:var(--dim); }
/* ── global search dropdown ───────────────────────────────────────────────── */
.gsearch{ position:relative; }
.gsearch__pop{ position:absolute; top:44px; right:0; width:360px; max-width:92vw; z-index:61;
  background:var(--card); border:1px solid var(--line); border-radius:12px; overflow:hidden;
  box-shadow:0 18px 50px rgba(0,0,0,.5); max-height:60vh; overflow-y:auto; }
.gsearch__item{ display:flex; align-items:center; gap:10px; padding:9px 13px; cursor:pointer;
  border-bottom:1px solid var(--line); }
.gsearch__item:last-child{ border-bottom:none; }
.gsearch__item--hi, .gsearch__item:hover{ background:var(--card2); }
.gsearch__body{ flex:1; min-width:0; }
.gsearch__name{ font-size:13px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gsearch__meta{ font-size:11.5px; color:var(--dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gsearch__empty{ padding:20px 14px; text-align:center; color:var(--dim); font-size:12.5px; }

/* ============================================================ MOBILE (drawer) */
.hamburger{ display:none; }
.sb__backdrop{ display:none; }
@media(max-width:860px){
  .app, .app.density-compact{ grid-template-columns:1fr; }
  .sb{ position:fixed; top:0; left:0; bottom:0; height:100vh; width:272px; max-width:84vw; z-index:90;
    transform:translateX(-100%); transition:transform .22s ease; box-shadow:0 0 40px rgba(0,0,0,.55); }
  .sb--open{ transform:translateX(0); }
  .sb__backdrop{ display:block; position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:80; }
  .hamburger{ display:grid; place-items:center; width:38px; height:38px; flex:0 0 auto;
    border-radius:var(--r-pill); background:var(--card); border:1px solid var(--line); color:var(--txt); cursor:pointer; }
  .topbar{ gap:10px; padding:12px 16px; }
  .topbar__t{ display:none; }
  .topbar__spacer{ display:none; }
  .topbar__search{ min-width:0; flex:1; }
  .topbar__search kbd{ display:none; }
  .scroll{ padding:16px; }
  .gsearch{ flex:1; }
  .gsearch__pop, .notif__pop{ position:fixed; left:8px; right:8px; top:62px; width:auto; max-width:none; }
}
@media(max-width:520px){
  .grid.col-2, .grid.col-3, .grid.col-4{ grid-template-columns:1fr; }
  .topbar__title{ font-size:17px; }
}
.iconbtn{ width:38px; height:38px; border-radius:var(--r-pill); display:grid; place-items:center;
  background:var(--card); border:1px solid var(--line); color:var(--dim); cursor:pointer; position:relative; }
.iconbtn:hover{ color:var(--txt); border-color:#3a302d; }
.iconbtn svg{ width:18px; height:18px; }
.iconbtn__dot{ position:absolute; top:8px; right:9px; width:7px; height:7px; border-radius:50%;
  background:var(--red); border:2px solid var(--card); }

.scroll{ padding:var(--shell-pad); overflow-y:auto; flex:1; }
.wrap{ max-width:1320px; margin:0 auto; }
/* partners list breaks out to the full content width (data-dense, benefits from the room) */
.wrap--wide{ max-width:none; }
/* tighter filter bar for the partners list: compact, content-width selects (NOT full-row) */
.toolbar--compact{ gap:8px; }
.toolbar--compact .fld-search{ height:34px; min-width:200px; flex:0 1 260px; }
.toolbar--compact .select{ width:150px; height:34px; flex:0 0 auto; }
.toolbar--compact .chip-flt{ height:28px; }
/* inline status picker — coloured badge opens a themed popover of status badges (no native select) */
.statussel{ position:relative; display:inline-flex; }
.statussel__btn{ display:inline-flex; align-items:center; gap:5px; padding:0; background:transparent;
  border:none; cursor:pointer; font:inherit; }
.statussel__btn:hover .statussel__caret{ color:var(--txt); }
.statussel__caret{ font-size:9px; color:var(--dim2); transition:color .12s; }
.statusmenu{ width:auto; min-width:152px; gap:1px; }
.statusmenu__item{ display:flex; align-items:center; padding:5px 8px; border-radius:var(--r-sm);
  background:transparent; border:none; cursor:pointer; }
.statusmenu__item:hover,.statusmenu__item.is-active{ background:var(--card3); }
.rowact__item.is-active{ background:var(--card3); }
/* in-header controls (partners list): filter + sort merged into the single header row */
.tbl tr.filterhead th{ padding:8px 10px; vertical-align:middle; }
.thcell{ display:flex; align-items:center; gap:6px; }
.thcell--num{ justify-content:flex-end; }
.thcell > .filterdd,.thcell > .filterrow__search{ flex:1; min-width:0; }
.sortbtn{ flex:0 0 auto; width:20px; height:24px; display:grid; place-items:center; border:none; background:transparent;
  color:var(--dim2); cursor:pointer; border-radius:var(--r-sm); font-size:10px; line-height:1; }
.sortbtn:hover{ background:var(--card3); color:var(--txt); }
.sortbtn.is-on{ color:var(--gold); }
.filterrow__search{ display:flex; align-items:center; gap:6px; height:30px; padding:0 9px; min-width:150px;
  background:var(--card2); border:1px solid var(--line); border-radius:var(--r-sm); }
.filterrow__search svg{ color:var(--dim); flex:0 0 auto; }
.filterrow__search input{ flex:1; min-width:0; background:none; border:none; outline:none; color:var(--txt); font-size:12.5px; }
.filterrow__search input::placeholder{ color:var(--dim2); }
.filterdd{ position:relative; display:inline-flex; width:100%; }
.filterdd__btn{ display:inline-flex; align-items:center; gap:6px; width:100%; min-width:96px; height:30px; padding:0 9px;
  background:var(--card2); border:1px solid var(--line); border-radius:var(--r-sm); cursor:pointer; color:var(--txt); font:inherit; font-size:12.5px; }
.filterdd__btn:hover{ color:var(--txt); }
.filterdd__btn.is-set{ border-color:var(--gold-dim); color:var(--gold); }
.filterdd__lbl{ flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:left; }
.filterdd__caret{ font-size:9px; color:var(--dim2); flex:0 0 auto; }
.filterdd__menu{ max-height:300px; overflow-y:auto; }
.filterdd__chk{ display:inline-block; width:13px; flex:0 0 auto; color:var(--gold); }
/* resizable columns (partners list): fixed layout + drag handle on each header */
.tbl--fixed{ table-layout:fixed; }
.tbl--fixed th,.tbl--fixed td{ overflow:hidden; text-overflow:ellipsis; }
.tbl--fixed .filterhead th{ position:relative; }
.colresize{ position:absolute; top:0; right:0; width:7px; height:100%; cursor:col-resize; z-index:3; }
.colresize:hover{ box-shadow:inset -2px 0 0 var(--gold-dim); }
body.col-resizing{ cursor:col-resize !important; user-select:none; }
/* pager footer under a paginated table */
.pager{ display:flex; align-items:center; gap:10px; padding:11px 14px; border-top:1px solid var(--line);
  font-size:12.5px; color:var(--dim); flex-wrap:wrap; }
.pager__size{ display:flex; align-items:center; gap:8px; }
.pager__size .select--sm{ width:auto; min-width:68px; }
.pager__cur{ min-width:58px; text-align:center; font-weight:700; color:var(--txt); }

/* ============================================================ TG BANNER */
.tgbanner{ display:flex; align-items:center; gap:16px; padding:16px 20px; margin-bottom:var(--gap-grid);
  border-radius:var(--r-lg); border:1px solid var(--line);
  background:linear-gradient(100deg,rgba(90,143,214,.14),rgba(28,24,23,.4) 60%); }
.tgbanner__ic{ width:42px; height:42px; border-radius:var(--r-md); flex:0 0 auto; display:grid;
  place-items:center; background:var(--blue-soft); color:var(--blue); }
.tgbanner__ic svg{ width:24px; height:24px; }
.tgbanner__t b{ font-size:14.5px; font-weight:800; }
.tgbanner__t p{ margin:3px 0 0; font-size:12.5px; color:var(--dim); }

/* ============================================================ LAYOUT GRID */
.grid{ display:grid; gap:var(--gap-grid); }
.col-2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.col-3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.col-4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
.col-hero{ grid-template-columns:1.6fr 1fr; align-items:start; }
.col-21{ grid-template-columns:2fr 1fr; align-items:start; }
.span-2{ grid-column:span 2; }
.stack{ display:flex; flex-direction:column; gap:var(--gap-grid); }
@media(max-width:1080px){
  .col-2,.col-3,.col-4,.col-hero,.col-21{ grid-template-columns:1fr; }
  .span-2{ grid-column:auto; }
}

/* ============================================================ CARD */
.card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
  padding:var(--pad-card); position:relative; }
.card--flush{ padding:0; overflow:hidden; }
.card--accent{ border-color:rgba(255,0,0,.28); }
.card--gold{ border-color:rgba(255,215,0,.32); background:linear-gradient(180deg,rgba(255,215,0,.05),transparent 60%),var(--card); }
.card__hd{ display:flex; align-items:center; gap:10px; margin-bottom:16px; }
.card__hd--flush{ padding:var(--pad-card) var(--pad-card) 0; margin-bottom:14px; }
.card__title{ font-size:var(--fs-sec); font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.card__title .accent{ color:var(--red); }
.card__hint{ font-size:11.5px; color:var(--dim); font-weight:500; }
.card__more{ margin-left:auto; font-size:11.5px; font-weight:700; color:var(--dim); text-transform:uppercase;
  letter-spacing:.04em; display:inline-flex; align-items:center; gap:4px; cursor:pointer; }
.card__more:hover{ color:var(--txt); }
.card__more--act:hover{ color:var(--gold); }
.card__more svg{ width:13px; height:13px; }

/* ── activity log (audit + live feed) ─────────────────────────────────────── */
.actday{ display:flex; align-items:center; gap:8px; padding:10px 18px; font-size:11.5px; font-weight:800;
  text-transform:uppercase; letter-spacing:.04em; color:var(--dim); border-bottom:1px solid var(--line); }
.actday__n{ background:var(--card2); color:var(--dim); border-radius:99px; padding:1px 8px; font-size:11px; font-weight:700; }
.actrow{ display:flex; align-items:flex-start; gap:11px; padding:10px 18px; border-bottom:1px solid var(--line); }
.actrow:last-child{ border-bottom:none; }
.actrow:hover{ background:var(--card2); }
.actrow--prob{ box-shadow:inset 3px 0 0 var(--red); background:var(--red-soft); }
.actrow__time{ font-size:11.5px; color:var(--dim); font-variant-numeric:tabular-nums; min-width:36px; padding-top:4px; flex:0 0 auto; }
.actrow__body{ flex:1; min-width:0; }
.actrow__l1{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:12.5px; }
.actrow__who{ display:inline-flex; align-items:center; gap:6px; font-weight:700; }
.actrow__av{ width:20px; height:20px; font-size:9px; }
.actrow__act{ display:inline-flex; align-items:center; gap:5px; color:var(--dim); }
.actrow__on{ font-weight:700; color:var(--txt); cursor:pointer; text-decoration:none; }
.actrow__on:hover{ color:var(--gold); }
.actrow__msg{ font-size:12.5px; color:var(--txt); margin-top:4px; line-height:1.5; opacity:.85; }
.touch__ic--sys{ background:var(--card2); color:var(--dim); }

/* ── geo coverage table ───────────────────────────────────────────────────── */
.tbl__tot td{ border-top:2px solid var(--line); }
.tbl tr.is-open{ background:var(--card2); }
.geofocus{ padding:14px 18px; background:var(--card2); }
.geofocus__hd{ display:flex; align-items:center; gap:10px; font-weight:800; font-size:13px; margin-bottom:12px; }
.geofocus__hd .muted{ font-weight:600; font-size:12px; }

/* ── tasks ────────────────────────────────────────────────────────────────── */
.tasklist{ }
.taskrow{ display:flex; align-items:center; gap:12px; padding:11px 18px; border-bottom:1px solid var(--line); }
.taskrow:last-child{ border-bottom:none; }
.taskrow:hover{ background:var(--card2); }
.taskrow--done{ opacity:.55; }
.taskrow--done .taskrow__title{ text-decoration:line-through; }
.taskcheck{ width:20px; height:20px; flex:0 0 auto; border-radius:6px; border:2px solid var(--line);
  background:transparent; cursor:pointer; display:grid; place-items:center; color:#0a0a0a; padding:0; }
.taskcheck:hover{ border-color:var(--green); }
.taskcheck--on{ background:var(--green); border-color:var(--green); }
.taskrow__body{ flex:1; min-width:0; }
.taskrow__title{ font-size:13.5px; font-weight:600; }
.taskrow__meta{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:12px; margin-top:3px; }
.taskrow__due{ font-size:12px; color:var(--dim); font-weight:700; flex:0 0 auto; }
.taskrow__due--over{ color:var(--red); }

/* ── notifications bell ───────────────────────────────────────────────────── */
.notif{ position:relative; }
.notif__badge{ position:absolute; top:-3px; right:-3px; min-width:16px; height:16px; padding:0 4px;
  border-radius:99px; background:var(--red); color:#fff; font-size:10px; font-weight:800;
  display:grid; place-items:center; box-shadow:0 0 0 2px var(--bg); }
.notif__ov{ position:fixed; inset:0; z-index:60; }
.notif__pop{ position:absolute; top:42px; right:0; width:340px; max-width:90vw; z-index:61;
  background:var(--card); border:1px solid var(--line); border-radius:12px; overflow:hidden;
  box-shadow:0 18px 50px rgba(0,0,0,.5); }
.notif__hd{ display:flex; align-items:center; justify-content:space-between; padding:12px 14px;
  border-bottom:1px solid var(--line); font-size:13px; }
.notif__list{ max-height:60vh; overflow:auto; }
.notif__item{ display:flex; align-items:flex-start; gap:10px; padding:10px 14px; cursor:pointer;
  border-bottom:1px solid var(--line); }
.notif__item:last-child{ border-bottom:none; }
.notif__item:hover{ background:var(--card2); }
.notif__ic{ width:24px; height:24px; border-radius:7px; display:grid; place-items:center; flex:0 0 auto;
  background:var(--card2); color:var(--dim); }
.notif__ic--inbound{ background:var(--red-soft); color:#ff7a7a; }
.notif__ic--overdue{ background:var(--gold-soft); color:var(--gold); }
.notif__ic--assigned{ background:rgba(90,140,255,.14); color:#7aa2ff; }
.notif__body{ flex:1; min-width:0; }
.notif__t{ font-size:13px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.notif__s{ font-size:11.5px; color:var(--dim); margin-top:1px; }
.notif__when{ font-size:11px; color:var(--dim); flex:0 0 auto; }
.notif__empty{ display:flex; flex-direction:column; align-items:center; gap:8px; padding:28px 14px;
  color:var(--dim); font-size:12.5px; }
.notif__empty svg{ color:var(--green); }

/* ── bulk action bar (partners list) ──────────────────────────────────────── */
.bulkbar{ display:flex; align-items:center; gap:10px; padding:10px 14px; background:var(--gold-soft);
  border:1px solid rgba(255,215,0,.25); border-radius:10px; }
.bulkbar__n{ font-size:13px; font-weight:800; color:var(--gold); }
.pipe__bar{ height:54px; display:flex; align-items:flex-end; margin-top:8px; }
.pipe__barfill{ width:100%; background:var(--gold-dim); border-radius:4px 4px 0 0; min-height:4px; }
.eyebadge{ width:26px; height:26px; border-radius:var(--r-sm); display:grid; place-items:center; flex:0 0 auto; }
.eyebadge svg{ width:15px; height:15px; }
.eyebadge--red{ background:var(--red-soft); color:#ff5a5a; }
.eyebadge--gold{ background:var(--gold-soft); color:var(--gold); }
.eyebadge--green{ background:var(--green-soft); color:var(--green); }
.eyebadge--blue{ background:var(--blue-soft); color:var(--blue); }

/* ============================================================ KPI / STAT */
.kpi__val{ font-size:var(--fs-kpi); font-weight:800; line-height:.95; letter-spacing:-.01em; }
.kpi__val .unit{ font-size:.46em; color:var(--dim); font-weight:700; margin-left:4px; }
.kpi__lbl{ font-size:12px; color:var(--dim); font-weight:600; margin-top:6px; }
.kpi--gold .kpi__val{ color:var(--gold); }
.kpi--green .kpi__val{ color:var(--green); }
.kpi--red .kpi__val{ color:#ff5a5a; }
.stat{ display:flex; flex-direction:column; gap:2px; }
.stat__v{ font-size:26px; font-weight:800; line-height:1; }
.stat__l{ font-size:11.5px; color:var(--dim); font-weight:600; }
.statgrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px 18px; }

/* ============================================================ BADGE */
.badge{ display:inline-flex; align-items:center; gap:6px; height:22px; padding:0 9px;
  border-radius:var(--r-pill); font-size:11px; font-weight:700; letter-spacing:.01em;
  border:1px solid transparent; white-space:nowrap; }
.badge::before{ content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }
.badge--lead{ color:var(--dim); background:rgba(146,138,133,.12); border-color:rgba(146,138,133,.25); }
.badge--contacted{ color:var(--gold); background:var(--gold-soft); border-color:rgba(255,215,0,.28); }
.badge--replied,.badge--negotiating{ color:var(--green); background:var(--green-soft); border-color:rgba(63,191,134,.3); }
.badge--signed{ color:#fff; background:var(--green-deep); border-color:var(--green-deep); }
.badge--signed::before{ background:#fff; }
.badge--dead,.badge--declined,.badge--disqualified{ color:#d77; background:rgba(255,0,0,.08); border-color:rgba(255,0,0,.22); }

/* ============================================================ PARTNER ROW / CARD */
.plist{ display:flex; flex-direction:column; }
.prow{ display:flex; align-items:center; gap:14px; padding:13px var(--pad-card);
  border-top:1px solid var(--line); cursor:pointer; transition:background .12s; }
.prow:first-child{ border-top:none; }
.prow:hover{ background:var(--card2); }
.prow__av{ width:38px; height:38px; border-radius:var(--r-md); flex:0 0 auto; display:grid; place-items:center;
  font-weight:800; font-size:13px; background:var(--card3); color:var(--txt); border:1px solid var(--line); }
.prow__main{ min-width:0; flex:1; }
.prow__l1{ display:flex; align-items:center; gap:8px; }
.prow__name{ font-weight:700; font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  color:inherit; text-decoration:none; }
a.prow__name:hover{ color:var(--red); }
.geo{ font-size:10px; font-weight:800; letter-spacing:.04em; color:var(--dim); padding:1px 6px;
  border:1px solid var(--line); border-radius:4px; flex:0 0 auto; }
.prow__msg{ font-size:12.5px; color:var(--dim); margin-top:3px; white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis; }
.prow__msg .quote{ color:var(--txt); }
.prow__when{ font-size:11.5px; color:var(--dim2); font-weight:600; flex:0 0 auto; text-align:right; }
.prow__cta{ flex:0 0 auto; }

.btn{ display:inline-flex; align-items:center; justify-content:center; gap:7px; height:36px; padding:0 16px;
  border-radius:var(--r-md); font-family:var(--font); font-weight:800; font-size:13px; cursor:pointer;
  border:1px solid transparent; white-space:nowrap; text-decoration:none; transition:filter .12s,background .12s; }
.btn svg{ width:15px; height:15px; }
.btn--primary{ background:var(--red); color:#fff; box-shadow:0 6px 18px rgba(255,0,0,.26); }
.btn--primary:hover{ filter:brightness(1.08); }
.btn--ghost{ background:var(--card2); color:var(--txt); border-color:var(--line); }
.btn--ghost:hover{ border-color:#3a302d; }
.btn--gold{ background:var(--gold); color:#1a1405; }
.btn--gold:hover{ filter:brightness(1.05); }
.btn--sm{ height:30px; padding:0 12px; font-size:12px; }
.btn--block{ width:100%; }
.btn--danger{ background:var(--red-soft); color:#ff6a6a; border-color:rgba(255,0,0,.35); }
.btn--danger:hover{ background:var(--red-deep); color:#fff; border-color:var(--red-deep); }

/* row actions (kebab menu in tables) */
.tbl td.tbl__act{ padding:6px 8px; text-align:right; }
.rowact{ position:relative; display:inline-flex; }
.rowact__btn{ display:grid; place-items:center; width:28px; height:28px; border-radius:var(--r-sm);
  background:transparent; border:1px solid transparent; color:var(--dim); cursor:pointer; }
.rowact__btn:hover{ background:var(--card3); color:var(--txt); border-color:var(--line); }
.rowact__menu{ z-index:60; width:208px; background:var(--card2); border:1px solid var(--line);
  border-radius:var(--r-md); box-shadow:0 14px 34px rgba(0,0,0,.5); padding:5px;
  display:flex; flex-direction:column; }
.rowact__item{ display:flex; align-items:center; gap:9px; padding:8px 10px; border-radius:var(--r-sm);
  background:transparent; border:none; cursor:pointer; font-family:var(--font); font-size:12.5px;
  font-weight:600; color:var(--txt); text-align:left; text-decoration:none; white-space:nowrap; }
.rowact__item:hover{ background:var(--card3); }
.rowact__item svg{ color:var(--dim); flex:0 0 auto; }
.rowact__item--danger{ color:#ff6a6a; }
.rowact__item--danger svg{ color:#ff6a6a; }
.rowact__item--danger:hover{ background:var(--red-soft); }

/* ============================================================ SEND / LIMIT */
.send{ display:flex; flex-direction:column; gap:14px; }
.send__top{ display:flex; align-items:baseline; gap:8px; }
.send__big{ font-size:var(--fs-kpi); font-weight:800; line-height:.9; }
.send__big .of{ color:var(--dim); font-size:.5em; font-weight:700; }
.meter{ height:10px; border-radius:var(--r-pill); background:var(--card3); overflow:hidden; display:flex; }
.meter__fill{ height:100%; background:linear-gradient(90deg,var(--red-deep),var(--red)); border-radius:var(--r-pill); }
.send__meta{ display:flex; justify-content:space-between; font-size:12px; color:var(--dim); font-weight:600; }
.send__meta b{ color:var(--txt); }
.limitbox{ display:flex; align-items:center; gap:14px; padding:16px; border-radius:var(--r-md);
  background:var(--gold-soft); border:1px solid rgba(255,215,0,.3); }
.limitbox__ic{ width:40px; height:40px; border-radius:var(--r-md); flex:0 0 auto; display:grid; place-items:center;
  background:rgba(255,215,0,.16); color:var(--gold); }
.limitbox b{ font-size:14px; font-weight:800; color:var(--gold); }
.limitbox p{ margin:2px 0 0; font-size:12px; color:var(--dim); }

/* ============================================================ REMINDERS */
.rem{ display:flex; align-items:center; gap:12px; padding:11px 0; border-top:1px solid var(--line); }
.rem:first-child{ border-top:none; }
.rem__dot{ width:9px; height:9px; border-radius:50%; flex:0 0 auto; }
.rem__dot--over{ background:var(--red); box-shadow:0 0 0 4px var(--red-soft); }
.rem__dot--up{ background:var(--gold); box-shadow:0 0 0 4px var(--gold-soft); }
.rem__main{ flex:1; min-width:0; }
.rem__name{ font-weight:700; font-size:13.5px; }
.rem__sub{ font-size:11.5px; color:var(--dim); margin-top:2px; }
.rem__sub--over{ color:#e06a6a; }

/* ============================================================ FUNNEL */
.funnel{ display:flex; flex-direction:column; gap:9px; }
.fstage{ display:flex; align-items:center; gap:14px; }
.fstage__lbl{ width:96px; flex:0 0 auto; font-size:12.5px; font-weight:700; color:var(--dim); }
.fstage__track{ flex:1; height:30px; background:var(--card3); border-radius:var(--r-sm); overflow:hidden; position:relative; }
.fstage__bar{ height:100%; border-radius:var(--r-sm); display:flex; align-items:center; padding:0 11px;
  font-weight:800; font-size:13px; color:#fff; min-width:34px; transition:width .5s cubic-bezier(.2,.7,.2,1); }
.fstage__pct{ width:46px; flex:0 0 auto; text-align:right; font-size:12px; font-weight:700; color:var(--dim); }

/* ============================================================ TABLE */
.tbl{ width:100%; border-collapse:collapse; font-size:13px; }
.tbl th{ text-align:left; font-size:10.5px; font-weight:800; letter-spacing:.07em; text-transform:uppercase;
  color:var(--dim2); padding:0 14px 11px; border-bottom:1px solid var(--line); white-space:nowrap; }
.tbl th.num,.tbl td.num{ text-align:right; }
.tbl td{ padding:12px 14px; border-bottom:1px solid var(--line); height:var(--row-h); }
.tbl tr:last-child td{ border-bottom:none; }
.tbl tbody tr{ cursor:pointer; }
.tbl tbody tr:hover td{ background:var(--card2); }
.tbl__name{ display:flex; align-items:center; gap:10px; font-weight:700; color:inherit; text-decoration:none; }
.tbl__name:hover{ color:var(--red); }
.tbl__av{ width:30px; height:30px; border-radius:var(--r-sm); display:grid; place-items:center; flex:0 0 auto;
  font-size:11px; font-weight:800; background:var(--card3); border:1px solid var(--line); }
.tbl__rank{ width:22px; color:var(--dim2); font-weight:800; text-align:center; }
.tbl__rank--1{ color:var(--gold); }
.tblwrap{ overflow-x:auto; }
/* assignment indicators in the partners list */
.owntag{ display:inline-flex; align-items:center; gap:7px; font-size:12.5px; font-weight:600; color:var(--txt); white-space:nowrap; }
.owntag__av{ width:22px; height:22px; border-radius:var(--r-sm); display:grid; place-items:center; flex:0 0 auto;
  font-size:9.5px; font-weight:800; background:var(--card3); border:1px solid var(--line); color:var(--dim); }
.freetag{ display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:700; color:var(--gold); white-space:nowrap; }
.dot{ width:7px; height:7px; border-radius:50%; flex:0 0 auto; }
.dot--free{ background:var(--gold); box-shadow:0 0 0 3px var(--gold-soft); }
.chip-flt{ display:inline-flex; align-items:center; gap:7px; height:30px; padding:0 11px; border-radius:var(--r-pill);
  background:var(--card2); border:1px solid var(--line); color:var(--dim); font-family:var(--font);
  font-size:12px; font-weight:700; cursor:pointer; white-space:nowrap; }
.chip-flt:hover{ color:var(--txt); border-color:#3a302d; }
.chip-flt--on{ color:var(--gold); border-color:var(--gold-dim); background:var(--gold-soft); }
/* base-quality summary strip (file-import) */
.qstat{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.qstat__c{ background:var(--card2); border:1px solid var(--line); border-radius:var(--r-md); padding:14px 16px; }
.qstat__v{ font-size:26px; font-weight:800; line-height:1; }
.qstat__l{ margin-top:6px; font-size:11.5px; font-weight:600; color:var(--dim); }
@media (max-width:640px){ .qstat{ grid-template-columns:repeat(2,1fr); } }
.you-tag{ font-size:9.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--red);
  border:1px solid rgba(255,0,0,.3); border-radius:4px; padding:1px 5px; }

/* mini bar inside cells (reply-rate etc.) */
.minibar{ display:flex; align-items:center; gap:9px; justify-content:flex-end; }
.minibar__track{ width:64px; height:6px; border-radius:99px; background:var(--card3); overflow:hidden; }
.minibar__fill{ height:100%; border-radius:99px; background:var(--green); }
.minibar__v{ font-weight:700; width:40px; text-align:right; }

/* ============================================================ TREND CHART */
.trend{ display:flex; align-items:flex-end; gap:6px; height:120px; padding-top:8px; }
.tcol{ flex:1; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; gap:2px;
  height:100%; position:relative; }
.tcol__bars{ width:100%; display:flex; gap:3px; align-items:flex-end; justify-content:center; flex:1; }
.tbar{ width:7px; border-radius:3px 3px 0 0; transition:height .4s; }
.tbar--out{ background:#4a3f3c; }
.tbar--in{ background:var(--green); }
.tcol__d{ font-size:9px; color:var(--dim2); font-weight:600; }
.legend{ display:flex; gap:16px; font-size:11.5px; color:var(--dim); font-weight:600; }
.legend i{ width:9px; height:9px; border-radius:2px; display:inline-block; margin-right:6px; vertical-align:middle; }

/* deals pipeline (stage columns) */
.pipe{ display:grid; grid-auto-flow:column; grid-auto-columns:1fr; gap:10px; }
.pipe__col{ background:var(--card2); border:1px solid var(--line); border-radius:var(--r-md); padding:13px; }
.pipe__h{ font-size:10.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--dim);
  display:flex; justify-content:space-between; align-items:center; gap:6px; margin-bottom:10px; }
.pipe__h>span:first-child{ min-width:0; overflow:hidden; text-overflow:ellipsis; }
.pipe__n{ color:var(--txt); flex:0 0 auto; }
.pipe__chip{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-sm); padding:9px 10px;
  margin-top:7px; font-size:12px; font-weight:600; }
.pipe__chip .rs{ color:var(--gold); font-weight:800; font-size:11px; }

/* deal row (aff onboarding) */
.deal{ display:flex; align-items:center; gap:12px; padding:12px 0; border-top:1px solid var(--line);
  color:inherit; text-decoration:none; cursor:pointer; }
.deal:hover .deal__name{ color:var(--red); }
.deal:first-child{ border-top:none; }
.deal__main{ flex:1; min-width:0; }
.deal__name{ font-weight:700; font-size:13.5px; }
.deal__stage{ font-size:11.5px; color:var(--dim); margin-top:2px; }
.deal__nums{ display:flex; gap:16px; flex:0 0 auto; text-align:right; }
.deal__num b{ font-size:15px; font-weight:800; display:block; }
.deal__num.gold b{ color:var(--gold); }
.deal__num span{ font-size:10px; color:var(--dim); font-weight:600; text-transform:uppercase; letter-spacing:.05em; }

/* touches feed */
.touch{ display:flex; align-items:center; gap:11px; padding:9px 0; border-top:1px solid var(--line); font-size:12.5px; }
.touch:first-child{ border-top:none; }
.touch__ic{ width:26px; height:26px; border-radius:var(--r-sm); display:grid; place-items:center; flex:0 0 auto; }
.touch__ic svg{ width:14px; height:14px; }
.touch__ic--out{ background:var(--card3); color:var(--dim); }
.touch__ic--in{ background:var(--green-soft); color:var(--green); }
.touch__txt{ flex:1; min-width:0; }
.touch__txt b{ font-weight:700; }
.touch__when{ color:var(--dim2); font-size:11px; font-weight:600; }

/* discovery / system tiles */
.dtile{ display:flex; flex-direction:column; gap:4px; padding:15px; background:var(--card2);
  border:1px solid var(--line); border-radius:var(--r-md); }
.dtile__v{ font-size:30px; font-weight:800; line-height:1; }
.dtile__l{ font-size:11.5px; color:var(--dim); font-weight:600; }
.watch{ display:flex; align-items:center; gap:10px; padding:10px 0; border-top:1px solid var(--line); }
.watch:first-child{ border-top:none; }
.watch__dot{ width:9px; height:9px; border-radius:50%; }
.watch__dot--ok{ background:var(--green); box-shadow:0 0 0 4px var(--green-soft); }
.watch__dot--off{ background:var(--dim2); }
.watch__name{ font-weight:700; font-size:13px; flex:1; }
.watch__st{ font-size:11px; font-weight:700; color:var(--green); }
.watch__st--off{ color:var(--dim2); }
.statusline{ display:flex; align-items:center; gap:10px; font-size:12.5px; color:var(--dim); font-weight:600; }
.statusline .ok{ color:var(--green); font-weight:800; }

/* assignment buttons */
.assign{ display:flex; flex-direction:column; gap:9px; }
.assignrow{ display:flex; align-items:center; gap:11px; padding:11px 13px; background:var(--card2);
  border:1px solid var(--line); border-radius:var(--r-md); cursor:pointer; }
.assignrow:hover{ border-color:#3a302d; }
.assignrow svg{ width:17px; height:17px; color:var(--dim); }
.assignrow__t{ flex:1; }
.assignrow__t b{ font-size:13.5px; font-weight:700; display:block; }
.assignrow__t span{ font-size:11.5px; color:var(--dim); }

/* ============================================================ STATES */
.skel{ background:linear-gradient(90deg,var(--card2) 25%,var(--card3) 37%,var(--card2) 63%);
  background-size:400% 100%; animation:shimmer 1.4s ease infinite; border-radius:var(--r-sm); }
@keyframes shimmer{ 0%{ background-position:100% 0; } 100%{ background-position:-100% 0; } }
.skel-line{ height:12px; margin:7px 0; }
.skel-row{ display:flex; align-items:center; gap:14px; padding:13px var(--pad-card); border-top:1px solid var(--line); }
.skel-row:first-child{ border-top:none; }

.empty{ text-align:center; padding:34px 24px; }
.empty__ic{ width:54px; height:54px; border-radius:var(--r-lg); display:grid; place-items:center; margin:0 auto 16px;
  background:var(--card2); border:1px solid var(--line); color:var(--gold); }
.empty__ic svg{ width:26px; height:26px; }
.empty__t{ font-size:16px; font-weight:800; }
.empty__p{ font-size:13px; color:var(--dim); margin:7px auto 18px; max-width:340px; line-height:1.5; }
.empty__cta{ display:flex; gap:10px; justify-content:center; }

.errcard{ display:flex; align-items:center; gap:16px; padding:20px; border-radius:var(--r-lg);
  background:var(--card); border:1px solid rgba(255,0,0,.22); }
.errcard__ic{ width:42px; height:42px; border-radius:var(--r-md); flex:0 0 auto; display:grid; place-items:center;
  background:var(--red-soft); color:#ff6a6a; }
.errcard b{ font-size:14px; font-weight:800; }
.errcard p{ margin:3px 0 0; font-size:12.5px; color:var(--dim); }
.errcard .btn{ margin-left:auto; }

/* small util */
.muted{ color:var(--dim); }
.mt-grid{ margin-top:var(--gap-grid); }
.sec-title{ font-size:11px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--dim2);
  margin:26px 0 14px; display:flex; align-items:center; gap:12px; }
.sec-title::after{ content:""; flex:1; height:1px; background:var(--line); }
.row-between{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.nav{ -webkit-user-select:none; user-select:none; }

/* ====================================================================================
   CRM SCREENS — forms · filters · kanban · stepper · tabs · copy · flash · info
   (additive; reuses tokens + patterns above)
   ==================================================================================== */

/* ---------------------------------------------------------------- PAGE HEADER (back) */
.pagehd{ display:flex; align-items:center; gap:14px; margin-bottom:var(--gap-grid); }
.pagehd__t{ min-width:0; }
.pagehd__t h1{ margin:0; font-size:22px; font-weight:800; line-height:1.1; }
.pagehd__t p{ margin:4px 0 0; font-size:13px; color:var(--dim); font-weight:500; }
.pagehd__sp{ flex:1; }
.backbtn{ width:38px; height:38px; flex:0 0 auto; border-radius:var(--r-md); display:grid; place-items:center;
  background:var(--card2); border:1px solid var(--line); color:var(--dim); cursor:pointer; }
.backbtn:hover{ color:var(--txt); border-color:#3a302d; }
.backbtn svg{ width:18px; height:18px; transform:rotate(180deg); }

/* ---------------------------------------------------------------- TOOLBAR / FILTERS */
.toolbar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:var(--gap-grid); }
.toolbar__sp{ flex:1; }
.fld-search{ display:flex; align-items:center; gap:9px; height:40px; padding:0 14px; min-width:240px;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-pill); color:var(--dim); }
.fld-search svg{ width:16px; height:16px; flex:0 0 auto; }
.fld-search input{ flex:1; background:none; border:none; outline:none; color:var(--txt);
  font-family:var(--font); font-size:13px; min-width:0; }
.fld-search input::placeholder{ color:var(--dim2); }

.seg{ display:inline-flex; background:var(--card2); border:1px solid var(--line); border-radius:var(--r-pill); padding:3px; }
.seg__b{ padding:7px 15px; border-radius:var(--r-pill); font-size:12.5px; font-weight:700; color:var(--dim);
  cursor:pointer; white-space:nowrap; transition:color .12s,background .12s; }
.seg__b--on{ background:var(--card3); color:var(--txt); box-shadow:inset 0 0 0 1px var(--line); }

/* ---------------------------------------------------------------- FORM FIELDS */
.form{ display:flex; flex-direction:column; gap:18px; }
.fgrid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.fgrid--3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
@media(max-width:760px){ .fgrid,.fgrid--3{ grid-template-columns:1fr; } }
.field{ display:flex; flex-direction:column; gap:7px; min-width:0; }
.field__lbl{ font-size:11.5px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:var(--dim); }
.field__lbl .req{ color:var(--red); margin-left:2px; }
.field__hint{ font-size:11px; color:var(--dim2); font-weight:500; }
.input,.select,.textarea{ width:100%; background:var(--card2); border:1px solid var(--line); border-radius:var(--r-md);
  color:var(--txt); font-family:var(--font); font-size:13.5px; font-weight:500; transition:border-color .12s,box-shadow .12s; }
.input,.select{ height:42px; padding:0 13px; }
.input--sm,.select--sm{ height:38px; font-size:13px; }
.textarea{ padding:11px 13px; min-height:92px; resize:vertical; line-height:1.55; }
.input::placeholder,.textarea::placeholder{ color:var(--dim2); }
.input:focus,.select:focus,.textarea:focus{ outline:none; border-color:var(--red);
  box-shadow:0 0 0 3px var(--red-soft); }
.select{ appearance:none; cursor:pointer; padding-right:34px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23928a85' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");
  background-repeat:no-repeat; background-position:right 12px center; }

/* multi-select chips (traffic sources etc.) */
.chips{ display:flex; flex-wrap:wrap; gap:8px; }
.chip{ display:inline-flex; align-items:center; gap:8px; padding:8px 13px; border-radius:var(--r-pill);
  border:1px solid var(--line); background:var(--card2); font-size:12.5px; font-weight:700; color:var(--dim);
  cursor:pointer; transition:all .12s; }
.chip:hover{ color:var(--txt); border-color:#3a302d; }
.chip__tick{ width:14px; height:14px; border-radius:4px; border:1.5px solid var(--dim2); display:grid; place-items:center; flex:0 0 auto; }
.chip__tick svg{ width:10px; height:10px; opacity:0; }
.chip--on{ color:var(--txt); border-color:rgba(255,0,0,.5); background:var(--red-soft); }
.chip--on .chip__tick{ background:var(--red); border-color:var(--red); }
.chip--on .chip__tick svg{ opacity:1; color:#fff; }

.formfoot{ display:flex; align-items:center; gap:12px; padding-top:18px; margin-top:4px; border-top:1px solid var(--line); }
.formfoot .muted{ font-size:12px; }

/* ---------------------------------------------------------------- TIER BADGE */
.tier{ font-size:10px; font-weight:800; letter-spacing:.03em; padding:2px 7px; border-radius:4px;
  border:1px solid; white-space:nowrap; }
.tier--T1{ color:var(--gold); border-color:rgba(255,215,0,.4); background:var(--gold-soft); }
.tier--T2{ color:var(--blue); border-color:rgba(90,143,214,.4); background:var(--blue-soft); }
.tier--T3{ color:var(--dim); border-color:var(--line); background:var(--card3); }
.tier--official{ color:#fff; background:var(--red-deep); border-color:var(--red-deep); }

/* ---------------------------------------------------------------- COPY / CONTACT */
.mono{ font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace; font-size:12.5px; }
.contact{ display:inline-flex; align-items:center; gap:8px; }
.copybtn{ display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 11px; border-radius:var(--r-sm);
  background:var(--card3); border:1px solid var(--line); color:var(--dim); font-size:11.5px; font-weight:700;
  cursor:pointer; font-family:var(--font); transition:color .12s,border-color .12s; }
.copybtn svg{ width:13px; height:13px; }
.copybtn:hover{ color:var(--txt); border-color:#3a302d; }
.copybtn--done{ color:var(--green); border-color:rgba(63,191,134,.35); }
.copybtn--ghost{ background:transparent; }

/* ---------------------------------------------------------------- SNIPPET / READBOX */
.snippet{ background:var(--card2); border:1px solid var(--line); border-radius:var(--r-md); padding:14px; }
.snippet+.snippet{ margin-top:12px; }
.snippet__hd{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.snippet__lbl{ font-size:12.5px; font-weight:800; }
.snippet__tag{ font-size:11px; color:var(--dim); font-weight:600; }
.snippet__sp{ flex:1; }
.readbox{ background:var(--bg2); border:1px solid var(--line); border-radius:var(--r-sm); padding:12px 13px;
  font-size:13px; line-height:1.6; color:var(--txt); white-space:pre-wrap; word-break:break-word; }
.snippet__note{ font-size:11.5px; color:var(--dim); margin-top:9px; display:flex; align-items:center; gap:7px; }
.snippet__note::before{ content:""; width:4px; height:4px; border-radius:50%; background:var(--gold); flex:0 0 auto; }

/* ---------------------------------------------------------------- INFO TABLE (card) */
.info{ width:100%; border-collapse:collapse; }
.info td{ padding:10px 0; border-top:1px solid var(--line); vertical-align:top; font-size:13px; }
.info tr:first-child td{ border-top:none; }
.info__k{ color:var(--dim); width:128px; font-weight:600; padding-right:14px; white-space:nowrap; }
.info__v{ font-weight:600; color:var(--txt); }

/* ---------------------------------------------------------------- KANBAN BOARD */
.board{ display:grid; grid-auto-flow:column; grid-auto-columns:minmax(212px,1fr); gap:13px;
  overflow-x:auto; padding-bottom:10px; align-items:start; }
.bcol{ background:var(--bg2); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; }
.bcol__top{ height:3px; }
.bcol__h{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:13px 14px 11px; }
.bcol__h b{ font-size:11.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; }
.bcol__n{ min-width:20px; height:20px; padding:0 6px; border-radius:var(--r-pill); background:var(--card3);
  color:var(--dim); font-size:11px; font-weight:800; display:grid; place-items:center; }
.bcol__body{ padding:0 11px 12px; display:flex; flex-direction:column; gap:9px; max-height:560px; overflow-y:auto; }
.bcard{ display:block; background:var(--card); border:1px solid var(--line); border-radius:var(--r-md); padding:12px; cursor:pointer;
  color:inherit; text-decoration:none; transition:border-color .12s,transform .12s; }
.bcard:hover{ border-color:#3a302d; transform:translateY(-1px); }
.bcard__top{ display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.bcard__name{ font-weight:700; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bcard__meta{ font-size:11.5px; color:var(--dim); font-weight:600; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.bcard__meta .rs{ color:var(--gold); font-weight:800; }
.bcol--empty{ font-size:11.5px; color:var(--dim2); text-align:center; padding:14px 0; }

/* ---------------------------------------------------------------- STEPPER (onboarding) */
.stepper{ display:flex; align-items:flex-start; margin:4px 0 18px; }
.step{ flex:1; display:flex; flex-direction:column; align-items:center; gap:8px; position:relative; text-align:center; }
.step::before{ content:""; position:absolute; top:15px; left:-50%; width:100%; height:2px; background:var(--line); z-index:0; }
.step:first-child::before{ display:none; }
.step__dot{ width:32px; height:32px; border-radius:50%; display:grid; place-items:center; font-size:12px; font-weight:800;
  background:var(--card3); border:1px solid var(--line); color:var(--dim); position:relative; z-index:1; }
.step__dot svg{ width:15px; height:15px; }
.step__lbl{ font-size:10.5px; font-weight:700; color:var(--dim); line-height:1.2; max-width:78px; }
.step--done .step__dot{ background:var(--green-deep); border-color:var(--green-deep); color:#fff; }
.step--done::before{ background:var(--green-deep); }
.step--cur .step__dot{ background:var(--red); border-color:var(--red); color:#fff; box-shadow:0 0 0 4px var(--red-soft); }
.step--cur::before{ background:linear-gradient(90deg,var(--green-deep),var(--red)); }
.step--cur .step__lbl{ color:var(--txt); }

/* ---------------------------------------------------------------- TABS */
.tabs{ display:flex; gap:2px; border-bottom:1px solid var(--line); margin-bottom:20px; flex-wrap:wrap; }
.tab{ padding:11px 17px; font-size:13px; font-weight:700; color:var(--dim); cursor:pointer;
  border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .12s; }
.tab:hover{ color:var(--txt); }
.tab--on{ color:var(--txt); border-bottom-color:var(--red); }

/* ---------------------------------------------------------------- FLASH TOAST + WARN BAR */
.flash{ position:fixed; top:18px; right:18px; z-index:200; display:flex; align-items:center; gap:12px;
  padding:13px 16px 13px 15px; border-radius:var(--r-md); background:var(--card2);
  border:1px solid rgba(63,191,134,.4); box-shadow:0 14px 44px rgba(0,0,0,.55); max-width:400px;
  animation:flashin .26s cubic-bezier(.2,.8,.2,1); }
@keyframes flashin{ from{ opacity:0; transform:translateY(-10px); } }
.flash__ic{ width:30px; height:30px; border-radius:var(--r-sm); display:grid; place-items:center; flex:0 0 auto;
  background:var(--green-soft); color:var(--green); }
.flash__ic svg{ width:17px; height:17px; }
.flash__t{ font-size:13px; font-weight:700; }
.flash__x{ margin-left:8px; color:var(--dim2); cursor:pointer; display:grid; place-items:center; }
.flash__x:hover{ color:var(--txt); }
.warnbar{ display:flex; align-items:center; gap:14px; padding:14px 18px; border-radius:var(--r-lg);
  background:var(--gold-soft); border:1px solid rgba(255,215,0,.32); margin-bottom:var(--gap-grid); }
.warnbar__ic{ width:38px; height:38px; border-radius:var(--r-md); flex:0 0 auto; display:grid; place-items:center;
  background:rgba(255,215,0,.16); color:var(--gold); }
.warnbar b{ font-size:13.5px; font-weight:800; color:var(--gold); }
.warnbar p{ margin:2px 0 0; font-size:12px; color:var(--dim); }

/* ---------------------------------------------------------------- 2-COL CARD LAYOUT */
.grid2{ display:grid; grid-template-columns:1.55fr 1fr; gap:var(--gap-grid); align-items:start; }
@media(max-width:1080px){ .grid2{ grid-template-columns:1fr; } }

/* ---------------------------------------------------------------- LOG / PRE */
.logbox{ background:var(--bg2); border:1px solid var(--line); border-radius:var(--r-md); padding:14px 16px;
  font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace; font-size:12px; line-height:1.85; color:var(--dim);
  white-space:pre-wrap; word-break:break-word; max-height:280px; overflow-y:auto; }
.logbox .ok{ color:var(--green); }

/* truncating cell */
.trunc{ max-width:240px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lnk-gold{ color:var(--gold); font-weight:700; }
.lnk-gold:hover{ text-decoration:underline; }

/* ── language switcher (topbar) ──────────────────────────────────────────── */
.langsw{ display:inline-flex; gap:2px; background:var(--card2); border:1px solid var(--line);
  border-radius:var(--r-pill); padding:2px; }
.langsw__b{ font:inherit; font-size:11px; font-weight:700; letter-spacing:.04em; color:var(--dim);
  background:transparent; border:0; border-radius:var(--r-pill); padding:4px 9px; cursor:pointer;
  transition:background .12s, color .12s; }
.langsw__b:hover{ color:var(--txt); }
.langsw__b--on{ background:var(--red); color:#fff; }

/* ── profile menu (sidebar footer): language + logout, tucked away ───────── */
.prof{ position:relative; }
.prof .person{ display:flex; align-items:center; gap:10px; padding:8px; border-radius:var(--r-md);
  transition:background .12s; }
.prof .person:hover{ background:var(--card2); }
.person__chev{ margin-left:auto; color:var(--dim); transition:transform .15s; }
.prof--open .person__chev{ transform:rotate(180deg); color:var(--txt); }
.prof__menu{ position:absolute; left:0; right:0; bottom:calc(100% + 8px); background:var(--card2);
  border:1px solid var(--line); border-radius:var(--r-md); padding:10px; z-index:20;
  box-shadow:0 12px 34px rgba(0,0,0,.55); }
.prof__lbl{ font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:var(--dim); margin-bottom:7px; }
.prof__langs{ display:flex; gap:4px; margin-bottom:8px; }
.prof__lang{ flex:1; font:inherit; font-size:12px; font-weight:700; color:var(--dim);
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-sm); padding:6px 0;
  cursor:pointer; transition:background .12s, color .12s; }
.prof__lang:hover{ color:var(--txt); }
.prof__lang--on{ background:var(--red); color:#fff; border-color:var(--red); }
.prof__out{ display:flex; align-items:center; gap:8px; color:var(--dim); font-size:13px;
  font-weight:600; padding:7px 6px; border-radius:var(--r-sm); cursor:pointer; text-decoration:none; }
.prof__out:hover{ background:var(--card); color:var(--txt); }

/* ── feedback FAB + modal (ideas / bug reports) ───────────────────────────── */
.fab{ position:fixed; right:22px; bottom:22px; width:52px; height:52px; border-radius:50%;
  background:linear-gradient(180deg,var(--red),var(--red-deep)); color:#fff; border:0; cursor:pointer;
  display:grid; place-items:center; box-shadow:0 8px 24px rgba(155,17,30,.45); z-index:60;
  transition:transform .14s, filter .14s; }
.fab:hover{ transform:translateY(-2px); filter:brightness(1.08); }
.fbmodal__ov{ position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:70;
  display:grid; place-items:end center; padding:0 22px 90px; animation:fbfade .15s ease; }
@keyframes fbfade{ from{ opacity:0 } to{ opacity:1 } }
.fbmodal{ width:100%; max-width:420px; background:var(--card); border:1px solid var(--line);
  border-radius:var(--r-lg); overflow:hidden; box-shadow:0 18px 50px rgba(0,0,0,.6); }
.fbmodal__bar{ height:3px; background:var(--brandbar); }
.fbmodal__b{ padding:18px 20px; }
.fbmodal__hd{ display:flex; align-items:center; gap:8px; margin-bottom:14px; }
.fbmodal__hd b{ font-size:15px; font-weight:800; }
.fbmodal__x{ margin-left:auto; color:var(--dim); cursor:pointer; display:flex; }
.fbmodal__x:hover{ color:var(--txt); }
.fbseg{ display:flex; gap:6px; margin-bottom:12px; }
.fbseg__b{ flex:1; font:inherit; font-size:13px; font-weight:700; color:var(--dim); background:var(--card2);
  border:1px solid var(--line); border-radius:var(--r-sm); padding:8px 0; cursor:pointer;
  display:flex; gap:6px; align-items:center; justify-content:center; }
.fbseg__b--on{ background:var(--red-soft); color:var(--txt); border-color:var(--red); }
.fbthanks{ text-align:center; padding:22px 10px 8px; }
.fbthanks .ic{ width:46px; height:46px; border-radius:50%; background:var(--green-soft); color:var(--green);
  display:grid; place-items:center; margin:0 auto 12px; }
.fbkind{ display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:700;
  padding:2px 8px; border-radius:var(--r-pill); white-space:nowrap; }
.fbkind--bug{ background:var(--red-soft); color:#ff6b6b; }
.fbkind--idea{ background:var(--gold-soft); color:var(--gold); }
.fbmsg{ font-size:13px; line-height:1.5; max-width:520px; }

/* clear the feedback FAB so it never covers bottom row-action buttons */
.scroll .wrap{ padding-bottom: 88px; }


/* ── SPA soft-nav: thin top progress bar + content dim while fetching ───────── */
.spa-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:10000;pointer-events:none;opacity:0;transition:opacity .2s;overflow:hidden}
.spa-progress.on{opacity:1}
.spa-progress::after{content:"";position:absolute;top:0;height:100%;width:35%;border-radius:99px;background:linear-gradient(90deg,#9b111e,#ff0000,#ffd700);animation:spaProg 1s ease-in-out infinite}
@keyframes spaProg{0%{left:-35%}100%{left:100%}}
.scroll.spa-busy{opacity:.55;transition:opacity .15s}

/* ── contact-base CSV import ──────────────────────────────────────────────── */
.row{ display:flex; align-items:center; }
.dropzone{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px;
  text-align:center; padding:30px 18px; border:1.5px dashed var(--line); border-radius:14px;
  background:var(--card2); color:var(--dim); cursor:pointer; transition:border-color .15s, background .15s; }
.dropzone:hover{ border-color:var(--gold-dim); background:var(--card3); color:var(--txt); }
.dropzone__t{ font-size:14px; font-weight:700; color:var(--txt); }
.dropzone__h{ font-size:12px; color:var(--dim2); }
.impill{ display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:99px;
  font-size:12px; font-weight:700; line-height:1.6; border:1px solid transparent; white-space:nowrap; }
.impill--new{ background:var(--green-soft); color:#5fd3a0; border-color:rgba(63,191,134,.25); }
.impill--dup{ background:var(--gold-soft); color:var(--gold); border-color:rgba(255,215,0,.25); }
.impill--skip{ background:rgba(255,255,255,.05); color:var(--dim); border-color:var(--line); }
.fmt{ display:flex; flex-direction:column; gap:11px; }
.fmt__row{ display:flex; flex-direction:column; gap:2px; font-size:12.5px; }
.fmt__row b{ color:var(--txt); font-size:12px; font-weight:700; }
.fmt__row span{ color:var(--dim); }
.rowlink{ cursor:pointer; transition:background .12s; }
.rowlink:hover{ background:var(--card3); }

/* ── next-action engine: чипы действий (cockpit, partners, card, inbox) ─────── */
.actchip{ display:inline-flex; align-items:center; gap:4px; padding:2px 8px; border-radius:99px;
  font-size:11px; font-weight:700; line-height:1.6; border:1px solid transparent; white-space:nowrap; }
.actchip b{ font-weight:800; }
.actchip--red{ background:var(--red-soft); color:#ff7a7a; border-color:rgba(255,0,0,.25); }
.actchip--gold{ background:var(--gold-soft); color:var(--gold); border-color:rgba(255,215,0,.25); }
.actchip--green{ background:var(--green-soft); color:#5fd3a0; border-color:rgba(63,191,134,.25); }
.actchip--blue{ background:rgba(90,150,255,.12); color:#8ab4ff; border-color:rgba(90,150,255,.25); }
.actchip--dim{ background:rgba(255,255,255,.05); color:var(--dim); border-color:var(--line); }
.actchip--mute{ background:transparent; color:var(--dim2); border-color:var(--line); }

/* ── cockpit «Сегодня» ──────────────────────────────────────────────────────── */
.todayq{ display:flex; flex-wrap:wrap; gap:8px; padding:2px 22px 14px; }
.todayq__chip{ display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 12px;
  border-radius:var(--r-pill); border:1px solid var(--line); background:var(--card2);
  color:var(--dim); font-size:12.5px; font-weight:600; cursor:pointer; transition:all .13s; }
.todayq__chip b{ color:var(--txt); font-weight:800; }
.todayq__chip:hover{ color:var(--txt); border-color:#3a302d; }
.todayq__chip.is-on{ color:var(--gold); border-color:var(--gold-dim); background:var(--gold-soft); }
.todayq__chip.is-on b{ color:var(--gold); }
.todayq__chip--hot b{ color:#ff7a7a; }
.todayq__chip--hot.is-on{ color:#ff7a7a; border-color:rgba(255,0,0,.35); background:var(--red-soft); }
.todayq__chip--hot.is-on b{ color:#ff7a7a; }
.prow--today .prow__msg{ font-size:12.5px; color:var(--dim); }

/* ── операционная полоса карточки (next action / aging / задача) ────────────── */
.opstrip{ display:flex; flex-wrap:wrap; gap:0; background:var(--card); border:1px solid var(--line);
  border-radius:var(--r-card, 14px); overflow:hidden; }
.opstrip__c{ flex:1 1 150px; min-width:130px; padding:12px 18px; border-right:1px solid var(--line-soft); }
.opstrip__c:last-child{ border-right:none; }
.opstrip__l{ font-size:10.5px; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--dim2); margin-bottom:6px; }
.opstrip__v{ font-size:13px; color:var(--txt); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.opstrip__v b{ font-size:15px; font-weight:800; }
.opstrip__over{ color:#ff7a7a; font-weight:700; }

/* ── deal health ────────────────────────────────────────────────────────────── */
.dealwarn{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 14px;
  padding:10px 13px; border-radius:11px; border:1px solid rgba(255,0,0,.22);
  background:var(--red-soft); font-size:12.5px; color:var(--txt); }

/* ── quality gate: строка качества в очереди ────────────────────────────────── */
.qline{ display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin-bottom:8px; }
.qline__src{ font-size:11.5px; color:var(--dim); }
.qline__ev{ font-size:11.5px; color:var(--dim2); margin-bottom:10px; overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap; }

/* ── partners: подстрока действия под статусом + застрявшие строки ──────────── */
.statuscell{ display:flex; flex-direction:column; gap:4px; align-items:flex-start; }
.statuscell__sub{ display:flex; align-items:center; gap:6px; }
.ageins{ font-size:10.5px; color:var(--dim2); font-weight:600; }
tr.row-stale td:first-child{ box-shadow:inset 3px 0 0 var(--gold-dim); }

/* ── hygiene: группы дублей ─────────────────────────────────────────────────── */
.dupswrap{ display:flex; flex-direction:column; gap:14px; padding:4px 16px 18px; }
.dupgrp{ border:1px solid var(--line); border-radius:12px; background:var(--card2); overflow:hidden; }
.dupgrp__hd{ display:flex; align-items:center; gap:10px; padding:10px 14px;
  border-bottom:1px solid var(--line-soft); }
.dupgrp__row{ display:flex; align-items:center; gap:10px; padding:9px 14px;
  border-bottom:1px solid var(--line-soft); font-size:13px; }
.dupgrp__row:last-child{ border-bottom:none; }
.dupgrp__pick{ display:flex; align-items:center; cursor:pointer; }
/* cockpit: длинная лента прокручивается внутри карточки, не раздувая дашборд */
.todaylist{ max-height:420px; overflow-y:auto; }
/* «не разобран»: переданный лид без единого действия — синяя метка слева */
tr.row-fresh td:first-child{ box-shadow:inset 3px 0 0 #4a72b8; }

/* ============================================================ MOBILE (каскадный добив)
   Намеренно в САМОМ КОНЦЕ файла: выше уже есть @media(max-width:860px), но базовые
   правила, объявленные после него (.scroll и др.), при равной специфичности перебивали
   мобильные оверрайды — на телефоне оставался десктопный shell-padding 40px. Всё, что
   обязано выигрывать на узких экранах, живёт здесь, после всех базовых правил. */
@media(max-width:860px){
  .scroll{ padding:14px; }
  .gsearch{ flex:1; }
}
@media(max-width:640px){
  :root, .density-compact{ --pad-card:14px; --gap-grid:12px; --gap-stack:10px;
    --shell-pad:12px; --fs-kpi:34px; }
  .scroll{ padding:10px; }
  /* списки (кокпит/инбокс/напоминания): чипы переносятся на новую строку — имя больше
     не сжимается в ноль, а бейдж действия не наезжает на кнопку «Открыть» */
  .prow{ gap:10px; }
  .prow__l1{ flex-wrap:wrap; row-gap:4px; }
  .prow__name{ flex:0 1 auto; }
  .prow__msg{ white-space:normal; }
  /* TG-баннер: кнопка «Подключить» переносится вниз, а не уезжает за экран */
  .tgbanner{ flex-wrap:wrap; }
  .tgbanner__t{ flex:1 1 180px; min-width:0; }
  /* таблицы листаются пальцем внутри карточки, ячейки компактнее */
  .tblwrap{ -webkit-overflow-scrolling:touch; }
  .tbl td{ padding:10px; }
  .formfoot{ flex-wrap:wrap; }
  .todaylist{ max-height:56vh; }
}

/* ── нижняя таб-панель (мобилка): 4 горячих экрана роли + «Ещё» ─────────────── */
.bottomnav{ display:none; }
@media(max-width:860px){
  .bottomnav{ position:fixed; left:0; right:0; bottom:0; z-index:70; display:flex;
    background:rgba(15,13,13,.97); border-top:1px solid var(--line);
    padding-bottom:env(safe-area-inset-bottom, 0); backdrop-filter:blur(8px); }
  .bottomnav__tab{ flex:1; display:flex; flex-direction:column; align-items:center; gap:3px;
    padding:9px 2px 8px; min-height:56px; border:none; background:none; cursor:pointer;
    color:var(--dim); font-size:10px; font-weight:700; font-family:var(--font);
    text-decoration:none; letter-spacing:.02em; }
  .bottomnav__tab span{ max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .bottomnav__tab.is-on{ color:var(--gold); }
  .bottomnav__tab:active{ color:var(--txt); }
  /* контент и FAB не прячутся за панелью */
  .scroll{ padding-bottom:calc(72px + env(safe-area-inset-bottom, 0)); }
  .fab{ bottom:calc(72px + env(safe-area-inset-bottom, 0)); }
  /* тач-таргеты: 30px-кнопки дорастают до 40px под пальцем */
  .btn--sm{ min-height:40px; }
  .btn{ min-height:42px; }
  .copybtn, .rowact__btn, .sortbtn{ min-height:36px; min-width:36px; }
  .todayq__chip{ height:38px; }
  .input--sm, .select{ min-height:40px; }
  .tbl input[type=checkbox], .plist input[type=checkbox]{ width:20px; height:20px; }
  .statussel__btn, .filterdd__btn, .chip-flt, .taskshift button{ min-height:40px; }
}

@media(max-width:860px){
  /* iOS зумит страницу при фокусе поля со шрифтом <16px — и не отзумливает обратно */
  .input, .select, .textarea, .topbar__search input, .filterrow__search input{ font-size:16px; }
}
@media(max-width:640px){
  .taskcheck{ width:26px; height:26px; }
  .grid.col-4{ grid-template-columns:repeat(2,1fr); }   /* KPI 2×2 вместо столбика */
  .board{ scroll-snap-type:x mandatory; grid-auto-columns:minmax(240px,85vw); }
  .bcol{ scroll-snap-align:start; }
}

/* свёрнутый TG-баннер: одна строка вместо трёх (после «Позже») */
.tgbanner--slim{ display:flex; align-items:center; gap:10px; padding:10px 14px;
  margin-bottom:var(--gap-grid); border:1px solid var(--line); border-radius:var(--r-lg);
  background:var(--card); color:var(--dim); font-size:12.5px; text-decoration:none; }
.tgbanner--slim b{ color:var(--txt); font-size:12.5px; font-weight:700; flex:1; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tgbanner--slim .tgbanner__go{ color:var(--gold); font-weight:800; flex:0 0 auto; }
.tgbanner__cta{ display:flex; gap:8px; align-items:center; margin-left:auto; }

/* ═══════════ UX-волны: секции для стилей волновых правок (каждая волна пишет только в свою) ═══════════ */
/* ─── WAVE:CARD (карточка партнёра + плейбук-панель) ─── */
/* блок «Итог разговора»: одна запись = исход + текст + follow-up + статус */
.logres__row{ display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; }
.logres__row > .field{ flex:1 1 170px; min-width:150px; }
.logres__fu{ display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.logres__fu .input{ flex:1 1 120px; min-width:0; }
.logres__dec{ border-top:1px solid var(--line); padding-top:12px; display:flex;
  flex-direction:column; gap:10px; }
/* серийный режим: «← i из N →» в шапке карточки */
.serialnav{ display:inline-flex; align-items:center; gap:6px; }
.serialnav__pos{ font-size:12.5px; font-weight:700; color:var(--dim); white-space:nowrap; }
.serialnav .btn:disabled{ opacity:.35; pointer-events:none; }
/* контакты в инфо-таблице: мелкая иконка-копия у каждой строки */
.info__v .copybtn{ margin-left:8px; padding:2px 7px; vertical-align:middle; }
/* кнопка «Ответы» в ops-strip */
.opstrip__c--act{ display:flex; align-items:center; flex:0 0 auto; }
/* playbook slide-over справа (на мобилке — bottom-sheet) */
.pbp{ position:fixed; inset:0; z-index:80; }
.pbp__ovl{ position:absolute; inset:0; background:rgba(0,0,0,.45); }
.pbp__panel{ position:absolute; top:0; right:0; bottom:0; width:min(440px,92vw);
  background:var(--card); border-left:1px solid var(--line);
  box-shadow:-18px 0 40px rgba(0,0,0,.35); display:flex; flex-direction:column; }
.pbp__hd{ display:flex; align-items:center; gap:10px; padding:14px 16px;
  border-bottom:1px solid var(--line); flex:0 0 auto; }
.pbp__sp{ flex:1; }
.pbp__body{ padding:14px 16px; overflow-y:auto; flex:1; display:flex;
  flex-direction:column; gap:12px; }
.pbp__body .snippet+.snippet{ margin-top:0; }
@media(max-width:640px){
  .pbp__panel{ top:auto; left:0; right:0; bottom:0; width:auto; height:70vh;
    border-left:none; border-top:1px solid var(--line); border-radius:16px 16px 0 0; }
  /* мобилка: «Итог» первым (после шапки), потом ops-strip и остальное */
  .cardscr > .pagehd{ order:-3; }
  .cardscr > .logres{ order:-2; }
  .cardscr > .opstrip{ order:-1; }
  .logres__row > .field{ flex:1 1 100%; }
  /* «Профиль»/«Источники трафика» свернуты в details (desktop — обычные карточки) */
  .cardfold__sum{ list-style:none; cursor:pointer; display:flex; align-items:center;
    gap:8px; font-weight:800; font-size:14px; min-height:40px; }
  .cardfold__sum::-webkit-details-marker{ display:none; }
  .cardfold__sum svg{ transition:transform .15s; }
  .cardfold[open] > .cardfold__sum svg{ transform:rotate(90deg); }
  /* внутри развёрнутого фолда прячем дубль заголовка CardHead, оставляя «изменить» */
  .cardfold > .card__hd .eyebadge, .cardfold > .card__hd > div{ display:none; }
  .cardfold > .card__hd{ margin:6px 0 8px; }
}

/* ─── WAVE:AFF (кокпит/дашборд аффа) ─── */
/* вся строка кокпита кликабельна */
.prow--click{ cursor:pointer; }
/* CTA-набор строки: TgChat-чип + кнопка в ряд */
.prow__cta--row{ display:flex; align-items:center; gap:8px; }
.prow__cta--row .tgchip{ max-width:132px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* цитата последнего входящего под причиной (reply_now) */
.prow--today .prow__quote{ margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* чип владельца лида (CEO/тимлид видит, кого пинать) */
.ownchip{ font-size:10px; font-weight:700; letter-spacing:.02em; color:var(--dim);
  border:1px solid var(--line); border-radius:999px; padding:1px 8px;
  max-width:130px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
@media (max-width:640px){
  .prow__cta--row{ flex-direction:column; align-items:stretch; }
  .prow__cta--row .tgchip{ max-width:none; }
}

/* ─── WAVE:OPS (инбокс/очередь/партнёры/tg-импорт) ─── */
/* инбокс: inline мини-форма отказа в строке */
.inbdec{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-top:10px;
  padding:10px; border:1px solid var(--line); border-radius:10px; background:rgba(0,0,0,.12); }
.inbdec__comment{ flex:1 1 180px; min-width:0; }
/* bulkbar: ссылка «выбрать все N отфильтрованных» */
.lnkbtn{ background:none; border:none; padding:6px 4px; min-height:40px; cursor:pointer;
  color:var(--gold); font:inherit; font-size:12.5px; font-weight:700; text-decoration:underline;
  text-underline-offset:3px; }
.lnkbtn:hover{ filter:brightness(1.15); }
/* tg-импорт: поиск по имени/@нику в тулбаре */
.tgimp__search{ flex:1 1 220px; max-width:340px; }
/* партнёры, мобилка: фильтры над списком + карточный вид вместо таблицы */
.pmobflt{ display:flex; flex-direction:column; gap:8px; padding:12px 14px 4px; }
.pmobflt__search{ width:100%; }
.pmobflt__dds{ display:flex; gap:8px; flex-wrap:wrap; }
.pmobflt__dds .filterdd__btn{ min-height:40px; }
.pmoblist{ display:flex; flex-direction:column; }
.pmobrow{ display:flex; gap:10px; align-items:flex-start; padding:12px 14px;
  border-top:1px solid var(--line); cursor:pointer; }
.pmobrow:active{ background:rgba(255,255,255,.03); }
.pmobrow.is-sel{ background:rgba(212,175,55,.06); }
.pmobrow__ck{ display:flex; align-items:center; justify-content:center;
  min-width:40px; min-height:40px; margin:-6px 0 0 -6px; }
.pmobrow__ck input{ width:18px; height:18px; }
.pmobrow__main{ flex:1; min-width:0; display:flex; flex-direction:column; gap:8px; }
.pmobrow__l1{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; min-width:0; }
.pmobrow__l1 .tbl__name{ min-width:0; overflow:hidden; text-overflow:ellipsis; }
.pmobrow__l2{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.pmobrow__upd{ margin-left:auto; font-size:11.5px; color:var(--dim); white-space:nowrap; }

/* ─── WAVE:PIPE (задачи/сделки/борд/метрики/команда/discovery/import) ─── */
/* быстрый перенос срока в строке задачи */
.taskshift{ display:flex; gap:4px; flex:0 0 auto; align-items:center; }
.taskshift .copybtn{ padding:4px 8px; }
/* развёрнутые детали discovery-строки (evidence целиком) */
.disco-detail{ display:flex; flex-direction:column; gap:6px; padding:10px 14px;
  font-size:12.5px; line-height:1.5; color:var(--dim); white-space:normal; }
.disco-detail b{ color:var(--txt); font-weight:700; }
/* прилипающий снизу bulkbar на распределении лидов */
.assign-bulkbar{ position:sticky; bottom:12px; z-index:30;
  background:var(--card, #1c1917); box-shadow:0 6px 24px rgba(0,0,0,.45);
  border:1px solid rgba(255,215,0,.35); }
@media (max-width:640px){
  .assign-bulkbar{ bottom:64px; flex-wrap:wrap; }  /* не прячемся под нижней навигацией */
  .taskshift{ flex-wrap:wrap; }
}
/* «→ след. стадия» на карточке канбана сделок (секция PIPE, добавлено после волн) */
.bcard__next{ margin-left:auto; flex:0 0 auto; width:30px; height:30px; border-radius:var(--r-sm);
  border:1px solid var(--line); background:var(--card2); color:var(--gold); font-weight:800;
  font-size:15px; cursor:pointer; display:grid; place-items:center; }
.bcard__next:hover{ border-color:var(--gold-dim); background:var(--gold-soft); }
.bcard__top{ display:flex; align-items:center; gap:8px; }
@media(max-width:640px){ .bcard__next{ width:40px; height:40px; } }

/* ═══════════ Follow-up волна 2 (каждый агент пишет только в свою секцию) ═══════════ */
/* ─── FUP:SHELL (бейджи навигации, поиск, undo-тост) ─── */
.flash__undo{ margin-left:6px; padding:7px 14px; border:1px solid var(--gold-dim); border-radius:var(--r-md);
  background:transparent; color:var(--gold); font:inherit; font-size:13px; font-weight:800;
  cursor:pointer; white-space:nowrap; flex:0 0 auto; }
.flash__undo:hover{ background:var(--gold-soft); }
@media(max-width:640px){ .flash__undo{ min-height:40px; min-width:40px; padding:9px 16px; } }
.bottomnav__tab{ position:relative; }
.bottomnav__badge{ position:absolute; top:3px; left:calc(50% + 5px); min-width:16px; height:16px;
  padding:0 4px; border-radius:var(--r-pill); background:var(--red); color:#fff; font-size:10px;
  font-weight:800; display:grid; place-items:center; line-height:1; pointer-events:none; }
.gsearch__all{ border-top:1px solid var(--line); color:var(--gold); font-weight:700; gap:10px; }
.gsearch__all svg{ flex:0 0 auto; }

/* ─── FUP:PIPE (питание базы табы, гигиена, метрики) ─── */
/* «Питание базы» — сегмент-контрол из трёх источников лидов поверх Discovery/Import/CSV */
.feedtabs{ align-self:flex-start; }
.feedtabs .seg__b{ white-space:nowrap; }
@media (max-width:640px){
  .feedtabs{ align-self:stretch; display:flex; width:100%; }
  .feedtabs .seg__b{ flex:1 1 0; text-align:center; padding:9px 8px; min-height:40px; }
}
/* «Уволить…» — инлайн-панель оффбординга в строке команды */
.offb{ display:flex; gap:6px; align-items:center; flex-wrap:wrap;
  padding:6px 8px; border:1px solid rgba(255,0,0,.35); border-radius:8px; background:var(--red-soft); }
.offb__lbl{ font-size:12px; color:var(--muted); white-space:nowrap; }
.offb__fresh{ display:flex; gap:6px; align-items:center; font-size:12px; cursor:pointer; user-select:none; }
.offb__fresh input{ accent-color:#ff6a6a; width:16px; height:16px; flex:0 0 auto; }
.offb__btn{ color:#ff6a6a; }
.offb__btn:hover{ background:var(--red-soft); border-color:rgba(255,0,0,.35); color:#ff6a6a; }
@media (max-width:640px){
  .offb{ width:100%; }
  .offb .btn, .offb select, .offb .select{ min-height:40px; }
  .offb__fresh{ min-height:40px; }
}

/* ─── FUP:OPS (undo балков в партнёрах) ─── */

/* ── FINAL:MOBILE-AUDIT (июль 2026) ──
   Верифицированные дефекты мобильной вёрстки. Правила живут в САМОМ конце файла:
   базовые правила, объявленные после середины (.notif__pop и др.), при равной
   специфичности перебивают ранние @media-оверрайды — здесь каскад выигрывает всегда. */

/* 2) /assign: панель массовых действий. position:sticky был инертен — её
   scroll-контейнер (.scroll{overflow-y:auto}) фактически не скроллится
   (скроллится документ, т.к. .app растёт от min-height:100vh), и панель лежала
   в самом низу длинного списка. Делаем fixed: десктоп — правее сайдбара
   (248px, компакт 224px) с отступом --shell-pad, справа оставляем место под
   feedback-FAB (right:22px + 52px); клиренс под панелью уже даёт существующий
   .scroll .wrap{ padding-bottom:88px }. Архитектуру .app/.scroll не трогаем. */
.assign-bulkbar{ position:fixed; left:calc(248px + var(--shell-pad));
  right:calc(var(--shell-pad) + 56px); bottom:12px; z-index:60; }
.app.density-compact .assign-bulkbar{ left:calc(224px + var(--shell-pad)); }

@media(max-width:860px){
  /* 1) попапы уведомлений/поиска: базовый .notif__pop (position:absolute,
     width:340px, строка ~310) объявлен ПОЗЖЕ оверрайда строки ~150 и перебивал
     его — попап уезжал за правый край экрана. Дубль оверрайда здесь. */
  .gsearch__pop, .notif__pop{ position:fixed; left:8px; right:8px; top:62px;
    width:auto; max-width:none; }

  /* 2) /assign: сайдбар скрыт → на всю ширину, над нижней таб-панелью
     (56px + safe-area); z-index выше FAB (60), ниже bottomnav (70). */
  .assign-bulkbar{ left:8px; right:8px;
    bottom:calc(64px + env(safe-area-inset-bottom, 0px)); z-index:65; }

  /* 3) дашборд тимлида: 641–860 — колонки онбординга зажаты в 1fr, min-content
     не раздувает документ; график TrendChart (shared.jsx, 30 колонок ≈ 744px,
     родитель без класса) листается внутри себя, не двигая весь документ. */
  .pipe{ grid-auto-columns:minmax(0,1fr); }
  .trend, .legend{ overflow-x:auto; }

  /* 4) iOS-зум по фокусу: .fld-search input не попал в 16px-список выше */
  .fld-search input{ font-size:16px; }

  /* 5) «Все →» в шапке карточки (14px высоты): зона нажатия 40px, негативные
     вертикальные маргины не раздувают .card__hd; margin-left:auto сохраняем. */
  .card__more{ min-height:40px; display:inline-flex; align-items:center;
    margin:-8px 0 -8px auto; padding:8px 0 8px 8px; }

  /* 6) сегмент-контрол (29px) и 7) чипы фильтров (33px): дорастают до 40px */
  .seg__b{ min-height:40px; display:inline-flex; align-items:center; justify-content:center; }
  .chip{ min-height:40px; }

  /* 8) чекбокс задачи: сам квадрат (20/26px) не увеличиваем — иначе разъедется
     строка .taskrow; зону нажатия до 40px+ даёт невидимый оверлей. */
  .taskcheck{ position:relative; }
  .taskcheck::after{ content:""; position:absolute; inset:-10px; }

  /* 9) поиск в шапке таблицы партнёров (30px) */
  .filterrow__search{ height:auto; min-height:40px; }
}
@media(max-width:640px){
  /* 3) мобилка: 6 стадий онбординга — плитки 3×2 вместо 6 нечитаемых колонок */
  .pipe{ grid-auto-flow:row; grid-template-columns:repeat(3,minmax(0,1fr)); }
}

/* ── кнопка «показать ещё N» в колонке канбана (кап рендера на большой базе) ── */
.bcol__more{ width:100%; justify-content:center; font-size:12px; padding:8px 10px; }
