/* TwinCard — кабинет (dev.twincard.ai).
   Стиль кабинета = стиль сайта (владелец 12.09.2026: «привести к стилю самого
   сайта — он у нас привлекательный»). Источник правды — дизайн-система сайта
   /twincard/concept/ui/tokens.css (шрифт Graphik LC, цвета, радиусы, тени);
   она подключается в <head> ПЕРЕД этим файлом. Здесь — только отображение
   старых переменных кабинета на токены и компоненты в языке сайта.

   ⛔ Фирменные цвета TwinCard (владелец, 05.09.2026):
      зелёный  #00B956 · белый #FFFFFF. Акцент один, на обеих темах не
      осветляется; мелкий белый текст на нём не писать. */

:root {
  /* — старые имена кабинета → токены сайта (разметка и JS их не меняют) — */
  --brand:      var(--brandGreen);
  --on-brand:   var(--stcWhite);
  --paper:      var(--backgroundGray);
  --surface:    var(--base);
  --surface-2:  var(--spbSky0);
  --ink:        var(--content);
  --ink-soft:   var(--spbSky4);
  --ink-faint:  var(--spbSky3);
  --line:       var(--spbSky2);
  --line-soft:  var(--spbSky1);
  --stamp:      var(--brandGreen);
  --on-stamp:   var(--stcWhite);
  --stamp-soft: var(--brandGreen20);
  --stamp-ink:  #0A7A3D;
  --alarm:      var(--fury);
  --alarm-soft: var(--fury20);
  --warn:       #8A5A00;
  --warn-soft:  #FFF1D6;
  --radius:     var(--r-m);
  --radius-l:   var(--r-l);
  --shadow:     var(--sh-default);
  --shadow-soft: 0 1px 3px rgba(20,24,31,.06), 0 6px 20px -12px rgba(20,24,31,.14);
  --serif: var(--font);
  --sans:  var(--font);
  --mono:  var(--font);
  --container: 1180px;
}

/* Тёмная тема по системной настройке — те же значения, что в tokens.css
   для [data-theme="dark"]; явный выбор человека (data-theme) перебивает. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --base: #2E3138; --content: #FFFFFF;
    --spbSky0: #373B42; --spbSky1: #3F434C; --spbSky2: #505560; --spbSky3: #8A909B; --spbSky4: #ADB4C2;
    --background: #1C1E22; --backgroundGray: #1C1E22;
    --brandGreen80: #24804E; --brandGreen20: #314138; --fury80: #CA3A43; --fury20: #442B2D;
    --sh-default: 0 2px 12px rgba(0,0,0,.16); --sh-hover: 0 8px 28px rgba(0,0,0,.16);
    --comp-tabs-track: var(--base); --comp-tabs-pill: var(--spbSky2); --comp-tabs-pill-shadow: none; --comp-tabs-label: var(--spbSky4);
  }
}
[data-theme="dark"] { --stamp-ink: #4ADE8F; --warn: #FFC466; --warn-soft: #3A2E14; --shadow-soft: 0 2px 14px rgba(0,0,0,.30); }

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  transition: background-color .3s, color .3s;
}

h1, h2, h3 { font-family: var(--font); font-weight: 600; letter-spacing: -.01em; text-wrap: balance; margin: 0; color: var(--ink); }
h1 { font-size: clamp(26px, 3vw, 32px); line-height: 1.18; letter-spacing: -.02em; }
h2 { font-size: 22px; line-height: 1.25; }
h3 { font-size: 17px; line-height: 1.3; font-weight: 600; }
p  { margin: 0 0 1em; }
a  { color: var(--stamp-ink); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 2px; }
:focus-visible { outline: 3px solid var(--137C); outline-offset: 2px; border-radius: 4px; }

.mono { font-variant-numeric: tabular-nums; }
/* Подпись раздела: как надписи над блоками сайта — мелко, средним начертанием, без моно. */
.eyebrow {
  font-size: 12px; line-height: 18px; font-weight: 500; letter-spacing: .06em;
  text-transform: uppercase; color: var(--ink-faint);
}
.muted { color: var(--ink-soft); }
.small { font-size: 13px; line-height: 1.45; }

