/* ══════════════════════════════════════════════════════════════
   ART COMFORT CRM — Project Detail Page
   Sandbox-quality UI. Tokens from themes.css (copper/slate/espresso).
   Source: sandbox/project-detail.html CSS (1:1 structure)
   ══════════════════════════════════════════════════════════════ */

/* NOTE: :root tokens removed — provided by themes.css */
/* NOTE: Reset removed — provided by base.css */
/* NOTE: .header → .project-header (avoid conflict with app header) */
/* NOTE: var(--font) → var(--font-ui), var(--font-data) stays (JetBrains Mono in themes.css) */

/* ══════ LAYOUT — fixed header, scrollable right panel ══════ */
/* Убрать padding page-content когда project-detail активен */
#page-content:has(.project-detail) {
  padding: 0 !important; margin: 0 !important; overflow: hidden !important;
}
.project-detail {
  display: flex; flex-direction: column; height: 100vh; overflow: hidden;
  /* [V14-POLISH] Base 14px → min readable .79rem=11px. Override для читаемости */
  font-size: 14px;
}
.project-detail__header-zone {
  flex-shrink: 0; /* шапка не сжимается */
}

/* ══════ HEADER ══════ */
.project-header {
  display: flex; align-items: center; height: 52px; min-height: 52px;
  padding: 0 20px; gap: 16px;
  transition: all 300ms var(--ease);
}
.project-header__left { display: flex; align-items: center; gap: 10px; }
.project-header__id { font-size: 1rem; font-weight: 700; }
.project-header__client { font-weight: 600; font-size: .85rem; }
.project-header__badge {
  font-size: .6rem; padding: 2px 8px; border-radius: 20px; font-weight: 600;
  text-transform: uppercase; letter-spacing: .5px;
}
.project-header__center {
  display: flex; align-items: center; gap: 10px;
  padding-left: 16px; font-size: .82rem;
}
.project-header__designer { white-space: nowrap; }
.project-header__phone { text-decoration: none; font-weight: 500; white-space: nowrap; }
.project-header__phone:hover { text-decoration: underline; }
.project-header__actions { display: flex; gap: 6px; margin-left: auto; align-items: center; }

