:root{
  --canvas:oklch(98.5% .004 85);--surface:#fff;--surface-2:oklch(95.5% .008 85);
  --ink:oklch(18% .02 250);--ink-2:oklch(32% .018 250);--muted:oklch(52% .014 250);--faint:oklch(70% .01 250);
  --hair:oklch(92% .006 250);
  --brand:oklch(48% .13 222);--brand-ink:oklch(32% .1 222);--brand-soft:oklch(92% .04 222);
  --ai:oklch(78% .13 78);--ai-ink:oklch(55% .13 70);--ai-soft:oklch(96% .05 80);
  --ok:oklch(62% .13 155);--ok-soft:oklch(94% .05 155);
  --risk:oklch(62% .18 25);--risk-soft:oklch(95% .04 25);
  --r-xs:6px;--r-sm:8px;--r:12px;--r-md:14px;--pill:999px;
  --sh-1:0 1px 0 oklch(92% .006 250/.8),0 1px 2px oklch(18% .02 250/.04);
  --sh-2:0 2px 6px oklch(18% .02 250/.06),0 8px 24px oklch(18% .02 250/.06);
  --f-ui:"Manrope",ui-sans-serif,system-ui,sans-serif;--f-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --side:oklch(22% .05 235);--side-active:oklch(30% .06 230);
  /* Шкала шрифтов (аудит 21.09): семь ступеней вместо тринадцати размеров.
     2xs — плотная сетка календаря; xs — метки, пилюли, подписи; sm — вторичный текст и кнопки;
     md — основной текст; lg — заголовки карточек; xl — заголовок раздела; num — крупные цифры. */
  --t-2xs:10px;--t-xs:11px;--t-sm:12.5px;--t-md:14px;--t-lg:16px;--t-xl:22px;--t-num:28px;
  --lh-ui:1.45;--lh-read:1.6;
}
*{box-sizing:border-box}
body{margin:0;background:var(--canvas);color:var(--ink);font:var(--t-md)/var(--lh-ui) var(--f-ui);min-height:100vh}
input,textarea,select,button{font:inherit}
a{color:var(--brand);text-decoration:none}a:hover{color:var(--brand-ink)}
.mono{font-family:var(--f-mono)}
button{font:inherit;border:0;cursor:pointer;border-radius:var(--r-sm)}
.btn{background:var(--brand);color:#fff;font-weight:700;padding:9px 16px;box-shadow:var(--sh-1)}
.btn:hover{background:var(--brand-ink)}
.btn-ok{background:var(--ok);color:#fff;font-weight:800;padding:11px;width:100%}
.btn-ghost{background:var(--surface);border:1px solid var(--hair);color:var(--ink-2);font-weight:700;padding:9px}
.btn-danger{background:var(--surface);border:1px solid var(--hair);color:var(--risk);font-weight:700;padding:9px}
.card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r-md);box-shadow:var(--sh-1)}
.pill{font-size:var(--t-xs);font-weight:800;border-radius:var(--pill);padding:3px 9px;white-space:nowrap}
.pill-ok{background:var(--ok-soft);color:var(--ok)}
.pill-ai{background:var(--ai-soft);color:var(--ai-ink)}
.pill-mut{background:var(--surface-2);color:var(--muted)}
/* login */
#login{display:none;min-height:100vh;align-items:center;justify-content:center}
#login .card{max-width:380px;width:100%;padding:36px 40px;display:flex;flex-direction:column;gap:14px}
#login input{font:inherit;border:1px solid var(--hair);border-radius:var(--r-sm);padding:10px 12px;width:100%}
#login input:focus{outline:2px solid var(--brand-soft);border-color:var(--brand)}
.logo{width:46px;height:46px;border-radius:12px;background:var(--ai);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:22px;color:var(--side)}
/* app shell */
#app{display:none;min-height:100vh}
.shell{display:flex;min-height:100vh}
.side{display:flex;flex-direction:column;width:228px;background:var(--side);color:oklch(96% .005 85);padding:20px 14px;gap:4px;flex-shrink:0}
.side .head{display:flex;align-items:center;gap:10px;padding:4px 8px 18px 8px}
.side .head .logo{width:30px;height:30px;border-radius:8px;font-size:15px}
.nav{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--r-sm);color:oklch(82% .015 235);font-weight:500;width:100%;background:transparent;text-align:left}
.nav.active{background:var(--side-active);color:#fff;font-weight:700}
.nav .badge{margin-left:auto;background:var(--ai);color:var(--side);font-size:var(--t-xs);font-weight:800;border-radius:var(--pill);padding:1px 7px}
.side .foot{margin-top:auto;border-top:1px solid oklch(34% .04 235);padding:12px 10px 2px;display:flex;align-items:center;gap:9px}
.main{flex-grow:1;padding:24px 28px;display:flex;flex-direction:column;gap:18px;min-width:0}
h1{font-size:var(--t-xl);font-weight:800;letter-spacing:-.01em;margin:0}
.sub{color:var(--muted);font-size:var(--t-sm)}
.grid{display:grid;gap:14px}
.stat{padding:16px 18px;display:flex;flex-direction:column;gap:2px}
.stat.link{cursor:pointer;transition:box-shadow .15s,border-color .15s,transform .1s;position:relative}
.stat.link:hover{box-shadow:var(--sh-2);border-color:var(--brand);transform:translateY(-1px)}
.stat.link:hover .go{opacity:1}
.stat .go{position:absolute;top:14px;right:14px;opacity:.25;transition:opacity .15s;color:var(--brand);font-weight:800}
.rowlink{cursor:pointer}
.rowlink:hover{background:var(--surface-2)}
.tab{border:1px solid var(--hair);background:var(--surface);color:var(--muted);font-size:var(--t-sm);font-weight:700;border-radius:var(--pill);padding:5px 13px;cursor:pointer}
.tab.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.sel{font:inherit;font-size:var(--t-sm);font-weight:600;color:var(--ink-2);background:var(--surface);
  border:1px solid var(--hair);border-radius:var(--r-sm);padding:7px 30px 7px 11px;cursor:pointer;
  appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5L6 8l3.5-3.5' stroke='%23667' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center}
.sel:hover{border-color:var(--brand)}
.sel:focus{outline:2px solid var(--brand-soft);border-color:var(--brand)}
.selwrap{display:flex;align-items:center;gap:7px}
.selwrap .lbl{font-size:var(--t-xs);color:var(--faint);font-weight:600}
.stat .n{font-size:var(--t-num);font-weight:800;font-family:var(--f-mono)}
.row{display:flex;align-items:center;gap:10px}
.bar{height:8px;border-radius:var(--pill);background:oklch(92% .02 80);overflow:hidden}
.bar>div{height:100%;background:var(--ai);border-radius:var(--pill)}
.list-item{display:flex;flex-direction:column;gap:6px;padding:14px 18px;border-bottom:1px solid var(--hair);cursor:pointer}
.list-item:hover{background:var(--surface-2)}
.list-item.sel{background:var(--brand-soft)}
.prev-body{white-space:pre-wrap;font-size:var(--t-md);line-height:1.55;color:var(--ink-2)}
.chip{border:1px solid var(--hair);background:var(--surface-2);color:var(--muted);font-size:var(--t-sm);font-weight:700;border-radius:var(--pill);padding:5px 12px;cursor:pointer}
.chip.on{background:var(--brand-soft);color:var(--brand-ink);border-color:var(--brand)}
.toast{position:fixed;z-index:80;bottom:84px;right:22px;background:var(--side);color:#fff;font-weight:600;border-radius:var(--r-sm);padding:12px 18px;box-shadow:var(--sh-2);display:none;max-width:420px}
@media(max-width:760px){.toast{bottom:calc(150px + env(safe-area-inset-bottom));right:16px;max-width:calc(100vw - 32px)}}
/* Карточка материала: до 1500 px правые колонки уходят ПОД текст, а не сжимают его.
   Раньше три фиксированные колонки съедали ширину, и на 1440 текст читался в щель. */
.draft-cols{display:flex;gap:16px;flex-grow:1;min-width:0}
.draft-main{flex-grow:1;min-width:0;scroll-margin-top:80px}
.draft-side{width:300px;flex-shrink:0;display:flex;flex-direction:column;gap:12px}
.draft-actions{width:250px}
@media (max-width:1500px){
  .draft-cols{flex-wrap:wrap}
  .draft-main{flex:1 1 100%;min-width:0}
  .draft-side{width:auto;flex:1 1 330px}
  .draft-actions{flex:1 1 280px}
}
.mbar{display:inline-block;height:8px;border-radius:3px;background:var(--brand);opacity:.85;min-width:2px}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--hair);border:1px solid var(--hair);border-radius:var(--r-sm);overflow:hidden}
.cal .hd{background:var(--surface-2);padding:6px 8px;font-size:var(--t-xs);font-weight:700;color:var(--muted);text-align:center}
.cal .day{background:var(--surface);min-height:88px;padding:6px 7px;display:flex;flex-direction:column;gap:4px}
.cal .day.out{background:var(--surface-2);opacity:.55}
.cal .day.today{box-shadow:inset 0 0 0 2px var(--brand)}
.cal .day.drop{cursor:pointer;box-shadow:inset 0 0 0 2px var(--ok)}
.cal .day .num{font-size:var(--t-xs);color:var(--faint);font-weight:700}
.cal .ev{font-size:var(--t-xs);line-height:1.35;border-radius:5px;padding:3px 5px;background:var(--brand-soft);cursor:pointer}
.cal .ev.done{background:var(--ok-soft)}
.cal .ev.stale{background:var(--risk-soft)}
.tree{display:flex;flex-direction:column;gap:2px;font-size:var(--t-sm)}
.tree .row-t{display:flex;gap:8px;align-items:baseline;padding:5px 8px;border-radius:var(--r-sm)}
.tree .row-t:hover{background:var(--surface-2)}
.tree .lvl1{padding-left:20px}
.tree .lvl2{padding-left:40px}
.tree .lvl3{padding-left:60px}
.tree .tw{color:var(--faint);font-size:var(--t-xs);min-width:14px}
@media (max-width:900px){.side{width:64px}.side .head div:last-child,.nav span.txt,.side .foot .who{display:none}}
/* Телефон: одна колонка, крупные кнопки, ничего не режется по горизонтали.
   Правило простое — на узком экране всё, что было фиксированной колонкой, становится строкой. */
@media (max-width:760px){
  .main{padding:14px 12px;gap:14px}
  :root{--t-xl:19px}   /* заголовок раздела на телефоне */
  .shell{flex-direction:column}
  .side{width:100%;flex-direction:row;flex-wrap:wrap;padding:8px 10px;gap:6px;position:sticky;top:0;z-index:30}
  .side .head,.side .foot{display:none}
  .nav{width:auto;padding:7px 10px;font-size:var(--t-sm)}
  .nav span.txt{display:inline}
  .grid{grid-template-columns:1fr !important}
  .card{border-radius:10px}
  .btn,.btn-ok,.btn-danger{padding:11px 16px;font-size:var(--t-md)}
  .btn-ghost{padding:9px 13px}
  /* карточка материала и списки: колонки становятся строками */
  .draft-cols>*,.draft-side,.draft-actions{width:auto !important;flex:1 1 100% !important}
  .row{flex-wrap:wrap}          /* заголовок и фильтры не сжимают друг друга в полоску */
  .sel{flex:1 1 140px}
  .split{flex-wrap:wrap}
  .split>*{flex:1 1 100% !important;min-width:0}
  .list-col{width:100% !important;max-height:60vh;overflow-y:auto}   /* кнопки фильтров сверху — списку нужно место */
  [style*="width:360px"],[style*="width:320px"],[style*="width:400px"],[style*="width:300px"],
  [style*="width:250px"]{width:100% !important;flex:1 1 100% !important}
  .cal{font-size:var(--t-2xs)}
  .cal .day{min-height:56px;padding:3px 4px}
  .cal .ev{font-size:var(--t-2xs);padding:2px 3px}
  .cn{width:100vw}
  .cn-btn{right:12px;bottom:12px;padding:12px 18px}
  input,textarea,select{font-size:var(--t-lg) !important}   /* iOS не зумит поля от 16px */
}
.pill-risk{background:var(--risk-soft);color:var(--risk)}
/* Консилиум: выдвижная панель, живёт поверх любой вкладки */
.cn-btn{position:fixed;right:22px;bottom:22px;z-index:40;border-radius:var(--pill);padding:11px 18px;
  background:var(--side);color:#fff;font-weight:700;font-size:var(--t-sm);box-shadow:0 6px 22px rgba(0,0,0,.22)}
.cn{position:fixed;top:0;right:0;bottom:0;width:min(430px,100vw);background:var(--surface);
  border-left:1px solid var(--hair);box-shadow:-10px 0 30px rgba(0,0,0,.10);z-index:50;
  display:none;flex-direction:column}
.cn.open{display:flex}
.cn-head{padding:14px 16px;border-bottom:1px solid var(--hair);display:flex;flex-direction:column;gap:6px}
.cn-body{flex-grow:1;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.cn-foot{border-top:1px solid var(--hair);padding:12px 16px;display:flex;flex-direction:column;gap:8px}
.cn-msg{display:flex;flex-direction:column;gap:4px;font-size:var(--t-sm);line-height:1.55}
.cn-msg.me{align-items:flex-end}
.cn-msg .bub{max-width:94%;padding:9px 12px;border-radius:12px;background:var(--surface-2);white-space:pre-wrap}
.cn-msg.me .bub{background:var(--brand-soft)}
.cn-act{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:var(--t-xs);margin-top:2px}
.cn-q{border:1px solid var(--hair);border-radius:var(--pill);padding:5px 11px;font-size:var(--t-xs);
  background:var(--surface);cursor:pointer}
.cn-q:hover{background:var(--surface-2)}
@media (max-width:900px){.cn{width:100vw}}

/* Приоритет материала в очереди: цвет и порядок, без мигания (решение Максима 11.09) */
.list-item{position:relative}
.list-item.pr-hot{box-shadow:inset 3px 0 0 var(--risk)}
.list-item.pr-warm{box-shadow:inset 3px 0 0 var(--ai)}
.list-item.pr-cold .t-title{color:var(--muted)}
.dt{font-size:var(--t-xs);color:var(--faint);white-space:nowrap}
.dt b{color:var(--ink-2);font-weight:700}

/* ===== Контент-календарь (14.3б): месяц / неделя / день ===== */
.cal-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.cal-nav{font-size:var(--t-sm);padding:5px 11px}
.cal-nav.has{border-color:var(--brand);color:var(--brand-ink);background:var(--brand-soft)}
.cal-title{font-weight:800;font-size:var(--t-lg);flex-grow:1;text-transform:capitalize}
.seg{display:flex;border:1px solid var(--hair);border-radius:var(--r-sm);overflow:hidden;background:var(--surface)}
.seg button{background:transparent;color:var(--muted);font-size:var(--t-sm);font-weight:700;padding:5px 13px;border-radius:0}
.seg button.on{background:var(--brand);color:#fff}
.cal-filters{display:flex;flex-direction:column;gap:7px;padding:10px 11px;margin-bottom:10px;
  background:var(--surface-2);border:1px solid var(--hair);border-radius:var(--r-sm)}
.cal-filters .chip{font-size:var(--t-xs);padding:4px 10px}
.cal-sel{font:inherit;font-size:var(--t-sm);border:1px solid var(--hair);border-radius:var(--r-xs);padding:4px 8px;background:var(--surface);color:var(--ink-2)}
.chk{display:flex;align-items:center;gap:5px;font-size:var(--t-sm);color:var(--ink-2);cursor:pointer}
.cal-legend{margin-top:9px}
.cal .day{cursor:pointer}
.cal .ev.hot{box-shadow:inset 2px 0 0 var(--risk)}
.cal .ev.past{opacity:.6}
.cal .more{font-size:var(--t-2xs);color:var(--brand);font-weight:700;cursor:pointer}
.cal .win{font-size:var(--t-2xs);line-height:1.3;border:1px dashed var(--hair);border-radius:5px;padding:2px 5px;
  color:var(--faint);cursor:pointer;background:repeating-linear-gradient(135deg,transparent,transparent 5px,var(--surface-2) 5px,var(--surface-2) 10px)}
.cal .win:hover{border-color:var(--brand);color:var(--brand-ink)}

/* цвет события по каналу — как разные календари в телефоне */
.ev.ch-tg,.gev.ch-tg{background:oklch(93% .045 235)}
.ev.ch-max,.gev.ch-max{background:oklch(93% .05 300)}
.ev.ch-blog,.gev.ch-blog{background:oklch(93% .05 150)}
.ev.ch-vk,.gev.ch-vk{background:oklch(93% .045 260)}
.ev.ch-dzen,.gev.ch-dzen{background:oklch(94% .04 60)}
.ev.ch-vc,.gev.ch-vc{background:oklch(93% .04 20)}
.ev.ch-tenchat,.gev.ch-tenchat{background:oklch(93% .045 195)}
.ev.ch-setka,.gev.ch-setka{background:oklch(94% .04 110)}
.ev.ch-youtube,.gev.ch-youtube{background:oklch(92% .06 28)}
.ev.ch-rutube,.gev.ch-rutube{background:oklch(92% .05 330)}
.ev.ch-vk_video,.gev.ch-vk_video{background:oklch(93% .05 275)}

/* часовая сетка недели и дня */
.cal-wrap{max-height:min(68vh,720px);overflow:auto;border:1px solid var(--hair);border-radius:var(--r-sm);background:var(--surface)}
.cal-wrap:has(.cal){overflow:visible;max-height:none;border:0}
.tgrid{display:grid;grid-template-columns:58px 1fr;grid-template-rows:auto 1fr;position:relative}
.gcorner{position:sticky;top:0;left:0;z-index:3;background:var(--surface-2);border-bottom:1px solid var(--hair)}
.ghead{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:repeat(var(--cols,7),minmax(0,1fr));
  background:var(--surface-2);border-bottom:1px solid var(--hair)}
.tgrid.one .ghead{grid-template-columns:1fr}
.gh{padding:6px 8px;text-align:center;font-size:var(--t-xs);color:var(--muted);border-left:1px solid var(--hair)}
.gh-d{font-weight:700;text-transform:capitalize}
.gh-n{margin-left:5px;font-weight:800;color:var(--ink-2)}
.gh.today .gh-n{background:var(--brand);color:#fff;border-radius:var(--pill);padding:1px 7px}
.gtime{position:relative;background:var(--surface-2)}
.gt{position:absolute;right:7px;font-size:var(--t-2xs);color:var(--faint);transform:translateY(-6px)}
.gbody{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));position:relative}
.tgrid.one .gbody{grid-template-columns:1fr}
.gcol{position:relative;border-left:1px solid var(--hair)}
.gcol.today{background:oklch(98% .012 222)}
.gslot{position:absolute;left:0;right:0;border-top:1px solid var(--hair)}
.gslot:hover{background:var(--brand-soft);opacity:.45;cursor:pointer}
.gev{position:absolute;font-size:var(--t-2xs);line-height:1.3;border-radius:5px;padding:3px 5px;cursor:pointer;
  min-height:38px;overflow:hidden;background:var(--brand-soft);box-shadow:var(--sh-1)}
.gev.done{background:var(--ok-soft)}
.gev.stale{background:var(--risk-soft)}
.gev.hot{box-shadow:inset 2px 0 0 var(--risk),var(--sh-1)}
.gev.past{opacity:.62}
.gwin{position:absolute;left:2%;width:96%;font-size:var(--t-2xs);line-height:1.25;color:var(--faint);cursor:pointer;
  border:1px dashed var(--hair);border-radius:5px;padding:2px 5px;min-height:22px}
.gwin:hover{border-color:var(--brand);color:var(--brand-ink)}
.gnow{position:absolute;left:0;right:0;height:2px;background:var(--risk);z-index:2}
.gnow::before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--risk)}

/* карточка события сбоку */
.cal-side{margin-top:12px}
.cal-card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r-md);box-shadow:var(--sh-1);padding:13px 15px}
.cal-card .cc-b{font-size:var(--t-sm);padding:6px 12px}
.cal-pick{display:flex;flex-direction:column;gap:2px;text-align:left;width:100%;background:var(--surface-2);
  border:1px solid var(--hair);padding:7px 10px;margin-bottom:6px;font-size:var(--t-sm);color:var(--ink-2)}
