/* Просчёты: заявки, этапы, расчёт, гео. */
.geo-preview {
    display: inline-block;
}
.geo-preview img {
    border: 0.09375rem solid var(--border);
    display: block;
    max-width: 100%;
    height: auto;
}
.geo-coords {
    display: block;
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    color: var(--text-secondary);
    margin-top: var(--space-xs);
}
/* ── Згорнута панель фільтрів (details/summary, без JS) ────────────────── */
.rev-actions .inspector-action > summary,
.lf-fold > summary,
.rq-q > summary { list-style: none; }
/* ── План работ ───────────────────────────────────────────────────────────
   Перечень, а не абзац. Номер печатает счётчик (моно, приглушённый), текст
   висит на своей колонке — длинный пункт переносится под текст, а не под
   номер. Ведущую нумерацию из текста автора срезает ReportRow::plan_items. */
.plan-list {
    list-style: none;
    counter-reset: plan;
    margin: 0;
    padding: 0;
}
.plan-item {
    counter-increment: plan;
    display: grid;
    grid-template-columns: 1.6rem 1fr;
    gap: 0.6rem;
    padding: 0.45rem 0;
    font-size: var(--fs-sm);
    line-height: 1.45;
    border-bottom: 0;
    background-image: var(--rule-dots);
    background-size: var(--rule-dots-size);
    background-repeat: repeat-x;
    background-position: bottom left;
}
.plan-item:last-child { border-bottom: 0; background-image: none; }
.plan-item::before {
    content: counter(plan, decimal-leading-zero);
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
    padding-top: 0.15rem;
}
.estimate-entry-form { display: flex; flex-direction: column; gap: var(--space-sm); margin-bottom: var(--space-md); }
/* p44-3: вопросы профиля заявки. Селекты на всю строку, флажки систем карточками в авто-колонки;
   длинные варианты («Apartment / Office (up to 1000 m²)») переносятся, строка не шире экрана. */
