/* page-compare.css — Taqqoslash + Kampaniyalar (docs/DESIGN-shadcn-ui.md §7: P3 egasi).
 *
 * shadcn dashboard-01 ruhida: karta (header/title/description/action) ichida sayt tanlagich (Command uslubi),
 * section-cards KPI (components.css), data-table (table-wrap + table-footer), issiqlik jadvali, dialog ichidagi forma.
 * Klass prefikslari:  cmp-* taqqoslash   cl-* kampaniyalar ro'yxati   cd-* kampaniya dashboardi   cw-* kampaniya ustasi (dialog)
 * Ranglar faqat tokenlardan (light + dark). Bo'shliq: gap-4 md:gap-6 (konteyner so'rovi #page = `main`).
 */

/* ============================== Umumiy sahifa skeleti ============================== */
.cmp-page, .cl-page, .cd-page, .cd-body, .cmp-results {
  display: flex; flex-direction: column; gap: 1rem; min-width: 0;
}
@container main (min-width: 48rem) {
  .cmp-page, .cl-page, .cd-page, .cd-body, .cmp-results { gap: 1.5rem; }
}
.cmp-results:empty { display: none; }

/* ============================== Taqqoslash: sayt tanlagich ============================== */
.cmp-grid { display: grid; grid-template-columns: minmax(0, 1fr) 17rem; gap: 1.5rem; align-items: start; }
@container main (max-width: 44rem) { .cmp-grid { grid-template-columns: minmax(0, 1fr); } }

.cmp-selcount { font-variant-numeric: tabular-nums; }
.cmp-selcount:empty { display: none; }

/* Command uslubi: tepada ikonkali qidiruv qatori, ostida ro'yxat */
.cmp-picker {
  display: flex; flex-direction: column; min-width: 0; overflow: hidden;
  border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--card);
}
.cmp-picker-head { display: flex; align-items: center; gap: 0.5rem; padding: 0.25rem 0.5rem 0.25rem 0; border-bottom: 1px solid var(--border); }
.cmp-search-wrap { flex: 1; display: flex; align-items: center; gap: 0.5rem; min-width: 0; height: 2.25rem; padding: 0 0.75rem; }
.cmp-search-wrap .icon { color: var(--muted-foreground); }
.cmp-search-wrap input {
  -webkit-appearance: none; appearance: none;
  flex: 1; width: 100%; height: 2rem; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; color: var(--foreground);
}
.cmp-search-wrap input:hover, .cmp-search-wrap input:focus, .cmp-search-wrap input:focus-visible { border: 0; box-shadow: none; outline: none; }
.cmp-search-wrap input::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }
.cmp-picker-head:focus-within { background: color-mix(in oklab, var(--muted) 50%, transparent); }
.cmp-picker-head:has(input:focus-visible) { outline: 2px solid var(--focus-border); outline-offset: -2px; }