.cal-pick:hover{border-color:var(--brand)}
/* 29.09: в узкой карточке прячем только название — «✓ вышло» остаётся (раньше пряталось вместе с ним) */
.gev.narrow > span:not(.fact){display:none}
.gev.narrow{font-size:var(--t-2xs)}
.gev .fact{white-space:nowrap}
@media (min-width:1200px){
  /* 29.09: панель поста — своя прокрутка, низ (текст для площадки, кнопки) больше не уходит за край экрана */
  .cal-side{position:fixed;right:18px;top:76px;width:320px;margin:0;z-index:5;
    max-height:calc(100vh - 92px);overflow-y:auto;overscroll-behavior:contain;padding-bottom:64px}   /* низ не под кнопкой «Консилиум» */
  .cal-side:empty{display:none}
  body.side-open .main{padding-right:354px}
}
@media (max-width:900px){
  .cal-title{width:100%;order:-1}
  .gh-d{display:block}
}
@media (max-width:760px){
  /* телефон: меню группами ложится строками, сетка суток остаётся сеткой */
  .grp{flex-direction:row;align-items:center;flex-wrap:wrap;flex:0 0 auto;gap:4px}
  .grp.open{width:100%}
  .grp-h{width:auto;padding:6px 9px;font-size:var(--t-xs)}
  .grp-b{flex-direction:row;flex-wrap:wrap;padding-left:0;width:100%}
  .grp.open .grp-b{display:flex}
  .grp .nav{font-size:var(--t-sm)}
  .tgrid{grid-template-columns:44px 1fr}
  .cal-wrap{max-height:62vh}
  .cal .day{min-height:64px}
  .cal .ev{font-size:var(--t-2xs)}
  .cal-side{position:static;width:auto}
}

