/* Object Sans — локально, веса по канону ДС: Regular 400 (текст) + Heavy 800 (заголовки) */
@font-face{font-family:"Object Sans";src:url("fonts/ObjectSans-Regular.ttf") format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:"Object Sans";src:url("fonts/ObjectSans-Heavy.ttf") format("truetype");font-weight:800;font-display:swap}

/* ============ ТОКЕНЫ — канонический :root из Dreamteam DS v1 ============ */
:root{
  /* 5 brand colors */
  --dark:228 6% 17%;--light:60 23% 94%;--warm:24 49% 53%;--yellow:44 89% 61%;--teal:175 14% 69%;
  /* UI tokens */
  --background:var(--light);--foreground:var(--dark);--surface:0 0% 100%;
  --muted:60 15% 90%;--muted-foreground:228 4% 46%;--border:60 8% 85%;
  --destructive:0 84% 60%;--radius:0.5rem;
  /* Component aliases */
  --card:var(--surface);--card-foreground:var(--dark);
  --popover:var(--surface);--popover-foreground:var(--dark);
  --primary:var(--dark);--primary-foreground:var(--light);
  --secondary:var(--muted);--secondary-foreground:var(--dark);
  --accent:var(--muted);--accent-foreground:var(--dark);
  --destructive-foreground:0 0% 100%;
  --input:var(--border);--ring:var(--dark);
  /* Sidebar */
  --sidebar-background:var(--dark);--sidebar-foreground:0 0% 100%;
  --sidebar-primary:var(--light);--sidebar-primary-foreground:var(--dark);
  --sidebar-accent:0 0% 100% / .05;--sidebar-accent-foreground:var(--light);
  --sidebar-border:0 0% 100% / .1;--sidebar-ring:var(--dark);
  --sidebar-muted:0 0% 60%;--sidebar-width:240px;
  /* совместимость со старым именем */
  --muted-fg:var(--muted-foreground);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Object Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:hsl(var(--background));color:hsl(var(--foreground));font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,h5,h6{font-weight:800;line-height:1.2}
button,input,select,textarea{font-family:inherit}
a{color:inherit}

/* ============ LAYOUT ============ */
.app{display:grid;grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh}
.main{min-height:100vh;overflow:hidden}
.view{display:flex;flex-direction:column;height:100vh;overflow:hidden}

/* ============ SIDEBAR — спека ДС (240px, 24px 16px, без отклонений) ============ */
.sidebar{background:hsl(var(--sidebar-background));color:hsl(var(--sidebar-foreground));padding:24px 16px;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;z-index:50}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:0 8px 24px;border:none;background:transparent;cursor:pointer;width:100%;text-align:left;position:relative;color:inherit;font:inherit}
.sidebar-brand .logo{width:28px;height:28px;border-radius:8px;background:hsl(var(--sidebar-primary));display:grid;place-items:center;color:hsl(var(--sidebar-primary-foreground));font-weight:800;font-size:14px;flex-shrink:0}
.sidebar-brand .name{font-size:15px;font-weight:800;letter-spacing:.2px;line-height:1.1}
.sidebar-brand .sub{font-size:10px;color:hsl(var(--sidebar-muted));margin-top:1px;font-weight:400}
.sidebar-close{display:none;margin-left:auto;background:none;border:none;color:hsl(var(--sidebar-foreground));opacity:.7;cursor:pointer;font-size:14px;padding:2px}
.sidebar nav{display:flex;flex-direction:column;gap:2px}
.nav-group{color:hsl(var(--sidebar-muted));font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;padding:14px 8px 6px}
.nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;color:hsl(var(--sidebar-foreground));text-decoration:none;font-size:14px;font-weight:400;transition:background .15s;cursor:pointer;border:none;background:transparent;width:100%;text-align:left}
.nav-item:hover{background:hsl(var(--sidebar-accent))}
.nav-item.active{background:hsl(var(--sidebar-accent));color:hsl(var(--sidebar-accent-foreground))}
.nav-item svg{flex-shrink:0;width:16px;height:16px;opacity:.7}
.nav-item.active svg{opacity:1}
.nav-badge{margin-left:auto;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:hsl(var(--destructive));color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;line-height:1;flex-shrink:0}
.nav-badge[hidden]{display:none}
.sidebar-footer{margin-top:auto;padding:16px 8px 0;border-top:1px solid hsl(var(--sidebar-border))}
.sidebar-user{display:flex;align-items:center;gap:8px}
.sidebar-user .av{background:hsl(var(--warm));color:#fff;font-size:11px}
.sidebar-user .info .nm{font-size:12px;font-weight:800}
.sidebar-user .info .rl{font-size:11px;color:hsl(var(--sidebar-muted));word-break:break-all}
.logout-btn{color:hsl(var(--sidebar-muted));margin-top:10px;width:100%;justify-content:flex-start}
.logout-btn:hover{background:hsl(var(--sidebar-accent));color:hsl(var(--sidebar-accent-foreground))}

/* PRODUCT SWITCHER — dropdown из brand-блока (канон: 280px, p8, r8, shadow-lg) */
.product-switcher{position:absolute;top:calc(100% - 12px);left:8px;background:hsl(var(--popover));color:hsl(var(--popover-foreground));border:1px solid hsl(var(--border));border-radius:8px;padding:8px;min-width:280px;box-shadow:0 10px 15px -3px rgb(0 0 0/.1),0 4px 6px -4px rgb(0 0 0/.1);z-index:60;display:none}
.product-switcher.open{display:block}
.product-switcher .ps-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:6px;cursor:default}
.product-switcher .ps-item.current{background:hsl(var(--accent))}
.product-switcher .ps-item .ps-logo{width:32px;height:32px;border-radius:8px;background:#292a2e;display:grid;place-items:center;color:#fff;font-weight:800;font-size:14px;flex-shrink:0}
.product-switcher .ps-item .ps-name{font-size:14px;font-weight:400}
.product-switcher .ps-item .ps-desc{font-size:11px;color:hsl(var(--muted-foreground))}
.product-switcher .ps-item.stub .ps-name{color:hsl(var(--muted-foreground))}
.product-switcher .ps-sep{height:1px;background:hsl(var(--border));margin:4px -4px}

/* ============ MOBILE TOPBAR + DRAWER (канон: <768px) ============ */
.mobile-topbar{display:none;position:sticky;top:0;z-index:30;height:48px;align-items:center;gap:8px;padding:0 12px;background:hsl(var(--background)/.95);backdrop-filter:blur(8px);border-bottom:1px solid hsl(var(--border))}
.burger{background:none;border:none;cursor:pointer;padding:6px;border-radius:6px;color:hsl(var(--foreground));display:grid;place-items:center}
.burger:hover{background:hsl(var(--accent))}
.topbar-logo{width:20px;height:20px;border-radius:6px;background:hsl(var(--primary));color:hsl(var(--primary-foreground));display:grid;place-items:center;font-weight:800;font-size:10px;flex-shrink:0}
.topbar-title{font-size:14px;font-weight:800}
.topbar-action{margin-left:auto}
.drawer-overlay{display:none;position:fixed;inset:0;background:rgb(0 0 0/.55);z-index:40;opacity:0;transition:opacity .2s ease-out}
.drawer-overlay.open{opacity:1}

/* ============ LOGIN (канон Auth) ============ */
.login-screen{position:fixed;inset:0;display:none;place-items:center;background:hsl(var(--background));z-index:500}
.login-screen.open{display:grid}
.login-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:8px;padding:48px 32px;text-align:center;max-width:400px}
.login-logo{width:48px;height:48px;border-radius:12px;background:hsl(var(--primary));color:#fff;display:grid;place-items:center;font-weight:800;font-size:20px;margin:0 auto 24px}
.login-card h2{font-size:22px;margin-bottom:8px}
.login-card p{font-size:14px;color:hsl(var(--muted-foreground));margin-bottom:24px}
.login-err{font-size:12px;color:hsl(var(--destructive));margin-top:12px;min-height:16px}

/* ============ PAGE HEADER (компакт сервиса; на мобиле скрыт по канону) ============ */
.page-hdr{padding:24px 32px 16px;border-bottom:1px solid hsl(var(--border));display:flex;align-items:center;gap:12px;background:hsl(var(--surface));flex-shrink:0;flex-wrap:wrap;margin-bottom:12px}
.page-hdr h1{font-size:20px}
.page-hdr .page-sub{font-size:13px;color:hsl(var(--muted-foreground));margin-left:4px;font-weight:400}
.hdr-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* ============ КНОПКИ — канон: h36, r6, 14px/500 ============ */
.btn{display:inline-flex;align-items:center;gap:8px;padding:0 16px;height:36px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:background .15s,color .15s,border-color .15s;text-decoration:none}
.btn-primary{background:hsl(var(--primary));color:hsl(var(--primary-foreground))}
.btn-primary:hover{background:hsl(var(--primary)/.9)}
.btn-secondary{background:hsl(var(--secondary));color:hsl(var(--secondary-foreground))}
.btn-secondary:hover{background:hsl(var(--secondary)/.8)}
.btn-outline{background:transparent;border-color:hsl(var(--border));color:hsl(var(--foreground))}
.btn-outline:hover{background:hsl(var(--accent))}
.btn-ghost{background:transparent;color:hsl(var(--foreground))}
.btn-ghost:hover{background:hsl(var(--accent))}
.btn-destructive{background:hsl(var(--destructive));color:hsl(var(--destructive-foreground))}
.btn-destructive:hover{background:hsl(var(--destructive)/.9)}
/* «В чёрный список» — бледно-красная кнопка (не насыщенный destructive) */
.btn-bl{background:hsl(0 84% 96%);color:hsl(0 72% 42%);border:1px solid hsl(0 84% 88%)}
.btn-bl:hover{background:hsl(0 84% 92%)}
.btn-sm{height:30px;padding:0 12px;font-size:13px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn:focus-visible{outline:none;box-shadow:0 0 0 2px hsl(var(--ring)/.3)}

/* ============ БЕЙДЖИ — канон: pill, h22, 12px/500 + статусные тинты ============ */
.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;height:22px;border-radius:9999px;font-size:12px;font-weight:500;white-space:nowrap}
.badge-default{background:hsl(var(--primary));color:hsl(var(--primary-foreground))}
.badge-secondary{background:hsl(var(--secondary));color:hsl(var(--secondary-foreground))}
.badge-outline{background:transparent;color:hsl(var(--foreground));border:1px solid hsl(var(--border))}
/* статусные оттенки ДС (тинт-индикаторы) */
.badge-success{background:rgb(209 250 229);color:rgb(4 120 87)}
.badge-warn{background:rgb(255 251 235);color:rgb(217 119 6)}
.badge-danger{background:rgb(254 226 226);color:rgb(185 28 28)}
.badge-blacklist{background:rgb(254 226 226);color:rgb(153 27 27);font-weight:600}
.badge-a4-over{background:rgb(254 243 199);color:rgb(180 83 9);font-weight:600}
/* Счётчик лимита A4 под Quill-редактором (0.86.0) */
.a4-counter{font-size:12px;color:hsl(var(--muted-fg));text-align:right;padding:4px 2px 0}
.a4-counter-over{color:rgb(185 28 28);font-weight:600}
.cd-blacklist{margin-top:8px}
.badge-info{background:rgb(240 249 255);color:rgb(14 165 233)}
/* VIP-метка a-list: фирменный тёмный (как btn-primary/сайдбар), белый текст */
.badge-alist{background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-weight:600}
/* строка списка: имя + бейдж на одной линии, высота строки не растёт */
.cell-namewrap{display:flex;align-items:center;gap:8px;white-space:nowrap}
.cell-namewrap .badge-alist{height:18px;padding:1px 8px;font-size:11px;flex-shrink:0}
/* причина рекомендации в строке списка (reco-режим): приглушённый бейдж, не крадёт внимание у имени.
   Фразы короткие («упоминал X 5 раз», «пишет про рестораны и еду») — помещаются целиком, без обрезки. */
.badge.reco-reason{background:hsl(var(--muted)/.7);color:hsl(var(--muted-foreground));font-weight:500;height:18px;padding:1px 8px;font-size:11px;flex-shrink:0;white-space:nowrap}
/* триггер-теги рекомендаций (язык действия). hot заметнее warm, info приглушён; без эмодзи */
.badge.reco-reason.trg-hot{background:rgb(255 237 213);color:rgb(154 52 18);font-weight:600}
.badge.reco-reason.trg-warm{background:rgb(255 251 235);color:rgb(217 119 6);font-weight:500}
.badge.reco-reason.trg-info{background:hsl(var(--muted)/.7);color:hsl(var(--muted-foreground));font-weight:500}
/* негативное упоминание — серая заметка в карточке (не триггер, не в бейдже списка) */
.badge.reco-reason.trg-neg{background:hsl(var(--muted)/.6);color:hsl(var(--muted-foreground));font-weight:500}
/* строка активности канала в «Что дальше» (info-теги, без кнопки) — приглушённая, мелкая */
.cd-activity{margin-top:8px;font-size:12px;color:hsl(var(--muted-foreground));display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.badge-special{background:rgb(245 243 255);color:rgb(139 92 246)}
/* категорийные (вспомогательные брендовые, по ДС category badge) */
.cat-warm{background:hsl(var(--warm)/.15);color:hsl(var(--warm));border:1px solid hsl(var(--warm)/.3)}
.cat-yellow{background:hsl(var(--yellow)/.2);color:hsl(44 60% 35%);border:1px solid hsl(var(--yellow)/.4)}
.cat-teal{background:hsl(var(--teal)/.2);color:hsl(175 20% 35%);border:1px solid hsl(var(--teal)/.4)}

/* ============ CARD ============ */
.card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius)}

