/* Кабинет поставщика. Опирается на tenders.css: там уже описаны .supplier-portal,
   .invitation-hero, .invitation-card и .bid-form — переходник по ссылке из письма
   и карточка тендера в кабинете должны выглядеть одинаково, иначе поставщик
   решит, что попал не туда. Здесь только то, чего в портале по ссылке не было:
   навигация, экраны входа и список приглашений. */

.supplier-nav{display:flex;align-items:center;gap:22px;margin-left:auto}
.supplier-nav a{color:#475467;text-decoration:none;font-weight:var(--ui-weight-bold);padding:6px 0;border-bottom:2px solid transparent;white-space:nowrap}
.supplier-nav a:hover{color:#101828}
.supplier-nav a.is-current{color:var(--ui-primary);border-bottom-color:var(--ui-primary)}
.supplier-logout{margin:0 0 0 22px}
.supplier-logout button{border:1px solid #d8e0eb;background:white;color:#475467;border-radius:var(--ui-radius-md);padding:9px 14px;font:inherit;font-weight:var(--ui-weight-bold);cursor:pointer}
.supplier-logout button:hover{border-color:#98a2b3;color:#101828}
.supplier-portal__brand{display:flex;flex:0 0 auto}

/* Шапка на телефоне. Три раздела, логотип и «Выйти» в одну строку не
   помещаются даже на 400px: меню наезжало на логотип, и вся страница
   прокручивалась вбок. Меню-кнопка здесь лишняя — разделов всего три, и
   прятать их за лишним нажатием незачем. Поэтому вторая строка: логотип и
   выход сверху, разделы под ними тремя равными вкладками во всю ширину. */
@media(max-width:720px){
  .supplier-portal__header{flex-wrap:wrap;height:auto;row-gap:var(--ui-space-1);
    padding:var(--ui-space-2) var(--ui-space-4) 0}
  .supplier-portal__header img{width:118px;height:36px}
  .supplier-logout{margin-left:auto}
  .supplier-logout button{padding:var(--ui-space-2) var(--ui-space-3);font-size:var(--ui-size-sm)}
  .supplier-nav{order:3;flex:1 0 100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0}
  .supplier-nav a{display:flex;align-items:center;justify-content:center;min-height:var(--ui-control);
    padding:0 var(--ui-space-1);border-bottom-width:3px;font-size:var(--ui-size-sm);text-align:center}
  /* Без входа в шапке только логотип: подпись «Кабинет поставщика» прячет
     tenders.css, и шапке не нужен нижний отступ под несуществующие вкладки. */
  .supplier-portal__header:not(:has(.supplier-nav)){padding-bottom:var(--ui-space-2)}
}

.supplier-head{margin-bottom:24px}
.supplier-head h1{font-size:34px;margin:8px 0}
.supplier-head p{color:#667085;margin:0}
.supplier-back{margin:0 0 16px}
.supplier-back a{color:var(--ui-primary);text-decoration:none;font-weight:var(--ui-weight-bold)}

/* Экраны входа и регистрации. Узкая колонка по центру: на этих страницах нет
   ничего, кроме одной формы, и растягивать её на всю ширину незачем. */
.supplier-auth{max-width:460px;margin:24px auto;background:white;border:1px solid #e1e7ef;border-radius:var(--ui-radius-lg);padding:34px}
.supplier-auth--wide{max-width:640px}
.supplier-auth h1{font-size:27px;margin:0 0 10px}
.supplier-auth>p{color:#667085;margin:0 0 20px}
.supplier-auth__alt{margin:18px 0 0;text-align:center}
.supplier-auth__alt a{color:var(--ui-primary);font-weight:var(--ui-weight-bold)}
.supplier-alert{border:1px solid #fda29b;background:#fef3f2;color:#b42318;border-radius:var(--ui-radius-md);padding:13px 16px;margin-bottom:18px;font-weight:var(--ui-weight-medium)}

.supplier-form{display:grid;gap:16px}
.supplier-form--two{grid-template-columns:1fr 1fr}
.supplier-form .wide{grid-column:1/-1}
.supplier-form label{font-size:var(--ui-size-sm);font-weight:var(--ui-weight-bold)}
.supplier-form label small{color:var(--ui-muted);font-weight:var(--ui-weight-medium)}
.supplier-form input{display:block;width:100%;box-sizing:border-box;margin-top:7px;border:1px solid #ccd5e2;border-radius:var(--ui-radius-md);padding:13px 14px;font:inherit}
.supplier-form input:focus{outline:2px solid #84adff;outline-offset:1px;border-color:#84adff}
.supplier-form button{border:0;border-radius:var(--ui-radius-md);background:var(--ui-primary);color:white;padding:15px;font:inherit;font-weight:var(--ui-weight-display);font-size:15px;cursor:pointer}
.supplier-form button:hover{background:#0559c8}

.supplier-invited{background:#f5f8ff;border:1px solid #b2ccff;border-radius:var(--ui-radius-lg);padding:16px 18px;margin-bottom:20px}
.supplier-invited b,.supplier-invited span,.supplier-invited small{display:block}
.supplier-invited span{margin-top:4px;color:#101828}
.supplier-invited small{margin-top:8px;color:#475467}

/* Список приглашений. Строками, а не плитками: поставщику важен срок подачи,
   а его удобнее сравнивать в одной колонке. */
.supplier-list{display:grid;gap:12px}
.supplier-row{display:grid;grid-template-columns:minmax(0,1fr) 190px 190px;gap:18px;align-items:center;
  background:white;color:inherit;text-decoration:none;border:1px solid #e1e7ef;border-left:4px solid var(--ui-primary-hover);
  border-radius:var(--ui-radius-lg);padding:20px 22px;box-shadow:0 6px 18px var(--ui-navy)08}
.supplier-row:hover{border-color:#b2ccff;box-shadow:0 10px 26px var(--ui-navy)12}
.supplier-row.is-answered{border-left-color:var(--ui-success)}
.supplier-row.is-closed{border-left-color:#98a2b3}
.supplier-row__main b{display:block;font-size:17px}
.supplier-row__main small{display:block;color:var(--ui-muted);margin-top:4px}
.supplier-row__when span{display:block;color:#667085;font-size:var(--ui-size-caption)}
.supplier-row__when b{display:block;margin-top:3px}
.supplier-row__state{text-align:right}
.status-pill--open{background:#fff5e6;color:#b54708}

.supplier-empty{background:white;border:1px dashed #bdc8d6;border-radius:var(--ui-radius-lg);padding:60px 30px;text-align:center}
.supplier-empty b{display:block;font-size:19px;margin-bottom:10px}
.supplier-empty p{color:#667085;margin:6px 0}

.supplier-sent{border:1px solid #abefc6;background:#f4fdf8;border-radius:var(--ui-radius-lg);padding:14px 16px;margin-bottom:20px}
.supplier-sent>b{display:block;color:var(--ui-success);margin-bottom:8px}
/* Строка отправленного КП — кнопка: она открывает окно с условиями. Вид у неё
   остаётся строкой списка, поэтому фон и рамку кнопки гасим явно. Иначе
   браузер нарисует здесь обычную кнопку продукта — красную во всю ширину; на
   этом проект уже спотыкался в ленте заявки и в карточке ассистента. */
button.supplier-sent__row{width:100%;border:0;background:transparent;font:inherit;
  color:inherit;text-align:left;cursor:pointer;border-radius:var(--ui-radius-md)}
button.supplier-sent__row:hover{background:#eafaf1}
button.supplier-sent__row em{margin-left:auto;font-style:normal;color:var(--ui-success);
  font-size:var(--ui-size-caption);font-weight:var(--ui-weight-bold)}
.supplier-sent__row{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;border-top:1px solid #d3f0e0;padding-top:8px;margin-top:8px}
.supplier-sent__row:first-of-type{border-top:0;padding-top:0;margin-top:0}
.supplier-sent__row span{font-weight:var(--ui-weight-display)}
.supplier-sent__row small{color:#475467}

.supplier-facts{margin:0}
.supplier-facts dt{color:#667085;font-size:var(--ui-size-caption);margin-top:16px}
.supplier-facts dd{margin:4px 0 0;font-weight:var(--ui-weight-bold)}
.supplier-facts dd a{color:var(--ui-primary);word-break:break-all}

@media(max-width:900px){
  .supplier-row{grid-template-columns:1fr;gap:10px}
  .supplier-row__state{text-align:left}
  .supplier-nav{gap:14px}
  .supplier-logout{margin-left:14px}
}
@media(max-width:560px){
  .supplier-form--two{grid-template-columns:1fr}
  .supplier-auth{padding:24px 20px;margin:12px auto}
  .supplier-head h1{font-size:26px}
}

/* Переходник по ссылке из письма: две кнопки подряд, главная выделена. */
.invitation-card .primary-action{width:100%;box-sizing:border-box}
.secondary-action-wrap{text-align:center;margin:12px 0 0}
.secondary-action-wrap a{color:var(--ui-primary);font-weight:var(--ui-weight-bold)}

/* Повторная отправка ссылки подтверждения. Отдельная кнопка под сообщением
   об ошибке: письмо теряется, и без неё вход становится тупиком. */
.supplier-resend{margin:0 0 16px}
.supplier-note{margin:0 0 16px;padding:12px 14px;border:1px solid var(--ui-info-border);border-radius:var(--ui-radius-md);background:var(--ui-info-bg);color:var(--ui-text-2);font-size:var(--ui-size-sm);line-height:1.5}

/* Карточка компании стала редактируемой: поля в две колонки, длинные — во всю
   ширину. Отдельный класс, а не правка `.supplier-form`: та же разметка
   используется на входе и в регистрации, где колонок быть не должно. */
.supplier-form--profile{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}
.supplier-form--profile .wide{grid-column:1/-1}
/* `align-content:start` обязателен: без него поле растягивается на высоту
   соседа с подписью, и соседние строки формы съезжают друг относительно
   друга. */
.supplier-form--profile label{display:grid;align-content:start;gap:6px;font-size:var(--ui-size-sm);font-weight:var(--ui-weight-medium)}
.supplier-form--profile small{color:var(--ui-muted);font-weight:var(--ui-weight-normal);font-size:var(--ui-size-caption)}
.supplier-form--profile textarea{min-height:110px;resize:vertical}
.supplier-profile-save{display:flex;justify-content:flex-end;margin-top:18px}

/* Пустой раздел: рассказывает, чего ждать, а не просто сообщает о пустоте. */
.supplier-empty{
  display:grid;gap:10px;padding:40px;border:1px dashed #bdc8d6;
  border-radius:var(--ui-radius-lg);background:#fff;text-align:center;
}
.supplier-empty b{font-size:var(--ui-size-lg)}
.supplier-empty p{margin:0;color:#667085;line-height:1.6}

@media(max-width:700px){
  .supplier-form--profile{grid-template-columns:1fr}
}

/* Документы заказчика на странице тендера. Ссылку на техническое задание
   поставщик ищет глазами первой — она стоит перед списком позиций. */
.tender-files{display:grid;gap:6px;margin:0 0 var(--ui-space-4)}
.tender-files b{color:var(--ui-text);font-size:var(--ui-size-caption)}
.tender-files a{display:flex;align-items:center;justify-content:space-between;gap:var(--ui-space-3);
  padding:10px var(--ui-space-3);border:1px solid var(--ui-border);border-radius:var(--ui-radius-md);
  background:var(--ui-surface);color:var(--ui-text);font-size:var(--ui-size-body);text-decoration:none}
.tender-files a:hover{border-color:var(--ui-navy);background:var(--ui-subtle)}
.tender-files small{flex:0 0 auto;color:var(--ui-muted);font-size:var(--ui-size-label)}

/* Остаток времени до срока. Дата отвечает «когда», счётчик — «успею ли я»;
   второе поставщик решает чаще. */
.countdown{display:inline-block;color:var(--ui-muted);font-size:var(--ui-size-caption);
  font-weight:var(--ui-weight-bold);font-style:normal}
.invitation-hero .countdown{display:block;margin-top:2px;color:#8fbaf5}
/* Меньше суток — повод поторопиться. Цветом, а не словом: список просматривают,
   а не читают. */
.countdown.is-soon{color:var(--ui-danger)}
.invitation-hero .countdown.is-soon{color:#ffb4b4}
.countdown.is-over{color:var(--ui-muted)}

/* Окно с отправленным предложением. Скрипт переносит его в конец страницы,
   поэтому раскладка карточки на него не влияет. */
.supplier-modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;
  justify-content:center;padding:var(--ui-space-4);background:rgba(7,23,53,.55);overflow-y:auto}
.supplier-modal__box{width:min(560px,100%);max-height:90vh;overflow-y:auto;
  padding:var(--ui-space-5);border-radius:var(--ui-radius-lg);background:var(--ui-surface);
  box-shadow:var(--ui-shadow-dialog)}
.supplier-modal__box>header{display:flex;align-items:flex-start;gap:var(--ui-space-3);
  margin-bottom:var(--ui-space-3)}
.supplier-modal__box>header b{display:block;font-size:var(--ui-size-lg)}
.supplier-modal__box>header small{display:block;margin-top:2px;color:var(--ui-muted);
  font-size:var(--ui-size-caption)}
.supplier-modal__box>header button{margin-left:auto}
.supplier-modal .tender-files{margin-top:var(--ui-space-4)}
body.supplier-modal-open{overflow:hidden}

/* Отказ. Свёрнут и написан спокойно: это обычный рабочий ответ, а не провал, —
   но и не соседствует по весу с подачей предложения, ради которой сюда пришли. */
.supplier-decline{margin-top:var(--ui-space-4);border-top:1px solid var(--ui-border);
  padding-top:var(--ui-space-3)}
.supplier-decline summary{color:var(--ui-muted);font-size:var(--ui-size-caption);cursor:pointer}
.supplier-decline summary:hover{color:var(--ui-text)}
.supplier-decline form{display:grid;gap:var(--ui-space-3);margin-top:var(--ui-space-3)}
/* Поля здесь оформляются так же, как в форме подачи: без этого подпись и
   поле встают в строку, а текстовое поле сжимается до трёх слов. */
.supplier-decline label{display:grid;gap:6px;font-size:var(--ui-size-sm);
  font-weight:var(--ui-weight-bold)}
.supplier-decline select,.supplier-decline textarea{display:block;width:100%;box-sizing:border-box;
  border:1px solid #ccd5e2;border-radius:var(--ui-radius-md);padding:12px;font:inherit;
  font-weight:var(--ui-weight-normal)}
.supplier-decline textarea{min-height:76px;resize:vertical}
.supplier-decline button{justify-self:start}

/* Уже отказались. Причина видна и после отказа: через неделю поставщик не
   помнит, что именно он ответил, а заказчик помнит. */
.supplier-declined{border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);
  padding:14px 16px;background:var(--ui-subtle)}
.supplier-declined>b{display:block;color:var(--ui-text)}
.supplier-declined p{margin:6px 0 0;color:var(--ui-text-2)}
.supplier-declined small{display:block;margin:6px 0 12px;color:var(--ui-muted);
  font-size:var(--ui-size-caption)}

/* Условия заказчика на странице лота: базис поставки, разгрузка, гарантия,
   требования к участнику. Поставщик читает их до того, как посчитает цену. */
.tender-terms{margin:0 0 var(--ui-space-4);padding:var(--ui-space-3) var(--ui-space-4);
  background:var(--ui-subtle);border:1px solid var(--ui-border);border-radius:var(--ui-radius-md)}
.tender-terms b{display:block;margin-bottom:var(--ui-space-2);color:var(--ui-text);
  font-size:var(--ui-size-caption)}
.tender-terms ul{margin:0;padding-left:18px;color:var(--ui-muted);font-size:var(--ui-size-caption);
  line-height:1.6}
.tender-terms li{margin:3px 0}

/* Открытые тендеры: закупки, на которые поставщик заявляется сам.
   В списке видно то же, что и гостю на сайте; заказчик и документы
   открываются после нажатия «Участвовать». */
.open-tender-list{display:grid;gap:var(--ui-space-3)}
.open-tender{display:flex;align-items:center;justify-content:space-between;
  gap:var(--ui-space-5);padding:var(--ui-space-4) var(--ui-space-5);
  background:var(--ui-surface);border:1px solid var(--ui-border);
  border-radius:var(--ui-radius-lg)}
.open-tender-main{min-width:0}
.open-tender-main b{display:block;font-size:var(--ui-size-md)}
.open-tender-main small{display:block;margin-top:4px;color:var(--ui-muted);
  font-size:var(--ui-size-caption)}
.open-tender-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--ui-space-2)}
.open-tender-tags span{padding:2px 9px;background:var(--ui-subtle);
  border-radius:var(--ui-radius-full);color:var(--ui-muted);font-size:var(--ui-size-label)}
.open-tender-side{display:grid;gap:6px;justify-items:end;flex:0 0 auto}
.open-tender-deadline{color:var(--ui-text);font-size:var(--ui-size-caption);
  font-weight:var(--ui-weight-medium);white-space:nowrap}
.open-tender-side small{color:var(--ui-muted);font-size:var(--ui-size-label)}
.open-tender-note{margin-top:var(--ui-space-4);color:var(--ui-muted);
  font-size:var(--ui-size-caption)}

@media(max-width:600px){
  .open-tender{flex-direction:column;align-items:stretch}
  .open-tender-side{justify-items:start}
}

/* Цены КП по позициям: переключатель НДС, таблица и итоги (supplier_tender.html). */
.bid-prices{border:1px solid #dfe5ee;border-radius:var(--ui-radius-md);padding:14px 16px;margin:0;min-width:0}
.bid-prices legend{padding:0 6px;font-weight:var(--ui-weight-bold)}
.bid-vat{display:flex;flex-wrap:wrap;gap:8px 18px;margin-bottom:12px}
.bid-vat label{display:inline-flex;align-items:center;gap:8px;min-height:40px;font-weight:var(--ui-weight-medium)}
.bid-form .bid-vat input{width:auto;margin:0;display:inline-block}
.bid-prices__wrap{overflow-x:auto}
.bid-prices__table{width:100%;border-collapse:collapse;font-size:var(--ui-size-sm)}
.bid-prices__table caption{text-align:left;color:#475467;padding:0 0 6px}
.bid-prices__table th,.bid-prices__table td{padding:8px 6px;border-top:1px solid #edf0f5;text-align:left;vertical-align:middle}
.bid-prices__table th{color:#475467;font-weight:var(--ui-weight-bold);border-top:0}
.bid-prices__table .num{text-align:right;white-space:nowrap}
.bid-form .bid-prices__table input{margin:0;min-width:120px;text-align:right;padding:9px 10px}
.bid-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0 8px}
.bid-totals div{background:#f6f9fc;border-radius:var(--ui-radius-md);padding:10px 12px}
.bid-totals dt{color:#475467;font-size:var(--ui-size-caption)}
.bid-totals dd{margin:4px 0 0;font-weight:var(--ui-weight-bold);font-variant-numeric:tabular-nums}
.bid-totals .is-final{background:#eef4ff}
.bid-prices>small{display:block;color:#475467;font-weight:normal}
.bid-qty{display:none}
@media(max-width:560px){
  .bid-totals{grid-template-columns:1fr}
  .bid-col-qty{display:none}
  .bid-qty{display:block;color:#475467;margin-top:3px}
  .bid-prices{padding:12px 10px}
  .bid-prices__table th,.bid-prices__table td{padding:8px 4px}
  .bid-form .bid-prices__table input{min-width:92px;padding:9px 8px}
}

/* Категории при регистрации поставщика (supplier_register.html). */
.supplier-pick{border:1px solid #dfe5ee;border-radius:var(--ui-radius-md);padding:12px 16px 14px;margin:0;min-width:0}
.supplier-pick legend{padding:0 6px;font-size:var(--ui-size-sm);font-weight:var(--ui-weight-bold)}
.supplier-pick legend small{color:var(--ui-muted);font-weight:var(--ui-weight-medium)}
.supplier-pick>p{margin:2px 0 10px;color:#475467;font-size:var(--ui-size-sm)}
.supplier-pick details{border-top:1px solid #edf0f5}
.supplier-pick summary{cursor:pointer;padding:11px 0;font-weight:var(--ui-weight-bold);min-height:22px}
.supplier-pick__grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 16px;padding-bottom:10px}
.supplier-form .supplier-pick label{display:flex;align-items:flex-start;gap:9px;min-height:40px;padding:6px 0;font-weight:var(--ui-weight-medium);line-height:1.35}
.supplier-form .supplier-pick input{width:18px;height:18px;margin:1px 0 0;flex:none;padding:0}
@media(max-width:560px){.supplier-pick__grid{grid-template-columns:1fr}}
.supplier-pick summary small.supplier-pick__count{color:var(--ui-success);font-weight:var(--ui-weight-medium);margin-left:6px}
.supplier-form .supplier-pick label.supplier-pick__all{font-weight:var(--ui-weight-bold);border-bottom:1px dashed #e4e7ec;margin-bottom:4px}

/* Поле документов предложения: подпись, своя кнопка выбора и список файлов.
   Раньше подписью служил <label> вокруг системного поля; теперь внутри живёт
   собственный <label> кнопки, а вложенные подписи HTML не допускает. */
.bid-form .file-field{display:grid;gap:var(--ui-space-1)}
.file-field__title{font-size:var(--ui-size-sm);font-weight:var(--ui-weight-bold)}
.file-field>small{margin-top:var(--ui-space-1);color:var(--ui-muted);font-size:var(--ui-size-caption)}

/* Предложения по той же закупке, отправленные не в этот тендер. Спокойнее, чем
   «Уже отправлено»: это справка, а не подтверждение подачи. */
.supplier-sent--earlier{border-color:var(--ui-border);background:var(--ui-subtle)}
.supplier-sent--earlier>b{color:var(--ui-text)}
.supplier-sent--earlier>small{display:block;margin:-4px 0 var(--ui-space-2);color:var(--ui-muted);font-size:var(--ui-size-caption)}
.supplier-sent--earlier button.supplier-sent__row:hover{background:var(--ui-hover)}
