/* ==========================================================================
   Протокол — тема «Реестр» (подключается последней, поверх style.css)
   Концепция прежняя: Manrope, светло-серый фон, белые листы, один розовый акцент.
   Принципы (Brex / Ramp, Refero Styles):
     · розовый — только главное действие на экране и отметка «сегодня»;
     · тонкие линии вместо теней, единые радиусы: кнопки 10, листы 14, метки 6;
     · служебные данные — номера, даты, время, счётчики — моноширинным IBM Plex Mono,
       как реквизиты в документе;
     · иконки — Lucide одним стилем, без эмодзи и юникод-значков.
   ========================================================================== */

:root {
  --bg: #eceef3;
  --bg-soft: #f6f7f9;
  --shell: #ffffff;
  --card: #ffffff;
  --ink: #111827;
  --text: #1f2937;
  --muted: #687082;          /* темнее прежнего #8b93a7 — контраст AA на белом */
  --faint: #9aa1b0;
  --line: #e4e6ec;           /* волосяная линия */
  --line-strong: #d5d8e0;
  --primary: #e8437a;
  --primary-hover: #d13368;
  --primary-soft: #fdecf2;
  --primary-ring: rgba(232, 67, 122, .22);
  --accent-blue: #3d6fd6;
  --success: #1f8f5f;
  --success-soft: #e6f5ee;
  --warning: #b86a05;
  --warning-soft: #fdf3e2;
  --danger: #d4183f;
  --danger-soft: #fdecef;
  --radius: 14px;
  --radius-sm: 10px;
  --radius-tag: 6px;
  --radius-pill: 999px;
  --shadow: none;
  --shadow-lg: 0 24px 60px -24px rgba(17, 24, 39, .28);
  --font: "Manrope", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --ease: cubic-bezier(.2, .7, .2, 1);
}

body {
  font-family: var(--font);
  color: var(--text);
  font-feature-settings: "ss01", "cv11";
  letter-spacing: -0.005em;
}
::selection { background: var(--primary-soft); color: var(--ink); }

/* Реквизиты: моноширинный набор и табличные цифры */
.mono,
.stat-card .value, .dash-hero-value, .dash-mini strong,
.cal-day-time, .cal-day-num, .cal-count,
.as-item-date, .as-num, .as-history-time, .metric-pill,
.mp-ev-time, .notif-item small, td.num, .list-meta {
  font-family: var(--mono);
  font-feature-settings: "tnum", "zero";
  letter-spacing: -0.01em;
}
table, .badge, .value { font-variant-numeric: tabular-nums; }

.ui-icon { display: block; flex-shrink: 0; }

/* --- Каркас ------------------------------------------------------------------ */
.app-shell {
  border-radius: 18px;
  box-shadow: none;
  border: 1px solid var(--line);
}
.sidebar {
  border-right: 1px solid var(--line);
  padding: 1.1rem .75rem .9rem;
}
.brand { gap: .7rem; padding: 0 .35rem; margin-bottom: 1.4rem; }
.brand-mark {
  width: 36px; height: 36px; border-radius: 9px;
  font-family: var(--mono); font-weight: 600; font-size: .95rem;
  background: var(--ink);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .08);
}
.brand-text strong { font-size: .92rem; letter-spacing: -0.015em; }
.brand-text small { font-size: .7rem; color: var(--muted); }

.nav-label {
  font-family: var(--mono);
  font-size: .64rem; font-weight: 500;
  letter-spacing: .08em;
  color: var(--faint);
  padding: 0 .6rem;
  margin: 1rem 0 .35rem;
}
.nav-item {
  position: relative;
  gap: .7rem;
  padding: .55rem .6rem;
  border-radius: var(--radius-sm);
  font-size: .875rem; font-weight: 600;
  color: #4b5262;
  margin-bottom: 1px;
}
.nav-icon { width: 18px; height: 18px; opacity: .72; display: inline-flex; }
.nav-item:hover { background: var(--bg-soft); color: var(--ink); }
.nav-item.active { background: var(--bg-soft); color: var(--ink); }
.nav-item.active .nav-icon { color: var(--primary); opacity: 1; }
.nav-item.active::before {
  content: ""; position: absolute; left: -.75rem; top: 9px; bottom: 9px;
  width: 3px; border-radius: 0 3px 3px 0; background: var(--primary);
}
.logout {
  border-radius: var(--radius-sm);
  background: transparent; border: 1px solid var(--line);
  color: var(--muted);
}
.logout:hover { background: var(--danger-soft); border-color: transparent; color: var(--danger); }

.main-column { background: var(--bg-soft); }
.topbar { padding: .95rem 1.5rem; border-bottom: 1px solid var(--line); background: var(--shell); gap: .85rem; }
.topbar h2 { font-size: 1.15rem; font-weight: 800; letter-spacing: -0.025em; }
.view { padding: 1.25rem 1.5rem 1.75rem; }