/* ============ ФОРМЫ — канон: h36, 14px, label 13/500, ring 2px ============ */
.inp{height:36px;padding:0 12px;border:1px solid hsl(var(--input));border-radius:6px;font-size:14px;color:hsl(var(--foreground));background:hsl(var(--card));outline:none;width:100%}
.inp:focus{border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring)/.2)}
.inp-search{padding-left:34px}
textarea.inp{height:auto;min-height:140px;padding:10px 12px;resize:vertical;line-height:1.6}
/* ---- Базовый релиз: полноэкранная страница-редактор (Quill 2.x snow) ---- */
.rel-editor-page{display:flex;flex-direction:column;gap:14px;height:100%;padding:20px 32px;box-sizing:border-box;overflow:hidden}
.rep-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.rep-title{font-size:20px;font-weight:800;margin:0}
.rep-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.rep-autosave{font-size:12px;color:hsl(var(--muted-fg))}
.rep-form{display:flex;gap:16px;flex-wrap:wrap}
.rep-form .form-row{flex:1 1 300px;min-width:240px;display:flex;flex-direction:column;gap:6px}
.rep-main{flex:1;display:flex;gap:14px;min-height:0}
.rep-editor-wrap{flex:1;display:flex;flex-direction:column;min-height:0}
.rep-editor-wrap .ql-toolbar{border:1px solid hsl(var(--input));border-bottom:none;border-radius:6px 6px 0 0;background:hsl(var(--muted)/.4);display:flex;flex-wrap:nowrap;align-items:center;overflow-x:auto}
.rep-editor-wrap .ql-toolbar .ql-formats{display:inline-flex;align-items:center;margin-right:10px}
.rep-editor-wrap .ql-container{flex:1;min-height:0;border:1px solid hsl(var(--input));border-radius:0 0 6px 6px;font-family:"Object Sans",inherit;font-size:15px;background:hsl(var(--card));display:flex;flex-direction:column;overflow:hidden}
.rep-editor-wrap .ql-editor{flex:1;overflow-y:auto;line-height:1.65;color:hsl(var(--foreground))}
.rep-editor-wrap .ql-editor.ql-blank::before{color:hsl(var(--muted-foreground));font-style:normal}
.rep-editor-wrap .ql-editor h2{font-size:22px;font-weight:800;margin:.6em 0 .3em}
.rep-editor-wrap .ql-editor h3{font-size:18px;font-weight:800;margin:.5em 0 .3em}
.rep-editor-wrap .ql-editor img{max-width:100%}
/* Подписи тулбара по-русски: уровень заголовка */
.ql-snow .ql-picker.ql-header{width:140px}
.ql-snow .ql-picker.ql-header .ql-picker-label::before,
.ql-snow .ql-picker.ql-header .ql-picker-item::before{content:"Обычный текст"}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before{content:"Заголовок"}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before{content:"Подзаголовок"}
/* Размер шрифта — числами (false = 16) */
.ql-snow .ql-picker.ql-size{width:60px}
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before{content:"16"}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="12px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="12px"]::before{content:"12"}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]::before{content:"14"}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="18px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18px"]::before{content:"18"}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="24px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="24px"]::before{content:"24"}
/* Результат проверки ToV */
/* Боковая панель проверки ToV */
.rep-tov-panel{width:360px;flex-shrink:0;display:flex;flex-direction:column;min-height:0;border:1px solid hsl(var(--input));border-radius:8px;background:hsl(var(--card));overflow:hidden}
.rep-tov-panel[hidden]{display:none} /* атрибут hidden иначе перебивается display:flex */
.rtp-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid hsl(var(--border));background:hsl(var(--muted)/.4)}
.rtp-title{font-weight:800}
.rtp-close{border:none;background:none;font-size:16px;line-height:1;cursor:pointer;color:hsl(var(--muted-foreground));padding:2px 6px}
.rtp-close:hover{color:hsl(var(--foreground))}
.rtp-body{flex:1;min-height:0;overflow-y:auto;padding:14px}
.rtp-loading,.rtp-error{color:hsl(var(--muted-foreground));line-height:1.5}
.rtp-error{color:hsl(var(--danger-fg,0 70% 45%))}
.rtp-score{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.rtp-score-num{font-size:28px;font-weight:800}
.rtp-score-max{color:hsl(var(--muted-foreground))}
.rtp-source{margin-left:auto;font-size:12px;color:hsl(var(--muted-foreground));align-self:center}
.rtp-summary{line-height:1.5;margin-bottom:12px}
.rtp-ok{color:hsl(var(--success-fg,142 50% 40%));line-height:1.5}
.rtp-issues{display:flex;flex-direction:column;gap:10px}
.rtp-card{border:1px solid hsl(var(--border));border-radius:8px;padding:10px 12px;background:hsl(var(--background))}
.rtp-card.applied{border-color:hsl(142 45% 60%);background:hsl(142 45% 97%)}
.rtp-apply.rtp-undo{color:hsl(var(--muted-foreground));border-color:hsl(var(--border))}
.rtp-prob{font-size:12px;color:hsl(var(--muted-foreground));margin-bottom:6px;line-height:1.4}
.rtp-diff{display:flex;flex-direction:column;gap:4px;margin-bottom:8px;line-height:1.45}
.rtp-was,.rtp-now{font-size:13px}
.rtp-was{text-decoration:line-through;color:hsl(var(--muted-foreground))}
.rtp-now{color:hsl(var(--foreground))}
.rtp-lbl{display:inline-block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;padding:1px 5px;border-radius:3px;margin-right:6px;background:hsl(var(--muted)/.7);color:hsl(var(--muted-foreground))}
.rtp-now .rtp-lbl{background:hsl(142 40% 88%);color:hsl(142 40% 28%)}
.rtp-foot{display:flex;align-items:center;gap:8px}
.rtp-note{font-size:11px;color:hsl(var(--muted-foreground));line-height:1.3}
/* Кнопка «Удалить» в оверлее ресайза картинки (#editor-resizer) */
#editor-resizer .toolbar .rep-img-del{color:#fff;background:hsl(0 70% 50%);border-radius:4px;padding:0 8px;margin-left:4px;cursor:pointer;white-space:nowrap}
#editor-resizer .toolbar .rep-img-del:hover{background:hsl(0 70% 44%)}
.search-wrap{position:relative}
.search-wrap svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:hsl(var(--muted-foreground))}
.select{height:36px;padding:0 12px;border:1px solid hsl(var(--input));border-radius:6px;font-size:14px;background:hsl(var(--card));outline:none;width:100%}
.select:focus{border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring)/.2)}
.select-sm{height:30px;padding:0 8px;font-size:13px;width:auto}
.form-row{display:flex;flex-direction:column;gap:6px}
.form-row label{font-size:13px;font-weight:500;color:hsl(var(--foreground))}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* ============ ТАБЫ — канон: 14/500, active border primary ============ */
.tabs{display:flex;gap:0;border-bottom:1px solid hsl(var(--border));margin-bottom:20px}
.tab{padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;color:hsl(var(--muted-foreground));background:none;border-top:none;border-left:none;border-right:none}
.tab.active{color:hsl(var(--foreground));border-bottom-color:hsl(var(--primary))}
.tab:hover:not(.active){color:hsl(var(--foreground))}

