/* Кабинет селлера QRючок — светлая тема по дизайн-хендоффу */
:root {
  --depth: #0B2530; --float: #FF5334; --float-hi: #FF6A4D; --float-hover: #E03E20;
  --fog: #F2F4F3; --line: #C9D2D0; --ink: #10181B; --dim: #5B6B70;
  --ok: #0E8C7F; --bad: #D8390F; --tg: #54A9EB;

  /* ТИПОГРАФИКА — одна лестница на весь кабинет.
     Полевое замечание 26.07: «во всех окнах размер шрифта больше чем на
     странице». Замер живого DOM показал причину — один и тот же <b> заголовка
     бокса рендерился в ПЯТИ размерах (19/17/15/13.5/12.5px) в зависимости от
     родителя, потому что своего размера у него не было и он наследовал то 15px
     от body, то 13.5px от карточки. Плюс мелкий текст жил на пяти почти
     неразличимых ступенях (13.5/13/12.5/12/11.5) — глаз читает это как брак
     вёрстки, хотя каждое значение по отдельности осмысленно.
     Ступеней ровно шесть. Новый размер берём отсюда; «на глаз» не добавляем —
     иначе через месяц снова будет двадцать одно значение. */
  --fs-h1: 24px;      /* заголовок страницы */
  --fs-lead: 16px;    /* заголовок крупного блока; на телефоне — поля ввода
                         (iOS зумит страницу при фокусе на поле меньше 16px) */
  --fs-title: 14px;   /* заголовок бокса и название товара в строке */
  --fs-base: 13.5px;  /* основной текст: боксы, строки списков, кнопки, поля */
  --fs-note: 12px;    /* пояснения и вторичные подписи */
  --fs-micro: 11px;   /* моно-метки, шапки таблиц, теги */
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { overflow-x: hidden; max-width: 100%; }  /* страница не ездит вбок */
body { margin: 0; background: var(--fog); font-family: 'Onest', sans-serif;
       color: var(--ink); font-size: var(--fs-base); line-height: 1.5;
       -webkit-text-size-adjust: 100%; }
/* ₽ рисуем в Onest (в Unbounded глифа нет) и делаем меньше/мягче —
   тогда он читается как валютная приписка, а не «прыгающая» чужая цифра */
.rub { font-family: 'Onest', sans-serif; font-weight: 600; font-size: 0.52em;
       vertical-align: 0.14em; margin-left: 0.06em; opacity: 0.82; }
button { font-family: 'Onest', sans-serif; cursor: pointer; }

/* Экран загрузки */
#loading-screen { min-height: 100vh; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 16px; background: var(--fog); }
.load-logo { width: 64px; height: 64px; animation: pulse 1.2s ease-in-out infinite; }
.load-text { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-note);
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--dim); }
@keyframes pulse { 0%,100% { opacity: 0.4; } 50% { opacity: 1; } }
/* фокус в эпл-стиле: у полей — мягкое кольцо вместо жёсткой обводки,
   которая наезжала на края карточек; у кнопок/ссылок — тонкий контур */
input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: none; border-color: var(--float) !important;
  box-shadow: 0 0 0 3.5px rgba(255, 83, 52, 0.16);
}
button:focus-visible, a:focus-visible {
  outline: 2px solid var(--float); outline-offset: 2px; border-radius: 6px;
}
.hidden { display: none !important; }
.k-label { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro);
           letter-spacing: 0.1em; text-transform: uppercase; color: var(--depth); opacity: 0.6; }

/* ── Вход ── */
#login-screen { min-height: 100vh; background: var(--depth); display: flex;
                align-items: center; justify-content: center; padding: 32px; }
.login-box { width: 420px; display: flex; flex-direction: column; gap: 28px;
             align-items: center; text-align: center; }
.login-logo { width: 92px; height: 92px; }
.login-title { font-family: 'Unbounded', sans-serif; font-weight: 900; font-size: 44px;
               letter-spacing: -0.03em; color: var(--fog); }
.login-title span { color: var(--float-hi); }
.login-sub { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-note);
             letter-spacing: 0.14em; text-transform: uppercase; color: var(--line); margin-top: 10px; }
.login-note { margin: 0; font-size: var(--fs-base); color: var(--line); max-width: 36ch; }
/* вход через бота */
#tg-widget { display: flex; flex-direction: column; align-items: center; gap: 12px; width: 100%; }
.login-btn { display: inline-flex; align-items: center; justify-content: center;
  background: var(--tg); color: #fff; text-decoration: none; border-radius: 12px;
  padding: 15px 30px; font-size: var(--fs-lead); font-weight: 600; }
.login-btn:active { opacity: 0.9; }
.login-or { font-size: var(--fs-note); color: var(--line); }
.login-weblink { color: #7FD6CC; }
.login-code { font-family: 'JetBrains Mono', monospace; font-size: 34px; font-weight: 500;
  letter-spacing: 0.18em; color: var(--fog); background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.14); border-radius: 12px; padding: 10px 22px; }
.login-hint { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro); color: var(--line);
  opacity: 0.7; }