.estimate-profile { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: var(--space-sm); min-width: 0; }
.estimate-q { min-width: 0; }
.estimate-q-options { display: flex; flex-wrap: wrap; max-width: 100%; }
.estimate-q-options label { flex: 1 1 auto; min-width: 0; white-space: normal; text-align: center; box-shadow: 0 0.0625rem 0 var(--border); }
.estimate-gate { display: flex; align-items: flex-start; gap: var(--space-sm); min-width: 0; padding: var(--space-sm); border: 0.0625rem solid var(--border); background: var(--bg-surface); cursor: pointer; }
.estimate-gate input { flex: none; margin-top: 0.2rem; }
.estimate-gate-body { display: flex; flex-direction: column; min-width: 0; overflow-wrap: anywhere; }
.estimate-gate .pf-hint { margin: 0.2rem 0 0; }
.estimate-due { margin: 0; color: var(--text-primary); }
.geo-suggest {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(var(--space-xs) + 100% - 1.25rem);
    max-height: 18rem;
    overflow-y: auto;
    margin: 0;
    padding: 0.25rem 0;
    list-style: none;
    background: var(--bg-elevated);
    border: 0.0625rem solid var(--border);
    box-shadow: 0 0.0625rem 0.25rem rgba(0,0,0,0.3);
    z-index: 300;
}
.geo-suggest li[role="option"] { padding: 0.5rem 0.75rem; cursor: pointer; line-height: 1.3; }
.geo-suggest .geo-sub { display: block; font-size: var(--fs-xs); color: var(--text-secondary); }
.geo-suggest .geo-group {
    padding: 0.375rem 0.75rem 0.125rem;
    font-size: var(--micro-size, 0.6875rem);
    letter-spacing: 0;
    color: var(--text-muted);
}
.estimate-variant-options { display: flex; width: 100%; max-width: 36rem; }
.estimate-variant-options label { flex: 1 1 0; text-align: center; padding-inline: 0.5rem; white-space: normal; }
/* Панель етапів на /project/{id} — секція всередині наявної po-section. */
.estimate-stages { display: flex; flex-direction: column; gap: var(--space-md); }
.estimate-stage { border: 0.09375rem solid var(--border); padding: var(--space-md); background: var(--bg-surface); }
.estimate-stage--accepted { border-color: var(--success); }
.estimate-stage--overdue,
.toast.toast-error,
.role-chip:hover,
.zone-rule.rule-critical { border-color: var(--secondary); }
.estimate-stage-skip { margin-top: var(--space-sm); }
/* 09.10 (проверка mcp-browser): «Назначить / срок» был 21 px высотой и прилипал к кнопке над ним. */
.estimate-stage-assign { margin-top: var(--space-sm); }
.estimate-stage-assign > summary { min-height: var(--tap-target); padding-block: max(0rem, calc((var(--tap-target) - 1lh) / 2)); box-sizing: border-box; cursor: pointer; }
.estimate-stage-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); margin-bottom: 0.35rem; }
.estimate-stage-meta { display: flex; flex-wrap: wrap; gap: var(--space-sm); font-size: var(--fs-xs); color: var(--text-secondary); margin-bottom: 0.35rem; }
.estimate-stage-due--late { color: var(--secondary); font-weight: 700; }
.estimate-stage-comment { font-size: var(--fs-xs); color: var(--text-secondary); background: var(--bg-elevated); padding: 0.5rem 0.6rem; margin-bottom: var(--space-sm); }
.estimate-stage-rule { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-sm); font-size: var(--fs-xs); margin-bottom: var(--space-sm); }
.estimate-stage-rule-label { color: var(--text-secondary); }
.estimate-stage-rule-link { color: var(--primary); text-decoration: underline; }
.estimate-stage-qtag { min-width: 0; text-align: left; }
.estimate-folder-list { list-style: none; display: flex; flex-wrap: wrap; gap: var(--space-xs); margin: 0; padding: 0; width: 100%; }
.estimate-folder-item { font-size: var(--fs-xs); border: 0.09375rem solid var(--border); color: var(--text-secondary); }
.estimate-folder-item--done { border-color: var(--success); color: var(--success); }
/* Ф4: підпапка — клікабельна плитка (ім'я + лічильник), не голий бейдж. */
.estimate-folder-link { display: flex; align-items: center; gap: 0.4rem; padding: 0.15rem 0.5rem; color: inherit; text-decoration: none; }
.estimate-folder-req { color: var(--secondary); margin-left: 0.15rem; }
.estimate-assign-form { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin-top: var(--space-xs); }
.estimate-review-form { display: inline-block; margin-top: var(--space-sm); margin-right: var(--space-sm); }
.estimate-return { display: inline-block; margin-top: var(--space-sm); }
.estimate-return form { display: flex; flex-direction: column; gap: var(--space-xs); margin-top: var(--space-xs); min-width: 16rem; }
.badge-stage-pending { --pill-color: var(--text-muted); }
.badge-stage-active { --pill-color: var(--primary); }
.badge-stage-submitted { --pill-color: var(--accent); }
.badge-stage-accepted { --pill-color: var(--success); }
.badge-stage-returned { --pill-color: var(--secondary); }
@media (min-width: 48em) {
    /* Десктоп: кнопка «Создать заявку» и мастер анкеты не растягиваются на всю
       ширину окна (1440 px под одно слово — тот же дефект, что был у «Добавить»;
       Артём, 22.09.2026). Форма заявки держит кнопку по своему левому краю, а
       панель анкеты с её полем и «Далее» уходит в читаемую колонку 40rem. На
       телефоне всё как было: там полная ширина и есть норма. */
    .estimate-entry-form > .btn-primary { align-self: flex-start; width: auto; }
}
.fb-hub-num,
.estimate-folder-count,
.syn-click .syn-at { font-family: var(--font-mono); color: var(--text-muted); }
.fb-hub-count { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--text-secondary); }
.fb-tag { font-family: var(--font-mono); font-size: var(--micro-size); letter-spacing: 0; padding: 0.2rem 0.5rem; border: 0.0625rem solid var(--border); color: var(--text-secondary); min-width: 7rem; text-align: center; }
.fb-tag--done { color: var(--success); border-color: var(--success); }
.fb-tag--in_progress,
.wizard-extra-toggle:hover,
.lift-stop.active,
.cpe-add-in-group:hover,
.fb-note-btn.has-note { color: var(--primary); border-color: var(--primary); }
.fb-tag--skipped,
.fm-chip-preset .fm-chip--other { color: var(--text-muted); border-style: dashed; }
.fb-ctl > .form-select,
.fb-ctl > .form-input,
.note-add textarea,
.note-add .chat-reply-input { flex: 1 1 auto; }
.fb-ok { color: var(--success); visibility: hidden; font-size: var(--fs-sm); }
.fb-note-btn { background: transparent; border: 0.0625rem solid var(--border); color: var(--text-muted); width: 2rem; height: 2rem; cursor: pointer; }
.fb-keys { font-family: var(--font-mono); font-size: var(--micro-size); color: var(--text-muted); letter-spacing: 0; }
/* Підказка з Excel під питанням (NN/g: допомога зовні поля, завжди видима)
   і живий рядок точності/строку під «стадією проєкту». */