/* PILLS (фильтры — категорийный паттерн сервиса) */
.pills{display:flex;gap:6px;flex-wrap:wrap}
.pill{padding:4px 12px;border-radius:9999px;border:1px solid hsl(var(--border));font-size:12px;font-weight:500;cursor:pointer;background:hsl(var(--card));color:hsl(var(--foreground));transition:all .15s}
.pill.on{background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-color:hsl(var(--primary))}
/* чип «A-лист» — без спец-акцента: неактивный как прочие, активный — штатный тёмный .pill.on */
/* вертикальный разделитель между «Рекомендовано» (иное измерение) и типовыми чипами в одном ряду */
.pill-sep{width:1px;align-self:stretch;margin:2px 4px;background:hsl(var(--border))}

/* ============ AVATAR ============ */
.av{display:inline-grid;place-items:center;border-radius:50%;font-weight:600;flex-shrink:0;color:#fff}
.av28{width:28px;height:28px;font-size:11px}
.av32{width:32px;height:32px;font-size:13px}
.av48{width:48px;height:48px;font-size:18px}

/* ============ TOOLBAR / TABLE / PAGER ============ */
.toolbar{padding:14px 32px;border-bottom:1px solid hsl(var(--border));background:hsl(var(--surface));display:flex;gap:10px;align-items:center;flex-wrap:wrap;flex-shrink:0}
.table-wrap{flex:1;overflow-y:auto;overflow-x:auto;padding:0 32px}
.mentions-table{width:100%;border-collapse:collapse;font-size:14px}
.mentions-table th{text-align:left;padding:12px 10px;font-size:11px;font-weight:600;color:hsl(var(--muted-foreground));border-bottom:1px solid hsl(var(--border));text-transform:uppercase;letter-spacing:1px;position:sticky;top:0;background:hsl(var(--background));z-index:1}
.mentions-table td{padding:10px;border-bottom:1px solid hsl(var(--border)/.6)}
.mentions-table tbody tr{cursor:pointer}
.mentions-table tbody tr:hover{background:hsl(var(--muted)/.5)}
.mentions-table .reach{font-weight:800;color:hsl(var(--warm))}
.mentions-table .rank{font-size:11px;color:hsl(var(--muted-foreground));width:24px}
/* Каналы мониторинга: кликабельные заголовки сортировки, чекбокс-фильтр, тумблер «Мониторинг» */
.mentions-table th.th-sort{cursor:pointer;user-select:none;white-space:nowrap}
.mentions-table th.th-sort:hover{color:hsl(var(--foreground))}
/* Лид-лист: семь колонок против четырёх у «Каналов», и он единственный не влезал в окно.
   Замер (1280 CSS-px = 1920 при масштабе Windows 150%): таблице нужно min-content 966 при
   доступных 907 — переполнение 59px, обрезало кнопку. Двойной горизонтальный отступ (.mon-layout
   даёт 32px, и .table-wrap добавляет свои 32px) снят — заодно таблица встала вровень с полем
   поиска; длинным заголовкам сортировки разрешён перенос. Итог: min-content 868, влезает от 1172px.
   Классы-модификаторы — чтобы «Каналы мониторинга» и лента упоминаний остались как были. */
.lead-wrap{padding-left:0;padding-right:0}
.lead-table th.th-sort{white-space:normal}
.ch-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:hsl(var(--muted-foreground));cursor:pointer}
.ch-check input{cursor:pointer}
.tg-switch{position:relative;width:40px;height:22px;padding:0;border:1px solid hsl(var(--border));border-radius:999px;background:hsl(var(--muted));cursor:pointer;vertical-align:middle;transition:background .15s,border-color .15s}
.tg-switch::before{content:"";position:absolute;left:3px;top:50%;width:16px;height:16px;background:#fff;border-radius:50%;box-shadow:0 1px 2px rgb(0 0 0/.25);transform:translateY(-50%);transition:transform .15s}
.tg-switch[aria-checked="true"]{background:hsl(var(--primary));border-color:hsl(var(--primary))}
.tg-switch[aria-checked="true"]::before{transform:translate(18px,-50%)}
.tg-switch:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}
.tg-switch:disabled{opacity:.5;cursor:default}
.pager{padding:10px 32px;border-top:1px solid hsl(var(--border));background:hsl(var(--surface));display:flex;align-items:center;gap:10px;font-size:12px;color:hsl(var(--muted-foreground));flex-shrink:0}
.cell-name{display:flex;align-items:center;gap:10px;font-weight:400}