/* Header — dark warm */
.project-header {
  background: var(--sidebar-bg, #2C2420); border-bottom: none;
  box-shadow: 0 2px 8px rgba(44,36,32,.15);
}
.project-header .project-header__id { color: #D4A24E; }
.project-header .project-header__client { color: #F5F0E8; }
.project-header .project-header__badge { background: rgba(212,162,78,.15); color: #D4A24E; }
.project-header .project-header__center { border-left: 1px solid rgba(255,255,255,.1); }
.project-header .project-header__designer { color: #A89A8A; }
.project-header .project-header__designer span { color: #7A6B5A; }
.project-header .project-header__phone { color: #D4A24E; }
.project-header .btn { color: #A89A8A; background: transparent; border-color: rgba(255,255,255,.1); }
.project-header .btn:hover { color: #F5F0E8; background: rgba(255,255,255,.06); }
.project-header .btn--primary { background: var(--accent); color: var(--text-on-accent); border-color: var(--accent); }
.project-header .btn--ghost { border-color: transparent; }

/* Status bar — fixed below header */
.status-bar {
  display: flex; align-items: center; gap: 14px; padding: 5px 20px;
  background: var(--bg-secondary); border-bottom: 1px solid var(--border);
  font-size: .82rem; flex-shrink: 0;
}
.status-bar__item { display: flex; align-items: center; gap: 5px; }
.status-bar__label { color: var(--text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: .3px; font-size: .82rem; }
.status-bar__pills { display: flex; gap: 2px; }
.status-bar__pill {
  padding: 3px 10px; font-size: .82rem; font-weight: 600; font-family: var(--font-ui);
  border: 1px solid var(--border); border-radius: 20px;
  background: var(--surface); color: var(--text-muted); cursor: pointer;
  transition: all 150ms var(--ease);
}
.status-bar__pill:hover { border-color: var(--accent); color: var(--accent); }
.status-bar__pill.active {
  background: var(--accent-subtle); color: var(--text); border-color: var(--accent);
  font-weight: 700;
}

/* Data font for technical values */
.data-font { font-family: var(--font-data); }

/* Section locked state */
.section--locked { opacity: 0.5; pointer-events: none; position: relative; }
.section--locked::after {
  content: 'Сначала проверьте данные из PDF';
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  background: rgba(247,243,238,.7); font-size: .82rem; font-weight: 600; color: var(--text-muted);
  border-radius: var(--radius-lg); z-index: 2;
}

/* Drag drop indicator — thick copper line */
.section--drag-over-top { box-shadow: 0 -3px 0 0 var(--accent), var(--shadow-sm); margin-top: 4px; }
.section--drag-over-bottom { box-shadow: 0 3px 0 0 var(--accent), var(--shadow-sm); margin-bottom: 4px; }

/* Buttons (project-detail scope) */
.project-detail .btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 4px;
  padding: 6px 12px; font-size: .78rem; font-weight: 600; font-family: var(--font-ui);
  border: 1px solid var(--border); border-radius: var(--radius); cursor: pointer;
  background: var(--surface); color: var(--text-secondary);
  transition: all 150ms var(--ease);
}
.project-detail .btn:hover { border-color: var(--border-strong); color: var(--text); background: var(--surface-hover); }
.project-detail .btn--primary {
  background: var(--accent); color: var(--text-on-accent); border-color: var(--accent);
  box-shadow: 0 1px 3px rgba(184,115,51,.2);
}
.project-detail .btn--primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); box-shadow: 0 2px 6px rgba(184,115,51,.25); }
.project-detail .btn--ghost { background: transparent; border-color: transparent; }
.project-detail .btn--ghost:hover { background: var(--bg-secondary); border-color: transparent; }
.project-detail .btn--sm { padding: 4px 10px; font-size: .82rem; }

/* ══════ MAIN GRID ══════ */
.project-main {
  display: grid; grid-template-columns: 62fr 38fr; gap: 16px;
  flex: 1; padding: 10px 16px; min-height: 0; overflow: hidden;
}

/* ══════ PDF PANEL ══════ */
.pdf-panel {
  display: flex; flex-direction: column; height: 100%; overflow: hidden;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
/* Section chips (Level 1) + scroll arrows */
/* [2026-03-27][CLX][V7-NAV60] Обёртка с стрелками для section chips */
.pdf-sections-wrap {
  flex-shrink: 0; display: flex; align-items: center;
  border-bottom: 1px solid var(--border);
}
.pdf-sections-wrap:has(.pdf-sections:empty) { display: none; }
.pdf-sections {
  flex: 1; display: flex; gap: 4px;
  padding: 6px 4px;
  overflow-x: auto; overflow-y: hidden;
  scrollbar-width: none; min-width: 0;
}
.pdf-sections:empty { display: none; }
.pdf-sections::-webkit-scrollbar { display: none; }
/* Scroll arrows — compact, visible only on hover */
.scroll-arrow {
  flex-shrink: 0; width: 20px; height: 24px; display: flex;
  align-items: center; justify-content: center;
  border: none; background: transparent; cursor: pointer;
  font-size: .6rem; color: var(--text-muted);
  opacity: 0.4; transition: opacity 150ms, color 150ms;
}
.scroll-arrow:hover { opacity: 1; color: var(--accent); }
.pdf-section-chip {
  flex-shrink: 0; padding: 3px 8px; font-size: .79rem; font-weight: 500;
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--surface); cursor: pointer; white-space: nowrap;
  font-family: var(--font-ui); color: var(--text-secondary);
  transition: all 120ms var(--ease); line-height: 1.3;
}
.pdf-section-chip.active {
  background: var(--accent); color: var(--text-on-accent); border-color: var(--accent);
}
.pdf-section-chip:hover:not(.active) { border-color: var(--accent); color: var(--accent); }
.pdf-section-chip__range {
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: .79rem; opacity: .7;
}

/* Page toolbar (Level 2) */
.pdf-toolbar {
  flex-shrink: 0; display: flex; align-items: center; gap: 6px;
  padding: 6px 10px; border-bottom: 1px solid var(--border); font-size: .8rem;
}
.pdf-nav {
  display: flex; align-items: center; gap: 4px; flex-shrink: 0;
}
.pdf-page-info {
  font-size: .82rem; font-weight: 600; white-space: nowrap;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  color: var(--text-secondary);
}
.pdf-toolbar .page-btns {
  display: flex; gap: 2px; flex: 1 1 auto; overflow-x: auto; overflow-y: hidden;
  min-width: 0; scrollbar-width: none;
}
.pdf-toolbar .page-btns::-webkit-scrollbar { display: none; }
.pdf-page-btn {
  flex-shrink: 0; padding: 2px 0; font-size: .79rem;
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--surface); cursor: pointer;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  min-width: 20px; width: 20px; text-align: center; line-height: 1.3;
  color: var(--text-muted); transition: all 120ms var(--ease);
}
.pdf-page-btn.active {
  background: var(--accent); color: var(--text-on-accent); border-color: var(--accent);
}
/* [2026-03-27][CLX][V7-HIGHLIGHT] Усиленный контраст для страниц текущей секции */
.pdf-page-btn.in-section {
  background: rgba(184,115,51,.18); border-color: rgba(184,115,51,.45);
  color: var(--accent); font-weight: 600;
}
.pdf-page-btn:hover:not(.active) { border-color: var(--accent); color: var(--accent); }
.zoom-controls {
  display: flex; align-items: center; gap: 4px; margin-left: auto; flex-shrink: 0;
}
.pdf-zoom-info {
  font-size: .79rem; font-weight: 500; white-space: nowrap; min-width: 30px; text-align: center;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  color: var(--text-secondary);
}
.pdf-canvas-wrap {
  flex: 1; overflow: hidden; min-height: 0;
  display: flex; align-items: flex-start; justify-content: center; padding: 0;
  background: var(--bg-secondary); cursor: default; position: relative;
}
.pdf-canvas-wrap.dragging { cursor: grabbing; }
.pdf-canvas-wrap.zoomed {
  overflow: auto; cursor: grab;
  justify-content: flex-start; align-items: flex-start;
}
#pdf-dropzone {
  display: flex; align-items: center; justify-content: center;
}
.pdf-canvas-wrap.zoomed #pdf-dropzone {
  justify-content: flex-start; align-items: flex-start;
}
.pdf-canvas-wrap .mock-pdf {
  width: 100%; max-width: 900px; aspect-ratio: 1.414;
  display: flex; align-items: center; justify-content: center;
  background: var(--surface); border: 2px dashed var(--border); border-radius: var(--radius);
  color: var(--text-muted); font-size: 1rem; cursor: pointer;
  transition: border-color 200ms, box-shadow 200ms;
}
.pdf-canvas-wrap .mock-pdf:hover { border-color: var(--accent); box-shadow: var(--shadow-md); }

/* ══════ RIGHT PANEL ══════ */
.panel {
  display: flex; flex-direction: column; gap: 10px;
  height: 100%; overflow-y: auto; min-height: 0; padding-right: 4px;
  scrollbar-width: thin; scrollbar-color: var(--border) transparent;
}
.panel::-webkit-scrollbar { width: 5px; }
.panel::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }

/* ══════ STAT CARDS ══════ */
.stats {
  display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; flex-shrink: 0;
  position: sticky; top: 0; z-index: 5;
  background: var(--bg, #F7F3EE); padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}
.stat {
  display: flex; align-items: center; gap: 10px;
  padding: 14px; border-radius: var(--radius-lg);
  background: var(--surface); border: 1px solid var(--border);
  box-shadow: var(--shadow-sm);
  transition: transform 200ms var(--ease), box-shadow 200ms var(--ease);
}
.stat:hover { transform: translateY(-1px); box-shadow: var(--shadow-md); }
.stat__icon {
  width: 36px; height: 36px; border-radius: var(--radius);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.stat__icon svg { width: 18px; height: 18px; }
.stat--rooms .stat__icon { background: var(--accent-light); color: var(--accent); }
.stat--power .stat__icon { background: var(--warning-light); color: var(--warning); }
.stat--total .stat__icon { background: var(--success-light); color: var(--success); }
.stat__val { font-size: 1.25rem; font-weight: 700; line-height: 1.2; letter-spacing: -.02em; font-family: var(--font-data); }
.stat--rooms .stat__val { color: var(--accent); }
.stat--power .stat__val { color: var(--warning); }
.stat--total .stat__val { color: var(--success); }
.stat__label { font-size: .82rem; text-transform: uppercase; letter-spacing: .8px; font-weight: 600; color: var(--text-muted); margin-top: 1px; }

/* ══════ WARNING ══════ */
.warning {
  display: flex; align-items: center; gap: 10px; flex-shrink: 0;
  padding: 10px 14px; border-radius: var(--radius);
  background: var(--error-light); border: 1px solid rgba(184,92,92,.15);
  font-size: .8rem; color: var(--error);
}
.warning__icon {
  width: 28px; height: 28px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
  background: rgba(184,92,92,.1); font-size: .8rem;
}

/* ══════ SECTION ══════ */
.section {
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  transition: box-shadow 200ms var(--ease), transform 200ms var(--ease);
}
.section:hover { box-shadow: var(--shadow-md); }
.section__header {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px; cursor: pointer; user-select: none;
  transition: background 150ms var(--ease); border-radius: var(--radius-lg);
}
.section__header:hover { background: var(--accent-subtle); }
.section__icon {
  width: 28px; height: 28px; border-radius: var(--radius);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.section__icon svg { width: 15px; height: 15px; }
.section__chevron {
  width: 14px; height: 14px; flex-shrink: 0; color: var(--text-muted);
  transition: transform 250ms var(--ease);
}
.section__chevron.open { transform: rotate(90deg); }
.section__title { font-size: .84rem; font-weight: 600; flex: 1; }
.section__count {
  font-size: .82rem; font-weight: 700; padding: 2px 8px; border-radius: 20px;
  background: var(--accent-light); color: var(--accent);
}
.section__extra { display: flex; gap: 4px; }
/* [2026-03-27][CLX][V7-CONFIRM] Confirm/Edit button in section header */
.section__confirm-btn {
  padding: 3px 10px; font-size: .79rem; font-weight: 600; font-family: var(--font-ui);
  border: 1px solid var(--accent); border-radius: var(--radius);
  background: var(--accent); color: var(--text-on-accent); cursor: pointer;
  transition: all 150ms var(--ease); margin-left: auto;
}
.section__confirm-btn:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
.section__confirm-btn--edit {
  background: transparent; color: var(--accent); border-color: var(--border);
}
.section__confirm-btn--edit:hover { background: var(--accent-subtle); border-color: var(--accent); }
.section__confirm-btn--collapse {
  background: transparent; color: var(--text-muted); border-color: var(--border);
}
.section__confirm-btn--collapse:hover { background: var(--bg-secondary); color: var(--text-secondary); }
.section__badge {
  font-size: .7rem; color: var(--success); font-weight: 700; margin-left: 4px;
}
.section--confirmed { border-color: var(--success); border-left: 3px solid var(--success); }
.section--confirmed .section__header { background: var(--success-light); }
/* Shake animation for validation failure */
@keyframes shake { 0%,100% { transform: translateX(0); } 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }
.section--shake { animation: shake 0.3s ease-in-out; }
.section__body { padding: 10px 16px 14px; }
.section__body.collapsed { display: none; }
.section__drag { cursor: grab; font-size: .79rem; color: var(--border); opacity: 0; transition: opacity 200ms; }
.section:hover .section__drag { opacity: 1; }

/* Section icon colors — warm palette */
.section[data-section="pdfdata"] .section__icon { background: #E8F4F0; color: #5A8F7B; }
.section[data-section="rooms"] .section__icon { background: var(--accent-light); color: var(--accent); }
.section[data-section="radiators"] .section__icon { background: var(--warning-light); color: var(--warning); }
.section[data-section="statuses"] .section__icon { background: var(--accent-subtle); color: var(--text-secondary); }
.section[data-section="client"] .section__icon { background: var(--surface-inset, #EDE8E0); color: var(--text-secondary); }
.section[data-section="manager"] .section__icon { background: #EEF1F5; color: #7B8FA8; }
.section[data-section="comment"] .section__icon { background: var(--bg-secondary); color: var(--text-muted); }

/* ══════ FLOOR NAVIGATION ══════ */
.floor-nav {
  display: flex; align-items: center; gap: 8px; margin-bottom: 14px;
  flex-wrap: wrap;
  padding-bottom: 10px; border-bottom: 1px solid var(--border-subtle);
}
.floor-pills { display: flex; gap: 3px; }
.floor-pill {
  display: flex; align-items: center; gap: 4px;
  padding: 4px 12px; font-size: .7rem; font-weight: 600; font-family: var(--font-ui);
  border: 1.5px solid var(--border); border-radius: 20px;
  cursor: pointer; background: var(--surface); color: var(--text-secondary);
  transition: all 150ms var(--ease);
}
.floor-pill:hover { border-color: var(--accent); color: var(--accent); }
.floor-pill.active { background: var(--accent); color: var(--text-on-accent); border-color: var(--accent); }
.floor-pill__dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--border-strong);
}
.floor-pill.active .floor-pill__dot { background: rgba(255,255,255,.6); }
.floor-pill--done .floor-pill__dot { background: var(--success); }
.floor-pill--partial .floor-pill__dot { background: var(--warning); }
.floor-pill--empty .floor-pill__dot { background: var(--border-strong); }

.floor-progress {
  margin-left: auto; display: flex; align-items: center; gap: 6px;
  font-size: .82rem; font-weight: 600; color: var(--text-muted);
}
.floor-progress__bar {
  width: 60px; height: 4px; border-radius: 2px;
  background: var(--border-subtle); overflow: hidden;
}
.floor-progress__fill {
  height: 100%; border-radius: 2px;
  background: var(--accent);
  transition: width 300ms var(--ease);
}

/* Floor divider */
.floor-divider {
  width: 100%; height: 1px; background: var(--border);
  margin: 6px 0 4px; grid-column: 1 / -1;
}

/* ══════ ROOM TABS ══════ */
.room-tabs {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 6px;
}
.room-tab {
  display: flex; flex-direction: column; gap: 2px;
  padding: 6px 10px; border-radius: var(--radius);
  cursor: pointer; font-family: var(--font-ui);
  background: var(--bg); border: 1.5px solid var(--border-subtle);
  transition: all 180ms var(--ease);
  position: relative;
}
.room-tab:hover { border-color: var(--accent); background: var(--accent-subtle); box-shadow: 0 2px 6px rgba(184,115,51,.06); }
.room-tab.active {
  background: var(--accent); border-color: var(--accent); color: var(--text-on-accent);
  box-shadow: 0 2px 8px rgba(184,115,51,.2);
}
/* Status left border */
.room-tab--done { border-left: 3px solid var(--success); }
.room-tab--partial { border-left: 3px solid var(--warning); }
/* Excluded */
.room-tab--excluded { opacity: 0.4; text-decoration: line-through; border-left: 3px solid var(--border); }
.room-tab--excluded:hover { opacity: 0.6; }
.room-tab--excluded .room-tab__name { text-decoration: line-through; }

/* [2026-03-28][CLX][V14-LAYOUT] Широкие кнопки: top = этаж · площадь · мощность, bottom = имя · ✓ · verifier */
.room-tab__top { display: flex; align-items: center; gap: 6px; }
.room-tab__floor { font-size: .79rem; font-weight: 600; color: var(--text-muted); }
.room-tab.active .room-tab__floor { color: rgba(255,255,255,.5); }
.room-tab__area { font-size: .79rem; color: var(--text-muted); font-family: var(--font-data); }
.room-tab.active .room-tab__area { color: rgba(255,255,255,.6); }
.room-tab__bottom { display: flex; align-items: center; gap: 4px; }
.room-tab__name { font-size: .85rem; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.room-tab__check { color: var(--success); font-size: .79rem; flex-shrink: 0; }
.room-tab.active .room-tab__check { color: rgba(255,255,255,.8); }
.room-tab__power { font-size: .79rem; font-weight: 700; color: var(--accent); font-family: var(--font-data); margin-left: auto; white-space: nowrap; }
.room-tab__power--empty { color: var(--text-muted); font-weight: 500; }
.room-tab.active .room-tab__power { color: rgba(255,255,255,.8); }

/* Room edit mode */
.room-tab__checkbox {
  display: none; position: absolute; top: 4px; right: 4px;
  width: 14px; height: 14px; border: 1.5px solid var(--border-strong); border-radius: 3px;
  background: var(--surface); cursor: pointer; appearance: none; -webkit-appearance: none;
  transition: all 150ms var(--ease);
}
.room-tab__checkbox:checked {
  background: var(--accent); border-color: var(--accent);
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 12 12' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 6l2.5 2.5L9.5 4' stroke='white' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-size: 10px; background-position: center; background-repeat: no-repeat;
}
/* [V14-CONFIGURE] Dropdown настройки комнат — без layout shift */
.rooms-config-dropdown {
  position: absolute; top: 100%; right: 0; z-index: 20;
  background: var(--surface); border: 1.5px solid var(--border);
  border-radius: 8px; box-shadow: 0 8px 24px rgba(44,36,32,.15);
  padding: 8px 0; min-width: 240px; margin-top: 4px;
}
.rooms-config-dropdown__title {
  font-size: .79rem; font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .3px;
  padding: 4px 12px 6px; border-bottom: 1px solid var(--border-subtle);
}
.rooms-config-dropdown__item {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 12px; cursor: pointer; transition: background 150ms;
}
.rooms-config-dropdown__item:hover { background: var(--accent-subtle); }
.rooms-config-dropdown__cb { width: 16px; height: 16px; flex-shrink: 0; cursor: pointer; }
.rooms-config-dropdown__name { font-size: .82rem; font-weight: 600; color: var(--text); }
.rooms-config-dropdown__meta { font-size: .79rem; color: var(--text-muted); margin-left: auto; }
.rooms-config-dropdown__footer {
  display: flex; gap: 4px; padding: 6px 12px 4px;
  border-top: 1px solid var(--border-subtle); margin-top: 4px;
}
.rooms-config-dropdown__footer .btn { flex: 1; }
.room-tab--excluded .room-tab__exclude { background: var(--success, #16a34a); }
.room-tab--excluded .room-tab__exclude svg { transform: rotate(45deg); }
/* [2026-03-28][CLX][V14-LAYOUT] Verifier — в bottom строке, справа */
.room-tab__verifier {
  font-size: .79rem; color: var(--text-muted); font-weight: 500;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-left: auto;
}
.room-tab--done .room-tab__verifier { color: var(--success); font-weight: 600; }
.room-tab.active .room-tab__verifier { color: rgba(255,255,255,.6); }
.room-tab--excluded .room-tab__verifier { display: none; }
/* [2026-03-28][CLX][V10-PENDING] Неподтверждённая — приглушённая, но НЕ уменьшенная (одинаковая высота) */
.room-tab--pending { opacity: 0.6; }
.room-tab--pending .room-tab__name { font-weight: 500; }
.room-tab--done .room-tab__name { font-weight: 700; }
/* [2026-03-28][CLX][V10-SOURCE] Индикатор источника */
.room-tab__source {
  position: absolute; bottom: 2px; right: 4px;
  font-size: .79rem; font-weight: 700; line-height: 1;
  opacity: 0.5; pointer-events: none;
}
.room-tab__source--pdf { color: var(--c-danger, #c00); }
.room-tab__source--manual { color: var(--text-muted); font-size: .79rem; }
.room-tab.active .room-tab__source { color: rgba(255,255,255,.5); }

/* [2026-03-27][CLX][V7-DEEPLINK] Room → PDF section chips */
.room-pdf-links {
  display: flex; gap: 4px; flex-wrap: wrap;
  margin-bottom: 8px; padding-bottom: 8px; border-bottom: 1px solid var(--border-subtle);
}
.room-pdf-link {
  padding: 2px 8px; font-size: .64rem; font-weight: 600; font-family: var(--font-ui);
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--bg-secondary); cursor: pointer; color: var(--text-secondary);
  transition: all 120ms;
}
.room-pdf-link:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-subtle); }

.rooms-edit-btn { font-size: .79rem; }
.rooms-edit-done { display: none; }

/* SVG mock floor plan */
.mock-floorplan { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
.mock-floorplan svg { width: 95%; max-width: 800px; max-height: 100%; }

/* ══════ FIELDS ══════ */
.field-row {
  display: grid; grid-template-columns: 16px 1fr; gap: 6px; align-items: center;
  margin-bottom: 4px; padding: 4px 6px; border-radius: var(--radius-sm);
  transition: background 120ms;
}
.field-row:hover { background: var(--accent-subtle); }
.field-check { font-size: .82rem; font-weight: 700; color: var(--success); }
.field-check.empty { opacity: 0; }
.field-group { display: grid; grid-template-columns: 110px 1fr; gap: 8px; align-items: center; }
.field-label { font-size: .78rem; font-weight: 500; color: var(--text-secondary); }

/* Inputs (project-detail scope) */
.project-detail .input, .project-detail .select {
  width: 100%; padding: 6px 10px; font-size: .84rem; font-family: var(--font-ui); font-weight: 500;
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--surface); color: var(--text); outline: none;
  transition: border-color 150ms, box-shadow 150ms;
}
.project-detail .input:focus, .project-detail .select:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(184,115,51,.08); }
.project-detail .input:disabled { background: var(--surface-inset); color: var(--text-muted); cursor: not-allowed; }
.project-detail .input--sm, .project-detail .select--sm { padding: 5px 8px; font-size: .8rem; }

/* ══════ PDF VERIFICATION — Hierarchical ══════ */

/* Contacts block */
.pdf-contacts {
  display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px;
  padding-bottom: 10px; margin-bottom: 10px;
  border-bottom: 1px solid var(--border-subtle); font-size: .78rem;
}
.pdf-contacts__item { display: flex; flex-direction: column; gap: 1px; }
.pdf-contacts__label { font-size: .82rem; font-weight: 600; text-transform: uppercase; letter-spacing: .3px; color: var(--text-muted); }
.pdf-contacts__value { font-weight: 600; color: var(--text); }
/* [2026-03-27][CLX][V7-EDITABLE] Editable contact inputs */
.pdf-contacts__input {
  font-weight: 600; color: var(--text); font-size: .78rem; font-family: var(--font-ui);
  width: 100%; padding: 2px 4px; border: 1px solid transparent; border-radius: var(--radius-sm);
  background: transparent; outline: none; transition: all 150ms;
}
.pdf-contacts__input:hover { border-color: var(--border); }
.pdf-contacts__input:focus { border-color: var(--accent); background: var(--surface); box-shadow: 0 0 0 2px rgba(184,115,51,.08); }
/* Select in contacts (Стадия) */
.pdf-contacts__select {
  font-weight: 600; color: var(--text); font-size: .78rem; font-family: var(--font-ui);
  width: 100%; padding: 2px 4px; border: 1px solid transparent; border-radius: var(--radius-sm);
  background: transparent; outline: none; cursor: pointer; transition: all 150ms;
  -webkit-appearance: none; appearance: none;
}
.pdf-contacts__select:hover { border-color: var(--border); }
.pdf-contacts__select:focus { border-color: var(--accent); background: var(--surface); }
/* Autocomplete dropdown */
.pdf-contacts--autocomplete { position: relative; }
.ac-dropdown {
  display: none; position: absolute; top: 100%; left: 0; right: 0; z-index: 20;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-sm);
  box-shadow: var(--shadow-md); max-height: 150px; overflow-y: auto;
}
.ac-option {
  padding: 6px 8px; font-size: .76rem; cursor: pointer; font-weight: 500;
  transition: background 100ms;
}
.ac-option:hover { background: var(--accent-subtle); color: var(--accent); }
.pdf-contacts--full { grid-column: 1 / -1; }

/* Shared checkbox style */
.v-check {
  width: 15px; height: 15px; border: 1.5px solid var(--border-strong); border-radius: 3px;
  background: var(--surface); cursor: pointer; flex-shrink: 0;
  appearance: none; -webkit-appearance: none;
  transition: all 150ms var(--ease);
}
.v-check:checked {
  background: var(--accent); border-color: var(--accent);
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 12 12' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 6l2.5 2.5L9.5 4' stroke='white' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-size: 10px; background-position: center; background-repeat: no-repeat;
}
.v-check:indeterminate {
  background: var(--accent-light); border-color: var(--accent);
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 12 12' xmlns='http://www.w3.org/2000/svg'%3E%3Cline x1='3' y1='6' x2='9' y2='6' stroke='%23B87333' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  background-size: 10px; background-position: center; background-repeat: no-repeat;
}

/* Floor level */
.v-floor { margin-bottom: 6px; }
.v-floor__header {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px; border-radius: var(--radius);
  background: var(--bg-secondary); cursor: pointer;
  transition: background 120ms;
}
.v-floor__header:hover { background: var(--accent-subtle); }
.v-floor__chevron {
  width: 14px; height: 14px; transition: transform 200ms var(--ease);
  color: var(--text-muted); flex-shrink: 0;
}
.v-floor__chevron.open { transform: rotate(90deg); }
.v-floor__title { font-size: .74rem; font-weight: 700; color: var(--text); flex: 1; }
.v-floor__pages { font-size: .6rem; color: var(--text-muted); font-family: var(--font-data); font-weight: 500; }
.v-floor__progress {
  font-size: .79rem; font-weight: 600; color: var(--text-muted);
  background: var(--surface); padding: 1px 6px; border-radius: 10px;
}
.v-floor__progress.done { color: var(--success); background: var(--success-light); }
.v-floor__body {
  padding: 6px 0 6px 23px;
  border-left: 2px solid var(--border-subtle); margin-left: 15px;
}
.v-floor__body.collapsed { display: none; }

/* Floor-level param (e.g. ceiling height) */
.v-floor-param {
  display: flex; align-items: center; gap: 6px;
  padding: 3px 8px; margin-bottom: 4px;
  border-radius: var(--radius-sm); font-size: .76rem;
  transition: background 120ms;
}
.v-floor-param:hover { background: var(--accent-subtle); }
.v-floor-param__label { color: var(--text-secondary); font-weight: 500; flex-shrink: 0; }
.v-floor-param__value { font-weight: 600; font-family: var(--font-data); color: var(--text); display: none; }
.v-floor-param .v-param__input { margin-left: auto; }

/* Room level */
.v-room { margin-bottom: 2px; }
.v-room__header {
  display: flex; align-items: center; gap: 6px;
  padding: 4px 8px; border-radius: var(--radius-sm);
  cursor: pointer; transition: background 120ms;
}
.v-room__header:hover { background: var(--accent-subtle); }
.v-room__chevron {
  width: 12px; height: 12px; transition: transform 200ms var(--ease);
  color: var(--text-muted); flex-shrink: 0;
}
.v-room__chevron.open { transform: rotate(90deg); }
.v-room__name { font-size: .74rem; font-weight: 600; color: var(--text); flex: 1; }
.v-room__meta {
  font-size: .64rem; color: var(--text-muted); font-family: var(--font-data); font-weight: 500;
  display: flex; gap: 6px; align-items: center;
}
.v-room__meta .warn { color: var(--warning); }
/* [2026-03-28][CLX][V12-VERIFIER] Имя проверившего справа в PDF-секции */
.v-room__verifier {
  font-size: .79rem; font-weight: 600; color: var(--success);
  margin-left: auto; white-space: nowrap; padding-left: 6px;
}
.v-room__verifier:empty { display: none; }
.v-room__body { padding: 4px 0 6px 44px; }
.v-room__body.collapsed { display: none; }

/* Room exclude toggle */
.v-room__exclude {
  width: 18px; height: 18px; border: none; background: none;
  cursor: pointer; color: var(--text-muted); font-size: .7rem;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--radius-sm); transition: all 120ms;
  flex-shrink: 0; padding: 0; opacity: 0;
}
.v-room__header:hover .v-room__exclude { opacity: .6; }
.v-room__exclude:hover { opacity: 1 !important; background: var(--error-light); color: var(--error); }
.v-room__exclude svg { width: 12px; height: 12px; }

/* Excluded room */
.v-room--excluded > .v-room__header { opacity: .45; }
.v-room--excluded > .v-room__header .v-room__exclude { opacity: 1; color: var(--error); }
.v-room--excluded > .v-room__body { display: none; }
.v-room--excluded .v-check--room { display: none; }
.v-room--excluded .v-room__name { text-decoration: line-through; }
.v-room--excluded .v-room__meta::after {
  content: 'исключена'; margin-left: 4px;
  font-size: .79rem; font-weight: 600; color: var(--error);
  background: var(--error-light); padding: 0 5px; border-radius: 8px;
}

/* Parameter level */
.v-param {
  display: grid; grid-template-columns: 18px auto 1fr 24px; align-items: center; gap: 4px;
  padding: 3px 6px; border-radius: var(--radius-sm);
  font-size: .76rem; transition: background 120ms;
}
.v-param:hover { background: var(--accent-subtle); }
.v-param__label { color: var(--text-secondary); font-weight: 500; white-space: nowrap; }
/* Original PDF value — hidden by default, shown only when corrected */
.v-param__value { font-weight: 600; font-family: var(--font-data); color: var(--text); display: none; }
.v-floor-param__value { display: none; }

/* Editable param input */
.v-param__input {
  width: 100%; max-width: 60px; padding: 2px 4px; font-size: .76rem; font-weight: 600;
  font-family: var(--font-data); color: var(--text);
  border: 1px solid transparent; border-radius: var(--radius-sm);
  background: transparent; outline: none;
  text-align: right; justify-self: end;
  transition: all 150ms var(--ease);
}
.v-param__input:hover { border-color: var(--border); background: var(--surface); }
.v-param__input:focus { border-color: var(--accent); background: var(--surface); box-shadow: 0 0 0 2px rgba(184,115,51,.08); }

/* Unit label */
.v-param__unit-label {
  font-size: .82rem; color: var(--text-muted); font-family: var(--font-data); font-weight: 500;
  min-width: 20px;
}

/* Corrected state */
.v-param--corrected .v-param__value,
.v-param--corrected .v-floor-param__value {
  display: inline; text-decoration: line-through; opacity: .45; font-size: .79rem;
}
.v-param--corrected .v-param__input {
  border-color: var(--warning); background: var(--warning-light); font-weight: 700;
}
.v-param__arrow {
  font-size: .79rem; color: var(--warning); font-weight: 700;
  display: none;
}
.v-param--corrected .v-param__arrow { display: inline; }

/* Window group */
.v-window-group {
  margin: 4px -6px 6px 10px; padding: 6px 0 6px 10px;
  background: var(--bg); border-radius: var(--radius);
  border-left: 2px solid var(--accent-light, rgba(184,115,51,.25));
}
.v-window-group__title {
  font-size: .82rem; font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .3px;
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 2px;
}
.v-window-group__page {
  font-size: .79rem; color: var(--accent); font-weight: 500;
  cursor: pointer; margin-left: auto; text-transform: none; letter-spacing: 0;
}
.v-window-group__page:hover { text-decoration: underline; }
.v-window-group .v-param { padding: 2px 0; }
.v-window-group .v-param__label { font-size: .74rem; }

/* Sub-params */
.v-param--sub { padding-left: 20px; }
.v-param--sub .v-param__label { min-width: 70px; font-size: .74rem; }

/* Page reference */
.v-param__page {
  font-size: .79rem; color: var(--accent); font-weight: 500; cursor: pointer;
  margin-left: auto;
}
.v-param__page:hover { text-decoration: underline; }

/* Preset select (warmfloor etc) */
.v-param__select {
  padding: 2px 5px; font-size: .82rem; font-weight: 600;
  font-family: var(--font-data); color: var(--text);
  border: 1px solid transparent; border-radius: var(--radius-sm);
  background: transparent; outline: none; cursor: pointer;
  transition: all 150ms var(--ease);
  -webkit-appearance: none; appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 10 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%239C8E82' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 4px center; background-size: 8px;
  padding-right: 16px; margin-left: auto;
}
.v-param__select:hover { border-color: var(--border); background-color: var(--surface); }
.v-param__select:focus { border-color: var(--accent); background-color: var(--surface); }
.v-param--corrected .v-param__select {
  border-color: var(--warning); background-color: var(--warning-light); font-weight: 700;
}
.v-param__detail {
  font-size: .66rem; color: var(--text-muted); font-family: var(--font-data);
  padding: 1px 0 1px 29px; line-height: 1.5;
}
.v-param__warn {
  font-size: .79rem; padding: 4px 8px; margin: 2px 0 2px 29px;
  border-radius: var(--radius-sm);
  background: var(--warning-light); color: #7A5C1A;
  border-left: 2px solid var(--warning); font-family: var(--font-data);
}

/* Section description */
.v-description {
  font-size: .82rem; color: var(--text-secondary); line-height: 1.5;
  padding: 8px 10px; margin-bottom: 10px;
  background: var(--bg-secondary); border-radius: var(--radius);
  border-left: 3px solid var(--accent);
}
.v-description strong { color: var(--text); font-weight: 600; }

/* Bulk actions bar */
.v-bulk-bar {
  display: flex; flex-wrap: wrap; gap: 4px; align-items: center;
  padding: 6px 0; margin-bottom: 6px;
  border-bottom: 1px solid var(--border-subtle);
}
.v-bulk-btn {
  font-size: .79rem; font-weight: 600; font-family: var(--font-ui);
  padding: 3px 8px; border-radius: 10px;
  border: 1px solid var(--border); background: var(--surface);
  color: var(--text-secondary); cursor: pointer;
  transition: all 120ms var(--ease);
  white-space: nowrap;
}
.v-bulk-btn:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-subtle); }
.v-bulk-btn--danger:hover { border-color: var(--error); color: var(--error); background: var(--error-light); }
.v-bulk-sep {
  width: 1px; height: 14px; background: var(--border-subtle); margin: 0 2px;
}

/* Verify all bar */
.v-verify-bar {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin-top: 10px; padding-top: 10px;
  border-top: 1px solid var(--border-subtle);
}
.v-verify-status {
  font-size: .79rem; color: var(--text-muted); font-weight: 500; flex: 1;
}
.v-verify-status.done { color: var(--success); }

/* Toast notification */
.v-verify-toast {
  display: none; margin-top: 10px; padding-top: 10px;
  border-top: 1px solid var(--border-subtle);
  padding: 8px 12px; border-radius: var(--radius);
  font-size: .82rem; font-weight: 500; line-height: 1.45;
  animation: verifyToastIn 200ms ease-out;
}
.v-verify-toast.visible { display: block; }
.v-verify-toast--success { background: var(--success-light); border: 1px solid var(--success); color: #3A5F3F; }
.v-verify-toast--error { background: #FEF2F2; border: 1px solid #EF4444; color: #991B1B; }
.v-verify-toast--warn { background: var(--warning-light); border: 1px solid var(--warning); color: #7A5C1A; }
.v-verify-toast--info { background: var(--accent-subtle); border: 1px solid var(--accent); color: var(--text-secondary); }
.v-verify-toast__rooms { font-weight: 700; color: var(--text); }
@keyframes verifyToastIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }

/* Confirm overlay */
.v-confirm {
  display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(44,36,32,.3); z-index: 1000;
  align-items: center; justify-content: center;
}
.v-confirm.visible { display: flex; }
.v-confirm__card {
  background: var(--surface); border-radius: var(--radius-lg);
  padding: 24px; max-width: 380px; width: 90%;
  box-shadow: var(--shadow-lg);
  text-align: center;
}
.v-confirm__icon { font-size: 2rem; margin-bottom: 8px; }
.v-confirm__title { font-size: .9rem; font-weight: 700; color: var(--text); margin-bottom: 6px; }
.v-confirm__text { font-size: .78rem; color: var(--text-secondary); line-height: 1.5; margin-bottom: 16px; }
.v-confirm__responsible {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  padding: 8px 12px; margin-bottom: 14px;
  background: var(--bg-secondary); border-radius: var(--radius);
  font-size: .8rem;
}
.v-confirm__resp-label { color: var(--text-secondary); font-weight: 500; }
.v-confirm__resp-name { color: var(--text); font-weight: 700; }
.v-confirm__actions { display: flex; gap: 8px; justify-content: center; }

/* Verified stamp */
.v-verified-stamp {
  display: none; padding: 10px 12px; margin-top: 10px;
  border-radius: var(--radius);
  background: var(--success-light); border: 1px solid var(--success);
  font-size: .74rem; color: var(--text);
}
.v-verified-stamp.visible { display: block; }
.v-verified-stamp__title {
  font-weight: 700; color: var(--success); margin-bottom: 4px;
  display: flex; align-items: center; gap: 5px;
}
.v-verified-stamp__details {
  font-size: .79rem; color: var(--text-secondary); font-family: var(--font-data);
  line-height: 1.6;
}
.v-verified-stamp--partial { border-color: var(--warning); background: var(--warning-light); }
.v-verified-stamp--partial .v-verified-stamp__title { color: var(--warning); }

/* Header verification badge */
.project-header__verify-badge {
  display: none; align-items: center; gap: 5px;
  font-size: .79rem; font-weight: 600; font-family: var(--font-data);
  padding: 3px 10px; border-radius: 12px;
  background: rgba(107,143,113,.15); color: #4A7050;
  white-space: nowrap; cursor: pointer;
  transition: background 120ms;
}
.project-header__verify-badge.visible { display: inline-flex; }
.project-header__verify-badge:hover { background: rgba(107,143,113,.25); }
.project-header__verify-badge svg { width: 12px; height: 12px; }
.project-header__verify-badge--partial { background: rgba(196,145,42,.15); color: #7A5C1A; }
.project-header__verify-badge--partial:hover { background: rgba(196,145,42,.25); }

/* Change reason modal */
.v-change-modal {
  display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(44,36,32,.3); z-index: 1000;
  align-items: center; justify-content: center;
}
.v-change-modal.visible { display: flex; }
.v-change-modal__card {
  background: var(--surface); border-radius: var(--radius-lg);
  padding: 20px 24px; max-width: 400px; width: 90%;
  box-shadow: var(--shadow-lg);
}
.v-change-modal__title { font-size: .85rem; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.v-change-modal__text { font-size: .74rem; color: var(--text-secondary); line-height: 1.5; margin-bottom: 12px; }
.v-change-modal__field-label {
  font-size: .79rem; font-weight: 600; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .3px; margin-bottom: 4px;
}
.v-change-modal__resp {
  display: flex; align-items: center; gap: 6px;
  padding: 6px 0; margin-bottom: 8px;
  font-size: .78rem;
}
.v-change-modal__resp-name { font-weight: 700; color: var(--text); }
.v-change-modal__actions {
  display: flex; gap: 8px; justify-content: flex-end; margin-top: 14px;
}

/* Change history log */
.v-change-log { margin-top: 8px; }
.v-change-log__title {
  font-size: .79rem; font-weight: 600; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .3px; margin-bottom: 4px;
  cursor: pointer;
}
.v-change-log__title:hover { color: var(--accent); }
.v-change-log__list { font-size: .66rem; color: var(--text-secondary); font-family: var(--font-data); line-height: 1.6; }
.v-change-log__list.collapsed { display: none; }
.v-change-log__entry { padding: 4px 0; border-bottom: 1px solid var(--border-subtle); }
.v-change-log__entry:last-child { border-bottom: none; }
.v-change-log__who { font-weight: 600; color: var(--text); }
.v-change-log__reason { font-style: italic; color: var(--text-muted); }

/* PDF missing/warn */
.pdf-data__missing { color: var(--text-muted); font-style: italic; }
.pdf-data__warn {
  font-size: .82rem; padding: 8px 10px; border-radius: var(--radius);
  background: var(--warning-light); color: #7A5C1A; border-left: 3px solid var(--warning); margin-top: 2px;
  font-family: var(--font-data);
}

/* ══════ RADIATOR SLOTS (per-window) ══════ */
.radiator-block {
  margin-top: 14px; padding-top: 12px;
  border-top: 1px solid var(--border-subtle);
}
.radiator-block__title {
  font-size: .82rem; font-weight: 700; color: var(--text);
  display: flex; align-items: center; gap: 6px; margin-bottom: 8px;
}
.radiator-block__title svg { width: 14px; height: 14px; color: var(--accent); }
.radiator-block__count {
  font-size: .6rem; font-weight: 600; color: var(--text-muted);
  background: var(--bg-secondary); padding: 1px 6px; border-radius: 10px;
}

/* Window tabs */
.window-tabs {
  display: flex; gap: 2px; margin-bottom: 10px;
  background: var(--bg-secondary); border-radius: var(--radius); padding: 2px;
}
.window-tab {
  flex: 1; padding: 5px 8px; font-size: .7rem; font-weight: 600;
  text-align: center; border-radius: var(--radius-sm);
  cursor: pointer; color: var(--text-secondary); border: none; background: none;
  transition: all 150ms var(--ease); font-family: var(--font-ui);
}
.window-tab:hover { color: var(--text); background: rgba(255,255,255,.5); }
.window-tab.active {
  background: var(--surface); color: var(--accent);
  box-shadow: 0 1px 3px rgba(44,36,32,.08);
}

/* Window slot content */
.window-slot { display: none; }
.window-slot.active { display: block; }

.window-hint {
  display: flex; align-items: flex-start; gap: 6px;
  padding: 7px 10px; margin-bottom: 8px;
  background: var(--accent-subtle); border-radius: var(--radius);
  border-left: 3px solid var(--accent);
  font-size: .82rem; color: var(--text-secondary); font-family: var(--font-data);
  line-height: 1.45;
}
.window-hint__icon {
  flex-shrink: 0; width: 14px; height: 14px; margin-top: 1px;
  color: var(--accent);
}
.window-hint strong { color: var(--text); font-weight: 600; }
.window-hint--warn {
  background: var(--warning-light); border-left-color: var(--warning);
}
.window-hint--warn .window-hint__icon { color: var(--warning); }

/* Constraint fields */
.constraint-row {
  display: grid; grid-template-columns: 100px 1fr 28px; gap: 6px; align-items: center;
  margin-bottom: 4px; padding: 3px 0;
}
.constraint-label { font-size: .74rem; font-weight: 500; color: var(--text-secondary); }
.constraint-unit { font-size: .79rem; font-weight: 500; color: var(--text-muted); font-family: var(--font-data); }

/* Selected radiator preview */
.radiator-preview {
  margin-top: 8px; padding: 8px 10px;
  background: var(--bg); border-radius: var(--radius);
  border: 1px dashed var(--border);
  font-size: .74rem; color: var(--text-muted);
  display: flex; align-items: center; gap: 8px;
}
.radiator-preview--filled {
  border-style: solid; border-color: var(--success);
  background: var(--success-light); color: var(--text);
}
.radiator-preview__name { font-weight: 600; }
.radiator-preview__meta { font-size: .66rem; color: var(--text-secondary); font-family: var(--font-data); }

/* Clear constraints link */
.clear-constraints {
  font-size: .79rem; color: var(--text-muted); cursor: pointer;
  background: none; border: none; padding: 4px 0; font-family: var(--font-ui);
  transition: color 150ms;
}
.clear-constraints:hover { color: var(--accent); }

/* No-windows state */
.radiator-empty {
  padding: 12px; text-align: center;
  color: var(--text-muted); font-size: .74rem;
  background: var(--bg); border-radius: var(--radius);
}

/* Status grid */
.status-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.status-grid label {
  font-size: .79rem; font-weight: 600; text-transform: uppercase; letter-spacing: .4px;
  color: var(--text-muted); display: block; margin-bottom: 3px;
}

/* Calc button disabled */
.calc-btn--disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
.calc-btn__hint {
  display: block; text-align: center; margin-top: 4px;
  font-size: .79rem; color: var(--warning); font-weight: 500;
}

/* Verified room badge in room-tab */
.room-tab__verified { display: none; font-size: .79rem; color: var(--success); font-weight: 700; }
.room-tab--verified .room-tab__verified { display: inline; }
.room-tab--unverified { opacity: 0.7; }
.room-tab--unverified .room-tab__name { font-style: italic; }

/* Не распознано highlight */
.field-row--missing .field-label::after {
  content: ' — не распознано, введите вручную';
  font-size: .6rem; font-weight: 400; color: var(--warning); font-style: italic;
}
.field-row--missing .input { border-color: var(--warning); background: #FFF8F0; }

/* Calc result card */
.calc-result {
  margin-top: 10px; padding: 10px 12px;
  background: var(--success-light); border: 1px solid var(--success);
  border-radius: var(--radius); font-family: var(--font-data);
}
.calc-result__header {
  display: flex; align-items: center; gap: 6px;
  font-size: .78rem; font-weight: 700; color: var(--text);
}
.calc-result__check { color: var(--success); font-size: .82rem; }
.calc-result__meta {
  font-size: .79rem; color: var(--text-secondary); margin-top: 4px;
  display: flex; flex-wrap: wrap; gap: 4px 12px;
}
.calc-result__actions { margin-top: 6px; display: flex; gap: 6px; }
.calc-result__actions button {
  font-size: .64rem; padding: 3px 10px; border-radius: var(--radius-sm);
  cursor: pointer; border: 1px solid var(--border); background: var(--surface);
  color: var(--text-secondary); font-family: var(--font-ui); transition: all 150ms;
}
.calc-result__actions button:hover { border-color: var(--accent); color: var(--accent); }

/* PDF page links */
.v-param__detail .pdf-page-link {
  color: var(--accent); cursor: pointer; font-weight: 500;
}
.v-param__detail .pdf-page-link:hover { text-decoration: underline; }

/* Room editor */
.room-editor { padding: 4px 0; }
.room-editor__title {
  font-size: .82rem; font-weight: 700; color: var(--text);
  margin-bottom: 8px; display: flex; align-items: center; gap: 6px;
}
/* [2026-03-28][CLX][V11-SOURCE] Источник значения */
.field-source { display: block; font-size: .79rem; font-weight: 500; margin-top: 1px; }
.field-source--pdf { color: var(--success, #16a34a); }
.field-source--default { color: var(--c-warning, #e67700); }
/* [2026-03-28][CLX][V11-ANOMALY] Подсветка аномалий */
.field-anomaly { display: block; font-size: .79rem; color: var(--c-warning, #e67700); padding: 2px 0; line-height: 1.3; }
.input--anomaly { border-color: var(--c-warning, #e67700) !important; background: rgba(230,119,0,.04); }
/* [2026-03-28][CLX][V11-UNEXCLUDE] Tooltip подтверждения при разблокировке */
.room-unexclude-tip {
  position: absolute; top: -42px; left: 50%; transform: translateX(-50%);
  background: var(--surface); border: 1.5px solid var(--accent);
  border-radius: var(--radius); padding: 4px 8px; white-space: nowrap;
  font-size: .79rem; box-shadow: 0 4px 12px rgba(0,0,0,.12); z-index: 10;
  display: flex; align-items: center; gap: 6px;
}
.room-unexclude-tip::after {
  content: ''; position: absolute; bottom: -5px; left: 50%; transform: translateX(-50%);
  border-left: 5px solid transparent; border-right: 5px solid transparent;
  border-top: 5px solid var(--accent);
}
.room-unexclude-tip__btn {
  padding: 2px 8px; border: none; border-radius: 3px; cursor: pointer;
  background: var(--accent); color: var(--text-on-accent); font-size: .79rem; font-weight: 600;
}

/* ══════ [2026-03-28][CLX][V14-UX] Slot Chips ══════ */
.slot-tabs {
  display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px;
}
.slot-chip {
  display: flex; align-items: center; gap: 5px;
  padding: 6px 12px; border: 1.5px solid var(--border);
  border-radius: 6px; background: var(--surface);
  font-size: .82rem; font-weight: 600; font-family: var(--font-ui);
  color: var(--text-muted); cursor: default;
  transition: all 150ms var(--ease); position: relative;
}
.slot-chip__icon { font-size: .9rem; }
.slot-chip--filled { border-color: var(--success); color: var(--text); background: rgba(107,143,113,.06); }
.slot-chip__delete {
  width: 22px; height: 22px; border: none; background: none;
  color: var(--text-muted); cursor: pointer; font-size: 1rem; font-weight: 700;
  border-left: 1px solid var(--border-subtle); padding-left: 6px; margin-left: 4px;
  display: flex; align-items: center; justify-content: center;
  opacity: 0.5; transition: all 150ms;
}
.slot-chip__delete:hover { color: var(--c-danger, #c00); opacity: 1; }
.slot-chip--add {
  border-style: dashed; cursor: pointer; font-size: 1rem; font-weight: 700;
  padding: 6px 14px; color: var(--accent);
}
.slot-chip--add:hover { border-color: var(--accent); background: var(--accent-subtle); }

/* Add popup */
.slot-add-wrap { position: relative; }
.slot-add-popup {
  display: none; position: absolute; top: 100%; left: 0; z-index: 10;
  background: var(--surface); border: 1.5px solid var(--border);
  border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,.1);
  padding: 4px; margin-top: 4px; min-width: 120px;
}
.slot-add-popup.visible { display: flex; flex-direction: column; }
.slot-add-popup__item {
  padding: 8px 12px; border: none; background: none; cursor: pointer;
  font-size: .82rem; font-weight: 600; text-align: left; border-radius: 4px;
  transition: background 150ms;
}
.slot-add-popup__item:hover { background: var(--accent-subtle); }

/* Summary */
.slot-summary {
  font-size: .82rem; color: var(--text-muted); font-weight: 500; margin-bottom: 8px;
}

/* Dims toggle */
.slot-dims-toggle { width: 100%; text-align: left; font-size: .82rem; margin-bottom: 8px; }

/* Dims table */
.slot-dims-table.hidden { display: none; }
.dims-table {
  width: 100%; border-collapse: collapse; font-size: .82rem; margin-bottom: 6px;
}
.dims-table th {
  font-size: .79rem; font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .3px; text-align: left;
  padding: 4px 6px; border-bottom: 1px solid var(--border);
}
.dims-table td { padding: 5px 6px; vertical-align: middle; }
.dims-table__name { font-weight: 600; white-space: nowrap; font-size: .82rem; }
.dims-table__hint { font-size: .79rem; color: var(--text-muted); }
.dims-hint--warn { color: var(--c-warning, #e67700); font-weight: 600; }
.dims-input { width: 68px !important; text-align: right; font-size: .82rem !important; padding: 4px 6px !important; }
.dims-input--empty { border-color: var(--c-warning, #e67700) !important; background: #FFF8F0 !important; }
/* Bulk fill */
.dims-bulk { margin-top: 6px; }
.dims-bulk__row {
  display: flex; align-items: center; gap: 6px; margin-bottom: 4px;
}
.dims-bulk__label { font-size: .79rem; font-weight: 600; color: var(--text-muted); white-space: nowrap; }
.dims-bulk__input { width: 60px !important; text-align: right; font-size: .79rem !important; padding: 4px 6px !important; }
.dims-bulk__unit { font-size: .79rem; color: var(--text-muted); }
.dims-bulk__apply { font-size: .79rem !important; padding: 3px 10px !important; white-space: nowrap; }

.dims-warn {
  font-size: .79rem; color: var(--c-warning, #e67700); font-weight: 600;
  padding: 4px 0;
}

/* Disabled calc button */
.btn--disabled { opacity: 0.4; cursor: not-allowed; pointer-events: none; }

/* Slot power bar (in calc results) */
.slot-power-bar {
  position: relative; height: 20px; background: var(--border-subtle);
  border-radius: 4px; margin-top: 6px; overflow: hidden;
}
.slot-power-bar__fill {
  height: 100%; background: var(--accent); border-radius: 4px;
  transition: width 300ms var(--ease);
}
.slot-power-bar__label {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: .6rem; font-weight: 700; color: var(--text);
  font-family: var(--font-data);
}

/* ══════ Calc result card ══════ */
.calc-result-card {
  margin-top: 10px; padding: 10px 12px;
  background: var(--bg); border: 1px solid var(--border); border-radius: 8px;
}
.calc-result-card__power { font-size: 1.1rem; font-weight: 600; color: var(--text); }
.calc-result-card__range { font-size: .78rem; color: var(--text-secondary); }
.calc-result-card__detail { font-size: .7rem; color: var(--text-muted); margin-top: 4px; }

/* ══════ Distribution Block ══════ */
.dist-block {
  margin-top: 10px; padding: 10px 12px;
  background: var(--bg); border: 1px solid var(--border); border-radius: 8px;
}
.dist-block__title {
  font-size: .79rem; font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .3px; margin-bottom: 8px;
}

.dist-slot {
  padding: 8px 0; border-bottom: 1px solid var(--border-subtle);
}
.dist-slot:last-of-type { border-bottom: none; }

.dist-slot__header {
  display: flex; align-items: center; gap: 6px; margin-bottom: 4px;
}
.dist-slot__icon { font-size: .85rem; flex-shrink: 0; }
.dist-slot__label { font-size: .82rem; font-weight: 600; color: var(--text); }
.dist-slot__hint { font-size: .79rem; color: var(--text-muted); }
.dist-slot__power {
  margin-left: auto; font-size: .82rem; font-weight: 700;
  color: var(--accent); font-family: var(--font-data);
}
.dist-slot__pct {
  font-size: .6rem; font-weight: 600; color: var(--text-muted);
  min-width: 28px; text-align: right;
}
.dist-slot__remove {
  width: 18px; height: 18px; border: none; background: none;
  color: var(--c-danger, #c00); cursor: pointer; font-size: .8rem;
  opacity: 0.5; transition: opacity 150ms;
}
.dist-slot__remove:hover { opacity: 1; }

/* Progress bar */
.dist-slot__bar {
  height: 4px; background: var(--border-subtle); border-radius: 2px;
  margin-bottom: 6px; overflow: hidden;
}
.dist-slot__bar-fill {
  height: 100%; border-radius: 2px;
  background: var(--accent); transition: width 300ms var(--ease);
}

/* Dimensions row */
.dist-slot__dims {
  display: flex; gap: 12px;
}
.dist-slot__dim {
  display: flex; align-items: center; gap: 4px; font-size: .6rem;
}
.dist-slot__dim-label {
  color: var(--text-muted); font-weight: 600; white-space: nowrap;
}
.dist-slot__input {
  width: 56px !important; text-align: right; font-size: .79rem !important;
  padding: 2px 4px !important; height: auto !important;
}
.dist-slot__dim-unit { color: var(--text-muted); font-size: .79rem; }

/* Status */
.dist-slot__status {
  font-size: .79rem; color: var(--text-muted); margin-top: 4px; font-style: italic;
}
.dist-slot__status--done { color: var(--success); font-style: normal; font-weight: 600; }

/* Add wall button */
#dist-add-wall {
  margin-top: 8px; font-size: .79rem; width: 100%;
  border-style: dashed;
}

/* ══════ [2026-03-28][CLX][V12-REVIEW] Кнопка «Перейти к подбору» ══════ */
.btn--accent {
  background: var(--accent); color: var(--text-on-accent); border: none;
  font-weight: 600; display: flex; align-items: center; justify-content: center; gap: 6px;
  padding: 10px 16px; border-radius: var(--radius); cursor: pointer;
  transition: all 180ms var(--ease);
}
.btn--accent svg { width: 16px; height: 16px; flex-shrink: 0; }
.btn--accent:hover { filter: brightness(1.1); box-shadow: 0 2px 8px rgba(184,115,51,.25); }

/* ══════ REVIEW MODAL — обзор комнат перед подбором ══════ */
.review-modal__overlay {
  position: fixed; inset: 0; z-index: 1000;
  background: rgba(44,36,32,.5); backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity 250ms var(--ease);
}
.review-modal__overlay--visible { opacity: 1; }
.review-modal {
  background: var(--surface); border-radius: 12px;
  width: min(720px, 92vw); max-height: 85vh;
  display: flex; flex-direction: column;
  box-shadow: 0 8px 32px rgba(44,36,32,.2), 0 2px 8px rgba(0,0,0,.08);
  transform: translateY(8px); transition: transform 250ms var(--ease);
}
.review-modal__overlay--visible .review-modal { transform: translateY(0); }

.review-modal__header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px; border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.review-modal__title {
  font-size: .9rem; font-weight: 700; color: var(--text);
  display: flex; align-items: center; gap: 8px;
}
.review-modal__title svg { width: 18px; height: 18px; color: var(--accent); }
.review-modal__close {
  width: 28px; height: 28px; border: none; background: transparent;
  font-size: 1.2rem; color: var(--text-muted); cursor: pointer; border-radius: 6px;
  transition: all 150ms;
}
.review-modal__close:hover { background: var(--bg-hover); color: var(--text); }

/* Summary bar */
.review-modal__summary {
  display: flex; gap: 12px; padding: 12px 20px;
  background: var(--bg); border-bottom: 1px solid var(--border-subtle);
  flex-shrink: 0; flex-wrap: wrap;
}
.review-modal__stat { text-align: center; flex: 1; }
.review-modal__stat-value {
  display: block; font-size: 1.1rem; font-weight: 700; color: var(--text);
  font-family: var(--font-data);
}
.review-modal__stat-label { font-size: .79rem; color: var(--text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: .3px; }
.review-modal__stat--accent .review-modal__stat-value { color: var(--accent); }

/* Radiator counts bar */
.review-modal__radiators {
  display: flex; align-items: center; gap: 16px;
  padding: 8px 20px; background: var(--bg);
  border-bottom: 1px solid var(--border-subtle); flex-shrink: 0;
  font-size: .79rem; color: var(--text-secondary);
}
.review-modal__rad-item { display: flex; align-items: center; gap: 4px; }
.review-modal__rad-item svg { width: 13px; height: 13px; color: var(--accent); }
.review-modal__rad-item strong, .review-modal__rad-total strong { font-weight: 700; color: var(--text); }
.review-modal__rad-total { margin-left: auto; font-weight: 600; color: var(--accent); }

.review-modal__warn {
  padding: 8px 20px; background: #FFF8F0; border-bottom: 1px solid var(--border-subtle);
  font-size: .7rem; font-weight: 600; color: var(--c-warning, #e67700);
  flex-shrink: 0;
}

/* Scrollable body */
.review-modal__body {
  overflow-y: auto; padding: 12px 20px 16px; flex: 1;
}

/* Floor section */
.review-floor { margin-bottom: 16px; }
.review-floor:last-child { margin-bottom: 0; }
.review-floor__header {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 0; border-bottom: 2px solid var(--accent);
  margin-bottom: 8px;
}
.review-floor__title { font-size: .8rem; font-weight: 700; color: var(--text); }
.review-floor__power { font-size: .82rem; font-weight: 600; color: var(--accent); font-family: var(--font-data); margin-left: auto; }
.review-floor__count { font-size: .6rem; color: var(--text-muted); }

/* Room cards */
.review-floor__rooms { display: flex; flex-direction: column; gap: 8px; }
.review-room {
  background: var(--bg); border: 1px solid var(--border-subtle);
  border-radius: var(--radius); padding: 10px 12px;
  border-left: 3px solid var(--success);
}
.review-room--pending { border-left-color: var(--c-warning, #e67700); opacity: 0.75; }

.review-room__header {
  display: flex; align-items: center; gap: 8px; margin-bottom: 6px;
}
.review-room__name { font-size: .78rem; font-weight: 700; color: var(--text); }
.review-room__power { font-size: .78rem; font-weight: 700; color: var(--accent); font-family: var(--font-data); margin-left: auto; }
.review-room__check { color: var(--success); font-size: .7rem; }
.review-room__no-calc { font-size: .79rem; font-style: italic; color: var(--c-warning, #e67700); margin-left: auto; }

/* Parameters grid — 4 columns for comfortable reading */
.review-room__params {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px 12px;
}
.review-room__param { display: flex; flex-direction: column; }
.review-room__param-label { font-size: .79rem; color: var(--text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: .3px; }
.review-room__param-value { font-size: .82rem; font-weight: 600; color: var(--text); font-family: var(--font-data); }
.review-room__param-value--verifier { color: var(--success); font-family: var(--font-ui); }

/* Slots in review modal */
.review-room__slots {
  display: flex; flex-wrap: wrap; gap: 4px 10px;
  margin-top: 6px; padding-top: 6px; border-top: 1px dashed var(--border-subtle);
}
.review-room__slot {
  font-size: .79rem; color: var(--text-secondary);
  white-space: nowrap;
}
.review-room__slot strong { color: var(--accent); font-family: var(--font-data); }

/* Footer */
.review-modal__footer {
  display: flex; justify-content: flex-end; gap: 8px;
  padding: 12px 20px; border-top: 1px solid var(--border);
  flex-shrink: 0;
}
.review-modal__footer .btn--primary {
  display: flex; align-items: center; gap: 6px;
}
.review-modal__footer .btn--primary svg { width: 14px; height: 14px; }
.review-modal__footer .btn--disabled { opacity: 0.4; cursor: not-allowed; }

/* Responsive: 2 columns on narrow screens */
@media (max-width: 600px) {
  .review-room__params { grid-template-columns: repeat(2, 1fr); }
  .review-modal__summary { flex-wrap: wrap; gap: 8px; }
  .review-modal__stat { min-width: 60px; }
}