.login-poll { font-size: var(--fs-note); color: #7FD6CC; margin-top: 4px; }
.login-meta { margin: 0; font-family: 'JetBrains Mono', monospace; font-size: var(--fs-note);
              color: var(--line); opacity: 0.55; }
.login-error { color: #FFB4A3; font-size: var(--fs-base); }

/* ── Каркас ── */
.app { display: grid; grid-template-columns: 228px 1fr; min-height: 100vh; }
.sidebar { background: var(--depth); color: var(--fog); display: flex;
           flex-direction: column; padding: 22px 0; position: sticky; top: 0; height: 100vh; }
.side-logo { display: flex; align-items: center; gap: 10px; padding: 0 20px 22px; }
.side-logo svg { width: 30px; height: 30px; }
.side-logo span { font-family: 'Unbounded', sans-serif; font-weight: 700; font-size: 17px;
                  letter-spacing: -0.02em; }
.side-logo b { color: var(--float-hi); font-weight: 700; }
/* те же боковые отступы, что у .side-nav (10px): кнопка бренда и пункты меню
   получаются одной ширины, левые края совпадают */
.side-account { padding: 0 10px 14px; position: relative; }
.foot-brand.switchable, #brand-btn.switchable { cursor: pointer; }
.account-menu { position: absolute; left: 10px; right: 10px; top: 100%; z-index: 30;
                background: #fff; border: 1px solid var(--line); border-radius: 12px;
                box-shadow: 0 14px 40px -18px rgba(11, 37, 48, 0.35); overflow: hidden; }
.account-menu.hidden { display: none; }
.account-item { display: flex; flex-direction: column; gap: 2px; width: 100%;
                text-align: left; padding: 10px 14px; border: none; background: #fff;
                border-bottom: 1px solid #EEF1F0; cursor: pointer; }
.account-item:last-child { border-bottom: none; }
.account-item:hover { background: var(--fog); }
.account-item.current { cursor: default; }
.account-brand { font-weight: 600; font-size: var(--fs-base); color: var(--depth); }
.account-role { font-size: var(--fs-micro); color: var(--dim); }
.side-account button { width: 100%; display: flex; align-items: center;
  justify-content: space-between; background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.12); border-radius: 10px; padding: 9px 10px;
  color: var(--fog); font-size: var(--fs-base); font-weight: 600; }
.side-account button span { opacity: 0.5; font-size: var(--fs-micro); }
/* сайдбар в духе macOS: компактные строки, мягкая подсветка выбора,
   вес не прыгает (600 вместо 700), переходы плавные */
.side-nav { display: flex; flex-direction: column; gap: 1px; padding: 0 10px; flex: 1; }
.side-nav button { display: flex; align-items: center; gap: 9px; background: none;
  border: none; border-radius: 8px; padding: 7px 10px; color: rgba(242,244,243,0.72);
  font-size: var(--fs-base); font-weight: 500; text-align: left; line-height: 1.35;
  transition: background 0.12s, color 0.12s; }
.side-nav button:hover { background: rgba(255,255,255,0.06); color: rgba(242,244,243,0.9); }
.side-nav button.active { background: rgba(255,255,255,0.12); color: var(--fog); font-weight: 600; }
.side-nav .ndot { width: 6px; height: 6px; border-radius: 2px;
  background: rgba(255,255,255,0.28); transition: background 0.12s; }
.side-nav button.active .ndot { background: var(--float-hi); }
.side-nav .nlabel { flex: 1; }
/* счётчик ждущего работы: тот же язык, что у бейджей на иконках приложений */
.side-nav .nbadge { flex: none; min-width: 19px; height: 19px; padding: 0 5px;
  border-radius: 10px; background: var(--float); color: #fff;
  font-size: var(--fs-micro); font-weight: 700; line-height: 19px;
  text-align: center; }
.side-foot { padding: 14px 20px 0; border-top: 1px solid rgba(255,255,255,0.1);
             display: flex; flex-direction: column; gap: 10px; }
.foot-info { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.foot-brand { display: none; }  /* бренд в футере — только на телефоне (на десктопе он в шапке сайдбара) */
.bot-status { display: flex; align-items: center; gap: 8px; font-size: var(--fs-note); color: var(--line); }
.dot { width: 8px; height: 8px; border-radius: 50%; background: #B3820F; }
.dot.ok { background: var(--ok); }
.side-user { display: flex; align-items: center; justify-content: space-between; }
.uname { font-size: var(--fs-base); font-weight: 600; }
.urole { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro); color: var(--line); opacity: 0.7; }
#logout { background: none; border: 1px solid rgba(255,255,255,0.2); border-radius: 8px;
          color: var(--line); font-size: var(--fs-note); padding: 6px 10px; }
#logout:hover { border-color: var(--float-hi); color: var(--float-hi); }

/* ── Контент ── */
.content { padding: 26px 32px 48px; max-width: 1240px; min-width: 0; }
/* карточки-сетки не распирают экран (grid/flex items по умолчанию не сжимаются ниже контента) */
.funnel > *, .dash-mid > *, .settings-grid > * { min-width: 0; }
.page-head { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 22px; }
h1 { margin: 0; font-family: 'Unbounded', sans-serif; font-weight: 700; font-size: var(--fs-h1);
     letter-spacing: -0.02em; color: var(--depth); }
.periods { display: flex; gap: 6px; }
.periods button { background: #fff; color: var(--ink); border: 1px solid var(--line);
                  border-radius: 8px; padding: 7px 14px; font-size: var(--fs-base); font-weight: 600; }
.periods button.active { background: var(--depth); color: var(--fog); border-color: var(--depth); }

/* Воронка */
.funnel { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; margin-bottom: 18px; }
.f-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 16px 18px; }
.f-value { font-family: 'Unbounded', sans-serif; font-weight: 700; font-size: 26px;
           color: var(--depth); margin: 8px 0 4px; }
.f-foot { display: flex; justify-content: space-between; font-size: var(--fs-note); }
.f-conv { color: var(--dim); }
.f-delta { font-weight: 600; }
.f-delta.up { color: var(--ok); } .f-delta.down { color: var(--bad); }

/* Маржа + график */
.dash-mid { display: grid; grid-template-columns: 1.1fr 1.5fr; gap: 14px; margin-bottom: 18px; }
.margin-card { background: var(--depth); color: var(--fog); border-radius: 14px;
               padding: 22px 24px; display: flex; flex-direction: column; gap: 8px; }
.margin-card .k-label { color: var(--line); opacity: 1; }
.margin-value { font-family: 'Unbounded', sans-serif; font-weight: 900; font-size: 40px;
                letter-spacing: -0.02em; }
.margin-delta { font-size: var(--fs-base); color: var(--line); }
.formula-btn { align-self: flex-start; background: none; border: none; color: var(--float-hi);
               font-size: var(--fs-base); font-weight: 600; padding: 0; text-decoration: underline; }
.formula { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-note); line-height: 1.7;
           color: var(--line); background: rgba(255,255,255,0.06); border-radius: 10px;
           padding: 12px 14px; white-space: pre-line; }
.chart-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 20px 24px; }
.chart-head { display: flex; justify-content: space-between; margin-bottom: 14px; }
.legend { display: flex; gap: 14px; font-size: var(--fs-note); color: var(--dim); }
.legend span { display: flex; align-items: center; gap: 5px; }
.sw { width: 9px; height: 9px; border-radius: 2px; display: inline-block; }
.sw-base { background: var(--depth); } .sw-gmv { background: var(--float); }
.chart { display: flex; align-items: flex-end; gap: 10px; height: 150px; }
.chart .wk { flex: 1; display: flex; align-items: flex-end; gap: 3px; height: 150px; }
.chart .bar { flex: 1; border-radius: 3px 3px 0 0; min-height: 2px; }
.chart .b-base { background: var(--depth); } .chart .b-gmv { background: var(--float); }
.chart-x { display: flex; justify-content: space-between; font-family: 'JetBrains Mono', monospace;
           font-size: var(--fs-micro); color: var(--dim); margin-top: 8px; }