/* ============ CONTACT CARD ============ */
/* Шапка — ОДИН блок на всю ширину: вертикальный стек (строка имени/кнопок + слоты Показатели/
   О канале/Комментарии, разделённые линией). НЕ flex-строка: раньше здесь стоял display:flex —
   наследство прежней раскладки «инфо | кнопки», и добавленные слоты вставали ТРЕТЬЕЙ-ЧЕТВЁРТОЙ
   колонкой в тот же ряд (описание сжималось в полосу и уезжало за край). Горизонталь живёт
   уровнем ниже, в .cd-head-top. */
.cd-header{padding:24px 32px;border-bottom:1px solid hsl(var(--border));background:hsl(var(--surface));flex-shrink:0}
/* строка имени: инфо слева (тянется), кнопки справа (не сжимаются) — на одной горизонтали */
.cd-head-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.cd-info{flex:1;min-width:0}
.cd-name{font-size:18px;font-weight:800;margin-bottom:4px}
.cd-meta-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}
.cd-contact-row{margin-top:12px;font-size:12px;color:hsl(var(--muted-foreground));display:flex;flex-direction:column;gap:3px}
.cd-actions{padding:14px 32px;border-bottom:1px solid hsl(var(--border));display:flex;gap:8px;background:hsl(var(--surface));flex-shrink:0;flex-wrap:wrap}
.cd-body{padding:20px 32px;flex:1;overflow-y:auto}
/* Карточка контакта — единый скролл-документ (без вложенного скролла тела).
   Глобальный SPA-паттерн (.view height:100vh) не трогаем — фикс локальный на .contact-card.
   Правая колонка ликвидирована (макет 2026-07-16) → .cd-body-2col/.cd-col-side удалены как мёртвые. */
.contact-card{flex:1;overflow-y:auto}
.contact-card .cd-body{overflow:visible;flex:none}
.cd-col-main{min-width:0}
.cd-meta-list{display:flex;flex-direction:column;gap:12px}
.cd-meta-item{font-size:13px;line-height:1.5}
.cd-meta-lbl{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:hsl(var(--muted-fg));margin-bottom:2px}
/* Карточка контакта v3: вердикт, метрики, ЧС-баннер, «Что дальше», комментарии, ⋯-меню */
/* .cd-verdict / .cd-metrics удалены как мёртвые: вердикт-строка и строка метрик отношений сняты
   с карточки (макет 2026-07-16) — их смысл разошёлся по слотам шапки и секциям тела.
   .cd-sep жив: разделитель в заметках «Что дальше». */
.cd-sep{color:hsl(var(--border))}
.cd-cs-banner{margin:12px 32px 0;padding:10px 14px;border-radius:8px;background:hsl(0 72% 51%/.08);border:1px solid hsl(0 72% 51%/.3);color:hsl(0 65% 42%);font-size:13px;font-weight:500}
.cd-next{display:flex;flex-direction:column;gap:10px}
.cd-next-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid hsl(var(--border));border-left:3px solid hsl(142 60% 42%);border-radius:8px;font-size:13px}
.cd-comment{font-size:13px;line-height:1.5;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.cd-hist-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:18px 0 12px}
.cd-more>summary{list-style:none}
.cd-more>summary::-webkit-details-marker{display:none}
.cd-more .dl-menu-pop{right:0;left:auto;min-width:200px}
.dl-menu-pop button{display:block;width:100%;text-align:left;padding:9px 14px;background:none;border:none;font:inherit;color:hsl(var(--foreground));cursor:pointer}
.dl-menu-pop button:hover{background:hsl(var(--muted))}
.mon-stats{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;color:hsl(var(--muted-fg));margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid hsl(var(--border))}
.mon-stats b{color:hsl(var(--foreground));font-weight:700}
.cd-section-title{font-size:11px;text-transform:uppercase;letter-spacing:1.2px;color:hsl(var(--muted-foreground));font-weight:600;margin:18px 0 12px}
.cd-section-title:first-child{margin-top:0}
/* Карточка контакта — шапка: контакты / условия / последнее взаимодействие */
.cd-contacts{display:flex;flex-wrap:wrap;gap:18px;align-items:center;font-size:13px;margin-top:8px}
.cd-citem{display:inline-flex;align-items:center;gap:4px}
.cd-extra{display:flex;flex-wrap:wrap;gap:16px;align-items:center;font-size:13px;color:hsl(var(--muted-fg));margin-top:8px;padding-top:8px;border-top:1px solid hsl(var(--border)/.6)}
.cd-lastint{font-size:12px;color:hsl(var(--muted-fg));margin-top:8px}
/* Секция «Упоминания о нас» в карточке контакта */
.mon-card{border:1px solid hsl(var(--border));border-radius:8px;padding:14px 16px;background:hsl(var(--surface))}
/* Слоты ШАПКИ (макет 2026-07-16): Показатели → описание (AI) → Комментарии, разделителями.
   Правой колонки у карточки больше нет — тело одноколоночное. */
.cd-slot{border-top:1px solid hsl(var(--border));margin-top:14px;padding-top:14px;min-width:0}
.cd-slot .chp-summary,.cd-slot .chp-bio{max-width:none}
.cd-slot .cd-section-title:first-child{margin-top:0}
.cd-slot .chp-card,.cd-slot .pm-card{border:none;background:transparent;padding:0}
.cd-slot .pm-row{padding:0}
.cd-slot .pm-row + .pm-row{margin-top:10px;padding-top:10px}
/* Колонка «Площадка» в списке контактов */
.cell-plats{display:inline-flex;flex-wrap:wrap;gap:4px}
/* Слот «Показатели» — метрики площадок (строка на площадку), первый блок тела у любого контакта */
.pm-card{border:1px solid hsl(var(--border));border-radius:8px;background:hsl(var(--surface))}
.pm-row{display:flex;align-items:baseline;gap:14px;padding:12px 16px}
.pm-row + .pm-row{border-top:1px solid hsl(var(--border))}
/* Цветная пилюля площадки: слот «Показатели» карточки, колонка «Площадка» списка контактов
   (platformCell) и лид-лист (views/monitoring.js). Из ШАПКИ карточки и из «Упоминаний о нас» убрана
   (там значки .mn-net/.mc-net); в «Показателях» возвращена по слову владельца. Не удалять. */
.pm-plat{flex:0 0 auto;font-size:11px;text-transform:uppercase;letter-spacing:1px;font-weight:700;
  border-radius:999px;padding:3px 10px;border:1px solid hsl(var(--border));color:hsl(var(--muted-fg));background:hsl(var(--background))}
