:root {
  --bg: #f4f6f9;
  --card: #ffffff;
  --ink: #16202b;
  --ink-soft: #5b6b7c;
  --ink-faint: #8b9aa9;
  --line: #e2e8ef;
  --line-strong: #cbd6e0;
  --accent: #1f6feb;
  --accent-dark: #1857b8;
  --accent-soft: #e8f0fe;
  --ok: #0f8a54;
  --ok-soft: #e6f5ee;
  --err: #c1392b;
  --err-soft: #fdecea;
  --warn: #b7791f;
  --warn-soft: #fdf3d9;
  --radius: 12px;
  --shadow: 0 1px 2px rgba(20, 35, 50, .06), 0 8px 24px rgba(20, 35, 50, .05);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font: 400 15px/1.55 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
}

/*
 * width: 100% — не просто «на всякий случай». main.wrap — прямой flex-item в
 * body:not(.login-page) { display: flex; flex-direction: column } (сквозной футер
 * прижат к низу). У flex-item с margin: 0 auto браузер трактует auto-отступы по
 * поперечной оси иначе, чем у обычного блока: вместо растягивания на всю ширину
 * контейнера с последующим ограничением max-width элемент сжимается по контенту
 * (fit-content) — из-за этого шапка/подвал (обычные блоки, не flex-item) оказывались
 * шире и не совпадали по краям с main. width: 100% отключает этот эффект.
 */
.wrap { width: 100%; max-width: 1080px; margin: 0 auto; padding: 0 24px; }

.top {
  background: var(--card);
  border-bottom: 1px solid var(--line);
  margin-bottom: 28px;
}
.top-inner {
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding-top: 18px; padding-bottom: 18px;
}
.logo { display: flex; align-items: center; gap: 12px; }
.logo-mark {
  width: 38px; height: 38px; border-radius: 10px; flex: none;
  background: linear-gradient(135deg, var(--accent), #6aa2ff);
  color: #fff; font-weight: 700; font-size: 14px; letter-spacing: .5px;
  display: grid; place-items: center;
}
.logo b { display: block; font-size: 16px; font-weight: 600; }
.logo small { display: block; color: var(--ink-soft); font-size: 13px; }

.card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 26px 28px 28px;
  margin-bottom: 22px;
}
/* Последняя карточка на странице — вплотную к подвалу, добавляем воздуха снизу. */
main .card:last-child { padding-bottom: 40px; }