/* ===== Меню группами (14.7): немного верхних пунктов, остальное раскрывается ===== */
.grp{display:flex;flex-direction:column}
.grp-h{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--r-sm);width:100%;
  background:transparent;color:oklch(72% .02 235);font-weight:700;font-size:var(--t-sm);text-transform:uppercase;letter-spacing:.03em}
.grp-h:hover{color:#fff}
.grp-h .arw{margin-left:auto;font-size:var(--t-2xs);transition:transform .15s;opacity:.7}
.grp.open .grp-h .arw{transform:rotate(90deg)}
.grp-h .sum{margin-left:auto;background:var(--ai);color:var(--side);font-size:var(--t-xs);font-weight:800;border-radius:var(--pill);padding:1px 7px}
.grp-b{display:none;flex-direction:column;gap:2px;padding-left:8px}
.grp.open .grp-b{display:flex}
.grp .nav{font-size:var(--t-md);padding:7px 10px}

/* Каналы тремя группами (14.6) */
.ch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:9px}
.ch-card{border:1px solid var(--hair);border-radius:var(--r-sm);padding:11px 12px;display:flex;flex-direction:column;gap:8px;background:var(--surface)}
.ch-card .ch-b{font-size:var(--t-xs);padding:4px 10px}
.ch-sched .chip{font-size:var(--t-xs);padding:3px 9px}
.sched-t{font:inherit;font-size:var(--t-sm);border:1px solid var(--hair);border-radius:var(--r-xs);padding:3px 7px}

/* ===== Стратегия (15.2): цель периода, ступени воронки, голос ===== */
.goal-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
.goal{display:flex;flex-direction:column;gap:2px;text-align:left;padding:10px 12px;background:var(--surface-2);
  border:1px solid var(--hair);border-radius:var(--r-sm);color:var(--ink-2);font-size:var(--t-sm)}
.goal.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-ink)}
.goal .sub{font-size:var(--t-xs)}
.st-bar{display:flex;height:14px;border-radius:var(--pill);overflow:hidden;background:var(--surface-2)}
.st-seg{height:100%}
.stage-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--hair)}
.st-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.st-num{width:64px;font:inherit;font-size:var(--t-sm);text-align:center;border:1px solid var(--hair);
  border-radius:var(--r-xs);padding:5px 6px}
.st-fact{width:120px;text-align:right;font-size:var(--t-sm);color:var(--ink-2)}
.st-fact.lack{color:var(--risk)}
.st-fact.over{color:var(--faint)}
.st-H0,.st-seg.st-H0{background:oklch(80% .08 235)}
.st-H1,.st-seg.st-H1{background:oklch(76% .10 200)}
.st-H2,.st-seg.st-H2{background:oklch(74% .11 160)}
.st-H3,.st-seg.st-H3{background:oklch(78% .11 100)}
.st-H4,.st-seg.st-H4{background:oklch(78% .12 60)}
.st-H5,.st-seg.st-H5{background:oklch(70% .15 25)}
.v-area{width:100%;font:inherit;font-size:var(--t-sm);border:1px solid var(--hair);border-radius:var(--r-sm);
  padding:8px 10px;resize:vertical}
.sm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.sm-card{border:1px solid var(--hair);border-radius:var(--r-sm);padding:8px 10px;background:var(--surface)}
.sm-card.off{opacity:.5}
.sm-b{background:var(--surface-2);border:1px solid var(--hair);width:22px;height:22px;font-size:var(--t-sm);
  line-height:1;color:var(--muted);border-radius:var(--r-xs)}
.sm-b:hover{border-color:var(--brand);color:var(--brand-ink)}

/* ===== Идеи и группы очереди (15.4) ===== */
.grp-head{padding:8px 14px 4px;font-size:var(--t-xs);font-weight:800;letter-spacing:.04em;
  text-transform:uppercase;color:var(--muted);background:var(--surface-2);border-bottom:1px solid var(--hair)}
.idea-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.idea{border:1px solid var(--hair);border-radius:var(--r-sm);padding:11px 12px;display:flex;
  flex-direction:column;gap:7px;background:var(--surface)}
.idea-hook{font-size:var(--t-sm);line-height:1.45;color:var(--ink-2);font-style:italic}
.idea-th{margin:0;padding-left:18px;font-size:var(--t-sm);line-height:1.5;color:var(--muted)}
.idea .id-b{font-size:var(--t-xs);padding:4px 10px}
.st-pill{font-family:var(--f-mono);font-size:var(--t-2xs);padding:1px 7px;color:var(--ink);opacity:.9}