/* События */
.events-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 18px 24px; }
.event { display: flex; gap: 14px; align-items: baseline; padding: 9px 0;
         border-top: 1px dashed var(--line); font-size: var(--fs-base); }
.e-time { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-note); color: var(--dim); width: 88px; }
.e-tag { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro); letter-spacing: 0.08em; width: 78px; }
.e-text { flex: 1; }
.empty { color: var(--dim); font-size: var(--fs-base); padding: 12px 0; }

/* Каталог */
/* группа синка прижата к правому краю — вровень с правым краем карточек */
.cat-sync-group { display: flex; align-items: center; gap: 12px; margin-left: auto; }
/* подсказка — той же ширины, что и блок карточек под ней */
.cat-hint { margin: 0 0 14px; font-size: var(--fs-base); color: var(--dim); }
/* панель каталога: тумблер площадки + поиск + сортировка */
.cat-toolbar { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; flex-wrap: wrap; }
.seg { display: flex; background: #E3E8E6; border-radius: 11px; padding: 3px; flex: none; }
.seg button { border: none; background: transparent; border-radius: 8px; padding: 7px 18px;
              font-size: var(--fs-base); font-weight: 600; color: var(--dim); transition: color 0.15s; }
.seg button.active { background: #fff; color: var(--depth);
                     box-shadow: 0 1px 3px rgba(11, 37, 48, 0.18); }
.cat-search { flex: 1; min-width: 180px; border: 1px solid var(--line); border-radius: 10px;
              padding: 9px 13px; font-size: var(--fs-base); font-family: 'Onest', sans-serif;
              background: #fff; }
.cat-search::placeholder { color: var(--dim); opacity: 0.7; }
/* selects: без appearance:none iOS рисует их системным шрифтом, не Onest */
.cat-sort, .cat-d2c select, .stage-sel, .offer-sel, .carrier-sel {
  appearance: none; -webkit-appearance: none; background: #fff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%235B6B70' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 10px center;
}
.cat-sort { flex: none; border: 1px solid var(--line); border-radius: 10px;
            padding: 9px 28px 9px 10px;
            font-size: var(--fs-base); font-family: 'Onest', sans-serif; color: var(--ink); }
.cat-empty { background: #fff; border: 1px solid var(--line); border-radius: 14px;
             padding: 20px 18px; }
.cat-table { background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.cat-row { display: grid; grid-template-columns: 66px 1.9fr 88px 190px 76px 110px 84px 100px;
           gap: 12px; padding: 12px 18px; border-bottom: 1px solid #EEF1F0;
           align-items: center; font-size: var(--fs-base); }
.cat-head-row { padding: 11px 18px; font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro);
                letter-spacing: 0.08em; text-transform: uppercase; color: var(--dim);
                border-bottom: 1px solid var(--line); }
.cat-photo { width: 54px; height: 54px; border-radius: 10px; background: var(--depth);
             color: #fff; display: flex; align-items: center; justify-content: center;
             font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro); }
img.cat-photo { object-fit: cover; display: block; }  /* фото товара тем же квадратом */
.cat-cell { min-width: 0; }
.cat-cell::before { display: none; }  /* подпись поля — только в мобильных карточках */
.cat-name { font-weight: 600; }
.cat-note { font-size: var(--fs-note); color: var(--dim); }
.mono { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-base); }
.cat-d2c { display: flex; flex-direction: column; gap: 4px; }
.cat-d2c input, .cat-cycle input { width: 76px; border: 1px solid var(--line); border-radius: 8px;
    padding: 6px 8px; font-family: 'JetBrains Mono', monospace; font-size: var(--fs-base); }
.cat-d2c select { border: 1px solid var(--line); border-radius: 8px; padding: 5px 22px 5px 6px;
    font-size: var(--fs-micro); color: var(--dim); font-family: 'Onest', sans-serif; max-width: 130px;
    background-position: right 7px center; }
.cat-d2c input:disabled { background: var(--fog); color: var(--dim); }
.stock-zero { color: var(--bad); font-weight: 700; }
.fresh-ok { color: var(--ok); font-size: var(--fs-note); font-weight: 600; }
.fresh-bad { color: var(--bad); font-size: var(--fs-note); font-weight: 700; }
.pill { justify-self: start; font-size: var(--fs-note); font-weight: 600; padding: 4px 10px;
        border-radius: 20px; border: none; cursor: pointer; }
.pill.on { background: rgba(14, 140, 127, 0.12); color: var(--ok); }
.pill.off { background: #EEF1F0; color: var(--dim); }
.row-saved { animation: savedflash 1s; }
@keyframes savedflash { 0% { background: rgba(14, 140, 127, 0.15); } 100% { background: none; } }

/* Крючки: партии QR */
.batch-form { background: #fff; border: 1px solid var(--line); border-radius: 14px;
              padding: 16px 18px; margin-bottom: 14px;
              display: flex; flex-direction: column; gap: 12px; }
.batch-form .bf-note { margin: 0; }
.bf-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
/* выбор файла в форме карточки: обычный input[type=file] выглядит чужеродно,
   поэтому прячем его и кликаем через подпись — она же показывает имя файла */
.cf-file { border: 1px solid var(--line); border-radius: 10px; padding: 9px 12px;
           font-size: var(--fs-base); color: var(--ink); cursor: pointer; white-space: nowrap;
           transition: border-color .15s; }
.cf-file:hover { border-color: var(--float); }
#cf-descr { flex: 1; min-width: 260px; }
.batch-war { grid-column: 1 / -1; background: var(--fog); border-radius: 10px;
             padding: 12px 14px; }
.war-inp { width: 72px; border: 1px solid var(--line); border-radius: 8px; padding: 5px 8px;
           font-family: 'JetBrains Mono', monospace; font-size: var(--fs-base); color: var(--ink); }
#bf-sku, #bf-offer { border: 1px solid var(--line); border-radius: 10px; padding: 9px 28px 9px 10px;
                     font-size: var(--fs-base); font-family: 'Onest', sans-serif; color: var(--ink);
                     max-width: 240px; }
#bf-run { width: 110px; border: 1px solid var(--line); border-radius: 10px; padding: 9px 10px;
          font-family: 'JetBrains Mono', monospace; font-size: var(--fs-base); }