/* ── элементы управления (TextField / Button сайта) ─────────────── */
label.field { display: flex; flex-direction: column; gap: 6px; }
label.field > span, .field > span { font-size: 13px; color: var(--ink-soft); }
input, select, textarea, button { font-family: inherit; font-size: 15px; color: inherit; }
input, select, textarea {
  width: 100%; min-height: 44px; padding: 10px 14px; background: var(--surface);
  border: 1px solid var(--line); border-radius: var(--radius); color: var(--ink);
  transition: border-color .2s, box-shadow .2s;
}
input:focus, select:focus, textarea:focus { outline: 0; border-color: var(--stamp); box-shadow: 0 0 0 3px var(--stamp-soft); }
/* ⛔ Подсказка в поле читается: --ink-faint на светлой теме давал контраст 3:1,
   и подсказки выглядели «почти прозрачными» (тестировщица 22.09.2026). */
input::placeholder, textarea::placeholder { color: var(--ink-soft); opacity: 1; }
textarea { min-height: 96px; resize: vertical; line-height: 1.5; }
input:disabled, select:disabled, textarea:disabled { background: var(--surface-2); color: var(--ink-faint); }
input[type="color"] { padding: 4px; min-height: 44px; width: 56px; cursor: pointer; }
select { appearance: none; -webkit-appearance: none; padding-right: 38px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238F96A4' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center; }

button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 44px; padding: 0 22px; border-radius: var(--r-pill);
  border: 1px solid transparent; box-shadow: inset 0 0 0 1px var(--line);
  background: var(--surface); color: var(--ink); cursor: pointer; font-weight: 500;
  transition: background-color .2s, color .2s, box-shadow .2s;
}
button:hover:not(:disabled) { box-shadow: inset 0 0 0 1px var(--ink); }
button:disabled { opacity: .5; cursor: default; }
button.primary { background: var(--stamp); color: var(--on-stamp); box-shadow: none; }
button.primary:hover:not(:disabled) { background: var(--buttonHoverGreen); box-shadow: none; }
button.primary:active:not(:disabled) { background: var(--buttonDown); }
button.ghost { background: transparent; box-shadow: none; color: var(--ink-soft); padding: 0 12px; min-height: 36px; }
button.ghost:hover:not(:disabled) { background: var(--surface-2); color: var(--ink); box-shadow: none; }
button.danger { color: var(--alarm); }
button.danger:hover:not(:disabled) { box-shadow: inset 0 0 0 1px var(--alarm); }
button.small { min-height: 36px; padding: 0 14px; font-size: 13px; }
button.ghost.small { padding: 0 10px; min-height: 32px; }

.row { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.grid-2 { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }

/* Карточка = Tile сайта: белая, скруглённая, с мягкой тенью. */
.card {
  background: var(--surface); border: 1px solid var(--line-soft);
  border-radius: var(--radius-l); padding: 22px; box-shadow: var(--shadow-soft);
}

/* Метка-пилюля — как бейджи быстрого поиска на главной. */
.pill {
  display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px;
  border-radius: var(--r-pill); font-size: 12px; line-height: 18px; font-weight: 500;
  background: var(--surface-2); color: var(--ink-soft); border: 1px solid transparent;
  white-space: nowrap; text-decoration: none;
}
a.pill:hover { text-decoration: none; color: var(--ink); border-color: var(--line); }
button.pill { cursor: pointer; font-family: inherit; }
button.pill:hover, button.pill:focus-visible { border-color: var(--line); box-shadow: none; outline: none; }
button.pill.stamp:hover { border-color: transparent; }
.pill.stamp { background: var(--stamp-soft); color: var(--stamp-ink); }
.pill.alarm { background: var(--alarm-soft); color: var(--alarm); }
.pill.warn  { background: var(--warn-soft);  color: var(--warn); }
/* Пилюля-кнопка загрузки (label.pill) — как ghost-кнопка сайта. */
label.pill { cursor: pointer; padding: 8px 14px; font-size: 13px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); color: var(--ink); }
label.pill:hover { box-shadow: inset 0 0 0 1px var(--ink); }
.pill button.ghost.small { min-height: 20px; padding: 0 4px; font-size: 14px; }