.fb-qwrap { min-width: 0; }
.fb-hint { font-size: var(--fs-xs); color: var(--text-secondary); margin-top: 0.2rem; line-height: 1.35; }
.fb-live { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--primary); margin-top: 0.3rem; }
.fb-gate-plaque { display: none; padding: var(--space-md); border-top: 0.0625rem dashed var(--border); color: var(--text-secondary); font-size: var(--fs-sm); }
.fb-mode { background: transparent; border: 0.0625rem solid var(--border); color: var(--text-secondary); font-family: var(--font-mono); font-size: var(--micro-size); letter-spacing: 0; padding: 0.2rem 0.5rem; cursor: pointer; margin-left: var(--space-sm); }
.fb-step-bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); padding: var(--space-sm) 0; position: sticky; bottom: 0; background: var(--bg-base); }
.fb-step-pos { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--text-secondary); }
/* Перевірте відповіді (GOV.UK check answers). */
.fb-review-title { font-size: var(--fs-lg); margin: var(--space-md) 0 var(--space-xs); }
.fb-review-intro { color: var(--text-secondary); margin: 0 0 var(--space-md); font-size: var(--fs-sm); }
.fb-review-group { border: 0.0625rem solid var(--border); background: var(--bg-surface); margin-bottom: var(--space-md); }
.fb-review-edit { font-family: var(--font-mono); font-size: var(--micro-size); letter-spacing: 0; color: var(--primary); text-decoration: none; }
.fb-review-list { margin: 0; }
.fb-review-row { display: grid; grid-template-columns: minmax(12rem, 1.4fr) minmax(8rem, 1fr); gap: var(--space-sm) var(--space-md); padding: 0.5rem var(--space-md); border-top: 0.0625rem solid var(--border); font-size: var(--fs-sm); }
.fb-review-note { display: block; color: var(--text-secondary); font-size: var(--fs-xs); }
.fb-review-skipped { margin: 0; padding: 0.6rem var(--space-md); color: var(--text-muted); border-top: 0.0625rem dashed var(--border); font-size: var(--fs-sm); }
.fb-review-missing { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--secondary); }
.fb-submitted { font-size: var(--fs-sm); color: var(--text-secondary); margin: 0 0 var(--space-sm); }
@media (max-width: 48em) {
    /* Пізніше правило .fb-row вище перебивало мобільну колонку; повторюємо її тут. */
    .fb-row { grid-template-columns: 1fr; }
    .fb-hub-link { grid-template-columns: 2rem 1fr; }
    .fb-keys,
    .cpe-rule--head { display: none; }
    .fb-review-row { grid-template-columns: 1fr; gap: 0.2rem; }
}
h1, h2, h3, .fb-title, .po-header h1, .site-group-title, .section-title, .fb-review-title {
    font-family: var(--font-display); font-weight: 700; letter-spacing: 0; text-transform: none;
}
.po-header h1 { font-size: clamp(1.5rem, 3.4vw, 2.25rem); text-transform: uppercase; line-height: 1.05; }
.fb-title { font-size: clamp(1.375rem, 3vw, 2rem); text-transform: uppercase; line-height: 1.05; }
.section-title { font-size: var(--fs-md); font-weight: 600; color: var(--text-primary); }
/* Шаблонні ярлики: моно-капс з трекінгом стає звичайним підписом. */
.fb-sub,
.fb-chip,
.fb-keys,
.fb-hub-count,
.fb-hub-num,
.fb-group-count,
.fb-tag,
.fb-live,
.fb-mode,
.fb-step-pos,
.tb-col-head,
.tb-col-n,
.tb-card-meta,
.tb-move,
.estimate-stage-qtag,
.action-label,
.badge,
.btn,
.site-tile-name,
.site-tile-count,
.po-site-address,
.po-header .section-title,
.po-progress-label,
.po-progress-pct,
.po-progress-sub,
.fm-tab,
.fb-review-edit,
.fb-review-missing,
.gantt-pct,
.gph-bub,
.gph-pct,
.gph-n,
.cpe-rules-title,
.cpe-rule--head,
.fb-group-sum .fb-group-title {
    font-family: var(--font-sans); text-transform: none; letter-spacing: 0;
}
.fb-sub,
.fb-chip,
.fb-hub-count,
.fb-group-count,
.tb-card-meta,
.po-site-address,
.po-progress-sub,
.gantt-pct,
.att-name,
.assignment-meta,
.assignment-deadline,
.footer { font-size: var(--fs-xs); }
.fb-group-sum .fb-group-title, .tb-col-head { font-family: var(--font-display); font-weight: 600; font-size: var(--fs-md); }
.fb-tag { font-size: var(--fs-xs); padding: 0.2rem 0.5rem; min-width: 0; }
.po-header .section-title { font-size: var(--fs-sm); color: var(--text-secondary); font-family: var(--font-sans); font-weight: 400; }
.site-tile-name,
.estimate-stage-name,
.fb-hub-name { font-family: var(--font-display); font-weight: 600; font-size: var(--fs-lg); }
.site-tile-count { border-radius: 0; background: var(--text-primary); color: var(--bg-base); font-size: var(--fs-xs); font-weight: 600; min-width: 1.75rem; height: 1.75rem; }
.estimate-stage { border: 0; border-top: 0.0625rem solid var(--border); background: transparent; padding: var(--space-md) 0; }
/* Этап анкеты под её кнопкой на карточке заявки: продолжение блока, без своей линии сверху. */
.rq-q-stage { border-top: 0; padding: 0 0 var(--space-sm); }
.estimate-stage:first-of-type { border-top: 0; }
/* Стрічку небезпеки (смужка 6 px зліва) прибрано 29.09 — це та сама кольорова кромка;
   прострочку несе дата строку (.estimate-stage-due--late / .tb-due--late) і рамка. */