.pm-tg{color:#1D82C6;border-color:#1D82C6}
.pm-ig{color:#C13584;border-color:#C13584}
.pm-fields{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;color:hsl(var(--muted-fg));align-items:baseline}
.pm-fields b{color:hsl(var(--foreground));font-weight:700}
.pm-hint{font-size:12px;color:hsl(var(--muted-fg))}
/* Блок «О канале» — AI-профиль ТГ-канала */
.chp-card{border:1px solid hsl(var(--border));border-radius:8px;padding:14px 16px;background:hsl(var(--surface));margin-bottom:6px}
.chp-bio{font-size:12px;color:hsl(var(--muted-fg));margin-bottom:8px;font-style:italic}
.chp-summary{font-size:14px;line-height:1.5}
.chp-topics{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.chip-static{cursor:default}
.chp-meta{font-size:11px;color:hsl(var(--muted-fg));margin-top:10px}
.mon-subs{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.mon-subs .mss-label{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:hsl(var(--muted-fg))}
.mon-subs .mss-num{font-size:18px;font-weight:700;line-height:1}
.mss-delta{font-size:12px;font-weight:600}
.mss-delta.mss-up{color:#1D9E75}
.mss-delta.mss-down{color:#D85A30}
.mss-delta.mss-flat{color:hsl(var(--muted-fg));font-weight:400}
.mss-upd{font-size:11px;color:hsl(var(--muted-fg))}
.mon-status{font-size:12px;font-weight:500;text-transform:none;letter-spacing:0;margin-left:6px}
.mon-status.on{color:#1D9E75}
.mon-status.off{color:hsl(var(--muted-fg))}
.mon-metrics{display:flex;gap:10px;align-items:center;font-size:14px;color:hsl(var(--foreground));padding-top:10px;border-top:1px solid hsl(var(--border)/.6)}
.mon-metrics b{font-weight:700}
.mon-metrics .mon-dot{color:hsl(var(--muted-fg))}
.mon-hint{font-size:12px;color:hsl(var(--muted-fg))}
/* Разбивка публикаций по площадкам — обе сети сразу, без переключателя (2026-08-05).
   Делает видимой смесь дуального ключа: у контакта одной сети ненулевое второе число = загрязнение.
   Подписи «Площадки — N публикаций» больше нет: площадку называет значок, число стоит рядом. */
.mon-nets{display:flex;flex-wrap:wrap;align-items:center;gap:18px;font-size:13px;
  color:hsl(var(--muted-fg));margin:-4px 0 12px}
.mon-nets .mn-item{display:inline-flex;align-items:center;gap:6px}
.mon-nets b{color:hsl(var(--foreground));font-weight:700}
/* Значок площадки: эмодзи те же, что в сообщении бота. line-height:1 — иначе эмодзи тянет строку вверх
   и число рядом «пляшет»; цвет не задаём, эмодзи цветное само и одинаково читается в обеих темах. */
.mn-net,.mc-net{font-size:14px;line-height:1;font-style:normal}
.mon-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 8px}
.mon-tab{border:1px solid hsl(var(--border));background:hsl(var(--background));border-radius:999px;padding:4px 12px;font-size:12px;cursor:pointer;color:hsl(var(--foreground));transition:background .15s,border-color .15s}
.mon-tab:hover{background:hsl(var(--accent))}
.mon-tab.on{background:hsl(var(--primary));border-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}
.mon-feed-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:6px;flex-wrap:wrap}
.mon-pager{display:flex;align-items:center;gap:10px;font-size:12px;color:hsl(var(--muted-fg))}
.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:9999px;background:hsl(var(--teal)/.2);color:hsl(175 20% 35%);border:1px solid hsl(var(--teal)/.4);font-size:12px;font-weight:500}
.chip button{border:none;background:none;cursor:pointer;color:inherit;font-size:13px;line-height:1;padding:0}
.chip-add{display:inline-flex;gap:4px;align-items:center}
.chip-add input{width:110px;height:26px;padding:0 8px;font-size:12px}

/* ============ TIMELINE ============ */
.timeline{display:flex;flex-direction:column}
.tl-item{display:grid;grid-template-columns:44px 1fr;gap:0}
.tl-line{display:flex;flex-direction:column;align-items:center}
.tl-dot{width:28px;height:28px;border-radius:50%;flex-shrink:0;background:hsl(var(--secondary));display:grid;place-items:center;font-size:13px}
.tl-track{width:1px;background:hsl(var(--border));flex:1;margin-top:4px}
.tl-content{padding:0 0 20px 12px;min-width:0}
.tl-date{font-size:12px;color:hsl(var(--muted-foreground));margin-bottom:4px}
.tl-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:12px 14px}
.tl-card .tc-title{font-size:14px;font-weight:800;margin-bottom:2px}
.tl-card .tc-row{font-size:12px;color:hsl(var(--muted-foreground));display:flex;gap:16px;flex-wrap:wrap;margin-top:4px}
.tl-card .tc-reach{font-weight:800;color:hsl(var(--warm))}

/* ============ EVENTS ============ */
.events-layout{padding:20px 32px;overflow-y:auto;flex:1}
.events-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.event-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:18px;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.event-card:hover{border-color:hsl(var(--foreground)/.2);box-shadow:0 4px 6px -1px rgb(0 0 0/.1)}
.event-card .ev-top{display:flex;align-items:flex-start;gap:12px;margin-bottom:10px}
.event-card .ev-icon{width:40px;height:40px;border-radius:10px;background:hsl(var(--secondary));display:grid;place-items:center;flex-shrink:0;font-size:18px}
.event-card .ev-title{font-size:16px;font-weight:800}
.event-card .ev-sub{font-size:12px;color:hsl(var(--muted-foreground));margin-top:2px}
.event-card .ev-stats{display:flex;gap:24px;margin-top:12px;padding-top:12px;border-top:1px solid hsl(var(--border))}
.event-card .ev-stat .val{font-size:16px;font-weight:800}
.event-card .ev-stat .lbl{font-size:10px;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.8px}
.guest-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;background:hsl(var(--background));border:1px solid hsl(var(--border));margin-bottom:6px;flex-wrap:wrap}
.guest-row .gr-info{min-width:140px}
.guest-row .gr-name{font-size:14px}
.guest-row .gr-type{font-size:12px;color:hsl(var(--muted-foreground))}
/* Переверстка строки гостя (0.67.0): контакты в ряд под ФИО, шильдик типа, тихая заметка, кастомный статус-дропдаун */
.guest-row .gr-name a{color:hsl(var(--foreground));text-decoration:none}
.guest-row .gr-name a:hover{text-decoration:underline}
.gr-line2{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:5px}
.gr-badge-type{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;line-height:1.4;background:hsl(var(--muted)/.5);border:1px solid hsl(var(--border));color:hsl(var(--muted-foreground))}
.gr-badge-type.is-pro{background:#ede9fe;border-color:#ddd6fe;color:#6d28d9}
.gr-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:var(--radius);background:hsl(var(--muted)/.4);border:.5px solid hsl(var(--border));font-size:12px;color:hsl(var(--foreground))}
.gr-chip .chip-ico{display:inline-flex;color:hsl(var(--muted-foreground))}
.gr-chip a.handle-link{color:inherit;text-decoration:none}
.gr-chip a.handle-link:hover{text-decoration:underline}
.gr-chip .copy-btn{padding:0;height:14px;width:14px}
/* Фаза 2 (0.81.2): строка гостя БЕЗ переноса — левые блоки сжимаемые (ellipsis), правая колонка
   вопроса/состояния публикации фиксированная (flex:0 0 auto), всегда на своей позиции по центру. */
.guest-row.gr-nowrap{flex-wrap:nowrap}
.guest-row.gr-nowrap .gr-info{flex:1 1 auto;min-width:0;overflow:hidden}
.guest-row.gr-nowrap .gr-line2{flex-wrap:nowrap;overflow:hidden}
.guest-row.gr-nowrap .gr-chip{min-width:0;overflow:hidden}
.guest-row.gr-nowrap .gr-chip>span,.guest-row.gr-nowrap .gr-chip a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.guest-row.gr-nowrap .gr-note-zone{flex:0 1 auto;min-width:0;overflow:hidden}
.guest-row.gr-nowrap .gr-note-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gr-pub-col{margin-left:auto;flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;justify-content:flex-end}
/* НЕотвеченный вопрос о публикации (0.81.3): мягкая amber-плашка — токены badge-warn/«Ожидаем публикации».
   Отвеченные состояния без плашки (контраст «неотвеченное горит — отвеченное спокойное»). Без анимаций. */
.pub-ask{display:inline-flex;align-items:center;gap:8px;padding:5px 10px;border-radius:10px;background:rgb(255 251 235);border:1px solid rgb(217 119 6/.35);color:rgb(180 83 9)}
.gr-pub-col .gr-pub-slot{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.gr-note-zone{display:flex;align-items:center;gap:8px;align-self:stretch}
.gr-note-sep{width:1px;background:hsl(var(--border));align-self:stretch;flex-shrink:0}
.gr-note{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:hsl(var(--muted-foreground))}
.gr-note .note-ico{display:inline-flex;flex-shrink:0;color:hsl(var(--muted-foreground))}
.gr-note-fill{cursor:pointer}
.gr-note-fill:hover .gr-note-txt{text-decoration:underline}
.gr-note-fill .gr-note-pencil{opacity:0;flex-shrink:0}
.gr-note-fill:hover .gr-note-pencil{opacity:.65}
.gr-note-empty{background:none;border:none;padding:0;cursor:pointer;font-family:inherit}
.gr-note-empty:hover{color:hsl(var(--foreground))}
.gr-note-editing{color:hsl(var(--foreground))}
.gr-note-input{font-size:13px;padding:3px 8px;width:180px;border:1px solid hsl(var(--border));border-radius:6px;background:hsl(var(--background));color:hsl(var(--foreground));font-family:inherit}
.gr-note-input:focus{outline:none;border-color:hsl(var(--ring))}
.gs-wrap{position:relative;margin-left:auto}
.gs-pill{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:7px 12px;font-size:12px;font-weight:500;line-height:1;cursor:pointer;border:1px solid transparent;background:hsl(var(--surface));color:hsl(var(--foreground))}
.gs-pill .gs-chev{opacity:.6}
.gs-dot{width:7px;height:7px;border-radius:999px;flex-shrink:0;display:inline-block;background:hsl(var(--muted-foreground))}
.gs-invited .gs-dot{background:hsl(var(--muted-foreground))}
.gs-confirmed .gs-dot{background:rgb(4 120 87)}
.gs-attended .gs-dot{background:rgb(4 120 87)}
.gs-declined .gs-dot{background:rgb(185 28 28)}
.gs-no_show .gs-dot{background:hsl(var(--muted-foreground))}
.gs-pill.gs-invited{background:hsl(var(--surface));border-color:hsl(var(--border));color:hsl(var(--muted-foreground))}
.gs-pill.gs-confirmed{background:rgb(209 250 229);border-color:rgb(4 120 87/.3);color:rgb(4 120 87)}
.gs-pill.gs-attended{background:rgb(4 120 87);border-color:rgb(4 120 87);color:#fff}
.gs-pill.gs-attended .gs-dot{background:#fff}
.gs-pill.gs-declined{background:rgb(254 226 226);border-color:rgb(185 28 28/.3);color:rgb(185 28 28)}
.gs-pill.gs-no_show{background:hsl(var(--muted));border-color:hsl(var(--border));color:hsl(var(--muted-foreground))}
.gs-menu{position:absolute;z-index:60;top:calc(100% + 4px);right:0;min-width:160px;padding:4px;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:8px;box-shadow:0 10px 15px -3px rgb(0 0 0/.1),0 4px 6px -4px rgb(0 0 0/.1)}
.gs-opt{display:flex;align-items:center;gap:8px;padding:7px 10px;font-size:13px;border-radius:6px;cursor:pointer;color:hsl(var(--foreground))}
.gs-opt:hover{background:hsl(var(--muted)/.6)}
.gs-opt.is-disabled{opacity:.45;cursor:not-allowed}
/* pill публикации гостя (0.79.1): amber «Ждём …» / серый «Не ждём» / зелёный «Публикация вышла» */
.gp-wait .gs-dot{background:rgb(217 119 6)}
.gs-pill.gp-wait{background:rgb(255 251 235);border-color:rgb(217 119 6/.35);color:rgb(217 119 6)}
.gp-none .gs-dot{background:hsl(var(--muted-foreground))}
.gs-pill.gp-none{background:hsl(var(--muted));border-color:hsl(var(--border));color:hsl(var(--muted-foreground))}
.gp-done .gs-dot{background:rgb(4 120 87)}
.gs-pill.gp-done{background:rgb(209 250 229);border-color:rgb(4 120 87/.3);color:rgb(4 120 87)}
/* Ш12: блок комментария управляющего (tasting_note) — приглушённая заметка surface/hairline */
.cd-mgr-note{margin:14px 0;padding:10px 14px;background:hsl(var(--surface));border:1px solid hsl(var(--border));border-radius:8px}
.cd-mgr-note-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:hsl(var(--muted-fg));font-weight:600;margin-bottom:3px}
.cd-mgr-note-txt{font-size:14px;color:hsl(var(--foreground));line-height:1.45}
/* Ш12: блок пост-финализации («Готово» отправлено) — читаемый success-блок */
.season-done-note{margin:14px 0;padding:12px 16px;background:rgb(209 250 229/.5);border:1px solid rgb(4 120 87/.3);border-radius:8px;font-size:13px;line-height:1.5;color:rgb(6 95 70);max-width:640px}
/* Ш12: чип хэндла контакта — иконка реальной сети + ссылка/нейтральный текст */
.handle-ico{display:inline-flex;align-items:center;color:hsl(var(--muted-fg));vertical-align:middle;margin-right:3px}
.handle-plain{color:hsl(var(--muted-fg))}
.wrapup-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid hsl(var(--border));border-radius:6px;margin-bottom:8px;background:hsl(var(--card));flex-wrap:wrap}
.wrapup-row .wr-name{flex:1;min-width:140px;font-size:14px}
.wrapup-row label{font-size:13px;display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.wrapup-row input[type=number]{width:110px}

/* ============ RELEASES / PEOPLE ============ */
.releases-layout{padding:20px 32px;overflow-y:auto;flex:1}
.releases-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.release-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:10px}
.release-card .rc-top{display:flex;align-items:flex-start;gap:10px}
.release-card .rc-title{font-size:16px;font-weight:800;flex:1}
.release-card .rc-meta{font-size:12px;color:hsl(var(--muted-foreground));display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.release-card .rc-actions{display:flex;gap:6px;margin-top:4px;flex-wrap:wrap}
.person-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:18px;display:flex;gap:14px;align-items:flex-start}
.person-card .pc-bio{font-size:13px;color:hsl(var(--muted-foreground));margin-top:6px;line-height:1.5}
.dl-menu{position:relative;display:inline-block}
.dl-menu>summary{list-style:none;cursor:pointer}
.dl-menu>summary::-webkit-details-marker{display:none}
.dl-menu>summary::marker{content:""}
.dl-menu-pop{position:absolute;left:0;top:calc(100% + 4px);z-index:30;min-width:130px;display:flex;flex-direction:column;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);overflow:hidden}
.dl-menu-pop a{padding:9px 14px;font-size:13px;color:hsl(var(--foreground));text-decoration:none}
.dl-menu-pop a:hover{background:hsl(var(--muted))}
/* Мульти-пикер ресторанов (форма лица): summary как поле .select, поповер чекбоксов на каркасе .dl-menu */
.loc-menu{display:block}
.loc-summary{display:flex;align-items:center;justify-content:space-between}
.loc-summary::after{content:"▾";margin-left:8px;color:hsl(var(--muted-fg));font-size:11px}
.loc-pop{min-width:280px;max-width:420px;max-height:300px;overflow:auto;padding:4px 0}
.loc-check{display:flex;gap:8px;align-items:center;padding:7px 12px;font-size:13px;cursor:pointer}
.loc-check:hover{background:hsl(var(--muted))}
.loc-check input{width:auto;height:auto;margin:0;flex:none}

/* ============ STATS ============ */
.stats-layout{padding:20px 32px;overflow-y:auto;flex:1}
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}
.kpi-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:18px 20px}
.kpi-card .kv{font-size:30px;font-weight:800;line-height:1}
.kpi-card .kl{font-size:12px;color:hsl(var(--muted-foreground));margin-top:4px}
.stats-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.stat-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:18px 20px}
.stat-card .sc-header{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.stat-card .sc-title{font-size:16px;font-weight:800}
.stat-card .sc-sub{font-size:12px;color:hsl(var(--muted-foreground));margin-left:auto}
.bar-chart{display:flex;flex-direction:column;gap:8px}
.bar-row{display:flex;align-items:center;gap:10px}
.bar-lbl{font-size:12px;color:hsl(var(--muted-foreground));width:72px;text-align:right;flex-shrink:0}
.bar-lbl-wide{width:130px}
.bar-track{flex:1;height:22px;background:hsl(var(--secondary));border-radius:4px;overflow:hidden;position:relative}
.bar-fill{height:100%;border-radius:4px;transition:width .4s}
.bar-fill-warm{background:hsl(var(--warm))}
.bar-fill-teal{background:hsl(var(--teal))}
.bar-fill-dark{background:hsl(var(--primary))}
.bar-num{font-size:12px;color:hsl(var(--muted-foreground));width:84px;text-align:left;flex-shrink:0}
.chart-toggle{display:flex;border:1px solid hsl(var(--border));border-radius:6px;overflow:hidden}
.ct-btn{padding:5px 12px;font-size:12px;font-weight:500;background:hsl(var(--card));border:none;cursor:pointer;color:hsl(var(--muted-foreground))}
.ct-btn.on{background:hsl(var(--primary));color:hsl(var(--primary-foreground))}
.period-btn{padding:5px 12px;border:1px solid hsl(var(--border));border-radius:6px;font-size:12px;font-weight:500;background:hsl(var(--card));cursor:pointer;color:hsl(var(--muted-foreground))}
.period-btn.on{background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-color:hsl(var(--primary))}

/* ============ СЕГОДНЯ (рабочий стол) ============ */
.today-layout{padding:24px 32px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:16px}
.today-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;align-items:start}
.t-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid hsl(var(--border));border-radius:6px;background:hsl(var(--background));margin-bottom:6px;cursor:pointer;transition:background .15s}
.t-row:hover{background:hsl(var(--muted)/.5)}
.t-row .tr-main{flex:1;min-width:0}
.t-row .tr-title{font-size:14px;font-weight:500}
.t-row .tr-sub{font-size:12px;color:hsl(var(--muted-fg))}
.t-empty{font-size:13px;color:hsl(var(--muted-fg));padding:8px 2px}