/* ===== Витрина «Что заходит» (15.3) ===== */
.top-t{width:100%;border-collapse:collapse;font-size:var(--t-sm)}
.top-t th{text-align:left;font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.03em;
  color:var(--muted);font-weight:700;padding:4px 8px 6px;border-bottom:1px solid var(--hair)}
.top-t td{padding:7px 8px;border-bottom:1px solid var(--hair);vertical-align:top}
.top-t tr.is-gap td{background:oklch(97% .03 100)}
.top-t td.why{color:var(--ink-2);max-width:320px}
.top-t .tp-b{font-size:var(--t-xs);padding:4px 10px;white-space:nowrap}
.top-t .pill{margin-left:6px}

/* ступень воронки на событии календаря */
.gev.stg,.ev.stg{border-left:3px solid transparent}
.stg-H0{border-left-color:oklch(80% .08 235)}
.stg-H1{border-left-color:oklch(76% .10 200)}
.stg-H2{border-left-color:oklch(74% .11 160)}
.stg-H3{border-left-color:oklch(78% .11 100)}
.stg-H4{border-left-color:oklch(78% .12 60)}
.stg-H5{border-left-color:oklch(70% .15 25)}

/* 21.09: предварительный слот (план не утверждён) — держит окно, но «маячит», а не стоит намертво */
.pill-tent{background:transparent;color:var(--ai-ink);border:1px dashed var(--ai-ink)}
.ev.tent,.gev.tent{background:repeating-linear-gradient(135deg,transparent 0 6px,oklch(96% .03 85) 6px 12px)!important;
  outline:1px dashed var(--ai-ink);outline-offset:-1px;opacity:.9}

/* Вёрстка без разъезда (аудит 21.09). Шапка раздела: заголовок и фильтры переносятся строкой,
   а не сжимают заголовок в щель и не выталкивают фильтры за правый край. */
#view>.row:first-child{flex-wrap:wrap;row-gap:10px;align-items:flex-start}
#view>.row:first-child>div:first-child{min-width:min(100%,280px)}
#view>.row:first-child .row{flex-wrap:wrap;row-gap:8px}
/* ячейки сеток и гибких строк сжимаются по ширине экрана, длинный текст переносится внутри */
.grid>*,.row>*{min-width:0}
.row>button:not(.btn-ok),.row>.btn,.row>.btn-ghost,.row>.pill,.row>.sel,.row>.selwrap{flex-shrink:0}
.card,.sub,.prev-body{overflow-wrap:break-word}
@media (max-width:760px){.day-lbl.thin{visibility:hidden}.top-t{display:block;overflow-x:auto}
  .side{position:relative}   /* меню на телефоне не липнет: раскрытое, оно закрывало весь экран */}

/* ── Классы шкалы (аудит 21.09). Стоят последними: перекрывают компоненты. ──
   Встроенные style= во views переведены на них скриптом; в style= остались только
   вычисляемые значения (ширины полос, цвета статусов) и display:none, который переключает JS. */