.step-head { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.step-num {
  width: 26px; height: 26px; border-radius: 50%; flex: none;
  background: var(--accent-soft); color: var(--accent);
  font-size: 13px; font-weight: 600;
  display: grid; place-items: center;
}
.step-head h2 { margin: 0; font-size: 17px; font-weight: 600; }

h3 { margin: 0; font-size: 14px; font-weight: 600; }

.field-label {
  display: block; font-size: 12px; font-weight: 600; letter-spacing: .03em;
  text-transform: uppercase; color: var(--ink-faint); margin-bottom: 8px;
}

/* Карточка «что сейчас загружено» — вместо/над формой ручной загрузки */
.source-summary {
  display: flex; align-items: flex-start; gap: 12px; flex-wrap: wrap;
  background: var(--ok-soft); border: 1px solid var(--ok); border-radius: 10px;
  padding: 14px 16px; margin-bottom: 18px;
}
.source-summary-icon {
  width: 22px; height: 22px; border-radius: 50%; flex: none; margin-top: 1px;
  display: grid; place-items: center; background: var(--ok);
}
.source-summary-icon svg {
  width: 12px; height: 12px; fill: none; stroke: #fff;
  stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round;
}
.source-summary-body { flex: 1 1 260px; min-width: 0; }
.source-summary-title { margin: 0; font-size: 14px; font-weight: 600; }
.source-summary-meta { margin: 4px 0 0; font-size: 12.5px; color: var(--ink-soft); word-break: break-all; }
.source-summary-meta a { color: inherit; }
.source-summary .btn { flex: none; align-self: center; }
.source-summary[hidden] { display: none; }

.source-summary.warn { background: var(--warn-soft); border-color: var(--warn); }
.source-summary.warn .source-summary-icon { background: var(--warn); }
.source-summary-warn-text { margin: 6px 0 0; font-size: 12.5px; color: var(--warn); font-weight: 500; }

/* Ручная загрузка — свёрнута по умолчанию, если уже что-то загружено */
.manual-upload summary {
  cursor: pointer; font-size: 13px; font-weight: 600; color: var(--ink-soft);
  padding: 6px 0; list-style: none;
}
.manual-upload summary::-webkit-details-marker { display: none; }
/* Ширина стрелки + отступ — как у чекбокса рядом (15px) + gap (10px, см. .switch/.option) —
   чтобы текст в свёрнутом заголовке и в строке под ним (чекбокс) начинался с одного места. */
.manual-upload summary::before {
  content: '▸'; display: inline-block; width: 15px; margin-right: 10px; text-align: center;
  color: var(--ink-faint); transition: transform .15s;
}
.manual-upload[open] summary::before { transform: rotate(90deg); }
.manual-upload .source-grid, .manual-upload .tabs-merge-body { margin-top: 16px; }

/* Свёрнутый блок «Объединить вкладки» на странице профиля клиента — крупнее и темнее
   общего .manual-upload summary (там это фон, тут — самостоятельный заметный переключатель),
   и с отступом снизу, отделяющим его от переключателя «Использовать шаблон для LADA». */
.tabs-merge { margin-bottom: 24px; }
.tabs-merge > summary { font-size: 15px; font-weight: 700; color: var(--ink); }

.source-grid {
  display: grid; grid-template-columns: 1fr auto 1fr; gap: 24px; align-items: start;
}
.or { align-self: center; position: relative; padding: 40px 0; }
.or span {
  color: var(--ink-faint); font-size: 12px; background: var(--card);
  position: relative; z-index: 1; padding: 6px 0; display: block;
}
.or::before {
  content: ''; position: absolute; left: 50%; top: 0; bottom: 0;
  width: 1px; background: var(--line);
}

.url-row { display: flex; gap: 8px; }
input[type="url"], input[type="text"], input[type="email"], input[type="search"], input[type="password"],
input[type="date"], input[type="time"], select {
  width: 100%; padding: 10px 12px; font: inherit; color: var(--ink);
  background: #fff; border: 1px solid var(--line-strong); border-radius: 8px;
  transition: border-color .15s, box-shadow .15s;
}
input:focus, select:focus, .drop:focus {
  outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft);
}

/*
 * Свой шеврон вместо нативной стрелки — у неё в паре с обычным padding она упирается
 * прямо в край поля (см. #profile-list, #add-client). Оставляем больше места справа,
 * чтобы стрелка не липла к рамке; .time-field select (выбор часа/минуты) стрелку
 * не показывает вовсе — этого правила не касается.
 */
select {
  padding-right: 36px;
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%238b9aa9' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
}

.hint { margin: 8px 0 0; font-size: 12.5px; color: var(--ink-faint); }
.hint-block { margin: -8px 0 18px; max-width: 720px; }
code { background: var(--bg); padding: 1px 5px; border-radius: 4px; font-size: 12.5px; }

.drop {
  border: 1.5px dashed var(--line-strong); border-radius: 10px;
  padding: 22px 16px; text-align: center; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  transition: border-color .15s, background .15s;
}
.drop:hover, .drop.over { border-color: var(--accent); background: var(--accent-soft); }
.drop svg {
  width: 26px; height: 26px; margin-bottom: 4px;
  fill: none; stroke: var(--accent); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round;
}
.drop b { font-size: 14px; font-weight: 500; }
.drop span { font-size: 12.5px; color: var(--ink-faint); }

.btn {
  padding: 10px 16px; font: inherit; font-weight: 500; white-space: nowrap;
  color: var(--ink); background: #fff; border: 1px solid var(--line-strong);
  border-radius: 8px; cursor: pointer; transition: background .15s, border-color .15s, opacity .15s;
}
.btn:hover:not(:disabled) { background: var(--bg); border-color: var(--ink-faint); }
.btn:disabled { opacity: .45; cursor: default; }
.btn-primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.btn-primary:hover:not(:disabled) { background: var(--accent-dark); border-color: var(--accent-dark); }
.btn-quiet { border-color: transparent; color: var(--ink-faint); }
.btn-lg { padding: 12px 28px; font-size: 15px; }
.btn-sm { padding: 9px 14px; font-size: 13.5px; }

.link {
  background: none; border: 0; padding: 0; font: inherit; font-size: 12.5px;
  color: var(--accent); cursor: pointer;
}
.link:hover { text-decoration: underline; }