/* ============ СПИСОК: сортировки, чекбоксы, bulk-панель ============ */
.sortable{cursor:pointer;user-select:none;white-space:nowrap}
.sortable:hover{color:hsl(var(--foreground))}
.sortable .arr{font-size:9px;margin-left:3px}
.row-check,.check-all{width:14px;height:14px;cursor:pointer;accent-color:hsl(var(--primary))}
.mentions-table td.cell-check,.mentions-table th.cell-check{width:30px;text-align:center}
.bulk-bar{position:sticky;bottom:0;padding:10px 32px;background:hsl(var(--surface));border-top:1px solid hsl(var(--border));display:flex;gap:10px;align-items:center;font-size:13px;flex-shrink:0;box-shadow:0 -4px 12px rgb(0 0 0/.04)}
.bulk-bar .bb-count{font-weight:800}
.collect-bar{position:sticky;bottom:0;padding:12px 32px;background:hsl(var(--surface));border-top:1px solid hsl(var(--border));display:flex;gap:10px;align-items:center;flex-shrink:0;box-shadow:0 -4px 12px rgb(0 0 0/.04)}
.collect-hint{margin:0 32px 10px;padding:8px 12px;font-size:13px;color:hsl(var(--muted-fg));background:hsl(var(--muted));border-radius:8px}
/* тихая строка-пояснение reco (не плашка): мелкий вторичный текст без фоновой заливки, под рядом чипов */
.reco-note{margin:-2px 2px 8px;font-size:12px;color:hsl(var(--muted-foreground))}