.cmp-list { max-height: 21rem; min-height: 6rem; overflow-y: auto; padding: 0.25rem; }
.cmp-row {
  display: flex; align-items: center; gap: 0.75rem; margin: 0; padding: 0.5rem 0.625rem;
  border-radius: var(--radius-md); font-weight: 400; cursor: pointer;
  transition: background-color var(--duration-fast);
}
.cmp-row:hover, .cmp-row:has(input:checked) { background: var(--accent); }
.cmp-row:has(input:focus-visible) { box-shadow: inset 0 0 0 1px var(--focus-border); }
.cmp-row input { flex-shrink: 0; }
.cmp-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 0.125rem; }
.cmp-row-name { color: var(--foreground); font-size: 0.875rem; font-weight: 500; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cmp-row-sub { color: var(--muted-foreground); font-size: 0.75rem; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cmp-row-ots { flex-shrink: 0; color: var(--muted-foreground); font-family: var(--font-mono); font-size: 0.6875rem; font-weight: 500; font-variant-numeric: tabular-nums; white-space: nowrap; }   /* "12,3K OTS/oy" — ma'lumot imzosi */
.cmp-row:has(input:checked) .cmp-row-ots { color: var(--foreground); }

.cmp-empty, .cmp-nomatch {
  display: flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 2rem 1rem;
  color: var(--muted-foreground); font-size: 0.875rem; text-align: center;
}
.cmp-empty a { font-weight: 500; }
.cmp-nomatch[hidden] { display: none; }

.cmp-skel { display: flex; align-items: center; gap: 0.75rem; padding: 0.625rem; }
.cmp-skel .skeleton:first-child { width: 1rem; height: 1rem; flex-shrink: 0; border-radius: 4px; }
.cmp-skel .skeleton:last-child { flex: 1; height: 0.875rem; }

/* O'ng ustun: davr + tugma */
.cmp-side { display: flex; flex-direction: column; gap: 1rem; min-width: 0; }
.cmp-side .filter-item { gap: 0.5rem; }
.cmp-side .btn { width: 100%; }

/* ============================== Taqqoslash: natijalar ============================== */
.cmp-results .chart { height: 280px; }
/* KPI kartada uzun sayt nomi 2 qatordan oshmasin (shadcn: line-clamp-1) */
.cmp-results .kpi-foot strong { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }

/* Jadval + pastki qator (dashboard-01 data-table) */
.cmp-tablebox { display: flex; flex-direction: column; gap: 0.75rem; }
.cmp-tablebox .table-footer { padding: 0 0.25rem; }
.cmp-table td { white-space: nowrap; }
.cmp-table th { height: auto; min-height: 2.5rem; padding-block: 0.375rem; white-space: normal; line-height: 1.25; }
.cmp-table th.num .cmp-th { justify-content: flex-end; text-align: right; }
.cmp-site { max-width: 17rem; overflow: hidden; text-overflow: ellipsis; font-weight: 500; }
.cmp-table th.sortable:focus-visible { outline: 2px solid var(--focus-border); outline-offset: -2px; }
.cmp-th { display: inline-flex; align-items: center; gap: 0.375rem; }
.cmp-sort-icon { width: 0.875rem; height: 0.875rem; color: var(--muted-foreground); opacity: 0.5; transition: opacity var(--duration-fast); }
th.sortable:hover .cmp-sort-icon, th.sorted .cmp-sort-icon { opacity: 1; }
th.sorted .cmp-sort-icon { color: var(--foreground); }
/* "Eng yaxshi" katagi: yumshoq success badge (belgi) + qalin qiymat */
.cmp-cell { display: inline-flex; align-items: center; justify-content: flex-end; gap: 0.5rem; }
.cmp-best .cmp-val { font-weight: 600; color: var(--foreground); }
.cmp-best-badge { padding: 0.125rem 0.375rem; }
.cmp-legend { display: inline-flex; align-items: center; gap: 0.5rem; margin-left: auto; color: var(--muted-foreground); font-size: 0.8125rem; }

/* ============================== Kampaniyalar: ro'yxat ============================== */
.cl-link { color: var(--foreground); font-weight: 500; text-decoration: none; }
.cl-link:hover { text-decoration: underline; text-underline-offset: 4px; }
.cl-name { width: 38%; min-width: 14rem; }
.cl-period { display: inline-flex; align-items: center; gap: 0.375rem; color: var(--muted-foreground); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cl-period .icon { width: 0.875rem; height: 0.875rem; }
.cl-notes { max-width: 16rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted-foreground); }
.cl-actions { width: 1%; text-align: right; white-space: nowrap; }
.cl-skel { display: flex; flex-direction: column; gap: 0.5rem; }
.cl-skel .skeleton { height: 2.5rem; }
.cl-skel .skeleton:first-child { height: 2.5rem; }

/* Bo'sh holat (empty state) */
.cl-empty { display: flex; flex-direction: column; align-items: center; gap: 0.375rem; padding: 3rem 1.5rem; }
.cl-empty-icon {
  display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; margin-bottom: 0.5rem;
  border-radius: var(--radius-lg); background: var(--muted); color: var(--muted-foreground-strong);
}
.cl-empty-title { color: var(--foreground); font-family: var(--font-heading); font-size: 0.9375rem; font-weight: 600; }
.cl-empty-text { max-width: 28rem; color: var(--muted-foreground); font-size: 0.875rem; }
.cl-empty .empty-cta { margin-top: 1rem; }

/* ============================== Kampaniya dashboardi ============================== */
.cd-head { display: flex; align-items: flex-start; gap: 1rem; min-width: 0; }
.cd-back { flex-shrink: 0; margin-top: 0.125rem; }
.cd-titles { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; }
.cd-title {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; min-width: 0; max-width: 100%; margin: 0; overflow: hidden;
  font-family: var(--font-heading); font-size: 1.5rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.015em; text-wrap: balance; overflow-wrap: anywhere;
}
.cd-meta { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.cd-radius-row { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 0.5rem 0.75rem; margin: 0.875rem 0 1rem; }
.cd-radius-row > .rs-host { flex: 1 1 36rem; min-width: 0; max-width: 54rem; }
.cd-radius-lab { display: inline-flex; align-items: center; gap: 0.375rem; height: 2rem; font-size: 0.75rem; color: var(--muted-foreground-strong); }
.cd-radius-info { font-size: 0.8125rem; line-height: 2rem; color: var(--muted-foreground); font-variant-numeric: tabular-nums; }
.cd-body { transition: opacity var(--duration) ease-out; }
.cd-page.is-loading .cd-body { opacity: 0.5; pointer-events: none; }
#cd-period:empty, #cd-country:empty { display: none; }

.cd-skel-kpi { height: 10rem; border-radius: var(--radius-xl); }
.cd-skel-chart { height: 21rem; border-radius: var(--radius-xl); }
.cd-chart { height: 300px; }
.cd-site { max-width: 24rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }

/* --- Qoplanish (overlap) issiqlik jadvali --- */
.overlap-table td, .overlap-table th { text-align: center; font-variant-numeric: tabular-nums; }
.overlap-table thead th { height: 2.5rem; font-size: 0.8125rem; }
.overlap-table td { min-width: 4.5rem; height: 2.75rem; border-left: 1px solid var(--border); }
.overlap-table tbody tr:hover { background: transparent; }
/* Ustun sarlavhasi 2 qatorgacha (to'liq nom title'da), qator sarlavhasi bir qator */
.cd-mx-th { display: inline-block; max-width: 9rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
.overlap-table thead th { white-space: normal; line-height: 1.25; padding-block: 0.375rem; }
.overlap-table thead .cd-mx-th {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; max-width: 6.5rem;
  white-space: normal; overflow-wrap: anywhere; margin-inline: auto;
}
/* Qator sarlavhasi chapda qotib turadi (ko'p sayt bo'lsa jadval gorizontal aylanadi) */
.overlap-table tbody th.cd-mx-row {
  position: sticky; left: 0; z-index: 1; height: auto; padding: 0.5rem 0.75rem; text-align: left;
  background: var(--muted); box-shadow: inset -1px 0 0 var(--border), inset 0 -1px 0 var(--border);
}
.overlap-table thead th:first-child { position: sticky; left: 0; z-index: 2; }
/* Katak foni: --chart-2 ning intensivlikka (--k: 0..1) mutanosib ulushi. Eng to'q joyda ham (60%) matn
   (--foreground) ikkala temada AA kontrastda qoladi. */
.overlap-table td.heat {
  background-color: color-mix(in oklab, var(--chart-2) calc(var(--k, 0) * 60%), transparent);
  color: var(--foreground); font-weight: 500;
}
.overlap-table td.heat.zero { color: var(--muted-foreground); font-weight: 400; }
.overlap-table td.diag {
  color: var(--muted-foreground-strong); background-color: color-mix(in oklab, var(--muted) 70%, transparent);
}
/* Rang shkalasi (legenda) */
.cd-legend { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.75rem; color: var(--muted-foreground); font-size: 0.75rem; font-variant-numeric: tabular-nums; }
.cd-legend-bar {
  flex: 0 0 8rem; height: 0.5rem; border-radius: 999px; border: 1px solid var(--border);
  background: linear-gradient(to right, color-mix(in oklab, var(--chart-2) 0%, transparent), color-mix(in oklab, var(--chart-2) 60%, transparent));
}
.cd-legend-cap { margin-left: 0.25rem; }

/* ============================== Kampaniya dashboardi: bo'limlar (OTS bahosi / panel), hisobot vaqti ============================== */
.cd-sec { display: flex; flex-direction: column; gap: 1rem; min-width: 0; }
.cd-sec-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.25rem 0.75rem; }
.cd-sec-title { margin: 0; color: var(--foreground); font-family: var(--font-heading); font-size: 1rem; font-weight: 600; line-height: 1.3; }
.cd-sec-cap { margin: 0; color: var(--muted-foreground); font-size: 0.8125rem; }
.cd-stamp { display: inline-flex; align-items: center; gap: 0.375rem; color: var(--muted-foreground); font-size: 0.75rem; font-variant-numeric: tabular-nums; cursor: help; }
.cd-stamp .icon { width: 0.875rem; height: 0.875rem; }
.cd-stamp:empty { display: none; }
.cd-edit { flex-shrink: 0; margin-top: 0.125rem; margin-left: auto; }
.cd-panel-empty { display: flex; align-items: flex-start; justify-content: center; gap: 0.5rem; padding: 1.25rem 1rem; }
.cd-panel-empty .icon { flex-shrink: 0; margin-top: 0.125rem; }

/* ============================== Kampaniya ustasi (dialog, 2 bosqich): cw-* ============================== */
.modal.cw-modal { width: 34rem; gap: 0.75rem; }
.modal.cw-modal.cw-modal-map { width: 76rem; }
.cw-steps { display: flex; align-items: center; gap: 0.75rem; margin: 0 0 1rem; padding: 0; list-style: none; }
.cw-step {
  display: inline-flex; align-items: center; gap: 0.5rem; color: var(--muted-foreground); font-size: 0.875rem; font-weight: 500;
  cursor: pointer; user-select: none;
}
.cw-step-n {
  display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border: 1px solid var(--border); border-radius: 999px;
  font-size: 0.75rem; font-variant-numeric: tabular-nums; transition: background-color var(--duration-fast), color var(--duration-fast);
}
.cw-step.active { color: var(--foreground); }
.cw-step.active .cw-step-n { border-color: var(--primary); background: var(--primary); color: var(--primary-foreground); }
.cw-step.done .cw-step-n { background: var(--muted); color: var(--foreground); }
.cw-step-sep { flex: 0 0 2.5rem; height: 1px; background: var(--border); }
.cw-pane[hidden] { display: none; }
.cw-pane-1 .modal-description { margin: -0.25rem 0 1rem; }
.cw-days { display: inline-flex; align-items: center; gap: 0.375rem; margin: -0.5rem 0 1rem; color: var(--muted-foreground); font-size: 0.8125rem; font-variant-numeric: tabular-nums; }
.cw-days[hidden] { display: none; }
.cw-days .icon { width: 0.875rem; height: 0.875rem; }

/* 2-bosqich: chapda xarita, o'ngda ro'yxat (bir xil balandlik); tor oynada ustma-ust */
.cw-pick { --cw-h: clamp(20rem, 56vh, 34rem); display: grid; grid-template-columns: minmax(0, 1fr) 21rem; gap: 1rem; }
.cw-map-wrap { position: relative; min-width: 0; height: var(--cw-h); overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--muted); }
.cw-map { position: absolute; inset: 0; }
.cw-map .cw-note { display: grid; place-items: center; height: 100%; padding: 1rem; text-align: center; }
.cw-map-hint, .cw-legend {
  position: absolute; left: 0.625rem; z-index: 2; display: flex; align-items: center; gap: 0.375rem 0.75rem; flex-wrap: wrap;
  max-width: calc(100% - 1.25rem); padding: 0.3125rem 0.625rem; border: 1px solid var(--border); border-radius: var(--radius-md);
  background: color-mix(in oklab, var(--card) 92%, transparent); color: var(--muted-foreground-strong); font-size: 0.75rem;
  box-shadow: var(--shadow-xs); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); pointer-events: none;
}
.cw-map-hint { top: 0.625rem; }
.cw-map-hint .icon { width: 0.875rem; height: 0.875rem; flex-shrink: 0; }
.cw-legend { bottom: 0.625rem; }
.cw-legend span { display: inline-flex; align-items: center; gap: 0.3125rem; }
.cw-dot { display: inline-block; flex-shrink: 0; width: 0.5rem; height: 0.5rem; border-radius: 999px; }
.cw-dot-billboard { background: var(--info); }
.cw-dot-dooh { background: var(--purple); }
.cw-dot-other { background: var(--warning); }
.cw-dot-sel { width: 0.625rem; height: 0.625rem; border: 2px solid var(--foreground); background: transparent; }

.cw-side {
  display: flex; flex-direction: column; min-width: 0; height: var(--cw-h); overflow: hidden;
  border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--card);
}
.cw-filters { display: flex; flex-direction: column; gap: 0.5rem; padding: 0.625rem; border-bottom: 1px solid var(--border); }
.cw-filters .input-wrap input { height: 2rem; }
.cw-filter-row { display: flex; align-items: center; gap: 0.5rem; }
.cw-filter-row select { flex: 1 1 0; min-width: 0; }
.cw-filter-acts { justify-content: space-between; font-size: 0.8125rem; }
.cw-shown { font-size: 0.75rem; font-variant-numeric: tabular-nums; }
.cw-list { flex: 1; min-height: 0; overflow-y: auto; padding: 0.25rem; }
.cw-note { padding: 1rem; font-size: 0.8125rem; text-align: center; }
.cw-item {
  display: flex; align-items: center; gap: 0.5rem; width: 100%; padding: 0.4375rem 0.5rem; border: 0; border-radius: var(--radius-md);
  background: none; color: var(--foreground); font: inherit; font-size: 0.8125rem; text-align: left; cursor: pointer;
}
.cw-item:hover { background: var(--accent); }
.cw-item.on { background: color-mix(in oklab, var(--accent) 75%, transparent); }
.cw-item:focus-visible { outline: 2px solid var(--focus-border); outline-offset: -2px; }
.cw-check {
  display: grid; place-items: center; flex-shrink: 0; width: 1rem; height: 1rem; border: 1px solid var(--input); border-radius: var(--radius-sm);
  transition: background-color var(--duration-fast), border-color var(--duration-fast);
}
.cw-check svg { width: 0.75rem; height: 0.75rem; }
.cw-item.on .cw-check { border-color: var(--primary); background: var(--primary); color: var(--primary-foreground); }
.cw-item-main { display: flex; flex: 1; flex-direction: column; min-width: 0; }
.cw-item-name, .cw-item-sub { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cw-item-name { font-weight: 500; line-height: 1.3; }
.cw-item-sub { color: var(--muted-foreground); font-size: 0.75rem; line-height: 1.3; }
.cw-item-ots { flex-shrink: 0; color: var(--muted-foreground-strong); font-size: 0.75rem; font-variant-numeric: tabular-nums; }
.cw-side-foot { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.5rem 0.625rem; border-top: 1px solid var(--border); }

/* Tanlov yig'indisi: 1px oraliq + chegara foni (qator o'ralsa ham ajratuvchi to'g'ri) */
.cw-summary {
  display: flex; flex-wrap: wrap; gap: 1px; margin-top: 1rem; overflow: hidden;
  border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--border);
}
.cw-sum-cell { flex: 1 1 8rem; min-width: 0; padding: 0.5rem 0.875rem; background: var(--card); }
.cw-sum-main { background: color-mix(in oklab, var(--muted) 55%, var(--card)); }
.cw-sum-v { color: var(--foreground); font-family: var(--font-heading); font-size: 1.125rem; font-weight: 700; line-height: 1.25; font-variant-numeric: tabular-nums; }
.cw-sum-l { margin-top: 0.125rem; color: var(--muted-foreground-strong); font-family: var(--font-mono); font-size: 0.6875rem; font-weight: 500; letter-spacing: 0.02em; }
.cw-sum-tip { display: grid; place-items: center; padding: 0 0.875rem; background: var(--card); color: var(--muted-foreground); cursor: help; }
.cw-sum-tip .icon { width: 1rem; height: 1rem; }
.cw-actions { align-items: center; }
.cw-actions-gap { flex: 1; }
@media (max-width: 56rem) {
  .cw-pick { grid-template-columns: minmax(0, 1fr); }
  .cw-map-wrap { height: clamp(16rem, 42vh, 24rem); }
  .cw-side { height: 22rem; }
}
.modal-body .modal-description + .modal-actions { margin-top: 1.5rem; }