.status { margin-top: 18px; padding: 12px 14px; border-radius: 8px; font-size: 13.5px; }
.status.err { background: var(--err-soft); color: var(--err); }
.status.ok { background: var(--ok-soft); color: var(--ok); }
.status.busy { background: var(--accent-soft); color: var(--accent-dark); }
.status ul { margin: 6px 0 0; padding-left: 18px; }

/* Тост — короткое всплывающее подтверждение сохранения, поверх всей страницы, правый верхний угол */
.toast {
  position: fixed; top: 20px; right: 20px; z-index: 100;
  transform: translateY(-12px);
  background: var(--ok); color: #fff; padding: 12px 20px; border-radius: 10px;
  font-size: 13.5px; font-weight: 500; box-shadow: var(--shadow);
  opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s;
}
.toast.show { opacity: 1; transform: translateY(0); }

.summary { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 22px; }
.stat {
  background: var(--bg); border: 1px solid var(--line); border-radius: 9px;
  padding: 10px 14px; min-width: 110px;
}
.stat b { display: block; font-size: 19px; font-weight: 600; letter-spacing: -.01em; }
.stat span { font-size: 12px; color: var(--ink-faint); }

.profiles { padding: 16px; background: var(--bg); border-radius: 10px; margin-bottom: 22px; }

.picker-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; }
.picker { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
/* Свои дилеры зависят и от регионов, и от марок сразу — держим их на всю ширину, ниже обеих колонок. */
.picker-dealers, .picker-excluded { grid-column: 1 / -1; }
.picker-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 14px; border-bottom: 1px solid var(--line); background: var(--bg);
}
.picker-actions { display: flex; gap: 12px; }
.search { border: 0; border-bottom: 1px solid var(--line); border-radius: 0; padding: 9px 14px; font-size: 13.5px; }
.search:focus { box-shadow: none; border-bottom-color: var(--accent); }
.options { max-height: 320px; overflow-y: auto; padding: 6px; }

.option {
  display: flex; align-items: center; gap: 10px;
  padding: 7px 10px; border-radius: 7px; cursor: pointer; font-size: 14px;
}
.option:hover { background: var(--bg); }
.option input { accent-color: var(--accent); width: 15px; height: 15px; flex: none; }
.option .name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.option.empty { opacity: .4; }

.tabs-toolbar { display: flex; align-items: center; gap: 10px; margin-top: 14px; margin-bottom: 14px; }
.tabs-count { color: var(--ink-faint); font-size: 13px; margin-left: auto; }