.topbar-search {
  border-radius: var(--radius-sm);
  border: 1px solid var(--line);
  background: var(--bg-soft);
  box-shadow: none;
  cursor: pointer;
}
.topbar-search:hover { border-color: var(--line-strong); }
.topbar-search .search-icon { color: var(--faint); display: inline-flex; }
.topbar-search input { cursor: pointer; }
.topbar-search::after {
  content: "⌘K"; font-family: var(--mono); font-size: .68rem; color: var(--muted);
  border: 1px solid var(--line-strong); border-radius: 5px; padding: .05rem .35rem; margin-left: auto;
  background: #fff;
}

.notif-bell {
  width: 38px; height: 38px; border-radius: var(--radius-sm);
  border: 1px solid var(--line); background: #fff; color: #4b5262;
  display: inline-flex; align-items: center; justify-content: center;
}
.notif-bell:hover { border-color: var(--line-strong); color: var(--ink); }
.notif-badge {
  font-family: var(--mono); font-size: .62rem; font-weight: 600;
  background: var(--primary); box-shadow: 0 0 0 2px #fff;
}
.role-badge {
  border-radius: var(--radius-sm);
  border: 1px solid var(--line);
  color: #4b5262; font-weight: 600; font-size: .75rem;
  padding: .5rem .75rem;
}

/* --- Листы ------------------------------------------------------------------- */
.card {
  border-radius: var(--radius);
  border: 1px solid var(--line);
  box-shadow: none;
  padding: 1.15rem 1.25rem;
}
.card h3 {
  font-size: .9rem; font-weight: 800; letter-spacing: -0.015em;
  margin-bottom: .85rem;
}