/* ============ Контакты в клик ============ */
.copy-btn{border:none;background:none;cursor:pointer;padding:3px;border-radius:4px;color:hsl(var(--muted-fg));display:inline-flex;align-items:center;vertical-align:middle}
.copy-btn:hover{background:hsl(var(--muted));color:hsl(var(--foreground))}
.handle-link{color:hsl(var(--foreground));text-decoration:underline;text-decoration-color:hsl(var(--border));text-underline-offset:2px}
.handle-link:hover{text-decoration-color:hsl(var(--foreground))}
.dot-nocontacts{display:inline-block;width:8px;height:8px;border-radius:50%;background:hsl(38 92% 50%);flex-shrink:0}

/* ============ Карточка: агрегаты (P3) ============ */
.cd-stats{display:flex;gap:26px;flex-wrap:wrap;margin-top:14px}
.cds{white-space:nowrap}
/* плитки мониторинга (5 шт) — держать в одну строку, чтобы «подписчики» не падали вниз */
.cd-stats-mon{flex-wrap:nowrap;gap:18px}
.cds .v{font-size:17px;font-weight:800;line-height:1.1}
.cds .l{font-size:11px;color:hsl(var(--muted-fg));margin-top:2px}
/* недельный прирост подписчиков — мелкий верхний индекс справа от числа, не жирный */
.cds-delta-idx{font-size:10px;font-weight:400;vertical-align:super;margin-left:5px;white-space:nowrap;line-height:1}
.cds-delta-idx.up{color:#1D9E75}
.cds-delta-idx.down{color:#D85A30}
/* верхний правый блок действий карточки: «← к списку» сверху, под ним — РЯД кнопок в одну строку
   (не «подвешенная» ссылка под кнопками; порядок задаётся разметкой) */
.cd-header-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end;flex-shrink:0}
.cd-actions-top{display:flex;gap:8px;align-items:center;justify-content:flex-end}

/* сворачиваемые «Ручные пометки» (interaction у TG-контактов) */
.cd-manual{margin-top:18px}
.cd-manual>summary{cursor:pointer;font-size:11px;text-transform:uppercase;letter-spacing:1.2px;color:hsl(var(--muted-fg));font-weight:600;list-style:none}
.cd-manual>summary::-webkit-details-marker{display:none}
.cd-manual>summary::before{content:"▸ ";}
.cd-manual[open]>summary::before{content:"▾ ";}
.cd-manual-body{margin-top:12px}

/* ============ MONITOR ============ */
.monitor-layout{padding:32px;overflow-y:auto;flex:1}
.monitor-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:24px 28px;display:flex;gap:20px;align-items:flex-start;margin-bottom:16px}
.monitor-ico{width:48px;height:48px;border-radius:12px;background:hsl(var(--primary));display:grid;place-items:center;flex-shrink:0;font-size:20px;color:hsl(var(--primary-foreground))}
.monitor-info .mt{font-size:16px;font-weight:800;margin-bottom:6px}
.monitor-info .ms{font-size:14px;color:hsl(var(--muted-foreground));line-height:1.65;margin-bottom:10px}
.roadmap-tag{display:inline-flex;padding:3px 10px;border-radius:9999px;font-size:11px;background:rgb(255 251 235);color:rgb(217 119 6);font-weight:500}

/* ============ EMPTY STATE — канон: dashed-карточка ============ */
.empty-state{flex:1;display:grid;place-items:center;padding:48px;text-align:center;color:hsl(var(--muted-foreground))}
.empty-state>div{background:hsl(var(--card));border:1px dashed hsl(var(--border));border-radius:8px;padding:64px 48px}
.empty-state .es-icon{font-size:34px;margin-bottom:10px}
.empty-state p{font-size:14px;margin-top:6px;max-width:360px}

/* ============ MODAL — канон: r8, shadow-xl ============ */
.modal-overlay{position:fixed;inset:0;background:rgb(0 0 0/.55);display:grid;place-items:center;z-index:1000}
.modal{background:hsl(var(--card));border-radius:8px;width:480px;max-width:90vw;box-shadow:0 25px 50px -12px rgb(0 0 0/.25)}
.modal-wide{width:640px}
.modal-hdr{padding:20px 24px;border-bottom:1px solid hsl(var(--border))}
.modal-hdr h3{font-size:18px}
.modal-hdr p{font-size:14px;color:hsl(var(--muted-foreground));margin-top:3px}
.modal-body{padding:20px 24px;display:flex;flex-direction:column;gap:12px;max-height:60vh;overflow-y:auto}
.modal-ftr{padding:16px 24px;border-top:1px solid hsl(var(--border));display:flex;gap:8px;justify-content:flex-end}