.tabs { display: grid; gap: 8px; margin-bottom: 22px; }
.tab-row {
  display: flex; align-items: center; gap: 12px;
  border: 1px solid var(--line); border-radius: 9px; padding: 10px 14px;
}
.tab-row.picked { border-color: var(--accent); background: var(--accent-soft); }
.tab-row input[type="checkbox"] { accent-color: var(--accent); width: 15px; height: 15px; flex: none; }
.tab-row .tab-name {
  border: 1px solid transparent; background: transparent; font-weight: 500;
  padding: 5px 8px; width: 240px; border-radius: 6px;
}
.tab-row .tab-name:hover { border-color: var(--line-strong); background: #fff; }
.tab-row .chips { display: flex; gap: 6px; flex-wrap: wrap; flex: 1; }
.chip {
  font-size: 12px; background: var(--bg); border: 1px solid var(--line);
  border-radius: 20px; padding: 2px 10px; color: var(--ink-soft);
}
.tab-row .rows { font-size: 12.5px; color: var(--ink-faint); font-variant-numeric: tabular-nums; }

.switch { display: flex; align-items: center; gap: 10px; font-size: 13.5px; cursor: pointer; }
.switch input { accent-color: var(--accent); width: 15px; height: 15px; }

.build-row { display: flex; gap: 10px; align-items: center; }
.build-row input { max-width: 320px; }

@media (max-width: 860px) {
  .source-grid { grid-template-columns: 1fr; }
  .or { padding: 0; }
  .or::before { left: 0; right: 0; top: 50%; bottom: auto; width: auto; height: 1px; }
  .or span { text-align: center; width: 60px; margin: 0 auto; }
  .picker-grid { grid-template-columns: 1fr; }
  .top-inner { flex-direction: column; align-items: flex-start; gap: 10px; }
}

.edit-name-row { margin-bottom: 22px; max-width: 360px; }
.edit-name-row input { width: 100%; }

.profile-add { margin-top: 22px; }
.profile-add-row {
  display: flex; gap: 8px; flex-wrap: wrap; overflow: hidden;
  max-height: 0; opacity: 0; transform: translateY(-6px);
  transition: max-height .3s ease, opacity .3s ease, transform .3s ease, margin-top .3s ease;
}
.profile-add-row.open { max-height: 200px; opacity: 1; transform: translateY(0); margin-top: 10px; }
.profile-add-row input { max-width: 240px; }

/* Страница входа */
.login-page {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
}
.login-card {
  width: 100%;
  max-width: 380px;
  margin: 0;
  display: grid;
  gap: 12px;
}
.login-card .brand { margin-bottom: 12px; }
/* Поле пароля вровень с кнопкой: 16 px не даёт iOS зумить страницу при фокусе */
.login-card input[type="password"] { padding: 11px 14px; font-size: 16px; }
.login-card .field-label { margin-bottom: 0; }
.login-card .btn { width: 100%; }
.login-card .status { margin-top: 0; }

/* Шапка: словесный знак «EASY Маркетинг» вместо придуманного значка */
.brand { display: grid; gap: 2px; }
.wordmark {
  font-size: 27px; line-height: 1.1; letter-spacing: -.02em; white-space: nowrap;
}
.wordmark-easy { font-weight: 800; color: var(--accent); }
.wordmark-mk { font-weight: 500; color: var(--ink-soft); }
.brand-sub { margin: 0; font-size: 13px; color: var(--ink-faint); }

/* Подвал: компактный знак API Company по центру, тоном как «Маркетинг» в шапке */
.foot {
  margin-top: 36px;
  padding: 34px 0 38px;
  background: #eef1f5;
  border-top: 1px solid var(--line);
}
.foot-inner { display: grid; justify-items: center; gap: 14px; text-align: center; }
/* Мини-версия знака. Охранное поле — 1X, где X равен высоте знака:
   при ширине 140 px это 23 px со всех сторон */
.foot-logo { display: block; width: 140px; height: auto; margin: 0 23px; }
.foot-line { margin: 0; font-size: 12.5px; color: var(--ink-faint); letter-spacing: .01em; }

.foot-login {
  margin-top: 28px; padding: 26px 0 0; background: none; border: 0;
  display: grid; justify-items: center; gap: 14px; text-align: center;
}

@media (max-width: 860px) {
  .wordmark { font-size: 24px; }
  .foot-inner { gap: 24px; }
}

/* Подвал прижат к низу, даже когда на странице открыт только первый шаг */
body:not(.login-page) { min-height: 100vh; display: flex; flex-direction: column; }
body:not(.login-page) main.wrap { flex: 1 0 auto; }
body:not(.login-page) .foot { flex: none; margin-top: auto; }

/* Личный кабинет — бургер-меню в правом углу шапки */
.account-menu { position: relative; }
.account-trigger {
  display: flex; align-items: center; gap: 7px;
  background: #fff; border: 1px solid var(--line-strong); border-radius: 20px;
  padding: 6px 14px 6px 10px; font: inherit; font-size: 13px; color: var(--ink-soft);
  cursor: pointer; transition: border-color .15s, background .15s;
}
.account-trigger:hover { background: var(--bg); border-color: var(--ink-faint); }
.account-trigger[aria-expanded="true"] { border-color: var(--accent); background: var(--accent-soft); }
.account-icon { width: 16px; height: 16px; flex: none; fill: currentColor; }
.account-dropdown {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 30;
  min-width: 220px; background: #fff; border: 1px solid var(--line); border-radius: 12px;
  box-shadow: var(--shadow); padding: 8px; display: flex; flex-direction: column; gap: 2px;
}
.account-dropdown[hidden] { display: none; }
.account-who { padding: 8px 10px 12px; margin-bottom: 4px; border-bottom: 1px solid var(--line); }
.account-who-row { display: flex; align-items: center; gap: 8px; }
.account-who b { font-size: 13.5px; font-weight: 600; }
.account-who-email { display: block; font-size: 12px; color: var(--ink-faint); margin-top: 2px; }
.account-item {
  display: block; width: 100%; text-align: left; padding: 9px 10px; border-radius: 7px;
  font: inherit; font-size: 13.5px; color: var(--ink); text-decoration: none;
  background: none; border: 0; cursor: pointer;
}
.account-item:hover { background: var(--bg); }
.account-logout { color: var(--err); }

/* Лого в шапке ведёт на главную — сама раскладка (grid) остаётся за .brand */
.brand-link { text-decoration: none; color: inherit; }

/* Страница менеджеров */
.manager-form { display: flex; flex-direction: column; gap: 12px; max-width: 360px; }
.template-switch { margin-bottom: 22px; }
.profile-toolbar { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; margin-bottom: 14px; }
.profile-search-wrap { position: relative; align-self: stretch; }
/* Переключатель «Все / Мои» — сегменты в одной рамке, активный подсвечен белым */
.seg { display: inline-flex; gap: 2px; padding: 3px; background: var(--bg); border: 1px solid var(--line-strong); border-radius: 9px; }
.seg button {
  border: 0; background: transparent; font: inherit; font-size: 13.5px; color: var(--ink-soft);
  padding: 9px 14px; border-radius: 7px; cursor: pointer; transition: background .15s, color .15s;
}
.seg button:hover { color: var(--ink); }
.seg button[aria-pressed="true"] { background: #fff; color: var(--ink); font-weight: 500; box-shadow: 0 1px 2px rgba(15, 23, 42, .12); }
.profile-search-icon {
  position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
  width: 15px; height: 15px; color: var(--ink-faint); pointer-events: none;
}
input.profile-search { width: 100%; padding-left: 34px; }
input.profile-search::placeholder { color: var(--ink-faint); }
/* Нативная кнопка очистки type=search — увеличиваем кликабельную область через
   scale (padding на этом псевдоэлементе браузеры почти не учитывают). */
input.profile-search::-webkit-search-cancel-button { cursor: pointer; transform: scale(1.4); }
.manager-list { display: grid; gap: 8px; }
.manager-row {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  border: 1px solid var(--line); border-radius: 9px; padding: 10px 14px;
}
/* Только у профилей клиентов: у менеджеров то же .manager-row несёт всплывающую
   подсказку копирования (.copy-tip) НАД кнопкой — overflow:hidden её бы срезал. */
#profile-list .manager-row {
  max-height: 200px; overflow: hidden;
  transition: max-height .3s ease, opacity .3s ease, transform .3s ease, padding .3s ease, border-color .3s ease;
}
#profile-list .manager-row.removing {
  max-height: 0; opacity: 0; transform: translateY(-6px);
  padding-top: 0; padding-bottom: 0; border-color: transparent; pointer-events: none;
}
.manager-row b { font-weight: 600; }
.manager-who { flex: 1 1 240px; }
.manager-creds .chip { align-self: flex-start; margin-top: 4px; }
.manager-creds {
  display: flex; flex-direction: column; gap: 2px; margin-top: 3px;
  color: var(--ink-faint); font-size: 12.5px;
}
.manager-pass {
  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
  font-weight: 600; letter-spacing: .02em; color: var(--ink);
}
.manager-date { color: var(--ink-faint); font-size: 12.5px; margin-left: auto; font-variant-numeric: tabular-nums; }