.estimate-stage-qtag { border: 0; padding: 0; text-align: left; }
/* ── Дошка задач: колонки як стовпці таблиці, картки — рядки з рейкою ── */
/* ── Анкета: хаб рядками, статус словом без рамки, чіп без коробки ── */
.tb-col,
.fb-hub { border: 0; background: transparent; }
.tb-col-head { border-bottom: 0.0625rem solid var(--text-primary); padding: 0.55rem 0; }
.tb-col-body { padding: 0; gap: 0; }
.tb-card { border: 0; border-bottom: 0.0625rem solid var(--border); background: var(--bg-surface); padding: 0.7rem 0.75rem; position: relative; }
.tb-card-title,
.assignment-title { font-weight: 500; font-size: var(--fs-sm); }
.tb-move { font-size: var(--fs-xs); padding: 0.35rem 0.6rem; border-color: var(--text-primary); color: var(--text-primary); min-height: 2.25rem; }
.tb-empty { text-align: left; padding: var(--space-md) 0; font-size: var(--fs-sm); }
.fb-hub-link { padding: 0.9rem 0; }
.fb-tag { border: 0; padding: 0; color: var(--text-secondary); }
.fb-tag--done { color: var(--success); }
.fb-tag--in_progress { color: var(--text-primary); }
.fb-group { border: 0; }
.fb-group-sum { border-bottom: 0.0625rem solid var(--text-primary); padding-left: 0; padding-right: 0; background: transparent; }
.fb-row { padding-left: 0; padding-right: 0; scroll-margin-top: var(--space-lg); }
.fb-chip { border: 0; padding: 0; }
/* ЛИСТ, продовження: хром і другорядне, що лишалось у моно-капсі. */
.nav-link,
.nav-label,
.footer,
.footer a,
.fm-density-btn,
.util-title,
.util-link,
.po-section-title,
.site-group-title,
.assignment-meta,
.assignment-header,
.assignment-priority,
.assignment-deadline,
.assignment-title,
.po-role,
.kpi-label,
.rep-meta,
.lift-stop {
    font-family: var(--font-sans); text-transform: none; letter-spacing: 0;
}
.po-section-title { font-family: var(--font-display); font-weight: 600; font-size: var(--fs-lg); }
.site-group-title { font-size: var(--fs-lg); }
.site-tile-hint { display: block; font-family: var(--font-sans); font-weight: 400; font-size: var(--fs-xs); color: var(--text-secondary); margin-top: 0.15rem; white-space: normal; overflow: visible; text-overflow: clip; }
.kpi-label { font-family: var(--font-sans); text-transform: none; letter-spacing: 0; font-size: var(--fs-xs); color: var(--text-secondary); }
.kpi-value { font-family: var(--font-display); font-weight: 700; }
.util-title { font-family: var(--font-display); font-weight: 600; font-size: var(--fs-md); text-transform: none; letter-spacing: 0; color: var(--text-primary); }
.util-link { font-family: var(--font-sans); text-transform: none; letter-spacing: 0; font-size: var(--fs-sm); }
.lift-stop { font-family: var(--font-sans); letter-spacing: 0; font-size: var(--fs-xs); }
/* Футер і підказка онбордингу теж без моно-капсу. */
.footer-logout,
.footer a { font-family: var(--font-sans); text-transform: none; letter-spacing: 0; font-size: var(--fs-xs); }
.footer-logout-btn, .footer-pwa-btn { font-size: var(--fs-xs); }
a,
.estimate-stage-rule-link,
.fb-review-edit,
.po-site-address:hover,
.fm-board-card-link:hover,
.wk-daylink:hover { color: var(--link); }
.tb-due--late, .estimate-stage-due--late, .fb-review-missing, .fb-chip.is-err, .fb-review-row.is-missing dd a, .assignment-deadline.is-late { color: var(--hazard-text); }
.fb-tag--done,
.fb-chip.is-ok,
.estimate-stage-qtag.fb-tag--done,
.po-progress-pct { color: var(--success-text); }
@media (pointer: coarse) {
    .btn, .tb-move, .fb-mode, .fb-note-btn, .cpe-rule-add, .tb-card-title, .fb-hub-link, .site-tile-name { min-height: 2.75rem; }
    .fb-note-btn { width: 2.75rem; height: 2.75rem; flex: 0 0 2.75rem; }
}
.tb-cnt { display: inline-flex; align-items: center; gap: 0.2rem; }
/* Помаранч = сигнал. Лінії секцій, активний пункт меню, «+» на плитках — нейтральні. */
.section-title { color: var(--text-primary); }
.badge-open, .badge-in_progress { --pill-color: var(--text-secondary); }
.badge-submitted { --pill-color: var(--link); }
.badge-accepted, .badge-completed { --pill-color: var(--success-text); }
.badge-blocked, .badge-delayed, .badge-rejected { --pill-color: var(--hazard-text); }
/* Один варіант заявки (після вимкнення construction/mep_construction) не
   тягнеться на всю ширину як перемикач з однієї кнопки: сегмент по вмісту
   (Артьом 25.09.2026). Стає перемикачем знову, щойно варіантів два. */