.notice {
  padding: 12px 14px; border-radius: var(--radius); font-size: 14px;
  border: 1px solid var(--line-soft); background: var(--surface-2);
}
.notice.err { background: var(--alarm-soft); color: var(--alarm); border-color: transparent; }
.notice.ok  { background: var(--stamp-soft); color: var(--stamp-ink); border-color: transparent; }

.empty { color: var(--ink-faint); font-size: 14px; padding: 12px 0; }

/* Вкладки — сегмент-контрол дизайн-системы (трек + активная «пилюля»). */
.tabs, nav.tabs {
  display: inline-flex; gap: 2px; padding: 4px; border-radius: var(--r-pill);
  background: var(--comp-tabs-track); border: 0; flex-wrap: wrap;
}
.tabs button, nav.tabs button {
  min-height: 36px; padding: 0 16px; border: 0; box-shadow: none; border-radius: var(--r-pill);
  background: transparent; color: var(--comp-tabs-label); font-weight: 500; font-size: 14px;
}
.tabs button:hover:not(:disabled), nav.tabs button:hover:not(:disabled) { color: var(--ink); box-shadow: none; }
.tabs button[aria-selected="true"], nav.tabs button[aria-selected="true"] {
  background: var(--comp-tabs-pill); color: var(--ink); box-shadow: var(--comp-tabs-pill-shadow); font-weight: 600;
}
/* 23.09.2026: разделы страницы — ссылки (правый клик), вид тот же, что у кнопок. */
nav.tabs a[role="tab"] {
  display: inline-flex; align-items: center; min-height: 36px; padding: 0 16px; border-radius: var(--r-pill);
  color: var(--comp-tabs-label); font-weight: 500; font-size: 14px; text-decoration: none;
}
nav.tabs a[role="tab"]:hover { color: var(--ink); }
nav.tabs a[role="tab"][aria-selected="true"] { background: var(--comp-tabs-pill); color: var(--ink); box-shadow: var(--comp-tabs-pill-shadow); font-weight: 600; }

/* ── шапка — как .nav сайта: лого слева, действия справа ─────────── */
.topbar {
  display: flex; align-items: center; gap: 14px; height: 66px;
  padding: 0 max(24px, calc((100% - var(--container)) / 2));
  position: sticky; top: 0; z-index: 20;
  background: color-mix(in srgb, var(--paper) 82%, transparent);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  transition: background-color .3s;
}
.topbar > a { text-decoration: none; }
.logo { display: inline-flex; align-items: center; gap: 10px; font-weight: 600; font-size: 22px; letter-spacing: -.02em; color: var(--ink); }
.logo .logo__word span { color: var(--stamp); }
.logo__ai2 { height: 26px; width: auto; display: block; flex: 0 0 auto; fill: var(--stamp); }
.topbar .spacer { flex: 1; }
.topbar #who { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topbar button.ghost { color: var(--ink-soft); }
.topbar button, .topbar a, .topbar .lang__btn { white-space: nowrap; }

@media (max-width: 760px) {
  .topbar { height: 58px; gap: 8px; }
  .topbar #who { display: none; }
  .logo { font-size: 19px; }
  .logo__ai2 { height: 22px; }
}

/* Переключатель языка (07.09): значок, код, шеврон, список по клику. */
.lang { position: relative; display: inline-block; }
.lang__btn { display: inline-flex; align-items: center; gap: 6px; font-weight: 500; letter-spacing: .02em; }
.lang__menu { position: absolute; right: 0; top: calc(100% + 6px); min-width: 170px; max-height: 320px; overflow: auto;
  background: var(--surface); border: 1px solid var(--line-soft); border-radius: var(--radius-l);
  box-shadow: var(--shadow); padding: 6px; z-index: 50; display: grid; gap: 2px; }
.lang__item { display: block; width: 100%; text-align: left; padding: 8px 12px; border: 0; background: transparent; box-shadow: none;
  border-radius: var(--radius); font: inherit; color: inherit; cursor: pointer; min-height: 0; justify-content: flex-start; }
.lang__item:hover { background: var(--surface-2); box-shadow: none; }
.lang__item.is-active { color: var(--stamp-ink); font-weight: 600; }

/* Атрибут hidden обязан побеждать любой display у класса (07.09). */
[hidden] { display: none !important; }

