/*
 * FILE: configurator.css
 * VERSION: 1.5.10
 * CHANGES: standalone calculator keeps reliable catalog handoff and uses
 * compact navigation chips instead of the shared site header.
 * v1.5.14: commercial-offer print/PDF presentation for one item or full quote.
 * v1.5.15: browser print fallback and visible margins in the generated print window.
 */

/*
 FILE: configurator-master-v0.8.25.html
 VERSION: v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
 PURPOSE: единый MASTER-renderer для окна, балконной двери, балконного блока и фрамуги.
 CHANGES v0.8.25 LIMITS-FULLHEIGHT-CLEANUP:
 - Фрамуга стала интерактивной: клик по эскизу открывает quick-editor ширины и заполнения.
 - В балконном блоке створка двери визуально отделена отдельной карточкой.
 - Выбранная на эскизе секция/дверь/фрамуга постоянно ярко выделяется в панели до выбора другого объекта.
 - Quick-editor закрывается кликом вне него и вне активного объекта на эскизе.
 CHANGES v0.5.9 IMPOST-MODE:
 - Любое отклонение изменения из-за матрицы ограничений теперь показывает постоянное пояснение и кнопку «Посмотреть карту допустимых размеров».
 - Единая обработка нарушений для: типа створки в панели, типа в SVG-popup, ширины секции, габаритов SVG, полей размеров справа и количества частей.
 - Карта автоматически открывается на нужной матрице: глухая / открывающаяся / дверь / фрамуга.

Previous CHANGES v0.5.7 ASSISTED-LIMITS:
 - Ограничения больше не тупиковые: при изменении количества створок MASTER ищет допустимое распределение по матрицам и строит его.
 - Пример: окно 700 мм / 1 поворотная → при выборе 2 частей MASTER может построить 400+300 мм (если эта комбинация допустима по матрицам).
 - Если пользователь увеличивает одностворчатое открывающееся окно до ширины, недопустимой для одной створки, MASTER ищет допустимую схему на 2, затем на 3 части и автоматически перестраивает изделие.
 - Автоперестроение сопровождается пояснением: что изменено, почему и кнопкой перехода к карте ограничений.
 - Запрещённые состояния по-прежнему не фиксируются: если допустимой альтернативы нет, остаётся последнее валидное состояние.

Previous CHANGES v0.5.6 UNIFIED-GUARDS:
 - ЕДИНЫЙ КОНТУР ВАЛИДАЦИИ: размеры из панели и из SVG проходят один LimitsEngine ДО фиксации.
 - Поля габаритов больше не перерисовывают изделие на каждый введённый символ; commit только Enter/change/blur.
 - Запрещённый размер откатывается к последнему валидному значению и не попадает на чертёж.
 - При 1 створки ширина в интерактивном popup теперь меняет ширину всего изделия (створка = изделие).
 - Переключение количества створок валидируется и после расчёта заново синхронизирует подписи панели.
 - Исправлена рассинхронизация «карточка створки 700 / фактическая створка 1400».

Previous CHANGES v0.5.5 GUARDED-LIMITS:
 - FIX: запреты размеров снова применяются ДО фиксации state: недопустимое изменение откатывается, старый валидный эскиз сохраняется.
 - FIX: quick-editor больше не может превратить 700+700 в 1+1399 и оставить это на чертеже.
 - FIX: изменение типа створки и размеров через SVG-редакторы также проходит предварительную проверку.
 - FIX: возвращён заметный alert/toast с причиной запрета.
 - База: v0.5.4 FIXED-RUNTIME.

Previous CHANGES v0.5.4 FIXED-RUNTIME:
 - FIX: восстановлен выпавший runtime-блок v0.5.2: currentScene/svgEl, аксессуары, setDefaultsForType, post-layout размеров.
 - Сохранены ограничения и выравнивание стекла из v0.5.3.
 - Предыдущие изменения v0.5.3:
 - Восстановлены ограничения размеров из актуального файла «Ограничения_размеров_коды_v2(3).xlsx»: окно, балконная дверь, фрамуга.
 - Возвращены статусы ✓ / ! / ×, блокировка недопустимых конфигураций, предупреждения и карта допустимых размеров.
 - В балконном блоке восстановлено вертикальное выравнивание нижней кромки верхнего стекла двери по соседнему стеклу окна.
 - Возвращена опция попытки выровнять ширину соседнего стекла окна по верхнему стеклу двери.
 - При полном стекле двери вертикальное выравнивание по импосту автоматически не применяется.

Previous CHANGES v0.5.2 DIM-DOOR:
 - v0.5.2: исправлены вертикальные размеры балконной двери/двери в блоке: текст всегда слева от своей размерной линии, с зазором T/4 до тела текста.
 - MASTER собран из лучших веток: современный renderer/геометрия из последних testbench + InteractionLayer из Window v1.15.7 UX-DIMENSIONS.
 - Возвращён быстрый редактор по клику на секцию/створку и редактор габаритного размера по клику на размер.
 - Исправлены размерные уровни: верх/лево и низ/право используют утверждённые правила без дублей и пересечений.
 - Для отдельной двери общий размер высоты показывается только справа вместе с осью импоста и осью ручки; дубли слева удалены.
 - Для балконного блока слева/свободной стороны показывается высота окна; справа у двери — импост, ручка, общая высота.
 - Дефолты окна: первая открывающаяся створка — петли слева; остальные открывающиеся — петли справа.
 - Дефолт балконного блока: ручка двери со стороны окна, петли с противоположной стороны.
 - Все размеры в мм только целые; площади — 3 знака.

CHANGES v0.3.1 RECOVERY:
 - Восстановлено рисование балконной двери и балконного блока без временного изменения DOM-селекторов.
 - Все размеры в мм показываются только целыми числами; 3 знака оставлены только для площадей.
 - Возвращена интерактивность SVG: клик по секции/створке выбирает её редактор; клик по основному размеру открывает редактирование.
 - Добавлены производственные размеры двери и балконного блока: ось импоста, ось ручки, общая высота; ширины створок окна по осям.
 - Комплектация теперь строится по текущему изделию: подоконник/отлив, ширина, длина, марка; для двери предусмотрен порог.
 - Для балконного блока комплектация окна и двери разделена. Доборные профили предусмотрены как отключённый будущий модуль.
 - Ручка двери всегда на стороне, противоположной петлям.

Previous CHANGES v0.3.0:
 - FIX: ручка балконной двери теперь всегда на стороне, противоположной петлям.
 - Добавлены вкладки «Конфигуратор» / «Запрос КП».
 - Панель приведена к общей структуре для всех видов изделий.
 - Окно: динамические створки 1–3, тип, сторона петель и МС для каждой открывающейся секции.
 - Добавлены общие селекторы стеклопакета, ручки, подоконников/отливов, откосов, количества.
 - Балконный блок получил свои параметры окна и двери, включая открывание/петли двери.
 - Добавлены дополнительные производственные размеры на эскизах: ширины створок по осям, ось ручки и ось импоста двери.
 - «Запрос КП» пока локальный development-контур: добавление изделий, список, количество, услуги и контактные поля.

CHANGES v0.5.9:
 - Эскиз отделён от длинной панели: на desktop карточка чертежа sticky и остаётся видимой при прокрутке селекторов.
 - Клик по створки автоматически подводит соответствующий редактор панели к верхней части экрана.
 - Балконная дверь и дверь балконного блока стали интерактивными: клик по двери открывает быстрый редактор ширины, открывания и стороны петель.
 - Панель дверных параметров синхронизирована с выделением двери на SVG.

Previous CHANGES v0.2.0:
 - Выбор вида изделия перенесён в общую правую панель.
 - Все изделия используют один визуальный стиль и один SVG-renderer.
 - Введён единый постоянный масштаб геометрии DRAW.baseScale.
 - Размерный текст, засечки и линии аннотаций не зависят от габарита изделия.
 - Zoom меняет геометрию, но не размер текста размеров.
 - Добавлены 75/100/125/150% и «Вписать»; значение масштаба всегда видно.
 - Профиль одного артикула имеет одинаковую проекционную ширину у всех изделий.
 - Это DEVELOPMENT MASTER. Production: правила/БД/ограничения должны уйти на API вне webroot.
*/
:root{--bg:#edf2f7;--card:#fff;--line:#d6e0ec;--text:#172235;--muted:#66758b;--accent:#2f68e3;--ok:#166534;--warn:#92400e}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.35 Arial,Helvetica,sans-serif}
.app{max-width:1680px;margin:0 auto;padding:14px}.head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.head h1{font-size:22px;margin:0}.sub{font-size:12px;color:var(--muted);margin-top:4px}.ver{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:999px;background:#fff;padding:7px 11px}
.layout{display:grid;grid-template-columns:minmax(760px,1fr) 430px;gap:14px;align-items:start}.card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 4px 18px rgba(15,23,42,.04)}
.canvas-card{padding:13px;position:sticky;top:10px;align-self:start;max-height:calc(100vh - 20px);overflow:hidden}.panel{padding:14px;position:relative}.panel-focus{outline:2px solid rgba(47,104,227,.28);outline-offset:3px;animation:panelFocusPulse .75s ease}.section-editor.panel-focus{outline-color:rgba(47,104,227,.4)}.panel-selected{border-color:#2563eb!important;background:#eff6ff!important;box-shadow:0 0 0 3px rgba(37,99,235,.18)!important}.block-door-section.panel-selected,.framuga-select-card.panel-selected{border-color:#2563eb!important;background:#eff6ff!important;box-shadow:0 0 0 3px rgba(37,99,235,.18)!important}@keyframes panelFocusPulse{0%{box-shadow:0 0 0 0 rgba(47,104,227,.20)}100%{box-shadow:0 0 0 10px rgba(47,104,227,0)}}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px}.toolbar h2{font-size:17px;margin:0}.zoom{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.btn{height:34px;padding:0 10px;border:1px solid #cbd7e7;border-radius:9px;background:#fff;color:#27364b;cursor:pointer;font-weight:700;font-size:12px}.btn.active{background:#edf4ff;border-color:#8eb0ef;color:#1d4ed8}.zoomValue{font-variant-numeric:tabular-nums;min-width:48px;text-align:center;font-weight:800;color:#334155}
.status{padding:8px 10px;border:1px solid #cfe5d5;background:#effaf2;color:var(--ok);border-radius:9px;margin-bottom:9px;font-size:12px}.status.warn{background:#fff8e8;border-color:#eed5a8;color:var(--warn)}
.outside-plaque{display:flex;align-items:center;gap:8px;margin:0 0 9px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:11px;color:#64748b}.outside-plaque .swatch{width:34px;height:14px;border-radius:4px;border:1px solid #94a3b8;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}.outside-plaque strong{color:#172033;font-weight:600}
.interaction-hint{display:flex;align-items:flex-start;gap:8px;margin:0 0 9px;padding:9px 10px;border:2px solid #f59e0b;border-radius:10px;background:linear-gradient(90deg,#fff4ae 0%,#ffe477 100%);color:#5b3a00;box-shadow:0 4px 12px rgba(245,158,11,.22);transition:opacity .2s ease,transform .2s ease,max-height .2s ease,margin .2s ease,padding .2s ease;animation:interactionHintFlash .42s ease-in-out 0s 2}.interaction-hint-mark{display:inline-flex;flex:0 0 25px;width:25px;height:25px;align-items:center;justify-content:center;border-radius:8px;background:#f59e0b;color:#fff;font-size:18px;font-weight:700;line-height:1}.interaction-hint-copy{display:grid;gap:2px;min-width:0;flex:1}.interaction-hint-copy strong{font-size:12px;font-weight:800;color:#5b3a00}.interaction-hint-copy span{font-size:11px;line-height:1.4;color:#704d00}.interaction-hint-close{flex:0 0 auto;border:0;background:transparent;color:#7a4b00;padding:2px 0;font:inherit;font-size:11px;font-weight:800;cursor:pointer;white-space:nowrap}.interaction-hint-close:hover{text-decoration:underline;text-underline-offset:2px}.interaction-hint.dismissed{opacity:0;transform:translateY(-4px);max-height:0;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;border-width:0;overflow:hidden}@keyframes interactionHintFlash{0%,100%{box-shadow:0 4px 12px rgba(245,158,11,.22);filter:none}50%{box-shadow:0 0 0 7px rgba(245,158,11,.28),0 7px 18px rgba(245,158,11,.34);filter:brightness(1.06)}}@media(prefers-reduced-motion:reduce){.interaction-hint{animation:none;transition:none}}
.context-hidden{display:none!important}.field-disabled-explained{position:relative;border-radius:8px;cursor:not-allowed}.field-disabled-explained label{color:#7b8797!important}.field-disabled-explained select,.field-disabled-explained input{background:#f3f5f8!important;border-color:#c7d1df!important;color:#7b8797!important;cursor:not-allowed;box-shadow:none!important}.disabled-control-note{display:block;margin-top:4px;padding:4px 6px;border:1px dashed #d7a53a;border-radius:6px;background:#fff9e8;color:#7a5a19;font-size:10px;line-height:1.25}.disabled-control-note[hidden]{display:none}.field-disabled-explained.is-prompted .disabled-control-note{background:#ffefb0;border-color:#d88900;box-shadow:0 0 0 3px rgba(245,158,11,.16);animation:inactiveControlPrompt .34s ease-in-out 0s 2}@keyframes inactiveControlPrompt{0%,100%{transform:translateX(0)}50%{transform:translateX(3px)}}
#tSections .section-editor:not(.panel-selected) .row{display:grid!important}#tSections .section-editor:not(.panel-selected) .checkrow{display:flex!important}
.runtime-error{align-self:center;justify-self:center;display:grid;gap:8px;max-width:460px;margin:auto;padding:18px 20px;border:1px solid #fecaca;border-radius:12px;background:#fff1f2;color:#991b1b;text-align:center}.runtime-error strong{font-size:15px}.runtime-error span{font-size:12px;line-height:1.45}
.viewport{border:1px solid #dbe5f2;background:#fff;border-radius:13px;overflow:auto;height:calc(100vh - 215px);min-height:460px;max-height:720px;position:relative}.drawingStage{min-width:100%;min-height:100%;display:flex;align-items:flex-start;justify-content:flex-start;padding:28px}.drawingStage svg{display:block;flex:none}
.group{border-top:1px solid #e6edf6;padding-top:11px;margin-top:11px}.group:first-child{border-top:0;padding-top:0;margin-top:0}.group-title{font-size:14px;font-weight:800;margin-bottom:8px}.row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.row.one{grid-template-columns:1fr}.field label{display:block;font-size:11px;font-weight:800;color:#52627a;margin:0 0 4px}.field input,.field select{width:100%;height:37px;border:1px solid #cad7e7;border-radius:9px;background:#fff;padding:0 9px;color:var(--text);font:inherit}.note{font-size:11px;color:var(--muted);margin-top:5px}.hidden{display:none!important}.calculator-nav-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.calculator-nav-chip{display:inline-flex;align-items:center;min-height:30px;padding:5px 10px;border:1px solid #bfd3ee;border-radius:999px;background:#fff;color:#1d4ed8;text-decoration:none;font-size:11px;font-weight:800}.calculator-nav-chip:hover{background:#edf4ff;border-color:#8eb0ef}.catalog-import-notice{padding:10px 12px;margin:0 0 12px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1e3a8a;font-size:12px;line-height:1.45}.chip{display:inline-block;border:1px solid #d7e1ee;background:#f8fbff;color:#53657d;padding:5px 8px;border-radius:999px;font-size:11px}
.summary{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:7px;margin-top:9px}.sum{border:1px solid #e1e8f1;border-radius:10px;padding:7px 9px;background:#fbfdff}.sum .k{font-size:10px;color:var(--muted)}.sum .v{font-size:14px;font-weight:800;margin-top:2px}.devnote{margin-top:10px;padding:9px 10px;border:1px solid #ead8a5;background:#fff9e8;color:#765613;border-radius:10px;font-size:11px}

.tabs{display:flex;gap:6px;margin-bottom:12px}.tab{height:38px;padding:0 15px;border:1px solid #cbd7e7;border-radius:10px;background:#fff;font-weight:800;cursor:pointer;color:#52627a}.tab.active{background:#edf4ff;border-color:#8eb0ef;color:#1d4ed8}.tabpane.hidden{display:none!important}.section-editor{border:1px solid #dde6f2;border-radius:10px;padding:8px;background:#fbfdff;margin-top:7px}.section-head{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:800;margin-bottom:6px}.checkrow{display:flex;gap:7px;align-items:center;font-size:12px}.checkrow input{width:auto;height:auto}.request-list{display:grid;gap:8px}.request-item{border:1px solid #dfe7f1;border-radius:10px;padding:9px;background:#fbfdff}.request-item-head{display:flex;justify-content:space-between;gap:10px;font-weight:800}.muted{color:var(--muted);font-size:11px}.primary{background:#2f68e3;color:#fff;border-color:#2f68e3}.actions{display:flex;gap:7px;flex-wrap:wrap}.service-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.mini{font-size:11px}.svg-hit{cursor:pointer}.svg-hit:hover{filter:drop-shadow(0 0 3px rgba(47,104,227,.45))}.svg-selected{filter:drop-shadow(0 0 4px rgba(245,158,11,.75))}.dim-click{cursor:pointer}.dim-click:hover{fill:#1d4ed8;text-decoration:underline}.accessory-card{border:1px solid #dde6f2;border-radius:10px;padding:8px;background:#fbfdff;margin-top:7px}.future-disabled{opacity:.55;pointer-events:none}.field input[type=checkbox]{width:auto;height:auto}.qtyrow{display:grid;grid-template-columns:100px 1fr;gap:8px;align-items:end}

/* v0.5.2 — InteractionLayer из v1.15.7 */
.quick-editor,.dim-editor{position:absolute;z-index:120;display:none;padding:10px;border:1px solid #93b4f8;border-radius:11px;background:rgba(255,255,255,.98);box-shadow:0 12px 34px rgba(15,23,42,.20);backdrop-filter:blur(6px)}
.quick-editor.show,.dim-editor.show{display:block}.quick-editor{width:280px}.dim-editor{width:190px}.quick-head{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:8px}.quick-head strong{font-size:12px}.quick-close{width:28px;height:28px;border:0;border-radius:7px;background:#eef2f7;color:#475569;cursor:pointer;font-size:17px}.quick-grid{display:grid;grid-template-columns:88px 1fr;gap:7px;align-items:center}.quick-grid label{font-size:10px;font-weight:700;color:#64748b}.quick-grid input,.quick-grid select,.dim-editor input,.dim-editor select{width:100%;height:34px;border:1px solid #cfd9e7;border-radius:8px;background:#fff;padding:6px 8px;font-size:12px}.quick-check{display:flex;gap:7px;align-items:center;margin-top:8px;font-size:11px;color:#475569}.quick-check input{width:auto;height:auto}.quick-note{margin-top:6px;font-size:9px;color:#64748b}.dim-editor input{font-weight:700;font-size:13px}.dim-editor select{width:100%;height:34px;border:1px solid #cfd9e7;border-radius:8px;background:#fff;padding:6px 8px;font-size:12px}.svg-hit{cursor:pointer}.svg-hit:hover{filter:drop-shadow(0 0 3px rgba(37,99,235,.4))}.svg-selected{filter:drop-shadow(0 0 4px rgba(245,158,11,.75))}.dim-click{cursor:pointer}.dim-click:hover{fill:#2563eb;text-decoration:underline}

.limit-toast{position:absolute;z-index:250;right:18px;top:90px;max-width:390px;padding:10px 12px;border:1px solid #fecaca;border-radius:10px;background:#fff1f2;color:#b91c1c;font-size:12px;font-weight:800;line-height:1.35;box-shadow:0 10px 30px rgba(15,23,42,.16)}
.assistbox{margin:8px 0 0;padding:9px 10px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1e3a8a;font-size:11px;line-height:1.42}.assistbox.hidden{display:none}.assistbox strong{display:block;margin-bottom:3px;font-size:12px}.assistbox button{margin-top:7px;border:0;background:transparent;color:#1d4ed8;padding:0;font:inherit;font-weight:800;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.quick-error{display:none;margin-top:7px;padding:7px 8px;border:1px solid #fecaca;border-radius:8px;background:#fff1f2;color:#b91c1c;font-size:10px;font-weight:700;line-height:1.3}.quick-error.show{display:block}
/* v0.5.3 — limits + glass alignment */
.limitbox{margin-top:9px;padding:9px 10px;border:1px solid #dce5ef;border-radius:10px;background:#fbfdff;font-size:11px;line-height:1.4}.limitbox.ok{border-color:#bbf7d0;background:#f0fdf4;color:#166534}.limitbox.warn{border-color:#fde68a;background:#fffbeb;color:#92400e}.limitbox.no{border-color:#fecaca;background:#fff1f2;color:#991b1b}.limitbox strong{font-size:12px}.limits-guide{margin:12px 0 0;padding:0 14px 14px}.limits-guide details{border:1px solid #dbe5f2;border-radius:12px;background:#fff;overflow:hidden}.limits-guide summary{cursor:pointer;padding:10px 12px;font-weight:800;color:#334155}.limits-guide-body{border-top:1px solid #edf1f6;padding:10px}.limits-switch{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.limits-switch button{height:30px;padding:0 9px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;cursor:pointer;font-size:11px;font-weight:700}.limits-switch button.active{border-color:#2563eb;background:#eff6ff;color:#1d4ed8}.limits-legend{display:flex;gap:12px;flex-wrap:wrap;margin:7px 0;font-size:10px;color:#64748b}.limits-map{overflow:auto;border:1px solid #e2e8f0;border-radius:9px;padding:6px;background:#fff}.limits-map svg{display:block;min-width:620px;width:100%;height:auto}.limit-dot{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}.limit-dot.ok{background:#bbf7d0}.limit-dot.warn{background:#fde68a}.limit-dot.no{background:#e5e7eb}.align-card{border:1px solid #dce5ef;border-radius:10px;padding:8px;background:#fbfdff;margin-top:7px}.align-card .checkrow{margin-top:6px}.block-door-section{margin-top:12px;padding:10px;border:2px solid #c7d4e6;border-radius:12px;background:#f8fbff}.block-door-title{display:flex;align-items:center;justify-content:space-between;margin:-2px 0 9px;font-size:13px;font-weight:900;color:#26364d}.block-door-title span:last-child{font-size:10px;font-weight:700;color:#64748b}.framuga-select-card{border:1px solid transparent;border-radius:10px;padding:4px;margin:-4px}
@media(max-width:1180px){.layout{grid-template-columns:1fr}.canvas-card{position:relative;top:auto;max-height:none;overflow:visible}.panel{position:static;order:-1}.viewport{height:620px;min-height:430px}.summary{grid-template-columns:repeat(2,1fr)}}

/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   - sketch/result left; wider semantic selector panel right
   - clear lightweight typography (400/500/600, no heavy small text)
   - accordion-ready groups and completion overview
   - limits map lives directly under the sketch
   ================================================================ */
:root{--panel-soft:#f8fafc;--panel-edge:#d9e3ef;--panel-ink:#243247;--panel-muted:#68778d}
body{font-family:Inter,"Segoe UI",Arial,sans-serif;font-weight:400}
.layout{grid-template-columns:minmax(650px,1fr) 540px;gap:16px}
.canvas-card{max-height:calc(100vh - 20px);overflow:auto}
.panel{padding:12px 14px 18px}
.panel-overview{border:1px solid #cddcf0;background:#f7fbff;border-radius:12px;padding:10px 11px;margin-bottom:10px}
.panel-overview-head{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:12px;font-weight:500}
.completion-track{height:6px;background:#e8eef6;border-radius:99px;overflow:hidden;margin-top:7px}
.completion-bar{height:100%;width:0;background:#2f68e3;transition:width .18s}
.completion-note{margin-top:6px;font-size:11px;color:#63738a;font-weight:400}
.group{border:1px solid var(--panel-edge);border-radius:12px;padding:10px 11px;margin:9px 0 0;background:#fff}
.group:first-child{border-top:1px solid var(--panel-edge);padding-top:10px;margin-top:0}
.group-title{display:flex;align-items:center;gap:8px;margin:-2px 0 8px;font-size:13px;font-weight:600;color:#27364b;cursor:pointer;user-select:none}
.group-title::before{content:"▾";width:16px;color:#7a899c;font-size:12px;transition:transform .15s}
.group.group-collapsed .group-title::before{transform:rotate(-90deg)}
.group.group-collapsed>:not(.group-title){display:none!important}
.group.group-complete{border-color:#c9e7d1}
.group.group-complete .group-title::after{content:"✓";margin-left:auto;color:#16803c;font-size:12px;font-weight:600}
.group.group-attention{border-color:#f4c873;background:#fffdf7}
.field label{font-size:11px;font-weight:400;color:#47586f;letter-spacing:.005em}
.field input,.field select{font-size:13px;font-weight:400;color:#1f2e43}
.section-head{font-size:11px;font-weight:500}
.note,.muted,.quick-note{font-weight:400}
.btn,.tab{font-weight:500}
.zoomValue{font-weight:500}
.panel-selected{border-color:#2563eb!important;background:#eaf3ff!important;box-shadow:0 0 0 3px rgba(37,99,235,.20)!important}
.block-door-title span:first-child{font-weight:600}
.handle-review{display:none;margin-top:6px;padding:7px 8px;border:1px solid #f2c36b;border-radius:8px;background:#fff8e7;color:#7a5412;font-size:11px}
.handle-review.show{display:block}
#handleColor.handle-needs-review{border-color:#e4a52f;box-shadow:0 0 0 3px rgba(228,165,47,.16);background:#fffaf0}
.output-zone{display:block;margin-top:10px}
.output-card{border:1px solid #dce5ef;border-radius:12px;background:#fbfdff;padding:10px}
.output-card h3{font-size:13px;font-weight:600;margin:0 0 8px}
.output-table{width:100%;border-collapse:collapse;font-size:11px}
.output-table th,.output-table td{padding:6px 7px;border-bottom:1px solid #e6edf5;text-align:left;vertical-align:top;font-weight:400}
.output-table th{width:34%;color:#5b6b81;background:#f8fafc}
.output-table tr:last-child th,.output-table tr:last-child td{border-bottom:0}
.output-subtitle{font-size:11px;font-weight:600;margin:10px 0 5px;color:#334155}
.tech-info{margin-top:8px;border:1px dashed #cfd8e5;border-radius:10px;background:#fff}
.tech-info summary{cursor:pointer;padding:8px 10px;font-size:11px;font-weight:500;color:#58687d}
.tech-info-body{padding:0 10px 10px;font-size:11px;color:#5d6d82}
.limits-guide{margin:10px 0 0;padding:0}
.limits-guide details{border-radius:12px}
.limits-guide summary{font-size:12px;font-weight:600}
.limits-map{max-height:270px;overflow:auto}
.limits-map svg{min-width:620px}
.aesthetic-note{margin-top:7px;padding:7px 8px;border-radius:8px;background:#f7f8fb;color:#66758b;font-size:10px}
.accessory-card{background:#fff;border-color:#dbe4ef}
.accessory-card .section-head{font-size:12px}
.catalog-note{font-size:10px;color:#708097;margin-top:5px}
.slopes-card,.components-card{border:1px solid #dbe4ef;border-radius:10px;padding:9px;background:#fbfdff;margin-top:8px}
.components-table{width:100%;border-collapse:collapse;font-size:10px;margin-top:7px}
.components-table th,.components-table td{border-bottom:1px solid #e5ebf2;padding:5px 4px;text-align:left;font-weight:400}
.components-table select,.components-table input{width:100%;height:31px;border:1px solid #ccd8e7;border-radius:7px;background:#fff;padding:3px 6px;font-size:10px;font-weight:400}
.components-table .icon-remove{width:30px;height:30px;padding:0}
.sill-limits{font-size:10px;color:#6b7a90;margin-top:4px}
.cut-list{margin:4px 0 0;padding-left:18px}
.cut-list li{margin:2px 0}
.final-check{display:grid;gap:5px;font-size:11px}
.final-check-row{display:flex;justify-content:space-between;gap:8px;padding:5px 7px;border:1px solid #e2e8f0;border-radius:8px;background:#fbfdff}
.final-check-row .ok{color:#16733a}.final-check-row .muted-state{color:#7b8798}
#drawingTechGroup{display:none!important}
@media(max-width:1180px){.layout{grid-template-columns:minmax(560px,1fr) 480px}}
@media(max-width:980px){.layout{grid-template-columns:1fr}.canvas-card{position:relative;top:auto;max-height:none;overflow:visible}.panel{padding:12px}}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   Secondary completion is intentionally outside the narrow selector panel.
   ================================================================ */
.completion-below{margin-top:10px;border:1px solid #d9e3ef;border-radius:14px;background:#fff;padding:11px}
.completion-below>details>summary{cursor:pointer;font-size:13px;font-weight:600;color:#27364b;padding:2px 2px 9px}
.completion-below-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}
.completion-wide{grid-column:1/-1}
.completion-below .accessory-card,.completion-below .slopes-card,.completion-below .components-card{margin:0;border:1px solid #dbe4ef;border-radius:11px;padding:10px;background:#fbfdff}
.completion-below .accessory-card+.accessory-card{margin-top:9px}
.completion-below .section-head{font-size:12px;font-weight:500;margin-bottom:6px;color:#080808}
.completion-below .row{gap:8px}
.completion-below .field label{font-size:10.5px;color:#080808;font-weight:400}
.flashing-sub{margin-top:10px;padding-top:9px;border-top:1px solid #e4eaf1}
.flashing-title{font-size:11px;font-weight:600;color:#334155;margin-bottom:7px}
.flashing-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:8px}
.completion-output-order{display:flex;flex-direction:column;gap:10px}
.canvas-card>.limits-guide{order:1}
.canvas-card>.completion-below{order:2}
.canvas-card>.output-zone{order:3}
.canvas-card>.tech-info{order:4}
.canvas-card{display:flex;flex-direction:column}
.canvas-card>.toolbar,.canvas-card>.status,.canvas-card>.viewport-wrap,.canvas-card>.quick-editor,.canvas-card>.dim-editor{flex:0 0 auto}
.panel .group[data-secondary-completion="true"]{display:none!important}
@media(max-width:1150px){.completion-below-grid{grid-template-columns:1fr}.completion-wide{grid-column:1}.flashing-grid{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.flashing-grid{grid-template-columns:1fr}}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   Black, lightweight typography; compact controls; true accordion.
   ================================================================ */
.layout{grid-template-columns:minmax(650px,1fr) 505px;gap:12px}
.panel{padding:8px 9px 12px;color:#080808}
.panel-overview{padding:7px 8px;margin-bottom:5px;border-radius:9px}
.panel-overview-head{font-size:11px;color:#080808;font-weight:500}
.completion-track{height:4px;margin-top:4px}
.completion-note{margin-top:4px;font-size:10px;color:#111;font-weight:400;line-height:1.2}
.group{padding:6px 7px;margin:4px 0 0;border-radius:9px;background:#fff}
.group:first-child{padding-top:6px}
.group-title{margin:0 0 5px;font-size:12px;line-height:1.1;color:#050505;font-weight:500;gap:5px}
.group-title::before{width:12px;font-size:10px;color:#111}
.group.group-collapsed{padding-bottom:5px}
.group.group-collapsed .group-title{margin-bottom:0}
.group.group-complete .group-title::after{font-size:11px}
.row{gap:5px;margin-top:4px}
.row.one{grid-template-columns:1fr}
.field label{font-size:10.5px;color:#080808;font-weight:400;margin-bottom:2px;line-height:1.1}
.field input,.field select{height:30px;min-height:30px;padding:4px 8px;font-size:12px;color:#050505;font-weight:400;border-radius:7px}
.field select{padding-right:25px}
.checkrow{font-size:10.5px;color:#080808;margin-top:4px;gap:5px}
.section-editor{padding:5px 6px;margin-top:4px;border-radius:8px;border-color:#d2dbe8;background:#fff}
.section-editor .section-head{font-size:10.5px;color:#070707;font-weight:500;margin-bottom:0;cursor:pointer}
.section-editor:not(.panel-selected) .row,
.section-editor:not(.panel-selected) .checkrow{display:none!important}
.section-editor.panel-selected{padding:6px 7px;border:2px solid #1769e8!important;background:#dfeeff!important;box-shadow:0 0 0 2px rgba(23,105,232,.18)!important}
.section-editor.panel-selected .section-head{margin-bottom:3px;color:#061b3d}
.block-door-section.panel-selected,.framuga-select-card.panel-selected{
  border:2px solid #1769e8!important;background:#dfeeff!important;
  box-shadow:0 0 0 2px rgba(23,105,232,.18)!important
}
.panel-selected{border:2px solid #1769e8!important;background:#dfeeff!important;box-shadow:0 0 0 2px rgba(23,105,232,.18)!important}
.block-door-section{padding:7px;margin-top:5px;border-radius:9px}
.block-door-title{margin-bottom:4px}
.block-door-title span:first-child{font-size:11px;color:#050505;font-weight:500}
.block-door-title span:last-child{font-size:9.5px;color:#222}
.align-card{margin-top:5px;padding:6px;border-radius:8px}
.note,.catalog-note,.sill-limits{font-size:9.5px;color:#202020;line-height:1.2}
.handle-review{margin-top:3px;padding:5px 6px;font-size:9.5px}
.btn{height:30px;padding:0 8px;font-size:11px;font-weight:500;border-radius:7px}
.qtyrow{gap:6px}
.panel-final{margin-top:6px;padding:7px;border:1px solid #b9c9df;border-top:2px solid #2563eb;border-radius:9px;background:#f8fbff}
.panel-final-head{font-size:11.5px;color:#050505;font-weight:500;margin-bottom:5px}
.final-check{display:grid;grid-template-columns:1fr 1fr;gap:3px}
.final-check-row{padding:4px 5px;border-radius:6px;font-size:9.5px;color:#080808}
.panel-final-actions{display:grid;grid-template-columns:78px 1fr;gap:6px;align-items:end;margin-top:6px;padding-top:6px;border-top:1px solid #dbe5f0}
.qty-compact input{width:100%}
.devnote{margin-top:6px;font-size:9px;line-height:1.2;color:#333}
#currentLimitBox,.assistbox{margin:5px 0;padding:6px 7px;font-size:10px;border-radius:8px}
.chip{min-height:28px;padding:5px 7px;font-size:10px}
@media(max-width:1180px){.layout{grid-template-columns:minmax(560px,1fr) 470px}}
@media(max-width:980px){.layout{grid-template-columns:1fr}.panel{padding:7px}}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   Right = all controls. Left = sketch + maps + read-only result tables.
   ================================================================ */
.completion-below{display:none!important}
.completion-compact{display:grid;gap:4px}
.compact-subgroup{border-top:1px solid #e1e7ef;padding-top:5px;margin-top:1px}
.compact-subgroup:first-child{border-top:0;padding-top:0}
.completion-compact .accessory-card{padding:5px 6px;margin:0;border:1px solid #d7e0eb;border-radius:7px;background:#fff}
.completion-compact .accessory-card+.accessory-card{margin-top:5px}
.completion-compact .accessory-card .section-head{font-size:10.5px;margin-bottom:3px}
.completion-compact .flashing-sub{margin-top:5px;padding-top:5px}
.completion-compact .flashing-title{font-size:10.5px;margin-bottom:3px}
.completion-compact .flashing-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.completion-compact .sill-limits,.completion-compact .catalog-note{display:none}
.completion-compact .components-table{font-size:9px;margin-top:4px}
.completion-compact .components-table th,.completion-compact .components-table td{padding:3px 2px}
.completion-compact .components-table select,.completion-compact .components-table input{height:27px;font-size:9px;padding:2px 4px}
.completion-compact .icon-remove{width:26px;height:26px}
.panel-final{margin-top:6px!important;background:#f2f7ff!important;border:1px solid #8fb5ef!important;border-top:3px solid #1769e8!important;box-shadow:0 3px 10px rgba(23,105,232,.08)}
.panel-final-head{font-size:12px!important;color:#050505!important}
#addRequestBtn{font-size:12px;font-weight:500}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   Completion first, technical geometry second; compact + high contrast.
   ================================================================ */
.output-card{padding:8px;border-color:#cbd6e3;background:#fff}
.output-card h3{font-size:12.5px;font-weight:600;color:#050505;margin:0 0 6px}
.output-section-title{font-size:11.5px;font-weight:600;color:#050505;margin:8px 0 4px}
.output-table{font-size:10.5px;color:#050505;border:1px solid #dbe3ec}
.output-table thead th{background:#eef3f8;color:#050505;font-weight:500;border-bottom:1px solid #cfd9e4}
.output-table th,.output-table td{padding:4px 6px;border-bottom:1px solid #e2e8f0;color:#050505;font-weight:400;line-height:1.22}
.output-table th{width:auto;background:#f8fafc;color:#050505}
.output-table.compact-grid{table-layout:fixed}
.output-table.compact-grid th:nth-child(1),.output-table.compact-grid td:nth-child(1){width:22%}
.output-table.compact-grid th:nth-child(2),.output-table.compact-grid td:nth-child(2){width:24%}
.output-table.compact-grid th:nth-child(3),.output-table.compact-grid td:nth-child(3){width:32%}
.output-table.compact-grid th:nth-child(4),.output-table.compact-grid td:nth-child(4){width:22%}
.output-muted{color:#202020}
.tech-output{margin-top:8px}
.tech-output .output-table th:first-child{width:34%}
.tech-info summary,.tech-info-body{color:#111}
.cut-list{font-size:10.5px;color:#050505;margin:4px 0 0;padding-left:17px}
.cut-list li{margin:1px 0}
.catalog-note{color:#111}


/* v0.8.25 LIMITS-FULLHEIGHT-CLEANUP */
.compact-zone-label{font-size:10.5px;font-weight:500;color:#050505;margin:3px 0 2px;padding-top:2px}
.compact-zone-out{margin-top:5px;padding-top:5px;border-top:1px solid #e5e9ef}
.completion-compact .accessory-card .section-head{margin-bottom:2px}
.completion-compact .accessory-card .row{margin-top:3px}
.completion-compact .field label{margin-bottom:1px}


/* v0.8.25 LIMITS-FULLHEIGHT-CLEANUP */
.length-row{grid-template-columns:minmax(0,1fr) auto!important;align-items:end}
.length-row .calc-reset{height:30px;white-space:nowrap;padding:0 8px;font-size:9.5px}
.measured-length[data-auto-length="1"]{background:#f7fbff;border-color:#9fbce7}
.measured-length[data-auto-length="0"]{background:#fff;border-color:#cfd8e4}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
#currentLimitBox{margin:0 0 5px!important}
#constraintAssist{margin:0 0 5px!important}
.panel-overview{margin-bottom:5px!important}
.request-cta{
  position:sticky;
  bottom:0;
  z-index:30;
  display:grid;
  grid-template-columns:74px 1fr;
  gap:6px;
  align-items:end;
  margin-top:6px;
  padding:7px;
  border:1px solid #7ba8ef;
  border-top:3px solid #1769e8;
  border-radius:9px;
  background:rgba(248,251,255,.98);
  box-shadow:0 -3px 12px rgba(23,105,232,.10);
  backdrop-filter:blur(5px);
}
.request-cta-btn{height:32px;font-size:12px;font-weight:500}
.tech-check-block{margin:8px 10px 10px;padding-top:7px;border-top:1px solid #dce4ee}
.tech-check-title{font-size:10.5px;font-weight:600;color:#050505;margin-bottom:5px}
.tech-check-block .final-check{grid-template-columns:1fr 1fr}
.output-table.compact-grid td:nth-child(4){white-space:normal}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.canvas-card{max-height:none!important;overflow:visible!important}
.viewport{
  height:clamp(600px,calc(100vh - 175px),820px)!important;
  min-height:600px!important;
  max-height:820px!important;
  overflow:hidden!important;
}
.drawingStage{
  min-width:100%;min-height:100%;width:100%;height:100%;
  display:flex!important;align-items:center!important;justify-content:center!important;
  padding:12px!important;overflow:hidden!important;
}
.drawingStage svg{margin:auto!important}

.request-submit{
  display:grid!important;
  grid-template-columns:78px minmax(0,1fr)!important;
  gap:6px!important;
  align-items:end!important;
  position:static!important;
  margin:6px 0 0!important;
  padding:7px!important;
  border:2px solid #1769e8!important;
  border-radius:9px!important;
  background:#f7fbff!important;
  box-shadow:none!important;
}
.request-submit-btn{height:34px!important;font-size:12px!important;font-weight:500!important}
.request-qty input{width:100%}

.group.has-active-selection{
  border:2px solid #1769e8!important;
  background:#f6faff!important;
  box-shadow:0 0 0 3px rgba(23,105,232,.12)!important;
}
.group.has-active-selection>.group-title{color:#0b3f91!important}
.section-editor.panel-selected,
.block-door-section.panel-selected,
.framuga-select-card.panel-selected{
  border:2px solid #0f66e8!important;
  background:#dcecff!important;
  box-shadow:0 0 0 3px rgba(15,102,232,.20)!important;
}
.canvas-card>.summary{order:1}
.canvas-card>.tech-info{order:2}
.canvas-card>.limits-guide{order:3}
@media(max-width:1180px){.viewport{height:620px!important;min-height:560px!important}}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.group.has-active-selection{
  border:2px solid #0f66e8!important;
  background:#f4f9ff!important;
  box-shadow:0 0 0 3px rgba(15,102,232,.15)!important;
}
.group.has-active-selection>.group-title{color:#063b86!important}
.group.group-complete:not(.has-active-selection){
  border-color:#c9e7d1!important;
  background:#fff!important;
  box-shadow:none!important;
}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   Screen zoom != print scale. Fit uses exact SVG fixed margins.
   ================================================================ */
.viewport{
  height:clamp(640px,calc(100vh - 145px),860px)!important;
  min-height:640px!important;
  max-height:860px!important;
  overflow:hidden!important;
}
.drawingStage{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  padding:12px!important;
  overflow:hidden!important;
}
.drawingStage svg{
  display:block!important;
  flex:0 0 auto!important;
  margin:auto!important;
}
@media(max-width:1180px){
  .viewport{height:640px!important;min-height:580px!important}
}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.app{padding:7px 10px 10px!important}
.head{min-height:28px!important;margin-bottom:4px!important;align-items:center!important}
.head h1{font-size:16px!important;line-height:1!important;font-weight:600!important}
.head .sub{display:none!important}
.ver{font-size:9px!important;padding:4px 7px!important;opacity:.7}
.panel{padding-top:7px!important}
.panel-tabs{
  display:flex;gap:0;margin:-7px -9px 7px;padding:0 8px;
  border-bottom:1px solid #cbd7e7;background:#f4f7fb;border-radius:12px 12px 0 0
}
.panel-tabs .tab{
  height:34px!important;padding:0 13px!important;margin-bottom:-1px;
  border:0!important;border-bottom:3px solid transparent!important;border-radius:0!important;
  background:transparent!important;color:#53657d!important;font-size:11px!important;font-weight:500!important
}
.panel-tabs .tab.active{color:#1456bd!important;border-bottom-color:#1769e8!important;background:#fff!important}
.toolbar{margin-bottom:5px!important;min-height:30px}
.toolbar h2{font-size:14px!important;font-weight:600!important}
.status{margin-bottom:5px!important;padding:6px 8px!important;font-size:10.5px!important}
.zoom .btn{height:28px!important;padding:0 7px!important;font-size:10px!important}
.zoomValue{font-size:10px!important;min-width:38px!important;font-weight:500!important}
.viewport{background:#eef2f7!important;border-color:#cfd9e5!important;overflow:hidden!important}
.drawingStage{padding:12px!important;background:#eef2f7!important}
.drawingStage svg{
  background:#fff!important;
  box-shadow:0 0 0 1px #cfd8e4,0 5px 16px rgba(15,23,42,.10)!important;
  border-radius:2px
}
.output-zone{margin-top:7px!important}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.toolbar{
  margin-bottom:3px!important;
  min-height:24px!important;
  padding:0 2px!important;
}
.toolbar h2{
  font-size:13px!important;
  line-height:24px!important;
  margin:0!important;
}
.viewport{
  position:relative!important;
}
.viewport>.status{
  position:absolute!important;
  left:10px!important;
  bottom:8px!important;
  z-index:12!important;
  width:auto!important;
  max-width:48%!important;
  margin:0!important;
  padding:3px 6px!important;
  border:0!important;
  border-radius:5px!important;
  background:rgba(248,250,252,.86)!important;
  color:#536273!important;
  font-size:9px!important;
  line-height:1.15!important;
  box-shadow:none!important;
  pointer-events:none!important;
}
.zoom-rail{
  position:absolute!important;
  right:8px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  z-index:14!important;
  display:flex!important;
  flex-direction:column!important;
  gap:5px!important;
  align-items:stretch!important;
  margin:0!important;
  padding:5px!important;
  border:1px solid #ccd8e7!important;
  border-radius:9px!important;
  background:rgba(255,255,255,.94)!important;
  box-shadow:0 3px 10px rgba(15,23,42,.08)!important;
}
.zoom-rail .btn{
  min-width:48px!important;
  height:28px!important;
  padding:0 6px!important;
  font-size:10px!important;
}
.zoom-rail .zoomValue{
  min-width:48px!important;
  text-align:center!important;
  padding:2px 0!important;
  font-size:10px!important;
}
@media(max-width:980px){
  .zoom-rail{right:6px!important}
  .viewport>.status{max-width:60%!important}
}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.spec-table td:nth-child(1){width:17%}
.spec-table td:nth-child(2){width:18%}
.spec-table td:nth-child(3){width:65%}
.spec-article{font-weight:500;color:#050505}
.spec-link-placeholder{font-size:9px;color:#6b7280}
.price-table{table-layout:fixed}
.price-table th,.price-table td{font-size:9.5px;padding:4px 5px}
.price-table th:nth-child(1){width:10%}
.price-table th:nth-child(2){width:18%}
.price-table th:nth-child(3){width:7%}
.price-table th:nth-child(4){width:8%}
.price-table th:nth-child(5){width:26%}
.price-table th:nth-child(6){width:10%}
.price-table th:nth-child(7){width:10%}
.price-table th:nth-child(8){width:11%}
.totals-table{max-width:560px}
.totals-table th{width:42%}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.request-layout{align-items:start}
.request-main{padding:14px;min-height:520px}
.request-panel{position:sticky;top:10px}
.request-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:10px}
.request-head h2{margin:0 0 5px;font-size:17px}
.request-meta-line{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:10px;color:#64748b}
.request-status-badge{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;font-weight:700}
.request-status-badge.draft{background:#eef2f7;color:#475569}
.request-status-badge.formed{background:#ecfdf3;color:#166534}
.request-head-actions{display:flex;gap:6px}
.request-empty{display:flex;flex-direction:column;gap:4px;padding:22px;border:1px dashed #cbd5e1;border-radius:12px;text-align:center;color:#64748b;background:#fafcff}
.request-empty strong{color:#334155}
.request-list{display:grid;gap:9px}
.request-item{padding:0!important;overflow:hidden;background:#fff!important;border:1px solid #d8e2ee!important}
.request-item.editing{border-color:#2563eb!important;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.request-item-summary{display:grid;grid-template-columns:82px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px}
.request-thumb{height:62px;border:1px solid #e2e8f0;border-radius:7px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}
.request-thumb svg{display:block;max-width:100%;max-height:100%;width:auto!important;height:auto!important}
.request-item-info{min-width:0}
.request-item-title{display:flex;align-items:baseline;gap:8px;font-size:12px;font-weight:800;color:#1f2937}
.request-item-no{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:#edf4ff;color:#1d4ed8}
.request-item-size{margin-top:3px;font-size:11px;color:#334155}
.request-item-sub{margin-top:3px;font-size:9.5px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.request-item-actions{display:flex;gap:4px;align-items:center}
.request-icon-btn{width:31px;height:31px;padding:0!important;display:grid;place-items:center;font-size:14px!important}
.request-expand{border-top:1px solid #eef2f7}
.request-expand summary{cursor:pointer;list-style:none;padding:7px 10px;font-size:10px;font-weight:700;color:#53657d;background:#fafcff}
.request-expand summary::-webkit-details-marker{display:none}
.request-item-body{padding:8px 10px 10px;font-size:10px}
.request-spec-mini{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 10px}
.request-spec-mini div{display:flex;justify-content:space-between;gap:8px;border-bottom:1px dotted #e2e8f0;padding-bottom:3px}
.request-spec-mini span{color:#64748b}
.request-item-footer{display:flex;justify-content:flex-end;gap:5px;margin-top:8px}
.request-total-row{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid #edf1f6;font-size:10.5px}
.request-total-row.grand{font-size:12px;border-bottom:0;padding-top:7px}
.request-id-grid{display:grid;grid-template-columns:70px 1fr;gap:5px 8px;font-size:10px}
.request-id-grid span{color:#64748b}
.request-id-grid code{font-size:9px;overflow-wrap:anywhere}
.request-actions .btn{flex:1}
.field textarea{width:100%;resize:vertical;min-height:56px;border:1px solid #cbd7e7;border-radius:8px;padding:7px 8px;font:inherit;color:#111827;background:#fff}
@media(max-width:1050px){
  .request-item-summary{grid-template-columns:70px minmax(0,1fr)}
  .request-item-actions{grid-column:2;justify-content:flex-end}
}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.field-error{display:none;margin-top:4px;color:#b91c1c;font-size:9.5px;line-height:1.25}
.field-error.show{display:block}
.field input.invalid,.field select.invalid{border-color:#ef4444!important;box-shadow:0 0 0 2px rgba(239,68,68,.10)!important;background:#fffafa!important}
.request-tech-details{margin-top:8px;border-top:1px dashed #d8e1ec;padding-top:7px}
.request-tech-details summary{cursor:pointer;color:#7b8797;font-size:9.5px}
.request-tech-grid{margin-top:7px}
.send-state{margin-top:7px;padding:7px 8px;border-radius:8px;font-size:10px;line-height:1.35;display:none}
.send-state.show{display:block}
.send-state.sending{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}
.send-state.ok{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}
.send-state.error{background:#fff1f2;color:#991b1b;border:1px solid #fecaca}
.request-alert{position:fixed;inset:0;z-index:10000;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(15,23,42,.48);backdrop-filter:blur(4px)}
.request-alert.show{display:flex}
.request-alert-card{width:min(430px,100%);padding:28px 26px 24px;border:1px solid #bbf7d0;border-radius:18px;background:#fff;box-shadow:0 24px 70px rgba(15,23,42,.28);text-align:center}
.request-alert-icon{display:grid;place-items:center;width:58px;height:58px;margin:0 auto 14px;border-radius:50%;background:#dcfce7;color:#15803d;font-size:30px;font-weight:800}
.request-alert-card h2{margin:0 0 9px;font-size:21px;color:#172235}
.request-alert-card p{margin:0 0 19px;color:#475569;font-size:13px;line-height:1.5}
.request-alert-card .btn{min-width:150px}
.request-alert.error .request-alert-card{border-color:#fecaca}
.request-alert.error .request-alert-icon{background:#fee2e2;color:#b91c1c}
#sendRequestBtn:disabled{cursor:not-allowed;opacity:.68}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.request-icon-btn.delete{
  color:#b42318!important;
  border-color:#f0c9c5!important;
  background:#fffafa!important;
}
.request-icon-btn.delete:hover{background:#fff1f2!important}
.request-panel>.group{display:block!important}
.request-panel>.group.group-collapsed>.group-title+*,
.request-panel>.group.group-collapsed>.row,
.request-panel>.group.group-collapsed>.service-grid,
.request-panel>.group.group-collapsed>.request-total-row,
.request-panel>.group.group-collapsed>.request-id-grid,
.request-panel>.group.group-collapsed>.request-tech-details,
.request-panel>.group.group-collapsed>.actions,
.request-panel>.group.group-collapsed>.send-state{
  display:initial!important;
}
.request-panel .group-title{cursor:default!important}
.request-panel .request-actions{
  position:sticky;
  bottom:0;
  z-index:20;
  margin:0 -8px -8px;
  padding:8px;
  background:rgba(255,255,255,.96);
  border-top:1px solid #dbe4ef;
  backdrop-filter:blur(5px);
}
#sendRequestBtn{font-weight:700}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.manager-edit-bar{position:sticky;top:0;z-index:9999;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;background:#172033;color:#fff;border-bottom:1px solid #334155;box-shadow:0 4px 12px rgba(15,23,42,.18)}
.manager-edit-bar.hidden{display:none}
.manager-edit-actions{display:flex;gap:6px}
.manager-edit-bar .btn{height:32px}
.manager-edit-bar .btn:not(.primary){background:#fff;color:#172033}
body.manager-mode .panel-tabs{display:none}
body.manager-mode #requestAddBlock{display:none!important}body.manager-mode #sendRequestBtn{display:none!important}body.manager-mode #clearRequestBtn{display:none!important}
@media(max-width:760px){.manager-edit-bar{align-items:flex-start;flex-direction:column}.manager-edit-actions{width:100%}.manager-edit-actions .btn{flex:1}}


/* ================================================================
   v0.8.25 LIMITS-FULLHEIGHT-CLEANUP
   ================================================================ */
.limits-guide details[open] .limits-guide-body{
  max-height:none!important;
  height:auto!important;
  overflow:visible!important;
}
.limits-guide details[open] .limits-map{
  max-height:none!important;
  height:auto!important;
  overflow:visible!important;
}
.limits-guide details[open]{
  overflow:visible!important;
}
.limits-guide{
  overflow:visible!important;
}
.limits-map{
  overflow:visible!important;
}
.limits-guide-body{
  overflow:visible!important;
}
.tech-info details[open],
.tech-info-body{
  overflow:visible!important;
}
.service-hint,.dev-hint,.layer-hint,.recommendation-layer-note{
  display:none!important;
}


#constraintAssist.assistbox{
  font-size:10px!important;
  line-height:1.3!important;
  padding:6px 8px!important;
  margin-top:6px!important;
  box-shadow:none!important;
}
#constraintAssist.assistbox.hidden{display:none!important}


.seo-intro{max-width:1160px;margin:0 auto 10px;padding:0 8px;color:#475569;font-size:13px;line-height:1.45}
.seo-intro p{margin:4px 0}.seo-intro strong{color:#1e293b}

/* ================================================================
   T-DOOR + ADDITIONAL PROFILE CARDS v1.4.0
   ================================================================ */
.t-door-options{margin:8px 0;padding:8px;border:1px solid #9bbcf2;border-left:3px solid #2f68e3;border-radius:9px;background:#f4f8ff}
.t-door-options .section-head{color:#1e4f9e;margin-bottom:7px}
.additional-profiles-group{margin-top:7px!important;padding:8px!important;border:2px solid #4f8fea!important;border-radius:10px;background:#f1f7ff;box-shadow:0 2px 7px rgba(47,104,227,.10)}
.additional-profiles-group>.section-head{margin-bottom:7px;color:#174f9f;font-size:11.5px!important}
.component-cards{display:grid;gap:7px}
.component-card{padding:7px;border:1px solid #a9c5ee;border-radius:8px;background:#fff;box-shadow:0 1px 3px rgba(25,65,120,.06)}
.component-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px;color:#315b91;font-size:10px;font-weight:700}
.component-card .icon-remove{width:26px!important;height:26px!important;min-width:26px;padding:0;color:#8b2430;background:#fff6f7;border-color:#efc2c7}
.component-grid{display:grid;gap:5px;align-items:end}
.component-grid-main{grid-template-columns:minmax(82px,.72fr) minmax(0,1.8fr);margin-bottom:5px}
.component-grid-meta{grid-template-columns:minmax(92px,1fr) 92px 58px}
.component-card .field{min-width:0}
.component-card .field label{font-size:9px;margin-bottom:2px;color:#64748b}
.component-card select,.component-card input{width:100%;min-width:0;height:29px!important;padding:2px 6px!important;font-size:9.5px!important;border-radius:7px!important}
@media(max-width:430px){.component-grid-main{grid-template-columns:1fr}.component-grid-meta{grid-template-columns:1fr 86px 56px}}