.t-2xs{font-size:var(--t-2xs)}.t-xs{font-size:var(--t-xs)}.t-sm{font-size:var(--t-sm)}
.t-md{font-size:var(--t-md)}.t-lg{font-size:var(--t-lg)}.t-xl{font-size:var(--t-xl)}
.fw-m{font-weight:600}.fw-b{font-weight:700}.fw-x{font-weight:800}
.lh-read{line-height:var(--lh-read)}.pre{white-space:pre-wrap}.nowrap{white-space:nowrap}
.c-faint{color:var(--faint)}.c-muted{color:var(--muted)}.c-ink2{color:var(--ink-2)}.c-risk{color:var(--risk)}
.c-ok{color:var(--ok)}.c-brand{color:var(--brand)}.c-ai{color:var(--ai-ink)}
.flex{display:flex}.stack{display:flex;flex-direction:column}.wrap{flex-wrap:wrap}.grow{flex-grow:1}
.minw0{min-width:0}.self-start{align-self:flex-start}.w-full{width:100%}.ml-auto{margin-left:auto}
.g-4{gap:4px}.g-6{gap:6px}.g-8{gap:8px}.g-10{gap:10px}.g-12{gap:12px}.g-16{gap:16px}
.mt-4{margin-top:4px}.mt-6{margin-top:6px}.mt-8{margin-top:8px}.mt-10{margin-top:10px}.mt-12{margin-top:12px}
.p-card{padding:16px 18px}.p-head{padding:14px 18px}.p-row{padding:12px 18px}.p-in{padding:9px 11px}
.bd{border:1px solid var(--hair)}.bb{border-bottom:1px solid var(--hair)}.bt{border-top:1px solid var(--hair)}
.r-sm{border-radius:var(--r-sm)}.ovh{overflow:hidden}.ptr{cursor:pointer}.rs-v{resize:vertical}
.btn-sm{font-size:var(--t-xs);padding:4px 10px}.btn-md{font-size:var(--t-sm);padding:8px 14px}
.p-lg{padding:20px 22px}.ellip{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.no-shrink{flex-shrink:0}
.ai-start{align-items:flex-start}.ai-center{align-items:center}.ai-end{align-items:flex-end}
.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.bg-risk{background:var(--risk-soft)}.bg-2{background:var(--surface-2)}
.mb-4{margin-bottom:4px}.mb-6{margin-bottom:6px}.mb-8{margin-bottom:8px}.mb-10{margin-bottom:10px}.mw-read{max-width:560px}
/* Аудитория поста в «Выкладке» (таргетинг Сетки) */
.aud-ed{border-top:1px dashed var(--hair);padding-top:8px;display:flex;flex-direction:column;gap:10px}
.aud-ed[hidden]{display:none}
.aud-chip{display:inline-flex;align-items:center;gap:4px;background:var(--brand-soft);color:var(--brand-ink);
  font-size:var(--t-xs);font-weight:700;border-radius:var(--pill);padding:3px 4px 3px 10px}
.aud-chip button{background:transparent;color:inherit;padding:0 5px;font-size:var(--t-sm);line-height:1}
.aud-in{font-size:var(--t-sm);border:1px solid var(--hair);border-radius:var(--r-sm);padding:5px 9px;min-width:220px;flex:1 1 220px}

/* ── Очередь: темы и кнопки фильтров (22.09) ── */
.q-bar{position:sticky;top:0;z-index:2;background:var(--surface);border-bottom:1px solid var(--hair);
  padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.q-seg{display:flex;background:var(--surface-2);border-radius:var(--r-sm);padding:3px;gap:2px}
.q-seg-b{flex:1 1 0;background:transparent;color:var(--muted);font-size:var(--t-sm);font-weight:700;
  padding:6px 8px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.q-seg-b span,.q-chip span{font-family:var(--f-mono);font-size:var(--t-xs);font-weight:600;opacity:.7}
.q-seg-b.on{background:var(--surface);color:var(--ink);box-shadow:var(--sh-1)}
.q-chips{display:flex;flex-wrap:wrap;gap:6px}
.q-chip{background:var(--surface);border:1px solid var(--hair);color:var(--ink-2);font-size:var(--t-xs);font-weight:700;
  border-radius:var(--pill);padding:4px 10px;display:inline-flex;align-items:center;gap:6px}
.q-chip:hover{border-color:var(--brand)}
.q-chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.q-seg-b:focus-visible,.q-chip:focus-visible,.q-t-head:focus-visible,.q-cov.miss:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

.q-topic{border-bottom:1px solid var(--hair)}
.q-topic.list-item{gap:8px}
.q-topic.multi{padding:0 0 12px;position:relative}
.q-topic.multi.pr-hot{box-shadow:inset 3px 0 0 var(--risk)}
.q-topic.multi.pr-warm{box-shadow:inset 3px 0 0 var(--ai)}
.q-topic.multi.has-sel{background:oklch(98% .012 222)}
.q-t-head{display:flex;gap:8px;align-items:flex-start;width:100%;text-align:left;background:transparent;
  padding:14px 18px 8px 12px;border-radius:0;color:inherit}
.q-t-head:hover{background:var(--surface-2)}
.q-chev{width:14px;flex-shrink:0;color:var(--muted);font-size:var(--t-sm);line-height:1.6}
.q-t-main{display:flex;flex-direction:column;gap:6px;flex:1 1 auto;min-width:0}
.q-t-title{font-weight:700;font-size:var(--t-md);line-height:1.35;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.q-topic.multi .q-covs{padding:0 18px 0 34px}
.q-covs{display:flex;flex-wrap:wrap;gap:4px}
.q-cov{font-size:var(--t-2xs);font-weight:700;border-radius:var(--pill);padding:2px 8px;line-height:1.5;
  background:var(--surface-2);color:var(--muted);border:1px solid transparent}
.q-cov.ok{background:var(--ok-soft);color:var(--ok)}
.q-cov.wait{background:var(--brand-soft);color:var(--brand-ink)}
.q-cov.miss{background:transparent;border:1px dashed var(--faint);color:var(--muted);cursor:pointer}
.q-cov.miss:hover{border-color:var(--brand);color:var(--brand)}
.q-t-items{margin:10px 12px 0 34px;border:1px solid var(--hair);border-radius:var(--r-sm);overflow:hidden;background:var(--surface)}
.q-item{padding:10px 12px;gap:4px}
.q-item:last-child{border-bottom:0}
.q-i-title{font-size:var(--t-sm);font-weight:600;color:var(--ink-2);line-height:1.35}
.q-why-hot{color:var(--risk)}.q-why-warm{color:var(--ai-ink)}.q-why-cold,.q-why-plain{color:var(--faint)}
/* поиск, сводка-переключатели, одобрение темы (22.09) */
[data-q][hidden],.q-none[hidden]{display:none !important}
.q-search{width:100%;font-size:var(--t-sm);border:1px solid var(--hair);border-radius:var(--r-sm);padding:7px 11px;background:var(--surface-2)}
.q-search:focus{outline:2px solid var(--brand-soft);border-color:var(--brand);background:var(--surface)}
.q-focus{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.q-f{display:flex;flex-direction:column;align-items:flex-start;gap:0;background:var(--surface);border:1px solid var(--hair);
  border-radius:var(--r-sm);padding:6px 9px;font-size:var(--t-xs);font-weight:700;color:var(--muted);text-align:left}
.q-f b{font-family:var(--f-mono);font-size:var(--t-lg);line-height:1.2;color:var(--ink)}
.q-f-urgent b{color:var(--risk)}.q-f-uncovered b{color:var(--ai-ink)}.q-f-review b{color:var(--brand)}
.q-f.zero{opacity:.55}.q-f.zero b{color:var(--faint)}
.q-f:hover{border-color:var(--brand)}
.q-f.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-ink)}
.q-f:focus-visible,.q-search:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.q-t-acts{display:flex;justify-content:flex-end;margin:8px 12px 0 34px}
/* путь материала: шаги и подсказка (22.09) */
.q-steps{padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.q-steps-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.q-step{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;row-gap:2px;align-items:start;
  text-align:left;background:var(--surface);border:1px solid var(--hair);border-radius:var(--r-sm);padding:10px 12px;color:var(--ink-2)}
.q-step:hover{border-color:var(--brand)}
.q-step.on{background:var(--brand-soft);border-color:var(--brand)}
.q-step-n{grid-row:1/3;width:24px;height:24px;border-radius:50%;background:var(--side);color:#fff;font-weight:800;
  font-size:var(--t-xs);display:flex;align-items:center;justify-content:center}
.q-step.zero .q-step-n{background:var(--faint)}
.q-step-t{display:flex;align-items:baseline;gap:8px;font-size:var(--t-sm)}
.q-step-c{font-family:var(--f-mono);font-weight:700;color:var(--brand)}
.q-step-w{font-size:var(--t-xs);color:var(--muted);line-height:1.4}
.q-step:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.q-help summary{cursor:pointer;font-size:var(--t-sm);font-weight:700;color:var(--brand)}
.q-help ol{margin:8px 0;padding-left:20px;display:flex;flex-direction:column;gap:5px;font-size:var(--t-sm);color:var(--ink-2);line-height:1.5}
.q-help .sub{line-height:1.55}
.approve-hint{line-height:1.5;margin-top:-2px}
@media (max-width:900px){.q-steps-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* хэштеги материала (22.09) */
.tags-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin-top:12px;padding-top:10px;border-top:1px dashed var(--hair)}
.tags-line .tags{font-weight:700;color:var(--brand-ink);font-size:var(--t-sm)}
/* календарь: факт выкладки рядом с планом (22.09) */
.fact{font-size:var(--t-2xs);font-weight:800;border-radius:var(--pill);padding:0 5px;white-space:nowrap}
.fact.ok{background:var(--ok-soft);color:var(--ok)}
.fact.wait{background:var(--ai-soft);color:var(--ai-ink)}
.fact.bad{background:var(--risk-soft);color:var(--risk)}
/* «Выкладка»: выложить к (22.09) */
.due{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:8px 12px;border-radius:var(--r-sm);
  background:var(--surface-2);font-size:var(--t-sm);color:var(--ink-2)}
.due b{font-size:var(--t-md);color:var(--ink)}
.due span{color:var(--muted)}
.due.soon{background:var(--ai-soft)}.due.soon span{color:var(--ai-ink);font-weight:700}
.due.late{background:var(--risk-soft)}.due.late b,.due.late span{color:var(--risk)}
/* Цели и рост (22.09) */
.goal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.goal-card{padding:16px 18px;display:flex;flex-direction:column;gap:10px}
.goal-nums{display:flex;align-items:flex-end;gap:12px;justify-content:space-between;flex-wrap:wrap}
.goal-nums>div{display:flex;flex-direction:column;gap:2px}
.goal-n{font-family:var(--f-mono);font-size:var(--t-num);font-weight:800;line-height:1.1}
.goal-target .btn-sm{align-self:flex-start;margin-top:4px}
.goal-target input{width:110px;border:1px solid var(--hair);border-radius:var(--r-sm);padding:6px 9px;font-size:var(--t-sm);margin-top:4px}
.goal-facts{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:var(--t-sm)}
.goal-facts dt{color:var(--faint);font-weight:600}
.goal-facts dd{margin:0;color:var(--ink-2)}
.goal-act{border-top:1px solid var(--hair);padding-top:10px;display:flex;flex-direction:column;gap:6px}
.goal-act:first-of-type{border-top:0;padding-top:0}
/* дашборд: цели и уведомления сверху (22.09) */
.dash-top{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:760px){.dash-top{grid-template-columns:1fr}}

/* ── Мобильная навигация (22.09): шапка · нижняя панель вкладок · лист «Ещё» ──
   На компьютере скрыто; на телефоне боковое меню уходит, вкладки в зоне большого пальца. */
.mtop,.mtabs,.msheet,.msheet-bg{display:none}
@media (max-width:760px){
  .side{display:none !important}
  .mtop{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:40;
    padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:var(--side);color:#fff}
  .mtop img{border-radius:7px;flex-shrink:0}
  .mtop b{font-size:var(--t-lg);font-weight:800;letter-spacing:-.01em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .main{padding:16px 16px calc(84px + env(safe-area-inset-bottom));gap:14px}
  .main h1{font-size:var(--t-xl)}
  #view>.row:first-child h1{display:none}      /* название раздела уже в шапке */
  .mtabs{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:45;
    background:var(--surface);border-top:1px solid var(--hair);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -4px 18px oklch(18% .02 250/.06)}
  .mtab{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;min-height:48px;
    background:transparent;color:var(--muted);font-size:var(--t-2xs);font-weight:700;padding:5px 2px;border-radius:10px}
  .mtab svg{transition:transform .18s cubic-bezier(.2,.8,.2,1)}
  .mtab.on{color:var(--side)}
  .mtab.on::before{content:"";position:absolute;top:-6px;width:28px;height:3px;border-radius:0 0 3px 3px;background:var(--ai)}
  .mtab.on svg{transform:translateY(-1px)}
  .mtab:active{background:var(--surface-2)}
  .mtab:focus-visible,.msheet-item:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
  .mbadge{position:absolute;top:2px;left:calc(50% + 6px);min-width:17px;height:17px;padding:0 5px;border-radius:var(--pill);
    background:var(--ai);color:var(--side);font-size:10px;font-weight:800;line-height:17px;text-align:center}
  .mbadge[hidden]{display:none}
  .msheet-bg{display:block;position:fixed;inset:0;z-index:50;background:oklch(18% .02 250/.0);transition:background .18s}
  .msheet-bg[hidden]{display:none}
  .msheet{display:flex;flex-direction:column;gap:14px;position:fixed;left:0;right:0;bottom:0;z-index:55;max-height:82vh;overflow-y:auto;
    background:var(--surface);border-radius:18px 18px 0 0;padding:8px 16px calc(18px + env(safe-area-inset-bottom));
    transform:translateY(100%);transition:transform .22s cubic-bezier(.2,.8,.2,1);box-shadow:0 -10px 30px oklch(18% .02 250/.14)}
  .msheet[hidden]{display:none}
  body.msheet-open .msheet{transform:none}
  body.msheet-open .msheet-bg{background:oklch(18% .02 250/.38)}
  .msheet-grab{width:40px;height:4px;border-radius:4px;background:var(--hair);margin:4px auto 0}
  .msheet-grp{display:flex;flex-direction:column}
  .msheet-h{font-size:var(--t-xs);font-weight:800;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;padding:4px 4px 6px}
  .msheet-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;width:100%;
    text-align:left;background:transparent;color:var(--ink);font-size:var(--t-md);font-weight:600;padding:10px 4px;border-bottom:1px solid var(--hair);border-radius:0}
  .msheet-item .mbadge{position:static}
  .msheet-foot .msheet-item{color:var(--brand-ink)}
  .msheet-exit{color:var(--risk) !important;border-bottom:0}
  .cn-btn{bottom:calc(76px + env(safe-area-inset-bottom)) !important;right:14px}
  .toast{left:16px;right:16px;bottom:calc(80px + env(safe-area-inset-bottom));max-width:none}
}
@media (prefers-reduced-motion:reduce){.msheet,.mtab svg,.msheet-bg{transition:none}}

/* телефон: экраны без «груды блоков» (22.09) */
.clamp4{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
@media (max-width:760px){
  #view>.row:first-child .row{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}
  #view>.row:first-child .selwrap{flex-direction:column;align-items:stretch;gap:3px}
  #view>.row:first-child .selwrap .lbl{font-size:var(--t-2xs);text-transform:uppercase;letter-spacing:.04em}
  #view>.row:first-child .sel{width:100%;flex:none;font-size:var(--t-sm) !important;padding:8px 28px 8px 10px}
  #view>.row:first-child [data-push]{display:none}      /* уведомления — в «Ещё» и на дашборде */
  #b-clean{grid-column:1/-1}
  .q-steps{padding:10px}
  .q-steps-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
  .q-step{grid-template-columns:1fr;justify-items:center;text-align:center;padding:8px 4px;row-gap:4px}
  .q-step-n{grid-row:auto;width:22px;height:22px}
  .q-step-t{flex-direction:column;align-items:center;gap:0;font-size:var(--t-xs);line-height:1.25}
  .q-step-w{display:none}
  .goal-grid{grid-template-columns:1fr}
}
/* «Что работает» (22.09) */
.works-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.works{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:var(--t-sm)}
.works .mono{font-weight:700}
@media (max-width:760px){.works-cols{grid-template-columns:1fr}}

/* 23.09: свёрнутый удалённый экран — вернуться одним нажатием */
.rs-chip{position:fixed;right:16px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:70;box-shadow:var(--sh-2);min-height:44px}
@media (min-width:900px){.rs-chip{bottom:24px}}
.flash{outline:2px solid var(--ai);outline-offset:2px;transition:outline-color .6s}

/* 23.09 «Сегодня»: результат одной строкой, до трёх решений карточками */
.td-result{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 20px;align-items:start}
.td-stat{min-width:0}
.td-n{font-size:var(--t-num);font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.td-l{font-size:var(--t-sm);font-weight:700;color:var(--ink-2)}
.td-fresh{grid-column:1/-1;border-top:1px solid var(--hair);padding-top:10px}
.td-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.td-card{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border-left:3px solid var(--hair);min-width:0}
.td-card.td-hot{border-left-color:var(--risk)}
.td-card.td-warm{border-left-color:var(--ai)}
.td-title{font-weight:700;font-size:var(--t-md);line-height:1.35;overflow-wrap:anywhere}
.td-why{font-size:var(--t-sm);color:var(--ink-2);line-height:var(--lh-ui)}
.td-act{margin-top:auto;align-self:flex-start;min-height:40px}
.td-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.td-list li{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:var(--t-sm)}
@media (max-width:900px){.td-grid{grid-template-columns:1fr}}
@media (max-width:560px){.td-result{grid-template-columns:1fr 1fr}.td-result .td-stat:first-child{grid-column:1/-1}.td-act{align-self:stretch;min-height:44px}}

/* 23.09 консилиум рядом с текстом (ревью U03): на широком экране не перекрывает материал */
.cn-wide-b{display:none}
@media (min-width:1200px){
  .cn-wide-b{display:inline-flex}
  body.cn-on .main{padding-right:458px}
  body.cn-on.cn-wide .cn{width:min(50vw,860px)}
  body.cn-on.cn-wide .main{padding-right:calc(min(50vw,860px) + 28px)}
  body.cn-on.cn-wide .list-col,body.cn-on.cn-wide .q-steps,body.cn-on.cn-wide .idea-box{display:none}
  body.cn-on .q-steps-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.cn-on .cn-btn{display:none}
}

/* 23.09 история правок: что уйдёт / что вернётся */
.rev-cmp{padding:8px 10px;border-radius:var(--r-sm);background:var(--surface-2);display:flex;flex-direction:column;gap:6px}
.rev-d{font-size:var(--t-sm)}
.rev-d ul{margin:4px 0 0;padding-left:18px}
.rev-gone b{color:var(--risk)}
.rev-back b{color:var(--ok)}

/* 23.09 «Выкладка» (ревью U14): сначала обложка и текст, настройки площадки свёрнуты */
.man-cov{width:190px;border-radius:var(--r-sm);flex-shrink:0}
.man-set{border-top:1px solid var(--hair);padding-top:8px}
@media (max-width:560px){.man-cov{width:100%;max-width:100%}}

/* 23.09 (ревью U12): на телефоне интерактивные зоны не меньше 44 px */
@media (max-width:760px){
  button.btn-sm,.btn-md,.q-chip,.q-seg-b,.q-f,.q-cov.miss,.cn-q,.id-b,.q-t-head,select.sel,.msheet-item{min-height:44px}
  button.btn-sm,.q-chip,.cn-q{padding-left:12px;padding-right:12px}
}

/* 23.09 очередь на телефоне (ревью U01): первым экраном — материал к решению, фильтры по кнопке */
.ap-ftog{display:none}
.ap-results-go{display:none}
.ap-results-summary{scroll-margin-top:80px}
/* Badge entry: actionable queue before uncounted ideas/help, on every screen. */
#view .idea-box,#view .idea-empty,#view .ap-context{order:5}
.ap-ftog:not(#ap-back-list){display:inline-flex}
.ap-filters{display:none !important}
body.ap-fopen .ap-filters{display:flex !important}
#view .list-col .q-bar{display:none}
body.ap-fopen #view .list-col .q-bar{display:flex}
@media (max-width:760px){
  .ap-ftog{display:inline-flex}
  .ap-filters{display:none !important}
  body.ap-fopen .ap-filters{display:flex !important}
  .q-steps{display:none}
  #view .idea-box{order:5}
  /* One page scroll: the later .ovh rule otherwise clips the 60vh queue. */
  #view .list-col{max-height:none;overflow:visible}
  #view .list-col .q-bar{position:static;display:none}
  body.ap-fopen #view .list-col .q-bar{display:flex}
  .ap-results-go{display:inline-flex;justify-content:center}
}

/* 23.09 вопросы дня (пакет 3) */
.q-card{display:flex;flex-direction:column;gap:10px;padding:14px 16px;min-width:0}
.q-text{font-weight:700;font-size:var(--t-md);line-height:1.4;overflow-wrap:anywhere}
.q-link{white-space:normal;overflow-wrap:anywhere;max-width:100%;background:none;border:0;padding:0;color:var(--brand-ink);font-size:var(--t-sm);text-align:left;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.q-skip{border-top:1px solid var(--hair);padding-top:8px}
.q-done{background:var(--surface-2)}
.q-ul{margin:4px 0 0;padding-left:18px;font-size:var(--t-sm);line-height:var(--lh-ui);display:flex;flex-direction:column;gap:4px}
.q-facts label{cursor:pointer}
.q-facts input{margin-top:3px;flex-shrink:0}
.q-outline{border-left:3px solid var(--ai);padding-left:10px}

/* 23.09: атрибут hidden главнее классов раскладки (.stack/.row задают display и иначе его перебивают) */
[hidden]{display:none !important}

/* 23.09 обложка в карточке: превью, форматы, надпись и вид */
.cov-img{width:100%;max-width:480px;border-radius:10px;border:1px solid var(--hair)}
.cov-box .chip{padding:3px 9px;border:1px solid var(--hair);background:var(--surface);border-radius:var(--pill);cursor:pointer}
.cov-box .chip.on{background:var(--brand);color:#fff;border-color:var(--brand)}

.chp-row .chip{padding:3px 9px;border:1px solid var(--hair);background:var(--surface);border-radius:var(--pill);cursor:pointer}
.chp-row .chip.on{background:var(--brand);color:#fff;border-color:var(--brand)}

/* 23.09 «Путь недели»: полоса шагов, текущий шаг раскрыт */
.jr-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.jr-step{width:100%;min-height:64px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:8px 10px;border:1px solid var(--hair);border-radius:var(--r-sm);background:var(--surface);text-align:left;cursor:pointer;font:inherit}
.jr-step .jr-n{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:var(--t-xs);font-weight:800;background:var(--surface-2);color:var(--ink-2)}
.jr-step .jr-t{font-size:var(--t-xs);font-weight:700;line-height:1.3;color:var(--ink-2)}
.jr-step.jr-done .jr-n{background:var(--ok-soft);color:var(--ok)}
.jr-step.jr-todo .jr-n{background:var(--ai-soft);color:var(--ai-ink)}
.jr-step.on{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}
.jr-tbl{display:flex;flex-direction:column;gap:6px}
.jr-row{display:grid;grid-template-columns:minmax(120px,200px) auto 1fr;gap:4px 12px;align-items:baseline;font-size:var(--t-sm)}
.jr-gap{display:flex;flex-direction:column;gap:6px;padding:10px 0;border-top:1px solid var(--hair)}
@media (max-width:900px){.jr-steps{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:560px){.jr-steps{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:4px}
  .jr-steps li{flex:0 0 42%;scroll-snap-align:start}.jr-row{grid-template-columns:1fr;gap:2px}}

/* 23.09 очередь «где материал» */
.grp-hint{padding:4px 14px 8px;font-size:var(--t-xs);color:var(--muted);line-height:1.4;border-bottom:1px solid var(--hair)}
.grp-head.grp-calendar{color:var(--ai-ink)}
.grp-head.grp-stale{color:var(--risk)}
.grp-head.grp-mine{color:var(--ok);font-weight:700}
.idea.idea-mine{border-color:var(--ok)}

/* 23.09 календарь: статус важнее цвета канала */
/* заливка — по статусу (канал подписан текстом): иначе «текст собран» путался с «вышло» */
.ev.st-rec,.gev.st-rec{background:var(--surface)!important;outline:1px dashed var(--muted);outline-offset:-1px;color:var(--muted)}
.ev.st-wait,.gev.st-wait{background:var(--ai-soft)!important;box-shadow:inset 3px 0 0 var(--ai)!important}
.ev.st-set,.gev.st-set{background:var(--brand-soft)!important;box-shadow:inset 3px 0 0 var(--brand)!important}
.ev.st-pub,.gev.st-pub{background:var(--ok-soft)!important;box-shadow:inset 3px 0 0 var(--ok)!important}
.cal-states{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:10px}
.cal-states .ev{cursor:default;font-size:var(--t-xs);padding:3px 8px;border-radius:5px;background:var(--brand-soft)}

/* 23.09 «Выкладка»: запланированное заранее */
.up-day{display:flex;flex-direction:column;gap:6px;padding-top:6px;border-top:1px solid var(--hair)}
.up-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

.jr-hype{display:flex;flex-direction:column;gap:6px;padding:8px 0;border-top:1px dashed var(--hair)}
.jr-steps{grid-template-columns:repeat(8,minmax(0,1fr))}

/* 24.09 «После одобрения»: карточка на тему */
.asm-g{border-top:1px solid var(--hair);padding:8px 0 4px}
.asm-sum{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;list-style:none;min-width:0}
.asm-sum::-webkit-details-marker{display:none}
.asm-title{flex:1 1 260px;min-width:0;overflow-wrap:anywhere}
.asm-prog{width:90px;height:6px;border-radius:3px;background:var(--hair);overflow:hidden;flex:none}
.asm-prog i{display:block;height:100%;background:var(--ok)}
.asm-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;padding:4px 0}
.asm-ch{font-weight:700;font-size:var(--t-sm);min-width:84px}
.asm-lab{white-space:normal;overflow-wrap:anywhere;max-width:100%}
.asm-rv{color:var(--ok)}
.asm-act{margin-left:auto;display:flex;flex-wrap:wrap;gap:6px}
.asm-txt{flex-basis:100%;white-space:pre-wrap;font-size:var(--t-sm);line-height:1.5;background:var(--surface-2);border-radius:var(--r-sm);padding:10px 12px;max-height:320px;overflow:auto;overflow-wrap:anywhere}
.asm-done{border-top:1px solid var(--hair);padding-top:6px}

/* 24.09 календарь «Неделя»: дни списком, тема — карточка */
.wa{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.wa-day{border:1px solid var(--hair);border-radius:var(--r-sm);padding:8px;display:flex;flex-direction:column;gap:6px;min-width:0;min-height:120px;background:var(--surface)}
.wa-day.today{border-color:var(--brand,var(--ai-ink));box-shadow:0 0 0 1px var(--brand,var(--ai-ink)) inset}
.wa-day.past{opacity:.75}
.wa-head{display:flex;align-items:baseline;gap:6px;font-size:var(--t-sm)}
.wa-head .sub{margin-left:auto}
.wa-card{border:1px solid var(--hair);border-radius:var(--r-sm);padding:7px 8px;display:flex;flex-direction:column;gap:6px;background:var(--surface-2)}
.wa-t{font-size:var(--t-sm);line-height:1.35;overflow-wrap:anywhere}
.wa-title{font-weight:600}
.wa-chs{display:flex;flex-wrap:wrap;gap:4px}
.wa-ch{font-size:var(--t-xs);padding:2px 7px;border-radius:999px;cursor:pointer;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.wa-empty{text-align:center;padding-top:14px}
@media (max-width:1100px){.wa{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.wa{grid-template-columns:1fr}}

/* 24.09 «Отбор идей» */
.ideas-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
.ideas-step{display:flex;flex-direction:column;gap:3px;border:1px solid var(--hair);border-radius:var(--r-sm);padding:8px 10px;font-size:var(--t-sm);line-height:1.4;background:var(--surface-2)}
.ideas-src td{vertical-align:top}
.ideas-q{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:8px}
.ideas-q li{padding:6px 8px;border-radius:var(--r-sm);overflow-wrap:anywhere}
.ideas-q li.next{background:var(--brand-soft)}
.ideas-run{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;border-top:1px solid var(--hair);padding-top:6px}
.idea-empty{margin-top:12px}
.tbl-wrap{overflow-x:auto;max-width:100%}
.cal-wrap:has(.wa){overflow:visible;max-height:none;border:0;background:none}

/* 24.09 «Отбор идей»: источники группами, раскрытие по клику */
.src-tier{border-top:1px solid var(--hair);padding:8px 0 4px}
.src-tier>summary{list-style:none;padding:2px 0}
.src-row{border:1px solid var(--hair);border-radius:var(--r-sm);margin:6px 0;background:var(--surface)}
.src-row[open]{background:var(--surface-2)}
.src-sum{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:8px 10px;list-style:none;min-width:0}
.src-sum::-webkit-details-marker{display:none}
.src-name{flex:1 1 220px;min-width:0;overflow-wrap:anywhere}
.src-res{white-space:normal}
.src-tog{margin-left:auto}
.src-body{padding:0 12px 10px;display:flex;flex-direction:column;gap:6px}
.src-g>summary{padding:4px 0}
.src-list{margin:4px 0 0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:7px}
.src-list li{font-size:var(--t-sm);line-height:1.4;overflow-wrap:anywhere}
.src-idea{margin-left:14px}

/* 24.09 «Моё мнение» */
.op-box{border:1px solid var(--hair);border-radius:var(--r-sm);padding:8px 10px;background:var(--surface-2)}
.op-saved{font-size:var(--t-sm);line-height:1.45;padding:6px 0;border-bottom:1px solid var(--hair);overflow-wrap:anywhere}
.op-inline{margin-top:6px}

/* 24.09 идеи по категориям */
.idea-cat{margin:6px 0 2px}
.idea.idea-hype{border-color:var(--ai-ink)}

/* 24.09 пробелы ниши */
.gap-row{border-top:1px solid var(--hair);padding:8px 0}
.gap-ex{margin:4px 0 0;padding-left:18px}

/* 25.09 «Отбор идей»: источники по типам, YouTube по тематикам, пометка для агентов */
.src-add{border:1px dashed var(--hair);border-radius:var(--r-sm);padding:8px 10px}
.yt-themes{display:flex;flex-direction:column;gap:6px;padding:6px 0 4px}
.yt-kind{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.src-focus{flex-basis:100%;overflow-wrap:anywhere}
.src-focus-ed{padding:6px 0}
.src-th{display:flex;flex-direction:column;gap:2px}
.src-thg>summary{padding:3px 0}

/* 25.09 «Эпизоды» */
.ep-card{margin-top:8px}
.ep-sum{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;list-style:none}
.ep-sum::-webkit-details-marker{display:none}
.ep-title{flex:1 1 240px;min-width:0;overflow-wrap:anywhere}
.ep-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
.ep-year{max-width:120px}
.ep-q{margin:0;padding-left:18px}
.ep-raw{white-space:pre-wrap;overflow-wrap:anywhere;max-height:200px;overflow:auto}

/* 25.09 Э2 «Переплетение» в карточке */
.wv-box{border:1px solid var(--hair);border-radius:var(--r-sm);padding:8px 10px;display:flex;flex-direction:column;gap:4px}
.wv-box.wv-warn{border-color:var(--ai-ink)}
.wv-box.wv-ok{background:var(--ok-soft)}

/* 25.09 Э3 якоря в очереди тем */
.anc{display:inline-flex;gap:3px;flex-wrap:wrap}

/* 25.09 Э4 цепочки */
.ch-box{margin-top:12px}
.ch-card{border-top:1px solid var(--hair);padding:8px 0}
.ch-card>summary{list-style:none}
.ch-th{margin:2px 0 4px;padding-left:20px}
.ch-ln{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline;overflow-wrap:anywhere}

/* 25.09 Э6 карточка «Переплетение» */
.wv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}
.wv-cell{border:1px solid var(--hair);border-radius:var(--r-sm);padding:8px 10px}

/* 27.09 проводник и ритм недели (НЕДЕЛЬНЫЙ_РИТМ_v3) */
.nav.nav-next{box-shadow:inset 3px 0 0 var(--ai);color:#fff;animation:navnext 2.4s ease-in-out 3}
.mtab.nav-next{color:var(--ai-ink)}
@keyframes navnext{0%,100%{background:transparent}50%{background:oklch(34% .07 80/.55)}}
.hl-pulse{outline:3px solid var(--ai);outline-offset:3px;border-radius:var(--r-sm);animation:hlpulse 1.4s ease-in-out 3}
@keyframes hlpulse{0%,100%{outline-color:var(--ai)}50%{outline-color:transparent}}
.hl-tip{font-size:var(--t-sm);color:var(--ai-ink);margin-top:6px}
@media (prefers-reduced-motion:reduce){.nav.nav-next,.hl-pulse{animation:none}}

.gd-next{display:flex;flex-direction:column;gap:6px;padding:18px 20px;border-left:4px solid var(--ai);background:var(--ai-soft)}
.gd-next.gd-calm{border-left-color:var(--ok);background:var(--ok-soft)}
.gd-k{font-size:var(--t-xs);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ai-ink)}
.gd-calm .gd-k{color:var(--ok)}
.gd-t{font-size:var(--t-xl);font-weight:800;line-height:1.25;color:var(--ink);overflow-wrap:anywhere}
.gd-why{color:var(--ink-2);font-size:var(--t-md);max-width:72ch;overflow-wrap:anywhere}
.gd-next .btn{align-self:flex-start;margin-top:6px}
.gd-steps summary{cursor:pointer;list-style:none;align-items:center}
.gd-steps summary::-webkit-details-marker{display:none}
.gd-bar{width:120px;height:6px;border-radius:var(--pill);background:var(--surface-2);overflow:hidden;flex:none}
.gd-bar i{display:block;height:100%;background:var(--ok)}
.gd-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.gd-list li{display:flex;align-items:center;gap:12px;padding:9px 4px;border-top:1px solid var(--hair)}
.gd-list li:first-child{border-top:0}
.gd-dot{flex:none;width:22px;height:22px;border-radius:50%;border:2px solid var(--faint);display:grid;place-items:center;font-size:12px;font-weight:800;color:#fff}
.gd-done .gd-dot{background:var(--ok);border-color:var(--ok)}
.gd-done .fw-b{color:var(--muted);font-weight:600}

.wk-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.wk-day{display:flex;flex-direction:column;gap:4px;text-align:left;padding:12px 12px 12px 14px;background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);box-shadow:var(--sh-1);min-width:0;position:relative}
.wk-day:hover{border-color:var(--faint)}
.wk-d{font-size:var(--t-xs);font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.wk-n{font-size:var(--t-md);line-height:1.3;color:var(--ink)}
.wk-s{display:flex;align-items:flex-start;gap:6px;font-size:var(--t-sm);color:var(--ink-2);line-height:1.35}
.wk-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--faint);margin-top:5px}
.wk-c{font-size:var(--t-sm);color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.wk-today{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset,var(--sh-1)}
.wk-today .wk-d{color:var(--brand)}
.wk-past{opacity:.72}
.wk-ok .wk-dot{background:var(--ok)}
.wk-act .wk-dot{background:var(--ai)}
.wk-act{border-left:3px solid var(--ai)}
.wk-risk .wk-dot{background:var(--risk)}
.wk-tent .wk-dot{background:transparent;border:1.5px dashed var(--ai-ink)}
.wk-gap .wk-dot{background:var(--hair)}
@media (max-width:900px){.wk-strip{grid-template-columns:1fr}.wk-day{flex-direction:row;flex-wrap:wrap;align-items:baseline;column-gap:10px}.wk-c{flex-basis:100%}}

.rh-call{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:14px 16px;border-radius:var(--r);background:var(--ai-soft);border:1px solid oklch(88% .06 80)}
.rh-call .grow{min-width:240px}
.rh-notes{margin:6px 0 0;padding-left:18px}
.rh-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;align-items:stretch}
.rh-beat{display:flex;flex-direction:column;gap:8px;padding:14px;min-width:0}
.rh-today{box-shadow:0 0 0 2px var(--brand),var(--sh-1)}
.rh-off{opacity:.55}
.rh-day{font-size:var(--t-xs);font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.rh-n{font-size:var(--t-lg);font-weight:800;line-height:1.25}
.rh-w{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.rh-st{align-self:flex-start;max-width:100%;white-space:normal;line-height:1.3}
.rh-p{font-size:var(--t-sm);color:var(--ink-2);font-style:italic;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.rh-c,.rh-t{font-size:var(--t-sm);color:var(--ink-2);overflow-wrap:anywhere}
.rh-t{font-weight:600}
.rh-ch{display:flex;flex-wrap:wrap;gap:4px;margin-top:auto}
.rh-a:empty{display:none}
.rh-f{border-top:1px dashed var(--hair);padding-top:8px}
.rh-f summary{list-style:none;color:var(--ai-ink);font-weight:700}
.rh-f summary::-webkit-details-marker{display:none}
.rh-f textarea{margin-top:6px}
.chip-s{display:inline-flex;align-items:center;font-size:var(--t-xs);font-weight:600;padding:2px 8px;border-radius:var(--pill);background:var(--brand-soft);color:var(--brand-ink);border:1px solid transparent;white-space:nowrap}
.chip-man{background:var(--ai-soft);color:var(--ai-ink)}
.chip-ann{background:transparent;border-color:currentColor;font-weight:500}
.chip-off{background:var(--surface-2);color:var(--faint)}
@media (max-width:1200px){.rh-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.rh-grid{grid-template-columns:1fr}}
.rh-count{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.rh-count .td-fresh{grid-column:1/-1}
@media (max-width:700px){.rh-count{grid-template-columns:1fr}}
.rb-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 0;border-top:1px solid var(--hair)}
.rb-row:first-child{border-top:0}
.rb-on{min-width:220px}
.rb-row-off .rb-ch{opacity:.5}
.rb-time{width:72px}
.rb-ch{display:flex;flex-wrap:wrap;gap:5px;flex-basis:100%}
.rb-chip{cursor:pointer}
.rb-master{background:var(--brand);color:#fff}
.rb-announce{background:var(--brand-soft);color:var(--brand-ink);border-color:var(--brand)}
.rb-chip.rb-off{background:transparent;color:var(--faint);border:1px dashed var(--hair)}
.rh-log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.rh-log li{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--hair)}
.rh-how{margin:10px 0;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:var(--t-md);color:var(--ink-2)}

.fc-top{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.fc-top .td-fresh{grid-column:1/-1}
@media (max-width:700px){.fc-top{grid-template-columns:1fr}}
.fc-sum{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;list-style:none}
.fc-sum::-webkit-details-marker{display:none}
.fc-name{font-size:var(--t-md)}
.fc-meta{margin-left:auto}
.fc-one{flex-basis:100%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.fc-facts{margin:4px 0 0;padding-left:18px}

/* 29.09 консилиум: кто думает — мягкая пульсация, без спиннеров */
.cn-pend{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px}
.cn-dots::after{content:"…";display:inline-block;animation:cnDots 1.2s steps(4,end) infinite;overflow:hidden;width:0;vertical-align:bottom}
@keyframes cnDots{to{width:1.1em}}
@media (prefers-reduced-motion:reduce){.cn-dots::after{animation:none;width:auto}}

/* 29.09 «Память» консилиума */
.mem-list{padding:4px 0}
.mem-row{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-top:1px solid var(--hair)}
.mem-row:first-child{border-top:0}
.mem-kind{flex:none;min-width:118px;text-align:center}
.mem-text{line-height:1.45;overflow-wrap:anywhere}
.mem-acts{flex:none;justify-content:flex-end}
.mem-done .mem-text{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--hair)}
@media (max-width:720px){.mem-row{flex-wrap:wrap}.mem-kind{min-width:0}.mem-acts{width:100%;justify-content:flex-start}}

/* 29.09 варианты картинки: выбрать, какая уйдёт */
.cov-vars{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cov-var{padding:0;border:2px solid var(--hair);border-radius:8px;overflow:hidden;background:var(--surface-2);cursor:pointer;line-height:0}
.cov-var img{width:128px;height:72px;object-fit:cover;display:block}
.cov-var.on{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}
.cov-var:disabled{cursor:default;opacity:.7}

/* 29.09 календарь: картинка поста в панели; «ещё N» не вылезает из клетки месяца */
.cc-cov{width:100%;border-radius:8px;border:1px solid var(--hair);margin-top:6px}
.cal .more{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