.estimate-variant-options:has(input:only-of-type) { display: inline-flex; width: auto; }
.estimate-variant-options:has(input:only-of-type) label { flex: 0 0 auto; padding-inline: var(--space-lg); }
/* Поле, фото й кнопка — один правий край (29.09: кнопка вилазила на 4 px, geometry.js «edge»). */
.ent-form-row > .btn { margin: 0; width: 100%; box-sizing: border-box; }
/* Анкета: файли до пункту-документа (29.09). Видно на «так» або коли файли вже є.
   Без кольорових кромок/крапок: список рядками, стан — текстом. */
.fb-docs { display: none; grid-column: 1 / -1; gap: var(--space-xs, 0.4rem); margin-top: var(--space-xs, 0.4rem); }
@supports not selector(:has(*)) {
    /* Браузер без :has: поле файла видно всегда (без JS-переключателя оно не должно пропасть). */
    .fb-docs { display: grid; grid-template-columns: minmax(0, 1fr); }
}
.fb-doc-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.25rem; }
.fb-doc-add { margin: 0; }
@media (max-width: 48em) {
    /* Телефон: номер | назва, під назвою в один рядок «22/22 · Completed»,
       без трьох рядків із порожнечами між ними. 08.10: межа 48em, як у правила вище, інакше рівно на 768 px
       змішувалися обидва і рядок розвалювався на три. */
    .fb-hub-link { grid-template-columns: 1.5rem minmax(0, 1fr) auto; grid-template-areas: "num name name" ". count tag"; gap: 0.25rem var(--space-sm); }
    .fb-hub-num { grid-area: num; }
    .fb-hub-name { grid-area: name; }
    .fb-hub-count { grid-area: count; justify-self: start; }
    .fb-tag { grid-area: tag; justify-self: end; min-width: 0; }
}
/* p15 (30.09): дошка «График» — фільтри в ряд, картка з місцем на плані. */
.tb-src { display: flex; gap: 0.5rem; margin: 0 0 var(--space-sm); }
.tb-filters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.5rem 0.75rem; margin: 0 0 var(--space-sm); }
@media (min-width: 64em) {
    .tb-filters { grid-template-columns: repeat(4, minmax(0, 1fr)) minmax(0, 1.4fr); }
}
.rq-search > .btn { flex: 0 0 auto; min-height: 2.75rem; }
.rq-search .form-input, .rq-search .form-select { width: 100%; min-height: 2.75rem; }
.rq-tabs ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-xs); min-width: 0; }
.rq-tabs a:hover { background: var(--bg-elevated); }
.rq-tabs a[aria-current="page"] { background: var(--primary); border-color: var(--primary); color: var(--white); }
.rq-tabs .rq-count { margin-left: 0; font-size: var(--fs-lg); font-weight: 600; }
.rq-inline .form-select { flex: 1 1 auto; width: 100%; min-height: 2.75rem; }
.rq-inline .btn { min-height: 2.75rem; flex: 0 0 auto; }
@media (min-width: 64em) {
    .rq-cell::before { content: none !important; }
    .rq-take[open] > summary { margin-bottom: var(--space-xs); }
    .rq-inline .form-select,
    .rq-inline .btn { min-height: 2.25rem; }
}
.rq-head h1 { margin: 0 0 0.25rem; overflow-wrap: anywhere; }
/* 09.10: на карточке заявки адрес строкой под названием на любой ширине. В углу абсолютом он уезжал под верхнюю панель. */
.rq-head .po-site-address { position: static; display: block; max-width: 100%; text-align: left; white-space: normal; margin: 0 0 var(--space-xs); }
.rq-facts div { display: flex; gap: 0.35rem; min-width: 0; }
.rq-facts dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.rq-card-tabs a[aria-current="page"] { color: var(--text-primary); font-weight: 700; background: var(--bg-elevated); }
.rq-actions form { display: flex; flex-wrap: wrap; gap: var(--space-xs); min-width: 0; }
.rq-actions summary { cursor: pointer; min-height: 2.75rem; display: inline-flex; align-items: center; }
.rq-actions .form-select { min-height: 2.75rem; min-width: 0; }
.rq-folders .rq-count { margin-left: 0; }
.estimate-entry-details > summary { cursor: pointer; display: inline-flex; align-items: center; min-height: 2.75rem; }
.estimate-entry-details[open] > summary { margin-bottom: var(--space-sm); }
.rq-pair a[aria-current="page"] { color: var(--text-primary); text-decoration: underline; text-underline-offset: 0.25em; }
.rq-q > .rq-q-btn { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 0.125rem; width: 100%; box-sizing: border-box; min-height: max(var(--tap-target), 3.5rem); padding: var(--space-sm) var(--space-md); cursor: pointer; text-align: left; }
.rq-q[open] > .rq-q-btn { background: var(--bg-elevated); color: var(--text-primary); }
.rq-q-panel .fb { padding: 0; min-width: 0; max-width: none; }
/* 08.10: внутри заявки название объекта и счётчик уже есть в шапке страницы и на кнопке «Анкета» — второй раз не показываем. */
.rq-q-panel .fb-title, .rq-q-panel .fb-sub { display: none; }
.rq-q-panel .fb-head, .rq-q-panel .fb-unans { padding-inline: var(--space-md); }
.rq-q > .rq-q-btn:focus:not(:focus-visible) { outline: none; box-shadow: none; }
.rq-calc-act .btn, .rq-calc-act .rq-calc-inline .form-input { box-sizing: border-box; min-height: max(var(--tap-target), 2.75rem); height: max(var(--tap-target), 2.75rem); }
.rq-calc-act .rq-calc-close { flex: 1 1 14rem; flex-wrap: nowrap; }
.rq-calc-act .rq-calc-close .form-input { flex: 1 1 6rem; width: auto; }
.rq-calc-inline .form-select, .rq-calc-inline .form-input { min-width: 0; width: 100%; min-height: var(--tap-target); max-width: 100%; }
.rq-calc-pick:focus-within { outline: 0.125rem solid var(--link, var(--primary)); outline-offset: 0.125rem; }
.rq-calc-msg[hidden] { display: none; }
.rq-calc-row.is-sending { opacity: 0.85; }
.rq-calc-del > summary { list-style: none; cursor: pointer; min-height: var(--tap-target); display: inline-flex; align-items: center; padding: 0 var(--space-sm); font-size: var(--fs-sm); color: var(--text-secondary); text-decoration: underline; }
.rq-calc-del > summary::-webkit-details-marker { display: none; }
.rq-calc-del[open] > summary { display: none; }
.rq-calc-amount-edit > summary { cursor: pointer; min-height: var(--tap-target); display: flex; align-items: center; }
@media (min-width: 48em) {
    .rq-calc-inline .form-select, .rq-calc-inline .form-input { width: auto; max-width: 100%; }
    .rq-calc-act .rq-calc-close { flex: 0 1 auto; }
    .rq-calc-act .rq-calc-close .form-input { flex: 0 1 9rem; }
}
.fb-group-left[hidden] { display: none; }
.fp-search .form-input { width: 100%; min-width: 0; min-height: 2.75rem; }
.fp-search > .btn { flex: 0 0 auto; min-height: 2.75rem; }
/* 20.10 Ярослава (просчёт п.3): срок просчёта крупно, первым фактом шапки. Число, а не плашка: без рамок и цвета,
   просрочка — словом (.rq-late). */
.rq-facts .rq-fact-due { flex-basis: 100%; align-items: baseline; }
.rq-facts .rq-due-big { font-size: var(--fs-2xl); font-weight: 700; line-height: 1.1; color: var(--text-primary); }
.rq-facts .rq-due-big .rq-late { font-size: var(--fs-md); }
/* п.2: разделы систем, не выбранных для просчёта, — одной строкой под списком разделов. */
.fb-hub-off { margin: var(--space-sm) 0 0; font-size: var(--fs-xs); color: var(--text-secondary); overflow-wrap: anywhere; }
/* 20.10: блок этапа анкеты без содержимого (срок теперь в шапке) не занимает места. */
.rq-q-stage:not(:has(form, details, a, .estimate-stage-assignee, .estimate-stage-due, .estimate-stage-comment)) { display: none; }
