.tender-page{max-width:1500px;margin:0 auto;padding:42px 36px 70px;color:#101828}.tender-page__head,.tender-detail-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;margin-bottom:28px}.tender-page h1{font-size:38px;margin:8px 0}.tender-page__head p,.tender-detail-head p{color:#667085;margin:0}.primary-action,.secondary-action{display:inline-flex;align-items:center;justify-content:center;padding:14px 20px;border-radius:var(--ui-radius-md);text-decoration:none;font-weight:var(--ui-weight-bold)}.primary-action{background:var(--ui-primary);color:white}.secondary-action{background:white;color:#101828;border:1px solid #d8e0eb;width:100%;box-sizing:border-box;margin-top:14px}.tender-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:22px}.tender-stats>div{background:white;border:1px solid #e4eaf2;border-radius:var(--ui-radius-lg);padding:18px 20px}.tender-stats span{display:block;color:#667085;font-size:var(--ui-size-sm)}.tender-stats b{font-size:var(--ui-size-xl)}.tender-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.tender-card{display:block;background:white;color:inherit;border:1px solid #e1e7ef;border-top:4px solid #98a2b3;border-radius:var(--ui-radius-lg);padding:22px;text-decoration:none;box-shadow:0 8px 22px var(--ui-navy)0a}.tender-card--sent,.tender-card--partially_sent{border-top-color:var(--ui-primary-hover)}.tender-card--closed{border-top-color:var(--ui-success)}.tender-card__top,.panel-title{display:flex;justify-content:space-between;align-items:center}.status-pill{border-radius:var(--ui-radius-full);background:#eef4ff;color:var(--ui-info);padding:6px 10px;font-size:var(--ui-size-caption);font-weight:var(--ui-weight-bold)}.tender-card h2{font-size:var(--ui-size-lg);min-height:48px;margin:24px 0 8px}.tender-card>p{color:#667085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tender-card__meta{display:flex;gap:25px;border-top:1px solid #edf0f5;border-bottom:1px solid #edf0f5;padding:16px 0;margin-top:22px;color:#667085}.tender-card__meta b{color:#101828}.tender-card footer{display:flex;justify-content:space-between;padding-top:16px}.tender-empty{grid-column:1/-1;text-align:center;background:white;border:1px dashed #bdc8d6;border-radius:var(--ui-radius-lg);padding:70px}.tender-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px}.tender-panel{background:white;border:1px solid #e1e7ef;border-radius:var(--ui-radius-lg);padding:24px;margin-bottom:18px}.tender-panel h2{margin:0 0 18px;font-size:var(--ui-size-lg)}.tender-item,.invitation-item{position:relative;border-top:1px solid #edf0f5;padding:17px 120px 17px 0}.tender-item>span,.invitation-item>span{position:absolute;right:0;top:17px;font-weight:var(--ui-weight-bold)}.tender-item p,.invitation-item p{color:#667085;margin:7px 0}.tender-item small,.invitation-item small{color:var(--ui-muted)}.recipient-row{display:grid;grid-template-columns:minmax(180px,1fr) 150px 180px;gap:16px;align-items:center;border-top:1px solid #edf0f5;padding:16px 0}.recipient-row>div:first-child small,.proposal-summary small{display:block;color:#667085;margin-top:4px}.recipient-status{font-size:var(--ui-size-caption);font-weight:var(--ui-weight-bold)}.recipient-status--responded{color:var(--ui-success)}.recipient-status--send_failed,.recipient-status--contact_required{color:#b54708}.proposal-summary{text-align:right}.muted{color:var(--ui-muted);text-align:right}.tender-facts dl{margin:0}.tender-facts dt{color:#667085;font-size:var(--ui-size-caption);margin-top:16px}.tender-facts dd{margin:4px 0 0;font-weight:var(--ui-weight-bold)}.supplier-portal{margin:0;background:#f3f6fa;color:#101828;font-family:Inter,Arial,sans-serif}.supplier-portal__header{height:72px;background:white;border-bottom:1px solid #e1e7ef;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1180px)/2))}.supplier-portal__header img{width:150px;height:42px;object-fit:contain}.supplier-portal__header span{color:#667085}.supplier-portal__main{max-width:1180px;margin:0 auto;padding:48px 24px}.invitation-hero{background:var(--ui-navy);color:white;border-radius:var(--ui-radius-lg);padding:38px;margin-bottom:20px}.invitation-hero>span{color:#8fbaf5;font-weight:var(--ui-weight-bold)}.invitation-hero h1{font-size:34px;margin:12px 0}.invitation-hero p{color:#c7d2e4}.invitation-hero>div{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:10px 20px;margin-top:26px;padding-top:22px;border-top:1px solid #ffffff24}.invitation-hero>div b{color:#8fbaf5}.invitation-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px}.invitation-card{background:white;border:1px solid #e1e7ef;border-radius:var(--ui-radius-lg);padding:28px}.invitation-card h2{margin-top:0}.bid-form{display:grid;grid-template-columns:1fr 1fr;gap:16px}.bid-form label{font-size:var(--ui-size-sm);font-weight:var(--ui-weight-bold)}.bid-form input,.bid-form select,.bid-form textarea{display:block;width:100%;box-sizing:border-box;border:1px solid #ccd5e2;border-radius:var(--ui-radius-md);padding:12px;margin-top:7px;font:inherit}.bid-form textarea{min-height:76px;resize:vertical}.bid-form .wide,.bid-form button{grid-column:1/-1}.file-field{background:#f6f9fc;border:1px dashed #aebbc9;border-radius:var(--ui-radius-md);padding:14px}.bid-form button{border:0;border-radius:var(--ui-radius-md);background:var(--ui-primary);color:white;padding:15px;font-weight:var(--ui-weight-display);font-size:15px}.success-banner{display:flex;justify-content:space-between;background:#e8f8ef;color:var(--ui-success);border:1px solid #abefc6;border-radius:var(--ui-radius-lg);padding:16px 20px;margin-bottom:18px}.error-text{color:#b42318}.supplier-portal__footer{text-align:center;color:#667085;padding:25px}.status-pill--closed{background:#e8f8ef;color:var(--ui-success)}@media(max-width:900px){.tender-grid,.tender-stats{grid-template-columns:1fr}.tender-layout,.invitation-layout{grid-template-columns:1fr}.recipient-row{grid-template-columns:1fr}.proposal-summary,.muted{text-align:left}.tender-page{padding:24px 16px}.tender-page__head,.tender-detail-head{align-items:flex-start;flex-direction:column}.invitation-hero>div{grid-template-columns:1fr}.supplier-portal__header span{display:none}}@media(max-width:560px){.bid-form{grid-template-columns:1fr}.invitation-hero{padding:24px}.invitation-hero h1{font-size:26px}.supplier-portal__main{padding:24px 14px}.tender-item,.invitation-item{padding-right:0}.tender-item>span,.invitation-item>span{position:static;display:block;margin-top:8px}}

/* Manual tender builder */
.tender-builder{max-width:1260px}.tender-builder__back{width:auto;margin:0}.tender-form-error{border:1px solid #fda29b;background:#fef3f2;color:#b42318;border-radius:var(--ui-radius-lg);padding:14px 18px;margin-bottom:18px;font-weight:var(--ui-weight-bold)}.tender-form-section{padding:28px}.panel-title>div{display:flex;align-items:center;gap:12px}.panel-title>div h2{margin:0}.step-number{display:grid;place-items:center;width:30px;height:30px;border-radius:var(--ui-radius-md);background:#eaf2ff;color:var(--ui-primary);font-weight:var(--ui-weight-display)}.section-hint{color:#667085;margin:-4px 0 20px}.tender-form-grid,.tender-item-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.tender-form-grid label,.tender-item-fields label,.new-supplier-box label{font-size:var(--ui-size-sm);font-weight:var(--ui-weight-bold)}.tender-form-grid label small,.tender-item-fields label small{color:var(--ui-muted);font-weight:var(--ui-weight-medium)}.tender-form-grid input,.tender-form-grid textarea,.tender-item-fields input,.supplier-picker-search,.new-supplier-box 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;background:white}.tender-form-grid textarea{min-height:92px;resize:vertical}.wide{grid-column:1/-1}.secondary-button{border:1px solid #ccd5e2;background:white;color:#101828;padding:11px 15px;border-radius:var(--ui-radius-md);font:inherit;font-weight:var(--ui-weight-bold);cursor:pointer}.tender-item-editor{border:1px solid #dce4ee;border-radius:var(--ui-radius-lg);background:#fbfcfe;padding:20px;margin-top:14px}.tender-item-editor>header,.specification-head{display:flex;align-items:center;justify-content:space-between;gap:14px}.remove-tender-item,.add-spec-row{border:0;background:transparent;color:#b42318;font-weight:var(--ui-weight-bold);cursor:pointer}.specification-head{border-top:1px solid #e6ebf2;margin-top:18px;padding-top:16px}.add-spec-row{color:var(--ui-primary)}.specification-rows{display:grid;gap:9px;margin-top:10px}.spec-row{display:grid;grid-template-columns:minmax(180px,.75fr) minmax(260px,1.25fr) 38px;gap:9px}.spec-row input{border:1px solid #ccd5e2;border-radius:var(--ui-radius-md);padding:11px;font:inherit}.spec-row button{border:1px solid #fecdca;background:white;color:#b42318;border-radius:var(--ui-radius-md);font-size:var(--ui-size-lg)}.supplier-picker-search{margin:0 0 12px}.supplier-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-height:300px;overflow:auto}.supplier-picker>label{display:flex;gap:10px;align-items:flex-start;border:1px solid #e1e7ef;border-radius:var(--ui-radius-md);padding:12px;cursor:pointer}.supplier-picker>label:has(input:checked){border-color:#84adff;background:#f5f8ff}.supplier-picker input{margin-top:3px}.supplier-picker span,.supplier-picker small{display:block}.supplier-picker small{color:#667085;margin-top:3px}.new-supplier-box{border-top:1px solid #e1e7ef;margin-top:20px;padding-top:20px}.new-supplier-box>p{color:#667085;margin:5px 0 14px}.new-supplier-box>div{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tender-create-actions{position:sticky;bottom:0;z-index:5;display:flex;justify-content:flex-end;gap:12px;background:#f5f7faeF;backdrop-filter:blur(10px);border-top:1px solid #dfe5ed;padding:16px 0}.tender-create-actions .primary-action{border:0;font-size:15px}.parameter-table{width:100%;border-collapse:collapse;margin-top:12px}.parameter-table th,.parameter-table td{border:1px solid #dfe5ed;padding:10px 12px;text-align:left;vertical-align:top}.parameter-table th{width:35%;background:#f6f8fb;color:#475467;font-size:var(--ui-size-caption)}.proposal-files{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;margin-top:7px}.proposal-files a{font-size:var(--ui-size-caption);color:var(--ui-primary)}.recipient-management{border-top:1px solid #e1e7ef;margin-top:18px;padding-top:18px}.recipient-management summary{cursor:pointer;font-weight:var(--ui-weight-display);color:var(--ui-primary)}.recipient-management__form{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.recipient-management__form select,.recipient-management__form input{width:100%;box-sizing:border-box;border:1px solid #ccd5e2;border-radius:var(--ui-radius-md);padding:11px;font:inherit}.recipient-management__form .wide{grid-column:1/-1}.recipient-management__actions{display:flex;justify-content:flex-end;align-items:center;gap:14px}.recipient-management__actions button{border:0;background:var(--ui-primary);color:white;padding:12px 16px;border-radius:var(--ui-radius-md);font-weight:var(--ui-weight-bold)}.send-pending-form{margin:0 0 14px;text-align:right}.send-pending-form button{border:1px solid #84adff;background:#f5f8ff;color:var(--ui-info);padding:10px 14px;border-radius:var(--ui-radius-md);font-weight:var(--ui-weight-bold)}
@media(max-width:720px){.tender-form-grid,.tender-item-fields,.supplier-picker,.new-supplier-box>div,.recipient-management__form{grid-template-columns:1fr}.wide,.recipient-management__form .wide{grid-column:auto}.spec-row{grid-template-columns:1fr 38px}.spec-row input:nth-child(2){grid-column:1/2}.spec-row button{grid-column:2;grid-row:1/3}.tender-create-actions{flex-direction:column-reverse}.tender-create-actions>*{width:100%}}

/* Табло аукциона в кабинете поставщика и строка этапа. */
.auction-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;
  margin:0 0 12px;padding:14px;border:1px solid var(--line);border-radius:var(--ui-radius-lg);background:#f8fafc}
.auction-board small{display:block;color:var(--muted);font-size:var(--ui-size-caption)}
.auction-board b{display:block;margin-top:4px;font-size:var(--ui-size-md)}
.auction-rule{margin:0 0 16px;color:var(--muted);line-height:1.45}
.stage-line{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 12px}
.stage-status{padding:3px 9px;border-radius:999px;background:#eef1f5;color:#475467;
  font-size:var(--ui-size-caption);font-weight:600;white-space:nowrap}
.stage-status--admitted{background:#e7f6ee;color:#05643a}
.stage-status--rejected{background:#fdeceb;color:#a5251c}
.stage-hint{margin:0 0 12px;color:var(--muted);line-height:1.45}
.tb-kind{display:inline-block;margin-top:6px;padding:3px 9px;border-radius:999px;
  background:rgba(9,22,53,.06);color:var(--navy,#091635);
  font-size:var(--ui-size-caption);font-weight:600}

/* Открытая процедура: предложения участников видны всем участникам. */
.rivals{margin:0 0 16px;padding:14px;border:1px solid var(--line);border-radius:var(--ui-radius-lg);
  background:#f8fafc}
.rivals-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px;
  margin-bottom:8px}
.rivals-head small{color:var(--muted)}
.rivals-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:9px 0;border-top:1px solid #e6eaf0}
.rivals-row.mine{font-weight:600}
.rivals-row.mine span:after{content:'';display:inline-block}
.rivals-empty{margin:0;color:var(--muted)}

/* --- Список тендеров -------------------------------------------------------
   Колонки сетки — minmax(0,1fr), а не просто 1fr. У 1fr нижняя граница равна
   самому длинному неразрывному содержимому, а строка «PR-… · название заявки»
   стоит в одну строку с многоточием. Колонка растягивалась под её полную
   длину: на телефоне карточка выходила шириной 1100px и обрезалась справа
   вместе с названием и сроком. */
.tender-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.tender-card{min-width:0}
.tender-card__top{gap:var(--ui-space-2)}
.tender-card__top>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Название тендера бывает длиной в целое ТЗ. В карточке — три строки, целиком
   оно на странице тендера и во всплывающей подсказке. */
.tender-card h2{display:-webkit-box;overflow:hidden;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.tender-card footer{gap:var(--ui-space-3)}
.tender-card footer b{text-align:right}
.tender-filter{margin-bottom:var(--ui-space-5)}
@media(max-width:900px){.tender-grid{grid-template-columns:minmax(0,1fr)}}

/* --- Заголовок страницы тендера ------------------------------------------ */
.tender-detail-title{min-width:0}
.tender-detail-head h1.ui-clamp{--ui-clamp-lines:2;font-size:var(--ui-size-xl);line-height:var(--ui-leading-tight)}
.tender-detail-head .ui-more{margin-bottom:var(--ui-space-2)}
@media(max-width:800px){.tender-detail-head h1.ui-clamp{--ui-clamp-lines:3;font-size:var(--ui-size-lg)}}

/* Доска тендеров: колонки заводит сам закупщик. Карточки и колонки берут вид у
   доски заявок (request_cards.css) — один вид доски на весь продукт. */
.tender-kanban{align-items:flex-start}
.tender-kanban .tender-card{display:block;padding:0}
.tender-kanban .request-card-link{display:block;padding:var(--ui-space-3)}
.tender-kanban .tender-card h3{margin:var(--ui-space-2) 0 var(--ui-space-1);font-size:var(--ui-size-body);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tender-kanban .tender-card p{margin:0;color:var(--ui-muted);font-size:var(--ui-size-sm)}
.tender-kanban-tools{display:flex;gap:2px;margin-left:4px;opacity:0;transition:opacity .15s}
.tender-kanban .request-kanban-header h2{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tender-kanban .request-kanban-count{margin-left:auto}
.request-kanban-column:hover .tender-kanban-tools,
.tender-kanban-tools:focus-within{opacity:1}
.tender-kanban-add{flex:0 0 auto;padding-top:var(--ui-space-5)}
.tender-kanban-add button{background:transparent;color:var(--ui-muted);border:1px dashed var(--ui-border-strong);
  border-radius:var(--ui-radius-md);padding:var(--ui-space-3) var(--ui-space-4);white-space:nowrap}
.tender-kanban-add button:hover{background:var(--ui-hover);color:var(--ui-text)}

/* Правка названия колонки на месте: поле встаёт ровно туда, где стоял текст. */
.tender-kanban-input{width:100%;max-width:220px;padding:4px 8px;border:1px solid var(--ui-primary);
  border-radius:var(--ui-radius-sm);background:var(--ui-surface);color:var(--ui-text);
  font:inherit;font-size:var(--ui-size-sm);font-weight:var(--ui-weight-medium)}
.tender-kanban-input:focus{outline:2px solid var(--ui-primary);outline-offset:1px}
.tender-kanban-add .tender-kanban-input{max-width:200px}

/* Доска тендеров — во всю ширину, без общей белой подложки, как «Бюджетирование»
   (просьба владельца 30.09.2026). Только список: страница тендера — прежняя. */
main:has(> .tender-page--board){max-width:none}
main > .tender-page--board{max-width:none;margin:0;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}