/* ============================== Kampaniyalar xaritada: cm-* (ro'yxat sahifasi "Xarita" ko'rinishi), cmc-* (dashboard kartasi) ==============================
 * Xarita va yon panel ustaning (cw-*) qoliplarini qayta ishlatadi; --cm-c — kampaniya rangi (charts.js PALETTE). */
.cm { --cw-h: clamp(24rem, 64vh, 40rem); display: grid; grid-template-columns: minmax(0, 1fr) 21rem; gap: 1rem; }
@container main (max-width: 52rem) {
  .cm { grid-template-columns: minmax(0, 1fr); }
  .cm .cw-map-wrap { height: clamp(18rem, 52vh, 26rem); }
  .cm .cw-side { height: 22rem; }
}
.cm-item {
  display: flex; align-items: center; gap: 0.5rem; padding: 0.125rem 0.125rem 0.125rem 0.5rem; border-radius: var(--radius-md);
  transition: background-color var(--duration-fast);
}
.cm-item:hover { background: var(--accent); }
.cm-item.focus { background: color-mix(in oklab, var(--cm-c) 14%, transparent); box-shadow: inset 3px 0 0 var(--cm-c); }
.cm-item.off .cm-item-main { opacity: 0.55; }
/* Kampaniya rangi = ko'rsatish/yashirish tugmasi: to'la — xaritada, bo'sh — yashirilgan */
.cm-swatch {
  flex-shrink: 0; width: 0.875rem; height: 0.875rem; padding: 0; border: 2px solid var(--cm-c); border-radius: var(--radius-sm);
  background: var(--cm-c); cursor: pointer; transition: background-color var(--duration-fast);
}
.cm-swatch[aria-pressed="false"] { background: transparent; }
.cm-swatch:focus-visible { outline: 2px solid var(--focus-border); outline-offset: 2px; }
.cm-item-main {
  display: flex; flex: 1; flex-direction: column; gap: 0.0625rem; min-width: 0; padding: 0.375rem 0; border: 0; background: none;
  color: var(--foreground); font: inherit; font-size: 0.8125rem; text-align: left; cursor: pointer;
}
.cm-item-main:focus-visible { outline: 2px solid var(--focus-border); outline-offset: 1px; border-radius: var(--radius-sm); }
.cm-item-sub {
  display: flex; align-items: center; gap: 0.3125rem; min-width: 0; overflow: hidden; color: var(--muted-foreground);
  font-size: 0.75rem; line-height: 1.35; white-space: nowrap; font-variant-numeric: tabular-nums;
}
.cm-st { font-weight: 500; }
.cm-st-active { color: var(--success); }
.cm-st-planned { color: var(--info); }
.cm-st-done { color: var(--muted-foreground-strong); }
.cm-open { flex-shrink: 0; color: var(--muted-foreground); }
.cm-open:hover { color: var(--foreground); }
.cm-dot-multi { width: 0.625rem; height: 0.625rem; border: 2px solid var(--foreground); background: var(--muted-foreground); }
/* Marker popup'i: sayt + undagi kampaniyalar (bosilganda — hisobotga havola) */
.cm-pop-body { display: flex; flex-direction: column; padding-right: 1rem; }
.cm-pop-body .tip-title { font-size: 0.8125rem; }
.cm-pop-list { display: flex; flex-direction: column; gap: 0.25rem; margin-top: 0.375rem; }
.cm-pop-list:empty { display: none; }
.cm-pop-row { display: flex; align-items: center; gap: 0.375rem; min-width: 0; max-width: 240px; font-size: 0.75rem; color: var(--foreground); }
.cm-pop-row a, .cm-pop-row span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cm-pop-row a { font-weight: 500; }

/* Dashboard: kampaniya xaritasi kartasi */
.cmc-map-wrap { height: clamp(16rem, 42vh, 26rem); }
@container main (max-width: 36rem) { .cmc-fit-l { display: none; } }
@container main (max-width: 30rem) { .cp-new-l { display: none; } }