.bf-note { font-size: var(--fs-note); color: var(--dim); margin: 10px 0 0; }
/* форма своей карточки (Каталог → Свой) */
#cat-form input { border: 1px solid var(--line); border-radius: 10px; padding: 9px 10px;
                  font-size: var(--fs-base); font-family: 'Onest', sans-serif; }
#cf-name { flex: 1; min-width: 200px; }
#cf-price, #cf-stock, #cf-cycle { width: 116px; font-family: 'JetBrains Mono', monospace; }
.stock-inp { width: 76px; border: 1px solid var(--line); border-radius: 8px; padding: 6px 8px;
             font-family: 'JetBrains Mono', monospace; font-size: var(--fs-base); }
.batch-table { background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.batch-row { display: grid;
             grid-template-columns: 66px 1.7fr 70px 1.3fr 84px 118px 52px 46px 52px 150px;
             gap: 10px; padding: 12px 18px; border-bottom: 1px solid #EEF1F0;
             align-items: center; font-size: var(--fs-base); }
.batch-code-note { display: none; }  /* код под именем — только в мобильных карточках */
.batch-newrow { background: #FAFBFB; }
.batch-new-cell { grid-column: 3 / -1; display: flex; align-items: center;
                  justify-content: space-between; gap: 10px; min-width: 0; }
.b-create { background: var(--float); color: #fff; border: none; font-size: var(--fs-note);
            font-weight: 600; padding: 6px 12px; border-radius: 8px; }
.b-create:hover { background: var(--float-hover); }
.offer-sel { border: 1px solid var(--line); border-radius: 8px; padding: 5px 22px 5px 6px;
             font-size: var(--fs-note); color: var(--ink); font-family: 'Onest', sans-serif;
             max-width: 100%; }
.run-inp { width: 72px; border: 1px solid var(--line); border-radius: 8px; padding: 5px 8px;
           font-family: 'JetBrains Mono', monospace; font-size: var(--fs-base); }
.batch-head-row { padding: 11px 18px; font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro);
                  letter-spacing: 0.08em; text-transform: uppercase; color: var(--dim);
                  border-bottom: 1px solid var(--line); }
.batch-cell { min-width: 0; }
.batch-cell::before { display: none; }  /* подписи — только в мобильных карточках */
.batch-name { font-weight: 600; }
.batch-archived > .batch-cell { opacity: 0.55; }
.stage-sel { border: 1px solid var(--line); border-radius: 8px; padding: 5px 22px 5px 6px;
             font-size: var(--fs-note); color: var(--ink); font-family: 'Onest', sans-serif; max-width: 110px; }
.batch-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.b-mini { font-size: var(--fs-note); font-weight: 600; padding: 5px 9px; border-radius: 8px;
          border: 1px solid var(--line); background: #fff; color: var(--ink);
          text-decoration: none; display: inline-block; line-height: 1.2; }
.b-mini:hover { border-color: var(--depth); }
.b-zip { color: var(--float-hover); border-color: rgba(255, 83, 52, 0.4); }
.batch-url { grid-column: 1 / -1; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
/* контент оффера «Инструкция и уход»: на всю ширину строки, не в колонку */
.batch-instr { grid-column: 1 / -1; background: var(--fog); border-radius: 12px;
               padding: 14px; }
.batch-instr .instr-text { min-height: 96px; background: #fff; }
.batch-instr .int-actions { align-items: center; }
.url-inp { flex: 1; min-width: 220px; border: 1px solid var(--line); border-radius: 10px;
           padding: 8px 10px; font-family: 'JetBrains Mono', monospace; font-size: var(--fs-note); }
/* лог партии: сводка (тираж/печать/остаток) + журнал изменений */
.batch-log { grid-column: 1 / -1; background: var(--fog); border-radius: 10px;
             padding: 10px 12px; font-size: var(--fs-base); }
.blog-summary { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro);
                letter-spacing: 0.02em; color: var(--depth); margin-bottom: 6px; }
.blog-item { display: flex; gap: 10px; padding: 4px 0; border-top: 1px dashed #E3E8E6;
             align-items: baseline; }
.blog-item .e-time { flex: none; }

/* Макеты для типографии (M2): та же плашка, что у журнала партии */
.batch-print { grid-column: 1 / -1; background: var(--fog); border-radius: 10px;
               padding: 10px 12px; font-size: var(--fs-base); }
.print-group { display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
               margin-top: 8px; }
.print-group .cat-note { flex: 0 0 5.5em; }
.batch-print .bleed-inp { width: 4.5em; }

/* Заказы */
.order-list { display: flex; flex-direction: column; gap: 12px; }
.order-row { display: grid; grid-template-columns: 104px 140px 1.6fr 84px 150px 200px;
             gap: 12px; background: #fff; border: 1px solid var(--line);
             border-radius: 14px; padding: 14px 18px; align-items: start; font-size: var(--fs-base); }
.order-row.sla-warn { border-left: 4px solid #E5A50A; }
.order-row.sla-late { border-left: 4px solid var(--bad); }
.cat-note.sla-warn { color: #B3820F; font-weight: 700; }
.cat-note.sla-late { color: var(--bad); font-weight: 700; }
.order-cell { min-width: 0; }
.order-cell::before { display: none; }  /* подписи — только в мобильных карточках */
.order-items { font-size: var(--fs-base); }
.order-actions { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.order-extra { grid-column: 1 / -1; display: flex; gap: 8px; align-items: center;
               flex-wrap: wrap; }
.track-inp, .reason-inp { flex: 1; min-width: 200px; border: 1px solid var(--line);
    border-radius: 10px; padding: 8px 10px; font-size: var(--fs-base); font-family: 'Onest', sans-serif; }
.track-inp { font-family: 'JetBrains Mono', monospace; }
.carrier-sel { border: 1px solid var(--line); border-radius: 10px; padding: 8px 26px 8px 10px;
               font-size: var(--fs-base); color: var(--ink); font-family: 'Onest', sans-serif; }

/* Клиенты */
.client-table { background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.client-table.is-empty .client-head-row,
.cat-table.is-empty .cat-head-row,
.batch-table.is-empty .batch-head-row { display: none; }
.tbl-empty { padding: 14px 18px; }
.client-row { display: grid;
              grid-template-columns: 1.4fr 74px 96px 68px 90px 92px 1.2fr 96px;
              gap: 12px; padding: 12px 18px; border-bottom: 1px solid #EEF1F0;
              align-items: center; font-size: var(--fs-base); }
.client-head-row { padding: 11px 18px; font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro);
                   letter-spacing: 0.08em; text-transform: uppercase; color: var(--dim);
                   border-bottom: 1px solid var(--line); }
.client-cell { min-width: 0; }
.client-cell::before { display: none; }  /* подписи — только в мобильных карточках */
.client-actions { display: flex; justify-content: flex-end; }
/* карточка клиента: повтор + таймлайн, как лог партии */
.client-card { grid-column: 1 / -1; background: var(--fog); border-radius: 10px;
               padding: 10px 12px; font-size: var(--fs-base); }
.cl-repeats { margin-bottom: 6px; }
/* пилюли RFM-сегментов (не кнопки) */
.pill.rfm-champion { background: rgba(255, 83, 52, 0.14); color: var(--float-hover); cursor: default; }
.pill.rfm-regular { background: rgba(14, 140, 127, 0.12); color: var(--ok); cursor: default; }
.pill.rfm-newbie { background: rgba(84, 169, 235, 0.18); color: #2277B5; cursor: default; }
.pill.rfm-sleeping { background: #EEF1F0; color: var(--dim); cursor: default; }
.pill.rfm-lead { background: transparent; border: 1px dashed var(--line);
                 color: var(--dim); cursor: default; }

/* Триггеры */
.trig-cap-card { margin-bottom: 14px; }
.trig-cap-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
                font-size: var(--fs-base); margin: 10px 0 6px; }
#trig-cap-sel { padding: 7px 26px 7px 12px; }
.trig-card .int-head { align-items: flex-start; }
.trig-card .trig-toggle { margin-left: auto; flex: none; }
.trig-text { width: 100%; border: 1px solid var(--line); border-radius: 10px;
             padding: 9px 11px; font-size: var(--fs-base); font-family: 'Onest', sans-serif;
             resize: vertical; }
.trig-vars { margin: 6px 0 2px; }
.trig-var { border: 1px dashed var(--line); background: #fff; border-radius: 7px;
            padding: 2px 7px; font-family: 'JetBrains Mono', monospace;
            font-size: var(--fs-micro); color: var(--ink); cursor: pointer; }
.trig-var:hover { border-color: var(--depth); }
.trig-row { display: flex; gap: 18px; flex-wrap: wrap; font-size: var(--fs-base);
            align-items: center; margin-top: 6px; }
.trig-row input { width: 72px; border: 1px solid var(--line); border-radius: 8px;
                  padding: 6px 8px; font-family: 'JetBrains Mono', monospace;
                  font-size: var(--fs-base); }
.trig-stat { margin-top: 8px; padding-top: 8px; border-top: 1px dashed #E3E8E6; }
.pill:disabled { opacity: 0.45; cursor: not-allowed; }

/* iOS-щеколда (полевой запрос 17.07): вкл/выкл в Триггерах */
.switch { position: relative; width: 46px; height: 28px; flex: none;
          border: none; border-radius: 14px; background: #E2E6E5;
          cursor: pointer; padding: 0;
          transition: background 0.22s ease; }
.switch .knob { position: absolute; top: 2px; left: 2px; width: 24px; height: 24px;
                border-radius: 50%; background: #fff;
                box-shadow: 0 2px 5px rgba(11, 37, 48, 0.25);
                transition: transform 0.22s ease; }
.switch.on { background: #34C759; }  /* фирменный зелёный Apple — «по феншую» */
.switch.on .knob { transform: translateX(18px); }
.switch:disabled { opacity: 0.45; cursor: not-allowed; }

/* Свои триггеры (мини-конструктор) */
.trig-custom-head { display: flex; align-items: center; justify-content: space-between;
                    gap: 10px; margin-top: 28px; }
.trig-custom-head .sup-h { margin: 0; }
.trig-row label { display: flex; align-items: center; gap: 7px; }
.trig-row select { max-width: 220px; }

/* Брендинг: логотип */
.brand-logo { width: 72px; height: 72px; border-radius: 14px; object-fit: cover;
              margin-left: auto; flex: none; border: 1px solid var(--line);
              box-shadow: 0 6px 18px -10px rgba(11, 37, 48, 0.35); }
.brand-btn-logo { width: 18px; height: 18px; border-radius: 5px; object-fit: cover;
                  margin-right: 8px; flex: none; }
#brand-btn:has(.brand-btn-logo) { justify-content: flex-start; }
#brand-btn:has(.brand-btn-logo) span { margin-left: auto; }

/* Поддержка */
.sup-h { font-family: 'Unbounded', sans-serif; font-weight: 700; font-size: var(--fs-lead);
         letter-spacing: -0.01em; color: var(--depth); margin: 24px 0 10px; }
.sup-card { background: #fff; border: 1px solid var(--line); border-radius: 14px;
            padding: 14px 16px; }
.sup-invoice { border-left: 4px solid var(--float); }
.sup-files { margin-top: 6px; display: flex; gap: 12px; flex-wrap: wrap; }
.sup-files a { font-size: var(--fs-base); color: var(--depth); text-decoration: none;
               border: 1px dashed var(--line); border-radius: 8px; padding: 3px 9px; }
.sup-files a:hover { border-color: var(--depth); }
.sup-head { display: flex; justify-content: space-between; gap: 10px;
            align-items: center; min-width: 0; }
.sup-head b { min-width: 0; overflow-wrap: break-word; }
.sup-del { margin-left: auto; flex: none; width: 24px; height: 24px; border: none;
           border-radius: 8px; background: transparent; color: var(--dim);
           font-size: var(--fs-base); line-height: 1; cursor: pointer; }
.sup-del:hover { background: var(--fog); color: var(--depth); }
/* попап-подтверждение (qrConfirm) */
.qr-modal-wrap { position: fixed; inset: 0; z-index: 90; display: flex;
                 align-items: center; justify-content: center; padding: 20px;
                 background: rgba(28, 28, 30, 0.35); backdrop-filter: blur(4px); }
.qr-modal { background: #fff; border-radius: 16px; padding: 20px;
            max-width: 380px; width: 100%;
            box-shadow: 0 18px 60px rgba(0, 0, 0, 0.25); }
.qr-modal b { display: block; font-size: var(--fs-title); overflow-wrap: break-word; }
.qr-modal p { margin-top: 8px; font-size: var(--fs-base); color: var(--dim); line-height: 1.5; }
.qr-modal-actions { display: flex; gap: 8px; justify-content: flex-end;
                    margin-top: 16px; }
.sup-body { margin-top: 6px; font-size: var(--fs-base); white-space: pre-wrap;
            overflow-wrap: break-word; }
.sup-reply { margin-top: 10px; background: var(--fog); border-radius: 10px;
             padding: 10px 12px; font-size: var(--fs-base); white-space: pre-wrap; }
.pill.inv { background: rgba(255, 83, 52, 0.12); color: var(--float-hover); }
#tk-subject { flex: 1; min-width: 200px; border: 1px solid var(--line);
              border-radius: 10px; padding: 9px 10px; font-size: var(--fs-base);
              font-family: 'Onest', sans-serif; }
#tk-body { flex: 1; min-width: 200px; border: 1px solid var(--line); border-radius: 10px;
           padding: 9px 10px; font-size: var(--fs-base); font-family: 'Onest', sans-serif;
           resize: vertical; }
.pmail-card { margin-top: 18px; cursor: pointer; }
.dash-mail-item { cursor: pointer; }

/* Настройки: интеграции */
.settings-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.int-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 20px 22px; }
.int-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.int-head .dot { flex: none; }
/* Заголовок бокса раньше размера не имел и наследовал родителя — отсюда и
   разнобой. Теперь один размер во всех карточках интерфейса. */
.int-head b, .trig-card .int-head b, .sup-card b, .qr-modal b,
.stub-card p, .cat-name, .batch-name { font-size: var(--fs-title); }
.int-note { font-size: var(--fs-note); color: var(--dim); }
.price-warn { color: #C2542B; margin-top: 3px; }

/* Журнал действий */
.audit-card { margin-top: 14px; }
.audit-details { white-space: normal; min-width: 260px; }

/* Отчёты (§5.8) */
.rp-card { margin-bottom: 14px; }
.rp-unit { display: flex; gap: 22px; flex-wrap: wrap; margin-top: 8px; }
.rp-stat { display: flex; flex-direction: column; gap: 2px; }
.rp-stat b { font-family: 'Unbounded', sans-serif; font-size: 19px;
             letter-spacing: -0.02em; color: var(--depth); }
.rp-stat span { font-size: var(--fs-note); color: var(--dim); }
.rp-good b { color: #1E7F4F; }
.rp-fee { display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
          font-size: var(--fs-base); margin: 8px 0 10px; }
.rp-fee input { width: 64px; border: 1px solid var(--line); border-radius: 8px;
                padding: 5px 8px; font-family: 'JetBrains Mono', monospace; }
.rp-scroll { overflow-x: auto; }
.rp-table { width: 100%; border-collapse: collapse; font-size: var(--fs-base); }
.rp-table th { text-align: left; font-family: 'JetBrains Mono', monospace;
               font-size: var(--fs-micro); text-transform: uppercase; letter-spacing: 0.06em;
               color: var(--dim); font-weight: 500; padding: 8px 10px 6px;
               border-bottom: 1px solid var(--line); white-space: nowrap; }
.rp-table td { padding: 8px 10px; border-bottom: 1px solid #EEF1F0; white-space: nowrap; }
.rp-table tr:last-child td { border-bottom: none; }
.rp-pos { color: #1E7F4F; }
.rp-neg { color: #C2542B; }
.rp-method { margin-top: 10px; font-size: var(--fs-base); color: var(--dim); }
.rp-method summary { cursor: pointer; color: var(--depth); }
.rp-method p { margin: 8px 0 0; line-height: 1.55; }
.nf-rows { display: flex; flex-direction: column; gap: 9px; margin: 4px 0 10px;
           font-size: var(--fs-base); }
.nf-row { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.nf-row input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--float); }
.nf-row input[type="time"] { border: 1px solid var(--line); border-radius: 8px;
                             padding: 5px 7px; font-family: 'JetBrains Mono', monospace;
                             font-size: var(--fs-base); }
.dl-lights { display: flex; gap: 16px; margin: 2px 0 10px; font-size: var(--fs-base);
             color: var(--dim); flex-wrap: wrap; }
.dl-light { display: flex; align-items: center; gap: 6px; }
.cl-thread { display: flex; flex-direction: column; gap: 8px; margin: 8px 0; }
/* реплики разведены по сторонам: кто написал, видно до чтения текста */
.cl-msg { background: var(--fog); border-radius: 10px; padding: 8px 10px;
          max-width: 80%; font-size: var(--fs-base); overflow-wrap: break-word; }
/* pre-wrap ТОЛЬКО на тексте: на всей реплике он превращал переносы строк из
   шаблона в пустые строки — пузырь раздувался втрое (замер 26.07) */
.cl-txt { white-space: pre-wrap; }
.cl-img { display: block; max-width: 220px; max-height: 220px; border-radius: 8px;
          margin-top: 6px; object-fit: cover; }
.cl-msg.cl-seller { align-self: flex-end; background: rgba(14, 140, 127, 0.10); }
.cl-reply { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; }
.cl-reply .cl-text { flex: 1; min-width: 220px; }
.int-form { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px;
             align-items: flex-start; }
/* поле по длине содержимого, а не по ширине карточки: ИНН из 12 цифр в поле на
   всю карточку читается как недоделанная вёрстка (замечание 26.07) */
.int-form input, .int-form textarea { width: 100%; max-width: 420px; }
.int-form button { flex: none; }
.int-form input { border: 1px solid var(--line); border-radius: 10px; padding: 11px 12px;
                  font-size: var(--fs-base); font-family: 'Onest', sans-serif; }
.int-actions { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
/* Кнопки одинаковы независимо от тега: у <a> своя высота строки и подчёркивание,
   у <button> — свои умолчания браузера, из-за чего «Скачать» (ссылка) и
   «Пригласить» (кнопка) выглядели разного размера. Фиксируем всё явно. */
.btn-dark, .btn-accent {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  box-sizing: border-box; min-height: 38px; padding: 0 16px;
  border: none; border-radius: 9px;
  font-family: inherit; font-size: var(--fs-base); font-weight: 600; line-height: 1;
  text-decoration: none; white-space: nowrap; cursor: pointer;
}
.btn-dark { background: var(--depth); color: var(--fog); }
.btn-dark:hover { background: #123646; }
.btn-accent { background: var(--float); color: #fff; }
.btn-accent:hover { background: var(--float-hover); }
.btn-dark:disabled, .btn-accent:disabled { opacity: 0.5; cursor: default; }
.int-result { font-size: var(--fs-base); min-height: 18px; margin-top: 4px; }
.int-result.ok { color: var(--ok); } .int-result.bad { color: var(--bad); }
.int-text { font-size: var(--fs-base); color: var(--dim); margin: 0; }

/* ── Мобильная адаптация ──
   Применяется на узких экранах (портрет телефона) И на низких (альбом телефона),
   иначе широкий-но-низкий айфон-альбом получал бы десктопный сайдбар не по высоте. */
@media (max-width: 760px), (orientation: landscape) and (max-height: 520px) {
  /* Зону чёлки (letterbox, когда браузер игнорирует viewport-fit=cover)
     красит только фон корневого элемента. Двухцветный градиент: сверху цвет
     шапки (высоту шапки проставляет app.js в --header-h; на экране входа JS
     ставит 100%), ниже — цвет контента. По умолчанию 0 — светлый, без тёмной
     вспышки при загрузке страницы. Полосы сливаются с макетом. */
  html { background: linear-gradient(var(--depth) 0 var(--header-h, 0px),
                                     var(--fog) var(--header-h, 0px)); }
  /* minmax(0,1fr) — ключ: колонка не может стать шире экрана из-за контента внутри.
     auto 1fr — лишняя высота (короткий контент) уходит контенту, а не растягивает
     тёмную шапку */
  .app { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; }
  /* сайдбар → компактная тёмная шапка, БЕЗ sticky.
     Горизонтальные паддинги = safe-area: в альбоме айфона тёмная шапка
     заезжает под чёлку, а не оставляет светлые поля по бокам */
  .sidebar { position: static; height: auto; gap: 0;
             padding: 12px env(safe-area-inset-right, 0) 0 env(safe-area-inset-left, 0); }
  /* единая левая линия 16px: лого (у знака в viewBox внутренние поля — прижимаем),
     лента вкладок, статус-бар и контент ниже */
  .side-logo { padding: 0 16px 10px; }
  .side-logo svg { margin-left: -7px; }
  /* мультиаккаунт: десктопную кнопку прячем, но меню оставляем доступным —
     на мобиле его открывает строка бренда в футере, показываем панелью снизу */
  #brand-btn { display: none; }
  .side-account { padding: 0; }
  .account-menu { position: fixed; left: 12px; right: 12px; bottom: 12px; top: auto; }
  /* навигация — прокручиваемая пальцем лента пилюль */
  .side-nav { flex: 0 0 auto; flex-direction: row; flex-wrap: nowrap; overflow-x: auto;
              overflow-y: hidden; padding: 0 16px 12px; gap: 6px; align-items: center;
              -webkit-overflow-scrolling: touch; touch-action: pan-x;
              scrollbar-width: none; }
  .side-nav::-webkit-scrollbar { display: none; }
  .side-nav button { white-space: nowrap; flex: 0 0 auto; padding: 8px 14px;
              font-size: var(--fs-base); border-radius: 18px; line-height: 1; }
  .side-nav button.active { background: rgba(255,255,255,0.14); }
  .side-nav .ndot { display: none; }
  .side-foot { flex-direction: row; align-items: center; justify-content: space-between;
               padding: 10px 16px; gap: 8px; border-top: 1px solid rgba(255,255,255,0.1); }
  /* на телефоне бренд показываем над статусом бота (шапки сайдбара с ним тут нет) */
  .foot-info { gap: 2px; }
  .foot-brand { display: block; font-size: var(--fs-note); font-weight: 700; letter-spacing: 0.04em; }
  .bot-status { font-size: var(--fs-micro); }
  .side-user { gap: 10px; }
  .uname { font-size: var(--fs-note); }
  .content { max-width: 100%;
             padding: 18px calc(16px + env(safe-area-inset-right, 0)) 40px
                      calc(16px + env(safe-area-inset-left, 0)); }
  .page-head { flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }
  /* на телефоне кнопка синка — во всю ширину карточки, прижата вправо */
  .cat-head .cat-sync-group { width: 100%; justify-content: space-between; }
  h1 { font-size: 21px; }
  /* auto-fit: 2 колонки на узком, больше — на широком альбоме; minmax(0,…) не даёт вылезти */
  .funnel { grid-template-columns: repeat(auto-fit, minmax(min(140px, 100%), 1fr)); gap: 10px; }
  .f-card { padding: 13px 14px; }
  .f-value { font-size: 22px; }
  .k-label { font-size: var(--fs-micro); letter-spacing: 0.06em; }
  .dash-mid { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .margin-value { font-size: 32px; }
  .margin-card, .chart-card, .events-card { min-width: 0; }
  .chart { gap: 5px; }
  .settings-grid { grid-template-columns: minmax(0, 1fr); }
  .cat-hint { font-size: var(--fs-note); }
  /* панель каталога на телефоне: тумблер во всю ширину своей строкой (iOS-стиль),
     ниже поиск + сортировка с подписью, кнопка добавления — во всю ширину внизу */
  .cat-toolbar { gap: 8px; }
  /* сегмент-фильтры на телефоне: одна строка одной высоты с прокруткой пальцем —
     переносы текста в кнопках давали пляшущие уровни */
  .cat-toolbar .seg { flex: 1 1 100%; flex-wrap: nowrap; overflow-x: auto;
                      -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .cat-toolbar .seg::-webkit-scrollbar { display: none; }
  .cat-toolbar .seg button { flex: 0 0 auto; white-space: nowrap; }
  .cat-search { flex: 1; min-width: 0; }
  .cat-sort { flex: none; max-width: 46%; }
  #cat-add { flex: 1 1 100%; order: 3; padding: 12px; }
  /* iOS зумит страницу при фокусе на поле со шрифтом < 16px — все поля 16px */
  .cat-search, .cat-sort, .cat-d2c input, .cat-d2c select, .cat-cycle input,
  .int-form input, .stage-sel, .url-inp, .offer-sel, .run-inp,
  #cat-form input, .stock-inp, .track-inp, .reason-inp, .carrier-sel,
  #tk-subject, #tk-body, .trig-text, .trig-row input, .war-inp, #cf-descr,
  .nf-row input[type="time"] { font-size: var(--fs-lead); }
  .cat-d2c input, .cat-cycle input { width: 96px; }
  .cat-d2c select { max-width: 140px; }
  /* каталог на телефоне — карточки с подписями полей (не разъезжающаяся таблица) */
  .cat-table { overflow: visible; background: transparent; border: none; border-radius: 0; }
  .cat-row.cat-head-row { display: none; }  /* спец. выше .cat-row: шапка таблицы скрыта, подписи у полей */
  #cat-body { display: flex; flex-direction: column; gap: 12px; }
  .cat-row { display: block; background: #fff; border: 1px solid var(--line);
             border-radius: 14px; padding: 14px 16px; border-bottom: 1px solid var(--line);
             min-width: 0; position: relative; }
  .cat-photo { position: absolute; top: 14px; right: 16px; width: 48px; height: 48px; }
  .cat-name-cell { margin-bottom: 8px; padding-right: 60px; min-height: 48px; }  /* место под фото справа */
  .cat-name { font-size: var(--fs-title); word-break: break-word; }
  /* каждое поле: подпись слева, значение справа */
  .cat-cell, .batch-cell { display: flex; align-items: center; justify-content: space-between;
              gap: 12px; padding: 8px 0; border-top: 1px dashed #E3E8E6; }
  .cat-cell::before, .batch-cell::before { display: block; content: attr(data-label);
              font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro);
              letter-spacing: 0.06em; text-transform: uppercase; color: var(--dim); flex: none; }
  .cat-d2c { flex-direction: row; align-items: center; gap: 8px; }
  .cat-d2c input, .cat-cycle input { width: 88px; }
  .cat-d2c select { max-width: 120px; }
  /* партии на телефоне — карточки, как каталог (фото в правом верхнем углу) */
  .batch-table { overflow: visible; background: transparent; border: none; border-radius: 0; }
  .batch-row.batch-head-row { display: none; }
  #batch-body { display: flex; flex-direction: column; gap: 12px; }
  .batch-row { display: block; background: #fff; border: 1px solid var(--line);
               border-radius: 14px; padding: 14px 16px; min-width: 0; position: relative; }
  .batch-row .batch-cell:first-child { border-top: none; padding-top: 0; }
  .batch-cell[data-label="Код"] { display: none; }  /* код — под именем товара */
  .batch-code-note { display: block; }
  .batch-actions { justify-content: flex-end; }
  .batch-url { display: flex; padding: 8px 0; }
  .batch-url.hidden { display: none; }
  .batch-log { margin-top: 8px; }
  .batch-instr { margin-top: 8px; }
  .stage-sel, .offer-sel { max-width: 180px; }
  .batch-new-cell { display: flex; align-items: center; justify-content: space-between;
                    gap: 10px; padding: 8px 0; }
  /* заказы на телефоне — карточки с подписями полей */
  .order-row { display: block; }
  .order-row .order-cell:first-child { border-top: none; padding-top: 0; }
  .order-cell { display: flex; align-items: flex-start; justify-content: space-between;
                gap: 12px; padding: 8px 0; border-top: 1px dashed #E3E8E6; }
  .order-cell::before { display: block; content: attr(data-label);
                font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro);
                letter-spacing: 0.06em; text-transform: uppercase; color: var(--dim);
                flex: none; padding-top: 2px; }
  .order-items { text-align: right; }
  .order-extra { padding: 8px 0 0; }
  .order-extra.hidden { display: none; }
  /* клиенты на телефоне — карточки с подписями полей */
  .client-table { overflow: visible; background: transparent; border: none; border-radius: 0; }
  .client-row.client-head-row { display: none; }
  .tbl-empty { background: #fff; border: 1px solid var(--line); border-radius: 14px;
               padding: 14px 16px; }
  #cl-body { display: flex; flex-direction: column; gap: 12px; }
  .client-row { display: block; background: #fff; border: 1px solid var(--line);
                border-radius: 14px; padding: 14px 16px; min-width: 0; }
  .client-row .client-cell:first-child { border-top: none; padding-top: 0; }
  .client-cell { display: flex; align-items: flex-start; justify-content: space-between;
                 gap: 12px; padding: 8px 0; border-top: 1px dashed #E3E8E6; }
  .client-cell::before { display: block; content: attr(data-label);
                font-family: 'JetBrains Mono', monospace; font-size: var(--fs-micro);
                letter-spacing: 0.06em; text-transform: uppercase; color: var(--dim);
                flex: none; padding-top: 2px; }
  .client-card { margin-top: 8px; }
  .client-card.hidden { display: none; }
  /* события помещаются: время+тег в строку, текст переносится — без принудительной ширины */
  .events-card { padding: 16px 16px; }
  .event { flex-wrap: wrap; gap: 4px 10px; min-width: 0; }
  .e-time { width: auto; }
  .e-tag { width: auto; }
  .e-text { flex: 1 1 100%; }
  .login-box { width: 100%; max-width: 420px; }
  .login-title { font-size: 34px; }
}

/* Заглушки разделов */
.stub-card { background: #fff; border: 1px solid var(--line); border-radius: 14px;
             padding: 48px 32px; text-align: center; margin-top: 22px; }
.stub-emoji { font-size: 40px; margin-bottom: 12px; }
.stub-card p { margin: 0 0 8px; font-size: var(--fs-title); }
.stub-note { color: var(--dim); font-size: var(--fs-base); }

/* ЦЕНА В НИШЕ — панель под строкой каталога.
   Во всю ширину сетки: распределение в ячейку не влезает, а ломать колонки
   ради него нельзя — каталог смотрят колонками. */
.price-panel { grid-column: 1 / -1; background: #FAFBFB; border-top: 1px solid var(--line, #E4E7E9);
  padding: 14px 16px; }
.pp-body { display: flex; gap: 24px; flex-wrap: wrap; }
.pp-col { flex: 1 1 340px; min-width: 0; }
.pp-money { flex: 1 1 300px; min-width: 0; border-left: 1px solid var(--line, #E4E7E9);
  padding-left: 20px; }
.pp-line { font-size: var(--fs-base); line-height: 1.7; }
.pp-ask { display: flex; flex-direction: column; gap: 8px; max-width: 460px; }
.pp-lbl { display: flex; flex-direction: column; gap: 4px;
  color: var(--dim, #6b7572); margin-top: 8px; font-size: var(--fs-note); }
.pp-inp { padding: 8px 11px; font-size: var(--fs-base); border: 1px solid var(--line, #E4E7E9);
  border-radius: 9px; font-family: inherit; background: #fff; max-width: 300px; }
.pp-inp:focus { outline: none; border-color: var(--accent, #FF5334); }
@media (max-width: 700px) {
  .pp-money { border-left: none; padding-left: 0; border-top: 1px solid var(--line, #E4E7E9);
    padding-top: 12px; }
}
.pp-go { align-self: flex-start; padding: 9px 16px; font-size: var(--fs-base);
  border: none; border-radius: 10px; background: var(--ink, #0B2530); color: #fff;
  cursor: pointer; font-family: inherit; }
.pp-go:disabled { opacity: .45; cursor: default; }