.icon-btn {
  position: relative;
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 32px; height: 32px; padding: 0; border-radius: 8px;
  border: 1px solid var(--line-strong); background: #fff; color: var(--ink-faint);
  cursor: pointer; transition: border-color .15s, background .15s, color .15s;
}
.icon-btn:hover { background: var(--bg); border-color: var(--ink-faint); color: var(--ink); }
.icon-btn svg { width: 15px; height: 15px; }
.icon-btn-danger { color: var(--err); }
.icon-btn-danger:hover:not(:disabled) { background: var(--err-soft); border-color: var(--err); color: var(--err); }

.copy-tip {
  position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translateX(-50%);
  background: var(--ink); color: #fff; font-size: 11.5px; font-weight: 500;
  padding: 4px 9px; border-radius: 6px; white-space: nowrap; pointer-events: none;
  animation: copy-tip-fade 1.8s ease forwards;
}
.copy-tip::after {
  content: ''; position: absolute; top: 100%; left: 50%; transform: translateX(-50%);
  border: 5px solid transparent; border-top-color: var(--ink);
}
.copy-tip.err { background: var(--err); }
.copy-tip.err::after { border-top-color: var(--err); }
@keyframes copy-tip-fade {
  0%, 100% { opacity: 0; }
  8%, 82% { opacity: 1; }
}
.icon-btn:disabled { opacity: .4; cursor: default; }

