/* Дашборды Esepte (аналитика отчётности и реестр объектов).
   Оформление — как у страниц аналитики Qalqan (qalqan-analytics.css): та же палитра, карточки со скруглением 16,
   KPI с цветной левой кромкой, подписи капителью. */
.cs-dash { max-width: 1600px; --ink: #26364a; --mut: #8494a8; --line: #e3eaf2; --primary: #527da7; --teal: #6cafa5; --danger: #c96b7a; --sand: #d8a76a; color: var(--ink); }
.cs-dash-apply { display: none; }
.cs-dash-top { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin: 4px 0 16px; }
.cs-dash-title { font-size: 21px; line-height: 1.2; letter-spacing: -.02em; font-weight: 700; margin: 0; color: var(--ink); }
.cs-dash-sub { color: var(--mut); font-size: 12px; margin-top: 3px; }
.cs-dash-back { font-size: 12px; color: var(--primary); }
.cs-dash-filters { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.cs-dash-filters label { display: flex; flex-direction: column; gap: 3px; font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: var(--mut); }
.cs-dash-filters select { min-width: 150px; max-width: 320px; background: #fff; border: 1px solid var(--line); border-radius: 9px; padding: 6px 10px; font-size: 13px; color: var(--ink); text-transform: none; letter-spacing: 0; }
.cs-dash-reset { font-size: 12px; padding: 7px 0; color: var(--danger); }
.cs-dash-kpis { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 11px; margin-bottom: 15px; }
.cs-dash-kpi { background: #fff; border: 1px solid var(--line); border-left: 3px solid var(--primary); border-radius: 13px; padding: 12px 14px; min-width: 0; }
.cs-dash-kpi .t { font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: var(--mut); }
.cs-dash-kpi .v { font-size: 23px; font-weight: 700; color: var(--ink); line-height: 1.15; margin: 4px 0 3px; letter-spacing: -.2px; }
.cs-dash-kpi .v small { font-size: 13px; color: var(--mut); font-weight: 500; }
.cs-dash-kpi .d { font-size: 10px; line-height: 1.5; color: var(--mut); }
.cs-dash-kpi .bar { height: 5px; background: #eef3f9; border-radius: 4px; overflow: hidden; margin: 6px 0 4px; }
.cs-dash-kpi .bar i { display: block; height: 100%; background: var(--primary); border-radius: 4px; }
.cs-dash .up { color: var(--teal); } .cs-dash .dn { color: var(--danger); } .cs-dash .neg { color: var(--danger); }
.cs-dash-grid { display: grid; gap: 14px; margin-bottom: 14px; }
.cs-dash-grid.g-2-1 { grid-template-columns: 2fr 1fr; }
.cs-dash-grid.g-1-2 { grid-template-columns: 1fr 2fr; }
.cs-dash-grid.g-3-2 { grid-template-columns: 3fr 2fr; }
.cs-dash-grid.g-1-1 { grid-template-columns: 1fr 1fr; }
.cs-dash-grid.g-1-1-1 { grid-template-columns: 1fr 1fr 1fr; }
@media (max-width: 1400px) { .cs-dash-grid.g-1-1-1 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 1100px) { .cs-dash-grid { grid-template-columns: 1fr !important; } .cs-dash-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.cs-dash-card { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 15px 17px 13px; min-width: 0; }
.cs-dash-cardhead { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.cs-dash-cardtitle { font-size: 13px; font-weight: 700; color: #2b4a68; line-height: 1.35; }
.cs-dash-cardsub { font-size: 10px; line-height: 1.55; color: var(--mut); margin-top: 3px; }
.cs-dash-cardactions { display: flex; gap: 12px; white-space: nowrap; }
.cs-dash-cardfoot { display: flex; justify-content: space-between; color: var(--mut); font-size: 11px; margin-top: 10px; }
.cs-dash-link { font-size: 11px; color: var(--primary); }
.cs-dash-rows { display: flex; flex-direction: column; gap: 8px; }
.cs-dash-row { display: grid; grid-template-columns: minmax(180px, 280px) 1fr 130px; gap: 12px; align-items: center; font-size: 12px; }
.cs-dash-row .n { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #34465c; }
.cs-dash-row .b { height: 9px; background: #f2f6fa; border-radius: 5px; overflow: hidden; }
.cs-dash-row .b i { display: block; height: 100%; border-radius: 5px; background: var(--primary); }
.cs-dash-row .b i.w, .cs-dash-legend i.w { background: var(--sand); }
.cs-dash-row .b i.r, .cs-dash-legend i.r { background: var(--danger); }
.cs-dash-legend i.ok { background: var(--primary); }
.cs-dash-row .p { text-align: right; color: var(--mut); font-variant-numeric: tabular-nums; }
.cs-dash-row .p b { color: var(--ink); }
.cs-dash-legend { display: flex; gap: 14px; flex-wrap: wrap; font-size: 11px; color: #4a5c72; margin-top: 10px; }
.cs-dash-legend i { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 6px; vertical-align: -1px; }
.cs-dash-tablewrap { overflow-x: auto; }
.cs-dash-table { width: 100%; border-collapse: collapse; font-size: 11px; }
.cs-dash-table th { text-align: left; color: #7c8ca0; font-weight: 600; font-size: 10px; padding: 6px 8px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.cs-dash-table td { padding: 6px 8px; border-bottom: 1px solid #f0f4f8; color: #34465c; }
.cs-dash-table tbody tr:hover { background: #f7fafc; }
.cs-dash-table td.num, .cs-dash-table th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.cs-dash-table tr:last-child td { border-bottom: 0; }
.cs-dash-table a { color: var(--primary); }
.cs-dash-tag { display: inline-block; font-size: 10px; padding: 2px 7px; border-radius: 6px; background: #eef3f9; color: #6b7d95; white-space: nowrap; }
.cs-dash-tag.bad { background: #f7e6e9; color: #a4505f; }
.cs-dash-tag.warn { background: #f7eddc; color: #8a6a2a; }
.cs-dash-tag.info { background: #e6f0f7; color: #3f6c94; }
.cs-dash-tag.ok { background: #e6f4f1; color: #2b7f74; }
.cs-dash-chart { min-height: 260px; }
.cs-dash-donut { display: flex; gap: 16px; align-items: center; }
.cs-dash-donut-chart { width: 190px; min-height: 190px; flex: 0 0 190px; }
.cs-dash-donut ul { list-style: none; margin: 0; padding: 0; font-size: 12px; display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }
.cs-dash-donut li { display: flex; justify-content: space-between; gap: 8px; }
.cs-dash-donut li i { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 8px; vertical-align: -1px; }
.cs-dash-donut li span { color: var(--mut); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cs-dash-hint { color: var(--mut); font-size: 10px; margin-top: 8px; }
.cs-dash-foot { color: var(--mut); font-size: 10px; line-height: 1.55; margin-top: 8px; }
.cs-dash-errors { margin-top: 8px; }
/* точечная карта — перенос .qlq-map-* из stat.css Qalqan */
.cs-dash-grid.g-1 { grid-template-columns: 1fr; }
.cs-dash-map-content { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 16px; align-items: start; }
@media (max-width: 1100px) { .cs-dash-map-content { grid-template-columns: 1fr; } }
.cs-dash-map-grid { display: grid; grid-template-columns: repeat(35, 18px); grid-template-rows: repeat(20, 18px); gap: 3px; justify-content: center; min-height: 417px; }
@media (max-width: 900px) { .cs-dash-map-grid { grid-template-columns: repeat(35, 12px); grid-template-rows: repeat(20, 12px); gap: 2px; min-height: 0; } }
.cs-dash-map-pixel { position: relative; display: block; border: 2px solid #fff; border-radius: .25rem; cursor: crosshair; transition: background-color 120ms ease, transform 120ms ease; }
.cs-dash-map-pixel::after { position: absolute; top: 50%; left: 50%; width: 3px; height: 3px; border-radius: 50%; background: rgba(255,255,255,.5); content: ""; opacity: 0; transform: translate(-50%, -50%); }
.cs-dash-map-pixel:hover::after, .cs-dash-map-pixel.is-active::after { opacity: 1; }
.cs-dash-map-pixel.is-city { border-color: transparent; background: var(--sand) !important; }
.cs-dash-map-grid.is-isolating .cs-dash-map-pixel.is-active { background: rgb(0 97 150) !important; }
.cs-dash-map-grid.is-isolating .cs-dash-map-pixel.is-city.is-active { background: var(--sand) !important; filter: brightness(1.12); }
.cs-dash-map-legend { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-top: 1rem; color: var(--mut); font-size: .75rem; }
.cs-dash-map-gradient { width: 7.5rem; height: .55rem; border-radius: 4px; background: linear-gradient(90deg, rgba(0,97,150,.22) 0 16.666%, rgba(0,97,150,.36) 16.666% 33.333%, rgba(0,97,150,.5) 33.333% 50%, rgba(0,97,150,.64) 50% 66.666%, rgba(0,97,150,.79) 66.666% 83.333%, rgba(0,97,150,.94) 83.333% 100%); }
.cs-dash-map-city { width: .75rem; height: .75rem; margin-left: .5rem; border-radius: 4px; background: var(--sand); }
.cs-dash-map-summary { background: #f4f7fa; border-radius: 12px; padding: 14px 16px; }
.cs-dash-map-summary-item { padding: .4rem 0; border-bottom: 1px solid var(--line); }
.cs-dash-map-summary-item:first-child { padding-top: 0; }
.cs-dash-map-summary-item:last-child { border-bottom: 0; }
.cs-dash-map-summary-item strong, .cs-dash-map-summary-item span { display: block; }
.cs-dash-map-summary-item strong { font-size: .85rem; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.1; color: var(--ink); }
.cs-dash-map-summary-item span { margin-top: .1rem; color: var(--mut); font-size: .75rem; line-height: 1.15; }
.cs-dash-map-summary-market { margin-top: .5rem; padding-top: .5rem; border-top: 1px solid var(--line); }
.cs-dash-tooltip-market-values { display: flex; justify-content: space-between; gap: 1rem; margin-top: .2rem; font-size: .6875rem; font-weight: 600; }
.cs-dash-tooltip-market-values .gov { color: var(--primary); } .cs-dash-tooltip-market-values .priv { color: var(--sand); }
.cs-dash-tooltip-share { display: flex; height: 6px; margin-top: .5rem; overflow: hidden; background: #e8eef4; border-radius: 3px; }
.cs-dash-tooltip-share .p { background: var(--primary); } .cs-dash-tooltip-share .s { background: var(--sand); }
.cs-dash-map-tooltip { position: fixed; z-index: 2000; display: none; min-width: 250px; padding: 12px 14px; background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 0 35px rgba(154,161,171,.2); pointer-events: none; font-size: 12px; color: var(--ink); }
.cs-dash-map-tooltip.is-visible { display: block; }
.cs-dash-tooltip-title { margin-bottom: .65rem; padding-bottom: .5rem; border-bottom: 1px solid var(--line); color: var(--primary); font-weight: 700; }
.cs-dash-tooltip-row { display: flex; justify-content: space-between; gap: 1rem; margin-top: .35rem; }
.cs-dash-tooltip-row span { color: var(--mut); } .cs-dash-tooltip-row strong { font-variant-numeric: tabular-nums; }
.cs-dash-tooltip-market-label { margin-top: .65rem; color: var(--mut); font-size: .75rem; font-weight: 600; }
.cs-dash-tree { font-size: 12px; }
.cs-dash-tree .lvl { display: flex; justify-content: space-between; gap: 8px; padding: 6px 8px; border-bottom: 1px solid #f0f4f8; }
.cs-dash-tree .lvl.l1 { padding-left: 26px; color: #3a4250; }
.cs-dash-tree .lvl span { font-variant-numeric: tabular-nums; color: var(--mut); white-space: nowrap; }
.cs-dash-tree .lvl a { color: var(--ink); }
.cs-dash-tree .lvl.bad, .cs-dash-tree .lvl.bad a { color: var(--danger); }
.cs-dash-quality { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.cs-dash-q { border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.cs-dash-q b { font-size: 19px; color: var(--ink); }
.cs-dash-q .l { font-size: 11px; color: var(--mut); }
.cs-dash-q a { color: inherit; }

/* Панель синхронизации матрицы (/admin/cs-matrix-sync) */
.cs-sync .cs-dash-cardbody { font-size: 12px; }
.cs-sync-btns { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.cs-sync-btns .btn { border-radius: 8px; }
.cs-sync-danger { color: var(--danger); }
.cs-sync-kv { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 18px; }
.cs-sync-kv div { display: flex; justify-content: space-between; gap: 8px; padding: 5px 0; border-bottom: 1px solid #f0f4f8; min-width: 0; }
.cs-sync-kv div span { color: var(--mut); white-space: nowrap; }
.cs-sync-kv div b { font-weight: 600; text-align: right; overflow: hidden; text-overflow: ellipsis; }
.cs-sync-table td { vertical-align: middle; }
.cs-sync-table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.cs-sync-time { color: var(--mut); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cs-sync-err { color: #a4505f; max-width: 360px; }
.cs-sync-stage { color: var(--mut); max-width: 360px; }
.cs-sync code { white-space: nowrap; }
.cs-sync-bar { height: 5px; background: #eef3f9; border-radius: 4px; overflow: hidden; margin: 4px 0 2px; min-width: 120px; }
.cs-sync-bar i { display: block; height: 100%; background: var(--primary); border-radius: 4px; transition: width .4s; }
.cs-sync-acts { white-space: nowrap; text-align: right; }
.cs-sync-acts .btn { margin-left: 4px; padding: 1px 8px; font-size: 11px; border-radius: 6px; }
@media (max-width: 1100px) { .cs-sync-kv { grid-template-columns: 1fr; } }

/* Паспорт госуслуги «Представление информации из Реестра» (/service/registry-info) */
.cs-svc { max-width: 1200px; }
.cs-svc-title { margin: 4px 0 16px; max-width: 900px; line-height: 1.3; }
.cs-svc-grid { display: grid; grid-template-columns: 340px 1fr; gap: 14px; }
@media (max-width: 900px) { .cs-svc-grid { grid-template-columns: 1fr; } }
.cs-svc-btn { display: block; text-align: center; background: var(--primary); color: #fff !important; font-weight: 600; font-size: 14px; padding: 12px 16px; border-radius: 10px; text-decoration: none !important; }
.cs-svc-btn:hover { background: #456c93; }
.cs-svc-btn small { display: block; font-weight: 400; font-size: 11px; opacity: .85; margin-top: 2px; }
.cs-svc-count { margin: 14px 0 4px; padding: 12px 14px; border-radius: 12px; background: #f4f7fa; border-left: 3px solid var(--teal); }
.cs-svc-count .t { font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: var(--mut); }
.cs-svc-count .v { font-size: 26px; font-weight: 700; margin-top: 2px; font-variant-numeric: tabular-nums; }
.cs-svc-kv > div { padding: 9px 0; border-bottom: 1px solid #f0f4f8; font-size: 13px; }
.cs-svc-kv > div:last-child { border-bottom: 0; }
.cs-svc-kv span { display: block; font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: var(--mut); margin-bottom: 2px; }
.cs-svc-kv a, .cs-svc a { color: var(--primary); }
.cs-svc-sec { font-size: 13px; font-weight: 700; color: #2b4a68; margin: 2px 0 8px; }
.cs-svc p, .cs-svc ul { font-size: 13px; line-height: 1.55; margin: 0 0 12px; }
.cs-svc ul { padding-left: 18px; }
.cs-svc-crit { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 14px; }
@media (max-width: 600px) { .cs-svc-crit { grid-template-columns: 1fr; } }
.cs-svc-crit div { border: 1px solid var(--line); border-radius: 10px; padding: 8px 10px; font-size: 12px; }
.cs-svc-crit b { display: block; color: var(--ink); }
.cs-svc-crit span { color: var(--mut); font-size: 11px; }
.cs-svc-note { font-size: 12px; color: #4a5c72; background: #eef6f4; border-radius: 10px; padding: 9px 12px; margin-bottom: 12px; }
/* Счётчик услуги на дашборде реестра */
.cs-dash-quality.cs-dash-quality-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 10px; }
@media (max-width: 700px) { .cs-dash-quality.cs-dash-quality-3 { grid-template-columns: 1fr; } }
.cs-sync-kv.cs-dash-kv1 { grid-template-columns: 1fr; font-size: 12px; }