/* Карточка компании и расписание (13.09.2026): два столбца, широкие поля во всю ширину, галка «Опубликовать» в строку с подписью */
.cc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.cc-grid .cc-wide{grid-column:1/-1}
.cc-grid .field .row{flex-wrap:nowrap;gap:8px}
.cc-grid .field .row .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-win{display:inline-flex;align-items:center;gap:4px}
.cc-win input[type=time]{width:auto;padding:4px 6px}
@media (max-width:720px){.cc-grid{grid-template-columns:1fr}}
.cc-check input[type=checkbox]{width:16px;height:16px;margin:0;flex:0 0 auto}
.cc-check span{white-space:normal}

/* Выделенная картинка в редакторе свободного блока (14.09) */
/* 17.09.2026: длинное слово или строка без пробелов переносится внутри поля, а не растягивает редактор на весь экран */
.tce-content { overflow-wrap: anywhere; word-break: break-word; min-width: 0; max-width: 100%; }
.tce-content pre { white-space: pre-wrap; }
.tce-content img.ProseMirror-selectednode { outline: 3px solid var(--stamp-ink, #00B956); outline-offset: 2px; }

/* Компоновка страницы (14.09.2026): строки блоков, перетаскивание */
.blk{display:grid;grid-template-columns:auto auto minmax(140px,1fr) minmax(0,2fr) auto auto auto;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface)}
.blk.is-off{opacity:.55}
.blk.over{box-shadow:inset 0 0 0 2px var(--stamp-ink)}
.blk-h{cursor:grab;color:var(--ink-soft);font-size:16px;user-select:none}
.blk-t{min-width:0;font-size:13px;padding:6px 8px}
.blk-hint{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.blk-arr{display:inline-flex;gap:2px}
@media (max-width:760px){.blk{grid-template-columns:auto auto 1fr auto;gap:6px}.blk-hint{display:none}.blk-t{grid-column:1 / -1}}
/* Кадрирование перед загрузкой */
.crop-ov{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.crop-sheet{background:var(--surface);border-radius:var(--r-xl);padding:20px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto}
.crop-box{position:relative;overflow:hidden;border-radius:12px;background:#111;touch-action:none;cursor:grab;user-select:none}
.crop-box--round{border-radius:50%}
.crop-box img{position:absolute;left:0;top:0;transform-origin:0 0;max-width:none;pointer-events:auto}
/* Портреты персоны/команды в кабинете */
.ppl-prev{width:72px;height:72px;object-fit:cover;background:var(--surface-2);display:inline-block;flex:0 0 auto}
.ppl-prev--circle{border-radius:50%}.ppl-prev--oval{height:96px;border-radius:50% / 38%}.ppl-prev--square{border-radius:12px}.ppl-prev--portrait{height:96px;border-radius:12px}
.ppl-prev--empty{border:1px dashed var(--line-soft)}

.blk-rl{font-size:12px;padding:5px 6px;max-width:190px}
/* Галки блока (16.09): публикация отзывов, «от N ₽» в шапке. Своя колонка — строка не разъезжается. */
.blk-opt{display:inline-flex;align-items:center;gap:6px;margin:0;white-space:nowrap;font-size:12px}
.blk-t--off{display:inline-flex;align-items:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:760px){.blk-opt{grid-column:1 / -1;white-space:normal}}

/* Множественный выбор галочками (TC.pick, 16.09.2026): поиск, счётчик, выбранные сверху и подсвечены. */
.cc-pick{border:1px solid var(--line,#E5E7EB);border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:6px;background:var(--card,#fff)}
.cc-pick__q{width:100%}
.cc-pick__list{max-height:220px;overflow:auto;display:flex;flex-direction:column;gap:2px}
.cc-pick__it{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:8px;cursor:pointer;font-size:14px;line-height:1.3}
.cc-pick__it input[type=checkbox]{width:16px;height:16px;margin:0;flex:0 0 auto}
.cc-pick__it:hover{background:rgba(0,185,86,.06)}
.cc-pick__it:has(input:checked){background:rgba(0,185,86,.12);font-weight:600}
.cc-pick[hidden],.cc-pick__it[hidden]{display:none}
.bio-editor .tce-body{min-height:90px}