/* --- Кнопки: одна розовая на экран ----------------------------------------- */
.btn {
  border-radius: var(--radius-sm);
  font-weight: 650;
  font-size: .82rem;
  padding: .55rem .95rem;
  letter-spacing: -0.005em;
  transition: background .15s var(--ease), border-color .15s var(--ease), color .15s var(--ease), transform .1s;
}
.btn:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--primary-ring); }
.btn-primary { background: var(--primary); box-shadow: none; }
.btn-primary:hover { background: var(--primary-hover); }
.btn-secondary { background: #fff; border: 1px solid var(--line-strong); color: var(--ink); }
.btn-secondary:hover { background: var(--bg-soft); border-color: #c7cbd5; }
/* «Опасные» действия — не чёрные плашки, а красный текст: заметно, но не кричит */
.btn-danger { background: #fff; border: 1px solid var(--line-strong); color: var(--danger); }
.btn-danger:hover { background: var(--danger-soft); border-color: transparent; color: var(--danger); }
.btn-sm { padding: .38rem .7rem; font-size: .76rem; border-radius: 8px; }
.btn:disabled { opacity: .45; cursor: default; }

/* --- Метки ------------------------------------------------------------------- */
.badge {
  border-radius: var(--radius-tag);
  font-size: .7rem; font-weight: 650;
  padding: .18rem .5rem;
  letter-spacing: 0;
}
.metric-pill {
  border-radius: var(--radius-tag);
  background: var(--bg-soft);
  border: 1px solid var(--line);
  font-size: .72rem; font-weight: 500;
  padding: .12rem .45rem;
}

/* --- Таблицы-реестры -------------------------------------------------------- */
th {
  font-family: var(--mono);
  font-size: .64rem; font-weight: 500;
  letter-spacing: .07em;
  color: var(--faint);
  border-bottom: 1px solid var(--line-strong);
}
td { border-bottom: 1px solid var(--line); padding: .72rem .75rem; }
tr:hover td { background: #fafbfc; }
th.sortable::after { color: var(--faint); }

/* --- Поля ---------------------------------------------------------------------- */
.form-group input, .form-group select, .form-group textarea,
.list-filters input, .list-filters select, .as-filters input, .as-filters select,
.login-card input {
  border-radius: var(--radius-sm);
  border: 1px solid var(--line-strong);
  background: #fff;
  transition: border-color .15s, box-shadow .15s;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus,
.list-filters input:focus, .list-filters select:focus, .login-card input:focus {
  outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring);
}
.form-group label { font-size: .74rem; color: #4b5262; font-weight: 650; letter-spacing: 0; text-transform: none; }
.list-filters { border-radius: var(--radius); }

/* --- Счётчики ------------------------------------------------------------------ */
.stat-card {
  border-radius: var(--radius);
  border: 1px solid var(--line);
  box-shadow: none;
  padding: 1rem 1.1rem .95rem;
}
.stat-card::after { width: 7px; height: 7px; top: .95rem; right: .95rem; opacity: .9; }
.stat-card .value { font-size: 1.7rem; font-weight: 500; letter-spacing: -0.04em; }
.stat-card .label { font-size: .74rem; color: var(--muted); font-weight: 600; margin-top: .3rem; }

/* --- Дашборд --------------------------------------------------------------------- */
.dash-hero { padding: 1.35rem 1.4rem !important; gap: 1.25rem; align-items: flex-end; }
.dash-kicker {
  font-family: var(--mono); font-size: .66rem; font-weight: 500;
  letter-spacing: .08em; color: var(--faint);
}
.dash-hero-value { font-size: 3.4rem; font-weight: 500; letter-spacing: -0.06em; }
.dash-hero-label { font-size: .82rem; color: var(--muted); }
.dash-mini {
  border-radius: 12px; background: #fff; border: 1px solid var(--line);
  padding: .85rem 1rem; min-width: 128px;
}
.dash-mini-label { font-size: .7rem; color: var(--muted); font-weight: 600; }
.dash-mini strong { font-size: 1.45rem; font-weight: 500; letter-spacing: -0.04em; }
.dash-mini-dark { background: var(--ink); border-color: var(--ink); }
.dashboard-alerts .alert { border-radius: 10px; font-weight: 600; font-size: .85rem; padding: .7rem .9rem; }

/* Календарь и «События дня» — строки реестра */
.cal-cell { border-radius: 9px; border: 1px solid transparent; }
.cal-cell:hover { border-color: var(--line-strong); }
.cal-today { box-shadow: inset 0 0 0 1.5px var(--primary); }
.cal-selected { background: var(--ink) !important; color: #fff; }
.cal-day-item {
  border-radius: 10px; background: #fff; border: 1px solid var(--line);
  padding: .65rem .75rem;
}
.cal-day-item:hover { background: var(--bg-soft); border-color: var(--line-strong); }
.cal-day-time { font-size: .82rem; font-weight: 500; min-width: 3.2rem; }

/* --- Карточка совещания ---------------------------------------------------------- */
.detail-toolbar { padding: 1rem 1.15rem; }
.detail-toolbar-label {
  font-family: var(--mono); font-size: .62rem; font-weight: 500;
  letter-spacing: .08em; color: var(--faint);
}
.detail-toolbar-section { padding-top: .75rem; margin-top: .75rem; border-top: 1px solid var(--line); }
.risk-list li { border-radius: 8px; background: var(--danger-soft); color: #9b1236; font-weight: 600; }

/* --- Модальные окна ---------------------------------------------------------- */
.modal-backdrop { background: rgba(17, 24, 39, .32); backdrop-filter: blur(3px); }
.modal-content {
  border-radius: 16px;
  border: 1px solid var(--line);
  box-shadow: var(--shadow-lg);
  padding: 1.5rem 1.6rem;
}
.modal-close {
  border-radius: 8px; border: 1px solid var(--line); background: #fff; color: var(--muted);
}

/* --- Уведомления ------------------------------------------------------------------ */
.toast {
  border-radius: 10px;
  background: var(--ink);
  font-weight: 600; font-size: .84rem;
  box-shadow: var(--shadow-lg);
  border-left: 3px solid var(--faint);
  padding: .7rem .95rem;
}
.toast-success { background: var(--ink); border-left-color: #34c38a; }
.toast-error { background: var(--ink); border-left-color: #ff5b7f; }
.toast-info { border-left-color: #8aa7ff; }
.notif-panel { border-radius: 14px; border: 1px solid var(--line); box-shadow: var(--shadow-lg); }
.notif-item.unread { background: #fff; box-shadow: inset 3px 0 0 var(--primary); }
.notif-item strong { font-size: .85rem; }

/* --- Пустые состояния -------------------------------------------------------------- */
.empty { border-radius: var(--radius); border: 1px dashed var(--line-strong); color: var(--muted); }

/* --- Вход ----------------------------------------------------------------------------- */
#login-screen {
  background:
    linear-gradient(var(--bg), var(--bg)),
    var(--bg);
  background-image:
    linear-gradient(to right, rgba(17, 24, 39, .045) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(17, 24, 39, .045) 1px, transparent 1px);
  background-size: 32px 32px;
}
.login-card {
  border-radius: 16px;
  border: 1px solid var(--line);
  box-shadow: var(--shadow-lg);
  padding: 2rem 2rem 1.75rem;
  max-width: 400px;
}
.login-brand { gap: .85rem; padding-bottom: 1.35rem; margin-bottom: 1.35rem; border-bottom: 1px solid var(--line); }
.login-card h1 { font-size: 1.35rem; font-weight: 800; letter-spacing: -0.035em; }
.login-card .subtitle { font-size: .8rem; }
.login-card label { font-family: var(--mono); font-size: .64rem; font-weight: 500; letter-spacing: .08em; color: var(--faint); }
.login-card button[type=submit] { border-radius: var(--radius-sm); box-shadow: none; font-weight: 700; }
.login-meta {
  display: flex; justify-content: space-between; gap: 1rem;
  margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: .66rem; color: var(--faint); letter-spacing: .02em;
}

/* --- Мобильные ----------------------------------------------------------------------- */
.mobile-tabbar { border-top: 1px solid var(--line); box-shadow: none; }
.mobile-tab.active { color: var(--ink); }
.mobile-tab.active .mobile-tab-icon { color: var(--primary); }
.mobile-tab-icon, .mobile-menu-icon { display: inline-flex; }

/* --- Командная палитра ⌘K --------------------------------------------------------------- */
.cmdk { position: fixed; inset: 0; z-index: 2000; display: flex; justify-content: center; align-items: flex-start; padding: 12vh 1rem 1rem; }
.cmdk.hidden { display: none; }
.cmdk-backdrop { position: absolute; inset: 0; background: rgba(17, 24, 39, .32); backdrop-filter: blur(3px); }
.cmdk-panel {
  position: relative; width: 100%; max-width: 620px;
  background: #fff; border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.cmdk-search { display: flex; align-items: center; gap: .65rem; padding: .9rem 1.1rem; border-bottom: 1px solid var(--line); color: var(--faint); }
.cmdk-search input { flex: 1; border: 0; outline: 0; font: inherit; font-size: 1rem; color: var(--ink); background: transparent; }
.cmdk-search kbd, .cmdk-foot kbd {
  font-family: var(--mono); font-size: .66rem; color: var(--muted);
  border: 1px solid var(--line-strong); border-radius: 5px; padding: .05rem .35rem; background: var(--bg-soft);
}
.cmdk-list { max-height: min(56vh, 460px); overflow-y: auto; padding: .4rem; }
.cmdk-group { font-family: var(--mono); font-size: .62rem; letter-spacing: .08em; color: var(--faint); padding: .65rem .7rem .3rem; }
.cmdk-item {
  display: flex; align-items: center; gap: .7rem; width: 100%;
  padding: .55rem .7rem; border: 0; border-radius: 9px; background: transparent;
  font: inherit; font-size: .88rem; color: var(--text); text-align: left; cursor: pointer;
}
.cmdk-item .ui-icon { color: var(--faint); }
.cmdk-item small { margin-left: auto; color: var(--faint); font-family: var(--mono); font-size: .7rem; white-space: nowrap; }
.cmdk-item span.cmdk-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmdk-item.is-active { background: var(--bg-soft); color: var(--ink); }
.cmdk-item.is-active .ui-icon { color: var(--primary); }
.cmdk-empty { padding: 1.4rem; text-align: center; color: var(--muted); font-size: .88rem; }
.cmdk-foot { display: flex; gap: 1rem; padding: .55rem 1rem; border-top: 1px solid var(--line); color: var(--faint); font-size: .72rem; }

/* --- Движение: если в системе «уменьшить движение» — без анимаций -------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* --- Поручения: канбан как реестр ------------------------------------------------------- */
.as-stats-row { gap: .75rem; }
.as-board { gap: .85rem; }
.as-col { background: var(--bg-soft); border-color: var(--line); padding: .95rem .8rem .8rem; }
.as-col.is-drop { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
.as-col-head h3 { font-size: .85rem; }
.as-dot { width: 7px; height: 7px; }
.as-item {
  background: #fff; border: 1px solid var(--line); border-radius: 10px;
  padding: .7rem .75rem; gap: .7rem;
  transition: border-color .15s, box-shadow .15s;
}
.as-item:hover, .as-item:focus-visible { background: #fff; border-color: var(--line-strong); box-shadow: 0 6px 18px -12px rgba(17, 24, 39, .35); }
.as-item.is-dragging { opacity: .5; }
.as-item-date { font-size: .82rem; font-weight: 500; min-width: 2.9rem; color: var(--ink); }
.as-item-date.is-overdue { color: var(--danger); }
.as-item-date small { font-weight: 400; color: var(--faint); }
.as-item-body strong { font-size: .84rem; font-weight: 650; letter-spacing: -0.01em; }
.as-item-body small { font-size: .72rem; color: var(--muted); }
.as-item-note { font-style: normal; }
.as-detail .card { background: #fff; border: 1px solid var(--line); }
.as-history-item { background: #fff; border: 1px solid var(--line); }
.as-history-time { color: var(--muted); font-weight: 500; }
.as-filters { background: #fff; }

/* --- Медиаплан: чипы дней ---------------------------------------------------------------- */
.mp-chip { border-radius: var(--radius-sm); border-color: var(--line-strong); }
.mp-chip.active { background: var(--ink); border-color: var(--ink); }
/* Сегодня — розовым, как было: это «отметка сегодня», второе законное место акцента */
.mp-chip-today { border-color: var(--primary); color: var(--primary); background: var(--primary-soft); }
.mp-chip-today.active { background: var(--ink); border-color: var(--ink); color: #fff; box-shadow: 0 0 0 2px var(--primary-ring); }
.card.mp-day-today { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
.mp-today { color: var(--primary); }

/* --- Кнопки с иконкой ------------------------------------------------------------------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; }
.btn .ui-icon { opacity: .75; }

/* --- Переключатель вкладок (segmented): одна подложка «едет» под активный пункт ---------- */
.seg { position: relative; display: inline-flex; padding: 3px; gap: 2px; background: var(--bg-soft); border: 1px solid var(--line); border-radius: 10px; flex-shrink: 0; }
.seg-btn { position: relative; z-index: 1; border: 0; background: transparent; font: inherit; font-size: .8rem; font-weight: 600; color: var(--muted); padding: .38rem .8rem; border-radius: 7px; cursor: pointer; transition: color .15s; }
.seg-btn:hover { color: var(--ink); }
.seg-btn.is-active { color: var(--ink); background: #fff; box-shadow: 0 0 0 1px var(--line), 0 1px 2px rgba(17, 24, 39, .06); }
.seg-btn:focus-visible { outline: 2px solid var(--primary-ring); outline-offset: 1px; }

/* --- Поручения: четыре колонки помещаются в экран --------------------------------------- */
.as-filters { gap: .5rem; align-items: center; }
.as-col { flex: 1 1 0; min-width: 236px; }
.as-col.is-empty { flex: 0 0 180px; min-width: 180px; }
.as-item-note { display: flex; gap: .3rem; align-items: flex-start; }
.as-item-note .ui-icon { margin-top: 2px; opacity: .6; }

/* --- Счётчики: точка только там, где цифра что-то значит ------------------------------- */
.stat-card:not(.as-stat)::after { background: var(--line-strong); opacity: 1; }
.stat-card.stat-good::after { background: var(--success); }
.stat-card.stat-warn::after { background: var(--warning); }
.stat-card.stat-bad::after  { background: var(--danger); }

/* --- Карточка совещания: шапка записи ---------------------------------------------------- */
.detail-toolbar { gap: 0; padding: 1.1rem 1.25rem 1.15rem; }
.btn-link {
  display: inline-flex; align-items: center; gap: .2rem; border: 0; background: none; padding: .2rem .1rem;
  font: inherit; font-size: .8rem; font-weight: 600; color: var(--muted); cursor: pointer; border-radius: 6px;
}
.btn-link:hover { color: var(--ink); }
.btn-link:focus-visible { outline: 2px solid var(--primary-ring); }
.btn-back { min-width: 0; }
.detail-title { font-size: 1.45rem; font-weight: 750; letter-spacing: -0.025em; line-height: 1.2; margin: .7rem 0 .3rem; color: var(--ink); }
.detail-meta { font-family: var(--mono); font-size: .76rem; color: var(--muted); display: flex; flex-wrap: wrap; gap: .45rem; margin: 0; }
.detail-meta span { color: var(--faint); }
.detail-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.detail-actions-gap { flex: 1; }
.export-wrap { position: relative; display: inline-flex; align-items: center; color: var(--muted); }
.export-wrap .ui-icon { position: absolute; left: .7rem; pointer-events: none; }
.export-wrap .export-select { min-height: 0; width: auto; padding: .5rem 2rem .5rem 2.1rem; font-size: .82rem; font-weight: 600; background-color: #fff; border-color: var(--line-strong); }

/* Меню «Ещё» */
details.menu { position: relative; }
details.menu > summary { list-style: none; cursor: pointer; }
details.menu > summary::-webkit-details-marker { display: none; }
.menu-pop {
  position: absolute; z-index: 30; top: calc(100% + 6px); left: 0; min-width: 240px;
  background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 5px;
  box-shadow: 0 16px 40px -18px rgba(17, 24, 39, .35);
}
.menu-item {
  display: block; width: 100%; text-align: left; border: 0; background: none; font: inherit;
  font-size: .84rem; font-weight: 550; color: var(--ink); padding: .5rem .65rem; border-radius: 8px; cursor: pointer;
}
.menu-item:hover, .menu-item:focus-visible { background: var(--bg-soft); outline: none; }
.menu-item.is-danger { color: var(--danger); }
.menu-pop hr { border: 0; border-top: 1px solid var(--line); margin: 4px 2px; }

/* Ключ — значение */
.kv { display: grid; grid-template-columns: 7.5rem 1fr; gap: .45rem 1rem; margin: 0 0 .5rem; font-size: .88rem; }
.kv dt { color: var(--muted); font-size: .8rem; font-weight: 600; }
.kv dd { margin: 0; }
.mono { font-family: var(--mono); font-size: .85em; }

/* Риски — строки реестра, без заливки */
.risk-list li { background: none; border-radius: 0; color: var(--ink); font-weight: 550; padding: .55rem 0 .55rem 1.1rem; border-bottom: 1px solid var(--line); position: relative; margin: 0; }
.risk-list li:last-child { border-bottom: 0; }
.risk-list li::before { content: ""; position: absolute; left: 0; top: 1.02rem; width: 6px; height: 6px; border-radius: 50%; background: var(--danger); }

/* --- Карточка совещания на телефоне: главное — во всю ширину, остальное — сеткой 2×N ---- */
@media (max-width: 768px) {
  .detail-title { font-size: 1.25rem; }
  .detail-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .45rem; }
  .detail-actions > .btn { width: 100%; min-width: 0; }
  .detail-actions > .btn-primary { grid-column: 1 / -1; }
  .detail-actions-gap { display: none; }
  .detail-actions details.menu > summary { width: 100%; }
  .detail-actions .export-wrap, .detail-actions .export-wrap .export-select { width: 100%; max-width: none; }
  .menu-pop { left: auto; right: 0; }
  .topbar-search::after { display: none; }
  .detail-actions .export-wrap .export-select { padding-right: 1.4rem; }
  .grid-3:has(> .stat-card) { grid-template-columns: 1fr 1fr; gap: .6rem; }
}
.as-stats-row .as-stat-total::after { background: var(--ink); opacity: 1; }

/* --- Списки внутри листов: маркеры не вылезают за край --------------------------------- */
.card > ul:not([class]), .card > ol:not([class]) { padding-left: 1.25rem; }
.card > ul:not([class]) li, .card > ol:not([class]) li { padding: .15rem 0; }

/* Повестка — пронумерованные строки реестра */
ol.agenda-list { list-style: none; padding: 0; margin: 0; counter-reset: agenda; }
ol.agenda-list li {
  counter-increment: agenda; display: flex; gap: .85rem; align-items: baseline;
  padding: .6rem 0; border-top: 1px solid var(--line); font-size: .92rem; color: var(--ink);
}
ol.agenda-list li:first-child { border-top: 0; padding-top: .1rem; }
ol.agenda-list li::before {
  content: counter(agenda, decimal-leading-zero); font-family: var(--mono); font-size: .76rem;
  color: var(--faint); min-width: 1.4rem; flex-shrink: 0;
}

/* ==========================================================================
   Раскатка на все разделы
   ========================================================================== */

/* --- Фильтры списков: поля одной высоты, чекбокс не растягивается ---------------------- */
.list-filters { gap: .45rem; padding: .7rem .8rem; }
.list-filters input, .list-filters select {
  border-radius: var(--radius-sm); border-color: var(--line); background: #fff;
  font-size: .84rem; padding: .48rem .7rem; min-height: 36px;
}
.list-filters input:focus, .list-filters select:focus { outline: none; border-color: var(--line-strong); box-shadow: 0 0 0 3px var(--primary-ring); }
.list-filters input[type="search"] { flex: 1 1 200px; }
.list-filters input[type="checkbox"] { min-width: 0; min-height: 0; width: 16px; height: 16px; padding: 0; accent-color: var(--ink); }
.list-filters .checkbox-inline { display: inline-flex; gap: .4rem; font-size: .82rem; font-weight: 600; color: var(--muted); white-space: nowrap; padding: 0 .3rem; }
.filter-date { display: inline-flex; align-items: center; gap: .35rem; font-size: .78rem; font-weight: 600; color: var(--muted); font-family: var(--mono); }
.filter-date input { min-width: 0; font-family: var(--font); }

/* --- Массовые действия: появляются при выборе строк -------------------------------------- */
.bulk-toolbar:not([hidden]) {
  display: flex; align-items: center; gap: .45rem; flex-wrap: wrap;
  background: var(--ink); color: #fff; border-radius: var(--radius-sm); padding: .45rem .5rem .45rem .9rem;
  animation: rise .2s var(--ease) both;
}
.bulk-toolbar .bulk-count { font-size: .82rem; font-weight: 600; margin-right: auto; color: rgba(255, 255, 255, .75); }
.bulk-toolbar .bulk-count strong { color: #fff; font-family: var(--mono); font-weight: 500; }
.bulk-toolbar .btn-secondary { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .16); color: #fff; }
.bulk-toolbar .btn-secondary:hover { background: rgba(255, 255, 255, .16); }
@keyframes rise { from { opacity: 0; transform: translateY(4px); } }

/* --- Таблицы: строка целиком кликабельна, числа справа, действия не переносятся ---------- */
.clickable-row:hover td { background: var(--bg-soft); }
td.nowrap, .nowrap { white-space: nowrap; }
td.num { font-family: var(--mono); font-feature-settings: "tnum"; }
td.num.is-warn { color: var(--warning); font-weight: 500; }
@media (min-width: 769px) {
  td.row-actions { display: table-cell; white-space: nowrap; text-align: right; width: 1%; }
}
.row-actions { flex-wrap: nowrap; align-items: center; }
td.row-actions > * { vertical-align: middle; }
td.row-actions .btn + .btn, td.row-actions .btn + details { margin-left: .3rem; }
td input[type="checkbox"], th input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--ink); cursor: pointer; }

/* Кнопка-иконка */
.btn-icon { padding: .42rem; min-width: 32px; justify-content: center; }
.btn-icon .ui-icon { opacity: .8; }
.btn-sm.btn-icon { padding: .35rem; min-width: 30px; min-height: 30px; }

/* Меню «…» в строке открывается влево, чтобы не уезжать за край */
details.menu { display: inline-block; text-align: left; }
details.menu-right .menu-pop { left: auto; right: 0; min-width: 220px; }
details.menu[open] > summary { background: var(--bg-soft); border-color: var(--line-strong); }
details.menu[open] .menu-pop { animation: rise .14s var(--ease) both; }

/* --- Иконки внутри меток и строк ---------------------------------------------------------- */
.badge { display: inline-flex; align-items: center; gap: .25rem; }
.badge .ui-icon { opacity: .8; }

/* --- Медиаплан: категория — линейная иконка в квадрате, мета-строки с иконками ---------- */
.mp-ev-icon {
  width: 38px; height: 38px; border-radius: 10px; border: 1px solid var(--line); background: #fff;
  display: inline-flex; align-items: center; justify-content: center; color: var(--ink); font-size: 0;
}
.mp-meta { align-items: flex-start; }
.mp-meta .ui-icon { color: var(--faint); margin-top: 3px; }
.mp-badge-smi { background: var(--primary-soft); color: #9b1f4f; }
.mp-badge-photo { background: var(--bg-soft); color: var(--text); border: 1px solid var(--line); }
.mp-weeknav .btn-sm { min-height: 32px; }

/* --- Отчёты: фильтр периода как в списках -------------------------------------------------- */
.analytics-filters { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: 1rem; }
.analytics-filters label { display: inline-flex; align-items: center; gap: .4rem; font-family: var(--mono); font-size: .76rem; color: var(--muted); text-transform: lowercase; }
.analytics-filters input {
  border: 1px solid var(--line); border-radius: var(--radius-sm); background: #fff;
  font: inherit; font-family: var(--font); font-size: .84rem; color: var(--ink); padding: .45rem .65rem; min-height: 36px;
}
.analytics-filters input:focus { outline: none; border-color: var(--line-strong); box-shadow: 0 0 0 3px var(--primary-ring); }

/* --- Инструкция: подсказка — нейтральная заметка, не розовая тревога --------------------- */
.help-tip { background: var(--bg-soft); border: 1px solid var(--line); border-left: 3px solid var(--ink); border-radius: var(--radius-sm); color: var(--ink); }
kbd { font-family: var(--mono); font-size: .72em; border: 1px solid var(--line-strong); border-bottom-width: 2px; border-radius: 5px; padding: .05rem .35rem; background: #fff; color: var(--ink); }

/* --- Уведомления ----------------------------------------------------------------------------- */
.notif-panel { top: calc(64px + env(safe-area-inset-top, 0px)); right: max(1rem, env(safe-area-inset-right, 0px)); max-width: 400px; max-height: min(520px, calc(100dvh - 88px)); }
.notif-panel-head { padding: .85rem 1rem .75rem; border-bottom-color: var(--line); }
.notif-panel-head strong { font-size: .92rem; font-weight: 800; color: var(--ink); }
.notif-filters { align-items: center; justify-content: space-between; padding: .55rem 1rem; border-bottom-color: var(--line); margin: 0; }
.notif-filters .checkbox-inline { font-size: .78rem; font-weight: 600; color: var(--muted); gap: .4rem; }
.notif-filters input[type="checkbox"] { width: 15px; height: 15px; accent-color: var(--ink); }
.notif-filters select { border-color: var(--line); border-radius: 8px; font: inherit; font-size: .78rem; padding: .3rem .5rem; background: #fff; }
.notif-item { padding: .75rem 1rem; border-bottom: 1px solid var(--line); text-align: left; gap: .15rem; }
.notif-item:last-child { border-bottom: 0; }
.notif-empty { display: flex; flex-direction: column; align-items: center; text-align: center; gap: .35rem; padding: 2rem 1.5rem 2.25rem; color: var(--muted); }
.notif-empty .ui-icon { color: var(--faint); margin-bottom: .25rem; }
.notif-empty p { font-size: .88rem; font-weight: 700; color: var(--ink); margin: 0; }
.notif-empty small { font-size: .76rem; max-width: 260px; }

/* --- Календарь: розовый — только «сегодня»; счётчики и точки нейтральные ------------------- */
.cal-count { background: #fff; color: var(--ink); border: 1px solid var(--line-strong); font-weight: 500; font-size: .62rem; }
.cal-selected .cal-count { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .25); color: #fff; }
.cal-dot { background: var(--ink); }
.cal-dot-event { background: var(--accent-blue); }
.cal-selected .cal-dot { background: #fff; }
.cal-selected .cal-dot-event { background: #9db8f0; }

/* --- Списки на телефоне: строка таблицы становится карточкой ------------------------------- */
@media (max-width: 768px) {
  .card:has(> table.list-table) { overflow: visible; padding: .35rem 1rem; }
  table.list-table { min-width: 0; width: 100%; }
  table.list-table thead { display: none; }
  table.list-table tbody, table.list-table tr { display: block; }
  table.list-table tr { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .65rem; padding: .85rem 0; border-bottom: 1px solid var(--line); }
  table.list-table tr.list-section-divider { padding: 1rem 0 .4rem; }
  table.list-table tr.list-section-divider:first-child { padding-top: .4rem; }
  table.list-table tr:last-child { border-bottom: 0; }
  table.list-table td { display: block; padding: 0; border: 0; font-size: .8rem; background: none !important; }
  table.list-table td:has(> strong) { flex: 1 0 100%; order: -1; font-size: .92rem; }
  table.list-table td:has(> .item-bulk-cb) { display: none; }
  table.list-table td.list-kind { flex: 1 0 100%; order: -2; font-family: var(--mono); font-size: .66rem; letter-spacing: .06em; text-transform: uppercase; color: var(--faint); }
  table.list-table td.mono { color: var(--muted); }
  table.list-table td.num::after { content: " " attr(data-label); font-family: var(--font); color: var(--muted); }
  table.list-table td.row-actions { display: flex; margin-left: auto; gap: .3rem; }
  table.list-table td.row-actions .btn { min-height: 36px; }
  .topbar-actions .btn { white-space: nowrap; }
}

/* --- Медиаплан: цветные плитки категорий — живость, как была у смайликов ------------------- */
.mp-ev-icon { --c: #475569; --bg: #f1f5f9; color: var(--c); background: var(--bg); border-color: transparent; border-radius: 11px; width: 40px; height: 40px; }
.mp-ev-icon .ui-icon { stroke-width: 2; }
.mp-cat-video          { --c: #2563eb; --bg: #e7efff; }
.mp-cat-award          { --c: #c27803; --bg: #fff4d6; }
.mp-cat-smile          { --c: #db2777; --bg: #fde7f1; }
.mp-cat-graduation-cap { --c: #4f46e5; --bg: #ebeafe; }
.mp-cat-wrench         { --c: #ea580c; --bg: #ffedde; }
.mp-cat-hard-hat       { --c: #d97706; --bg: #fef1d8; }
.mp-cat-trophy         { --c: #16a34a; --bg: #e2f7e9; }
.mp-cat-briefcase      { --c: #0d9488; --bg: #dff6f2; }
.mp-cat-chart-column   { --c: #7c3aed; --bg: #f0e9fe; }
.mp-cat-vote           { --c: #0891b2; --bg: #def4fa; }
.mp-cat-users          { --c: #e11d48; --bg: #ffe6eb; }
.mp-cat-sparkles       { --c: #c026d3; --bg: #fbe8fd; }
.mp-cat-star           { --c: #ca8a04; --bg: #fdf5d3; }
.mp-cat-clipboard-list { --c: #475569; --bg: #eef1f5; }
.mp-cat-calendar-days  { --c: #e8437a; --bg: #fdecf2; }

/* Строки «место / ответственный / заместитель / участники» — свой цвет у каждой иконки */
.mp-meta-place .ui-icon  { color: #e11d48; }
.mp-meta-owner .ui-icon  { color: #c27803; }
.mp-meta-deputy .ui-icon { color: #2563eb; }
.mp-meta-people .ui-icon { color: #7c3aed; }

/* Метки съёмки */
.mp-badge-smi .ui-icon { color: #db2777; opacity: 1; }
.mp-badge-photo .ui-icon { color: #0891b2; opacity: 1; }

/* Показ Главе — плитки крупнее */
.mp-show .mp-ev-icon { width: 52px; height: 52px; border-radius: 14px; }
.mp-show .mp-ev-icon .ui-icon { width: 26px; height: 26px; }