/* Страница истории */
.history-filters { display: flex; flex-wrap: wrap; gap: 14px; align-items: end; }
.history-filters > div { flex: 1 1 160px; min-width: 140px; }
.history-filters .btn { align-self: end; }

.history-list { display: grid; gap: 8px; }
.history-row {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  border: 1px solid var(--line); border-radius: 9px; padding: 12px 14px;
  /* Грид-ячейка по умолчанию не сжимается уже своего содержимого (min-width: auto).
     Одна строка с длинным списком марок без переносов (white-space: nowrap ниже)
     раздувала весь столбец грида — а с ним и все остальные строки, и саму страницу
     по горизонтали, хотя ломаться должна была только .history-tabs внутри. */
  min-width: 0;
}
.history-main { display: flex; flex-direction: column; gap: 2px; flex: 1 1 260px; min-width: 0; }
.history-main b { font-weight: 600; }
/* Источник, менеджер, дата и кнопка — одной группой у правого края: порознь каждый
   тянул бы на себя свободное место, и при нехватке ширины они разъезжались бы
   поодиночке, а не переносились вместе под карточку. */
.history-meta {
  display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap;
  gap: 8px 14px; margin-left: auto;
}
.history-meta .manager-date { margin-left: 0; }
.history-file { font-size: 12.5px; color: var(--ink-faint); overflow-wrap: anywhere; }
.history-tabs {
  font-size: 12.5px; color: var(--ink-soft);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%;
}
.history-row .btn { white-space: nowrap; text-decoration: none; }

/* Страница автозагрузки */
.sources-list { display: flex; flex-direction: column; gap: 14px; }
.source-row { border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px; }
.source-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.source-head b { font-size: 15px; }
.source-status { font-size: 12.5px; color: var(--ink-faint); }
.source-status.err { color: var(--err); }
.source-status.ok { color: var(--ok); }
.source-status.ok::before {
  content: ''; display: inline-block; width: 6px; height: 6px; margin-right: 6px;
  border-radius: 50%; background: var(--ok); vertical-align: middle;
}
.source-status.warn { color: var(--warn); }
.source-status.warn::before {
  content: ''; display: inline-block; width: 6px; height: 6px; margin-right: 6px;
  border-radius: 50%; background: var(--warn); vertical-align: middle;
}
.source-form { margin-bottom: 12px; }
.source-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.source-actions .status { margin: 0; padding: 6px 10px; font-size: 12.5px; }

/* Выбор времени — вместо нативного <input type="time">, чтобы вид совпадал с остальными полями */
.time-field {
  display: inline-flex; align-items: center; justify-content: center; gap: 3px;
  border: 1px solid var(--line-strong); border-radius: 8px; background: #fff;
  padding: 0 4px; transition: border-color .15s, box-shadow .15s;
}
.time-field:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.time-field select {
  width: auto; border: none; background: transparent; padding: 10px 2px;
  font: inherit; color: var(--ink); cursor: pointer;
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
}
.time-field select:focus { outline: none; box-shadow: none; }
.time-sep { color: var(--ink-faint); }

/* Форма рассылки — строка клиента на /email-schedules.html и блок «Рассылка»
   в редактировании профиля на /client-profiles.html, общая разметка на обеих. */
.email-form { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; max-width: 520px; }
.email-form textarea {
  width: 100%; padding: 10px 12px; font: inherit; color: var(--ink);
  background: #fff; border: 1px solid var(--line-strong); border-radius: 8px; resize: vertical;
}
.email-form textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.email-form textarea.e-recipients { min-height: 54px; }
.email-form textarea.e-message { min-height: 80px; }
.email-form-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }

.day-picker { display: inline-flex; gap: 4px; }
.day-picker button {
  min-width: 34px; padding: 7px 6px; border: 1px solid var(--line-strong); border-radius: 7px;
  background: #fff; color: var(--ink-soft); font: inherit; font-size: 12.5px; cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
.day-picker button:hover { border-color: var(--ink-faint); color: var(--ink); }
.day-picker button[aria-pressed="true"] {
  background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 500;
}