/* ============ TOAST — канон: светлая карточка, shadow-lg ============ */
.toast{position:fixed;bottom:24px;right:24px;background:hsl(var(--card));color:hsl(var(--foreground));border:1px solid hsl(var(--border));padding:14px 16px;border-radius:8px;font-size:14px;display:none;z-index:2000;box-shadow:0 10px 15px -3px rgb(0 0 0/.1),0 4px 6px -4px rgb(0 0 0/.1);max-width:360px}
.toast.toast-danger{background:rgb(254 226 226);color:rgb(153 27 27);border-color:rgb(185 28 28/.4);cursor:pointer;max-width:440px}
.toast.toast-danger .toast-tech{margin-top:8px;padding-top:8px;border-top:1px solid rgb(185 28 28/.25);font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-word;opacity:.85}

/* ============ LOADING ============ */
.loading{padding:48px;text-align:center;color:hsl(var(--muted-foreground));font-size:14px}

/* SCROLLBAR */
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:hsl(var(--border));border-radius:10px}

@media (max-width:1100px){
  .releases-grid{grid-template-columns:repeat(2,1fr)}
  .events-grid{grid-template-columns:1fr}
  .kpi-row{grid-template-columns:repeat(2,1fr)}
  .stats-row{grid-template-columns:1fr}
}

/* ============ МОБИЛЬНАЯ АДАПТАЦИЯ — канон: <768px, drawer 280px slide-in ============ */
@media (max-width:767px){
  .app{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .mobile-topbar{display:flex}
  /* на узких экранах разрешаем плиткам мониторинга перенос, чтобы не вылезали за экран */
  .cd-stats-mon{flex-wrap:wrap}
  /* sidebar → drawer */
  .sidebar{position:fixed;inset:0 auto 0 0;width:280px;height:100vh;z-index:50;transform:translateX(-100%);transition:transform .2s ease-out}
  .sidebar.drawer-open{transform:translateX(0)}
  .sidebar-close{display:block}
  .drawer-overlay.open{display:block}
  /* chrome страницы по канону скрыт, контент во всю ширину */
  .page-hdr{display:none}
  .view{height:calc(100vh - 48px)}
  .toolbar{padding:10px 16px}
  .table-wrap{padding:0 16px}
  .pager{padding:10px 16px}
  .cd-header,.cd-actions{padding-left:16px;padding-right:16px}
  .cd-body{padding:16px}
  .cd-cs-banner{margin-left:16px;margin-right:16px}
  /* на узком экране кнопки уходят под имя и прижимаются влево — иначе жмутся в столбик у края */
  .cd-head-top{flex-direction:column;gap:10px}
  .cd-header-actions{align-items:flex-start}
  .cd-actions-top{justify-content:flex-start;flex-wrap:wrap}
  .rel-editor-page{padding:12px 16px}
  .rep-main{flex-direction:column}
  .rep-tov-panel{width:auto;max-height:55vh}
  .stats-layout,.events-layout,.releases-layout,.monitor-layout,.today-layout{padding:16px}
  .bulk-bar{padding:10px 16px}
  .releases-grid{grid-template-columns:1fr}
  .stat-card{overflow-x:auto}
  .bar-lbl-wide{width:90px}
  .form-grid{grid-template-columns:1fr}
}

/* ===== Мониторинг: витрина ===== */
/* единый регион прокрутки страницы (как .stats-layout/.table-wrap): .view фиксирован height:100vh+overflow:hidden,
   скроллится только этот контейнер; .page-hdr остаётся закреплённым сверху */
.mon-layout{flex:1;overflow-y:auto;padding:20px 32px}
.mon-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.mon-section{font-size:18px;margin:24px 0 12px}
.custom-range{display:inline-flex;align-items:center;gap:6px;margin-left:4px}
.inp-sm{padding:4px 8px;font-size:12px}
.mon-charts-card{padding:16px 20px}
.chart-legend{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:12px}
.cl-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:hsl(var(--foreground))}
.cl-swatch{width:14px;height:3px;border-radius:2px;display:inline-block}
.cl-empty{font-size:12px;color:hsl(var(--muted-foreground))}
.mon-charts{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.mon-chart{min-width:0}
.mc-title{font-size:13px;font-weight:700;margin-bottom:8px}
.mc-canvas{position:relative;height:260px}
.mention-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:14px 16px;margin-bottom:10px}
.mention-card .mc-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.mention-card .mc-tg{font-size:14px}
.mention-card .mc-ig{font-size:14px}
.mention-card .mc-chan{font-weight:700;font-size:13px}
.mention-card .mc-date{margin-left:auto;font-size:12px;color:hsl(var(--muted-foreground))}
.mention-card .mc-text{font-size:13px;line-height:1.5;color:hsl(var(--foreground));display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mention-card .mc-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px;font-size:12px}
.mention-card .mc-views{color:hsl(var(--muted-foreground))}
@media(max-width:760px){.mon-charts{grid-template-columns:1fr}}

/* ============ ДЕЛЕГИРОВАНИЕ (Приоритет 1, Фаза C) ============ */
/* «Доступы» — карточки людей */
.access-list{padding:20px 32px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;flex:1}
.access-user{padding:16px 20px}
.au-hdr{display:flex;align-items:center;gap:12px}
.au-email{font-size:15px;font-weight:700;color:hsl(var(--foreground))}
.au-role-sub{font-size:12px;color:hsl(var(--muted-foreground));margin-top:2px}
.au-hdr .select{margin-left:auto}
.au-points{margin-top:14px;padding-top:14px;border-top:1px solid hsl(var(--border))}
.au-points-lbl{font-size:12px;font-weight:500;color:hsl(var(--muted-foreground));margin-bottom:6px}
.au-points-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:2px}
.au-hint{font-size:12px;color:hsl(var(--muted-foreground));margin:12px 0 0}
/* Раздел сотрудника + ревью — выбор контактов, позиции подборки */
.pick-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.pick-toolbar .grow{flex:1}
.sub-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid hsl(var(--border));border-radius:var(--radius);background:hsl(var(--card));margin-bottom:8px}
.sub-item .si-main{flex:1;min-width:0}
.sub-item .si-name{font-size:14px;font-weight:600}
.sub-item .si-sub{font-size:12px;color:hsl(var(--muted-foreground));margin-top:2px}
.si-decide{display:flex;gap:6px}
.si-comment{margin-top:8px}
.decide-ok{color:hsl(142 60% 40%)}
.decide-no{color:hsl(var(--destructive))}
.fits-badge{display:inline-flex;align-items:center;gap:4px}
.dec.dec-on-ok{border-color:hsl(142 60% 40%);color:hsl(142 60% 40%);background:hsl(142 60% 40%/.08)}
.dec.dec-on-no{border-color:hsl(var(--destructive));color:hsl(var(--destructive));background:hsl(var(--destructive)/.08)}
.cd-fits{margin-top:8px;font-size:13px;color:hsl(var(--muted-foreground));display:flex;gap:6px;flex-wrap:wrap;align-items:center}
/* VIEW-AS (dev-only): переключатель обзора super_admin в сайдбаре */
.viewas{display:flex;flex-direction:column;gap:6px;padding:10px;margin-bottom:10px;border:1px solid hsl(var(--border));border-radius:8px;background:hsl(var(--muted)/.4)}
.viewas.viewas-on{border-color:hsl(var(--ring));background:hsl(var(--ring)/.08)}
.viewas-lbl{font-size:11px;font-weight:600;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.03em}
.viewas .select{width:100%}
/* Фаза D: модалка сбора подборки */
.collect-list{max-height:340px;overflow:auto;margin-top:10px;border:1px solid hsl(var(--border));border-radius:8px}
.collect-row{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;border-bottom:1px solid hsl(var(--border))}
.collect-row:last-child{border-bottom:none}
.collect-row:hover{background:hsl(var(--muted))}
.collect-row input{width:auto;height:auto;flex:none;margin:0}
.collect-row .cr-main{display:flex;flex-direction:column}
.collect-row .cr-name{font-size:14px;font-weight:500}
.collect-row .cr-sub{font-size:12px;color:hsl(var(--muted-foreground))}
/* Фаза D5: страница ревью — один естественный скролл, без внутреннего скролл-контейнера */
.review-page{flex:1;overflow-y:auto;padding-bottom:24px}
.review-items{display:flex;flex-direction:column;gap:8px;padding:12px 32px}
.review-foot{padding:8px 32px}
