:root{--ink:#1d3557;--orange:#f28c28;--green:#4caf50;--bg:#f4f7fb;--line:#dbe3ee;--accent:#1d5f9a}*{box-sizing:border-box}body{margin:0;font-family:Arial,sans-serif;background:var(--bg);color:#243447}.topbar{display:flex;justify-content:space-between;align-items:center;padding:16px 28px;background:#fff;border-bottom:1px solid var(--line)}.brand{font-weight:700;color:var(--ink);font-size:20px}.brand small{font-weight:400;margin-left:10px}.topbar nav a{margin-left:18px;color:var(--ink);text-decoration:none}.container{max-width:1440px;margin:28px auto;padding:0 20px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 4px 18px rgba(29,53,87,.05);margin-bottom:20px}.button,button{background:var(--ink);color:#fff;border:0;border-radius:8px;padding:10px 15px;text-decoration:none;cursor:pointer}.button.secondary{background:#fff;color:var(--ink);border:1px solid var(--ink)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px;border-bottom:1px solid var(--line)}th{font-size:13px;color:#5c6b7a}a{color:var(--accent)}.danger{color:#a62424}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid.compact{gap:10px}.form-grid label{font-weight:600;font-size:14px}.form-grid input,.form-grid select,.form-grid textarea,.login-card input{width:100%;margin-top:6px;padding:10px;border:1px solid #bdc9d8;border-radius:7px}.form-grid textarea{min-height:90px}.wide{grid-column:1/-1}.two-col{display:grid;grid-template-columns:minmax(560px,1.05fr) minmax(560px,0.95fr);gap:24px;align-items:start}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px}.metrics div{padding:12px;background:#f7f9fc;border-radius:9px}.metrics span{display:block;font-size:12px;color:#657383}.metrics strong{font-size:18px;color:var(--ink)}.component-svg{width:100%;height:auto;background:#fff}.empty{padding:40px;text-align:center;color:#788596}.login-wrap{min-height:100vh;display:grid;place-items:center}.login-card{width:min(420px,92vw)}.login-card label{display:block;margin:14px 0}.logo-placeholder{display:inline-block;border:2px dashed #9eacbc;border-radius:10px;padding:14px 22px;color:#657383;text-align:center}.alert{padding:10px;border-radius:8px}.alert.error{background:#fde9e9;color:#8f2020}.sheet{max-width:1000px;margin:20px auto;background:#fff;padding:35px}.sheet-head{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid var(--ink);padding-bottom:18px}.sheet-grid{display:grid;grid-template-columns:2fr 1fr;gap:25px;margin:25px 0}.sheet footer{margin-top:25px;border-top:1px solid var(--line);padding-top:12px;color:#6d7782;font-size:12px}@media(max-width:800px){.two-col,.form-grid,.sheet-grid{grid-template-columns:1fr}.toolbar{align-items:flex-start;gap:15px}.topbar{align-items:flex-start;gap:10px}.topbar nav a{margin-left:8px}.wide{grid-column:auto}}@media print{.topbar,.no-print{display:none!important}body{background:#fff}.sheet{margin:0;max-width:none;box-shadow:none}.container{margin:0;max-width:none;padding:0}.card{box-shadow:none}}

.layer-actions{white-space:nowrap;min-width:150px}

/* Update 0.3: Drag & Drop für Schichten */
.drag-hint{margin:-4px 0 12px;color:#657383;font-size:13px}.layers-table tbody tr{transition:background .15s,opacity .15s}.layers-table tbody tr.is-dragging{opacity:.45;background:#eef3f8}.layers-table tbody tr.drag-over{outline:2px solid var(--orange);outline-offset:-2px}.drag-cell{width:42px;text-align:center}.drag-handle{width:30px;height:30px;padding:0;border:1px solid var(--line);border-radius:7px;background:#fff;color:#657383;cursor:grab;font-size:18px;line-height:1}.drag-handle:active{cursor:grabbing}.save-status{min-height:20px;margin-top:8px;font-size:13px}.save-status.saving{color:#657383}.save-status.success{color:#26753a}.save-status.error{color:#a62424}@media(max-width:800px){.layers-table{display:block;overflow-x:auto}.drag-hint{line-height:1.4}}

/* Update 0.4: stabile Griff-Sortierung und Materialschraffuren */
.layer-actions{min-width:82px}.drag-handle{touch-action:none;user-select:none}.layers-table tbody tr.sorting-active{box-shadow:0 8px 24px rgba(29,53,87,.18);background:#fff;position:relative;z-index:3}.layers-table tbody tr.sort-placeholder td{height:52px;background:#fff7ed;border:2px dashed var(--orange)}
.material-swatch{display:block;width:68px;height:30px}.pattern-preview-wrap{font-weight:600;font-size:14px}.pattern-preview-wrap span{display:block;margin-bottom:6px}.pattern-preview{height:54px;border:1px solid #9aa8b8;border-radius:7px;background-color:#ddd}.pattern-preview[data-pattern="wood"]{background-image:repeating-linear-gradient(8deg,transparent 0 8px,rgba(0,0,0,.45) 9px 10px)}.pattern-preview[data-pattern="clt"]{background-image:linear-gradient(rgba(0,0,0,.35) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.35) 1px,transparent 1px);background-size:18px 9px}.pattern-preview[data-pattern="veneer"]{background-image:repeating-linear-gradient(0deg,transparent 0 3px,#111 4px 5px)}.pattern-preview[data-pattern="board"]{background-image:repeating-linear-gradient(45deg,transparent 0 5px,rgba(0,0,0,.5) 6px 7px),repeating-linear-gradient(-45deg,transparent 0 5px,rgba(0,0,0,.35) 6px 7px)}.pattern-preview[data-pattern="gypsum"]{background-image:repeating-linear-gradient(90deg,transparent 0 4px,#227c7d 5px 6px)}.pattern-preview[data-pattern="osb"]{background-image:repeating-linear-gradient(20deg,transparent 0 7px,rgba(70,40,10,.55) 8px 10px)}.pattern-preview[data-pattern="woodfibre"],.pattern-preview[data-pattern="insulation"]{background-image:repeating-linear-gradient(60deg,transparent 0 5px,#111 6px 7px),repeating-linear-gradient(-60deg,transparent 0 5px,#111 6px 7px)}.pattern-preview[data-pattern="cellulose"],.pattern-preview[data-pattern="woodfill"],.pattern-preview[data-pattern="gravel"],.pattern-preview[data-pattern="earth"]{background-image:radial-gradient(#111 1px,transparent 1.5px);background-size:8px 8px}.pattern-preview[data-pattern="eps"],.pattern-preview[data-pattern="xps"]{background-image:repeating-linear-gradient(45deg,transparent 0 5px,rgba(0,0,0,.6) 6px 7px),repeating-linear-gradient(-45deg,transparent 0 5px,rgba(0,0,0,.4) 6px 7px)}.pattern-preview[data-pattern="concrete"],.pattern-preview[data-pattern="screed"],.pattern-preview[data-pattern="mortar"],.pattern-preview[data-pattern="steel"]{background-image:repeating-linear-gradient(135deg,transparent 0 6px,rgba(0,0,0,.5) 7px 8px)}.pattern-preview[data-pattern="masonry"],.pattern-preview[data-pattern="sandlime"],.pattern-preview[data-pattern="brick"]{background-image:linear-gradient(rgba(0,0,0,.5) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.45) 1px,transparent 1px);background-size:18px 9px}.pattern-preview[data-pattern="aerated"]{background-image:radial-gradient(circle,transparent 2px,rgba(0,0,0,.55) 2.5px,transparent 3px);background-size:12px 12px}.pattern-preview[data-pattern="greenroof"]{background-image:repeating-linear-gradient(70deg,transparent 0 7px,rgba(20,100,45,.7) 8px 9px)}

/* Update 0.6 */
.filter-bar{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.filter-bar label{min-width:180px;flex:1}.filter-bar button,.filter-bar .button{margin-bottom:0}.table-wrap{overflow-x:auto}.nowrap{white-space:nowrap}.muted-row{opacity:.58}.status-badge{display:inline-block;padding:3px 8px;border-radius:999px;font-size:.82rem;font-weight:700;background:#e8edf3;color:var(--ink)}.status-freigegeben,.status-active{background:#dff4e4;color:#17662d}.status-geprüft{background:#e5efff;color:#174b8a}.status-entwurf{background:#fff0d8;color:#8a5100}.status-archiviert,.status-archived{background:#ececec;color:#666}.checkbox-label{display:flex;align-items:center;gap:8px}.checkbox-label input{width:auto}.layer-actions{white-space:nowrap}

/* Update 0.7: erweiterte Baustoffdarstellung */
.color-row{display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:8px;margin-top:6px}.color-row input{margin-top:0!important}.color-row input[type=color]{height:42px;padding:3px}.current-pattern{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--soft-bg)}.material-swatch-html{display:inline-block;border:1px solid #555;background-repeat:repeat;background-position:center;vertical-align:middle}.pattern-preview{position:relative;background-repeat:repeat}.pattern-preview::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:var(--pattern-opacity,1)}.form-grid small{font-weight:400;color:#657383}.pattern-preview-wrap{align-self:end}
/* BMC 022.159 (Nutzerauftrag 29.07.2026, Schraffur-Katalog-Raster mit Hover-Vorschau als Ergaenzung zum normalen Dropdown) */
.pattern-catalog{margin-top:10px;border:1px solid var(--line);border-radius:9px;padding:10px 14px;background:var(--soft-bg)}.pattern-catalog summary{cursor:pointer;font-weight:700;color:var(--accent)}.pattern-catalog .field-help{margin:8px 0}.pattern-catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:10px;margin-top:8px}.pattern-catalog-item{display:flex;flex-direction:column;align-items:stretch;gap:6px;padding:6px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;text-align:left;font:inherit}.pattern-catalog-item:hover,.pattern-catalog-item:focus-visible{border-color:var(--accent);outline:none}.pattern-catalog-item.is-active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}.pattern-catalog-item small{font-size:11px;line-height:1.25;color:#475569}.pattern-catalog-swatch{height:40px;border-radius:5px;border:1px solid #9aa8b8;background-color:#ddd}

.warning-card{border-left:4px solid #d97706}.warning-card h2{margin-bottom:.5rem}.warning-card ul{margin:.3rem 0 0;padding-left:1.2rem}.warning-card li{margin:.25rem 0}.metrics>div:nth-last-child(-n+2){background:#f7fafc}.field-help,.form-grid small{display:block;margin-top:5px;color:#657383;font-weight:400}.metrics>div strong{line-height:1.25}

.surface-note{padding:.75rem 1rem;border-radius:.6rem;background:#eef4f8;color:var(--ink);font-size:.92rem}.readonly-field{background:#f3f5f7;color:#4a5568}


/* Update 1.3 – Temperaturverlauf */
.temperature-chart{width:100%;height:auto;display:block;background:#fff;border:1px solid #d7dde5;border-radius:8px}
.temp-grid{stroke:#e7ebf0;stroke-width:1}.temp-layer-line{stroke:#c8d0da;stroke-width:1;stroke-dasharray:3 4}
.temp-axis-line{stroke:#455468;stroke-width:1.2}.temp-axis,.temp-layer-label,.temp-legend{font-size:11px;fill:#405166}
.temp-path-a,.temp-path-b{fill:none;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}
.temp-path-a{stroke:var(--ink)}.temp-path-b{stroke:#d97706;stroke-dasharray:8 5}
.print-temperature{margin:18px 0}.print-temperature h2{margin-bottom:8px}
@media print{.temperature-chart{break-inside:avoid}.print-temperature{break-inside:avoid}}


/* Update 1.4.2 – Glaser */
.grid.cols-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.eb-risk{padding:12px;border-radius:9px}.eb-risk.yes{background:#fef3f2;color:#b42318}.eb-risk.no{background:#ecfdf3;color:#027a48}.muted{color:#657383}.print-temperature .card{padding:0;border:0;box-shadow:none}.print-temperature .grid.cols-4{margin-bottom:10px}@media(max-width:900px){.grid.cols-4{grid-template-columns:1fr 1fr}}@media(max-width:640px){.grid.cols-4{grid-template-columns:1fr}}


/* V2.2.1 print layout */
.print-view .container{max-width:1100px}
.sheet{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px}
.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-bottom:16px;border-bottom:2px solid var(--line);margin-bottom:18px}
.sheet-head h1{margin:0 0 6px 0;color:var(--ink)}
.print-meta-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 18px 0}
.print-meta-card{background:var(--soft-bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.print-meta-card span{display:block;font-size:12px;color:var(--muted-2);margin-bottom:4px}
.print-meta-card strong{font-size:15px;color:var(--ink)}
.print-section{margin-top:18px}
.print-section h2{margin:0 0 10px 0;color:var(--ink);font-size:20px}
.print-cond-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.print-cond-grid>div{background:var(--soft-bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.print-method-note{margin-top:18px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--soft-bg);font-size:13px;color:#475569}
.print-view .card{box-shadow:none}
.print-view .print-section .card{padding:0;border:0;box-shadow:none}
.print-view .print-section .glaser-monthly-block .table,
.print-view .print-section table{font-size:12px}
@media print{
  body.print-view{background:#fff}
  .topbar,.no-print{display:none!important}
  .container{max-width:none;margin:0;padding:0}
  .sheet{border:0;border-radius:0;padding:0}
  .print-meta-grid,.print-cond-grid{break-inside:avoid}
  .print-section{break-inside:avoid}
}


/* V2.3.1 moisture report */
.mr-report h2{margin-bottom:10px}
.mr-report .mr-subsection{margin-top:16px}
.mr-report .mr-subsection h3{margin:0 0 8px 0;font-size:18px;color:var(--ink)}
.mr-option-list{display:flex;flex-direction:column;gap:6px;font-size:14px;margin-bottom:12px}
.mr-result-line{margin:10px 0 14px 0}
.mr-badge{display:inline-block;padding:6px 12px;border-radius:999px;font-weight:700;font-size:13px}
.mr-ok{background:#dcfce7;color:#166534}
.mr-warn{background:#fef3c7;color:#92400e}
.mr-bad{background:#fee2e2;color:#991b1b}
.mr-inline-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.mr-inline-grid>div{background:var(--soft-bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.mr-report .mr-monthly-snippet .card{padding:0;border:0;box-shadow:none}
.mr-report.mr-print{page-break-inside:avoid}


/* V2.3.2 moisture report refinements */
.mr-report{margin-top:18px}
.mr-report h2{margin-bottom:10px}
.mr-report .mr-subsection{margin-top:16px}
.mr-report .mr-subsection h3{margin:0 0 8px 0;font-size:18px;color:var(--ink)}
.mr-option-list{display:flex;flex-direction:column;gap:6px;font-size:14px;margin-bottom:12px}
.mr-result-line{margin:10px 0 14px 0}
.mr-badge{display:inline-block;padding:6px 12px;border-radius:999px;font-weight:700;font-size:13px}
.mr-ok{background:#dcfce7;color:#166534}
.mr-warn{background:#fef3c7;color:#92400e}
.mr-bad{background:#fee2e2;color:#991b1b}
.mr-neutral{background:#e2e8f0;color:var(--headline)}
.mr-inline-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.mr-inline-grid>div{background:var(--soft-bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.mr-report .mr-monthly-snippet .card{padding:0;border:0;box-shadow:none}
.mr-report.mr-print{page-break-inside:avoid}
@media (max-width: 900px){.mr-inline-grid{grid-template-columns:repeat(2,1fr)}}


/* V2.3.3 declutter moisture report */
.mr-topline{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.mr-topline-left,.mr-topline-right{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.mr-method{font-size:12px;color:var(--muted-2)}
.mr-summary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px}
.mr-kpi{background:var(--soft-bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.mr-kpi span{display:block;font-size:12px;color:var(--muted-2);margin-bottom:4px}
.mr-kpi strong{font-size:17px;color:var(--ink)}
.mr-two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}
.mr-panel{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff}
.mr-panel h3{margin:0 0 10px 0;font-size:18px;color:var(--ink)}
.mr-inline-line{font-size:14px;color:#334155;margin-bottom:8px}
.mr-inline-grid.small{grid-template-columns:repeat(2,1fr);margin-top:10px}
.mr-inline-grid.small>div span,.mr-inline-grid>div span{display:block;font-size:12px;color:var(--muted-2);margin-bottom:4px}
.mr-inline-grid.small>div strong,.mr-inline-grid>div strong{font-size:15px;color:var(--ink)}
.mr-details{margin-top:12px;border:1px solid var(--line);border-radius:10px;background:#fff}
.mr-details summary{cursor:pointer;list-style:none;padding:12px 14px;font-weight:700;color:var(--ink)}
.mr-details summary::-webkit-details-marker{display:none}
.mr-details-body{padding:0 14px 14px 14px}
.mr-method-note{margin-top:14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--soft-bg);font-size:13px;color:#475569}
@media (max-width: 1100px){.mr-summary-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width: 900px){.mr-two-col,.mr-summary-grid{grid-template-columns:1fr 1fr}}
@media (max-width: 640px){.mr-two-col,.mr-summary-grid,.mr-inline-grid,.mr-inline-grid.small{grid-template-columns:1fr}}


/* V2.4.1 visual polish for data sheet, cards and sketches */
:root{
  --sheet-bg:#ffffff;
  --soft-bg:#f8fafc;
  --soft-bg-2:#f1f5f9;
  --soft-line:#dbe4ef;
  --headline:#0f172a;
  --muted-2:#64748b;
}

.card{
  border-radius:14px;
}

.metrics{
  gap:10px;
}
.metrics > div{
  background:var(--soft-bg);
  border:1px solid var(--soft-line);
  border-radius:12px;
  padding:12px 14px;
}
.metrics > div span{
  color:var(--muted-2);
  font-size:12px;
  display:block;
  margin-bottom:4px;
}
.metrics > div strong{
  color:var(--headline);
  font-size:18px;
  line-height:1.2;
}

/* BMC 022.50 (Nutzerauftrag 24.07.2026): Label/Wert-Paare in der Projekt-Kennzahlenleiste
   (Gebaeudeklasse/Schallschutzniveau/Energiestandard/Sichtbarkeit) hatten keinerlei CSS und
   liefen dadurch ohne Abstand/Zeilenumbruch ineinander ("GebaeudeklasseGK 3"). Label und Wert
   bekommen dieselbe Block-Darstellung wie bei .metrics (Label klein/grau oben, Wert fett
   darunter). */
.project-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.project-meta-grid > div{background:var(--soft-bg,#f7f9fc);border:1px solid var(--soft-line,var(--line));border-radius:12px;padding:12px 14px}
.project-meta-grid > div span{color:var(--muted-2,#657383);font-size:12px;display:block;margin-bottom:4px}
.project-meta-grid > div strong{color:var(--headline,var(--ink));font-size:16px;line-height:1.2}

.table-wrap table,
.print-view table{
  border-collapse:separate;
  border-spacing:0;
}
.table-wrap thead th,
.print-view thead th{
  background:var(--soft-bg-2);
  color:var(--headline);
  position:sticky;
  top:0;
}
.table-wrap tbody tr:nth-child(even){
  background:#fbfdff;
}
.table-wrap td,
.table-wrap th,
.print-view td,
.print-view th{
  border-bottom:1px solid #e7edf4;
}

.layers-table td,
.layers-table th{
  vertical-align:top;
}

.sheet{
  background:var(--sheet-bg);
  box-shadow:0 10px 30px rgba(15,23,42,.06);
}
.sheet-head{
  padding-bottom:18px;
}
.sheet-head p{
  margin:0;
  color:var(--muted-2);
}
.logo-placeholder{
  border-radius:12px;
  background:linear-gradient(135deg,var(--soft-bg),#eef2f7);
  border:1px dashed #cbd5e1;
  min-width:120px;
}

.sheet-grid > div:first-child{
  background:#fff;
  border:1px solid var(--soft-line);
  border-radius:12px;
  padding:10px;
}

.print-section{
  margin-top:22px;
  padding-top:8px;
}
.print-section h2{
  padding-bottom:8px;
  border-bottom:1px solid #e7edf4;
}

.print-meta-grid{
  margin-top:4px;
}
.print-meta-card{
  background:var(--soft-bg);
  border:1px solid var(--soft-line);
}
.print-meta-card strong{
  line-height:1.25;
}

.print-cond-grid > div{
  background:var(--soft-bg);
  border:1px solid var(--soft-line);
}

.print-view .glaser-monthly-block .table,
.print-view .mr-report .table{
  font-size:11.5px;
}

.print-view .mr-summary-grid{
  grid-template-columns:repeat(5,1fr);
}
.print-view .mr-two-col{
  grid-template-columns:1fr 1fr;
}

.print-view .mr-details{
  border-color:var(--soft-line);
}
.print-view .mr-details summary{
  background:var(--soft-bg);
  border-radius:10px;
}
.print-view .mr-details[open] summary{
  border-bottom:1px solid var(--soft-line);
  border-radius:10px 10px 0 0;
}

.pattern-preview,
.current-pattern{
  border-radius:12px;
}

@media (max-width: 1000px){
  .sheet-grid,
  .print-meta-grid,
  .print-cond-grid{
    grid-template-columns:1fr 1fr !important;
  }
}
@media (max-width: 720px){
  .sheet-grid,
  .print-meta-grid,
  .print-cond-grid,
  .mr-summary-grid,
  .mr-two-col{
    grid-template-columns:1fr !important;
  }
}


/* V2.7.4 layout fix */
.layers-table th,.layers-table td{padding:9px 8px;vertical-align:top}
.layers-table th:nth-child(1),.layers-table td:nth-child(1){width:34px}
.layers-table th:nth-child(2),.layers-table td:nth-child(2){width:30px}
.layers-table th:nth-child(4),.layers-table td:nth-child(4){width:54px}
.layers-table th:nth-child(5),.layers-table td:nth-child(5){width:58px}
.layers-table th:nth-child(6),.layers-table td:nth-child(6){width:58px}
.layers-table th:nth-child(7),.layers-table td:nth-child(7){width:68px}
.layers-table th:nth-child(8),.layers-table td:nth-child(8){width:86px}
.mini-badge{display:inline-flex;align-items:center;justify-content:center;margin-left:5px;width:15px;height:15px;border-radius:999px;color:#fff;font-size:10px;font-weight:800;line-height:15px;vertical-align:middle}
.mini-badge-static{background:#2563eb}
.mini-badge-lca{background:#65a30d}
.component-svg{display:block;width:100%;max-width:100%;height:auto}
@media (max-width:1180px){.two-col{grid-template-columns:1fr}}


/* V2.7.5: Bauteilskizze größer darstellen */
.container, main, .wrap{max-width:1440px}
.two-col{grid-template-columns:minmax(560px,1.05fr) minmax(560px,0.95fr);gap:24px;align-items:start}
.component-svg{width:100%;min-height:310px}
.card:has(.component-svg){overflow:visible}
@media (max-width:1180px){
  .two-col{grid-template-columns:1fr}
  .component-svg{min-height:360px}
}


/* V2.7.6: Skizze ruhiger und größer */
.card:has(.component-svg){padding-bottom:18px}
.component-svg{width:100%;min-height:340px}
@media (max-width:1180px){
  .component-svg{min-height:390px}
}


/* V2.7.8: Zurück zur rechten Spalte, keine Vollbreite */
.two-col > aside{
  display:block;
}
.component-svg{
  width:100%;
  max-width:100%;
  min-height:340px;
}
@media (max-width:1180px){
  .two-col{grid-template-columns:1fr}
  .component-svg{min-height:360px}
}


/* V2.7.9: Schichtformular ruhiger und kompakter */
.form-grid.compact .checkbox-label{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:36px;
  padding:8px 10px;
  border:1px solid #d8e3ef;
  border-radius:8px;
  background:var(--soft-bg);
}
.form-grid.compact .checkbox-label input{
  width:auto;
  margin:0;
}
.form-grid.compact .checkbox-label:has(input:checked){
  background:#eef6ff;
  border-color:#b8cbe0;
}
.metrics strong{
  word-break:normal;
}


/* V2.8.1: Datenblatt/Print aufräumen */
.print-layer-table{
  width:100%;
  table-layout:fixed;
}
.print-layer-table th,
.print-layer-table td{
  padding:7px 6px;
  font-size:12px;
  vertical-align:top;
}
.print-layer-table th:nth-child(1),
.print-layer-table td:nth-child(1){width:34px}
.print-layer-table th:nth-child(2),
.print-layer-table td:nth-child(2){width:auto}
.print-layer-table th:nth-child(3),
.print-layer-table td:nth-child(3){width:58px}
.print-layer-table th:nth-child(4),
.print-layer-table td:nth-child(4){width:68px}
.print-layer-table th:nth-child(5),
.print-layer-table td:nth-child(5){width:54px}
.print-layer-table th:nth-child(6),
.print-layer-table td:nth-child(6){width:54px}
.print-layer-table th:nth-child(7),
.print-layer-table td:nth-child(7){width:78px}
.print-layer-table th:nth-child(8),
.print-layer-table td:nth-child(8){width:66px}
.print-legend{
  margin:0 0 8px;
  font-size:12px;
  color:#475569;
}
.print-badge-muted{
  display:inline-block;
  margin-left:4px;
  padding:1px 5px;
  border-radius:999px;
  background:var(--soft-bg-2);
  color:#475569;
  font-weight:600;
  font-size:11px;
}
.sheet-grid .component-svg{
  min-height:0;
}
@media print{
  .sheet{max-width:none;margin:0;padding:18mm 14mm}
  .print-layer-table th,
  .print-layer-table td{font-size:10.5px;padding:4px 4px}
  .mini-badge{width:12px;height:12px;font-size:8px;line-height:12px}
  .print-badge-muted{font-size:9px;padding:1px 4px}
}


/* V2.8.2: BP-aus Kennzeichnung auch in der Bauteileingabe */
.mini-badge-muted{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-left:5px;
  padding:1px 6px;
  min-width:auto;
  height:16px;
  border-radius:999px;
  background:var(--soft-bg-2);
  color:#475569;
  border:1px solid #cbd5e1;
  font-size:10px;
  font-weight:700;
  line-height:14px;
  vertical-align:middle;
  white-space:nowrap;
}
.input-hint{
  margin-left:4px;
  color:var(--muted-2);
  font-weight:500;
}


/* V2.8.3: Hinweis Eingaberichtung innen nach außen */
.input-direction-note{
  margin:8px 0 10px;
  padding:9px 11px;
  border-left:4px solid var(--accent);
  background:#f1f7fc;
  color:#1f3b57;
  border-radius:8px;
  font-size:14px;
}
.input-direction-note.small{
  margin-top:0;
  font-size:13px;
}


/* V2.8.6: Plausibilitätsprüfung */
.plausibility-card ul{
  margin:0;
  padding-left:18px;
}
.plausibility-card li{
  margin:6px 0;
  font-size:14px;
}
.plausibility-item-ok{color:#166534}
.plausibility-item-info{color:#334155}
.plausibility-item-warn{color:#92400e}
.plausibility-warn{
  border-left:4px solid #f59e0b;
}
.plausibility-ok{
  border-left:4px solid #22c55e;
}


/* V2.8.7: Plausibilitätsprüfung nur am Bildschirm */
.print-view .plausibility-card{
  display:none !important;
}
@media print{
  .plausibility-card,
  .screen-only{
    display:none !important;
  }
}


/* V3.0.0 Rettungsstand: Drag&Drop wie im funktionierenden Altstand */
.drag-handle{
  touch-action:none;
  cursor:grab;
  user-select:none;
}
.sorting-active{
  opacity:.55;
  background:#eef6ff;
}
.sort-placeholder td{
  height:40px;
  padding:0 !important;
  border:2px dashed #7aa7d9 !important;
  background:#f1f7fc;
}


/* V3.0.2: Inline-Maus-Drag ohne HTML5-Drag und ohne externe JS-Abhängigkeit */
.drag-handle{
  touch-action:none;
  cursor:grab;
  user-select:none;
}
.drag-handle:hover{
  color:var(--accent);
}
.sorting-active{
  background:#eef6ff !important;
}
.drag-source-hidden{
  opacity:.18;
}
.sort-placeholder td{
  height:42px;
  padding:0 !important;
  border:2px dashed #7aa7d9 !important;
  background:#f1f7fc;
}
.drag-ghost{
  position:fixed;
  z-index:9999;
  pointer-events:none;
  opacity:.9;
  background:#fff;
  box-shadow:0 12px 28px rgba(15,23,42,.18);
  border-radius:8px;
}
.is-layer-sorting{
  cursor:grabbing;
  user-select:none;
}


/* V3.0.3: Hover-Einfügen, ohne Drag&Drop-Logik zu verändern */
.insert-layer-row td{
  padding:0;
  border-bottom:0;
  height:0;
}
.insert-layer-button{
  display:block;
  width:100%;
  text-align:center;
  opacity:0;
  transform:translateY(-6px);
  text-decoration:none;
  border-radius:999px;
  background:#eaf3fb;
  color:var(--accent);
  font-weight:700;
  padding:6px 10px;
  margin:0;
  transition:opacity .16s ease, transform .16s ease, background .16s ease;
}
.layers-table tr[data-layer-id]:hover + .insert-layer-row .insert-layer-button,
.insert-layer-row:hover .insert-layer-button,
.insert-layer-button:focus{
  opacity:1;
  transform:translateY(0);
}
.insert-layer-button:hover{
  background:#dbeafe;
}
.is-layer-sorting .insert-layer-button{
  opacity:0 !important;
  pointer-events:none !important;
}
.insert-position-note{
  padding:9px 11px;
  border-left:4px solid var(--accent);
  background:#eef6ff;
  color:#1f3b57;
  border-radius:8px;
}
.insert-position-note a{
  float:right;
  font-weight:700;
}


/* V3.0.4: Neue Schicht als Popup */
.layer-add-toolbar{
  margin-top:14px;
  display:flex;
  justify-content:flex-start;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.layer-dialog{
  width:min(920px, calc(100vw - 28px));
  max-height:calc(100vh - 40px);
  border:0;
  border-radius:18px;
  padding:0;
  box-shadow:0 24px 70px rgba(15,23,42,.28);
  overflow:auto;
}
.layer-dialog::backdrop{
  background:rgba(15,23,42,.38);
  backdrop-filter:blur(2px);
}
.dialog-head{
  position:sticky;
  top:0;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 18px;
  border-bottom:1px solid #e5e7eb;
  background:#fff;
}
.dialog-close{
  border:0;
  background:var(--soft-bg-2);
  color:#334155;
  border-radius:999px;
  width:34px;
  height:34px;
  font-size:22px;
  line-height:1;
  cursor:pointer;
}
.dialog-close:hover{
  background:#e2e8f0;
}
.layer-dialog h3,
.layer-dialog .input-direction-note,
.layer-dialog form{
  margin-left:18px;
  margin-right:18px;
}
.layer-dialog form{
  padding-bottom:8px;
}
.dialog-actions{
  display:flex;
  justify-content:flex-end;
  padding:0 18px 18px;
}
.layer-dialog .insert-position-note[hidden]{
  display:none;
}
@media (max-width: 720px){
  .layer-dialog{
    width:calc(100vw - 16px);
  }
}


/* V3.0.5: Hover-Einfügen als Overlay ohne Zeilenhöhen-Veränderung */
.insert-layer-row{
  height:0 !important;
}
.insert-layer-row td{
  height:0 !important;
  min-height:0 !important;
  padding:0 !important;
  border:0 !important;
  line-height:0 !important;
  position:relative;
  overflow:visible;
}
.insert-layer-button{
  position:absolute;
  z-index:20;
  top:-17px;
  left:50%;
  width:auto;
  min-width:190px;
  transform:translate(-50%, -3px);
  opacity:0;
  pointer-events:none;
  line-height:1.2;
  padding:6px 14px;
  box-shadow:0 8px 20px rgba(15,23,42,.12);
}
.layers-table tr[data-layer-id]:hover + .insert-layer-row .insert-layer-button,
.insert-layer-row:hover .insert-layer-button,
.insert-layer-button:focus,
.insert-layer-button:hover{
  opacity:1;
  pointer-events:auto;
  transform:translate(-50%, 0);
}
.is-layer-sorting .insert-layer-button{
  opacity:0 !important;
  pointer-events:none !important;
}


/* V3.0.6: Schicht bearbeiten als Popup */
.layer-edit-dialog{
  width:min(980px, calc(100vw - 28px));
  height:min(760px, calc(100vh - 36px));
}
.layer-edit-frame{
  display:block;
  width:100%;
  height:calc(100% - 63px);
  border:0;
  background:#fff;
}
.layer-edit-popup-link{
  color:var(--accent);
}


/* V3.0.7: Bearbeiten-Popup ohne App-Kopfzeile */
.layer-edit-frame{
  background:#f6f9fc;
}
body:has(.layer-edit-form){
  background:#f6f9fc;
}
.layer-edit-form{
  margin:18px;
}
body:has(.layer-edit-form) .topbar{
  display:none !important;
}
body:has(.layer-edit-form) h1{
  margin-top:0;
}


/* V3.0.8d: Feuchteschutz sichtbar und Hinweis in Stammdaten */
.form-section-title{
  margin-top:8px;
  padding:12px 14px;
  border-left:4px solid var(--accent);
  background:#eef6ff;
  border-radius:10px;
}
.form-section-title h3{
  margin:0 0 4px;
  color:var(--headline);
  font-size:1.05rem;
}
.form-section-title p{
  margin:0;
  color:#475569;
  font-size:.92rem;
}
.warning-card code{
  background:var(--soft-bg-2);
  padding:2px 5px;
  border-radius:5px;
}


/* V3.0.9: Feuchteschutz in der Bauteilansicht aufklappbar */
.collapsible-card{
  display:block;
  background:#fff;
  border:1px solid var(--soft-line);
  border-radius:16px;
  box-shadow:0 10px 28px rgba(15,23,42,.06);
  margin:16px 0;
  overflow:hidden;
}
.collapsible-card summary{
  list-style:none;
  cursor:pointer;
  padding:18px 20px;
  font-weight:800;
  font-size:1.18rem;
  color:#1f334b;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.collapsible-card summary::-webkit-details-marker{
  display:none;
}
.collapsible-card summary::after{
  content:'aufklappen';
  font-size:.82rem;
  font-weight:700;
  color:var(--accent);
  background:#eaf3fb;
  border-radius:999px;
  padding:5px 10px;
}
.collapsible-card[open] summary{
  border-bottom:1px solid #e5edf6;
}
.collapsible-card[open] summary::after{
  content:'zuklappen';
}
.collapsible-content{
  padding:0 16px 16px;
}
.collapsible-content > .card{
  margin:0;
  border:0;
  box-shadow:none;
  padding:0;
}
.collapsible-content > .card > h2:first-child{
  display:none;
}
.collapsible-content .grid{
  margin-top:12px;
}


/* V3.1.0: Baustoffbibliothek – übersichtlichere Verwaltung */
.material-summary-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  margin:14px 0 18px;
}
.summary-card{
  background:var(--sheet-bg);
  border:1px solid var(--soft-line);
  border-radius:16px;
  padding:15px 16px;
  box-shadow:0 8px 22px rgba(15,23,42,.05);
}
.summary-card span{
  display:block;
  color:var(--muted-2);
  font-size:.85rem;
}
.summary-card strong{
  display:block;
  margin-top:4px;
  color:var(--headline);
  font-size:1.8rem;
  line-height:1;
}
.summary-card small{
  color:var(--muted-2);
}
/* BMC 022.85: die alte einzelne "align-items:end"-Regel hier wirkte bisher folgenlos (ohne
   display:flex), wurde deshalb entfernt statt (mit widerspruechlichem Ergebnis) stehen gelassen -
   sie haette mit dem neuen display:flex;flex-direction:column unten dafuer gesorgt, dass das
   Formular quer zur Spalte rechtsbuendig statt ueber die volle Breite ausgerichtet wird. */
/* BMC 022.85 (RC1-Punkte 4+7+13, Nutzerauftrag 25.07.2026: "Filterbereich schoener gestalten...
   aber auf allen Seiten gleich halten"): gemeinsame Basis-Optik fuer ALLE .filter-bar-Formulare
   (Bauteiluebersicht, Projekte, Aenderungsprotokoll, RW2023-Neuaufbau, LCA & B4-Zuordnung,
   Nutzungsdauer-Zuordnung, QNG, OEKOBAUDAT usw.) UND fuer die Baustoffe-Werkzeugleiste, die bisher
   praktisch ungestylt war (die einzige vorhandene Regel oben liefert ohne display:flex gar keine
   Wirkung). Dieselbe helle Flaeche, dieselben abgerundeten Eingabefelder, dieselbe kleine
   Beschriftung ueberall - bewusst NUR auf den Filterbereich selbst begrenzt (keine globale
   input/select-Aenderung), damit alle anderen Formulare der Anwendung unangetastet bleiben. */
.filter-bar,.material-filter-bar{background:var(--soft-bg);border:1px solid var(--soft-line);border-radius:12px;padding:16px 18px;box-shadow:none}
.material-filter-bar{display:flex;flex-direction:column;align-items:stretch;gap:14px}
.material-filter-main{display:flex;gap:14px 16px;flex-wrap:wrap;align-items:end}
.material-filter-main .material-filter-search{flex:2;min-width:240px}
.filter-bar label,.material-filter-main label,.material-filter-advanced label{display:flex;flex-direction:column;gap:5px;min-width:180px;flex:1;font-size:12px;font-weight:700;color:#5c6b7a;text-transform:uppercase;letter-spacing:.03em}
.filter-bar input,.filter-bar select,.material-filter-main input,.material-filter-main select,.material-filter-advanced select{font-family:inherit;font-size:14px;font-weight:400;text-transform:none;letter-spacing:normal;color:#243447;padding:9px 11px;border:1px solid var(--soft-line);border-radius:8px;background:#fff;min-height:38px}
.filter-bar input:focus,.filter-bar select:focus,.material-filter-main input:focus,.material-filter-main select:focus,.material-filter-advanced select:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.filter-bar button,.filter-bar .button,.material-filter-actions button,.material-filter-actions .button{align-self:end}
.material-filter-advanced{border-top:1px solid var(--soft-line);padding-top:12px}
.material-filter-advanced summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--accent);list-style:none;display:inline-block}
.material-filter-advanced summary::-webkit-details-marker{display:none}
.material-filter-advanced summary::before{content:'▸';display:inline-block;margin-right:6px;transition:transform .15s ease}
.material-filter-advanced[open] summary::before{transform:rotate(90deg)}
.material-filter-advanced>div{display:flex;gap:14px 16px;flex-wrap:wrap;margin-top:12px}
.material-filter-actions{display:flex;gap:10px}
.material-origin-switch{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--soft-bg);border:1px solid var(--soft-line);box-shadow:none}
.material-origin-switch>div{display:flex;flex-wrap:wrap;gap:8px}
.material-category-strip{background:var(--soft-bg);border:1px solid var(--soft-line);box-shadow:none}
.origin-tab{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--soft-line);border-radius:999px;padding:6px 12px;text-decoration:none;background:#fff;color:#24415f;font-size:.9rem}
.origin-tab b{min-width:22px;text-align:center;border-radius:999px;background:#e5edf6;color:#1f334b;font-weight:700;padding:1px 6px}
.origin-tab.active{background:#eaf3fb;border-color:#9fc5e8;color:#0f4f85}
.origin-tab.active b{background:#d7e9fb;color:#0f4f85}
/* BMC 022.86: die Herkunftsgruppen-Karten (.material-origin-group) starten jetzt eingeklappt
   (siehe index.php) - dadurch ist die Kopfzeile (Icon/Titel/Beschreibung/Anzahl) staendig
   sichtbar und bekommt hier erstmals eigenes CSS statt der bisherigen, unformatierten
   Standarddarstellung (vorher ohnehin kaum auffaellig, da die aufgeklappte Tabelle direkt
   darunter folgte). */
.material-origin-group>summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:2px;cursor:pointer;list-style:none}
.material-origin-group>summary::-webkit-details-marker{display:none}
.material-origin-group>summary::before{content:'▸';display:inline-block;margin-right:10px;transition:transform .15s ease;color:#5c6b7a}
.material-origin-group[open]>summary::before{transform:rotate(90deg)}
.material-origin-group>summary>div{display:flex;align-items:center;gap:10px}
.material-origin-group>summary>div>span{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.origin-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:var(--soft-bg);color:var(--accent);font-weight:700;flex:none}
.origin-group-count{font-size:.85rem;color:#5c6b7a;white-space:nowrap}
.material-category-strip{
  display:flex;
  gap:14px;
  align-items:flex-start;
  flex-wrap:wrap;
}
.material-category-strip > strong{
  color:#1f334b;
  padding-top:6px;
}
.material-category-strip > div{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.category-pill{
  display:inline-flex;
  align-items:center;
  gap:8px;
  border:1px solid var(--soft-line);
  border-radius:999px;
  padding:6px 10px;
  text-decoration:none;
  background:var(--soft-bg);
  color:#24415f;
  font-size:.9rem;
}
.category-pill span{
  min-width:22px;
  text-align:center;
  border-radius:999px;
  background:#e5edf6;
  color:#1f334b;
  font-weight:700;
  padding:1px 6px;
}
.category-pill.active{
  background:#eaf3fb;
  border-color:#9fc5e8;
  color:#0f4f85;
}
.material-table th,
.material-table td{
  vertical-align:middle;
}
/* BMC 022.96: "Diese Schicht nicht übernehmen"-Option im PDF-Import - deaktivierte Zeile
   optisch klar als ausgeschlossen erkennbar machen. */
.eecon-assignment-table tr.pdf-layer-skipped{opacity:.42}
.eecon-assignment-table .pdf-skip-layer{font-size:12px;color:#64748b;margin-top:2px}
.material-preview-cell{
  width:140px;
}
.material-preview-cell .material-swatch-html{
  border-radius:12px;
  border:1px solid #94a3b8;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.45);
}
.material-name-cell strong{
  display:block;
  color:var(--headline);
  font-size:1rem;
}
.material-meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:5px;
}
.material-meta span{
  display:inline-flex;
  border-radius:999px;
  background:#eef6ff;
  color:#24415f;
  padding:3px 8px;
  font-size:.78rem;
}
.material-source{
  display:block;
  margin-top:6px;
  color:var(--muted-2);
}
.material-values{
  min-width:170px;
}
.material-values span{
  display:inline-flex;
  margin:2px 8px 2px 0;
  color:#475569;
  white-space:nowrap;
}
.material-values strong{
  color:var(--headline);
}
.material-pattern-info strong{
  display:block;
  color:var(--headline);
}
.material-pattern-info small{
  display:block;
  color:var(--muted-2);
  margin-top:3px;
}
.material-actions{
  display:flex;
  gap:6px;
  justify-content:flex-end;
  flex-wrap:wrap;
}
.button.tiny{
  padding:6px 9px;
  font-size:.82rem;
  line-height:1.1;
}
@media(max-width:900px){
  .material-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .material-preview-cell{width:auto;}
  .material-actions{justify-content:flex-start;}
}
@media(max-width:620px){
  .material-summary-grid{grid-template-columns:1fr;}
}


/* V3.1.1: Baustoff bearbeiten übersichtlicher */
.material-edit-form{
  row-gap:18px;
}
.material-status-check{
  align-self:end;
  min-height:42px;
}
.material-preview-panel{
  display:grid;
  grid-template-columns:minmax(180px,260px) 1fr;
  gap:18px;
  align-items:center;
  border:1px solid var(--soft-line);
  background:var(--soft-bg);
  border-radius:16px;
  padding:16px;
}
.material-preview-panel strong{
  display:block;
  color:var(--headline);
  font-size:1.05rem;
}
.material-preview-panel small{
  display:block;
  color:var(--muted-2);
  margin-top:4px;
}
.material-edit-preview{
  width:100%;
  height:72px;
  border-radius:14px;
  border:1px solid #94a3b8;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.45);
}
.form-actions-sticky{
  display:flex;
  gap:10px;
  align-items:center;
  justify-content:flex-end;
  border-top:1px solid #e5edf6;
  padding-top:16px;
}
@media(max-width:760px){
  .material-preview-panel{
    grid-template-columns:1fr;
  }
  .material-edit-preview{
    height:58px;
  }
  .form-actions-sticky{
    justify-content:flex-start;
  }
}


/* V3.1.2: Standarddarstellung je Baustoffkategorie */
.material-style-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
}
.material-style-title > div{
  min-width:0;
}
.material-style-title .button{
  white-space:nowrap;
}
.material-style-title .button:disabled{
  opacity:.55;
  cursor:not-allowed;
}
@media(max-width:760px){
  .material-style-title{
    align-items:flex-start;
    flex-direction:column;
  }
}


/* V3.1.3: Baustoff-Verwendung anzeigen */
.material-summary-grid{
  grid-template-columns:repeat(6,minmax(0,1fr));
}
.usage-badge{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:5px 9px;
  font-size:.82rem;
  font-weight:700;
  white-space:nowrap;
}
.usage-badge.used{
  color:#0f4f85;
  background:#eaf3fb;
  border:1px solid #bfdbfe;
}
.usage-badge.unused{
  color:var(--muted-2);
  background:var(--soft-bg-2);
  border:1px solid #e2e8f0;
}
.material-usage-note{
  margin:.35rem 0 0;
  color:#475569;
}
.material-usage-note strong{
  color:var(--headline);
}
@media(max-width:1200px){
  .material-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
}
@media(max-width:700px){
  .material-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:520px){
  .material-summary-grid{grid-template-columns:1fr;}
}


/* V3.1.4: Baustoff-Datenprüfung */
.material-summary-grid{
  grid-template-columns:repeat(8,minmax(0,1fr));
}
.material-quality-cell{
  min-width:120px;
}
.material-quality-cell small{
  display:block;
  margin-top:4px;
  color:var(--muted-2);
  line-height:1.25;
}
.quality-badge{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:5px 9px;
  font-size:.82rem;
  font-weight:800;
  white-space:nowrap;
}
.quality-ok{
  color:#166534;
  background:#dcfce7;
  border:1px solid #bbf7d0;
}
.quality-info{
  color:#92400e;
  background:#fef3c7;
  border:1px solid #fde68a;
}
.quality-warn{
  color:#991b1b;
  background:#fee2e2;
  border:1px solid #fecaca;
}
.material-quality-note{
  margin:.35rem 0 0;
  display:inline-block;
  color:#991b1b;
  background:#fee2e2;
  border:1px solid #fecaca;
  border-radius:999px;
  padding:4px 10px;
  font-weight:700;
}
@media(max-width:1400px){
  .material-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
}
@media(max-width:800px){
  .material-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:520px){
  .material-summary-grid{grid-template-columns:1fr;}
}


/* V3.1.5: geprüfte Basisbaustoffe sperren */
.lock-badge{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:5px 9px;
  font-size:.82rem;
  font-weight:800;
  color:#7c2d12;
  background:#ffedd5;
  border:1px solid #fed7aa;
  white-space:nowrap;
}
.lock-badge::before{
  content:'🔒';
  margin-right:5px;
  font-size:.78rem;
}
.lock-badge.open{
  color:#166534;
  background:#dcfce7;
  border-color:#bbf7d0;
}
.lock-badge.open::before{
  content:'';
  margin:0;
}
.material-lock-note{
  margin:.35rem 0 0;
  display:inline-block;
  color:#7c2d12;
  background:#ffedd5;
  border:1px solid #fed7aa;
  border-radius:999px;
  padding:4px 10px;
  font-weight:700;
}
.material-lock-check{
  align-self:end;
}
.toolbar-actions{
  display:flex;
  gap:10px;
  align-items:center;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.wide-reset{
  display:contents;
  border:0;
  margin:0;
  padding:0;
}
.locked-material-form fieldset[disabled]{
  opacity:.72;
}
.locked-material-form input,
.locked-material-form select,
.locked-material-form textarea{
  cursor:not-allowed;
}
.alert.info{
  border:1px solid #bfdbfe;
  background:#eff6ff;
  color:#1e3a8a;
}
@media(max-width:760px){
  .toolbar-actions{
    justify-content:flex-start;
  }
}


/* V3.1.6: Schraffurabstand und Drehung */
.material-pattern-info small{display:block}
.pattern-preview{--pattern-angle:0deg}


/* V3.1.7: Kleine Vorschau direkt an der Schraffurauswahl */
.pattern-select-preview-wrap{display:flex;flex-direction:column;gap:8px;margin:-4px 0 4px}
.pattern-select-preview-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pattern-select-preview-head strong{font-size:13px;color:var(--text);line-height:1.2}
.pattern-select-preview-head small{font-size:12px;color:var(--muted-2);line-height:1.2}
.pattern-select-preview{height:46px;border:1px solid #9aa8b8;border-radius:10px;background-color:#ddd}


/* V3.1.8: Baustoffvorschau in Schicht-Auswahl */
.material-select-wrap select{
  margin-bottom:8px;
}
/* BMC 022.165 (Nutzerauftrag: "die Schraffurvorschau kann weg"): .material-inline-swatch
   (Farb-/Schraffurmuster-Quadrat) entfernt - updateMaterialPreview() (app.js) rendert dieses
   Quadrat nicht mehr, daher jetzt einspaltiges Layout statt Quadrat+Info nebeneinander. */
.material-inline-preview{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  align-items:center;
  border:1px solid var(--soft-line);
  border-radius:12px;
  background:var(--soft-bg);
  padding:9px;
}
.material-inline-info strong{
  display:block;
  color:var(--headline);
  font-size:.94rem;
  line-height:1.2;
}
.material-inline-info small{
  display:block;
  color:var(--muted-2);
  margin-top:2px;
}
.material-inline-values{
  display:flex;
  flex-wrap:wrap;
  gap:4px 8px;
  margin-top:5px;
  color:#475569;
  font-size:.82rem;
}
.material-inline-badges{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin-top:6px;
}
.material-inline-badges .status-badge,
.material-inline-badges .lock-badge{
  font-size:.72rem;
  padding:3px 7px;
}
.material-inline-empty{
  grid-column:1/-1;
  color:var(--muted-2);
  font-size:.88rem;
}
@media(max-width:620px){
  .material-inline-preview{
    grid-template-columns:1fr;
  }
}


/* V3.1.9: Suche in der Baustoffauswahl der Schichten */
.material-select-search{
  width:100%;
  margin:0 0 8px 0;
  padding:10px 12px;
  border:1px solid #cbd5e1;
  border-radius:10px;
  background:#fff;
  color:var(--headline);
  font-size:.94rem;
}
.material-select-search:focus{
  outline:none;
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(29,95,154,.12);
}
.material-select-counter{
  display:block;
  min-height:18px;
  margin:4px 0 8px;
  color:var(--muted-2);
  font-size:.8rem;
}


/* V3.2.0: Baustoffbibliothek CSV-Export */
.toolbar .toolbar-actions{
  display:flex;
  gap:10px;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
}
@media(max-width:720px){
  .toolbar .toolbar-actions{
    justify-content:flex-start;
  }
}


/* V3.2.1: Baustoff CSV-Import */
.import-card code{
  background:var(--soft-bg-2);
  border-radius:5px;
  padding:2px 5px;
}
.import-summary.material-summary-grid{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.import-actions{
  display:flex;
  gap:10px;
  align-items:center;
  justify-content:flex-end;
}
.alert.success{
  border:1px solid #bbf7d0;
  background:#dcfce7;
  color:#166534;
}
@media(max-width:760px){
  .import-summary.material-summary-grid{
    grid-template-columns:1fr;
  }
  .import-actions{
    justify-content:flex-start;
    flex-wrap:wrap;
  }
}


/* V3.2.2: CSV-Importvorlage */
.import-hint{
  margin-top:10px;
  padding:10px 12px;
  border:1px solid #bfdbfe;
  border-radius:10px;
  background:#eff6ff;
  color:#1e3a8a;
}


/* V3.2.3: Dubletten-Erkennung */
.duplicate-badge{
  display:inline-flex;
  align-items:center;
  margin-left:8px;
  border-radius:999px;
  padding:3px 8px;
  font-size:.72rem;
  font-weight:800;
  color:#92400e;
  background:#fef3c7;
  border:1px solid #fde68a;
  vertical-align:middle;
}


/* V3.2.4: Baustoff-Verwendungsdetails */
.usage-link{
  text-decoration:none;
}
.usage-link:hover{
  filter:brightness(.96);
  text-decoration:underline;
}
.material-usage-head{
  display:flex;
  justify-content:space-between;
  gap:20px;
  align-items:center;
  flex-wrap:wrap;
}
.material-usage-title{
  display:flex;
  gap:16px;
  align-items:center;
}
.material-usage-title h2{
  margin:0 0 4px;
}
.material-usage-title p{
  margin:0;
  color:var(--muted-2);
}
.material-usage-stats{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}
.material-usage-stats>div{
  min-width:120px;
  border:1px solid var(--soft-line);
  border-radius:12px;
  background:var(--soft-bg);
  padding:10px 12px;
}
.material-usage-stats span{
  display:block;
  color:var(--muted-2);
  font-size:.78rem;
}
.material-usage-stats strong{
  display:block;
  color:var(--headline);
  font-size:1.2rem;
  margin-top:2px;
}
.material-usage-list{
  display:grid;
  gap:14px;
}
.material-usage-component-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
  flex-wrap:wrap;
  margin-bottom:12px;
}
.material-usage-component-head h2{
  margin:0 0 4px;
  font-size:1.15rem;
}
.material-usage-component-head p{
  margin:0;
  color:var(--muted-2);
}
.material-usage-table th,
.material-usage-table td{
  white-space:nowrap;
}
@media(max-width:720px){
  .material-usage-head,
  .material-usage-title{
    align-items:flex-start;
  }
  .material-usage-title{
    flex-direction:column;
  }
  .material-usage-stats{
    width:100%;
  }
  .material-usage-stats>div{
    flex:1;
  }
}


/* V3.2.5: Dubletten-Detailprüfung */
.duplicate-group-list{
  display:grid;
  gap:14px;
}
.duplicate-group-card{
  overflow:hidden;
}
.color-collision-anchor-form{background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin-bottom:12px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.color-collision-anchor-options{display:flex;gap:14px;flex-wrap:wrap}
.color-collision-anchor-option{gap:6px;font-weight:normal}
.color-collision-anchor-row{background:#f4f8ff}
.color-collision-anchor-badge{background:#e5efff;color:#174b8a}
.color-collision-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* BMC 022.119: durchsuchbares Auswahlfeld statt Radiobutton-Wand fuer grosse Farbkollisions-Gruppen */
.color-collision-anchor-search-wrap{display:flex;flex-direction:column;gap:4px;min-width:260px}
.collision-anchor-search{padding:5px 8px;border:1px solid var(--line);border-radius:6px;font-size:.9em}
.collision-anchor-select{padding:5px 8px;border:1px solid var(--line);border-radius:6px;max-width:420px}
/* BMC 022.120: echte Muster/Schraffur-Vorschau (statt flachem Farbkaestchen) fuer die
   vorgeschlagene Farbe - zeigt vorab, ob Farbe+Schraffur zusammenpassen. */
.color-collision-suggestion-preview{display:inline-flex;flex-direction:column;align-items:center;gap:2px}
.color-collision-suggestion-hex{color:var(--muted-2);font-family:monospace}
.duplicate-group-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  flex-wrap:wrap;
  margin-bottom:12px;
}
.duplicate-group-head h2{
  margin:0 0 4px;
  font-size:1.1rem;
}
.duplicate-group-head p{
  margin:0;
  color:var(--muted-2);
}
.duplicate-table td{
  vertical-align:top;
}
.duplicate-table .lock-badge{
  margin-top:6px;
}
@media(max-width:760px){
  .duplicate-group-head{
    align-items:flex-start;
  }
}


/* V3.2.6: Baustoffe zusammenführen */
.duplicate-merge-form{
  display:grid;
  grid-template-columns:1.1fr 1fr 1fr auto auto;
  gap:10px;
  align-items:end;
  margin-top:14px;
  padding:12px;
  border:1px solid var(--soft-line);
  border-radius:12px;
  background:var(--soft-bg);
}
.duplicate-merge-form>strong{
  align-self:center;
  color:var(--headline);
}
.duplicate-merge-form label{
  display:flex;
  flex-direction:column;
  gap:4px;
  font-size:.84rem;
  color:#475569;
}
.duplicate-merge-form select{
  min-width:180px;
}
.duplicate-merge-check{
  flex-direction:row!important;
  align-items:center;
  gap:6px!important;
  color:#334155!important;
}
@media(max-width:1050px){
  .duplicate-merge-form{
    grid-template-columns:1fr 1fr;
  }
}
@media(max-width:680px){
  .duplicate-merge-form{
    grid-template-columns:1fr;
  }
  .duplicate-merge-form select{
    min-width:0;
    width:100%;
  }
}


/* V3.2.7: Baustoffbibliothek aufräumen */
.cleanup-info{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  flex-wrap:wrap;
}
.cleanup-info h2{
  margin:0 0 6px;
}
.cleanup-info p{
  margin:0;
  color:#475569;
  max-width:820px;
}
.cleanup-info form{
  margin:0;
}
.cleanup-info button[disabled]{
  opacity:.55;
  cursor:not-allowed;
}
.cleanup-table td{
  vertical-align:top;
}
@media(max-width:760px){
  .cleanup-info{
    align-items:flex-start;
  }
}


/* V3.2.9: Änderungsprotokoll */
.change-log-table{
  width:100%;
  border-collapse:collapse;
}
.change-log-table th,
.change-log-table td{
  padding:10px 12px;
  border-bottom:1px solid #e2e8f0;
  vertical-align:top;
  text-align:left;
}
.change-log-table th{
  color:#475569;
  font-size:.82rem;
  background:var(--soft-bg);
}
.change-action{
  display:inline-flex;
  border-radius:999px;
  background:#e0f2fe;
  color:#075985;
  padding:4px 9px;
  font-size:.78rem;
  font-weight:800;
}
/* BMC 022.87 (RC1-Punkt 18): Farbcodierung der Aktion nach change_log_action_kind() -
   .change-action bleibt die Basis (Form/Groesse), die Kind-Klasse liefert nur die Farbe. */
.change-action--create{
  background:#dcfce7;
  color:#166534;
}
.change-action--update{
  background:#e0f2fe;
  color:#075985;
}
.change-action--delete{
  background:#fee2e2;
  color:#991b1b;
}
.change-action--auth{
  background:#ede9fe;
  color:#5b21b6;
}
.change-details summary{
  cursor:pointer;
  color:var(--accent);
  font-weight:700;
}
.change-details pre{
  max-width:520px;
  overflow:auto;
  border:1px solid var(--soft-line);
  border-radius:10px;
  background:var(--soft-bg);
  padding:10px;
  white-space:pre-wrap;
}


/* V3.3.0: Protokoll filtern/exportieren */
.change-log-filter{
  display:grid;
  grid-template-columns:2fr 1fr 150px 150px auto auto;
  gap:10px;
  align-items:end;
}
.change-log-filter label{
  display:flex;
  flex-direction:column;
  gap:4px;
  color:#475569;
  font-size:.84rem;
}
.change-log-summary{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
}
.change-log-summary>div{
  min-width:150px;
  border:1px solid var(--soft-line);
  border-radius:12px;
  background:var(--soft-bg);
  padding:10px 12px;
}
.change-log-summary span,
.change-log-summary small{
  display:block;
  color:var(--muted-2);
}
.change-log-summary strong{
  display:block;
  font-size:1.25rem;
  margin:2px 0;
  color:var(--headline);
}
@media(max-width:960px){
  .change-log-filter{
    grid-template-columns:1fr 1fr;
  }
}
@media(max-width:620px){
  .change-log-filter{
    grid-template-columns:1fr;
  }
}


/* V3.3.1: Systemstatus */
.system-summary.material-summary-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.system-check-table{
  width:100%;
  border-collapse:collapse;
}
.system-check-table th,
.system-check-table td{
  padding:10px 12px;
  border-bottom:1px solid #e2e8f0;
  text-align:left;
  vertical-align:top;
}
.system-check-table th{
  color:#475569;
  font-size:.82rem;
  background:var(--soft-bg);
}
.system-check{
  display:inline-flex;
  border-radius:999px;
  padding:4px 9px;
  font-size:.78rem;
  font-weight:800;
}
.system-check.ok{
  color:#166534;
  background:#dcfce7;
  border:1px solid #bbf7d0;
}
.system-check.warn{
  color:#92400e;
  background:#fef3c7;
  border:1px solid #fde68a;
}
.system-maintenance p{
  color:#475569;
}
.alert.warning{
  border:1px solid #fde68a;
  background:#fef3c7;
  color:#92400e;
}
@media(max-width:860px){
  .system-summary.material-summary-grid{
    grid-template-columns:1fr 1fr;
  }
}
@media(max-width:560px){
  .system-summary.material-summary-grid{
    grid-template-columns:1fr;
  }
}


/* V3.3.2: JSON-Datensicherung */
.system-backup-card{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:18px;
  flex-wrap:wrap;
}
.system-backup-card h2{
  margin:0 0 6px;
}
.system-backup-card p{
  margin:0;
  max-width:820px;
  color:#475569;
}
@media(max-width:720px){
  .system-backup-card{
    align-items:flex-start;
  }
}


/* V3.3.3: Bauteil-JSON-Export */
.toolbar .toolbar-actions a{
  white-space:nowrap;
}


/* V3.3.5: Benutzerrollen */
.users-table{
  width:100%;
  border-collapse:collapse;
}
.users-table th,
.users-table td{
  padding:10px 12px;
  border-bottom:1px solid #e2e8f0;
  text-align:left;
}
.role-badge,
.user-self-badge{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:4px 9px;
  font-size:.76rem;
  font-weight:800;
}
.role-admin{
  background:#dbeafe;
  color:#1e40af;
  border:1px solid #bfdbfe;
}
.role-editor{
  background:#dcfce7;
  color:#166534;
  border:1px solid #bbf7d0;
}
.user-self-badge{
  margin-left:8px;
  background:var(--soft-bg-2);
  color:#475569;
  border:1px solid #cbd5e1;
}
.role-info p{
  color:#475569;
  margin:.35rem 0;
}


/* V3.3.6: Rollenabhängiges Menü */
.nav-role{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:4px 9px;
  font-size:.74rem;
  font-weight:800;
  background:var(--soft-bg-2);
  color:#475569;
  border:1px solid #cbd5e1;
}
.nav-role-admin{
  background:#dbeafe;
  color:#1e40af;
  border-color:#bfdbfe;
}
.nav-role-editor{
  background:#dcfce7;
  color:#166534;
  border-color:#bbf7d0;
}


/* V3.3.7: Mein Konto */
.account-card{
  display:grid;
  gap:18px;
}
.account-profile-head{
  display:flex;
  gap:14px;
  align-items:center;
  border-bottom:1px solid #e2e8f0;
  padding-bottom:14px;
}
.account-avatar{
  width:54px;
  height:54px;
  border-radius:999px;
  display:grid;
  place-items:center;
  background:var(--ink);
  color:#fff;
  font-size:1.5rem;
  font-weight:900;
}
.account-profile-head h2{
  margin:0 0 4px;
}
.account-profile-head p{
  margin:0;
  color:var(--muted-2);
}
.account-form .form-section-title{
  margin-top:4px;
}


/* V3.3.8: Benutzer aktiv/inaktiv */
.user-status-badge{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:4px 9px;
  font-size:.76rem;
  font-weight:800;
}
.user-status-badge.active{
  background:#dcfce7;
  color:#166534;
  border:1px solid #bbf7d0;
}
.user-status-badge.inactive{
  background:#fee2e2;
  color:#991b1b;
  border:1px solid #fecaca;
}
.user-inactive-row{
  opacity:.72;
}
.user-inactive-row td{
  background:var(--soft-bg);
}


/* V3.3.9: Letzte Anmeldung */
.account-last-login{
  margin:.35rem 0 0;
  color:var(--muted-2);
  font-size:.9rem;
}
.users-table .muted{
  color:#94a3b8;
}


/* V3.4.0: Protokoll mit Benutzerbezug */
.change-log-table .muted{
  color:#94a3b8;
}


/* V3.4.1: Protokoll-Auswertung */
.log-activity-board{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr)) 1.3fr 1.3fr;
  gap:12px;
  align-items:stretch;
}
.log-stat{
  border:1px solid #e2e8f0;
  background:var(--soft-bg);
  border-radius:14px;
  padding:12px;
}
.log-stat span{
  display:block;
  color:var(--muted-2);
  font-size:.82rem;
  font-weight:800;
  margin-bottom:4px;
}
.log-stat strong{
  font-size:1.55rem;
  color:var(--headline);
}
.log-stat small{
  color:var(--muted-2);
}
.log-stat ul{
  margin:6px 0 0;
  padding:0;
  list-style:none;
  display:grid;
  gap:4px;
}
.log-stat li{
  color:#475569;
  font-size:.88rem;
}
.log-stat li strong{
  font-size:.95rem;
  color:var(--ink);
  margin-right:6px;
}
@media(max-width:1100px){
  .log-activity-board{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:620px){
  .log-activity-board{
    grid-template-columns:1fr;
  }
}


/* BMC 022.89: Protokollgroesse-Karte (Kuerzen/Archivieren/Wiederherstellen) im Admincenter-Protokoll */
.change-log-size-card{}
.change-log-size-head{
  margin-bottom:14px;
}
.change-log-size-head p.small{
  margin:4px 0 0;
  color:var(--muted-2);
  font-size:.88rem;
}
.change-log-size-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  margin-bottom:14px;
}
.change-log-size-grid>div{
  border:1px solid #e2e8f0;
  background:var(--soft-bg);
  border-radius:14px;
  padding:12px;
}
.change-log-size-grid span{
  display:block;
  color:var(--muted-2);
  font-size:.82rem;
  font-weight:800;
  margin-bottom:4px;
}
.change-log-size-grid strong{
  font-size:1.55rem;
  color:var(--headline);
  margin-right:8px;
}
.change-log-size-grid small{
  color:var(--muted-2);
}
.change-log-size-actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:12px;
}
.change-log-size-actions form{
  margin:0;
}
@media(max-width:620px){
  .change-log-size-grid{
    grid-template-columns:1fr;
  }
}


/* V3.4.2: Protokoll-Objektlinks */
.change-object-link{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:3px 8px;
  background:#eff6ff;
  border:1px solid #bfdbfe;
  color:#1d4ed8;
  font-weight:800;
  text-decoration:none;
  font-size:.82rem;
}
.change-object-link:hover{
  background:#dbeafe;
}


/* V3.4.3: Letzte Änderungen am Objekt */
.recent-changes-card{
  margin-bottom:18px;
}
.recent-changes-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
  margin-bottom:8px;
}
.recent-changes-head h2{
  margin:0;
}
.recent-changes-list{
  list-style:none;
  padding:0;
  margin:0;
  display:grid;
  gap:8px;
}
.recent-changes-list li{
  display:flex;
  justify-content:space-between;
  gap:12px;
  border:1px solid #e2e8f0;
  background:var(--soft-bg);
  border-radius:12px;
  padding:9px 11px;
}
.recent-changes-list strong{
  display:block;
  color:var(--headline);
}
.recent-changes-list span{
  display:block;
  color:#475569;
  font-size:.88rem;
}
.recent-changes-list small{
  color:var(--muted-2);
  white-space:nowrap;
}
@media(max-width:720px){
  .recent-changes-list li{
    display:block;
  }
  .recent-changes-list small{
    display:block;
    margin-top:4px;
  }
}


/* V3.4.4: Protokoll Objekt-ID Filter */
.change-log-filter input[type="number"]{
  min-width:110px;
}


/* V3.4.5: Dashboard Arbeitsübersicht */
.dashboard-activity{
  margin-bottom:18px;
}
.dashboard-activity-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
  margin-bottom:12px;
}
.dashboard-activity-head h2{
  margin:0 0 4px;
}
.dashboard-activity-head p{
  margin:0;
  color:var(--muted-2);
}
.dashboard-stat-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin-bottom:12px;
}
.dashboard-stat{
  border:1px solid #e2e8f0;
  background:var(--soft-bg);
  border-radius:14px;
  padding:12px;
}
.dashboard-stat span{
  display:block;
  color:var(--muted-2);
  font-size:.82rem;
  font-weight:800;
  margin-bottom:4px;
}
.dashboard-stat strong{
  color:var(--headline);
  font-size:1.45rem;
}
.dashboard-change-list{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  gap:8px;
}
.dashboard-change-list li{
  display:flex;
  justify-content:space-between;
  gap:12px;
  border-top:1px solid #e2e8f0;
  padding-top:8px;
}
.dashboard-change-list strong{
  display:block;
  color:var(--headline);
}
.dashboard-change-list span{
  display:block;
  color:#475569;
  font-size:.88rem;
}
.dashboard-change-list small{
  color:var(--muted-2);
  white-space:nowrap;
}
.dashboard-change-list a{
  color:#1d4ed8;
  font-weight:800;
  text-decoration:none;
}
@media(max-width:820px){
  .dashboard-stat-grid{
    grid-template-columns:1fr;
  }
  .dashboard-change-list li{
    display:block;
  }
  .dashboard-change-list small{
    display:block;
    margin-top:4px;
    white-space:normal;
  }
}

/* BMC 022.81 (Nutzerauftrag 25.07.2026, RC1-Startseite): Schnelleinstiege und
   "zuletzt bearbeitete Projekte" auf der neuen Startseite (`case 'dashboard':`) - orientiert
   sich optisch an den bestehenden .dashboard-*-Regeln oben (Arbeitsuebersicht, BMC 021.xx). */
.dashboard-quicklinks{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:10px;
  margin-bottom:18px;
}
.dashboard-quicklink{
  display:block;
  border:1px solid #e2e8f0;
  background:var(--soft-bg);
  border-radius:14px;
  padding:14px 16px;
  text-decoration:none;
  color:inherit;
  transition:border-color .15s ease,background .15s ease;
}
.dashboard-quicklink:hover{
  border-color:var(--accent);
  background:#eaf3fb;
}
.dashboard-quicklink strong{
  display:block;
  color:var(--headline);
  font-size:1.05rem;
  margin-bottom:2px;
}
.dashboard-quicklink small{
  display:block;
  color:var(--muted-2);
}
.dashboard-recent-projects{
  margin-bottom:18px;
}
.dashboard-recent-projects h2{
  margin:0 0 12px;
}
.dashboard-project-list{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  gap:8px;
}
.dashboard-project-list li{
  border-top:1px solid #e2e8f0;
  padding-top:8px;
}
.dashboard-project-list a{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:baseline;
  color:inherit;
  text-decoration:none;
}
.dashboard-project-list strong{
  color:var(--headline);
}
.dashboard-project-list small{
  color:var(--muted-2);
  white-space:nowrap;
}
@media(max-width:820px){
  .dashboard-project-list a{
    display:block;
  }
  .dashboard-project-list small{
    display:block;
    margin-top:2px;
  }
}

/* V3.5.0 – Bauteilvergleich und Ökobilanz / CO2 */
.lca-summary-card{border-left:4px solid #2f855a}.lca-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}.lca-card-head h2{margin:0 0 4px}.lca-card-head p{margin:0;color:var(--muted-2)}.lca-coverage{display:inline-block;padding:5px 10px;border-radius:999px;font-weight:700;font-size:12px;white-space:nowrap}.lca-coverage-ok{background:#dcfce7;color:#166534}.lca-coverage-warn{background:#fef3c7;color:#92400e}.lca-coverage-bad{background:#fee2e2;color:#991b1b}.lca-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.lca-kpi-grid>div{background:var(--soft-bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.lca-kpi-grid span{display:block;color:var(--muted-2);font-size:12px;margin-bottom:4px}.lca-kpi-grid strong{display:block;color:var(--ink);font-size:16px}.lca-warning{margin:12px 0 0;padding:10px 12px;border-radius:9px;background:#fff7ed;color:#9a3412}.lca-method-note{margin:12px 0 0;color:var(--muted-2);font-size:12px;line-height:1.45}.print-lca-section .lca-summary-card{border:0;box-shadow:none;padding:0}.print-lca-section .lca-card-head h2{display:none}
.compare-selector{display:grid;grid-template-columns:minmax(260px,1fr) 46px minmax(260px,1fr) auto;gap:14px;align-items:end}.compare-selector label{font-weight:700}.compare-selector select{display:block;width:100%;margin-top:6px;padding:10px;border:1px solid #bdc9d8;border-radius:7px;background:#fff}.compare-vs{font-size:24px;text-align:center;padding-bottom:9px;color:var(--ink)}.compare-empty{padding:48px;text-align:center}.compare-report{max-width:1400px;margin:0 auto}.compare-report-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin:20px 0}.compare-report-head span{font-size:12px;color:var(--muted-2);text-transform:uppercase;letter-spacing:.06em}.compare-report-head h1{margin:5px 0 0;color:var(--ink)}.compare-report-head h1 small{font-size:.55em;color:var(--muted-2);font-weight:400;margin:0 8px}.compare-component-heads,.compare-two-col,.compare-lca-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.compare-component-heads{margin-bottom:18px}.compare-component-heads>div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px}.compare-component-heads span{display:block;font-size:12px;font-weight:700;text-transform:uppercase;color:var(--muted-2)}.compare-component-heads h2{margin:5px 0}.compare-component-heads p{margin:0 0 6px;color:var(--muted-2)}.compare-metrics th:first-child{min-width:190px}.compare-metrics td,.compare-metrics th{vertical-align:middle}.compare-metrics tbody tr.compare-a-better{background:#f0fdf4}.compare-metrics tbody tr.compare-b-better{background:#eff6ff}.compare-metrics tbody tr.compare-neutral{background:#fff}.compare-lca-grid{margin-bottom:18px}.compare-lca-grid .card{margin:0}.compare-co2-value{font-size:28px;font-weight:800;color:var(--ink);margin:10px 0}.co2-bar-track{height:14px;background:#e2e8f0;border-radius:999px;overflow:hidden}.co2-bar{height:100%;background:#b45309;border-radius:999px}.co2-bar.negative{background:#15803d}.compare-conclusion{text-align:center}.compare-conclusion strong{font-size:30px;color:var(--ink)}.compare-conclusion p{margin-bottom:0}.compare-two-col>div>.card,.compare-layers>.card{height:100%;margin:0}.compare-layers small{display:block;color:var(--muted-2);margin-top:3px}.compare-print-footer{margin-top:24px;border-top:1px solid var(--line);padding-top:10px;color:var(--muted-2);font-size:12px}
/* BMC 022.140 - Feuchteschutz-Kachel entfernt (dazugehoerige .compare-moisture-Regel war nur fuer
   diese Kachel da, jetzt totes CSS und entfernt). Neuer druckbarer Weg ohne zweiten Tab: ein
   einziger Button ruft compareReportPrint() auf derselben Seite auf; .print-only zeigt Inhalte,
   die nur im Ausdruck/PDF erscheinen sollen (z. B. den Fusszeilen-Hinweis), auf dem Bildschirm
   aber nicht. */
.print-only{display:none}
@media print{.print-only{display:block}}
@media(max-width:900px){.compare-selector{grid-template-columns:1fr}.compare-vs{transform:rotate(90deg);padding:0}.compare-component-heads,.compare-two-col,.compare-lca-grid{grid-template-columns:1fr}.lca-card-head{flex-direction:column}.lca-kpi-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.lca-kpi-grid{grid-template-columns:1fr}.compare-report-head{flex-direction:column}}
/* BMC 022.141 - Vergleichsbalken je Kennwert-Zeile ("lass uns grafiken einbauen das macht es
   anschaulicher"). Farben Blau (A) / Orange (B) mit dem dataviz-Skill-Validierungsscript geprueft
   (CVD-sicher unterscheidbar, kontrastsicher) - bewusst NICHT die bestehenden Akzentfarben der
   App, da deren Orange im Kontrast-Check gewarnt hatte. Eigener Massstab je ZEILE, Zeilen sind
   untereinander nicht vergleichbar (siehe Kommentar bei compare_metric_row() in functions.php).
   Die bestehende Gruen/Blau-Zeilenfarbe fuer "Vorteil" bleibt zusaetzlich als Zeilenhintergrund
   erhalten, wird durch die Balken nicht ersetzt. */
.compare-bar-legend{display:flex;align-items:center;gap:18px;margin:0 0 12px;font-size:13px;color:var(--ink)}
.compare-bar-legend span{display:inline-flex;align-items:center;gap:6px}
.compare-bar-swatch{width:12px;height:12px;border-radius:3px;display:inline-block}
.compare-bar-swatch.a{background:#2a78d6}
.compare-bar-swatch.b{background:#eb6834}
.compare-metrics td .compare-bar-track{display:block;height:7px;background:#eef2f7;border-radius:4px;overflow:hidden;margin-bottom:3px}
.compare-metrics td .compare-bar-fill{display:block;height:100%;border-radius:4px}
.compare-metrics td .compare-bar-fill.a{background:#2a78d6}
.compare-metrics td .compare-bar-fill.b{background:#eb6834}
@media print{.compare-bar-track{background:#eef2f7 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.compare-bar-fill.a{background:#2a78d6 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.compare-bar-fill.b{background:#eb6834 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}
@media print{body.compare-print{background:#fff}.compare-print .compare-report{max-width:none}.compare-print .compare-report-head{margin-top:0}.compare-print .card,.compare-print .compare-component-heads>div{box-shadow:none;break-inside:avoid}.compare-print .compare-two-col,.compare-print .compare-lca-grid,.compare-print .compare-component-heads{break-inside:avoid}.compare-print .compare-layers{break-inside:auto}.compare-print .compare-layers>.card{break-inside:avoid}.compare-print .lca-summary-card{border:1px solid var(--line);padding:14px}.compare-print .container{max-width:none;margin:0;padding:0}}

/* v3.5.4 Security: POST-Aktionen in Tabellen */
.inline-form{display:inline-block;margin:0 0 0 4px}.inline-form button{margin:0}


/* v3.5.5 – QNG-Zuordnungsvorschläge */
.qng-suggestion-panel{border:1px solid var(--line);border-radius:12px;background:var(--soft-bg);padding:14px}
.qng-suggestion-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:10px}
.qng-suggestion-head strong,.qng-suggestion-head small{display:block}.qng-suggestion-head small{margin-top:4px;color:var(--muted-2);font-weight:400}
.qng-suggestion-list{display:grid;gap:8px}.qng-suggestion-item{display:flex;justify-content:space-between;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.qng-suggestion-item strong,.qng-suggestion-item small,.qng-suggestion-item span{display:block}.qng-suggestion-item small{color:var(--muted-2);margin-top:3px}.qng-suggestion-item span{margin-top:5px;font-size:13px}
.qng-suggestion-action{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.qng-official-badge{display:inline-block!important;padding:3px 8px;border-radius:999px;background:#dcfce7;color:#166534;font-size:11px!important;font-weight:700;white-space:nowrap}
@media(max-width:800px){.qng-suggestion-head,.qng-suggestion-item{flex-direction:column;align-items:stretch}.qng-suggestion-action{justify-content:flex-start}}
/* v3.5.6 – projektbezogene LCA-Datenquellen */
.lca-source-values{padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--soft-bg)}.lca-source-values h4{margin:0 0 10px}.lca-source-info{border-left:4px solid var(--ink)}

/* v3.5.7 – LCA-Transparenz und Quellenprüfung */
.material-lca-cell{min-width:155px}.lca-source-badges{display:flex;gap:5px;flex-wrap:wrap}.lca-source-badge{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:26px;padding:0 7px;border-radius:999px;font-size:11px;font-weight:800;border:1px solid var(--line)}.lca-source-badge.available{background:#dcfce7;color:#166534;border-color:#bbf7d0}.lca-source-badge.missing{background:var(--soft-bg-2);color:#94a3b8;border-color:#e2e8f0;text-decoration:line-through}.lca-missing-note{display:block;margin-top:6px;color:#b42318;font-weight:700}.component-lca-status{display:flex;align-items:center;justify-content:space-between;gap:18px;border-left:5px solid #16a34a}.component-lca-status.has-warning{border-left-color:#d97706;background:#fffbeb}.component-lca-status>div{display:flex;flex-direction:column;gap:4px}.component-lca-status span,.component-lca-status small{color:var(--muted-2)}.component-lca-status.has-warning small{color:#92400e;font-weight:700}.lca-copy-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.lca-copy-form label{font-weight:700;font-size:13px}.lca-copy-form select{display:block;min-width:180px;margin-top:5px;padding:9px;border:1px solid #bdc9d8;border-radius:7px;background:#fff}@media(max-width:900px){.component-lca-status{align-items:flex-start;flex-direction:column}.lca-copy-form{width:100%}.lca-copy-form label{flex:1}.lca-copy-form select{width:100%}}


/* BMC 022.100 – kleine QNG-Anzeige neben der bestehenden "Aktive LCA-Quelle"-Karte
   (Nutzerauftrag 26.07.2026: ÖKOBAUDAT deaktiviert, Projektstandard faellt auf QNG zurueck) */
.component-lca-status-row{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap}
.component-lca-status-row .component-lca-status{flex:1;min-width:0}
.component-lca-qng-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;padding:4px 11px;border-radius:999px;background:#dcfce7;color:#166534;font-size:12px;font-weight:800;border:1px solid #bbf7d0;white-space:nowrap}
@media(max-width:900px){.component-lca-status-row{flex-direction:column;align-items:stretch}}

/* v3.6.0 – Ökobilanz nach Modulen A1–A3 / C3 / C4 / D1 */
.lca-module-table{width:100%;border-collapse:collapse}
.lca-module-table th,.lca-module-table td{padding:6px 10px;border-bottom:1px solid #e2e8f0}
.lca-module-table thead th{text-align:right;font-size:.82rem;color:#475569;font-weight:600}
.lca-module-table thead th:first-child{text-align:left}
.lca-module-table tbody th{text-align:left;font-weight:600;white-space:nowrap}
.lca-module-table td{text-align:right;font-variant-numeric:tabular-nums}
.lca-module-table td.lca-na{opacity:.45}
.lca-nodata{color:#94a3b8}

/* v3.7.20 - prueffaehige LCA-Detaildokumentation */
.lca-detail-heading{margin-top:18px}.lca-detail-heading h3{margin:0 0 3px}.lca-detail-heading p{margin:0;color:var(--muted,var(--muted-2));font-size:.9rem}.lca-detail-table{font-size:.86rem;min-width:1120px}.lca-detail-table th{white-space:nowrap}.lca-detail-table td{vertical-align:top}.lca-detail-table td strong,.lca-detail-table td small{display:block}.lca-detail-table td small{margin-top:3px;color:var(--muted,var(--muted-2));line-height:1.25}.lca-detail-table td:nth-last-child(-n+4){text-align:right;white-space:nowrap}@media print{.lca-detail-wrap{overflow:visible!important}.lca-detail-table{min-width:0!important;width:100%;font-size:7.5pt;table-layout:fixed}.lca-detail-table th,.lca-detail-table td{padding:4px 3px;word-break:break-word}.lca-detail-table td:nth-last-child(-n+4){white-space:normal}.lca-detail-heading{break-before:auto;page-break-inside:avoid}.lca-detail-table tr{break-inside:avoid;page-break-inside:avoid}}

/* V3.7.24 – stabile Dialoge und Schichttabelle ohne interne Scrollleiste */
.layers-table-wrap-fixed{
  overflow:visible !important;
  max-width:none !important;
}
.layers-table-fixed{
  display:table !important;
  width:100% !important;
  min-width:0 !important;
  table-layout:fixed;
  font-size:12.5px;
}
.layers-table-fixed th,
.layers-table-fixed td{
  padding:8px 5px;
  vertical-align:top;
}
.layers-table-fixed .col-pos{width:28px}
.layers-table-fixed .col-material{width:auto}
.layers-table-fixed .col-share{width:58px}
.layers-table-fixed .col-thickness{width:68px}
.layers-table-fixed .col-lambda{width:50px}
.layers-table-fixed .col-r{width:50px}
.layers-table-fixed .col-mass{width:72px}
.layers-table-fixed .col-flags{width:54px}
.layers-table-fixed .col-actions{width:104px}
.layers-table-fixed .layer-material-cell{
  min-width:0;
  overflow:hidden;
}
.layers-table-fixed .layer-path-line,
.layers-table-fixed .layer-path-value{
  min-height:30px;
  display:flex;
  align-items:flex-start;
  line-height:1.25;
}
.layers-table-fixed .layer-path-line{
  flex-direction:column;
  justify-content:flex-start;
  min-width:0;
}
.layers-table-fixed .layer-path-line strong{
  display:block;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.layers-table-fixed .layer-path-label{
  display:block;
  margin-top:2px;
  color:var(--muted-2);
  line-height:1.15;
  white-space:nowrap;
}
/* BMC 022.101 (Nutzerauftrag 26.07.2026 "keine Anzeige, dass kein QNG zugeordnet ist - rechnet
   dennoch!"): deutlich sichtbarer Warnhinweis direkt in der Baustoff-Zelle der Schichtzeile,
   zusaetzlich zum bisherigen roten LCA-Knopf (dessen Tooltip allein zu leicht uebersehen wurde). */
.layer-lca-missing-inline{
  display:block;
  margin-top:4px;
  padding:2px 6px;
  border-radius:6px;
  background:#fff1f2;
  color:#b91c1c;
  font-size:.72rem;
  font-weight:700;
  line-height:1.3;
  white-space:normal;
}
.layers-table-fixed .layer-value-cell{
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.layers-table-fixed .layer-path-value{
  justify-content:flex-start;
  white-space:nowrap;
}
.layers-table-fixed .layer-flags-cell{
  text-align:center;
}
.layers-table-fixed .layer-flags{
  display:flex;
  min-height:30px;
  align-items:flex-start;
  justify-content:center;
  gap:3px;
  flex-wrap:wrap;
}
.layers-table-fixed .layer-actions{
  min-width:0;
  width:auto;
  white-space:nowrap;
  text-align:right;
}
@media(max-width:800px){
  .layers-table-wrap-fixed{overflow:visible !important}
  .layers-table-fixed{display:table !important;overflow:visible !important;font-size:11.5px}
  .layers-table-fixed th,.layers-table-fixed td{padding-left:3px;padding-right:3px}
}


/* V3.7.31: Baustoffuebersicht ohne Kennwert- und Schraffurdetails */
.material-table-wrap .material-table{min-width:0}
.material-table-wrap .material-preview-cell{width:132px}
.material-table-wrap .material-name-cell{min-width:310px}
.material-table-wrap .material-quality-cell{min-width:105px}
.material-table-wrap .material-lca-cell{min-width:118px}
.material-table-wrap .material-actions{min-width:250px}
@media(max-width:1100px){.material-table-wrap{overflow-x:auto}.material-table-wrap .material-table{min-width:980px}}


/* V3.7.32: Aktionsbuttons in der Baustoffübersicht sauber ausrichten */
.material-table-wrap .material-actions-head{
  width:210px;
  min-width:210px;
  text-align:center;
}
.material-table-wrap .material-actions{
  width:210px;
  min-width:210px;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
  align-content:center;
  white-space:normal;
}
.material-table-wrap .material-actions .button,
.material-table-wrap .material-actions button{
  width:100%;
  min-width:0;
  margin:0;
  padding:7px 8px;
  text-align:center;
  white-space:nowrap;
}
.material-table-wrap .material-action-form{
  display:block;
  margin:0;
}
@media(max-width:1050px){
  .material-table-wrap .material-actions-head,
  .material-table-wrap .material-actions{
    width:180px;
    min-width:180px;
  }
  .material-table-wrap .material-actions{
    grid-template-columns:1fr;
  }
}

/* V3.7.68 – Prüferrollen und Ticketsystem */
.ticket-create-link{padding:7px 10px;border-radius:8px;background:#fff7ed;color:#9a3412!important;border:1px solid #fdba74}
.ticket-dashboard-head{display:flex;justify-content:space-between;gap:16px;align-items:center}.ticket-dashboard-head h2{margin:0}.ticket-dashboard-head p{margin:4px 0 0;color:var(--muted-2)}
.ticket-list{display:grid;gap:8px;margin-top:14px}.ticket-list-item{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:inherit;background:#fbfdff}.ticket-list-item:hover{background:var(--soft-bg-2)}.ticket-list-item span:first-child{display:flex;flex-direction:column;gap:3px}.ticket-list-item small{color:var(--muted-2)}
.ticket-status{display:inline-flex;padding:4px 9px;border-radius:999px;background:#e2e8f0;color:#334155;font-weight:700;font-size:.78rem;white-space:nowrap}.ticket-status-neu{background:#fee2e2;color:#991b1b}.ticket-status-rueckfrage{background:#fef3c7;color:#92400e}.ticket-status-in-bearbeitung{background:#dbeafe;color:#1d4ed8}.ticket-status-erledigt{background:#dcfce7;color:#166534}
.ticket-context-box{display:flex;flex-direction:column;gap:6px;padding:12px;border:1px solid #cbd5e1;border-radius:10px;background:var(--soft-bg)}.ticket-context-box code,.ticket-detail code{overflow-wrap:anywhere}
.ticket-meta{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:14px}.ticket-meta span{padding:7px 10px;border-radius:8px;background:var(--soft-bg-2);color:#475569}
.ticket-status-form{display:flex;gap:12px;align-items:end}.ticket-status-form label{min-width:240px}.ticket-status-form select{width:100%;margin-top:6px;padding:10px;border:1px solid #bdc9d8;border-radius:7px}
.ticket-comments{display:grid;gap:10px;margin-bottom:16px}.ticket-comments article{padding:12px;border:1px solid var(--line);border-radius:10px;background:#fbfdff}.ticket-comments header{display:flex;justify-content:space-between;gap:12px}.ticket-comments time{color:var(--muted-2);font-size:.82rem}.ticket-comments p{margin-bottom:0}
.role-reviewer_fire,.role-reviewer_thermal,.role-reviewer_lca,.role-reviewer_acoustic{background:#ede9fe;color:#5b21b6}
@media(max-width:800px){.ticket-status-form,.ticket-dashboard-head,.ticket-list-item{align-items:stretch;flex-direction:column}.ticket-status-form label{min-width:0}}


/* V3.7.69: Letzte Änderungen auf allen Objektseiten standardmäßig eingeklappt */
.recent-changes-collapsible{
  padding:0;
  overflow:hidden;
}
.recent-changes-summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:15px 18px;
  cursor:pointer;
  list-style:none;
  user-select:none;
  background:#fff;
}
.recent-changes-summary::-webkit-details-marker{display:none}
.recent-changes-summary>span{
  display:flex;
  align-items:baseline;
  gap:10px;
}
.recent-changes-summary strong{
  color:var(--headline);
  font-size:1.05rem;
}
.recent-changes-summary small{
  color:var(--muted-2);
  font-weight:500;
}
.recent-changes-summary::after{
  content:'›';
  display:inline-grid;
  place-items:center;
  width:26px;
  height:26px;
  border:1px solid #cbd5e1;
  border-radius:7px;
  color:#475569;
  font-size:20px;
  line-height:1;
  transition:transform .16s ease;
}
.recent-changes-collapsible[open] .recent-changes-summary::after{
  transform:rotate(90deg);
}
.recent-changes-collapsible[open] .recent-changes-summary{
  border-bottom:1px solid #e2e8f0;
  background:var(--soft-bg);
}
.recent-changes-body{
  padding:12px 18px 18px;
}
.recent-changes-body .recent-changes-head{
  margin-bottom:10px;
}


/* V3.7.70 – zuschaltbare Admin-Ticketfunktion */
.ticket-self-assign{padding:12px 14px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1e3a5f}
.ticket-self-assign input{width:auto;margin:0}

/* V3.7.76 – Ticket-Screenshot mit Markierungswerkzeugen */
.ticket-screenshot-editor{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--soft-bg)}
.ticket-screenshot-head{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap}
.ticket-screenshot-head strong{display:block;color:var(--ink)}
.ticket-screenshot-head small{display:block;margin-top:4px;color:var(--muted-2)}
.ticket-screenshot-actions,.ticket-drawing-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ticket-upload-button{display:inline-flex;align-items:center;cursor:pointer}
.ticket-upload-button input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.ticket-drawing-tools{margin-top:12px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff}
.ticket-drawing-tools button{padding:8px 11px}
.ticket-drawing-tools button.active{background:#2563eb;color:#fff}
.ticket-drawing-tools label{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700}
.ticket-drawing-tools input[type=color]{width:36px;height:30px;padding:2px;border:1px solid #bdc9d8;border-radius:6px}
.ticket-drawing-tools input[type=range]{width:110px}
.ticket-canvas-wrap{margin-top:12px;overflow:auto;border:1px solid #94a3b8;border-radius:10px;background:var(--headline);padding:8px}
.ticket-canvas-wrap canvas{display:block;max-width:100%;height:auto;margin:auto;background:#fff;cursor:crosshair;touch-action:none}
.ticket-screenshot-status{margin:10px 0 0;color:var(--muted-2);font-size:13px}
.ticket-screenshot-view{margin:18px 0 0}
.ticket-screenshot-view img{display:block;max-width:100%;height:auto;border:1px solid #cbd5e1;border-radius:10px;background:#fff}
.ticket-screenshot-view figcaption{margin-top:6px;color:var(--muted-2);font-size:12px}
@media(max-width:700px){.ticket-screenshot-head{align-items:flex-start;flex-direction:column}.ticket-screenshot-actions{width:100%}.ticket-screenshot-actions .button{flex:1;text-align:center}.ticket-drawing-tools{align-items:flex-start}}


/* V3.7.78 – intuitiver Prüfhinweis mit Aufnahme vor dem Seitenwechsel */
.ticket-capture-busy{pointer-events:none;opacity:.72;cursor:wait!important}


/* V3.7.79: Schichten direkt anklicken und intuitiv verschieben */
.layer-row-interactive{cursor:grab;transition:background .15s ease,box-shadow .15s ease,transform .15s ease}
.layer-row-interactive:hover{background:#f2f7fc!important;box-shadow:inset 4px 0 0 var(--accent)}
.layer-row-interactive:focus{outline:2px solid #7aa7d9;outline-offset:-2px;background:#eef6ff!important}
.layer-row-interactive:active{cursor:grabbing}
.layer-row-interactive .layer-material-cell strong{color:#163a5f}
.layer-row-interactive:hover .layer-material-cell strong{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.layer-row-interactive .drag-handle{opacity:.48;transition:opacity .15s ease,background .15s ease}
.layer-row-interactive:hover .drag-handle{opacity:1;background:#eaf3fb}
.is-layer-sorting .layer-row-interactive{cursor:grabbing}

/* V3.7.80 – fachliche LCA-Zuordnungsgruppen */

/* V3.7.82 – vereinfachte direkte QNG-Zuordnung */
.qng-simple-head{display:flex;justify-content:space-between;gap:20px;align-items:end}.qng-simple-filters{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.qng-simple-filters label{min-width:190px;font-weight:700;font-size:13px}.qng-simple-filters input,.qng-simple-filters select{display:block;width:100%;margin-top:5px;padding:9px;border:1px solid #bdc9d8;border-radius:7px}.qng-simple-progress{min-width:210px}.qng-simple-progress strong,.qng-simple-progress span{display:block}.qng-simple-progress progress{width:100%;margin-top:8px}.qng-simple-workspace{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:20px;align-items:start}.qng-simple-materials{padding:0;max-height:76vh;overflow:auto}.qng-simple-list-title{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;padding:14px 16px;background:#fff;border-bottom:1px solid var(--line)}.qng-simple-material{display:flex;justify-content:space-between;gap:10px;padding:13px 15px;border-bottom:1px solid #edf1f5;text-decoration:none;color:#243447}.qng-simple-material:hover{background:#f7fafc}.qng-simple-material.active{background:#eaf3fb;border-left:4px solid var(--accent);padding-left:11px}.qng-simple-material strong,.qng-simple-material small{display:block}.qng-simple-material small{margin-top:4px;color:var(--muted-2)}.qng-simple-status{align-self:flex-start;border-radius:999px;padding:4px 8px;font-size:11px;font-style:normal;font-weight:800;white-space:nowrap}.qng-simple-status.open{background:#fff0d8;color:#8a5100}.qng-simple-status.deferred{background:var(--soft-bg-2);color:#475569}.qng-simple-status.assigned{background:#dcfce7;color:#166534}.qng-simple-detail{min-width:0}.qng-simple-target h2,.qng-simple-current h3{margin:5px 0 12px}.qng-simple-facts,.qng-simple-values{display:flex;gap:10px;flex-wrap:wrap}.qng-simple-facts span,.qng-simple-values span{background:var(--soft-bg);border:1px solid #e2e8f0;border-radius:9px;padding:8px 10px}.qng-simple-facts b,.qng-simple-values b{display:block;font-size:11px;color:var(--muted-2);margin-bottom:2px}.qng-simple-search{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end}.qng-simple-search label{font-weight:700}.qng-simple-search input{width:100%;margin-top:6px;padding:10px;border:1px solid #bdc9d8;border-radius:7px}.qng-simple-search .field-help{grid-column:1/-1;margin:0}.qng-simple-candidate{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,390px);gap:18px}.qng-simple-candidate-data>strong,.qng-simple-candidate-data>small{display:block}.qng-simple-candidate-data>small{margin:5px 0 12px;color:var(--muted-2)}.qng-simple-assign{display:flex;flex-direction:column;gap:9px;padding-left:18px;border-left:1px solid #e2e8f0}.qng-simple-assign textarea{width:100%;min-height:62px;margin-top:5px;padding:8px;border:1px solid #bdc9d8;border-radius:7px}.qng-simple-pause{display:flex;gap:10px}.qng-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);font-weight:800}@media(max-width:1000px){.qng-simple-workspace{grid-template-columns:1fr}.qng-simple-materials{max-height:420px}.qng-simple-candidate{grid-template-columns:1fr}.qng-simple-assign{padding-left:0;border-left:0;border-top:1px solid #e2e8f0;padding-top:14px}.qng-simple-head{align-items:stretch;flex-direction:column}.qng-simple-progress{min-width:0}}

/* V3.7.83 – Familien nur zur Übersicht, Zuordnung weiterhin je Baustoff */
.qng-family-group{border-bottom:1px solid #e5edf6}
.qng-family-group>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;cursor:pointer;list-style:none;background:var(--soft-bg);color:var(--headline)}
.qng-family-group>summary::-webkit-details-marker{display:none}
.qng-family-group>summary:after{content:'▾';color:var(--muted-2);transition:transform .15s ease}
.qng-family-group[open]>summary:after{transform:rotate(180deg)}
.qng-family-group>summary strong,.qng-family-group>summary small{display:block}
.qng-family-group>summary small{margin-top:3px;color:var(--muted-2);font-weight:400}
.qng-family-variants{padding:4px 0 8px;background:#fff}
.qng-family-variants .qng-simple-material{padding-left:22px}

/* V3.7.84: moderne Schichtaktionen; Bearbeiten erfolgt weiterhin per Zeilenklick */
.layers-table-fixed .col-actions{width:76px}
.layers-table-fixed .layer-actions{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:6px;
}
.layer-action-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:32px;
  height:32px;
  padding:0;
  border:1px solid #d6e0eb;
  border-radius:9px;
  background:var(--soft-bg);
  color:#36546f;
  text-decoration:none;
  box-shadow:0 1px 2px rgba(15,23,42,.05);
  transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease,box-shadow .15s ease;
}
.layer-action-button svg{
  width:16px;
  height:16px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
  pointer-events:none;
}
.layer-action-button:hover{
  transform:translateY(-1px);
  box-shadow:0 3px 8px rgba(15,23,42,.10);
}
.layer-action-button:focus-visible{
  outline:2px solid #7aa7d9;
  outline-offset:2px;
}
.layer-action-copy:hover{
  border-color:#9fc2df;
  background:#edf6fd;
  color:#185b91;
}
.layer-action-delete{
  border-color:#ead6d6;
  background:#fffafa;
  color:#a53a3a;
}
.layer-action-delete:hover{
  border-color:#e3a8a8;
  background:#fff0f0;
  color:#8f2020;
}

/* V3.7.85 – hierarchische Baustoffauswahl in der Schichtbearbeitung */
.material-hierarchy-ui{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:7px;padding:12px;border:1px solid #dbe3ec;border-radius:12px;background:var(--soft-bg)}
.material-hierarchy-ui label{display:grid;gap:5px;margin:0;font-size:.78rem;font-weight:800;color:#475569}
.material-hierarchy-ui select{width:100%;min-width:0;background:#fff}
.material-hierarchy-ui .material-hierarchy-variant{grid-column:1/-1}
.material-hierarchy-ui .material-hierarchy-summary{grid-column:1/-1;margin:0;padding:8px 10px;border-radius:8px;background:#eaf1f8;color:#17375e;font-size:.8rem;font-weight:700}
.material-hierarchy-ui.is-norm .material-hierarchy-maker-label,.material-hierarchy-ui.is-custom .material-hierarchy-maker-label{display:none}
.material-hierarchy-ui.is-manufacturer .material-hierarchy-maker-label span::after{content:'Hersteller'}
.material-hierarchy-ui .material-hierarchy-maker-label>span{font-size:0}
.material-hierarchy-ui .material-hierarchy-maker-label>span::after{font-size:.78rem}
.material-hierarchy-select.hierarchy-enhanced{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;clip-path:inset(50%)!important}
@media(max-width:720px){.material-hierarchy-ui{grid-template-columns:1fr}.material-hierarchy-ui .material-hierarchy-variant,.material-hierarchy-ui .material-hierarchy-summary{grid-column:1}}

/* V3.7.88 – moderne Baustoffauswahl mit Katalogbaum */
.material-catalog-picker{margin-top:8px;border:1px solid #d8e1eb;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 8px 24px rgba(15,23,42,.06)}
.material-catalog-tools{display:flex;gap:12px;align-items:end;padding:12px;background:#f6f8fb;border-bottom:1px solid #dde5ee}
.material-catalog-search{display:grid;gap:5px;flex:1;margin:0;font-size:.76rem;font-weight:800;color:#475569}.material-catalog-search input{width:100%;background:#fff}
.material-catalog-sources{display:flex;gap:6px;flex-wrap:wrap}.material-source-tab{border:1px solid #cbd5e1;background:#fff;color:#334155;border-radius:9px;padding:8px 11px;font-weight:800;cursor:pointer}.material-source-tab.is-active{background:#17375e;border-color:#17375e;color:#fff}
.material-catalog-layout{display:grid;grid-template-columns:minmax(210px,.9fr) minmax(260px,1.15fr) minmax(230px,1fr);min-height:330px;max-height:520px}
.material-catalog-layout>section,.material-catalog-layout>aside{min-width:0;padding:12px;overflow:auto}.material-catalog-results-panel,.material-catalog-detail{border-left:1px solid #e2e8f0}
.material-catalog-layout h4{margin:0 0 10px;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:#526274}.material-catalog-result-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.material-catalog-count{font-size:.75rem;color:var(--muted-2)}
.material-tree-branch{margin-bottom:3px}.material-tree-children{margin-left:14px;border-left:1px solid #dbe3ec;padding-left:5px}.material-tree-node{display:flex;align-items:center;gap:5px;width:100%;border:0;background:transparent;text-align:left;padding:5px 6px;border-radius:7px;color:#334155;cursor:pointer;font-size:.81rem}.material-tree-node:hover{background:#eef3f8}.material-tree-node.is-active{background:#dfeaf5;color:#12365f;font-weight:800}.material-tree-chevron{width:12px;color:#789;flex:0 0 12px}.material-tree-node.level-0{font-weight:800}.material-tree-node.level-3{font-size:.77rem}
.material-catalog-results{display:grid;gap:6px}.material-result-item{display:grid;gap:3px;width:100%;text-align:left;border:1px solid #dce4ed;background:#fff;border-radius:9px;padding:9px 10px;cursor:pointer}.material-result-item:hover{border-color:#9bb4ce;background:var(--soft-bg)}.material-result-item.is-selected{border-color:#2f6fa8;background:#eaf3fb;box-shadow:inset 3px 0 0 #2f6fa8}.material-result-item strong{font-size:.82rem;color:#1e293b}.material-result-item span{font-size:.73rem;color:var(--muted-2)}
.material-catalog-detail dl{display:grid;gap:0;margin:0}.material-catalog-detail dl div{display:grid;grid-template-columns:minmax(95px,.8fr) minmax(0,1.2fr);gap:10px;padding:7px 0;border-bottom:1px solid #edf1f5}.material-catalog-detail dt{font-size:.72rem;font-weight:800;color:var(--muted-2)}.material-catalog-detail dd{margin:0;font-size:.77rem;color:#1e293b;overflow-wrap:anywhere}.material-catalog-empty{font-size:.78rem;color:var(--muted-2);margin:8px 0}
.material-catalog-footer{padding:9px 12px;background:#edf3f8;border-top:1px solid #d8e1eb;color:#17375e;font-size:.76rem;overflow-wrap:anywhere}.material-hierarchy-select.hierarchy-enhanced{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;clip-path:inset(50%)!important}
@media(max-width:1050px){.material-catalog-layout{grid-template-columns:minmax(190px,.8fr) minmax(250px,1.2fr)}.material-catalog-detail{grid-column:1/-1;border-left:0!important;border-top:1px solid #e2e8f0;max-height:220px}}
@media(max-width:720px){.material-catalog-tools{display:grid}.material-catalog-layout{grid-template-columns:1fr;max-height:none}.material-catalog-results-panel,.material-catalog-detail{border-left:0!important;border-top:1px solid #e2e8f0}.material-catalog-layout>section,.material-catalog-layout>aside{max-height:300px}}

/* V3.7.89 – eingeklappter Katalogbaum und kollisionsfreies Dialoglayout */
.material-catalog-picker{display:flex;flex-direction:column;min-height:0}
.material-catalog-layout{height:min(56vh,520px);min-height:360px;max-height:none;grid-template-rows:minmax(0,1fr);overflow:hidden}
.material-catalog-layout>section,.material-catalog-layout>aside{min-height:0;max-height:none;overflow:auto;overscroll-behavior:contain}
.material-catalog-tree-panel,.material-catalog-results-panel,.material-catalog-detail{position:relative}
.material-catalog-footer{position:relative;z-index:2;flex:0 0 auto;min-height:36px;box-sizing:border-box;background:#edf3f8}
.material-tree-chevron{display:inline-flex;align-items:center;justify-content:center;transition:transform .16s ease}
.material-tree-node.is-expanded>.material-tree-chevron{transform:rotate(90deg)}
.material-tree-node[aria-expanded="false"]+.material-tree-children{display:none}
@media(max-width:1050px){.material-catalog-layout{height:min(64vh,590px);grid-template-rows:minmax(0,1fr) minmax(150px,.55fr)}.material-catalog-detail{max-height:none!important}}
@media(max-width:720px){.material-catalog-layout{height:auto;max-height:none;grid-template-rows:none;overflow:visible}.material-catalog-layout>section,.material-catalog-layout>aside{max-height:300px;overflow:auto}}


/* V3.7.90: Akkordeon-Katalog und nur ein gemeinsamer Scrollbereich */
.material-catalog-layout{overflow:auto;overscroll-behavior:contain;align-items:start}
.material-catalog-layout>section,.material-catalog-layout>aside{overflow:visible;min-height:100%;height:auto}
.material-catalog-layout h4,.material-catalog-result-head{position:sticky;top:-12px;z-index:3;background:#fff;padding-top:12px;padding-bottom:8px}
.material-catalog-result-head h4{position:static;padding:0;margin:0}
@media(max-width:1050px){
  .material-catalog-layout{overflow:auto;grid-template-rows:auto auto}
  .material-catalog-layout>section,.material-catalog-layout>aside{overflow:visible;max-height:none!important}
}
@media(max-width:720px){
  .material-catalog-layout{overflow:visible}
  .material-catalog-layout>section,.material-catalog-layout>aside{overflow:visible;max-height:none}
}

/* V3.7.91: catalog picker layout fix - one scroll area, no overlapping panels */
.material-catalog-layout{
  display:grid;
  grid-template-columns:minmax(250px,.9fr) minmax(340px,1.35fr);
  grid-template-rows:auto auto;
  height:auto;
  min-height:0;
  max-height:none;
  overflow:visible;
  align-items:start;
}
.material-catalog-tree-panel,
.material-catalog-results-panel{
  min-width:0;
  min-height:340px;
  height:auto;
  overflow:visible;
}
.material-catalog-results-panel{
  border-left:1px solid #e2e8f0;
}
.material-catalog-detail{
  grid-column:1 / -1;
  position:relative;
  min-width:0;
  min-height:0;
  height:auto;
  max-height:none!important;
  overflow:visible;
  border-left:0!important;
  border-top:1px solid #e2e8f0;
  background:#fff;
  clear:both;
}
.material-catalog-layout>section,
.material-catalog-layout>aside{
  box-sizing:border-box;
  overflow:visible;
  min-height:0;
  height:auto;
}
.material-catalog-layout h4,
.material-catalog-result-head{
  position:static;
  top:auto;
  z-index:auto;
  padding-top:0;
}
.material-catalog-picker{
  overflow:hidden;
}
@media(max-width:820px){
  .material-catalog-layout{
    grid-template-columns:1fr;
    grid-template-rows:auto;
  }
  .material-catalog-tree-panel,
  .material-catalog-results-panel,
  .material-catalog-detail{
    grid-column:1;
    min-height:0;
    border-left:0!important;
    border-top:1px solid #e2e8f0;
  }
  .material-catalog-tree-panel{border-top:0;}
}

/* V3.7.93 – aktuelle Auswahl, kompakter Katalog und klarer Pfad-2-Aufbau */
.material-current-assignment{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 12px;align-items:center;padding:11px 13px;background:#eef5fb;border-bottom:1px solid #d8e3ee;color:#17375e}
.material-current-assignment>span{grid-row:1/3;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding-right:12px;border-right:1px solid #c9d8e7}
.material-current-assignment strong{font-size:.88rem;overflow-wrap:anywhere}.material-current-assignment small{font-size:.73rem;color:#526b83}
.material-result-item strong{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.material-result-item strong em{font-style:normal;font-size:.64rem;text-transform:uppercase;letter-spacing:.03em;background:#17375e;color:#fff;border-radius:999px;padding:2px 6px}
.material-tree-node.level-2 .material-tree-chevron{opacity:.35}.material-tree-node.level-2{font-weight:650}

.layer-path-mode{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:12px 14px;border:1px solid #d9e3ed;border-radius:12px;background:#f6f8fb}
.layer-path-mode>span{font-weight:800;color:#263b50}.layer-path-mode>div{display:flex;gap:7px;flex-wrap:wrap}
.layer-path-mode button{border:1px solid #cbd7e3;background:#fff;color:#334b63;border-radius:9px;padding:8px 11px;font-weight:750;cursor:pointer}.layer-path-mode button.is-active{background:#17375e;border-color:#17375e;color:#fff}
.layer-path-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px;border:1px solid #d9e3ed;border-radius:14px;background:#fff;box-shadow:0 5px 16px rgba(15,23,42,.035)}
.layer-path-panel-head{grid-column:1/-1;display:grid;gap:2px;padding-bottom:9px;border-bottom:1px solid #e8eef4}.layer-path-panel-head strong{color:#17375e;font-size:.92rem}.layer-path-panel-head small{color:var(--muted-2)}
.layer-path-panel>.wide,.layer-path-panel>label{min-width:0}.layer-path-panel .material-catalog-picker{grid-column:1/-1}
.layer-path-panel-b{background:#f9fbfd;border-style:dashed}.layer-path-panel-b[hidden]{display:none!important}.layer-path-panel-b.is-active{border-style:solid;border-color:#afc5d9}
@media(max-width:760px){.material-current-assignment{grid-template-columns:1fr}.material-current-assignment>span{grid-row:auto;border-right:0;padding-right:0}.layer-path-mode{align-items:stretch;display:grid}.layer-path-mode>div{display:grid;grid-template-columns:1fr}.layer-path-panel{grid-template-columns:1fr}.layer-path-panel-head{grid-column:1}}


/* V3.7.94 – kompakter Schalter für den optionalen Pfad B */
.layer-path-mode{display:none!important}
.layer-path-toggle{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:10px;align-items:center;padding:12px 14px;border:1px solid #d9e3ed;border-radius:12px;background:#f6f8fb;cursor:pointer;user-select:none}
.layer-path-toggle:hover{border-color:#b7c8d9;background:#f1f6fa}
.layer-path-toggle-input{position:absolute;opacity:0;pointer-events:none}
.layer-path-toggle-control{position:relative;width:42px;height:23px;border-radius:999px;background:#cbd5e1;box-shadow:inset 0 0 0 1px rgba(15,23,42,.08);transition:background .18s ease}
.layer-path-toggle-control::after{content:"";position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(15,23,42,.25);transition:transform .18s ease}
.layer-path-toggle-input:checked+.layer-path-toggle-control{background:#17375e}
.layer-path-toggle-input:checked+.layer-path-toggle-control::after{transform:translateX(19px)}
.layer-path-toggle-input:focus-visible+.layer-path-toggle-control{outline:3px solid rgba(47,111,168,.28);outline-offset:2px}
.layer-path-toggle-copy{display:grid;gap:2px}.layer-path-toggle-copy strong{font-size:.88rem;color:#263b50}.layer-path-toggle-copy small{font-size:.73rem;color:var(--muted-2)}
.layer-path-toggle.is-active{border-color:#afc5d9;background:#eef5fb}
@media(max-width:760px){.layer-path-toggle{grid-template-columns:auto auto minmax(0,1fr);align-items:start}}

/* V3.7.95 – kompakte Baustoffauswahl ohne langes Scrollen */
.material-catalog-picker{overflow:hidden}
.material-current-assignment{grid-template-columns:auto minmax(0,1fr) auto}
.material-current-assignment>span{grid-row:1/3}
.material-catalog-toggle{grid-column:3;grid-row:1/3;align-self:center;border:1px solid #9fb5ca;background:#fff;color:#17375e;border-radius:9px;padding:8px 12px;font-weight:800;cursor:pointer;white-space:nowrap}
.material-catalog-toggle:hover{background:#f7fafc;border-color:#6f91b1}
.material-catalog-picker.is-open .material-catalog-toggle{background:#17375e;border-color:#17375e;color:#fff}
.material-catalog-body[hidden]{display:none!important}
.material-catalog-body{display:block;border-top:1px solid #d8e3ee}
.material-result-item.is-selected{order:-1;position:relative}
.material-result-item.is-selected::after{content:"aktuell zugewiesen";justify-self:start;margin-top:2px;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:#17375e}
.layer-path-panel .material-catalog-picker{margin-top:2px}
.layer-path-panel-b[hidden]{display:none!important}
@media(max-width:760px){
  .material-current-assignment{grid-template-columns:1fr}
  .material-current-assignment>span{grid-row:auto}
  .material-catalog-toggle{grid-column:1;grid-row:auto;width:100%;margin-top:7px}
}

/* V3.7.97 – rotes X zum direkten Entfernen einer optionalen Baustoffzuordnung (BMC 022.138) */
.material-catalog-remove{border:1px solid #d99a9a;background:#fff;color:#a83232;border-radius:9px;padding:8px 11px;font-weight:800;line-height:1;cursor:pointer;white-space:nowrap}
.material-catalog-remove:hover{background:#fdeaea;border-color:#c76b6b;color:#7a1f1f}
.material-catalog-remove[hidden]{display:none!important}
.material-current-actions{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.material-current-actions .material-catalog-previous-top{width:100%}

/* V3.7.96 – verständliche Gefach-/Ständeraufteilung */
.stud-geometry-input{position:relative;padding-top:34px}
.stud-geometry-input::before{position:absolute;top:0;left:0;display:inline-flex;align-items:center;justify-content:center;width:27px;height:27px;border-radius:8px;background:#eaf1f7;color:#17375e;font-weight:850;font-size:.78rem}
.stud-width-input::before{content:"B"}
.stud-spacing-input::before{content:"A"}
.stud-share-visual{grid-column:1/-1;display:grid;gap:12px;padding:14px;border:1px solid #cad8e5;border-radius:13px;background:#f8fbfd}
.stud-share-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.stud-share-heading>div{display:grid;gap:3px}.stud-share-heading strong{color:#17375e}.stud-share-heading small{color:var(--muted-2);line-height:1.35}
/* BMC 022.167 (Nutzerauftrag 29.07.2026, Mockup bestaetigt: Punkt 3 - gleiches Kopf-Muster wie
   Pfad A/B, Badge neutral "A · B" statt Pfad-spezifischer Farbe, da beide Pfade betroffen sind).
   Wichtig: nur der Kopf bekommt das Badge - der nachfolgende Editor (.stud-share-inline-editor,
   Breite/Achsabstand/Pfad B %) bleibt bewusst unveraendert schmal (Nutzerbestaetigung 29.07.2026:
   "wenn geöffnet nur noch das kleine schmale Fenster mit den notwendigen Angaben"). */
.stud-share-heading>.stud-share-heading-title{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  grid-template-rows:auto auto;
  column-gap:10px;
  align-items:center;
  gap:0;
}
.stud-share-heading-badge{
  grid-row:1/3;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:56px;
  height:26px;
  padding:0 9px;
  border-radius:999px;
  font-size:.68rem;
  font-weight:900;
  letter-spacing:.045em;
  text-transform:uppercase;
  color:#3a4a5c;
  background:#eef2f6;
  border:1px solid #d3dbe4;
}
.stud-share-heading-title strong{grid-column:2}
.stud-share-heading-title small{grid-column:2}
.stud-share-status{white-space:nowrap;padding:4px 8px;border-radius:999px;background:#e7f3ec;color:#267247;font-size:.7rem;font-weight:800}
.stud-share-bar{display:flex;height:34px;overflow:hidden;border:1px solid #afc0d0;border-radius:9px;background:#fff;box-shadow:inset 0 1px 2px rgba(15,23,42,.06)}
.stud-share-bar span{display:block;min-width:0;transition:width .18s ease}
.stud-share-bay{background:repeating-linear-gradient(135deg,#dcecf7 0,#dcecf7 8px,#edf6fb 8px,#edf6fb 16px)}
.stud-share-stud{background:repeating-linear-gradient(90deg,#b98355 0,#b98355 7px,#d1a075 7px,#d1a075 14px);border-left:2px solid #87552e}
.stud-share-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.stud-share-value{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;padding:10px 12px;border:1px solid #d9e4ed;border-radius:10px;background:#fff}
.stud-share-value>span{font-size:.76rem;font-weight:750;color:#52677b}.stud-share-value>strong{grid-row:1/3;grid-column:2;font-size:1.15rem;color:#17375e}.stud-share-value>small{font-size:.71rem;color:#718096}
.stud-share-value.is-bay{border-left:4px solid #8bb9d8}.stud-share-value.is-stud{border-left:4px solid #a96e3c}
.stud-share-explanation{margin:0;padding-top:2px;color:#52677b;font-size:.76rem;line-height:1.45}.stud-share-explanation strong{color:#263b50}
.stud-share-visual.has-error{border-color:#d9a5a5;background:#fff8f8}.stud-share-visual.has-error .stud-share-status{background:#fbe7e7;color:#a33c3c}
@media(max-width:760px){.stud-share-heading{display:grid}.stud-share-status{justify-self:start}.stud-share-values{grid-template-columns:1fr}}

/* V3.7.97 – bewusste Baustoffübernahme ohne Änderung durch Suche */
.material-current-assignment{grid-template-columns:minmax(0,1fr) auto}
.material-current-assignment>span{display:none!important}
.material-catalog-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}
.material-catalog-selection{min-width:0;overflow-wrap:anywhere}
.material-catalog-apply{flex:0 0 auto;border:0;border-radius:8px;padding:8px 12px;background:#17375e;color:#fff;font-weight:800;cursor:pointer}
.material-catalog-apply:disabled{background:#c8d2dc;color:#6b7b8b;cursor:not-allowed}
.material-result-item.is-pending{border-color:#e18724;background:#fff7ed;box-shadow:inset 3px 0 0 #e18724}
.material-result-item strong em.pending{background:#e18724}
@media(max-width:760px){.material-catalog-footer{align-items:stretch;flex-direction:column}.material-catalog-apply{width:100%}}

/* V3.7.100 – Stielschicht direkt in der oberen Schichtaufteilung */
.layer-path-toggle[hidden]{display:none!important}
.stud-share-values.is-single{grid-template-columns:1fr}
.stud-share-values.is-single .is-bay{max-width:none}
.stud-layer-controls{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;padding-top:2px}
.stud-layer-toggle-button{appearance:none;border:1px solid #afc3d6;border-radius:9px;background:#fff;color:#17375e;padding:9px 13px;font:inherit;font-size:.78rem;font-weight:800;cursor:pointer;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.stud-layer-toggle-button:hover{border-color:#6f98bc;background:#f1f7fb}
.stud-layer-toggle-button.is-active{border-color:#c8a27f;background:#fff8f1;color:#78451f}
.stud-layer-dimensions{display:grid;grid-template-columns:repeat(2,minmax(180px,240px));gap:10px;flex:1;justify-content:end}
.stud-layer-dimensions[hidden]{display:none!important}
.stud-layer-dimensions .stud-geometry-input{padding-top:0;margin:0}
.stud-layer-dimensions .stud-geometry-input::before{display:none}
.stud-layer-dimensions label{background:#fff;border:1px solid #d9e4ed;border-radius:10px;padding:9px 11px}
.stud-layer-dimensions input{margin-top:5px}
@media(max-width:760px){.stud-layer-controls{display:grid}.stud-layer-dimensions{grid-template-columns:1fr;width:100%}}

/* V3.7.108 – Verwendungs-Schalter oben in der Schichtaufteilung */
.layer-purpose-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.layer-purpose-toggle{position:relative;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:9px;align-items:center;min-height:54px;padding:9px 11px;border:1px solid #cbd8e4;border-radius:10px;background:#fff;cursor:pointer;user-select:none;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease}
.layer-purpose-toggle:hover{border-color:#8fa8c0;box-shadow:0 3px 10px rgba(30,64,95,.08);transform:translateY(-1px)}
.layer-purpose-toggle input{grid-row:1/3;grid-column:1;width:18px;height:18px;margin:0;accent-color:#245a8d}
.layer-purpose-title{grid-column:2;font-weight:800;color:#4b6074;line-height:1.15}
.layer-purpose-toggle small{grid-column:2;color:#7a8b9c;font-size:.7rem;line-height:1.2}
.layer-purpose-toggle.is-active{border-color:#7d9fbd;background:#edf5fb;box-shadow:inset 0 0 0 1px rgba(36,90,141,.12)}
.layer-purpose-toggle.is-active .layer-purpose-title{color:#173f69}
.layer-purpose-toggle-bp.is-active{background:#eaf3fb;border-color:#7fa9cc}
.layer-purpose-toggle-static.is-active{background:#f3edf9;border-color:#a88bc3}
.layer-purpose-toggle-lca.is-active{background:#edf7e8;border-color:#8bb67a}
@media(max-width:760px){.layer-purpose-controls{grid-template-columns:1fr}.layer-purpose-toggle{min-height:48px}}

/* V3.7.109: Aktionen im Schichtdialog direkt unter dem Dialogkopf */
.layer-edit-form > .layer-edit-top-actions {
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .65rem;
  margin: -1rem -1rem .25rem;
  padding: .75rem 1rem;
  background: rgba(255,255,255,.97);
  border-bottom: 1px solid #d7e1ec;
  box-shadow: 0 5px 14px rgba(27,57,89,.08);
  backdrop-filter: blur(8px);
}
.layer-edit-form > .layer-edit-top-actions button,
.layer-edit-form > .layer-edit-top-actions .button {
  min-width: 110px;
  margin: 0;
}
/* BMC 022.166 (Nutzerauftrag 29.07.2026, "die drei wandern ebenfalls nach oben ... zu Speichern
   und Abbruch in den Farben der Schichteingabe"): S/LCA/BP-Badges lagen bisher als eigener
   Footer-Block ganz unten im Formular - sie ziehen jetzt in dieselbe angeheftete Kopfleiste wie
   Speichern/Abbrechen, gleiche Badge-Optik wie zuvor (dunkel = aktiv, hell/grau = inaktiv, siehe
   .layer-edit-flag(:has(input:checked))). */
/* BMC 022.168 (Nutzerauftrag 29.07.2026, Mockup bestaetigt): das neue Bezeichnung-Feld
   (.layer-edit-top-bezeichnung) ist jetzt das erste Kind der Leiste und waechst per flex:1 in
   die verfuegbare Breite - dadurch wandern Badges/Speichern/Abbrechen automatisch an den rechten
   Rand (kein margin-right:auto mehr auf .layer-edit-flags noetig). */
.layer-edit-top-actions > .layer-edit-top-bezeichnung {
  flex: 1 1 auto;
  min-width: 120px;
  padding: 9px 12px;
  border: 1px solid #bdc9d8;
  border-radius: 7px;
  font: inherit;
  font-size: .88rem;
  color: #243447;
  background: #fff;
}
.layer-edit-top-actions > .layer-edit-flags {
  margin-top: 0;
  margin-right: 0;
}
@media (max-width: 640px) {
  .layer-edit-form > .layer-edit-top-actions {
    justify-content: stretch;
    flex-wrap: wrap;
  }
  .layer-edit-form > .layer-edit-top-actions button,
  .layer-edit-form > .layer-edit-top-actions .button {
    flex: 1 1 0;
    min-width: 0;
    text-align: center;
  }
  .layer-edit-top-actions > .layer-edit-flags {
    margin-right: 0;
    flex: 1 1 100%;
    justify-content: center;
  }
  .layer-edit-top-actions > .layer-edit-top-bezeichnung {
    flex: 1 1 100%;
  }
}

/* V3.7.119 – kompakte, optionale LCA-Zuordnung in der Schichtbearbeitung */
.layer-lca-context-legacy{display:none!important}
.layer-lca-picker{margin-top:12px;border:1px solid #cbd8e6;border-radius:12px;background:#f8fbfe;overflow:hidden}
.layer-lca-picker-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px}
.layer-lca-picker-summary strong,.layer-lca-picker-summary small{display:block}
.layer-lca-picker-summary small{margin-top:3px;color:var(--muted-2);max-width:620px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.layer-lca-picker.has-assignment{border-color:#9ac8aa;background:#f6fcf8}
.layer-lca-picker-body{border-top:1px solid #dbe5ef;padding:14px;display:grid;gap:12px;background:#fff}
.layer-lca-current{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border:1px solid #c9d8e8;border-radius:10px;background:#eef5fb}
.layer-lca-current small,.layer-lca-current strong{display:block}.layer-lca-current small{color:var(--muted-2);margin-bottom:3px}
.layer-lca-search-label{font-weight:700}.layer-lca-search{display:block;width:100%;margin-top:6px;padding:10px 12px;border:1px solid #b9c9da;border-radius:8px;background:#fff}
.layer-lca-path-tabs{display:flex;gap:8px}.layer-lca-path-tab{border:1px solid #b9c9da;border-radius:8px;background:#fff;padding:8px 14px;font-weight:700;color:#334155;cursor:pointer}.layer-lca-path-tab.active{background:#173f6b;color:#fff;border-color:#173f6b}
.layer-lca-results{display:grid;gap:7px;max-height:340px;overflow:auto;padding-right:3px}
.layer-lca-result{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;text-align:left;border:1px solid #d5e0eb;border-radius:9px;background:#fff;color:#16283d;cursor:pointer}
.layer-lca-result:hover{border-color:#7ca5cf;background:#f6faff}.layer-lca-result.selected{border-color:#4f8f68;background:#edf8f1}.layer-lca-result strong,.layer-lca-result small{display:block}.layer-lca-result small{margin-top:3px;color:var(--muted-2)}.layer-lca-result em{font-style:normal;font-size:11px;font-weight:800;color:#166534;background:#dcfce7;border-radius:999px;padding:4px 8px;white-space:nowrap}
.layer-lca-empty{padding:18px;border:1px dashed #cbd5e1;border-radius:9px;color:var(--muted-2);text-align:center}.layer-lca-picker-actions{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
@media(max-width:700px){.layer-lca-picker-summary,.layer-lca-current{align-items:stretch;flex-direction:column}.layer-lca-picker-summary .button,.layer-lca-current .button{width:100%}}


/* V3.7.121 – kompakte LCA-Suche */
.layer-lca-picker-body{gap:10px}
.layer-lca-search-label{display:block;margin:0;font-size:13px;color:#334155}
.layer-lca-search{height:42px;margin-top:5px;font-size:14px}
.layer-lca-results{display:block;max-height:300px;overflow:auto;padding:0;border:1px solid #d8e2ec;border-radius:10px;background:#fff}
.layer-lca-result-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-bottom:1px solid #e2e8f0;background:var(--soft-bg);color:#334155}
.layer-lca-result-head strong{font-size:12px}.layer-lca-result-head small{font-size:11px;color:var(--muted-2)}
.layer-lca-result{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:50px;padding:9px 12px;border:0;border-bottom:1px solid #e6edf4;border-radius:0;background:#fff;color:#16283d;box-shadow:none}
.layer-lca-result:last-child{border-bottom:0}
.layer-lca-result:hover{background:#f4f8fc;border-color:#e6edf4}
.layer-lca-result.selected{background:#edf8f1;border-color:#e6edf4}
.layer-lca-result strong{font-size:13px;line-height:1.25}.layer-lca-result small{font-size:11px;line-height:1.25}
.layer-lca-empty{border:0;border-radius:0;padding:22px 14px;background:#fff}
.layer-lca-search-hint{color:var(--muted-2)}
.layer-lca-picker-actions{padding-top:2px}
@media(max-width:700px){.layer-lca-result-head{align-items:flex-start;flex-direction:column;gap:2px}.layer-lca-results{max-height:260px}}


/* V3.7.123 – LCA-Kopf neu geordnet und beim Scrollen angeheftet */
.layer-lca-picker-body{position:relative}
.layer-lca-sticky-head{position:sticky;top:64px;z-index:12;display:grid;gap:8px;margin:-2px 0 2px;padding-bottom:4px;background:#fff}
.layer-lca-current{order:1}
.layer-lca-assigned-line{order:2;display:grid;gap:2px;padding:0 2px;color:#17375e}
.layer-lca-assigned-line small{font-size:.74rem;color:var(--muted-2)}
.layer-lca-assigned-line strong{font-size:.82rem;line-height:1.3;font-weight:800;color:#1e3a5f}
.layer-lca-search-label{position:relative;z-index:1}
@media(max-width:700px){.layer-lca-sticky-head{top:58px}}


/* V3.7.124 – gestaffelte Sticky-Köpfe für Baustoff und LCA */
.layer-lca-picker[hidden]{display:none!important}
.material-catalog-picker.is-open .material-current-assignment{
  position:sticky;
  top:64px;
  z-index:24;
  background:#eef5fb;
  box-shadow:0 5px 12px rgba(15,23,42,.08);
}
.layer-lca-picker{
  overflow:visible;
}
.layer-lca-picker-summary{
  position:sticky;
  top:132px;
  z-index:22;
  background:#f6fcf8;
  border-bottom:1px solid #dbe5ef;
  box-shadow:0 4px 10px rgba(15,23,42,.06);
}
.layer-lca-sticky-head{
  position:sticky;
  top:198px;
  z-index:21;
  margin:0;
  padding:8px 0 6px;
  background:#fff;
}
.layer-lca-assigned-line:empty{display:none}
@media(max-width:700px){
  .material-catalog-picker.is-open .material-current-assignment{top:58px}
  .layer-lca-picker-summary{top:126px}
  .layer-lca-sticky-head{top:192px}
}

/* V3.7.125 – Baustoff immer oben, LCA direkt darunter */
.layer-primary-material-sticky{
  position:sticky;
  top:64px;
  z-index:30;
  display:flex;
  align-items:center;
  min-height:58px;
  margin:0 0 10px;
  padding:10px 14px;
  border:1px solid #c9d8e8;
  border-radius:11px;
  background:rgba(238,245,251,.98);
  box-shadow:0 5px 12px rgba(15,23,42,.08);
  backdrop-filter:blur(8px);
}
.layer-primary-material-sticky small,
.layer-primary-material-sticky strong,
.layer-primary-material-sticky span{display:block}
.layer-primary-material-sticky small{margin-bottom:2px;color:var(--muted-2);font-size:.72rem}
.layer-primary-material-sticky strong{color:#17375e;font-size:.88rem;line-height:1.25}
.layer-primary-material-sticky span{margin-top:3px;color:#526b83;font-size:.73rem}

/* Der normale Baustoffkopf bleibt an seinem Platz und wird nicht zusätzlich sticky. */
.material-catalog-picker .material-current-assignment,
.material-catalog-picker.is-open .material-current-assignment{
  position:static;
  top:auto;
  z-index:auto;
  box-shadow:none;
}

/* LCA folgt unmittelbar unter dem dauerhaft sichtbaren Baustoffkopf. */
.layer-lca-picker-summary{top:132px}
.layer-lca-sticky-head{top:198px}
@media(max-width:700px){
  .layer-primary-material-sticky{top:58px}
  .layer-lca-picker-summary{top:126px}
  .layer-lca-sticky-head{top:192px}
}


/* V3.7.126 – Reihenfolge: Schichtaufteilung, Baustoffe, kompakte LCA-Zuordnung */
.layer-primary-material-sticky{display:none!important}
.layer-lca-picker{margin-top:12px}
.layer-lca-picker[hidden]{display:none!important}
.layer-lca-picker-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px}
.layer-lca-picker-summary>div{min-width:0}
.layer-lca-picker-summary .layer-lca-summary-text{white-space:normal;overflow:visible;text-overflow:clip;max-width:none;line-height:1.35}
.layer-lca-edit{flex:0 0 auto;white-space:nowrap}
.layer-lca-sticky-head{position:static;top:auto;z-index:auto;margin:0;padding:0;background:transparent}
.layer-lca-picker-body{border-top:1px solid #dbe5ef}
@media(max-width:700px){
  .layer-lca-picker-summary{align-items:stretch;flex-direction:column}
  .layer-lca-edit{width:100%}
}


/* V3.7.127 – LCA-Zuordnung direkt unter dem zugehörigen Baustoffpfad */
.layer-lca-inline{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:8px 0 12px;padding:11px 13px;border:1px solid #cbd8e4;border-radius:11px;background:#f8fbfd}
.layer-lca-inline[hidden]{display:none!important}
.layer-lca-inline.has-assignment{border-color:#9ac8aa;background:#f3fbf6}
/* BMC 022.45 (Nutzermeldung 24.07.2026): app.js setzt seit V3.7.119/BMC 022.26 pro Baustoffpfad
   die Klassen lca-status-ok/lca-status-missing auf .layer-lca-inline (statt has-assignment auf
   das Suchpanel) - dafuer gab es aber nie eine CSS-Regel, daher blieb eine nicht zugeordnete
   Schicht optisch unauffaellig (kein roter Rahmen, kein roter Button). Nachgezogen mit der im
   Programm ueblichen Rot-/Gruen-Palette (siehe .button.danger / .material-data-badge).*/
.layer-lca-inline.lca-status-ok{border-color:#9ac8aa;background:#f3fbf6}
.layer-lca-inline.lca-status-missing{border-color:#fecdd3;background:#fff1f2}
.layer-lca-inline.lca-status-missing .layer-lca-assignment-context>strong{color:#b42318}
.layer-lca-inline.lca-status-missing .layer-lca-inline-text{color:#b42318}
.layer-lca-inline.lca-status-missing .layer-lca-inline-edit{background:#fff1f2;color:#b42318;border-color:#fecdd3}
.layer-lca-inline.lca-status-missing .layer-lca-inline-edit:hover{background:#ffe4e6}
.layer-lca-inline-copy{display:grid;gap:3px;min-width:0}
.layer-lca-inline-copy strong{font-size:.82rem;color:#17375e}
.layer-lca-inline-copy small{font-size:.76rem;line-height:1.35;color:#526b83;overflow-wrap:anywhere}
.layer-lca-inline-edit{flex:0 0 auto;white-space:nowrap}
.layer-lca-search-panel{margin:0 0 14px}
.layer-lca-search-panel[hidden]{display:none!important}
.layer-lca-search-panel .layer-lca-picker-body{border-top:0}
.layer-lca-search-panel .layer-lca-sticky-head{position:sticky;top:64px;z-index:13;background:#fff;padding-bottom:8px}
@media(max-width:700px){.layer-lca-inline{align-items:stretch;flex-direction:column}.layer-lca-inline-edit{width:100%}.layer-lca-search-panel .layer-lca-sticky-head{top:58px}}


/* V3.7.128 – LCA-Zuordnung als Bestandteil des jeweiligen Baustoffblocks */
.layer-path-panel > .layer-lca-inline,
.layer-path-panel > .layer-lca-search-panel{
  grid-column:1 / -1;
  width:100%;
  max-width:none;
  box-sizing:border-box;
}
.layer-path-panel > .layer-lca-inline{
  margin:0;
}
.layer-path-panel > .layer-lca-search-panel{
  margin:0;
}


/* V3.7.129 – Pfad B beim Bearbeiten von Pfad A vorübergehend ausblenden */
.layer-edit-form.is-editing-path-a-material .layer-path-panel-b,
.layer-edit-form.is-editing-path-a-lca .layer-path-panel-b{
  display:none!important;
}

/* V3.7.131 – Schichtdicke als Information in der Schichtaufteilung */
.stud-share-heading-meta{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap}
/* BMC 022.168 (Nutzerauftrag 29.07.2026, "Schichtdicke direkt eingeben, kein Feld öffnen"):
   .stud-share-thickness-button/-value entfallen (Elemente existieren nicht mehr im DOM, siehe
   app.js) - ersetzt durch ein direkt editierbares Zahlenfeld plus einen separaten, nur bei
   aktivem Pfad B sichtbaren Link-Button für Breite/Achsabstand. */
.stud-share-thickness-inline{display:flex;align-items:center;gap:6px;margin:0;font-size:.76rem;font-weight:800;color:#334b63}
.stud-share-thickness-inline input{width:72px;padding:6px 8px;border:1px solid #b8cadb;border-radius:7px;background:#fff;font-size:.84rem;font-weight:700;color:#17375e}
.stud-share-thickness-inline small{font-weight:400;color:var(--muted-2)}
.stud-share-dims-toggle{border:0;background:none;padding:0;font-size:.76rem;font-weight:700;color:var(--accent);text-decoration:underline;cursor:pointer}
.stud-share-dims-toggle[hidden]{display:none!important}
.stud-share-bar,.stud-share-values{cursor:pointer}
.stud-share-inline-editor{display:grid;grid-template-columns:minmax(190px,280px) auto;gap:10px;align-items:end;padding:11px 12px;border:1px solid #b9ccdd;border-radius:10px;background:#fff}
.stud-share-inline-editor[hidden]{display:none!important}
.stud-share-inline-editor label{display:grid;gap:5px;margin:0;font-size:.76rem;font-weight:800;color:#334b63}
.stud-share-inline-editor input{width:100%;margin:0;background:#fff}
.stud-share-inline-actions{display:flex;gap:8px;flex-wrap:wrap}
.stud-share-visual:not(.is-dimension-editing) .stud-layer-dimensions{display:none!important}
/* BMC 022.165 (Nutzerauftrag: "Schichtdicke ... verschwindet auch im Pfad A"): .layer-path-thickness
   (die frühere, in Pfad A eingeblendete zusätzliche Schichtdicke-Box) entfernt - app.js erzeugt
   dieses Element nicht mehr (siehe makeMaterialControl()-Entfernung), die Schichtdicke wird nur
   noch über .stud-share-thickness-field im Kopfzeilen-Editor bearbeitet. */
@media(max-width:760px){.stud-share-heading-meta{justify-content:flex-start}.stud-share-inline-editor{grid-template-columns:1fr}.stud-share-inline-actions .button{flex:1 1 auto}}


/* V3.7.132 – Schichtdicke, Breite und Achsabstand in einer Bearbeitungszeile */
.stud-share-inline-editor{
  grid-template-columns:minmax(170px,1fr) minmax(340px,2fr) auto;
  align-items:end;
}
.stud-share-inline-editor > .stud-layer-dimensions{
  display:grid;
  grid-template-columns:repeat(2,minmax(150px,1fr));
  gap:10px;
  width:100%;
  justify-content:stretch;
}
.stud-share-inline-editor > .stud-layer-dimensions[hidden]{display:none!important}
.stud-share-inline-editor > .stud-layer-dimensions label{margin:0;padding:0;border:0;background:transparent}
.stud-share-inline-editor > .stud-layer-dimensions input{width:100%;margin-top:5px}
.stud-share-inline-actions{align-self:end;white-space:nowrap}
@media(max-width:900px){
  .stud-share-inline-editor{grid-template-columns:1fr 1fr}
  .stud-share-inline-editor > .stud-layer-dimensions{grid-column:1/-1}
  .stud-share-inline-actions{grid-column:1/-1}
}
@media(max-width:600px){
  .stud-share-inline-editor{grid-template-columns:1fr}
  .stud-share-inline-editor > .stud-layer-dimensions{grid-template-columns:1fr;grid-column:1}
  .stud-share-inline-actions{grid-column:1}
}

/* V3.7.133 – Eingabezeile ausrichten und Baustoffkopf beim Ändern anheften */
.stud-share-inline-editor{
  grid-template-columns:minmax(150px,.8fr) minmax(360px,1.7fr) auto;
  gap:12px;
  align-items:start;
}
.stud-share-inline-editor > .stud-share-thickness-field,
.stud-share-inline-editor > .stud-layer-dimensions > label{
  display:grid;
  grid-template-rows:auto 42px auto;
  align-content:start;
  gap:5px;
  min-width:0;
}
.stud-share-inline-editor > .stud-share-thickness-field input,
.stud-share-inline-editor > .stud-layer-dimensions input{
  height:42px;
  box-sizing:border-box;
  margin:0;
}
.stud-share-inline-editor > .stud-layer-dimensions{
  align-items:start;
  gap:12px;
}
.stud-share-inline-editor > .stud-layer-dimensions small{
  margin:0;
  min-height:2.5em;
  font-size:.68rem;
  line-height:1.25;
  color:var(--muted-2);
}
.stud-share-inline-actions{
  align-self:start;
  display:flex;
  align-items:center;
  gap:8px;
  padding-top:24px;
}
.stud-share-inline-actions .button{
  min-height:42px;
  margin:0;
}

/* Beim Öffnen der Baustoffauswahl bleibt der aktuelle Baustoff direkt unter
   Speichern/Abbrechen sichtbar. Beim Zurückscrollen läuft er wieder an seinen
   normalen Platz zurück (CSS sticky). */
.material-catalog-picker.is-open .material-current-assignment{
  position:sticky!important;
  top:64px!important;
  z-index:35!important;
  background:rgba(238,245,251,.98)!important;
  box-shadow:0 5px 12px rgba(15,23,42,.10)!important;
  backdrop-filter:blur(8px);
}
@media(max-width:900px){
  .stud-share-inline-editor{
    grid-template-columns:1fr 1fr;
    align-items:start;
  }
  .stud-share-inline-editor > .stud-share-thickness-field{grid-column:1}
  .stud-share-inline-editor > .stud-layer-dimensions{grid-column:1/-1}
  .stud-share-inline-actions{grid-column:2;grid-row:1;padding-top:24px;justify-content:flex-end}
}
@media(max-width:700px){
  .material-catalog-picker.is-open .material-current-assignment{top:58px!important}
}
@media(max-width:600px){
  .stud-share-inline-editor{grid-template-columns:1fr}
  .stud-share-inline-editor > .stud-share-thickness-field,
  .stud-share-inline-editor > .stud-layer-dimensions,
  .stud-share-inline-actions{grid-column:1;grid-row:auto}
  .stud-share-inline-actions{padding-top:0;justify-content:stretch}
  .stud-share-inline-actions .button{flex:1 1 0}
}

/* V3.7.135 – stabile Rücknahme der fehlerhaften Dock-Logik */
.layer-path-panel-a .layer-lca-inline-b,
.layer-path-panel-b .layer-lca-inline-a{
  display:none!important;
}


/* V3.7.136 – alte doppelte QNG-Eingabefelder vollständig ausblenden */
.layer-edit-form .legacy-qng-field-hidden,
.layer-edit-form .layer-lca-context-legacy .qng-searchable-select{
  display:none!important;
}


/* V3.7.137 – stabile angeheftete Kontextleiste ohne DOM-Verschiebungen */
.layer-selection-dock{
  position:sticky;
  top:61px;
  z-index:39;
  margin:0 -1rem .5rem;
  padding:8px 1rem;
  border-bottom:1px solid #d5e0ea;
  background:rgba(255,255,255,.98);
  box-shadow:0 5px 12px rgba(15,23,42,.09);
  backdrop-filter:blur(8px);
}
.layer-selection-dock[hidden]{display:none!important}
.layer-selection-dock .material-current-assignment,
.layer-selection-dock .layer-lca-inline{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  margin:0!important;
  width:100%;
  box-sizing:border-box;
  box-shadow:none!important;
}
.layer-selection-dock .material-current-assignment{border:1px solid #cbd9e6;border-radius:10px;background:#eef5fb}
.layer-selection-dock .layer-lca-inline{border-radius:10px}
.layer-selection-dock-copy{max-width:none}
@media(max-width:700px){
  .layer-selection-dock{top:57px;margin-left:-.75rem;margin-right:-.75rem;padding-left:.75rem;padding-right:.75rem}
}


/* V3.7.138 – keine doppelte LCA-Anzeige während der Suche */
.layer-path-panel > .layer-lca-inline.is-search-open{display:none!important}
.layer-lca-search-panel .layer-lca-sticky-head{display:none!important}
.layer-lca-search-panel .layer-lca-picker-body{padding-top:14px}


/* V3.7.139 – angeheftete LCA-Zeile trotz geöffnetem Suchmodus sichtbar */
.layer-selection-dock .layer-lca-inline.is-search-open{display:flex!important}


/* V3.7.140 – kompakte Baustoff-Kontextleiste ohne geerbte Katalogbreiten */
.layer-selection-material{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  align-items:center;
  gap:10px;
  width:100%;
  min-width:0;
  box-sizing:border-box;
  padding:10px 12px;
  border:1px solid #cbd9e6;
  border-radius:10px;
  background:#eef5fb;
}
.layer-selection-material-info{min-width:0;display:grid;gap:3px}
.layer-selection-material-info strong{
  display:block;
  min-width:0;
  color:#17375e;
  font-size:.88rem;
  line-height:1.25;
  white-space:normal;
  overflow-wrap:break-word;
  word-break:normal;
}
.layer-selection-material-info small{display:block;color:#526b83;font-size:.73rem;white-space:normal}
.layer-selection-material-previous{display:flex;align-items:center;gap:8px;min-width:0;padding:6px 8px;border:1px solid #edc27c;border-radius:8px;background:#fff7e8;color:#7a4b12;font-size:.75rem}
.layer-selection-material-previous span{min-width:0;white-space:normal;overflow-wrap:break-word}
.layer-selection-material-previous .button,.layer-selection-material-close{margin:0;white-space:nowrap}
.layer-selection-dock.is-material .material-current-assignment{display:none!important}
@media(max-width:760px){
  .layer-selection-material{grid-template-columns:1fr}
  .layer-selection-material-previous{align-items:stretch;flex-direction:column}
  .layer-selection-material-previous .button,.layer-selection-material-close{width:100%}
}


/* V3.7.141 – einfache Sticky-Logik auf den Originalzeilen, ohne Kopien */
.layer-selection-dock{display:none!important}

/* Der Katalog darf die Sticky-Zeile nicht abschneiden. */
.material-catalog-picker.is-open,
.material-catalog-picker.is-open .material-catalog-body{
  overflow:visible!important;
}

/* Originale Baustoffzeile unter der oberen Aktionsleiste anheften. */
.material-catalog-picker.is-open > .material-current-assignment{
  position:sticky!important;
  top:61px!important;
  z-index:38!important;
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  background:rgba(238,245,251,.98)!important;
  border-bottom:1px solid #cbd9e6!important;
  box-shadow:0 5px 12px rgba(15,23,42,.10)!important;
  backdrop-filter:blur(8px);
}

/* Während der LCA-Suche bleibt die originale Zuordnungszeile sichtbar. */
.layer-path-panel > .layer-lca-inline.is-search-open{
  display:flex!important;
  position:sticky!important;
  top:61px!important;
  z-index:38!important;
  width:100%!important;
  box-sizing:border-box!important;
  margin:0!important;
  background:rgba(243,251,246,.98)!important;
  box-shadow:0 5px 12px rgba(15,23,42,.10)!important;
  backdrop-filter:blur(8px);
}

/* Die alte interne LCA-Kopfzeile bleibt ausgeblendet; es gibt nur eine Zeile. */
.layer-lca-search-panel .layer-lca-sticky-head{display:none!important}

@media(max-width:700px){
  .material-catalog-picker.is-open > .material-current-assignment,
  .layer-path-panel > .layer-lca-inline.is-search-open{
    top:57px!important;
  }
}


/* V3.7.142 – bei geöffneter LCA-Suche Baustoff oberhalb der LCA-Zeile sticky */
.material-current-assignment.is-lca-context-sticky{
  position:sticky!important;
  top:61px!important;
  z-index:39!important;
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  background:rgba(238,245,251,.98)!important;
  border:1px solid #cbd9e6!important;
  border-radius:10px!important;
  box-shadow:0 4px 10px rgba(15,23,42,.09)!important;
  backdrop-filter:blur(8px);
}
.layer-path-panel > .layer-lca-inline.is-search-open{
  top:129px!important;
  z-index:38!important;
}
@media(max-width:700px){
  .material-current-assignment.is-lca-context-sticky{top:57px!important}
  .layer-path-panel > .layer-lca-inline.is-search-open{top:125px!important}
}


/* V3.7.143 – bei der LCA-Suche den ganzen Baustoffkopf sticky halten.
   Das innere Element allein war durch seinen kleinen Elterncontainer begrenzt. */
.material-catalog-picker.is-lca-context-sticky{
  position:sticky!important;
  top:61px!important;
  z-index:39!important;
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  overflow:visible!important;
  margin-top:0!important;
  background:rgba(238,245,251,.98)!important;
  border:1px solid #cbd9e6!important;
  border-radius:10px!important;
  box-shadow:0 4px 10px rgba(15,23,42,.09)!important;
  backdrop-filter:blur(8px);
}
.material-catalog-picker.is-lca-context-sticky > .material-current-assignment{
  position:relative!important;
  top:auto!important;
  z-index:auto!important;
  border-bottom:0!important;
  box-shadow:none!important;
  border-radius:10px!important;
}
/* Alte Elementklasse aus V3.7.142 neutralisieren. */
.material-current-assignment.is-lca-context-sticky{
  position:relative!important;
  top:auto!important;
  z-index:auto!important;
  box-shadow:none!important;
}
.layer-path-panel > .layer-lca-inline.is-search-open{
  top:129px!important;
}
@media(max-width:700px){
  .material-catalog-picker.is-lca-context-sticky{top:57px!important}
  .layer-path-panel > .layer-lca-inline.is-search-open{top:125px!important}
}


/* V3.7.144 – zugehörigen Baustoff direkt in der sticky LCA-Zeile anzeigen */
.layer-lca-inline-copy{display:grid;gap:7px;min-width:0}
.layer-lca-material-context{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:9px;row-gap:1px;align-items:baseline;padding-bottom:7px;border-bottom:1px solid #cfe1d4}
.layer-lca-material-context small{font-size:.7rem;font-weight:800;color:#557064;text-transform:uppercase;letter-spacing:.03em}
.layer-lca-material-context strong{min-width:0;font-size:.86rem;color:#143b2a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layer-lca-material-context em{grid-column:2;font-style:normal;font-size:.72rem;color:#587064}
.layer-lca-assignment-context{display:grid;gap:2px;min-width:0}
.layer-lca-assignment-context>strong{font-size:.8rem;color:#17375e}
.layer-lca-assignment-context>small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layer-path-panel>.layer-lca-inline.is-search-open{min-height:92px!important;align-items:center!important}
@media(max-width:700px){
  .layer-lca-material-context{grid-template-columns:1fr}
  .layer-lca-material-context em{grid-column:1}
  .layer-lca-material-context strong,.layer-lca-assignment-context>small{white-space:normal}
}


/* V3.7.145 – getrennte sticky Zeilen für Baustoff und LCA-Zuordnung */
.layer-lca-search-panel .layer-lca-sticky-head{
  display:grid!important;
  position:sticky!important;
  top:64px!important;
  z-index:24!important;
  gap:6px!important;
  margin:0!important;
  padding:0 0 8px!important;
  background:#fff!important;
}
.layer-lca-search-panel .layer-lca-current{
  display:block!important;
  padding:10px 13px!important;
  border:1px solid #c8d8e7!important;
  border-radius:11px!important;
  background:#eef5fb!important;
  box-shadow:0 2px 7px rgba(30,64,95,.08)!important;
}
.layer-lca-sticky-material-copy{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 10px;align-items:baseline;min-width:0}
.layer-lca-sticky-material-copy small{font-size:.7rem;font-weight:850;color:#536b82;text-transform:uppercase;letter-spacing:.035em}
.layer-lca-sticky-material-copy strong{min-width:0;font-size:.88rem;color:#17375e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layer-lca-sticky-material-copy em{grid-column:2;font-style:normal;font-size:.73rem;color:#5a7187}
.layer-lca-search-panel .layer-lca-assigned-line{
  display:block!important;
  padding:10px 13px!important;
  border:1px solid #9ac8aa!important;
  border-radius:11px!important;
  background:#f3fbf6!important;
  box-shadow:0 2px 7px rgba(32,93,57,.07)!important;
}
.layer-lca-sticky-assignment-copy{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.layer-lca-sticky-assignment-copy>span{display:grid;gap:2px;min-width:0}
.layer-lca-sticky-assignment-copy small{font-size:.72rem;font-weight:800;color:#326347}
.layer-lca-sticky-assignment-copy strong{font-size:.8rem;color:#17375e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layer-lca-sticky-close,.layer-lca-undo{flex:0 0 auto;white-space:nowrap}
.layer-path-panel>.layer-lca-inline.is-search-open{display:none!important}
.material-catalog-picker.is-lca-context-sticky,.material-current-assignment.is-lca-context-sticky{position:static!important;top:auto!important;z-index:auto!important}
@media(max-width:700px){
  .layer-lca-search-panel .layer-lca-sticky-head{top:58px!important}
  .layer-lca-sticky-material-copy{grid-template-columns:1fr}
  .layer-lca-sticky-material-copy em{grid-column:1}
  .layer-lca-sticky-material-copy strong,.layer-lca-sticky-assignment-copy strong{white-space:normal}
  .layer-lca-sticky-assignment-copy{align-items:stretch;flex-direction:column}
  .layer-lca-sticky-close,.layer-lca-undo{width:100%}
}

/* V3.7.148 – rein optische Pfadführung: Pfad A blau, Pfad B braun */
.layer-path-panel-a,
.layer-path-panel-b{
  position:relative;
  overflow:visible;
  padding:16px 16px 16px 22px;
  border-width:1px;
  border-style:solid;
  border-radius:15px;
  box-shadow:0 7px 20px rgba(15,23,42,.045);
}
.layer-path-panel-a{
  border-color:#b9d6ea;
  background:linear-gradient(180deg,#f8fcff 0,var(--sheet-bg) 110px);
}
.layer-path-panel-b,
.layer-path-panel-b.is-active{
  border-color:#dfbf9e;
  border-style:solid;
  background:linear-gradient(180deg,#fffaf5 0,var(--sheet-bg) 110px);
}
.layer-path-panel-a::before,
.layer-path-panel-b::before{
  content:"";
  position:absolute;
  left:-1px;
  top:14px;
  bottom:14px;
  width:6px;
  border-radius:0 8px 8px 0;
}
.layer-path-panel-a::before{background:#77b4dc}
.layer-path-panel-b::before{background:#b9783f}

.layer-path-panel-head{
  position:relative;
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  grid-template-rows:auto auto;
  column-gap:10px;
  align-items:center;
  padding:0 0 11px;
  border-bottom:1px solid #dfe9f1;
}
.layer-path-panel-b .layer-path-panel-head{border-bottom-color:#ead9c8}
.layer-path-panel-head::before{
  grid-row:1/3;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:56px;
  height:26px;
  padding:0 9px;
  border-radius:999px;
  font-size:.68rem;
  font-weight:900;
  letter-spacing:.045em;
  text-transform:uppercase;
}
.layer-path-panel-a .layer-path-panel-head::before{
  content:"Pfad A";
  color:#16527d;
  background:#dceefa;
  border:1px solid #a9d0e9;
}
.layer-path-panel-b .layer-path-panel-head::before{
  content:"Pfad B";
  color:#7b461e;
  background:#f7e7d8;
  border:1px solid #dfba96;
}
.layer-path-panel-head strong{
  grid-column:2;
  color:#17375e;
  font-size:.95rem;
}
.layer-path-panel-b .layer-path-panel-head strong{color:#6d411f}
.layer-path-panel-head small{
  grid-column:2;
  color:#65788a;
  line-height:1.35;
}

/* Baustoffkopf und Detailkarte bilden optisch einen zusammenhängenden Pfadblock. */
.layer-path-panel-a .material-catalog-picker,
.layer-path-panel-b .material-catalog-picker{
  border-radius:12px;
  box-shadow:none;
}
.layer-path-panel-a .material-catalog-picker{border-color:#bfd8ea}
.layer-path-panel-b .material-catalog-picker{border-color:#e2c6aa}
.layer-path-panel-a .material-current-assignment{background:#edf7fd}
.layer-path-panel-b .material-current-assignment{background:#fff4ea}
.layer-path-panel-a .material-catalog-toggle{border-color:#8eb8d5;color:#164d76}
.layer-path-panel-b .material-catalog-toggle{border-color:#c99467;color:#71451f}
.layer-path-panel-b .material-catalog-picker.is-open .material-catalog-toggle{
  background:#8a552b;
  border-color:#8a552b;
}

/* LCA ist visuell eine Unterkarte des jeweiligen Baustoffs. */
.layer-path-panel > .layer-lca-inline{
  position:relative;
  margin-top:-3px!important;
  border-radius:0 0 12px 12px!important;
  border-top:0!important;
  box-shadow:none!important;
}
.layer-path-panel-a > .layer-lca-inline{
  border-color:#a9d0b5!important;
  background:linear-gradient(90deg,#f1faf4,#f8fcf9)!important;
}
.layer-path-panel-b > .layer-lca-inline{
  border-color:#cbb99f!important;
  background:linear-gradient(90deg,#fbf7ef,#fffaf5)!important;
}
.layer-path-panel > .layer-lca-inline::before{
  content:"QNG / LCA";
  position:absolute;
  top:-10px;
  left:13px;
  padding:2px 7px;
  border-radius:999px;
  background:#fff;
  border:1px solid currentColor;
  font-size:.61rem;
  font-weight:900;
  letter-spacing:.04em;
}
.layer-path-panel-a > .layer-lca-inline::before{color:#397852}
.layer-path-panel-b > .layer-lca-inline::before{color:#8a603a}

/* Die beiden Karten in der Aufteilung verwenden dieselbe Farblogik wie die Eingabeblöcke. */
.stud-share-value.is-bay{
  border-left-width:6px;
  border-color:#b9d6ea;
  border-left-color:#77b4dc;
  background:#f7fbfe;
}
.stud-share-value.is-stud{
  border-left-width:6px;
  border-color:#e2c6aa;
  border-left-color:#b9783f;
  background:#fffaf5;
}
.stud-share-value.is-bay>span::before,
.stud-share-value.is-stud>span::before{
  display:inline-flex;
  margin-right:7px;
  padding:2px 6px;
  border-radius:999px;
  font-size:.62rem;
  font-weight:900;
  letter-spacing:.035em;
  vertical-align:1px;
}
.stud-share-value.is-bay>span::before{
  content:"A";
  color:#16527d;
  background:#dceefa;
}
.stud-share-value.is-stud>span::before{
  content:"B";
  color:#7b461e;
  background:#f7e7d8;
}

/* Beim Bearbeiten wird der aktive Pfad etwas hervorgehoben, der andere bleibt lesbar. */
.layer-edit-form.is-editing-path-a-material .layer-path-panel-a,
.layer-edit-form.is-editing-path-a-lca .layer-path-panel-a{
  box-shadow:0 0 0 2px rgba(77,151,199,.20),0 10px 24px rgba(15,23,42,.07);
}
.layer-edit-form.is-editing-path-b-material .layer-path-panel-b,
.layer-edit-form.is-editing-path-b-lca .layer-path-panel-b{
  box-shadow:0 0 0 2px rgba(176,111,57,.20),0 10px 24px rgba(15,23,42,.07);
}

@media(max-width:760px){
  .layer-path-panel-a,.layer-path-panel-b{padding:14px 12px 14px 18px}
  .layer-path-panel-head{grid-template-columns:1fr}
  .layer-path-panel-head::before{grid-row:auto;justify-self:start;margin-bottom:3px}
  .layer-path-panel-head strong,.layer-path-panel-head small{grid-column:1}
}

/* V3.7.149 – LCA bleibt grün und wird mit dem Baustoff optisch verbunden */
.layer-path-panel > .layer-lca-inline{
  margin-top:18px!important;
  border:1px solid #9fcdb0!important;
  border-radius:12px!important;
  background:linear-gradient(90deg,#eff9f2,#f8fcf9)!important;
  box-shadow:0 3px 10px rgba(38,112,71,.055)!important;
}
.layer-path-panel-a > .layer-lca-inline,
.layer-path-panel-b > .layer-lca-inline{
  border-color:#9fcdb0!important;
  background:linear-gradient(90deg,#eff9f2,#f8fcf9)!important;
}
/* Zwei elastisch wirkende Verbindungslinien von der Baustoffkarte zur LCA-Unterkarte. */
.layer-path-panel > .layer-lca-inline::after{
  content:"";
  position:absolute;
  left:18px;
  right:18px;
  top:-19px;
  height:18px;
  border-left:2px solid #79b88e;
  border-right:2px solid #79b88e;
  border-top:2px solid #79b88e;
  border-radius:13px 13px 0 0;
  opacity:.9;
  pointer-events:none;
}
.layer-path-panel > .layer-lca-inline::before{
  color:#397852!important;
  z-index:1;
}
@media(max-width:760px){
  .layer-path-panel > .layer-lca-inline::after{left:12px;right:12px}
}

/* V3.7.154 – obere Aufteilung als eigene Schachtel, Pfadführung nur in den Pfadkarten */
.stud-share-visual{
  position:relative;
  overflow:hidden;
  padding:16px 16px 14px;
  border:1px solid #c9d9e8;
  border-radius:16px;
  background:linear-gradient(180deg,#f8fbfe 0%,#f5f9fc 100%);
  box-shadow:0 6px 18px rgba(15,23,42,.04);
}

.stud-share-heading{
  padding-bottom:4px;
}

.stud-share-values{
  margin-top:2px;
}

.stud-share-explanation{
  margin-top:2px;
}

/* Die seitlichen Führungen beginnen erst in der jeweiligen Pfadkarte. */
.layer-path-panel-a::before,
.layer-path-panel-b::before{
  top:16px!important;
  bottom:16px!important;
  width:4px!important;
}

/* Keine optischen Ausläufer oberhalb der Pfadkarten. */
.layer-path-panel-a,
.layer-path-panel-b{
  overflow:hidden;
}

/* Pfadkarten stärker als eigene Schachteln wahrnehmbar. */
.layer-path-panel-a{
  margin-top:0;
  border:1px solid #bfd7e8;
  border-radius:16px;
  background:#fbfdff;
  box-shadow:0 4px 12px rgba(54,110,154,.04);
}
.layer-path-panel-b,
.layer-path-panel-b.is-active{
  border:1px solid #e1c4a8;
  border-radius:16px;
  background:#fffaf5;
  box-shadow:0 4px 12px rgba(143,94,42,.04);
}

/* Kopfbereiche etwas ruhiger, damit die Trennung oben/unten klarer wird. */
.layer-path-panel-head{
  padding-bottom:10px;
  margin-bottom:2px;
}

/* LCA-Unterkarte bleibt innerhalb der Pfad-Schachtel und hängt nicht optisch an der oberen Aufteilung. */
.layer-path-panel > .layer-lca-inline{
  margin-top:16px!important;
}
.layer-path-panel > .layer-lca-inline::after{
  top:-15px!important;
  height:14px!important;
}

@media(max-width:760px){
  .stud-share-visual{padding:14px 12px}
  .layer-path-panel-a::before,
  .layer-path-panel-b::before{top:14px!important;bottom:14px!important}
}

/* V3.7.155 – automatischer oder manueller Anteil für Pfad B */
.stud-share-inline-editor{
  grid-template-columns:minmax(150px,.7fr) minmax(340px,1.45fr) minmax(210px,.9fr) auto;
}
.stud-share-manual-control{
  display:grid;
  grid-template-rows:auto 1fr;
  gap:6px;
  min-width:0;
  align-self:start;
}
.stud-share-manual-control[hidden]{display:none!important}
.stud-share-manual-toggle{
  display:flex!important;
  grid-template-rows:none!important;
  align-items:center;
  gap:8px!important;
  min-height:24px;
  margin:0!important;
  font-size:.76rem!important;
  font-weight:800;
  color:#334b63;
  cursor:pointer;
}
.stud-share-manual-toggle input{
  width:17px!important;
  height:17px!important;
  margin:0!important;
  accent-color:#17375e;
}
.stud-share-manual-field{
  display:grid!important;
  grid-template-rows:auto 42px auto!important;
  gap:5px!important;
  margin:0!important;
  padding:8px 10px!important;
  border:1px solid #d2deea!important;
  border-radius:10px!important;
  background:#f8fbfd!important;
}
.stud-share-manual-field input{
  width:100%;
  height:42px;
  margin:0!important;
  box-sizing:border-box;
}
.stud-share-manual-field input:disabled{
  background:#eef2f6;
  color:#7b8794;
}
.stud-share-manual-field small{
  margin:0;
  font-size:.68rem;
  line-height:1.25;
  color:var(--muted-2);
}
.stud-share-visual.is-manual-share{
  border-color:#d6b66f;
  background:linear-gradient(180deg,#fffdf7 0%,#f8fbfd 100%);
}
.stud-share-visual.is-manual-share .stud-share-status{
  background:#fff1c9;
  color:#805b00;
}
@media(max-width:1100px){
  .stud-share-inline-editor{grid-template-columns:1fr 1fr}
  .stud-share-inline-editor>.stud-layer-dimensions{grid-column:1/-1}
  .stud-share-manual-control{grid-column:1}
  .stud-share-inline-actions{grid-column:2;grid-row:auto;padding-top:24px;justify-content:flex-end}
}
@media(max-width:650px){
  .stud-share-inline-editor{grid-template-columns:1fr}
  .stud-share-inline-editor>.stud-share-thickness-field,
  .stud-share-inline-editor>.stud-layer-dimensions,
  .stud-share-manual-control,
  .stud-share-inline-actions{grid-column:1;grid-row:auto}
  .stud-share-inline-actions{padding-top:0;justify-content:stretch}
}

/* V3.7.156 – Sticky-Baustoff trotz Pfad-Schachtel wieder ermöglichen */
.layer-path-panel-a,
.layer-path-panel-b{
  overflow:visible!important;
}

/* Die ursprüngliche Baustoffzeile bleibt beim geöffneten Katalog unter den Aktionen stehen. */
.layer-path-panel .material-catalog-picker.is-open{
  overflow:visible!important;
}
.layer-path-panel .material-catalog-picker.is-open > .material-current-assignment{
  position:sticky!important;
  top:61px!important;
  z-index:38!important;
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  background:rgba(238,245,251,.98)!important;
  box-shadow:0 5px 12px rgba(15,23,42,.10)!important;
  backdrop-filter:blur(8px);
}
@media(max-width:700px){
  .layer-path-panel .material-catalog-picker.is-open > .material-current-assignment{
    top:57px!important;
  }
}

/* V3.7.157 – dezentes Einfügen zwischen Schichten */
.insert-layer-button{
  top:-14px!important;
  width:28px!important;
  height:28px!important;
  min-width:28px!important;
  max-width:28px!important;
  padding:0!important;
  border:1px solid #9fb9d0!important;
  border-radius:50%!important;
  background:#f7fbff!important;
  color:transparent!important;
  font-size:0!important;
  line-height:28px!important;
  box-shadow:0 3px 9px rgba(15,23,42,.11)!important;
  overflow:hidden!important;
}
.insert-layer-button::before{
  content:"+";
  display:block;
  color:var(--accent);
  font-size:20px;
  font-weight:700;
  line-height:25px;
  text-align:center;
}
.layers-table tr[data-layer-id]:hover + .insert-layer-row .insert-layer-button,
.insert-layer-row:hover .insert-layer-button,
.insert-layer-button:focus,
.insert-layer-button:hover{
  opacity:.92;
}
.insert-layer-button:hover,
.insert-layer-button:focus-visible{
  border-color:var(--accent)!important;
  background:#eaf3fb!important;
  box-shadow:0 4px 12px rgba(29,95,154,.20)!important;
}

/* V3.7.158 – Drag-&-Drop-Hinweis ausblenden */
.drag-hint{display:none!important}

/* V3.7.162 – Speichern/Abbrechen bei neuer Schicht direkt unter dem Dialogkopf */
.layer-add-top-actions{
  position:sticky;
  top:63px;
  z-index:3;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  padding:10px 18px;
  border-bottom:1px solid #d7e1ec;
  background:rgba(255,255,255,.98);
  box-shadow:0 5px 14px rgba(27,57,89,.08);
  backdrop-filter:blur(8px);
}
.layer-add-top-actions button,
.layer-add-top-actions .button{
  min-width:110px;
  margin:0;
}
@media(max-width:640px){
  .layer-add-top-actions{top:63px;justify-content:stretch}
  .layer-add-top-actions button,
  .layer-add-top-actions .button{flex:1 1 0;min-width:0}
}
.layers-table-fixed .drag-cell,
.layers-table-fixed .drag-handle{
  display:none!important;
}
.layers-table-fixed .col-material{
  width:auto!important;
}
.layers-table-fixed .layer-material-cell{
  min-width:300px;
}
.layers-table-fixed .layer-row-interactive{
  cursor:grab;
}
.layers-table-fixed .layer-row-interactive:active,
.is-layer-sorting .layers-table-fixed .layer-row-interactive{
  cursor:grabbing;
}
/* Frühere nth-child-Breiten nach Wegfall der ersten Spalte neutralisieren. */
.layers-table-fixed th:nth-child(1),
.layers-table-fixed td:nth-child(1){width:34px}
.layers-table-fixed th:nth-child(2),
.layers-table-fixed td:nth-child(2){width:auto}
@media(max-width:900px){
  .layers-table-fixed .layer-material-cell{min-width:240px}
}

/* V3.7.165 – Schichttabelle über die volle Breite, Baustoffspalte vergrößert */
.layers-table-wrap-fixed{
  display:block;
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
}
.layers-table-fixed{
  width:100%!important;
  max-width:none!important;
  table-layout:fixed!important;
}

/* Kompakte Zahlen-/Aktionsspalten; der gesamte Rest gehört dem Baustoffnamen. */
.layers-table-fixed .col-pos{width:28px!important}
.layers-table-fixed .col-material{width:auto!important}
.layers-table-fixed .col-share{width:48px!important}
.layers-table-fixed .col-thickness{width:50px!important}
.layers-table-fixed .col-lambda{width:48px!important}
.layers-table-fixed .col-r{width:48px!important}
.layers-table-fixed .col-mass{width:58px!important}
.layers-table-fixed .col-flags{width:102px!important}
.layers-table-fixed .col-actions{width:78px!important}

.layers-table-fixed .layer-material-cell{
  width:auto!important;
  min-width:0!important;
  padding-left:8px!important;
  padding-right:10px!important;
}
.layers-table-fixed .layer-path-line strong{
  max-width:100%;
}
.layers-table-fixed th,
.layers-table-fixed td{
  padding-left:4px;
  padding-right:4px;
}
.layers-table-fixed th:nth-child(2),
.layers-table-fixed td:nth-child(2){
  width:auto!important;
}

@media(max-width:900px){
  .layers-table-fixed .layer-material-cell{min-width:0!important}
  .layers-table-fixed{font-size:12px}
}

/* V3.7.166 – linke Bauteilspalte wirklich verbreitern; nur Layout */
.two-col:has(> .component-editor-main){
  grid-template-columns:minmax(760px,1.55fr) minmax(360px,.65fr);
}
.two-col:has(> .component-editor-main) > .component-editor-main{
  min-width:0;
  width:100%;
}
.two-col:has(> .component-editor-main) > .component-editor-main > .card:first-child{
  width:100%;
  max-width:none;
}
.layers-table-wrap-fixed{
  width:100%!important;
  max-width:none!important;
  overflow-x:auto;
}
.layers-table-fixed{
  width:100%!important;
  min-width:0!important;
  table-layout:fixed!important;
}
.layers-table-fixed .col-material{
  width:auto!important;
}
.layers-table-fixed .layer-material-cell{
  min-width:0!important;
}
/* Lange Namen dürfen den zusätzlichen Platz auch sichtbar nutzen. */
.layers-table-fixed .layer-path-line strong{
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  overflow-wrap:anywhere;
}
@media(max-width:1180px){
  .two-col:has(> .component-editor-main){grid-template-columns:1fr}
}

/* V3.7.167 – Tabelle füllt die linke Karte; Restbreite gehört dem Baustoff */
.component-editor-main .layers-table-wrap-fixed{
  display:block!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
.component-editor-main .layers-table-fixed{
  display:table!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
  table-layout:fixed!important;
}
/* Feste Spalten zusammen ca. 412 px; der komplette Rest wird Baustoff/Pfad. */
.component-editor-main .layers-table-fixed col.col-material{
  width:calc(100% - 412px)!important;
}
.component-editor-main .layers-table-fixed .layer-material-cell{
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
}
@media(max-width:900px){
  .component-editor-main .layers-table-fixed col.col-material{width:auto!important}
}

/* V3.7.168 – Schichttabelle garantiert über 100 % der Kartenbreite */
.component-editor-main > .card:first-child .layers-table-wrap-fixed{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  inline-size:100%!important;
  width:100%!important;
  max-width:none!important;
  overflow:visible!important;
}
.component-editor-main > .card:first-child .layers-table-fixed{
  display:table!important;
  inline-size:100%!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  table-layout:fixed!important;
  margin:0!important;
}

/* Prozentuale Spaltenverteilung = 100 %. Baustoff/Pfad erhält den größten Anteil. */
.component-editor-main .layers-table-fixed col.col-pos{width:4%!important}
.component-editor-main .layers-table-fixed col.col-material{width:38%!important}
.component-editor-main .layers-table-fixed col.col-share{width:7%!important}
.component-editor-main .layers-table-fixed col.col-thickness{width:7%!important}
.component-editor-main .layers-table-fixed col.col-lambda{width:6%!important}
.component-editor-main .layers-table-fixed col.col-r{width:6%!important}
.component-editor-main .layers-table-fixed col.col-mass{width:8%!important}
.component-editor-main .layers-table-fixed col.col-flags{width:13%!important}
.component-editor-main .layers-table-fixed col.col-actions{width:11%!important}

.component-editor-main .layers-table-fixed .layer-material-cell{
  width:auto!important;
  min-width:0!important;
  white-space:normal!important;
}
.component-editor-main .layers-table-fixed .layer-path-line strong{
  white-space:normal!important;
  overflow-wrap:anywhere!important;
}

@media(max-width:900px){
  .component-editor-main .layers-table-fixed{min-width:760px!important}
}

/* V3.7.169 – Gesamtseite wieder etwas kompakter, Schichttabelle bleibt voll breit */
@media screen and (min-width:1181px){
  .container,
  main.container,
  .wrap{
    max-width:1320px!important;
  }
}

/* V3.7.170 – linke Spalte kompakter, Ergebnis-/LCA-Spalte breiter */
@media screen and (min-width:1181px){
  .two-col:has(> .component-editor-main){
    grid-template-columns:minmax(700px,1.35fr) minmax(430px,.85fr)!important;
  }
  .two-col:has(> .component-editor-main) > :not(.component-editor-main){
    min-width:0;
    width:100%;
  }
}


/* V3.7.171 – Stammdaten-Klappmenüs; Monatsreferenzklima standardmäßig geschlossen */
.masterdata-accordion{
  border:1px solid #d7e2ec;
  border-radius:12px;
  background:#fff;
  overflow:hidden;
}
.masterdata-accordion>summary,
.masterdata-subaccordion>summary{
  cursor:pointer;
  list-style:none;
  user-select:none;
}
.masterdata-accordion>summary::-webkit-details-marker,
.masterdata-subaccordion>summary::-webkit-details-marker{display:none}
.masterdata-accordion>summary{
  position:relative;
  display:flex;
  align-items:center;
  min-height:58px;
  padding:12px 44px 12px 14px;
  background:#f7fafc;
  color:#17375e;
}
.masterdata-accordion>summary::after,
.masterdata-subaccordion>summary::after{
  content:'›';
  position:absolute;
  right:16px;
  top:50%;
  transform:translateY(-50%);
  font-size:22px;
  color:var(--muted-2);
  transition:transform .16s ease;
}
.masterdata-accordion[open]>summary::after,
.masterdata-subaccordion[open]>summary::after{
  transform:translateY(-50%) rotate(90deg);
}
.masterdata-accordion>summary span,
.masterdata-accordion>summary strong,
.masterdata-accordion>summary small{display:block}
.masterdata-accordion>summary small{
  margin-top:3px;
  color:var(--muted-2);
  font-size:.75rem;
  font-weight:400;
}
.masterdata-accordion-body{
  display:grid;
  gap:10px;
  padding:14px;
  border-top:1px solid #e2e8f0;
}
.masterdata-accordion-body>.muted{margin:0 0 2px}
.masterdata-subaccordion{
  position:relative;
  border:1px solid #e0e8f0;
  border-radius:9px;
  background:#fff;
  overflow:hidden;
}
.masterdata-subaccordion>summary{
  position:relative;
  padding:10px 40px 10px 12px;
  background:#f9fbfd;
  color:#263b50;
}
.masterdata-subaccordion>.table-wrap{
  margin:0;
  border-top:1px solid #e5edf4;
}

/* V3.7.172 – Verwendungsart und Übergangswiderstände in der Schichteingabe */
.layer-surface-settings{
  border:1px solid #cbd8e5;
  border-radius:12px;
  background:#f8fbfd;
  overflow:hidden;
}
.layer-surface-settings>summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:11px 13px;
  cursor:pointer;
  list-style:none;
  color:#17375e;
}
.layer-surface-settings>summary::-webkit-details-marker{display:none}
.layer-surface-settings>summary::after{content:'›';font-size:1.2rem;color:var(--muted-2);transition:transform .16s ease}
.layer-surface-settings[open]>summary::after{transform:rotate(90deg)}
.layer-surface-settings>summary strong,.layer-surface-settings>summary small{display:block}
.layer-surface-settings>summary small{margin-top:2px;color:var(--muted-2);font-size:.72rem;font-weight:500}
.layer-surface-settings-body{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  padding:12px 13px 13px;
  border-top:1px solid #dbe5ee;
  background:#fff;
}
.layer-surface-settings-body label{margin:0;min-width:0}
.layer-surface-settings-body select,.layer-surface-settings-body input{width:100%;margin-top:5px}
.layer-surface-settings.is-auto .js-layer-rsi,.layer-surface-settings.is-auto .js-layer-rse{background:var(--soft-bg-2);color:#526274}
.layer-surface-note{margin:0}
.surface-settings-moved-note{padding:10px 12px;border:1px solid #d8e3ed;border-radius:10px;background:var(--soft-bg);color:var(--muted-2);font-size:.78rem}
@media(max-width:900px){.layer-surface-settings-body{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.layer-surface-settings-body{grid-template-columns:1fr}}

/* V3.7.173 – Randbedingungen direkt am Schichtaufbau */
.layers-card-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:18px;
  margin-bottom:8px;
}
.layers-card-head h2{margin-bottom:4px}
.layers-card-head .input-direction-note{margin:0}
.component-surface-form{
  display:flex;
  align-items:flex-end;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
}
.component-surface-form label{
  display:grid;
  gap:4px;
  margin:0;
  min-width:190px;
  color:#526274;
  font-size:.72rem;
  font-weight:700;
}
.component-surface-form select{
  min-height:36px;
  margin:0;
  padding:6px 30px 6px 9px;
  font-size:.8rem;
}
.component-surface-form .surface-save-button{
  min-height:36px;
  padding:7px 11px;
  white-space:nowrap;
}
.layers-table-fixed .surface-resistance-row td{
  padding-top:7px;
  padding-bottom:7px;
  background:#f7fafc;
  border-top:1px solid #d8e3ed;
  border-bottom:1px solid #d8e3ed;
  color:#526274;
  vertical-align:middle;
}
.layers-table-fixed .surface-resistance-row td:first-child{
  padding-left:10px;
}
.layers-table-fixed .surface-resistance-row strong{
  display:inline-block;
  min-width:48px;
  color:#17375e;
}
.layers-table-fixed .surface-resistance-row span{
  font-size:.76rem;
}
.layers-table-fixed .surface-resistance-row td:nth-child(2){
  text-align:center;
}
.surface-resistance-input{
  width:66px!important;
  min-width:66px;
  height:30px;
  margin:0!important;
  padding:4px 6px!important;
  text-align:right;
  font-size:.8rem!important;
}
.surface-resistance-input.is-readonly{
  background:#eaf0f5;
  color:#45586b;
  cursor:default;
}
.surface-resistance-inside td{border-top:2px solid #8fb4d1!important}
.surface-resistance-outside td{border-bottom:2px solid #c9a071!important}
@media(max-width:1050px){
  .layers-card-head{align-items:stretch;flex-direction:column}
  .component-surface-form{justify-content:flex-start}
}
@media(max-width:650px){
  .component-surface-form{display:grid;grid-template-columns:1fr}
  .component-surface-form label{min-width:0}
  .component-surface-form .surface-save-button{width:100%}
}

/* V3.7.174 – kompakter Kopf und saubere Rsi/Rse-Darstellung */
.layers-card-head{align-items:flex-start;gap:14px}
.component-surface-form{display:grid;grid-template-columns:minmax(210px,1fr) minmax(150px,.72fr) auto;align-items:end;gap:6px 8px;max-width:620px}
.component-surface-form label{min-width:0}
.component-surface-form .surface-save-button{align-self:end}
.layers-table-fixed .surface-resistance-row td{padding-top:8px;padding-bottom:8px}
.surface-resistance-label{display:flex;align-items:baseline;gap:10px;min-width:0}
.surface-resistance-label strong{min-width:auto!important}
.surface-resistance-value{display:flex;align-items:center;justify-content:flex-end;gap:5px;white-space:nowrap}
.surface-resistance-text{min-width:38px;text-align:right;font-weight:700;color:#17375e}
.surface-resistance-unit{font-size:.76rem;color:#526274}
.surface-resistance-input{width:64px!important;min-width:64px}
.surface-resistance-input[hidden],.surface-resistance-text[hidden]{display:none!important}
@media(max-width:1050px){.component-surface-form{max-width:none;width:100%}}
@media(max-width:650px){.component-surface-form{grid-template-columns:1fr}.surface-resistance-label{align-items:flex-start;flex-direction:column;gap:2px}.surface-resistance-value{justify-content:flex-start}}

/* V3.7.175 – Verwendungsart als Schaltflächen; saubere Trennung paralleler Schichten */
.component-surface-form{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:7px;
  width:min(100%,480px);
  max-width:480px;
}
.surface-use-selector{display:grid;gap:4px}
.surface-use-label{font-size:.74rem;font-weight:700;color:#334b63}
.surface-use-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.surface-use-button{
  min-height:36px;
  padding:7px 10px;
  border:1px solid #9fb3c8;
  border-radius:8px;
  background:#fff;
  color:#17375e;
  font:inherit;
  font-size:.82rem;
  font-weight:600;
  cursor:pointer;
}
.surface-use-button:hover{background:#f1f6fa;border-color:#6688aa}
.surface-use-button.is-active,
.surface-use-button[aria-pressed="true"]{
  background:#17375e;
  border-color:#17375e;
  color:#fff;
  font-weight:800;
}
.surface-settings-mask{
  display:grid;
  grid-template-columns:minmax(180px,1fr) auto;
  gap:7px;
  align-items:end;
  padding:8px;
  border:1px solid #d7e2ec;
  border-radius:9px;
  background:#f8fbfd;
}
.surface-settings-mask[hidden]{display:none!important}
.surface-settings-mask label{min-width:0}
.surface-settings-mask .surface-save-button{align-self:end}
.layers-table-fixed .layer-parallel-row > td{vertical-align:top}
.layers-table-fixed .layer-parallel-row .layer-path-line,
.layers-table-fixed .layer-parallel-row .layer-path-value{box-sizing:border-box}
.layers-table-fixed .layer-parallel-row .layer-path-b,
.layers-table-fixed .layer-parallel-row .layer-path-b-value{border-top:0!important}
.layers-table-fixed .insert-layer-row td{border-top:0!important}
@media(max-width:650px){
  .component-surface-form{width:100%;max-width:none}
  .surface-use-buttons{grid-template-columns:1fr}
  .surface-settings-mask{grid-template-columns:1fr}
  .surface-settings-mask .surface-save-button{width:100%}
}


/* V3.7.176 – gewählte Verwendungsart als einzelnes Feld; Auswahlmaske nur nach Klick */
.component-surface-form{
  width:min(100%,360px);
  max-width:360px;
}
.surface-use-selector{display:grid;gap:4px}
.surface-current-use{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  width:100%;
  min-height:42px;
  padding:8px 12px;
  border:1px solid #17375e;
  border-radius:9px;
  background:#17375e;
  color:#fff;
  font:inherit;
  font-size:.92rem;
  font-weight:800;
  cursor:pointer;
  box-shadow:0 2px 5px rgba(15,23,42,.10);
}
.surface-current-use:hover{background:#214b78}
.surface-current-use-chevron{font-size:1.35rem;line-height:1;transition:transform .16s ease}
.surface-current-use[aria-expanded="true"] .surface-current-use-chevron{transform:rotate(90deg)}
.surface-settings-mask{
  grid-template-columns:1fr auto;
  gap:7px;
  padding:9px;
}
.surface-settings-mask .surface-use-buttons{
  grid-column:1/-1;
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.surface-settings-mask .surface-use-button{min-height:34px;padding:6px 8px}
/* Parallele Schichten: Aktionsspalte bleibt eine ruhige, durchgehende Zelle. */
.layers-table-fixed .layer-parallel-row .layer-actions{
  align-self:stretch;
  min-height:100%;
  border-top:0!important;
  border-bottom:1px solid #dfe7ef!important;
  background:#fff;
}
.layers-table-fixed .layer-parallel-row + .insert-layer-row td{
  height:0!important;
  min-height:0!important;
  padding:0!important;
  border:0!important;
  line-height:0!important;
}
@media(max-width:650px){
  .component-surface-form{width:100%;max-width:none}
  .surface-settings-mask{grid-template-columns:1fr}
  .surface-settings-mask .surface-use-buttons{grid-template-columns:1fr}
}

/* V3.7.177 – Verwendungsart ohne Label als vollbreites, leicht gefülltes Auswahlfeld */
.layers-card-head{
  align-items:flex-start;
}
.component-surface-form{
  flex:1 1 420px;
  width:auto;
  max-width:none;
}
.surface-use-selector{
  width:100%;
}
.surface-use-label{
  display:none!important;
}
.surface-current-use{
  width:100%;
  min-height:44px;
  padding:9px 14px;
  border:1px solid #9fb6cd;
  background:#eaf2f9;
  color:#17375e;
  box-shadow:none;
}
.surface-current-use:hover{
  background:#dfeaf4;
  border-color:#6f91b2;
}
.surface-current-use[aria-expanded="true"]{
  background:#dfeaf4;
  border-color:#52789e;
}
@media(max-width:900px){
  .layers-card-head{display:grid;grid-template-columns:1fr}
  .component-surface-form{width:100%;max-width:none}
}

/* V3.7.179 – Verwendungsart über volle Breite, Schichten direkt darunter */
.layers-card-head{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:10px;
}
.component-surface-form{
  order:1;
  width:100%;
  max-width:none;
  min-width:0;
}
.layers-title-wrap{
  order:2;
  min-width:0;
}
.layers-card-head h2{
  margin:0;
  font-size:1rem;
  line-height:1.15;
}
.surface-use-selector,
.surface-current-use{
  width:100%;
}
.surface-current-use{
  display:flex;
  align-items:center;
  justify-content:space-between;
  text-align:left;
}

/* V3.7.180 – vertikalen Flex-Abstand im Schichtenkopf entfernen */
.layers-card-head .component-surface-form{
  flex:0 0 auto;
}

/* V3.7.182 – hinterlüftet als Zusatz zur Außenwand */
.surface-ventilated-option{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:42px;
  padding:8px 10px;
  border:1px solid #cbd8e6;
  border-radius:8px;
  background:#f5f9fd;
}
.surface-ventilated-option[hidden]{display:none!important}
.surface-ventilated-option input{margin:0}


/* V3.7.183 – hinterlüftete Außenwand direkt in der Verwendungsart-Auswahl */
.surface-use-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}
.surface-use-button[data-ventilated="1"]{background:#f3f7fb}
.surface-use-button[data-ventilated="1"].is-active,
.surface-use-button[data-ventilated="1"][aria-pressed="true"]{background:#1f4772;color:#fff;border-color:#1f4772}
@media(max-width:650px){.surface-use-buttons{grid-template-columns:1fr}}

/* V3.7.184 – Tabellenkopf optisch mittig, saubere Trennlinie bei paralleler Schicht */
.layers-table-fixed thead th{
  vertical-align:middle;
}
.layers-table-fixed thead th:nth-child(3),
.layers-table-fixed thead th:nth-child(4),
.layers-table-fixed thead th:nth-child(5),
.layers-table-fixed thead th:nth-child(6),
.layers-table-fixed thead th:nth-child(7),
.layers-table-fixed thead th:nth-child(8),
.layers-table-fixed thead th:nth-child(9){
  text-align:center;
}
.layers-table-fixed thead th:nth-child(3),
.layers-table-fixed thead th:nth-child(4),
.layers-table-fixed thead th:nth-child(7){
  line-height:1.12;
}
.layers-table-fixed .layer-value-cell{
  text-align:center;
}
.layers-table-fixed .layer-path-value{
  justify-content:center;
}
.layers-table-fixed .layer-main-row td{
  border-bottom:1px solid #dfe7ef;
}
.layers-table-fixed .layer-parallel-row .layer-flags-cell,
.layers-table-fixed .layer-parallel-row .layer-actions{
  position:relative;
  vertical-align:top;
}
.layers-table-fixed .layer-parallel-row .layer-flags-cell::after,
.layers-table-fixed .layer-parallel-row .layer-actions::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:-1px;
  border-bottom:1px solid #dfe7ef;
}
.layers-table-fixed .layer-parallel-row + .insert-layer-row td{
  border:0!important;
}

/* V3.7.185 – Aktionsspalte bei parallelen Schichten als echte Tabellenzelle */
.layers-table-fixed td.layer-actions{
  display:table-cell!important;
  vertical-align:top!important;
  text-align:right!important;
  white-space:nowrap!important;
  border-bottom:1px solid #dfe7ef!important;
}
.layers-table-fixed .layer-parallel-row .layer-actions{
  min-height:0!important;
  align-self:auto!important;
  border-top:0!important;
  border-bottom:1px solid #dfe7ef!important;
}
.layers-table-fixed .layer-parallel-row .layer-actions::after{
  content:none!important;
  display:none!important;
}
.layers-table-fixed td.layer-actions .layer-action-button{
  display:inline-flex;
  margin-left:4px;
  vertical-align:top;
}

/* V3.7.186 – Kopieren und Löschen in einem intuitiven Drei-Punkte-Menü */
.layers-table-fixed .col-actions{width:48px!important}
.layers-table-fixed td.layer-actions{
  position:relative;
  overflow:visible;
  text-align:center;
  vertical-align:top;
  padding-left:3px;
  padding-right:3px;
}
.layers-table-fixed .layer-parallel-row .layer-actions{
  vertical-align:top;
  padding-top:9px;
}

/* V3.7.187 – Schichtaktionen per Hover{
  display:block;
  top:100%;
  margin-top:2px;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(-3px);
  transition:opacity .14s ease, transform .14s ease, visibility .14s ease;
}
@media (hover:none){
}

/* V3.7.188 – Aktionsmenü erscheint beim Hover über die Schicht, Aktion erst per Klick */
@media (hover:hover) and (pointer:fine){
}
@media (hover:none), (pointer:coarse){
}

/* V3.7.189 – Drag-Gesten: links kopieren, rechts löschen, vertikal verschieben */
.drag-ghost{
  transition:box-shadow .12s ease,opacity .12s ease,outline-color .12s ease;
}
.drag-ghost.drag-intent-neutral{
  /* BMC 022.92: war opacity:.82 - liess die darunterliegende Kopieren/Loeschen-Farbflaeche
     durch den Ghost durchscheinen ("Schicht verschieben wird durchsichtig"). Der Ghost
     traegt bereits einen weissen Hintergrund und soll die Zeile beim Swipe voll abdecken. */
  opacity:1;
  outline:2px dashed #7b8fa6;
  outline-offset:-2px;
}
.drag-ghost.drag-intent-copy{
  opacity:1;
  outline:3px solid #16824b;
  outline-offset:-3px;
  box-shadow:0 12px 30px rgba(22,130,75,.24);
}
.drag-ghost.drag-intent-delete{
  opacity:1;
  outline:3px solid #c43b3b;
  outline-offset:-3px;
  box-shadow:0 12px 30px rgba(196,59,59,.24);
}
.save-status.hint{color:#526274}
.save-status.sorting{color:#315d8a}
.save-status.copy{color:#16824b;font-weight:700}
.save-status.delete{color:#b52f2f;font-weight:700}

/* V3.7.191 – Einfügeanzeige nur beim vertikalen Verschieben */
.layers-table-fixed .sort-placeholder-arrow td{
  position:relative;
  height:28px!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  overflow:visible;
}
.layers-table-fixed .sort-placeholder-arrow td::before{
  content:"";
  position:absolute;
  left:8px;
  right:8px;
  top:50%;
  border-top:2px solid var(--orange);
  transform:translateY(-50%);
}
.sort-target-arrow{
  position:absolute;
  left:50%;
  top:50%;
  z-index:2;
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  border-radius:999px;
  background:var(--orange);
  color:#fff;
  font-size:17px;
  font-weight:800;
  line-height:1;
  transform:translate(-50%,-50%) rotate(90deg);
  box-shadow:0 4px 12px rgba(242,140,40,.34);
  animation:layerTargetBounce .75s ease-in-out infinite;
}
.sort-target-text{
  position:absolute;
  right:14px;
  top:50%;
  z-index:2;
  padding:2px 7px;
  border-radius:999px;
  background:#fff7ed;
  color:#9a4f00;
  font-size:11px;
  font-weight:700;
  transform:translateY(-50%);
}
@keyframes layerTargetBounce{
  0%,100%{margin-top:-3px}
  50%{margin-top:3px}
}
@media (prefers-reduced-motion:reduce){
  .sort-target-arrow{animation:none}
}

/* V3.7.192 – Zielpfeil bleibt über der gezogenen Schicht sichtbar */
.layers-table-fixed .sort-placeholder-arrow,
.layers-table-fixed .sort-placeholder-arrow td{
  position:relative;
  z-index:10020!important;
}
.layers-table-fixed .sort-placeholder-arrow td::before,
.sort-target-arrow,
.sort-target-text{
  z-index:10021!important;
  pointer-events:none;
}
.sort-target-arrow{
  box-shadow:0 0 0 3px rgba(255,255,255,.92),0 6px 16px rgba(242,140,40,.48);
}

/* V3.7.193 – Bauteilansicht wieder über die volle verfügbare Seitenbreite */
@media screen and (min-width:1181px){
  main.container:has(.component-editor-main),
  .container:has(.component-editor-main),
  .wrap:has(.component-editor-main){
    width:100%!important;
    max-width:none!important;
  }
  .two-col:has(> .component-editor-main){
    width:100%!important;
    max-width:none!important;
  }
}

/* V3.7.194 – unsichtbare Aktionsspalte verkleinern, Schichtaufbau verbreitern */
@media (hover:hover) and (pointer:fine){
  .component-editor-main .layers-table-fixed col.col-material{
    width:48%!important;
  }
  .component-editor-main .layers-table-fixed col.col-actions{
    width:1%!important;
  }
  .layers-table-fixed td.layer-actions{
    width:1%!important;
    min-width:0!important;
    padding-left:0!important;
    padding-right:0!important;
  }
}
@media (hover:none), (pointer:coarse){
  .component-editor-main .layers-table-fixed col.col-actions{
    width:48px!important;
  }
}


/* V3.7.195 – direkte Rsi/Rse-Bearbeitung mit Hinweis Benutzerdefiniert */
.surface-resistance-text{
  cursor:text;
  border-bottom:1px dotted #52789e;
}
.surface-resistance-text:hover{
  color:#0f4f86;
  border-bottom-color:#0f4f86;
}
.surface-custom-hint{
  display:inline-flex;
  align-items:center;
  min-height:20px;
  padding:2px 7px;
  border-radius:999px;
  background:#fff0d8;
  color:#8a5100!important;
  font-size:.7rem!important;
  font-weight:700;
  white-space:nowrap;
}
.surface-custom-hint[hidden]{display:none!important}

/* V3.7.199 – Bauteilkopf beim Scrollen fixieren */
/* BMC 022.203 (Nutzerhinweis 01.08.2026, "oben die zeile schiebt sich unter eine andere beim
   scrollen"): .topbar ist position:fixed und 54px hoch - dafuer haelt body{padding-top:54px}
   den Platz frei. Diese Leiste klebte aber bei top:0, also an der Fensterkante HINTER der
   fixierten Leiste, und verschwand beim Scrollen darunter. Andere klebende Elemente mit top:0
   sitzen in Dialogen oder der Druckansicht (dort padding-top:0) und bleiben unveraendert. */
.component-sticky-toolbar{
  position:sticky;
  top:54px;
  z-index:120;
  margin-top:0;
  padding-top:14px;
  padding-bottom:14px;
  background:var(--bg);
  border-bottom:1px solid #d7e1eb;
  box-shadow:0 8px 18px rgba(15,23,42,.08);
}

/* V3.7.204 – B4-Austauschannahmen sichtbar kennzeichnen */
.layer-b4-settings{
  border:1px solid #e2c37c;
  border-radius:10px;
  background:#fffaf0;
}
.layer-b4-settings summary{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  cursor:pointer;
}
.layer-b4-settings summary small{color:#7a5a18}
.layer-b4-settings[open] summary{border-bottom:1px solid #ead7a6}
.layer-b4-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  padding:12px;
}
.layer-b4-settings > .field-help{display:block;padding:0 12px 12px}
.layer-b4-badge{
  display:inline-flex;
  width:max-content;
  margin-top:4px;
  padding:3px 7px;
  border:1px solid #d69a2d;
  border-radius:999px;
  background:#fff3cf;
  color:#7a4c00;
  font-size:.7rem;
  font-weight:800;
  line-height:1.1;
}
@media(max-width:760px){.layer-b4-grid{grid-template-columns:1fr}}

/* V3.7.206 – Zuordnung der RW2023-Nutzungsdauern zu QNG/ANG */
.usage-map-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:end}
.usage-map-stats{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.usage-map-stats span{padding:7px 10px;border:1px solid #dbe4ee;border-radius:999px;background:var(--soft-bg);font-size:.82rem;white-space:nowrap}
.usage-map-stats strong{color:#17375e}
.usage-map-editor{border-left:4px solid var(--orange)}
.usage-map-table td small{display:block;color:#657383;margin-top:3px}
.usage-map-status{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:.78rem;font-weight:700;background:#edf1f5;color:#526274}
.usage-map-status.status-auto{background:#e3f3e8;color:#246637}
.usage-map-status.status-suggested{background:#fff0d8;color:#8a5100}
.usage-map-status.status-manual{background:#e5efff;color:#174b8a}
.usage-map-status.status-unmatched{background:#f3f4f6;color:#667085}
.inline-form{display:inline-block;margin:0 5px 0 0}
@media(max-width:900px){.usage-map-head{grid-template-columns:1fr}.usage-map-stats{justify-content:flex-start}}

/* V3.7.210 – zentrale, baustoffbezogene QNG-/BBSR-Zuordnung */
.lca-b4-map-head{display:flex;gap:18px;align-items:end;justify-content:space-between;flex-wrap:wrap}
.lca-b4-map-head .filter-bar{flex:1;margin:0}
.lca-b4-map-stats{display:flex;gap:8px;flex-wrap:wrap}
.lca-b4-map-stats span{padding:7px 10px;border:1px solid #d7e2ed;border-radius:999px;background:#f7fafc;font-size:.84rem}
.lca-b4-map-layout{display:grid;grid-template-columns:minmax(260px,330px) minmax(0,1fr);gap:18px;align-items:start}
.lca-b4-material-list{padding:12px;position:sticky;top:112px;max-height:calc(100vh - 132px);overflow:auto}
.lca-b4-material-list h2{font-size:1rem;margin:2px 6px 10px}
.lca-b4-material-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border:1px solid transparent;border-radius:9px;color:inherit;text-decoration:none}
.lca-b4-material-item:hover{background:#f3f7fb;border-color:#d7e2ed}
.lca-b4-material-item.active{background:#e7f0f8;border-color:#7ea3c5}
.lca-b4-material-item span{min-width:0}
.lca-b4-material-item strong,.lca-b4-material-item small{display:block}
.lca-b4-material-item small{color:#66788a;margin-top:2px}
.mapping-dots{display:flex;gap:4px;font-style:normal;flex:0 0 auto}
.mapping-dots i{display:inline-flex;align-items:center;justify-content:center;min-width:38px;padding:3px 5px;border-radius:6px;font-size:.65rem;font-style:normal;font-weight:800}
.mapping-dots i.ok{background:#dff5e6;color:#166534}.mapping-dots i.missing{background:#f3f4f6;color:#7b8794}
.lca-b4-map-main{display:grid;gap:16px;min-width:0}
.mapping-material-head{display:flex;justify-content:space-between;gap:14px;align-items:center}
.mapping-material-head h2{margin:0 0 4px}.mapping-material-head p{margin:0;color:#66788a}
.mapping-chain{display:grid;grid-template-columns:minmax(0,1fr) 38px minmax(0,1fr);gap:10px;align-items:stretch}
.mapping-step{display:flex;flex-direction:column;gap:12px;border-top:4px solid #cbd5e1}
.mapping-step.is-complete{border-top-color:#22a35a}.mapping-step.is-open{border-top-color:#e09a24}
.mapping-step header{display:flex;gap:10px;align-items:flex-start}
.mapping-step header>span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#17375e;color:#fff;font-weight:800}
.mapping-step h3{margin:0}.mapping-step header p{margin:2px 0 0;color:#66788a;font-size:.86rem}
.mapping-current{padding:10px;border-radius:8px;background:#eef8f1;border:1px solid #ccebd7}
.mapping-current strong,.mapping-current small{display:block}.mapping-current small{margin-top:4px;color:#4f6b5a}
.mapping-empty{padding:10px;border-radius:8px;background:#fff7e8;border:1px solid #f1d49b;color:#7b5315}
.mapping-arrow{display:grid;place-items:center;font-size:2rem;color:#6f8295;font-weight:700}
.bbsr-search-form{display:flex;gap:8px;align-items:end}.bbsr-search-form label{flex:1}.bbsr-search-form button{margin-bottom:0}
.bbsr-candidate-list h2{font-size:1rem;margin-top:0}
.bbsr-candidate-grid{display:grid;gap:8px}
.bbsr-candidate-grid article{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px;border:1px solid #dce5ee;border-radius:9px;background:#fff}
.bbsr-candidate-grid strong,.bbsr-candidate-grid small{display:block}.bbsr-candidate-grid small{margin-top:4px;color:#66788a}
@media(max-width:1000px){.lca-b4-map-layout{grid-template-columns:1fr}.lca-b4-material-list{position:static;max-height:360px}.mapping-chain{grid-template-columns:1fr}.mapping-arrow{transform:rotate(90deg);height:24px}}
@media(max-width:650px){.mapping-material-head,.bbsr-candidate-grid article,.bbsr-search-form{align-items:stretch;flex-direction:column}.lca-b4-map-head{align-items:stretch}}

/* V3.7.211 – paralleler RW2023-Baustoffstamm */
.rw-summary-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
.rw-import-note{margin-bottom:14px;color:#46576a}
.rw-material-table{min-width:1040px}
.rw-material-table th{vertical-align:middle}
.rw-material-table td{vertical-align:top}
.rw-material-table th:first-child,.rw-material-table td:first-child{width:138px}
.rw-hatch-swatch{display:block;max-width:116px;border-radius:5px;background:#fff}
.rw-color-only{display:block;width:116px;height:42px;border:1px solid #bdc9d6;border-radius:5px}
.rw-hatch-meta,.rw-source-id,.rw-material-table td small{display:block;margin-top:4px;color:var(--muted-2);font-size:.76rem;line-height:1.35}
.rw-values{display:grid;grid-template-columns:repeat(2,minmax(70px,1fr));gap:4px 10px;white-space:nowrap}
.rw-values span{color:var(--muted-2)}.rw-values strong{color:#17375e}
.rw-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.rw-lca-link{margin-bottom:7px;padding:6px 8px;border:1px solid #dce5ee;border-radius:7px;background:var(--soft-bg)}
.rw-lca-link strong,.rw-lca-link small{display:block}
.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0}
.pagination>div{display:flex;gap:8px}
@media(max-width:1100px){.rw-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Build 004: Material Center */
.material-code-badge,.material-code-link{display:inline-flex;align-items:center;width:max-content;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:700;letter-spacing:.02em;color:#16345c;background:#eef4fb;border:1px solid #c7d8ec;border-radius:6px;padding:3px 7px;white-space:nowrap}.material-code-link{text-decoration:none}.material-code-link:hover{background:#dfeaf7;border-color:#9eb9d8}.material-code-cell{min-width:132px}.family-variant-main .material-code-badge{margin-bottom:4px}.family-variant-main{display:flex;flex-direction:column;align-items:flex-start;gap:2px}

.view-as-form{display:inline-flex;margin-left:14px;vertical-align:middle}.view-as-form label{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#5c6b7a;white-space:nowrap}.view-as-form select{padding:5px 26px 5px 8px;border:1px solid #bdc9d8;border-radius:7px;background:#fff;color:var(--ink);font-weight:700}.nav-role-project_user{background:#eef6ff;color:var(--accent);border-color:#b9d7f0}@media(max-width:1100px){.topbar{flex-wrap:wrap}.topbar nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.topbar nav a{margin-left:8px}.view-as-form{margin-left:8px}}

/* Build 010: sticky actions in component master data */
.component-edit-form{position:relative}
.component-edit-sticky-actions{position:sticky;top:72px;z-index:90;display:flex;gap:10px;justify-content:flex-end;padding:10px 12px;background:rgba(255,255,255,.96);border:1px solid #d9e2ea;border-radius:10px;box-shadow:0 4px 14px rgba(23,55,94,.12)}
@media(max-width:760px){.component-edit-sticky-actions{top:58px}.component-edit-sticky-actions .button,.component-edit-sticky-actions button{flex:1}}

/* Build 013: QNG- und Austauschstatus im Material Center */
.material-b4-cell{min-width:130px}.material-b4-cell small{display:block;margin-top:.35rem;color:var(--muted)}
.material-assignment-summary{margin-bottom:1rem}.material-assignment-summary .toolbar-actions{margin-top:1rem;justify-content:flex-start}
.button.disabled{pointer-events:none;opacity:.65}


/* Build 014: QNG- und B4-Status direkt bei der Baustoffauswahl */
.material-data-badge{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;font-size:11px;font-weight:700;border:1px solid transparent}
.material-data-badge.ok{background:#ecfdf5;color:#166534;border-color:#bbf7d0}
.material-data-badge.missing{background:#fff7ed;color:#9a3412;border-color:#fed7aa}


/* Build 015: Baustoffdaten oben mitlaufend; Wischaktionen mit sichtbaren Aktionsflaechen */
@media(min-width:1100px){
  .material-catalog-layout{
    grid-template-columns:minmax(220px,.82fr) minmax(330px,1.28fr) minmax(250px,.9fr);
    grid-template-rows:auto;
    align-items:start;
  }
  .material-catalog-tree-panel,.material-catalog-results-panel{min-height:360px}
  .material-catalog-detail{
    grid-column:3;
    grid-row:1;
    position:sticky;
    top:0;
    align-self:start;
    max-height:min(58vh,520px)!important;
    overflow:auto!important;
    border-top:0!important;
    border-left:1px solid #e2e8f0!important;
    box-shadow:-8px 0 18px rgba(15,23,42,.035);
  }
  .material-catalog-detail>h4{position:sticky;top:-12px;z-index:2;background:#fff;padding:12px 0 8px;margin-top:-12px}
}
.layer-swipe-backdrop{
  position:fixed;
  z-index:9997;
  display:grid;
  grid-template-columns:1fr 1fr;
  overflow:hidden;
  border-radius:8px;
  pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(15,23,42,.08);
}
.layer-swipe-backdrop span{display:flex;align-items:center;padding:0 20px;color:#fff;font-weight:900;letter-spacing:.02em;text-transform:uppercase}
.layer-swipe-backdrop .swipe-copy{justify-content:flex-start;background:#16824b}
.layer-swipe-backdrop .swipe-delete{justify-content:flex-end;background:#c43b3b}
.layer-undo-toast{
  position:fixed;left:50%;bottom:24px;z-index:1600;transform:translateX(-50%);
  display:flex;align-items:center;gap:16px;max-width:calc(100vw - 28px);padding:11px 14px;
  border-radius:10px;background:#17375e;color:#fff;box-shadow:0 10px 30px rgba(15,23,42,.28)
}
.layer-undo-toast a{color:#fff;font-weight:900;text-decoration:underline;text-underline-offset:3px}
.layer-undo-toast.is-expired{opacity:0;transform:translate(-50%,12px);transition:opacity .25s,transform .25s}

/* 018t EECON Zuordnung */
.eecon-assignment-table td{vertical-align:top;padding-top:14px;padding-bottom:14px}
.eecon-source-cell strong{font-size:14px;line-height:1.3;display:block}
.eecon-source-values,.eecon-selected-values{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:7px;font-size:12px;color:#53657a}
.eecon-source-values span,.eecon-selected-values span{background:#f3f7fb;border:1px solid #dce6f0;border-radius:6px;padding:4px 7px}
.eecon-material-picker{display:grid;grid-template-columns:auto minmax(150px,220px) minmax(280px,1fr);gap:7px 9px;align-items:center}
.eecon-material-picker>small,.eecon-material-picker>.eecon-selected-values{grid-column:2/-1}
.eecon-material-picker select{min-width:0;width:100%}
.eecon-lambda-status{font-weight:700}
.eecon-lambda-status.is-ok{color:#147a3e;background:#e7f7ed;border-color:#bce5ca}
.eecon-lambda-status.is-warn{color:#9a5a00;background:#fff5d6;border-color:#ead28a}
.eecon-lambda-status.is-error{color:#a72c2c;background:#fdeaea;border-color:#efb9b9}
@media(max-width:900px){.eecon-material-picker{grid-template-columns:1fr}.eecon-material-picker>small,.eecon-material-picker>.eecon-selected-values{grid-column:1}.eecon-assignment-table{min-width:980px}}

/* BMC 022.100 (Nutzerauftrag 26.07.2026 "Auswahlfelder gleiche Laenge ...
   Browserfenster nicht ueberschreiten"): Baustoff-Auswahl in der PDF-Importvorschau hat eine
   feste, einheitliche Breite - haelt jede Tabellenzeile trotz mehrerer Baustoff-Felder
   (Pfad A/B, seit BMC 022.101 zusaetzlich Stegmaterial) schmal und gleich breit.
   BMC 022.101 (Nutzerauftrag 26.07.2026 "der Ändern Button macht keinen Sinn ... reicht das"):
   entfernt den bisherigen geschlossenen Name+"Ändern"-Button-Zustand (.pdf-material-closed/
   .pdf-material-toggle sind dadurch nicht mehr in Verwendung) - Suchfeld+Auswahlliste
   (.pdf-material-open) sind jetzt direkt sichtbar. */
.pdf-material-picker{max-width:230px;margin-bottom:6px}
.pdf-material-open{display:flex;flex-direction:column;gap:5px}
.pdf-material-open select{min-width:0;width:100%}
.pdf-material-open>.field-help{margin:0}


/* BMC 020 – Bestandsausbau */
.manufacturer-badge{display:inline-flex;align-items:center;width:max-content;padding:2px 7px;border-radius:999px;background:#eef4fb;color:var(--ink);font-size:.72rem;font-weight:700;margin:2px 0}
.bmc-audit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:16px}
.bmc-audit-card{border:1px solid #dce3ea;border-radius:12px;padding:14px;background:#fff}
.bmc-audit-card header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.bmc-audit-card header div{display:flex;flex-direction:column;gap:3px}.bmc-audit-card header small{color:#687482}
.bmc-audit-card header>span{min-width:34px;height:34px;border-radius:999px;display:grid;place-items:center;font-weight:800;background:#e8f4ea;color:#26733b}
.bmc-audit-card.has-issues header>span{background:#fff1dd;color:#9a5a00}
.bmc-audit-card ul{margin:12px 0 0;padding-left:18px;max-height:260px;overflow:auto}.bmc-audit-card li{margin:5px 0}.bmc-audit-card p{margin:12px 0 0;color:#52705a}
@media(max-width:900px){.bmc-audit-grid{grid-template-columns:1fr}}

/* BMC 021 – Materialfamilien und Varianten */
.family-row-actions{display:flex;gap:.45rem;flex-wrap:wrap;justify-content:flex-end}
.family-summary-grid{grid-template-columns:repeat(5,minmax(145px,1fr))}
.family-editor-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:1rem;align-items:end;margin:1rem 0}
.family-editor-toolbar label{display:grid;gap:.35rem;font-weight:700}
.family-editor-toolbar input{width:100%}
@media(max-width:900px){.family-summary-grid{grid-template-columns:repeat(2,minmax(140px,1fr))}.family-editor-toolbar{grid-template-columns:1fr}}

/* BMC 021.2: sichtbarer Einstieg in Bestandsprüfung und Familienverwaltung */
.bmc-version-badge{display:inline-block;margin-left:8px;padding:3px 8px;border-radius:999px;background:#e8eef7;color:var(--ink);font-size:12px;vertical-align:middle}
.bmc-tools-card{display:flex;justify-content:space-between;align-items:center;gap:18px;border-left:4px solid var(--orange)}
.bmc-tools-card h2{margin:0 0 6px}.bmc-tools-card p{margin:0;color:#5f6f82;max-width:850px}.bmc-audit-main-button{background:var(--orange)!important;color:#fff!important;border:1px solid var(--orange)!important}
@media(max-width:900px){.bmc-tools-card{align-items:flex-start;flex-direction:column}}

/* BMC 021.7: ZUB-Helena-kompatible Schraffurvorschau */
.pattern-preview[data-pattern="wood"],
.pattern-preview[data-pattern="clt"],
.pattern-preview[data-pattern="veneer"],
.pattern-preview[data-pattern="osb"],
.pattern-preview[data-pattern="eps"]{
  background-image:repeating-linear-gradient(90deg,transparent 0 3px,#1e2632 4px 5px);
  background-size:8px 8px;
}
.pattern-preview[data-pattern="xps"]{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='24' viewBox='0 0 48 24'%3E%3Cpath d='M-12 0 A12 12 0 0 0 12 0 M12 0 A12 12 0 0 0 36 0 M36 0 A12 12 0 0 0 60 0 M0 24 A12 12 0 0 1 24 24 M24 24 A12 12 0 0 1 48 24 M12 0 L24 24 M36 0 L48 24 M12 0 L0 24 M36 0 L24 24' fill='none' stroke='%231e2632' stroke-width='1'/%3E%3C/svg%3E");
  background-size:48px 24px;background-repeat:repeat;
}
.pattern-preview[data-pattern="woodfibre"],
.pattern-preview[data-pattern="insulation"],
.pattern-preview[data-pattern="cellulose"],
.pattern-preview[data-pattern="woodfill"]{
  background-image:repeating-linear-gradient(45deg,transparent 0 9px,#1e2632 10px 11px),repeating-linear-gradient(-45deg,transparent 0 9px,#1e2632 10px 11px);
  background-size:14px 14px;
}
.pattern-preview[data-pattern="board"]{
  background-image:linear-gradient(#1e2632 1px,transparent 1px),linear-gradient(90deg,#1e2632 1px,transparent 1px);
  background-size:6px 6px;
}
.pattern-preview[data-pattern="steel"]{
  background-image:repeating-linear-gradient(45deg,transparent 0 2px,#1e2632 3px 4px);
  background-size:4px 4px;
}
.pattern-preview[data-pattern="aerated"]{
  background-image:radial-gradient(circle at 0 50%,#1e2632 0 1px,transparent 1.2px),repeating-linear-gradient(45deg,transparent 0 5px,#1e2632 6px 7px);
  background-size:8px 8px;
}
.pattern-preview[data-pattern="screed"]{
  background-image:radial-gradient(circle,#1e2632 0 1px,transparent 1.2px);
  background-size:6px 6px;
}
.pattern-preview[data-pattern="concrete"],
.pattern-preview[data-pattern="masonry"],
.pattern-preview[data-pattern="sandlime"],
.pattern-preview[data-pattern="brick"]{
  background-image:repeating-linear-gradient(45deg,transparent 0 5px,#1e2632 6px 7px);
  background-size:7px 7px;
}
.pattern-preview[data-pattern="gypsum"],
.pattern-preview[data-pattern="mortar"]{
  background-image:radial-gradient(circle,#1e2632 0 .8px,transparent 1px);
  background-size:10px 10px;
}


/* BMC 021.9: Mehrfachauswahl erst nach Aktionswahl */
.component-bulk-toolbar .toolbar-actions{align-items:center}
.component-bulk-toolbar button.is-active{outline:2px solid var(--orange);outline-offset:2px}
.bulk-select-cell[hidden]{display:none!important}

/* BMC 022.87 (RC1-Punkt 8: "Mehrfachaktionen sollen anders/neu gestaltet werden - noch nicht
   spezifiziert wie"): .compact-toolbar ist eine geteilte Klasse (auch bei Vorlagenbauteilen und
   Druckbemerkungen verwendet, dort verschachtelt in einer eigenen .card) - deshalb bewusst NICHT
   angefasst, um dort keine doppelte Kartenoptik zu erzeugen. Stattdessen gezielt nur
   .component-bulk-toolbar gestaltet (kommt nur an dieser einen Stelle vor, ist selbst die
   Karte). Die bestehende JS-Logik (reset()/activate(), component-bulk-form/-action/-submit/
   -cancel) bleibt unveraendert - dieser Patch ist rein optisch. Einzige, sehr kleine JS-Ergaenzung:
   activate()/reset() setzen zusaetzlich ein data-bulk-mode-Attribut auf das Formular, damit die
   Karte farblich den gewaehlten Modus widerspiegelt (siehe Skript weiter unten in index.php). */
.component-bulk-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
  background:var(--soft-bg);
  border:1px solid var(--soft-line);
  transition:background .15s,border-color .15s;
}
.component-bulk-toolbar > div:first-child strong{
  color:var(--headline);
  font-size:15px;
}
.component-bulk-toolbar .small{
  margin:2px 0 0;
  color:var(--muted-2);
  font-size:.82rem;
}
.component-bulk-toolbar .button.danger{
  background:#fff1f2;
  color:#b42318;
  border:1px solid #fecdd3;
}
.component-bulk-toolbar .button.danger:hover{
  background:#ffe4e6;
}
.component-bulk-toolbar[data-bulk-mode="copy"]{
  background:#eff6ff;
  border-color:#bfdbfe;
}
.component-bulk-toolbar[data-bulk-mode="archive"]{
  background:#fff7ed;
  border-color:#fbd9ac;
}
.component-bulk-toolbar[data-bulk-mode="delete"]{
  background:#fff1f2;
  border-color:#fecdd3;
}
/* .checkbox-col wird geteilt (Mehrfachauswahl bei Vorlagenbauteilen UND hier bei der
   Bauteiluebersicht) - einheitliche, zentrierte Darstellung nuetzt beiden Stellen gleichermassen. */
.checkbox-col{
  width:38px;
  text-align:center;
}
.checkbox-col input[type="checkbox"]{
  width:16px;
  height:16px;
  cursor:pointer;
}
.component-list-checkbox:checked,
.component-select-checkbox:checked{
  outline:2px solid var(--accent);
  outline-offset:2px;
}

/* BMC 021.15 – Pfad-A/B-Tausch in der Schichtaufteilung */
.stud-share-values{position:relative}
/* BMC 022.165 (Nutzerauftrag 29.07.2026, "Seitenwechsel symbol schöner gestalten"): Text-Zeichen
   "⇄" durch ein echtes SVG-Pfeil-Icon ersetzt (siehe app.js), Kreis-Button per Flexbox zentriert
   statt ueber Zeilenhoehe/Schriftgroesse, sanfter Hover/Active-Übergang statt reinem Farbwechsel. */
.stud-share-swap{align-self:center;justify-self:center;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:999px;border:2px solid var(--orange);background:#fff;color:#c1650f;cursor:pointer;box-shadow:0 3px 9px rgba(20,48,80,.16);z-index:2;transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease,color .15s ease}
.stud-share-swap svg{transition:transform .18s ease}
.stud-share-swap:hover{background:#fff4e8;color:#9a4b12;transform:scale(1.07);box-shadow:0 4px 12px rgba(20,48,80,.2)}
.stud-share-swap:hover svg{transform:rotate(180deg)}
.stud-share-swap:focus-visible{outline:2px solid rgba(242,140,40,.35);outline-offset:2px}
.stud-share-swap:active{transform:scale(.96)}
.stud-share-undo{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:10px;padding:8px 12px;border:1px solid #f1c48f;border-radius:9px;background:#fff8ee;color:#513416;font-size:13px}
.stud-share-undo[hidden]{display:none}
.stud-share-undo button{border:0;background:transparent;color:#0f4c81;text-decoration:underline;font-weight:700;cursor:pointer;padding:2px 4px}
.stud-share-values:not(.is-single){grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr)}
.stud-share-values.is-single .stud-share-swap{display:none}
/* BMC 022.165: die 90°-Drehung fuer die mobile Stapel-Ansicht sitzt jetzt auf dem SVG-Icon statt
   auf dem Button selbst - sonst wuerde der neue Hover-Effekt (transform:scale auf dem Button) die
   Drehung ueberschreiben, da beide dieselbe CSS-transform-Eigenschaft verwenden. */
@media(max-width:720px){.stud-share-values:not(.is-single){grid-template-columns:1fr}.stud-share-swap{margin:2px auto}.stud-share-swap svg{transform:rotate(90deg)}.stud-share-swap:hover svg{transform:rotate(270deg)}}


/* BMC 021.36 - Projekt-Bauteilkatalog nach verbindlicher Wordvorlage */
.catalog-print-actions{position:sticky;top:0;z-index:20;display:flex;justify-content:flex-end;gap:10px;padding:12px 20px;background:#eef3f9;border-bottom:1px solid #ccd5df}
.catalog-document{font-family:var(--catalog-font-family,Arial,Helvetica,sans-serif);color:#111;background:#dfe5ec;padding:20px 0}
/* BMC 022.53 (Nutzerrueckmeldung 24.07.2026): "PDF Ausdruck fehlen Linien und Farbe in den
   Zellen" - Hintergrundfarben (u. a. Tabellenkopf-Grau ueber --catalog-table-head-bg) werden
   von manchen Browsern beim Drucken/"Als PDF speichern" standardmaessig unterdrueckt, wenn
   print-color-adjust nicht explizit gesetzt ist. Betrifft nur diese Darstellungseigenschaft,
   keine Schraffur-/Rechenkernlogik. Falls nach diesem Fix weiterhin Linien/Farben fehlen, bitte
   zusaetzlich im Druckdialog "Hintergrundgrafiken" aktivieren (browserseitige Einstellung,
   nicht per CSS erzwingbar).*/
.catalog-document,.catalog-document *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;color-adjust:exact!important}
.catalog-page{box-sizing:border-box;width:210mm;min-height:297mm;margin:0 auto 14px;background:#fff;padding:18mm 18mm 16mm;position:relative;page-break-after:always;font-size:10pt;line-height:1.28}
.catalog-page:last-child{page-break-after:auto}.catalog-cover{padding-top:32mm}.catalog-brand{position:absolute;right:18mm;top:18mm;text-align:right;color:#17385f}.catalog-brand strong{display:block;font-size:22pt}.catalog-brand span{font-size:9pt}.catalog-cover-main{margin-top:38mm;max-width:142mm}.catalog-cover h1{font-size:14pt;margin:0 0 5mm}.catalog-cover h2{font-size:15pt;line-height:1.35;margin:0;color:#111}.catalog-status{margin:26mm 0 22mm;font-size:11pt}.catalog-cover-data{display:grid;grid-template-columns:43mm 1fr;column-gap:8mm;row-gap:9mm;margin:0}.catalog-cover-data dt{font-weight:700}.catalog-cover-data dd{margin:0;min-height:8mm}.catalog-running-head{display:grid;grid-template-columns:28mm 1fr 30mm;gap:5mm;align-items:start;margin-bottom:10mm;font-size:8pt}.catalog-running-head>span{font-weight:700}.catalog-running-head>strong{text-align:right;color:#17385f}.catalog-page h1{font-size:15pt;margin:0 0 8mm}.catalog-page h2{font-size:12pt;margin:9mm 0 4mm}.catalog-toc{padding-left:7mm}.catalog-toc>li{margin:2.2mm 0}.catalog-toc ol{margin-top:1.5mm}.catalog-table,.catalog-performance{width:100%;border-collapse:collapse}.catalog-table th,.catalog-table td,.catalog-performance th,.catalog-performance td{border:0.35mm solid #222;padding:2.2mm 2.5mm;vertical-align:middle}.catalog-table th,.catalog-performance th{background:#d9d9d9;font-weight:400}.catalog-table.documents th:nth-child(1){width:48%}.catalog-reference{display:grid;grid-template-columns:12mm 1fr;gap:3mm}.catalog-component-title{display:grid;grid-template-columns:1fr 22mm;background:#d9d9d9;border:0.35mm solid #222;font-size:13pt}.catalog-component-title>*{padding:3mm}.catalog-component-title span{border-left:0.35mm solid #222;text-align:center}.catalog-build-grid{display:grid;grid-template-columns:44% 56%;border-left:0.35mm solid #222;border-right:0.35mm solid #222}.catalog-build-grid>div{padding:2mm;border-bottom:0.35mm solid #222}.catalog-build-grid>div+div{border-left:0.35mm solid #222}.catalog-sketch{height:92mm;display:flex;align-items:center;justify-content:center;overflow:hidden}.catalog-sketch svg{width:100%;height:100%;max-width:100%;max-height:100%}.catalog-performance{margin-top:3mm;font-size:8.5pt}.catalog-performance:not(.catalog-performance-fixed-grid) th:nth-child(1){width:46%}.catalog-performance:not(.catalog-performance-fixed-grid) th:nth-child(3){width:27%}.catalog-performance:not(.catalog-performance-fixed-grid) th:nth-child(4){width:27%}.catalog-performance:not(.catalog-performance-fixed-grid) td:nth-child(1){width:19%}.catalog-performance:not(.catalog-performance-fixed-grid) td:nth-child(2){width:27%}.catalog-performance td:nth-child(n+3){text-align:center}.catalog-remarks{border:0.35mm solid #222;margin-top:3mm;min-height:28mm}.catalog-remarks>strong{display:block;background:#d9d9d9;border-bottom:0.35mm solid #222;padding:2mm}.catalog-remarks p{margin:0;padding:2.5mm;white-space:normal}.catalog-page small{font-size:7.5pt}
@media print{body.catalog-print-view{background:#fff!important}.catalog-print-view .app-footer,.catalog-print-view>.topbar,.catalog-print-view>.ticket-floating-button{display:none!important}.catalog-print-view main.container{max-width:none!important;margin:0!important;padding:0!important}.catalog-document{padding:0;background:#fff}.catalog-page{margin:0;box-shadow:none;width:210mm;height:297mm;min-height:297mm;overflow:hidden}@page{size:A4 portrait;margin:0}}

/* BMC 021.37 - Katalogvorschau und eingeklappter Allgemeines-Editor */
.catalog-general-editor{border:1px solid #d8dee7;border-radius:10px;background:var(--soft-bg);overflow:hidden}
.catalog-general-editor summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;cursor:pointer;list-style:none}
.catalog-general-editor summary::-webkit-details-marker{display:none}
.catalog-general-editor summary span:first-child{display:flex;flex-direction:column;gap:2px}
.catalog-general-editor summary small{color:#657184;font-weight:400}
.catalog-general-editor[open] summary{border-bottom:1px solid #d8dee7;background:#f2f5f9}
.catalog-general-editor-body{padding:16px}
.catalog-general-editor-body label{display:block}
.catalog-general-editor-body textarea{width:100%;min-height:260px;resize:vertical}
.catalog-general-editor-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.catalog-general-editor-actions small{color:#657184}
.catalog-print-actions{position:sticky;top:0;z-index:50;display:flex;justify-content:flex-end;gap:10px;padding:12px 18px;background:rgba(255,255,255,.96);border-bottom:1px solid #d8dee7;box-shadow:0 2px 8px rgba(15,23,42,.08)}
.catalog-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 10px}.catalog-editor-heading-actions{display:flex;gap:8px;flex-wrap:wrap}.catalog-reference-heading{margin-top:22px}.catalog-document-rows,.catalog-reference-rows{display:flex;flex-direction:column;gap:8px}.catalog-document-row{display:grid;grid-template-columns:minmax(200px,1fr) 150px 90px 130px 38px;gap:8px;align-items:center}.catalog-reference-row{display:grid;grid-template-columns:80px minmax(260px,1fr) 38px;gap:8px;align-items:stretch}.catalog-reference-row textarea{min-height:64px!important}.catalog-document-row input,.catalog-reference-row input,.catalog-reference-row textarea{width:100%}.catalog-reference-row>input{height:100%;box-sizing:border-box}.catalog-reference-row .richtext-field{height:100%}.catalog-reference-row .richtext-editable{flex:1 1 auto}.catalog-row-remove{min-width:34px;padding:7px 9px}.button.danger{background:#9f2d2d;border-color:#9f2d2d;color:#fff}
.catalog-document-col-actions{display:grid;grid-template-columns:minmax(200px,1fr) 150px 90px 130px 38px;gap:8px;align-items:center;margin-bottom:6px}
.catalog-document-col-actions button{width:100%;padding:5px 4px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* BMC 022.54 (Nutzerrueckmeldung 24.07.2026): Freitextfeld+schmales 44px-Dropdown (BMC 022.48)
   wirkte gedraengt/ueberlappend - "einmal Maßstab reicht, die Breite als Dropdown" - ersetzt
   durch ein einziges Dropdown auf voller Spaltenbreite (wie die uebrigen Zeilenfelder). */
.catalog-document-row .catalog-scale-select{width:100%}
/* BMC 022.54 (Nutzerauftrag 24.07.2026): "Speichern und Abbrechen nach oben sticky beim
   Scrollen unter die Menüleiste" - das lange Projektformular (Bauteilkatalog-Abschnitt mit
   Unterlagen/Nachweise/Begriffe) macht die Speichern/Abbrechen-Zeile am Formularende sonst nur
   nach vollstaendigem Herunterscrollen erreichbar. WICHTIG: position:sticky wurde bewusst NICHT
   verwendet - die Leiste ist das LETZTE Kind des <form>, wodurch der sticky-Aktivierungsbereich
   mathematisch leer waere (der Container endet exakt an der Leiste selbst, es gibt keinen
   "Auslauf" danach; per Playwright-Messung nachgewiesen: die Leiste blieb ueber den gesamten
   Scrollbereich strikt an ihrer statischen Position, nie am oberen Rand fixiert). Stattdessen
   echtes position:fixed, dauerhaft sichtbar direkt unter der ebenfalls fixierten .topbar
   (dieselben top-Werte 54px/66px). form.card:has(...) bekommt zusaetzlichen unteren Abstand,
   damit die fixierte Leiste am Formularende nicht den letzten Inhalt verdeckt. */
.catalog-editor-save-bar{position:fixed;left:0;right:0;top:54px;z-index:30;display:flex;justify-content:center;gap:10px;background:#fff;padding:12px 20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:0 2px 8px rgba(29,53,87,.06)}
@media(max-width:1050px){.catalog-editor-save-bar{top:66px}}
form.card:has(.catalog-editor-save-bar){padding-bottom:72px}
/* BMC 022.47: Begriffe-Zeilen (Kürzel/Bezeichnung/Erläuterung) im gleichen Muster wie die
   Unterlagen-/Referenzzeilen darüber. */
.catalog-term-rows{display:flex;flex-direction:column;gap:8px}
.catalog-term-row{display:grid;grid-template-columns:90px 200px minmax(240px,1fr) 38px;gap:8px;align-items:start}
.catalog-term-row textarea{min-height:56px!important}
.catalog-term-row input,.catalog-term-row textarea{width:100%}
@media(max-width:900px){.catalog-document-row{grid-template-columns:1fr 1fr}.catalog-document-row .catalog-row-remove{grid-column:2;justify-self:end}.catalog-document-col-actions{grid-template-columns:1fr 1fr 1fr;gap:6px}.catalog-document-col-actions span{display:none}.catalog-reference-row{grid-template-columns:70px 1fr}.catalog-reference-row .catalog-row-remove{grid-column:2;justify-self:end}.catalog-term-row{grid-template-columns:1fr;gap:6px}.catalog-term-row .catalog-row-remove{justify-self:end}}

/* BMC 021.40: Bauteilkatalogdaten am Bauteil eingeklappt bearbeiten */
.catalog-edit-details{border:1px solid #d8dee8;border-radius:12px;background:#fff;overflow:hidden;margin-top:8px}
.catalog-edit-details>summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;cursor:pointer;list-style:none;background:#f6f8fb}
.catalog-edit-details>summary::-webkit-details-marker{display:none}
.catalog-edit-details>summary span:first-child{display:flex;flex-direction:column;gap:3px}
.catalog-edit-details>summary small{color:#667085;font-weight:400}
.catalog-edit-details[open]>summary{border-bottom:1px solid #d8dee8}
.catalog-edit-details[open] .catalog-edit-button{visibility:hidden}
.catalog-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:18px}
.catalog-edit-grid .wide{grid-column:1/-1}
@media (max-width:850px){.catalog-edit-grid{grid-template-columns:1fr}}

/* BMC 021.41 – verbindlicher Seitenrahmen für Bauteilkatalog */
.catalog-document{counter-reset:catalog-page}
.catalog-page{counter-increment:catalog-page;box-shadow:0 10px 30px rgba(15,23,42,.18)}
.catalog-cover{padding:20mm 18mm 18mm}
.catalog-cover .catalog-brand{top:16mm;right:18mm;min-width:42mm}
.catalog-cover .catalog-brand strong{font-size:20pt;letter-spacing:-.02em}
.catalog-cover .catalog-brand span{display:block;margin-top:1mm;font-size:8.5pt;letter-spacing:.08em;text-transform:uppercase}
.catalog-cover-main{margin-top:48mm;max-width:154mm}
.catalog-cover h1{font-size:13.5pt;line-height:1.25;margin-bottom:3mm}
.catalog-cover h2{font-size:15.5pt;line-height:1.38;font-weight:700}
.catalog-cover .catalog-status{margin:21mm 0 19mm;font-size:10.5pt}
.catalog-cover-data{grid-template-columns:46mm 1fr;column-gap:7mm;row-gap:7.5mm;font-size:10pt}
.catalog-cover-data dt{font-weight:700}
.catalog-cover-data dd{line-height:1.35}
.catalog-running-head{grid-template-columns:27mm minmax(0,1fr) 31mm;gap:4mm;margin-bottom:11mm;line-height:1.28}
.catalog-running-head>span{font-size:8.5pt}
.catalog-running-head>div{font-size:8pt}
.catalog-running-head>strong{font-size:10pt;line-height:1.1}
.catalog-running-foot{position:absolute;left:18mm;right:18mm;bottom:8mm;display:grid;grid-template-columns:1fr auto;align-items:end;font-size:8pt;color:#111}
.catalog-running-foot span:first-child{font-size:10pt}
.catalog-page:not(.catalog-cover){padding-bottom:20mm}
.catalog-component-title{margin-top:1mm}
.catalog-page>h1{line-height:1.15}
@media print{
  .catalog-page{box-shadow:none}
  .catalog-running-foot{bottom:8mm}
}

/* BMC 021.43 - funktionsfaehiger Vorschau-Zoom */
body.catalog-print-view{overflow-x:auto;background:#cfd6df!important}
body.catalog-print-view>.topbar,
body.catalog-print-view>.app-footer,
body.catalog-print-view>.ticket-floating-button{display:none!important}
body.catalog-print-view main.container{max-width:none!important;min-width:100%;margin:0!important;padding:0!important}
.catalog-print-actions{left:0;right:0;min-width:100vw;align-items:center;justify-content:space-between}
.catalog-preview-info{display:flex;flex-direction:column;gap:2px;color:#243447}
.catalog-preview-info span{font-size:12px;color:#66758a}
.catalog-preview-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.catalog-preview-controls .active{box-shadow:inset 0 0 0 2px #17385f;font-weight:700}
.catalog-document{--catalog-preview-zoom:1;width:210mm;margin:0 auto;padding:18px 0 32px;zoom:var(--catalog-preview-zoom)}
.catalog-document .catalog-page{width:210mm;height:297mm;min-height:297mm;margin:0 auto 14mm;overflow:hidden;transform:none}
@supports not (zoom:1){
  .catalog-document{zoom:1;transform:scale(var(--catalog-preview-zoom));transform-origin:top center}
}
@media(max-width:900px){.catalog-print-actions{align-items:flex-start}.catalog-preview-info{display:none}.catalog-preview-controls{justify-content:flex-start}}
@media print{
  body.catalog-print-view{overflow:visible!important}
  .catalog-document{width:210mm!important;padding:0!important;zoom:1!important;transform:none!important;margin:0!important}
  .catalog-document .catalog-page{transform:none!important;margin:0!important}
  .catalog-document .catalog-page+ .catalog-page{margin-top:0!important}
}

/* BMC 021.44.1 - A4-Rahmen ohne grauen Vorschauhintergrund */
@media screen{
  body.catalog-print-view{background:#fff!important;overflow-x:auto}
  body.catalog-print-view main.container{max-width:none!important;width:100%!important;margin:0!important;padding:0!important}
  .catalog-print-actions{position:sticky!important;top:0!important;z-index:100!important}
  .catalog-document{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:28px 24px 60px!important;
    background:#fff!important;
    zoom:1!important;
    transform:none!important;
    box-sizing:border-box!important;
  }
  .catalog-document .catalog-page{
    display:block!important;
    box-sizing:border-box!important;
    width:210mm!important;
    height:297mm!important;
    min-height:297mm!important;
    max-height:297mm!important;
    margin:0 auto 18mm!important;
    background:#fff!important;
    border:1px solid #7f8791!important;
    box-shadow:0 8px 24px rgba(15,23,42,.24)!important;
    overflow:hidden!important;
    zoom:var(--catalog-preview-zoom,1)!important;
    transform:none!important;
  }
  .catalog-document .catalog-page:last-child{margin-bottom:0!important}
}
@media print{
  .catalog-document .catalog-page{
    zoom:1!important;
    border:0!important;
    box-shadow:none!important;
  }
}


/* BMC 021.45 - Titelblatt nach verbindlicher Wordvorlage */
.catalog-cover{
  padding:18mm 19mm 18mm 18mm!important;
  font-family:Arial,Helvetica,sans-serif;
}
.catalog-cover .catalog-brand{
  top:16mm!important;
  right:19mm!important;
  width:48mm;
  min-width:48mm!important;
  text-align:right;
  color:#111!important;
}
.catalog-cover .catalog-brand strong{
  display:block;
  font-size:18pt!important;
  line-height:1;
  font-weight:700;
  letter-spacing:-.03em!important;
}
.catalog-cover .catalog-brand span{
  display:block;
  margin-top:1.2mm!important;
  font-size:7.5pt!important;
  line-height:1.1;
  letter-spacing:.04em!important;
  text-transform:none!important;
}
.catalog-cover-main{
  margin-top:82mm!important;
  max-width:161mm!important;
}
.catalog-cover h1{
  margin:0 0 2.5mm!important;
  font-size:15pt!important;
  line-height:1.2!important;
  font-weight:700;
}
.catalog-cover h2{
  margin:0!important;
  max-width:157mm;
  font-size:15pt!important;
  line-height:1.34!important;
  font-weight:700!important;
  color:#111!important;
}
.catalog-cover .catalog-status{
  margin:17mm 0 12mm!important;
  font-size:10.5pt!important;
  line-height:1.2;
}
.catalog-cover .catalog-status strong{font-weight:700}
.catalog-cover-data{
  display:grid!important;
  grid-template-columns:47mm minmax(0,1fr)!important;
  column-gap:7mm!important;
  row-gap:6.2mm!important;
  margin:0!important;
  max-width:158mm;
  font-size:10pt!important;
  line-height:1.32;
}
.catalog-cover-data dt{
  margin:0!important;
  font-weight:700!important;
  align-self:start;
}
.catalog-cover-data dd{
  margin:0!important;
  min-height:0!important;
  line-height:1.32!important;
  white-space:normal;
}

/* BMC 021.46 - Layoutabgleich und mehrseitige Bauteile */
.catalog-page:not(.catalog-cover){padding:15mm 18mm 18mm!important;font-size:9pt;line-height:1.24}
.catalog-running-head{grid-template-columns:24mm minmax(0,1fr) 29mm!important;gap:4mm!important;margin-bottom:8mm!important;font-size:7.6pt!important;line-height:1.22!important}
.catalog-running-head>span{font-weight:700;font-size:8pt!important}
.catalog-running-head>strong{color:#111!important;font-size:9pt!important;text-align:right}
.catalog-page>h1{font-size:14pt!important;margin:0 0 6mm!important;font-weight:700}
.catalog-component-title{grid-template-columns:minmax(0,1fr) 20mm!important;font-size:11.5pt!important;border-width:.25mm!important;background:#d9d9d9!important}
.catalog-component-title>*{padding:2.3mm 2.6mm!important}
.catalog-component-title span{border-left-width:.25mm!important}
.catalog-component-title em{font-size:9pt;font-style:normal;font-weight:400}
.catalog-build-grid{grid-template-columns:42% 58%!important;border-left-width:.25mm!important;border-right-width:.25mm!important}
.catalog-build-grid>div{padding:1.8mm!important;border-bottom-width:.25mm!important}
.catalog-build-grid>div+div{border-left-width:.25mm!important}
.catalog-build-grid>div>small,.catalog-continuation-build>small{display:block;margin-bottom:1.5mm;font-size:7.5pt!important}
.catalog-sketch{height:84mm!important}
.catalog-continued-row td{text-align:center!important;font-style:italic;background:#f3f3f3;font-size:7.5pt!important}
.catalog-performance{margin-top:2.5mm!important;font-size:8pt!important;line-height:1.18}
.catalog-performance th,.catalog-performance td{border-width:.25mm!important;padding:1.65mm 2mm!important}
.catalog-performance th{background:#d9d9d9!important}
.catalog-performance:not(.catalog-performance-fixed-grid) th:nth-child(1){width:45%!important}.catalog-performance:not(.catalog-performance-fixed-grid) th:nth-child(3),.catalog-performance:not(.catalog-performance-fixed-grid) th:nth-child(4){width:27.5%!important}
.catalog-performance:not(.catalog-performance-fixed-grid) td:nth-child(1){width:18%!important}.catalog-performance:not(.catalog-performance-fixed-grid) td:nth-child(2){width:27%!important}
.catalog-remarks{margin-top:2.5mm!important;min-height:22mm!important;border-width:.25mm!important}
.catalog-remarks>strong{padding:1.6mm 2mm!important;border-bottom-width:.25mm!important;background:#d9d9d9!important}
.catalog-remarks p{padding:2mm!important;font-size:8pt;line-height:1.22}
.catalog-continuation-build{border:.25mm solid #222;border-top:0;padding:2mm 2mm 2.5mm}
.catalog-component-continuation .catalog-performance{margin-top:4mm!important}
.catalog-component-continuation .catalog-running-foot{display:grid!important}
.catalog-running-foot{left:18mm!important;right:18mm!important;bottom:7mm!important;font-size:7.5pt!important}
.catalog-running-foot span:first-child{font-size:9pt!important}
@media print{
  .catalog-page{break-after:page!important;page-break-after:always!important}
  .catalog-page:last-child{break-after:auto!important;page-break-after:auto!important}
  .catalog-component-title,.catalog-performance tr,.catalog-remarks{break-inside:avoid!important;page-break-inside:avoid!important}
}


/* BMC 021.48 - Seitenfolge und Frontmatter nach Wordvorlage */
.catalog-scope-page .catalog-scope-note{margin:118mm 0 0 0;font-size:10pt;line-height:1.35}
.catalog-toc-general-page .catalog-toc{margin-bottom:8mm}
.catalog-toc-general-page>h2{margin-top:7mm!important;font-size:12pt!important}
.catalog-toc-general-page>p{font-size:9pt;line-height:1.32;text-align:justify}
.catalog-documents-page>p{font-size:9pt;line-height:1.32}
.catalog-documents-page .catalog-table{margin-top:5mm}
.catalog-documents-page .catalog-reference{margin:4mm 0 0 0;line-height:1.3}
.catalog-terms-page .catalog-terms-table{margin-top:2mm}
.catalog-terms-page .catalog-terms-table td{padding:1.4mm 1.8mm;vertical-align:top;line-height:1.28}
.catalog-terms-page .catalog-terms-table td:first-child{width:25mm}
@media print{.catalog-scope-page .catalog-scope-note{margin-top:118mm}}


/* BMC 021.49 - Seitenumfang auf dem Titelblatt */
/* BMC 022.62 - Ursache: position:absolute;bottom:18mm koppelte diese Zeile komplett von der
   tatsaechlichen Hoehe der .catalog-cover-data-Liste ab. Bei laengeren, aber durchaus
   realistischen Feldinhalten (lange Firmennamen/Adressen) wuchs die Datenliste bis knapp an die
   fixe Position heran, wodurch "Der Bauteilkatalog umfasst X Seiten." optisch mit der letzten
   Datenzeile (Projektbearbeiterin) verschmolz - der gemeldete Fehler. Laut Wordvorlage
   (250612_..._LPX.docx, word/document.xml) ist dieser Satz ein normaler, im Textfluss stehender
   Absatz (SECTIONPAGES-Feld) direkt nach "Projektbearbeiterin" mit einer Leerzeile Abstand, danach
   ein manueller Seitenumbruch - keine fixe Position. Fix: normaler Dokumentfluss
   (position:static) statt position:absolute; margin-top statt fixem bottom-Abstand. Dadurch
   folgt die Zeile automatisch dem tatsaechlichen Ende von .catalog-cover-main, unabhaengig von
   dessen Hoehe. left/right/bottom-Overrides an anderen Stellen (z.B. Zeile ~6263) werden dadurch
   wirkungslos, da top/right/bottom/left bei position:static per Spezifikation ignoriert werden -
   empirisch mit Playwright bestaetigt (siehe Patch-Notiz). */
.catalog-cover-scope-note{
  position:static;
  margin:10mm 0 0 0;
  font-size:10pt;
  line-height:1.35;
}
@media print{
  .catalog-cover-scope-note{margin-top:10mm;}
}

/* BMC 022.69 - Deckblatt-Kennzeichnung "VORABZUG" fuer einen Arbeitsstand nach Aenderungen an
   einem bereits versendeten Stand (Versionierungslogik je Leistungsphase). Normaler Dokumentfluss
   wie .catalog-cover-scope-note, damit sie unabhaengig von der Laenge der Datenliste immer
   sichtbar direkt nach dem Deckblattinhalt erscheint. */
.catalog-vorabzug-marker{
  position:static;
  margin:6mm 0 0 0;
  font-size:13pt;
  font-weight:700;
  letter-spacing:.08em;
  color:#c1121f;
}


/* BMC 021.50 - Inhaltsverzeichnis wie Druckvorlage */
.catalog-toc-general-page .catalog-toc{list-style:none;margin:0 0 8mm 0;padding:0;font-size:9pt;line-height:1.28}
.catalog-toc-general-page .catalog-toc>li{display:grid;grid-template-columns:auto 1fr 9mm;align-items:end;column-gap:1.5mm;margin:0 0 1.35mm 0}
.catalog-toc-general-page .catalog-toc .catalog-toc-label{white-space:normal}
.catalog-toc-general-page .catalog-toc .catalog-toc-dots{min-width:8mm;border-bottom:.25mm dotted #555;transform:translateY(-.7mm)}
.catalog-toc-general-page .catalog-toc .catalog-toc-page{text-align:right;font-variant-numeric:tabular-nums}
.catalog-toc-general-page .catalog-toc>li.catalog-toc-group{margin-top:2.1mm;font-weight:700}
.catalog-toc-general-page .catalog-toc>li>ol{grid-column:1/-1;list-style:none;margin:1.1mm 0 0 8mm;padding:0;font-weight:400}
.catalog-toc-general-page .catalog-toc>li>ol>li{display:grid;grid-template-columns:auto 1fr 9mm;align-items:end;column-gap:1.5mm;margin:0 0 1.05mm 0}
.catalog-toc-general-page>h1{margin-bottom:7mm!important}
.catalog-toc-general-page>h2{padding-top:1.5mm;border-top:.25mm solid transparent}
@media print{
  .catalog-toc-general-page .catalog-toc .catalog-toc-dots{border-bottom-color:#555!important}
}

/* BMC 021.51 - Frontmatter im verbindlichen Word-Layout */
.catalog-toc-general-page,
.catalog-documents-page,
.catalog-terms-page{
  padding-top:14mm!important;
}
/* BMC 022.62 - Abstand Kopf->Ueberschrift nach Vorlage (Nutzerauftrag 24.07.2026). Laut
   word/document.xml der Wordvorlage (250612_..._LPX.docx) hat der Absatzstil "berschrift1"
   (Kapitelueberschriften) w:spacing w:before="720" Twips = 12,7mm - das ist der massgebliche
   Zielwert fuer den Abstand zwischen der laufenden Kopfzeile und der Kapitelueberschrift auf
   diesen Seiten. Per Playwright empirisch verifiziert, dass diese Regel (nicht die allgemeine
   ".catalog-running-head{margin-bottom:10mm!important}" bei BMC 021.80, die durch die hoehere
   Selektor-Spezifitaet hier ueberschrieben wird) den tatsaechlich gerenderten Abstand bestimmt -
   vorher 7mm, jetzt 12,7mm. */
.catalog-toc-general-page .catalog-running-head,
.catalog-documents-page .catalog-running-head,
.catalog-terms-page .catalog-running-head{
  margin-bottom:12.7mm!important;
}
.catalog-toc-general-page>h1,
.catalog-documents-page>h1,
.catalog-terms-page>h1{
  font-size:13pt!important;
  margin:0 0 5mm!important;
}
.catalog-toc-general-page .catalog-toc{
  font-size:8.55pt;
  line-height:1.2;
  margin-bottom:6.5mm;
}
.catalog-toc-general-page .catalog-toc>li{
  margin-bottom:1.05mm;
}
.catalog-toc-general-page .catalog-toc>li.catalog-toc-group{
  margin-top:1.55mm;
}
.catalog-toc-general-page .catalog-toc>li>ol{
  margin-top:.8mm;
}
.catalog-toc-general-page .catalog-toc>li>ol>li{
  margin-bottom:.8mm;
}
.catalog-toc-general-page>h2{
  margin:5.5mm 0 3mm!important;
  padding:0!important;
  font-size:11.5pt!important;
}
.catalog-toc-general-page>p{
  margin:0;
  font-size:8.65pt;
  line-height:1.28;
  text-align:justify;
  hyphens:auto;
}
.catalog-documents-page>p{
  margin:0 0 4.5mm;
  font-size:8.65pt;
  line-height:1.28;
  text-align:left;
}
.catalog-documents-page .catalog-table.documents{
  width:100%;
  margin:0 0 5mm;
  border-collapse:collapse;
  table-layout:fixed;
  font-size:8.3pt;
  line-height:1.22;
}
.catalog-documents-page .catalog-table.documents th,
.catalog-documents-page .catalog-table.documents td{
  border:0!important;
  background:transparent!important;
  padding:.8mm 1.5mm .8mm 0!important;
  vertical-align:top;
  text-align:left;
  font-weight:400;
}
.catalog-documents-page .catalog-table.documents th{
  padding-bottom:1.4mm!important;
}
.catalog-documents-page .catalog-table.documents th:nth-child(1),
.catalog-documents-page .catalog-table.documents td:nth-child(1){width:54%}
.catalog-documents-page .catalog-table.documents th:nth-child(2),
.catalog-documents-page .catalog-table.documents td:nth-child(2){width:16%}
.catalog-documents-page .catalog-table.documents th:nth-child(3),
.catalog-documents-page .catalog-table.documents td:nth-child(3){width:12%;text-align:center}
.catalog-documents-page .catalog-table.documents th:nth-child(4),
.catalog-documents-page .catalog-table.documents td:nth-child(4){width:18%;text-align:right;padding-right:0!important}
.catalog-documents-page .catalog-reference{
  display:grid;
  grid-template-columns:11mm minmax(0,1fr);
  gap:2.5mm;
  margin:3.2mm 0 0;
  font-size:8.45pt;
  line-height:1.28;
}
.catalog-documents-page .catalog-reference strong{
  font-weight:400;
}
.catalog-terms-page .catalog-terms-table{
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
  margin-top:0;
  font-size:8.45pt;
}
.catalog-terms-page .catalog-terms-table td{
  border:0!important;
  padding:1.15mm 2mm 1.15mm 0!important;
  vertical-align:top;
  line-height:1.25;
}
.catalog-terms-page .catalog-terms-table td:first-child{width:24mm}
.catalog-terms-page .catalog-terms-table td:nth-child(2){width:57mm}
.catalog-terms-page .catalog-terms-table td:last-child{padding-right:0!important}
.catalog-terms-page .catalog-terms-table strong{font-weight:400}
@media print{
  .catalog-toc-general-page>p{hyphens:auto}
}

/* BMC 021.52 - Bauteilseiten im verbindlichen Word-Raster */
.catalog-component-page{
  padding-top:14mm!important;
}
.catalog-component-page .catalog-running-head{
  margin-bottom:6.5mm!important;
}
.catalog-component-page>h1{
  font-size:12.5pt!important;
  margin:0 0 4.5mm!important;
}
.catalog-component-page .catalog-component-title{
  margin:0!important;
  min-height:10mm;
  align-items:center;
  font-size:10.8pt!important;
}
.catalog-component-page .catalog-component-title>*{
  padding:2mm 2.4mm!important;
}
.catalog-component-page .catalog-build-grid{
  grid-template-columns:47% 53%!important;
  border-width:.25mm!important;
}
.catalog-component-page .catalog-build-grid>div{
  padding:1.8mm 2mm!important;
  border-bottom-width:.25mm!important;
}
.catalog-component-page .catalog-build-grid>div+div{
  border-left-width:.25mm!important;
}
.catalog-component-page .catalog-build-grid>div>small,
.catalog-component-page .catalog-continuation-build>small{
  display:block;
  min-height:5.5mm;
  font-size:7.6pt!important;
  line-height:1.15;
}
.catalog-component-page .catalog-sketch{
  height:80mm!important;
  padding:1.5mm 0 0;
}
.catalog-component-page .catalog-performance{
  margin-top:3.2mm!important;
  table-layout:fixed;
  font-size:7.85pt!important;
  line-height:1.17;
}
.catalog-component-page .catalog-performance th,
.catalog-component-page .catalog-performance td{
  padding:1.55mm 1.8mm!important;
  vertical-align:middle!important;
}
.catalog-component-page .catalog-performance th{
  height:7.5mm;
}
.catalog-component-page .catalog-remarks{
  margin-top:2.8mm!important;
  min-height:24mm!important;
  font-size:8pt;
}
.catalog-component-page .catalog-remarks>strong{
  padding:1.6mm 2mm!important;
  font-weight:400;
}
.catalog-component-page .catalog-remarks p{
  padding:2mm!important;
  line-height:1.2;
}
.catalog-component-continuation .catalog-continuation-build{
  margin-top:0;
}
@media print{
  .catalog-component-page{
    padding-top:14mm!important;
  }
}

/* BMC 021.53 – Katalogskizzen ohne Legende, bauteilartgerecht ausgerichtet */
.catalog-component-page .catalog-sketch .component-svg-catalog{display:block;width:100%;height:100%}
.catalog-component-page .catalog-sketch-vertical .component-svg-catalog{max-width:100%;max-height:100%}
.catalog-component-page .catalog-sketch-horizontal .component-svg-catalog{max-width:100%;max-height:100%}


/* BMC 021.54 – Maßkette optional, Schichtliste ohne verschachtelte Tabelle */
.catalog-component-page .catalog-layer-list{
  width:100%;
  font-size:8.2pt;
  line-height:1.2;
}
.catalog-component-page .catalog-layer-row{
  display:grid;
  grid-template-columns:8mm 23mm minmax(0,1fr);
  align-items:stretch;
  border-bottom:.25mm solid #222;
}
.catalog-component-page .catalog-layer-row>div{
  padding:1.55mm 1.8mm;
  min-width:0;
}
.catalog-component-page .catalog-layer-row>div+div{border-left:.25mm solid #222}
.catalog-component-page .catalog-layer-row>div:first-child{text-align:center}
.catalog-component-page .catalog-layer-row>div:nth-child(2){text-align:right;white-space:nowrap}
.catalog-component-page .catalog-layer-row small{font-size:7pt;line-height:1.16}
/* BMC 022.208: Kennwerte der Schicht als zweite Zeile unter dem Baustoffnamen.
   Eigene Spalten waeren nicht unterzubringen - die Namensspalte misst nur 53,4 mm. */
.catalog-layer-values{ display:block; margin-top:.5mm; color:#333; }
.catalog-component-page .catalog-layer-values{ font-size:6.8pt; line-height:1.15; }

.catalog-component-page .catalog-layer-row.sum{font-weight:700;min-height:10mm}
.catalog-component-page .catalog-continued-row{padding:2mm;text-align:center;border-bottom:.25mm solid #222;font-style:italic}
.catalog-component-page .catalog-sketch svg{overflow:visible}


/* BMC 021.57 - groessere Skizzenflaeche ohne Verzerrung und Zoom ganze Seite */
.catalog-sketch{height:98mm}
.catalog-sketch svg{display:block;width:100%;height:100%;object-fit:contain}
.catalog-sketch-vertical svg,.catalog-sketch-horizontal svg{max-width:100%;max-height:100%}
.catalog-preview-controls [data-catalog-fit-page].active{box-shadow:inset 0 0 0 2px #17385f;font-weight:700}
@media print{
  .catalog-sketch{height:98mm}
}

/* BMC 021.58 - inhomogene Schichten a/b, Feuchteschutzfeld und feste Ausgaberichtung */
.catalog-layer-row-inhomogeneous>div:first-child{font-weight:700}
.catalog-layer-row-inhomogeneous+ .catalog-layer-row-inhomogeneous{border-top-style:dotted}

/* BMC 021.59 - A4-Satzspiegel, dezente Inhomogen-Trennung und echte Ganzseiten-Vorschau */
.catalog-component-page{
  padding:18mm 19mm 18mm 19mm!important;
}
/* BMC 022.62 - Abstand Kopf->Ueberschrift, siehe ausfuehrliche Begruendung bei der analogen
   Regel fuer .catalog-toc-general-page/.catalog-documents-page/.catalog-terms-page weiter oben. */
.catalog-component-page .catalog-running-head{
  margin-bottom:12.7mm!important;
}
.catalog-component-page .catalog-layer-row-inhomogeneous-a{
  border-bottom:0!important;
}
.catalog-component-page .catalog-layer-row-inhomogeneous-b{
  border-top:.15mm dotted #a7adb5!important;
}
.catalog-component-page .catalog-layer-row-inhomogeneous-b>div{
  padding-top:1.35mm!important;
}
.catalog-component-page .catalog-layer-row-inhomogeneous-a>div{
  padding-bottom:1.35mm!important;
}
.catalog-preview-controls [data-catalog-fit-page]{
  min-width:94px;
}
@media screen{
  .catalog-document{
    padding-top:20px!important;
  }
}
@media print{
  .catalog-component-page{
    padding:18mm 19mm 18mm 19mm!important;
  }
}


/* BMC 021.60 - geschlossene Schichttabelle und getrennte Skizzenbeschriftung */
.catalog-component-page .catalog-layer-list{
  box-sizing:border-box;
  border:.25mm solid #222;
  background:#fff;
}
.catalog-component-page .catalog-layer-row:last-child,
.catalog-component-page .catalog-continued-row:last-child{
  border-bottom:0;
}
.catalog-component-page .catalog-layer-row-inhomogeneous-b{
  border-top:.10mm dotted #c3c7cc!important;
}
.catalog-component-page .catalog-layer-row-inhomogeneous-a>div,
.catalog-component-page .catalog-layer-row-inhomogeneous-b>div{
  border-color:#222;
}

/* BMC 021.61 - Schichtaufbau wie Vorlage, ohne Tabelle-in-Tabelle */
.catalog-component-page .catalog-build-grid > .catalog-build-layers{
  padding:0!important;
  display:flex;
  flex-direction:column;
  min-width:0;
}
.catalog-component-page .catalog-build-layers > small{
  display:block;
  padding:2mm 2.2mm 1.8mm;
}
.catalog-component-page .catalog-build-layers .catalog-layer-list{
  border:0!important;
  border-top:.25mm solid #222!important;
  margin:0!important;
  width:100%;
  flex:1 1 auto;
}
.catalog-component-page .catalog-layer-spacer{
  min-height:9mm;
  border-bottom:.25mm solid #222;
}
.catalog-component-page .catalog-layer-row.sum{
  min-height:10mm;
  border-top:0!important;
  border-bottom:0!important;
}
.catalog-component-page .catalog-layer-row.sum > div{
  display:flex;
  align-items:center;
}
.catalog-component-page .catalog-layer-row.sum > div:first-child{justify-content:center}
.catalog-component-page .catalog-layer-row.sum > div:nth-child(2){justify-content:flex-end}
.catalog-component-page .catalog-layer-row-inhomogeneous-b{
  border-top:.08mm dotted #c8ccd1!important;
}
.catalog-component-page .catalog-sketch{height:104mm!important}

/* BMC 022.208 - Spaltenvariante der Kennwerte (&kwsp=1): die Skizze tritt zurueck,
   dafuer bekommen Lambda, Rohdichte und Masse eigene Spalten mit Kopfzeile. */
.catalog-component-page.kw-spalten-seite .catalog-build-grid{
  grid-template-columns:33% 67%!important;
}
.catalog-component-page .kw-spalten .catalog-layer-row{
  grid-template-columns:7mm 17mm minmax(0,1fr) 14mm 15mm 14mm;
}
.catalog-component-page .kw-spalten .catalog-layer-row>div:nth-child(n+4){
  justify-content:flex-end!important;
  text-align:right;
  white-space:nowrap;
}
.catalog-component-page .kw-spalten .catalog-layer-row>div:nth-child(3){
  flex-direction:row!important;
  align-items:center!important;
}
.catalog-component-page .kw-spalten .catalog-layer-head{
  background:#e9edf2;
  font-weight:700;
}
.catalog-component-page .kw-spalten .catalog-layer-head>div{
  justify-content:center!important;
  text-align:center;
  padding-top:1mm;
  padding-bottom:1mm;
}
.catalog-component-page .kw-spalten .catalog-layer-row{ font-size:7.6pt; }
.catalog-component-page .kw-spalten .catalog-layer-row>div{ padding:1.3mm 1.4mm; }

/* BMC 021.62 - Katalogreihenfolge und Versandstand */
#catalog-sort-body tr[draggable="true"]{cursor:grab}
#catalog-sort-body tr[draggable="true"]:active{cursor:grabbing}
#catalog-sort-body tr[draggable="true"] td:first-child strong{display:inline-block;min-width:12mm}
.catalog-component-page .catalog-build-layers .catalog-layer-list{display:flex;flex-direction:column;min-height:92mm}
.catalog-component-page .catalog-layer-spacer{flex:1 1 auto;min-height:9mm}


/* BMC 021.63 - sichtbare Drag-Flaeche und stabiler Pruefhinweis-Button */
#catalog-sort-body .catalog-sort-cell{
  display:flex;
  align-items:center;
  gap:10px;
  white-space:nowrap;
}
#catalog-sort-body .catalog-drag-handle{
  width:28px;
  height:34px;
  flex:0 0 28px;
  display:grid;
  grid-template-columns:repeat(2,4px);
  grid-template-rows:repeat(3,4px);
  place-content:center;
  gap:4px;
  border:1px solid #bdc9d8;
  border-radius:7px;
  background:#fff;
  cursor:grab;
  user-select:none;
  touch-action:none;
}
#catalog-sort-body tr[draggable="true"] .catalog-drag-handle:hover{
  background:#eef3f8;
  border-color:#8ea1b7;
}
#catalog-sort-body tr[draggable="true"] .catalog-drag-handle:active{cursor:grabbing}
#catalog-sort-body tr[draggable="false"] .catalog-drag-handle{opacity:.35;cursor:not-allowed}
#catalog-sort-body .catalog-drag-handle i{
  display:block;
  width:4px;
  height:4px;
  border-radius:50%;
  background:#657383;
}
.ticket-floating-button{
  position:fixed;
  right:22px;
  bottom:22px;
  z-index:1200;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  padding:10px 16px;
  border:1px solid #fdba74;
  border-radius:999px;
  background:#fff7ed;
  color:#9a3412!important;
  font-size:14px;
  font-weight:700;
  line-height:1;
  text-decoration:none;
  box-shadow:0 8px 24px rgba(29,53,87,.18);
}
.ticket-floating-button:hover{background:#ffedd5;text-decoration:none}
@media(max-width:800px){
  .ticket-floating-button{right:12px;bottom:12px}
}
@media print{
  .ticket-floating-button{display:none!important}
}

/* BMC 021.64 - senkrechte Katalogskizze, dezenter Draggriff, Versandabfrage */
.catalog-component-page .catalog-sketch{height:112mm!important}
.catalog-component-page .catalog-sketch-vertical .component-svg-catalog{
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center center;
}
#catalog-sort-body .catalog-drag-handle{
  opacity:.34;
  transform:scale(.82);
  margin-right:1mm;
  transition:opacity .15s ease,transform .15s ease;
}
#catalog-sort-body tr[draggable="true"]:hover .catalog-drag-handle{
  opacity:.72;
  transform:scale(.88);
}
@media print{
  .catalog-component-page .catalog-sketch{height:112mm!important}
}

/* BMC 021.65 - Projektbauteile und Admin-Ideen/Todo */
.project-component-badge{font-size:11px;vertical-align:middle;background:#e8f1fb;color:#1d4f7a;border:1px solid #b8d2ea}
.admin-idea-floating-button{position:fixed;right:22px;bottom:76px;z-index:1210;display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:10px 16px;border:1px solid #93c5fd;border-radius:999px;background:#eff6ff;color:#1d4ed8!important;font-size:14px;font-weight:700;line-height:1;text-decoration:none;box-shadow:0 8px 24px rgba(29,53,87,.18)}
.admin-idea-floating-button:hover{background:#dbeafe;text-decoration:none}
@media(max-width:800px){.admin-idea-floating-button{right:12px;bottom:66px}}
@media print{.admin-idea-floating-button{display:none!important}}

/* BMC 021.66 - Pruefstatus und floatendes Ideen/Todo-Fenster */
.admin-idea-floating-button{border:1px solid #93c5fd;cursor:pointer;font-family:inherit}
.admin-idea-modal[hidden]{display:none!important}
.admin-idea-modal{position:fixed;inset:0;z-index:5000;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(15,23,42,.36)}
.admin-idea-dialog{width:min(620px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;border:1px solid #cbd5e1;border-radius:14px;background:#fff;box-shadow:0 24px 70px rgba(15,23,42,.28)}
.admin-idea-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid #e2e8f0}
.admin-idea-dialog-head h2{margin:0;font-size:20px}
.admin-idea-close{width:34px;height:34px;padding:0;border:0;border-radius:50%;background:var(--soft-bg-2);color:#334155;font-size:24px;line-height:1;cursor:pointer}
.admin-idea-quick-form{display:grid;gap:14px;padding:18px}
.admin-idea-quick-form label{display:grid;gap:6px;font-weight:600}
.admin-idea-quick-grid{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:12px}
.admin-idea-dialog-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:2px}
body.admin-idea-modal-open{overflow:hidden}
.component-origin-badge{margin-left:8px;vertical-align:middle}
.component-origin-badge.verified{background:#fff7ed;color:#9a3412;border-color:#fdba74}
.component-origin-badge.reference{background:#eff6ff;color:#1d4ed8;border-color:#93c5fd}
.verified-component-warning{margin-bottom:14px}
@media(max-width:700px){.admin-idea-modal{padding:12px}.admin-idea-quick-grid{grid-template-columns:1fr}.admin-idea-dialog{max-height:calc(100vh - 24px)}}
@media print{.admin-idea-modal,.admin-idea-floating-button{display:none!important}}

/* BMC 021.68 - schmale fixe Navigation und Vorlagenbauteile */
body{padding-top:54px}
.topbar{position:fixed;top:0;left:0;right:0;z-index:4000;min-height:54px;padding:7px 18px;gap:18px;box-shadow:0 2px 10px rgba(29,53,87,.08)}
.topbar .brand{font-size:17px;white-space:nowrap}
.topbar nav{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:nowrap;min-width:0}
.topbar nav>a{margin-left:0;white-space:nowrap;font-size:14px}
.topbar .nav-settings{margin:0;white-space:nowrap}
.topbar .view-as-form{margin-left:0}
.topbar .view-as-form label{font-size:11px}
.topbar .view-as-form select{padding-top:4px;padding-bottom:4px;max-width:170px}
.container{margin-top:22px}
.catalog-template-page .catalog-template-body{display:grid;gap:5mm}
.catalog-template-image{display:flex;justify-content:center;align-items:center;min-height:62mm;border:1px solid #222}
.catalog-template-image img{display:block;max-width:100%;max-height:58mm;object-fit:contain}
@media(max-width:1050px){body{padding-top:66px}.topbar{min-height:66px}.topbar nav{overflow-x:auto;justify-content:flex-start}.topbar .brand{font-size:16px}}
@media print{body{padding-top:0}.topbar{display:none!important}}

/* BMC 022.84 (Nutzerauftrag 25.07.2026: "erstelle wieder eine gelbe Leiste in der Seite, wo ich
   sehe welcher Stand wir gerade online haben"): bewusst NICHT position:fixed - .topbar ist bereits
   fixiert und body/.topbar/.catalog-editor-save-bar sind ueber synchronisierte top-Werte
   (54px/66px) miteinander verzahnt (siehe BMC 021.68/022.54 weiter oben). Als ganz normales,
   erstes Flusselement in <body> gerendert, landet die Leiste dank des bereits vorhandenen
   body{padding-top:54px/66px} automatisch direkt unter der fixierten Kopfzeile, ohne dass an den
   bestehenden, mehrfach verzahnten fixierten Positionswerten irgendetwas geaendert werden muss.
   Sie scrollt mit dem Seiteninhalt mit - fuer den kurzen Blick "welcher Stand ist gerade online"
   direkt nach dem Laden voellig ausreichend, ohne das bestehende fixierte Layout anzufassen. */
.bmc-stand-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:6px 16px;background:#ffe066;color:#4a3b00;font-size:12.5px;font-weight:600;text-align:center;border-bottom:2px solid #e6c200}
.bmc-stand-bar-date{font-weight:400;opacity:.85}

/* BMC 021.69 - Vorlagenbauteile als Layoutformular + Todo-Kopierfunktion */
.catalog-switch{display:inline-flex;align-items:center;gap:.55rem;cursor:pointer}.catalog-switch input{position:absolute;opacity:0;pointer-events:none}.catalog-switch span{width:2.25rem;height:1.2rem;border-radius:999px;background:#cbd5e1;position:relative;transition:.18s}.catalog-switch span:after{content:"";position:absolute;top:2px;left:2px;width:.95rem;height:.95rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.18s}.catalog-switch input:checked+span{background:#16a34a}.catalog-switch input:checked+span:after{transform:translateX(1.05rem)}.catalog-switch b{font-size:.82rem;font-weight:600}.template-toggle-form{margin:0}.catalog-template-editor{max-width:920px;margin-inline:auto}.template-editor-title{margin-bottom:0}.template-input-table input,.template-remarks textarea,.template-layout-fields input{width:100%;border:0;background:#fff4f4;color:#b91c1c;padding:.35rem .45rem;box-sizing:border-box;font:inherit}.template-input-table input:focus,.template-remarks textarea:focus,.template-layout-fields input:focus{outline:2px solid #ef4444;outline-offset:-2px}.template-layout-grid{display:grid;grid-template-columns:42% 58%;border:1px solid #111;border-top:0;min-height:260px}.template-layout-image,.template-layout-fields{padding:.65rem}.template-layout-image{border-right:1px solid #111}.template-layout-image img{display:block;max-width:100%;max-height:220px;margin:1rem auto;object-fit:contain}.template-image-placeholder{display:grid;place-items:center;min-height:190px;border:1px dashed #94a3b8;color:var(--muted-2);text-align:center}.template-layout-fields{display:grid;align-content:start;gap:.8rem}.template-remarks{margin-top:.75rem}.template-remarks textarea{display:block;margin-top:.4rem;border:1px solid #111;min-height:100px}.admin-idea-copy-source{appearance:none;border:0;background:transparent;padding:0;text-align:left;color:inherit;font:inherit;cursor:copy;width:100%}.admin-idea-copy-source:hover strong{text-decoration:underline}.copy-toast{position:fixed;right:1.25rem;bottom:1.25rem;z-index:3000;background:var(--headline);color:#fff;padding:.7rem 1rem;border-radius:.55rem;box-shadow:0 8px 24px rgba(15,23,42,.28)}

/* BMC 021.70 */
.catalog-switch-button{border:0;background:transparent;display:inline-flex;align-items:center;gap:.55rem;padding:.15rem;cursor:pointer;color:#0f2747}
.catalog-switch-track{width:2.35rem;height:1.25rem;border-radius:999px;background:#cbd5e1;display:inline-flex;align-items:center;padding:.14rem;transition:.18s}
.catalog-switch-track i{width:.97rem;height:.97rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:.18s}
.catalog-switch-button.is-on .catalog-switch-track{background:#16a34a}.catalog-switch-button.is-on .catalog-switch-track i{transform:translateX(1.08rem)}
.template-duplicate-form{display:inline-flex;margin-left:.35rem}.catalog-switch-button:hover .catalog-switch-track{outline:2px solid #93c5fd}
.layer-toggle-lca.is-warning{background:#b91c1c!important;color:#fff!important;border-color:#991b1b!important;position:relative;padding-right:1.35rem}
.catalog-template-image img,.template-layout-image img{max-width:100%;max-height:240px;object-fit:contain}
/* BMC 021.71 */
.template-layout-image img{max-height:290px}
.template-image-actions{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-top:.65rem}
.template-layer-editor{display:grid;gap:.5rem}.template-layer-editor-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.template-layer-row{display:grid;grid-template-columns:90px 1fr auto;gap:.4rem;align-items:center}.template-layer-row input{min-width:0}
.catalog-template-layers{border:1px solid #222;border-top:0}.catalog-template-layers>div{display:grid;grid-template-columns:9mm 24mm 1fr;min-height:8mm;border-top:1px solid #222;align-items:center}.catalog-template-layers span,.catalog-template-layers strong,.catalog-template-layers p{padding:1.2mm 1.5mm;margin:0}.catalog-template-layers span,.catalog-template-layers strong{border-right:1px solid #222}.catalog-template-page .catalog-template-image img{max-height:72mm}
.layer-toggle-lca.is-warning{background:#b91c1c!important;color:#fff!important;padding-right:.55rem!important}
/* BMC 021.71 */
.template-layout-image img{max-height:290px}.template-image-actions{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-top:.65rem}.template-layer-editor{display:grid;gap:.5rem}.template-layer-editor-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.template-layer-row{display:grid;grid-template-columns:90px 1fr auto;gap:.4rem;align-items:center}.template-layer-row input{min-width:0}.catalog-template-layers{border:1px solid #222;border-top:0}.catalog-template-layers>div{display:grid;grid-template-columns:9mm 24mm 1fr;min-height:8mm;border-top:1px solid #222;align-items:center}.catalog-template-layers span,.catalog-template-layers strong,.catalog-template-layers p{padding:1.2mm 1.5mm;margin:0}.catalog-template-layers span,.catalog-template-layers strong{border-right:1px solid #222}.catalog-template-page .catalog-template-image img{max-height:72mm}.layer-toggle-lca.is-warning{background:#b91c1c!important;color:#fff!important;padding-right:.55rem!important}

/* BMC 021.72 */
.template-layout-image{min-height:360px;display:flex;flex-direction:column}.template-layout-image img{width:100%;max-width:420px;max-height:340px;flex:1;object-fit:contain;margin:12px auto}.template-layer-editor{margin-top:.4rem}.template-toggle-form,.template-duplicate-form{position:relative;z-index:1}.catalog-switch-button{min-width:78px;justify-content:flex-start}

/* BMC 021.74 */
.catalog-template-variant td:nth-child(2){padding-left:2rem;}
.template-variant-mark{display:inline-block;margin-right:.4rem;color:var(--muted-2);font-size:.78rem;font-weight:700;}
.template-layer-row{grid-template-columns:2rem minmax(7rem,.42fr) minmax(14rem,1.58fr) auto!important;align-items:center;}
.template-layer-number{display:inline-flex;align-items:center;justify-content:center;width:1.55rem;height:1.55rem;border:1px solid #94a3b8;border-radius:50%;font-weight:700;font-size:.8rem;background:#fff;color:#0f2747;}
.catalog-template-layers>div{grid-template-columns:2.1rem 6rem 1fr;}
/* BMC 022.103 (Nutzerauftrag 26.07.2026, Bauabschnitt 2+3 "Bauteilkarten"): Sonderbauteil-Zeilen
   (Pos./Material/Dicke/Funktion) - gleiches Grid-Muster wie .template-layer-row{display:grid;grid-template-columns:2rem 1fr 1fr 1fr auto;gap:.4rem;align-items:center;margin-bottom:.4rem;}
/* Admin-/Projekt-Kennwertzeilen-Editor (Konfigurationswerkzeug{display:grid;grid-template-columns:4.5rem 1fr 1fr auto;gap:.4rem;align-items:center;margin-bottom:.4rem;}

/* BMC 021.75 - Fensterwahl und nummerierte Bemerkungen */
.window-type-selector{margin:0 0 18px;padding:14px;border:1px solid #cbd7e6;border-radius:10px;background:#fff}
.window-type-options{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:12px;margin-top:10px}
.window-type-option{display:flex;flex-direction:column;align-items:center;gap:7px;padding:10px;border:1px solid #c8d4e3;border-radius:9px;cursor:pointer;background:var(--soft-bg)}
.window-type-option:has(input:checked){border-color:#1d5ea8;box-shadow:0 0 0 2px rgba(29,94,168,.14);background:#eef5ff}
.window-type-option input{position:absolute;opacity:0;pointer-events:none}
.window-type-option img{width:96px;height:68px;object-fit:contain}
.window-type-option span{font-weight:600;text-align:center}
.template-remarks-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.template-remark-row{display:grid;grid-template-columns:42px 1fr auto;gap:8px;align-items:center;margin:6px 0}
.template-remark-row>span{text-align:center;font-weight:700}
.template-remark-row input{width:100%}
.component-print-remarks{margin-top:16px}
.catalog-window-type{display:flex;align-items:center;gap:14px;margin:8px 0 14px;padding:8px 12px;border:1px solid #111}
.catalog-window-type img{width:95px;height:65px;object-fit:contain}
.catalog-window-type span{font-weight:700}
.catalog-remarks p{margin:3px 0}
.catalog-remarks p span{display:inline-block;min-width:28px}
@media(max-width:900px){.window-type-options{grid-template-columns:repeat(2,minmax(120px,1fr))}}

/* BMC 021.76 */
.catalog-template-variant{background:#fafcff;}
.catalog-template-variant td:nth-child(2){padding-left:2.4rem;}
.template-variant-title{display:block;margin:0 0 1rem;}
.template-variant-title input{width:100%;}
.catalog-remarks p{display:flex;gap:.45rem;margin:.18rem 0;}
.catalog-remarks p span{min-width:1.8rem;}

/* BMC 021.77 – Benutzer-Einladung */
.user-invite-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.user-invite-form label{min-width:320px;flex:1}.invitation-link-box{display:flex;align-items:end;gap:10px;margin-top:14px;padding:12px;border:1px solid #cbd5e1;border-radius:10px;background:var(--soft-bg)}.invitation-link-box label{flex:1}.invitation-link-box input{width:100%}

/* BMC 021.78 - zentrale Admin-Einstellungen und Branding */
.topbar .brand{display:flex;align-items:center;gap:8px}.topbar .brand img{display:block;max-width:112px;max-height:34px;object-fit:contain}.logo-placeholder{display:inline-flex;align-items:center;gap:12px}.logo-placeholder img{display:block;max-width:180px;max-height:72px;object-fit:contain}.admin-settings-form{display:grid;gap:0}.admin-settings-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.admin-settings-section-head h2{margin:0 0 5px}.admin-settings-section-head p{margin:0;color:#657383}.branding-upload-card{display:grid;align-content:start;gap:10px;padding:15px;border:1px solid var(--line);border-radius:12px;background:var(--soft-bg)}.branding-upload-card>strong{color:var(--ink)}.branding-preview{display:grid;place-items:center;min-height:120px;padding:12px;border:1px dashed #aebdce;border-radius:9px;background:#fff;color:#657383}.branding-preview img{display:block;max-width:100%;max-height:96px;object-fit:contain}.branding-upload-card label{font-weight:600}.branding-upload-card input[type=file]{width:100%;margin-top:6px}.admin-settings-actions{display:flex;justify-content:flex-end;margin:0 0 20px}.settings-status{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.settings-status.is-ok{background:#e8f7ee;color:#176b35}.settings-status.is-error{background:#fde9e9;color:#8f2020}.admin-mail-test-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.admin-mail-test-form label{flex:1 1 320px;font-weight:600}.admin-mail-test-form input{display:block;width:100%;margin-top:6px;padding:10px;border:1px solid #bdc9d8;border-radius:7px}.catalog-brand img{display:block;max-width:62mm;max-height:24mm;object-fit:contain;margin-bottom:5mm}@media(max-width:700px){.admin-settings-section-head{flex-direction:column}.branding-upload-card{grid-column:1/-1}.admin-mail-test-form{align-items:stretch}.admin-mail-test-form button{width:100%}}

/* BMC 022.43 (Nutzerauftrag 24.07.2026): "Bauteilkatalog-Farben" im Admincenter besser
   beschreiben und darstellen - kompakte Farbfelder (statt der auf volle Breite gezogenen
   input[type=color], die wie ein leerer Balken wirkten) plus HEX-Textfeld und eine echte
   Live-Vorschau mit Beispieltext, damit die Wirkung ohne Umweg ueber die Druckvorschau sofort
   sichtbar ist. */
.catalog-color-field{margin-top:6px}
.catalog-color-sample{margin-top:8px;padding:7px 12px;border:.35mm solid #222;border-radius:4px;font-size:12.5px;color:#111;background:#d9d9d9;transition:background-color .1s ease}
.catalog-color-sample-title{font-size:13pt;font-weight:600}
.catalog-color-sample-table{font-size:8.5pt}
/* BMC 022.44: Ueberschriften-Vorschau auf weissem statt grauem Grund - Kapitelueberschriften
   stehen im echten Katalog auf der weissen Seite, keine Farbflaeche dahinter. */
.catalog-heading-preview{background:#fff;color:#111;transition:font-size .1s ease,font-weight .1s ease}
.catalog-heading-bold-label{display:flex;align-items:center;gap:8px;margin-top:28px;font-weight:600}
.catalog-heading-bold-label input{width:auto!important;margin-top:0!important}
.color-row .button.tiny{white-space:nowrap}

/* BMC 021.79 - Admincenter mit seitlichen Tabs */
.admin-center-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:22px;align-items:start}
.admin-center-tabs{position:sticky;top:76px;display:grid;gap:7px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 4px 18px rgba(29,53,87,.05)}
.admin-center-tabs-title{padding:4px 8px 8px;color:#657383;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.admin-center-tabs a{display:grid;gap:2px;padding:10px 12px;border:1px solid transparent;border-radius:8px;color:#243447;text-decoration:none}
.admin-center-tabs a:hover{background:var(--bg);border-color:var(--line)}
.admin-center-tabs a.active{background:#eef5ff;border-color:#9fc3e8;color:#123b63;box-shadow:inset 3px 0 0 var(--ink)}
.admin-center-tabs strong{font-size:14px}
.admin-center-tabs span{color:#657383;font-size:12px;line-height:1.25}
.admin-center-content{min-width:0}
@media(max-width:980px){.admin-center-layout{grid-template-columns:1fr}.admin-center-tabs{position:static;grid-auto-flow:column;grid-auto-columns:minmax(160px,1fr);overflow-x:auto}.admin-center-tabs-title{display:none}.admin-center-tabs a.active{box-shadow:inset 0 -3px 0 var(--ink)}}
@media(max-width:620px){.admin-center-tabs{grid-auto-columns:minmax(140px,72vw)}.admin-center-tabs span{display:none}}

/* BMC 021.88 - Admincenter Schraffurzuordnung */
.hatch-admin-summary{margin-bottom:16px}
.hatch-admin-intro p{margin-top:0;color:#657383}
.hatch-preset-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}
.hatch-preset-card{display:grid;grid-template-columns:1fr;gap:10px;align-items:start;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--soft-bg)}
.hatch-preset-card strong,.hatch-preset-card small,.hatch-preset-card code{display:block}
.hatch-preset-card small{color:#657383;margin:2px 0 4px}
.hatch-preset-card code{font-size:.76rem;color:#475569;white-space:normal}
.hatch-preset-swatch{display:block}
.hatch-preset-swatch svg,.hatch-preset-swatch .material-swatch-html{width:100%;max-width:170px;height:auto}
/* BMC 022.148: die Karte ist jetzt ein Wrapper-Div (.hatch-preset-card, siehe oben), dieser Button
   ist nur noch der innere Klickbereich fuer "Kopie anpassen" - braucht deshalb eigene Resets gegen
   die globale button{background:var(--ink);color:#fff;...}-Vorgabe (sonst dunkler Kasten). */
.hatch-preset-button{width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;background:transparent;border:1px solid transparent;border-radius:8px;padding:6px}
.hatch-preset-button:hover,.hatch-preset-button:focus-visible{border-color:#7ab0e4;background:#eef6ff;box-shadow:0 0 0 3px rgba(36,104,171,.12);outline:0}
.hatch-preset-button em{display:inline-flex;margin-top:6px;color:#175d99;font-size:.76rem;font-style:normal;font-weight:800}
/* BMC 022.148 (Nutzerauftrag 28.07.2026, "Standardschraffuren anpassen koennen auch ohne Kopie"):
   die Karte ist jetzt ein Wrapper-Div (statt selbst der Button), damit ein zusaetzlicher
   "Gruppe bearbeiten"-Link neben dem bestehenden "Kopie anpassen"-Klickbereich Platz hat. */
.hatch-preset-edit-link{display:inline-flex;margin-top:2px;font-size:.76rem;font-weight:700;color:#92400e}
.hatch-preset-edit-link:hover{text-decoration:underline}
.hatch-group-form-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.hatch-group-form-hint{color:#657383;font-size:.85rem}
.hatch-group-form-actions .button.danger{background:#fff1f2;color:#b42318;border-color:#fecdd3}
.hatch-group-form-actions .button.danger:hover{background:#ffe4e6}
/* BMC 022.150 (Nutzerrueckmeldung "die zuordnung will ich nicht tippen sondern anhaken koennen"):
   Kategorien-Checkboxen statt reinem Freitext fuer die haeufigsten Alias-Begriffe. */
.hatch-alias-categories-field{margin-top:4px}
.hatch-alias-categories-label{display:block;font-weight:600;margin-bottom:6px}
.hatch-alias-categories-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:4px 12px;max-height:190px;overflow:auto;padding:10px;border:1px solid #d8e2ee;border-radius:10px;background:var(--soft-bg)}
.hatch-alias-checkbox{display:flex;align-items:center;gap:6px;font-weight:400;font-size:.88rem}
.hatch-alias-checkbox input{width:auto!important;margin:0!important}
.hatch-create-form{align-items:end}
.hatch-color-input-row{display:flex;align-items:center;gap:10px;margin-top:5px}
.hatch-color-box{display:inline-flex;align-items:center;justify-content:center;min-width:92px;height:34px;padding:0 8px;border:1px solid #94a3b8;border-radius:8px;font-size:.75rem;font-weight:800;color:var(--headline);text-shadow:0 1px 0 rgba(255,255,255,.65)}
.hatch-live-preview{display:block;margin-top:8px}
.hatch-live-preview svg{display:block;width:138px;max-width:100%;height:auto;border-radius:8px;background:#fff}
@media(max-width:720px){}

/* BMC 021.88 - Katalogtabellen: geschlossene Linien und graue Kopfzellen */
.catalog-component-page .catalog-build-grid{
  border:.25mm solid #222!important;
  border-top:0!important;
}
.catalog-component-page .catalog-build-grid>div{
  box-sizing:border-box!important;
}
.catalog-component-page .catalog-build-head{
  background:var(--catalog-table-head-bg,#d9d9d9)!important;
  border-bottom:.25mm solid #222!important;
  min-height:7mm!important;
}
.catalog-component-page .catalog-build-sketch,
.catalog-component-page .catalog-build-layers{
  border-bottom:.25mm solid #222!important;
}
.catalog-component-page .catalog-build-sketch{
  border-left:0!important;
}
.catalog-component-page .catalog-build-layers,
.catalog-component-page .catalog-build-layers-head{
  border-left:.25mm solid #222!important;
}
.catalog-component-page .catalog-build-layers .catalog-layer-list{
  border-top:0!important;
}
.catalog-component-page .catalog-layer-row{
  border-bottom:.25mm solid #222!important;
}
.catalog-component-page .catalog-layer-row:last-child{
  border-bottom:0!important;
}
.catalog-component-page .catalog-layer-row>div+div{
  border-left:.25mm solid #222!important;
}
.catalog-component-page .catalog-performance{
  border-collapse:collapse!important;
  border:.25mm solid #222!important;
}
.catalog-component-page .catalog-performance th,
.catalog-component-page .catalog-performance td{
  border:.25mm solid #222!important;
}
.catalog-component-page .catalog-performance th{
  background:var(--catalog-table-head-bg,#d9d9d9)!important;
}
.catalog-component-page .catalog-remarks{
  padding:0!important;
  border:.35mm solid #222!important;
  min-height:22mm!important;
}
.catalog-component-page .catalog-remarks>strong{
  display:block!important;
  box-sizing:border-box!important;
  margin:0!important;
  padding:1.6mm 2mm!important;
  background:var(--catalog-table-head-bg,#d9d9d9)!important;
  border-bottom:.35mm solid #222!important;
}
.catalog-component-page .catalog-remarks p{
  margin:0!important;
  padding:1.2mm 2mm!important;
  line-height:1.12!important;
}

/* BMC 021.91 - Bauteilskizze beim Hover in der Bauteiluebersicht */
.component-preview-trigger{
  display:inline-block;
  max-width:100%;
  padding:1px 4px;
  border-radius:6px;
  cursor:help;
  vertical-align:middle;
}
.component-preview-trigger::before{
  content:none;
  display:none;
}
.component-preview-trigger:hover,
.component-preview-trigger:focus{
  background:#edf6ff;
  outline:none;
}
.component-hover-preview{
  position:fixed;
  z-index:3000;
  width:700px;
  max-width:calc(100vw - 24px);
  padding:12px;
  border:1px solid #cbd5e1;
  border-radius:16px;
  background:#fff;
  box-shadow:0 18px 45px rgba(15,23,42,.22);
  pointer-events:none;
}
.component-hover-preview-head{
  display:flex;
  gap:8px;
  align-items:baseline;
  margin-bottom:8px;
  color:var(--headline);
}
.component-hover-preview-head strong{
  flex:0 0 auto;
}
.component-hover-preview-head span{
  min-width:0;
  overflow:visible;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#475569;
}
.component-hover-preview-sketch{
  overflow:hidden;
  border:1px solid #e2e8f0;
  border-radius:12px;
  background:#fff;
}
.component-hover-preview-sketch svg{
  display:block;
  width:100%;
  height:auto;
  max-height:none;
}
.component-hover-preview-loading,
.component-hover-preview-empty{
  padding:18px;
  color:var(--muted-2);
  text-align:center;
}

/* BMC 021.80 - Bauteilkatalog naeher an Wordvorlage 250612 */
.catalog-template-red{color:#f00!important}
.catalog-cover{padding:18mm 25mm 18mm 30mm!important}
.catalog-cover-rail{position:absolute;top:12mm;right:25mm;width:38mm;color:#17385f;font-size:7.2pt;line-height:1.18}
.catalog-cover-rail .catalog-brand{position:static!important;width:auto!important;min-width:0!important;text-align:left!important;color:#17385f!important}
.catalog-cover-rail .catalog-brand img{display:block;max-width:36mm;max-height:28mm;object-fit:contain;margin:0 0 3mm auto}
.catalog-cover-rail .catalog-brand strong{display:block;font-size:20pt!important;line-height:1;color:#17385f!important;text-align:left}
.catalog-cover-rail .catalog-brand span{display:block;margin-top:.8mm!important;font-size:7.5pt!important;letter-spacing:0!important;text-transform:none!important;color:#17385f!important}
.catalog-cover-main{margin-top:41mm!important;max-width:128mm!important}
.catalog-cover h1{font-size:14pt!important;margin-bottom:2.5mm!important}
.catalog-cover h2{max-width:126mm!important;font-size:14.5pt!important;line-height:1.35!important}
.catalog-cover .catalog-status{margin:18mm 0 17mm!important;font-size:11pt!important}
.catalog-cover-data{grid-template-columns:48mm minmax(0,1fr)!important;column-gap:7mm!important;row-gap:12mm!important;max-width:128mm!important;font-size:10pt!important}
.catalog-cover-data dd{color:#f00!important}
/* BMC 022.68 - die vormalige Regel ".catalog-cover-scope-note{left:30mm!important;right:25mm!important;
   bottom:18mm!important}" wurde hier entfernt. Sie stammte aus der Zeit vor BMC 022.62 (position:absolute)
   und wurde damals als "wirkungslos" eingestuft, weil top/right/bottom/left bei position:static ignoriert
   werden - das stimmt nur OHNE aktives Briefpapier. Mit aktivem Briefpapier (.catalog-cover.has-letterhead-pdf,
   siehe Zeile ~7015) wird .catalog-cover-scope-note auf position:relative umgeschaltet (noetig fuers
   Stapel-/z-index-Verhalten ueber dem Briefpapier-Hintergrund) - und bei position:relative wirkt "bottom"
   sehr wohl (top errechnet sich dann als -bottom), wodurch die Zeile "Der Bauteilkatalog umfasst X Seiten."
   um 18mm nach oben verschoben wurde und mit der letzten Datenzeile (Projektbearbeiterin) ueberlappte -
   genau der Fehler, der eigentlich schon durch BMC 022.62 behoben sein sollte, aber nur bei AKTIVEM
   Briefpapier erneut auftrat. Mit Playwright empirisch reproduziert (Bruecke via getComputedStyle: top
   wertete sich zu "-68.0315px" = -18mm) und nach Entfernen dieser Regel verifiziert. */
.catalog-page:not(.catalog-cover),.catalog-component-page{padding:16mm 25mm 10mm 30mm!important}
.catalog-running-head{grid-template-columns:27mm minmax(0,1fr) 34mm!important;gap:6mm!important;margin-bottom:10mm!important;color:#111!important}
.catalog-running-head>span{color:#f00!important;font-size:8.5pt!important}
.catalog-running-head>div{font-size:8.5pt!important;line-height:1.12!important}
.catalog-running-brand{display:grid!important;justify-items:start!important;align-content:start!important;text-align:left!important;color:#17385f!important;font-style:normal;font-weight:400!important;line-height:1.1}
.catalog-running-brand img{display:block;max-width:28mm;max-height:22mm;object-fit:contain;margin:0 0 1mm auto}
.catalog-running-brand span{display:block;color:#17385f;font-size:13pt;font-weight:400}
.catalog-running-brand em{display:block;margin-top:2mm;color:#111;font-size:8.5pt;font-style:normal;font-weight:400}
.catalog-running-foot{left:30mm!important;right:25mm!important;bottom:8mm!important;display:block!important;text-align:right!important;color:#111!important}
.catalog-running-foot span:first-child{display:none!important}
.catalog-running-foot span:last-child{font-size:8.5pt!important}
.catalog-toc-general-page .catalog-toc{font-size:9pt!important;line-height:1.32!important}
.catalog-toc-general-page>h2,.catalog-documents-page>h1,.catalog-terms-page>h1,.catalog-component-page>h1{display:grid;grid-template-columns:17mm 1fr;column-gap:0;align-items:baseline}
.catalog-documents-page .catalog-table.documents{border-collapse:collapse!important;border:.35mm solid #111!important;font-size:9pt!important;line-height:1.25!important}
.catalog-documents-page .catalog-table.documents th,.catalog-documents-page .catalog-table.documents td{border:.25mm solid #111!important;padding:2.2mm 3mm!important;background:transparent!important;vertical-align:middle!important}
.catalog-documents-page .catalog-table.documents th{font-weight:700!important;color:#111!important;text-align:left}
.catalog-documents-page .catalog-table.documents tbody td{color:#f00!important}
.catalog-documents-page .catalog-table.documents th:nth-child(2),.catalog-documents-page .catalog-table.documents td:nth-child(2),.catalog-documents-page .catalog-table.documents th:nth-child(3),.catalog-documents-page .catalog-table.documents td:nth-child(3),.catalog-documents-page .catalog-table.documents th:nth-child(4),.catalog-documents-page .catalog-table.documents td:nth-child(4){text-align:center!important}
.catalog-documents-page .catalog-reference{grid-template-columns:16mm minmax(0,1fr)!important;font-size:9pt!important;margin-top:8mm!important}
.catalog-documents-page .catalog-reference:not(:first-of-type){margin-top:5mm!important}
.catalog-documents-page .catalog-reference span,.catalog-documents-page .catalog-reference strong+*{color:#f00!important}
.catalog-component-page .catalog-build-grid{grid-template-columns:42.4% 57.6%!important}
.catalog-component-page .catalog-sketch{height:101mm!important}
.catalog-component-page .catalog-layer-list{min-height:92mm}
.catalog-component-page .catalog-performance{font-size:8pt!important}
.catalog-component-page .catalog-remarks{min-height:27mm!important}
@media print{
  .catalog-page:not(.catalog-cover),.catalog-component-page{padding:16mm 25mm 10mm 30mm!important}
}

/* BMC 021.81 - Katalogkorrekturen: Platzhalter schwarz, Header/Skizzen lesbarer */
.catalog-template-red,
.catalog-cover-data dd,
.catalog-running-head>span,
.catalog-documents-page .catalog-table.documents tbody td,
.catalog-documents-page .catalog-reference span,
.catalog-documents-page .catalog-reference strong+*{color:#111!important}
.catalog-running-head{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 34mm!important;
  grid-template-areas:"project logo" "title logo"!important;
  column-gap:7mm!important;
  row-gap:2mm!important;
  align-items:start!important;
}
.catalog-running-head>span{grid-area:project;font-size:9pt!important;line-height:1.15!important}
.catalog-running-head>div{grid-area:title;font-size:9pt!important;line-height:1.2!important}
.catalog-running-head>strong{grid-area:logo}
.catalog-running-brand{justify-items:end!important;text-align:right!important}
/* BMC 022.50 (Nutzerauftrag 24.07.2026): "mehr Platz zwischen Leistungsphase und der
   darüberliegenden Beschreibung, besseren Umbruch hier waehlen" - die Leistungsphase-Zeile
   der laufenden Kopfzeile bekommt einen eigenen Block mit Abstand statt eines reinen <br>,
   damit sie sich von der Titel-/Adresszeile sichtbar abhebt. */
.catalog-running-head-desc{display:block}
.catalog-running-head-phase{display:block;margin-top:1.6mm}
.catalog-running-brand img{max-width:32mm!important;max-height:22mm!important;margin:0 0 1.5mm auto!important}
.catalog-running-brand span{font-size:11pt!important;text-align:right!important}
.catalog-running-brand.has-logo span{display:none!important}
.catalog-running-brand em{font-size:8pt!important;text-align:right!important}
.catalog-component-page .catalog-sketch .component-svg-catalog text{
  font-size:17px!important;
  font-weight:700!important;
  paint-order:stroke!important;
  stroke:#fff!important;
  stroke-width:3px!important;
  stroke-linejoin:round!important;
}
.catalog-performance th,
.catalog-performance td{
  vertical-align:middle!important;
}
.catalog-performance td:nth-child(n+3){
  text-align:center!important;
}
.catalog-component-page .catalog-layer-row>div{
  display:flex!important;
  align-items:center!important;
}
.catalog-component-page .catalog-layer-row>div:nth-child(1),
.catalog-component-page .catalog-layer-row>div:nth-child(2){
  justify-content:center!important;
  text-align:center!important;
}
.catalog-component-page .catalog-layer-row>div:nth-child(3){
  /* BMC 022.208: Baustoffname und Kennwertzeile stehen untereinander. Die Zelle ist
     weiter oben mit align-items:center!important als Flex-Zeile gesetzt - ohne diese
     Ergaenzung stuenden beide nebeneinander und wuerden sich ueberlagern. */
  flex-direction:column!important;
  align-items:flex-start!important;
  justify-content:center!important;
  line-height:1.18!important;
}
.catalog-remarks-editable{cursor:text;position:relative}
.catalog-remarks-editable:hover{outline:1.2mm solid rgba(29,95,154,.18);outline-offset:1mm}
.catalog-remarks-editable::after{
  content:"Zum Bearbeiten klicken";
  position:absolute;
  right:2mm;
  top:1.6mm;
  font-size:7pt;
  color:#657383;
}
@media print{
  .catalog-remarks-editable{cursor:auto}
  .catalog-remarks-editable:hover{outline:0}
  .catalog-remarks-editable::after{display:none!important}
}

/* BMC 021.82 - Katalogskizze als zugeschnittenes Bauteilblatt-Bild */
.catalog-document{
  --catalog-title-head-bg:#d9d9d9;
  --catalog-table-head-bg:#d9d9d9;
}
.catalog-component-title{
  background:var(--catalog-title-head-bg,#d9d9d9)!important;
}
.catalog-performance th,
.catalog-table th{
  background:var(--catalog-table-head-bg,#d9d9d9)!important;
}
.catalog-build-grid>div{
  padding:0!important;
}
.catalog-component-page .catalog-build-grid{
  /* BMC 022.60 (Nutzerrueckmeldung 24.07.2026, "Linien sollen untereinanderstehen") - dieser
     Wert (spaeter in der Kaskade, gewinnt bei gleicher Spezifitaet gegen die 43%/57%-Regel
     weiter oben) war vermutlich versehentlich zu 48%/52% verschoben worden. Gegen die
     verbindliche Word-Vorlage abgeglichen (tblGrid der kombinierten Skizze/Aufbau/Eigenschaften-
     Tabelle: Spalten 1630+2126 twips fuer "Skizze zum Bauteil" von 8859 twips gesamt = 42,4%,
     Rest 57,6% fuer "Aufbau"). Wert exakt auf die Vorlage gesetzt statt der zuvor abweichenden
     43%/57%- bzw. 48%/52%-Werte. */
  grid-template-columns:42.4% 57.6%!important;
}
.catalog-build-head,
.catalog-continuation-build>small{
  display:block!important;
  margin:0!important;
  padding:1.8mm 2.4mm!important;
  background:var(--catalog-table-head-bg,#d9d9d9)!important;
  border-bottom:.35mm solid #222!important;
  color:#111!important;
  font-size:7.8pt!important;
  line-height:1.15!important;
}
.catalog-build-head{
  font-weight:400!important;
}
.catalog-build-layers-head,
.catalog-build-layers{
  border-left:.35mm solid #222!important;
}
.catalog-build-sketch{
  border-left:0!important;
}
.catalog-build-grid .catalog-layer-list{
  margin:0!important;
}
.catalog-sketch-sheet-image{
  height:106mm!important;
  padding:0!important;
  overflow:hidden!important;
  align-items:center!important;
  justify-content:center!important;
}
.catalog-sketch-sheet-image .component-svg-sheet-image,
.catalog-sketch-sheet-image .component-svg-catalog{
  width:132%!important;
  height:auto!important;
  max-width:none!important;
  max-height:none!important;
  transform:translateX(-2%) scale(1.08);
  transform-origin:center center;
}
.catalog-sketch-sheet-image.catalog-sketch-horizontal .component-svg-sheet-image,
.catalog-sketch-sheet-image.catalog-sketch-horizontal .component-svg-catalog{
  width:124%!important;
  transform:translateX(-1%) scale(1.04);
}
.catalog-sketch-sheet-image.catalog-sketch-vertical .component-svg-catalog{
  width:150%!important;
  transform:translateX(-4%) scale(1.12);
}
.catalog-component-page .catalog-build-layers{
  overflow:hidden;
}
.catalog-component-page .catalog-layer-row>div{
  padding-top:1.7mm!important;
  padding-bottom:1.7mm!important;
}

/* BMC 021.84 - Katalogfeinschliff */
.catalog-sketch-sheet-image.catalog-sketch-vertical .component-svg-catalog{
  width:118%!important;
  transform:translateX(-1.5%) scale(1.02);
}
.catalog-component-page .catalog-sketch{
  height:98mm!important;
}
.catalog-component-page .catalog-build-head{
  border-bottom:.25mm solid #222!important;
}
.catalog-component-page .catalog-build-grid>div{
  border-bottom:.25mm solid #222!important;
}
.catalog-component-page .catalog-performance{
  table-layout:fixed!important;
  font-size:7.7pt!important;
}
.catalog-component-page .catalog-performance:not(.catalog-performance-fixed-grid) td:nth-child(1){width:18%!important}
.catalog-component-page .catalog-performance:not(.catalog-performance-fixed-grid) td:nth-child(2){width:33%!important;word-break:normal;overflow-wrap:anywhere}
.catalog-component-page .catalog-performance:not(.catalog-performance-fixed-grid) td:nth-child(3),
.catalog-component-page .catalog-performance:not(.catalog-performance-fixed-grid) th:nth-child(3){width:24.5%!important}
.catalog-component-page .catalog-performance:not(.catalog-performance-fixed-grid) td:nth-child(4),
.catalog-component-page .catalog-performance:not(.catalog-performance-fixed-grid) th:nth-child(4){width:24.5%!important}
/* BMC 022.60 (Nutzerrueckmeldung 24.07.2026, "Linien sollen untereinanderstehen, untere nach
   rechts") - die o.g. alten :nth-child-Breitenregeln (aus der Zeit vor der <colgroup>-Loesung
   in BMC 022.56) haben die Spaltenbreiten der Eigenschaften-Tabelle weiterhin ueberschrieben,
   obwohl seit 022.56 ein <colgroup> gesetzt ist - dadurch wich die tatsaechlich gerenderte
   Spaltenaufteilung (empirisch gemessen) klar von den <colgroup>-Werten ab, und die Berechnung
   in 022.56 (0,02px Abweichung) hat nur die Kopfzeile ("Eigenschaften"-th, eine verschmolzene
   Zelle ohne sichtbare Trennlinie) getroffen, nicht die tatsaechlich sichtbare Trennlinie in den
   Datenzeilen. Betroffene Tabelle bekommt jetzt zusaetzlich die Klasse
   "catalog-performance-fixed-grid" (nur die Wand-Variante mit <colgroup>, siehe
   case 'project_catalog_pdf'), damit die alten Breitenregeln dort nicht mehr greifen und das
   <colgroup> tatsaechlich die alleinige Quelle fuer die Spaltenbreiten ist. Andere
   .catalog-performance-Tabellen (Fenster/Tueren, ohne <colgroup>) sind von :not(...) weiterhin
   erfasst und unveraendert. */
.catalog-component-page .catalog-performance th,
.catalog-component-page .catalog-performance td{
  padding:1.7mm 2mm!important;
}

/* BMC 021.85 - Vorschau editierbar, Skizzen kleiner, Tabellenlinie bereinigt */
.catalog-section-editable{
  cursor:text;
  position:relative;
}
.catalog-section-editable:hover{
  outline:1.2mm solid rgba(29,95,154,.16);
  outline-offset:1mm;
}
.catalog-section-editable::after{
  content:"Zum Bearbeiten klicken";
  position:absolute;
  right:5mm;
  top:8mm;
  z-index:2;
  padding:.8mm 1.4mm;
  border-radius:2mm;
  background:rgba(255,255,255,.88);
  color:#657383;
  font-size:7pt;
  line-height:1;
}
.catalog-section-editable.is-saving::after,
.catalog-remarks-editable.is-saving::after{
  content:"Speichert ...";
}
.catalog-sketch-sheet-image.catalog-sketch-vertical{
  overflow:hidden!important;
}
.catalog-sketch-sheet-image.catalog-sketch-vertical .component-svg-catalog{
  width:88%!important;
  height:96%!important;
  max-width:100%!important;
  max-height:100%!important;
  min-width:0!important;
  min-height:0!important;
  transform:none!important;
}
.catalog-sketch-sheet-image.catalog-sketch-vertical .component-svg-catalog text{
  font-size:12px!important;
  font-weight:700!important;
  paint-order:stroke!important;
  stroke:#fff!important;
  stroke-width:2px!important;
  stroke-linejoin:round!important;
}
.catalog-component-page .catalog-sketch{
  height:88mm!important;
}
.catalog-component-page .catalog-build-head{
  border-bottom:.25mm solid #222!important;
}
.catalog-component-page .catalog-build-grid>div:not(.catalog-build-head){
  border-bottom:0!important;
}
.catalog-component-page .catalog-layer-list{
  border-top:0!important;
}
.catalog-component-page .catalog-layer-row:first-child{
  border-top:0!important;
}
.catalog-build-layers-head,
.catalog-build-layers{
  border-left:.25mm solid #222!important;
}
@media print{
  .catalog-section-editable{
    cursor:auto;
  }
  .catalog-section-editable:hover{
    outline:0;
  }
  .catalog-section-editable::after{
    display:none!important;
  }
}

/* BMC 021.86 - Mehrzeilige Eingabedialoge in der Katalogvorschau */
.catalog-edit-dialog-backdrop{
  position:fixed;
  inset:0;
  z-index:9999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:rgba(15,23,42,.48);
}
.catalog-edit-dialog{
  width:min(760px,calc(100vw - 48px));
  max-height:calc(100vh - 48px);
  display:flex;
  flex-direction:column;
  gap:12px;
  padding:22px;
  border-radius:14px;
  background:#fff;
  box-shadow:0 24px 70px rgba(15,23,42,.28);
  color:#172033;
}
.catalog-edit-dialog h2{
  margin:0;
  font-size:1.15rem;
}
.catalog-edit-dialog p{
  margin:0;
  color:#526173;
}
.catalog-edit-dialog textarea{
  width:100%;
  min-height:180px;
  max-height:58vh;
  resize:vertical;
  padding:12px 13px;
  border:1px solid #b7c2d0;
  border-radius:10px;
  font:inherit;
  line-height:1.45;
}
.catalog-edit-dialog textarea:focus{
  outline:3px solid rgba(29,95,154,.18);
  border-color:var(--accent);
}
.catalog-edit-dialog-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
}
.catalog-edit-dialog-actions small{
  margin-right:auto;
  color:#657383;
}
/* BMC 022.104 (Nutzerauftrag 26.07.2026, RC1-Thema 7): echte Zeilen-Tabelle im
   Druckvorschau-Dialog fuer Unterlagen/Begriffe (catalogRowsDialog), anstelle des bisherigen
   Pipe-Freitextfelds - bewusst eigene, schlanke Klassen statt Wiederverwendung von
   .catalog-document-row/.catalog-term-row, da diese Dialog-Zeilen variable Spaltenbreiten je
   Aufrufer (columns[].width) statt fester Grid-Werte brauchen. */
.catalog-rows-dialog-list{display:flex;flex-direction:column;gap:8px;max-height:48vh;overflow-y:auto;padding-right:4px}
.catalog-rows-dialog-row{display:grid;gap:8px;align-items:start}
.catalog-rows-dialog-row input,.catalog-rows-dialog-row select{width:100%;padding:7px 9px;border:1px solid #b7c2d0;border-radius:8px;font:inherit}
.catalog-rows-dialog-richtext{min-height:38px;padding:7px 9px;border:1px solid #b7c2d0;border-radius:8px;font:inherit;line-height:1.4}
.catalog-rows-dialog-richtext:focus{outline:3px solid rgba(29,95,154,.18);border-color:var(--accent)}
.catalog-rows-dialog-add{align-self:flex-start}
@media(max-width:640px){.catalog-rows-dialog-row{grid-template-columns:1fr!important}.catalog-rows-dialog-row .catalog-row-remove{justify-self:end}}
@media print{
  .catalog-edit-dialog-backdrop{
    display:none!important;
  }
}

/* BMC 021.87 - Katalogfeinschliff: Sortierung, Nummern, Bemerkungen */
.catalog-sort-save-status{
  margin:.55rem 0 0;
  color:#526173;
}
#catalog-sort-body tr.catalog-row-dragging{
  opacity:.58;
}
.catalog-sketch-sheet-image.catalog-sketch-horizontal{
  overflow:hidden!important;
}
.catalog-sketch-sheet-image.catalog-sketch-horizontal .component-svg-sheet-image,
.catalog-sketch-sheet-image.catalog-sketch-horizontal .component-svg-catalog{
  width:104%!important;
  height:96%!important;
  max-width:104%!important;
  max-height:100%!important;
  min-width:0!important;
  min-height:0!important;
  transform:translateX(-1%)!important;
}
.catalog-sketch-sheet-image.catalog-sketch-horizontal .component-svg-catalog text{
  font-size:12px!important;
  font-weight:700!important;
  paint-order:stroke!important;
  stroke:#fff!important;
  stroke-width:2px!important;
  stroke-linejoin:round!important;
}
.catalog-component-page .catalog-remarks{
  padding-top:1.8mm!important;
  padding-bottom:1.8mm!important;
}
.catalog-component-page .catalog-remarks p{
  margin:1mm 0 0!important;
  line-height:1.12!important;
}
.catalog-component-page .catalog-remarks strong{
  margin-bottom:.5mm!important;
}

/* BMC 021.88 - finaler Katalog-Rasterfix nach allen aelteren Overrides */
.catalog-component-page .catalog-build-grid{
  border:.35mm solid #222!important;
  border-top:0!important;
}
.catalog-component-page .catalog-build-grid>div{
  box-sizing:border-box!important;
}
.catalog-component-page .catalog-build-head{
  background:var(--catalog-table-head-bg,#d9d9d9)!important;
  border-bottom:.35mm solid #222!important;
  min-height:7mm!important;
}
.catalog-component-page .catalog-build-sketch,
.catalog-component-page .catalog-build-layers{
  border-bottom:.35mm solid #222!important;
}
.catalog-component-page .catalog-build-sketch{
  border-left:0!important;
}
.catalog-component-page .catalog-build-layers,
.catalog-component-page .catalog-build-layers-head{
  border-left:.25mm solid #222!important;
}
.catalog-component-page .catalog-build-layers .catalog-layer-list{
  border-top:0!important;
}
.catalog-component-page .catalog-layer-row{
  border-bottom:.25mm solid #222!important;
}
.catalog-component-page .catalog-layer-row:last-child{
  border-bottom:0!important;
}
.catalog-component-page .catalog-layer-row>div+div{
  border-left:.25mm solid #222!important;
}
.catalog-component-page .catalog-performance{
  border-collapse:collapse!important;
  border:.25mm solid #222!important;
}
.catalog-component-page .catalog-performance th,
.catalog-component-page .catalog-performance td{
  border:.25mm solid #222!important;
}
.catalog-component-page .catalog-performance th{
  background:var(--catalog-table-head-bg,#d9d9d9)!important;
}
.catalog-component-page .catalog-remarks{
  padding:0!important;
  border:.35mm solid #222!important;
  min-height:22mm!important;
}
.catalog-component-page .catalog-remarks>strong{
  display:block!important;
  box-sizing:border-box!important;
  margin:0!important;
  padding:1.6mm 2mm!important;
  background:var(--catalog-table-head-bg,#d9d9d9)!important;
  border-bottom:.35mm solid #222!important;
}
.catalog-component-page .catalog-remarks p{
  margin:0!important;
  padding:1.2mm 2mm!important;
  line-height:1.12!important;
}

/* BMC 021.92 - Hover-Feinschliff und ruhige Kataloglinien */
.project-catalog-preview-trigger{
  font-weight:700;
}
.reverse-layers-form{
  margin:0;
  display:inline-flex;
  align-items:center;
}
.layer-toggle.is-saving{
  opacity:.55;
  cursor:wait;
}
.catalog-cover-layout-block{
  margin-top:18mm;
  padding:6mm 8mm;
  border-left:1.2mm solid #d9d9d9;
  background:#f7f7f7;
  color:#111827;
  font-size:10.5pt;
  line-height:1.35;
  white-space:normal;
}
.hatch-hover-preview{
  position:fixed;
  z-index:3000;
  width:320px;
  max-width:calc(100vw - 24px);
  padding:12px;
  border:1px solid #cbd5e1;
  border-radius:14px;
  background:#fff;
  box-shadow:0 18px 45px rgba(15,23,42,.22);
  pointer-events:none;
}
.hatch-hover-preview strong{
  display:block;
  margin-bottom:7px;
  color:var(--headline);
}
.hatch-hover-swatch{
  margin:8px 0;
  padding:8px;
  border:1px solid #d5dee9;
  border-radius:10px;
  background:var(--soft-bg);
}
.hatch-hover-swatch svg{
  display:block;
  width:100%;
  height:92px;
}
.hatch-hover-preview small{
  color:var(--muted-2);
}
.catalog-component-page .catalog-layer-row:focus,
.catalog-component-page .catalog-layer-row:focus-visible,
.catalog-component-page .catalog-layer-row>div:focus,
.catalog-component-page .catalog-layer-row>div:focus-visible{
  outline:0!important;
}
.catalog-component-page .catalog-layer-row-inhomogeneous + .catalog-layer-row-inhomogeneous{
  border-top:.25mm solid #222!important;
}
/* BMC 022.53 (Nutzerrueckmeldung 24.07.2026, Screenshot Bauteil mit 2 Pfadbauteilen/
   Schichten "3a"/"3b"): "dicke Linie bei manchen Schichten, passt die Schraffurdarstellung
   nicht" - betraf tatsaechlich nicht die SVG-Skizze/Schraffurlogik (Nutzer-Rueckmeldung:
   "in der Tabelle nicht in der Skizze"), sondern die Schichtentabelle. Ursache: die
   Selektoren ".catalog-layer-row-inhomogeneous-a{border-bottom:0}" (BMC 021.59) und der
   duenne gepunktete Trenner zwischen a/b (zuletzt .08mm gepunktet, BMC 021.61) wurden durch
   spaetere, gleich spezifische !important-Regeln (u.a. hier oben sowie die pauschale
   ".catalog-layer-row{border-bottom:.25mm solid #222}") in der Kaskade ueberschrieben -
   dadurch bekamen SOWOHL die "a"-Zeile (volle Unterkante) ALS AUCH die "b"-Zeile (volle
   Oberkante) je eine eigene durchgezogene .25mm-Linie, die direkt aneinanderstossen und sich
   dadurch wie eine doppelt so dicke Linie darstellen - nur bei Schichten mit Pfad A/Pfad B
   (inhomogene Schichten), nicht bei normalen Einzelschichten (dort gibt es je Grenze nur eine
   Linie). Fix: "a"-Unterkante wird erneut auf 0 gesetzt (jetzt als letzte Regel in der Datei,
   damit sie in der Kaskade gewinnt) und die a/b-Trennlinie wieder auf die urspruenglich
   beabsichtigte duenne, helle gepunktete Linie zurueckgesetzt statt der vollen schwarzen
   Randlinie. Betrifft nur diese praesentationelle CSS-Datei, keine Schraffur-/Rechenkern-Logik
   (component_svg()/helena_*_hatch_svg() in src/functions.php bleiben unveraendert). */
.catalog-component-page .catalog-layer-row-inhomogeneous-a{
  border-bottom:0!important;
}
.catalog-component-page .catalog-layer-row-inhomogeneous-b{
  border-top:.1mm dotted #b7bcc2!important;
}

/* BMC 021.94 – einklappbare Dashboards, Schraffurpicker und aufgeräumte Bauteilliste */
.collapsible-dashboard{padding:0;overflow:hidden}
.collapsible-dashboard>summary{list-style:none;cursor:pointer;padding:18px 20px;user-select:none}
.collapsible-dashboard>summary::-webkit-details-marker{display:none}
.collapsible-dashboard-chevron{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;background:#eef4fb;color:#24425f;font-weight:800;transition:transform .16s ease}
.collapsible-dashboard[open] .collapsible-dashboard-chevron{transform:rotate(90deg)}
.collapsible-dashboard-body{padding:0 20px 18px}
.collapsible-dashboard-actions{display:flex;justify-content:flex-end;margin:-4px 0 12px}
.collapsible-dashboard .ticket-list{margin-top:0}
.hatch-pattern-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:6px;margin-top:8px;max-height:170px;overflow:auto;padding:8px;border:1px solid #d8e2ee;border-radius:10px;background:var(--soft-bg)}
.hatch-pattern-picker button{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #d7e2ee;background:#fff;border-radius:8px;padding:7px 8px;color:#19324d;font-weight:700;cursor:pointer;text-align:left}
.hatch-pattern-picker button:hover,.hatch-pattern-picker button:focus{border-color:#7aa7d9;background:#eef6ff;outline:none}
.hatch-pattern-picker code{font-size:.72rem;color:var(--muted-2);background:#eef2f7;border-radius:6px;padding:2px 5px}
#component-list-card{overflow-x:auto}
#component-list-card table{min-width:1120px;table-layout:fixed}
#component-list-card th:nth-child(1),#component-list-card td:nth-child(1){width:76px}
#component-list-card th:nth-child(2),#component-list-card td:nth-child(2){width:150px}
#component-list-card th:nth-child(5),#component-list-card td:nth-child(5){width:96px}
#component-list-card th:nth-child(6),#component-list-card td:nth-child(6){width:82px}
#component-list-card th:nth-child(7),#component-list-card td:nth-child(7){width:92px}
#component-list-card th:nth-child(10),#component-list-card td:nth-child(10){width:74px;text-align:center}
#component-list-card th:nth-child(11),#component-list-card td:nth-child(11){width:96px;text-align:center}
#component-list-card th:nth-child(12),#component-list-card td:nth-child(12){width:92px;white-space:nowrap}
#component-list-card th:last-child,#component-list-card td:last-child{width:190px}
#component-list-card td{vertical-align:middle}
#component-list-card td:nth-child(1) a{display:inline-block;line-height:1.15;word-break:normal;overflow-wrap:normal;hyphens:none}
.component-list-actions{white-space:normal}
.component-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.component-row-actions form{margin:0;display:inline-flex}
.component-row-actions .button.tiny{padding:5px 8px;line-height:1.1;text-decoration:none}
.component-row-actions .button.danger{background:#fff1f2;color:#b42318;border-color:#fecdd3}
.component-row-actions .button.danger:hover{background:#ffe4e6}
.lca-incomplete-list-badge{
  display:inline-flex;
  align-items:center;
  white-space:nowrap;
  margin-right:6px;
  background:#fff7ed;
  color:#9a3412;
  border-color:#fed7aa;
}
.sortable-head{
  cursor:pointer;
  user-select:none;
}
.sortable-head::after{
  content:"↕";
  margin-left:5px;
  color:#94a3b8;
  font-size:.8em;
}
.sortable-head[data-sort-dir="asc"]::after{content:"↑";color:var(--accent)}
.sortable-head[data-sort-dir="desc"]::after{content:"↓";color:var(--accent)}
.account-display-columns{
  border:1px solid var(--line);
  border-radius:12px;
  padding:12px 14px;
  background:var(--soft-bg);
}
.account-display-columns legend{
  padding:0 6px;
  font-weight:800;
  color:var(--ink);
}
.checkbox-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:6px 12px;
}
.component-list-titlebar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:10px;
  position:relative;
}
.component-list-titlebar > a{margin-left:auto;flex:0 0 auto;}
.component-list-titlebar strong,
.component-list-titlebar small{
  display:block;
}
.component-list-titlebar small{
  margin-top:2px;
  color:var(--muted-2);
}
/* BMC 022.88 (RC1-Punkt 9: "Spalteneinstellung direkt in der Werkzeugleiste statt an anderer
   Stelle"): Inline-Popover statt Verlinkung auf die Kontoseite - bestehendes <details>-Muster
   (BMC 022.58/86) wiederverwendet, hier erstmals als schwebendes, freigestelltes Panel statt
   Inline-Aufklappen (damit die Tabelle darunter nicht durch das Formular verschoben wird). Analoges
   Muster fuer .project-meta-settings-popover (RC1-Punkt 14) weiter unten. */
.component-list-settings-popover,
.project-meta-settings-popover{
  position:relative;
  flex:0 0 auto;
  margin-left:auto;
}
.component-list-settings-popover summary,
.project-meta-settings-popover summary{
  cursor:pointer;
  list-style:none;
}
.component-list-settings-popover summary::-webkit-details-marker,
.project-meta-settings-popover summary::-webkit-details-marker{
  display:none;
}
.component-list-settings-form,
.project-meta-settings-form{
  /* BMC 022.88: bewusst position:fixed statt position:absolute - die umgebenden Karten sind
     teilweise .table-wrap (overflow-x:auto, was laut CSS-Spezifikation implizit auch
     overflow-y:auto erzwingt) und wuerden ein absolut positioniertes Panel an der Kartengrenze
     abschneiden. position:fixed entkommt dieser Ueberlauf-Begrenzung (siehe auch
     .component-hover-preview weiter oben, dasselbe Muster). Position wird per JS gesetzt
     (app.js, generisches [data-floating-popover]-Verhalten). */
  position:fixed;
  z-index:30;
  background:#fff;
  border:1px solid var(--soft-line);
  border-radius:12px;
  box-shadow:0 14px 32px rgba(29,53,87,.18);
  padding:14px 16px;
  min-width:280px;
  max-width:360px;
  max-height:calc(100vh - 32px);
  overflow-y:auto;
}
.component-list-settings-form .checkbox-grid,
.project-meta-settings-form .checkbox-grid{
  grid-template-columns:1fr;
  margin-top:8px;
}
.component-list-settings-actions{
  margin-top:12px;
  display:flex;
  justify-content:flex-end;
}
.project-meta-card-head{
  display:flex;
  justify-content:flex-end;
  margin-bottom:10px;
}
.account-return-row{
  margin-top:10px;
}
.wizard-thickness-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:14px;
}
.wizard-thickness-grid textarea{
  width:100%;
  min-height:86px;
  resize:vertical;
}
.component-wizard-body{
  display:grid;
  gap:14px;
  padding:18px;
}
.wizard-preview-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}
.wizard-preview-output{
  display:grid;
  gap:10px;
  padding:14px;
  border:1px solid #d8e2ee;
  border-radius:14px;
  background:#f8fbfe;
  max-height:min(48vh,560px);
  overflow:auto;
}
.wizard-preview-output table{
  width:100%;
  border-collapse:collapse;
}
.wizard-preview-output th,
.wizard-preview-output td{
  padding:10px 12px;
  border-bottom:1px solid #e4ebf2;
  text-align:left;
  vertical-align:top;
}
.wizard-material-suggestions{
  display:grid;
  gap:8px;
}
.wizard-material-suggestions span{
  display:grid;
  gap:1px;
  padding:8px 10px;
  border:1px solid #d9e6f1;
  border-radius:10px;
  background:#fff;
}
.wizard-material-suggestions small{
  color:var(--muted-2);
}
@media(max-width:720px){
  .component-list-titlebar{
    align-items:flex-start;
    flex-direction:column;
  }
}
@media(max-width:800px){.collapsible-dashboard>summary{padding:15px}.collapsible-dashboard-body{padding:0 15px 15px}.hatch-pattern-picker{grid-template-columns:1fr}#component-list-card table{min-width:980px}}

.catalog-cover.has-letterhead-pdf{position:relative;overflow:hidden;background:#fff}
.catalog-letterhead-pdf{position:absolute;inset:0;width:100%;height:100%;border:0;z-index:0;background:#fff;pointer-events:none}
.catalog-letterhead-pdf iframe{width:100%;height:100%;border:0}
.catalog-cover.has-letterhead-pdf>.catalog-cover-rail,.catalog-cover.has-letterhead-pdf>.catalog-cover-main,.catalog-cover.has-letterhead-pdf>.catalog-cover-scope-note{position:relative;z-index:1}
.catalog-cover.has-letterhead-pdf>.catalog-cover-main,.catalog-cover.has-letterhead-pdf>.catalog-cover-rail{background:rgba(255,255,255,.82);backdrop-filter:saturate(120%) blur(1px)}
.catalog-letterhead-current{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 12px;border:1px solid #d9e3ef;border-radius:10px;background:var(--soft-bg)}
@media print{.catalog-letterhead-pdf{pointer-events:none}.catalog-cover.has-letterhead-pdf>.catalog-cover-main,.catalog-cover.has-letterhead-pdf>.catalog-cover-rail{background:rgba(255,255,255,.78)}}

/* BMC 021.96 – Plankopf-Screenshot im Projektformular auslesen */
.plankopf-import-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:16px;
  border:1px dashed #b8c7d9;
  border-radius:14px;
  background:#f8fbff;
}
.plankopf-import-card h3{margin:0 0 5px;color:var(--ink)}
.plankopf-import-card p{margin:0;color:var(--muted-2);font-size:.92rem}
.plankopf-modal[hidden]{display:none}
.plankopf-modal{
  position:fixed;
  inset:0;
  z-index:9000;
  display:grid;
  place-items:center;
  padding:24px;
  background:rgba(15,23,42,.48);
}
.plankopf-dialog{
  width:min(920px,96vw);
  max-height:92vh;
  overflow:auto;
  background:#fff;
  border-radius:18px;
  border:1px solid #d7e2ee;
  box-shadow:0 24px 80px rgba(15,23,42,.3);
  padding:20px;
}
.plankopf-dialog-head,.plankopf-dialog-actions{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}
.plankopf-dialog-head h2{margin:0;color:var(--ink)}
.plankopf-mode-select{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin:14px 0 4px;
}
.plankopf-mode-select label{
  display:flex;
  align-items:flex-start;
  gap:8px;
  padding:10px 12px;
  border:1px solid #d7e2ee;
  border-radius:10px;
  background:var(--soft-bg);
  font-weight:700;
  color:#10233d;
}
.plankopf-mode-select input{width:auto;margin-top:2px}
.plankopf-mode-select small{display:block;margin-top:2px;font-weight:500;color:var(--muted-2)}
.plankopf-close{
  width:34px;
  height:34px;
  padding:0;
  border-radius:999px;
  background:#eef3f8;
  color:var(--ink);
}
.plankopf-dropzone{
  margin:18px 0 12px;
  padding:26px;
  border:2px dashed #9fb2c8;
  border-radius:14px;
  background:var(--soft-bg);
  text-align:center;
  cursor:pointer;
}
.plankopf-dropzone strong,.plankopf-dropzone span{display:block}
.plankopf-dropzone span{margin-top:6px;color:var(--muted-2);font-size:.9rem}
.plankopf-dropzone input{display:none}
.plankopf-dropzone.is-dragover,.plankopf-dropzone:focus{
  border-color:var(--accent);
  background:#eef6ff;
  outline:none;
}
.plankopf-manual-text{
  margin:10px 0 12px;
  padding:12px 14px;
  border:1px solid var(--soft-line);
  border-radius:12px;
  background:var(--soft-bg);
}
.plankopf-manual-text summary{
  cursor:pointer;
  font-weight:700;
  color:#10233d;
}
.plankopf-manual-text textarea{
  width:100%;
  min-height:110px;
  margin:10px 0;
  resize:vertical;
}
.plankopf-status{
  min-height:22px;
  margin:8px 0;
  color:var(--muted-2);
}
.plankopf-status.error{color:#b42318}
.plankopf-status.success{color:#17662d}
.plankopf-results{
  margin-top:14px;
  border:1px solid var(--soft-line);
  border-radius:14px;
  padding:14px;
  background:#fff;
}
.plankopf-results h3{margin:0 0 6px;color:var(--ink)}
.plankopf-result-row{
  display:grid;
  grid-template-columns:28px minmax(180px,.6fr) 1fr;
  gap:10px;
  align-items:start;
  margin-top:10px;
  font-weight:600;
}
.plankopf-result-row input[type=checkbox]{width:auto;margin-top:9px}
.plankopf-result-row textarea{
  width:100%;
  min-height:42px;
  margin:0;
  resize:vertical;
}
.plankopf-raw{
  margin-top:12px;
  padding:10px 12px;
  border:1px solid #e2e8f0;
  border-radius:10px;
  background:var(--soft-bg);
}
.plankopf-dialog-actions{margin-top:16px}
body.plankopf-modal-open{overflow:hidden}
@media(max-width:760px){
  .plankopf-import-card{display:block}
  .plankopf-import-card .button{margin-top:12px}
  .plankopf-mode-select{grid-template-columns:1fr}
  .plankopf-result-row{grid-template-columns:28px 1fr}
  .plankopf-result-row textarea{grid-column:2}
}

/* BMC 021.98 – Header nicht mehr über Seiten-/Dialoginhalte schieben */
body{padding-top:0!important}
.topbar{
  position:sticky!important;
  top:0!important;
  z-index:4000;
}
@media(max-width:1050px){body{padding-top:0!important}}
.layer-edit-dialog{
  overflow:hidden!important;
}
.layer-edit-dialog>.dialog-head{
  position:relative!important;
  z-index:10!important;
  background:#fff!important;
  box-shadow:0 2px 10px rgba(15,23,42,.08);
}
.layer-edit-dialog>.layer-edit-frame{
  position:relative;
  z-index:1;
}

/* BMC 022.26 – Randfarbe der Schicht-LCA-Karte spiegelt den echten Zuordnungsstatus:
   rot wenn die QNG-/ÖKOBAUDAT-Zuordnung (Baustoffstandard oder Override) fehlt,
   dunkelgrün wenn sie vorhanden ist. Das grüne Karteninnere (siehe V3.7.149 weiter
   oben) bleibt in beiden Fällen unverändert – nur der Rand ändert sich. */
.layer-lca-inline.lca-status-missing,
.layer-path-panel > .layer-lca-inline.lca-status-missing,
.layer-path-panel-a > .layer-lca-inline.lca-status-missing,
.layer-path-panel-b > .layer-lca-inline.lca-status-missing{
  border-color:#c0392b!important;
  box-shadow:0 3px 10px rgba(192,57,43,.14)!important;
}
.layer-lca-inline.lca-status-missing::before{
  color:#c0392b!important;
  border-color:#c0392b!important;
}
.layer-lca-inline.lca-status-ok,
.layer-path-panel > .layer-lca-inline.lca-status-ok,
.layer-path-panel-a > .layer-lca-inline.lca-status-ok,
.layer-path-panel-b > .layer-lca-inline.lca-status-ok{
  border-color:#1e6b3c!important;
}

/* BMC 022.27 – Masse 0,0 kg/m² bei einer echten (nicht-Luft-)Schicht ist fast immer eine
   fehlende Rohdichte in der Baustoffdatenbank, keine gueltige Bauphysik. Gleiche Signalfarbe
   wie der rote LCA-Warnbutton (#b91c1c), damit beide Warnungen optisch zusammengehoeren. */
.layer-value-cell .mass-value-missing{
  color:#b91c1c;
  font-weight:800;
}

/* BMC 022.29 – Bauteilwizard/DATAHOLZ-Import: Auswahl zwischen mehreren, laut Originaltabelle
   alternativ moeglichen Baustoffen fuer dieselbe Position ("...oder..."). */
.pdf-alt-choice{
  margin-top:6px;
  padding:8px 10px;
  border:1px solid #f0c36d;
  border-radius:8px;
  background:#fffaf0;
  display:grid;
  gap:5px;
}
.pdf-alt-hint{
  color:#8a5a13;
  font-weight:700;
}
.pdf-alt-option{
  display:flex;
  align-items:flex-start;
  gap:7px;
  cursor:pointer;
  font-weight:400;
}
.pdf-alt-option input[type="radio"]{
  margin-top:3px;
  flex:0 0 auto;
}
.pdf-alt-option strong{
  font-size:.85rem;
  color:#17375e;
}
.pdf-alt-option small{
  display:block;
  color:#526b83;
}

/* BMC 022.34: Bauteilwizard "Aufbau-Tabelle einfügen" - Nutzerrückmeldung "mach das mal
   breiter und etwas ansehlicher". Vorher hatte die Textarea kein eigenes Layout (nur die
   .wide-Klasse, die ohne umgebendes CSS-Grid wirkungslos war) und blieb auf der schmalen
   Browser-Standardgröße stehen; das Label stand per Default inline vor statt über dem Feld. */
.wizard-paste-card{max-width:1180px}
.wizard-paste-form{display:flex;flex-direction:column;gap:16px;margin-top:14px}
.wizard-paste-label{display:block;font-weight:700;font-size:14px;color:var(--ink)}
.wizard-paste-textarea{
  display:block;
  width:100%;
  min-height:320px;
  margin-top:8px;
  padding:16px;
  border:1px solid #bdc9d8;
  border-radius:12px;
  font-family:'Consolas','Courier New',monospace;
  font-size:13.5px;
  line-height:1.6;
  color:var(--ink);
  background:#f9fbfd;
  resize:vertical;
}
.wizard-paste-textarea:focus{outline:2px solid var(--accent);outline-offset:1px;background:#fff}
.wizard-paste-name{max-width:520px}
.wizard-paste-name input{display:block;width:100%;margin-top:8px;padding:10px;border:1px solid #bdc9d8;border-radius:7px}
.wizard-paste-submit{align-self:flex-start;padding:11px 22px;font-weight:600}
@media(max-width:760px){.wizard-paste-name{max-width:none}}

/* BMC 022.36 (Roadmap-Punkt 5, Stufe 1): Bauteildatenblatt-Layout - Drag-and-drop-Editor
   im Admincenter sowie der Grid-Wrapper fuer das ausdruecklich aktivierte "Eigene Layout"
   auf der Druckseite selbst (`case 'print'`). Im Standardlayout wird dieser Wrapper gar
   nicht gerendert, daher hat er auf das bisherige Erscheinungsbild keinen Einfluss.
   Print-Ansicht: max. 12 Spalten, damit auch schmale Bloeche (25 %) nebeneinander passen.*/
.catalog-print-canvas{display:grid;grid-template-columns:repeat(12,1fr);gap:18px;align-items:start}
.catalog-print-block{min-width:0}
/* BMC 022.78 (Roadmap-Punkt 5, Stufe 2): Zwischenueberschrift auf der gemeinsamen
   Druckausgabe-Layout-Seite, trennt die Karten fuer Bauteildatenblatt und Bauteilkatalog
   optisch voneinander. Der Grid-Wrapper selbst (.catalog-print-canvas/.catalog-print-block)
   wird fuer die Bauteil-Seiten des Katalogs bewusst wiederverwendet statt dupliziert. */
.catalog-print-layout-subheading{margin:26px 0 10px;padding-top:18px;border-top:1px solid var(--line)}
.catalog-print-layout-mode{display:flex;flex-direction:column;gap:10px}
.catalog-print-layout-mode-option{display:flex;align-items:baseline;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;cursor:pointer}
.catalog-print-layout-mode-option:has(input:checked){border-color:var(--accent);background:#eaf3fb}
.catalog-print-layout-mode-option small{color:var(--muted-2);font-weight:400}
.catalog-print-layout-blocks{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.catalog-print-layout-block{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1px solid var(--line);border-radius:9px;background:#fff;cursor:grab}
.catalog-print-layout-block.is-dragging{opacity:.4}
.catalog-print-layout-block strong{flex:1 1 auto}
.catalog-print-layout-width{display:flex;align-items:center;gap:6px;font-weight:600;font-size:13px}
.catalog-print-layout-width select{padding:6px 8px;border:1px solid #bdc9d8;border-radius:6px}
.catalog-print-layout-block .catalog-drag-handle{display:inline-grid;grid-template-columns:1fr 1fr;gap:2px;width:14px;height:20px;flex:0 0 auto;cursor:grab}
.catalog-print-layout-block .catalog-drag-handle i{width:4px;height:4px;border-radius:50%;background:#9eacbc}
/* BMC 022.80 (Live-Vorschau im Editor, Nutzerauftrag 24.07.2026 "man muss sehen was man tut
   wysiwyg quasi"): Vorschau-Panel mit Iframe fuer beide Layout-Formulare auf dieser Seite -
   zeigt den (noch ungespeicherten) Entwurf live, siehe zugehoeriges JS am Ende jedes Formulars. */
.catalog-layout-preview{margin-bottom:20px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.catalog-layout-preview-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:#f2f5f9;border-bottom:1px solid var(--line);font-size:13px;color:#51606f}
.catalog-layout-preview-frame-wrap{background:#e7ebf1;padding:16px;display:flex;justify-content:center}
.catalog-layout-preview iframe{width:100%;max-width:760px;height:640px;border:1px solid #c7d0da;border-radius:4px;background:#fff}
@media(max-width:900px){.catalog-print-canvas{grid-template-columns:1fr}.catalog-print-block{grid-column:1/-1!important}}

/* BMC 022.39 (Nutzerrueckmeldung 23.07.2026): Hover-Hinweis auf roten Rahmen umgestellt -
   deutlicher erkennbar als die vorherige dezente Blaufaerbung.
   BMC 022.41 (Nutzerrueckmeldung 24.07.2026): Rahmen etwas dezenter (schwaechere Fuellung,
   duennerer Strich). */
.component-svg-clickable-layers .layer-click-target{cursor:pointer}
.component-svg-clickable-layers .layer-click-target:hover{fill:rgba(220,38,38,.05);stroke:#dc2626;stroke-width:1.25px}

/* BMC 022.96 (Nutzerauftrag 25.07.2026): das Skizzen-Drag&Drop (BMC 022.92-022.94, Punkt 10)
   wurde auf Nutzerwunsch wieder entfernt - die zugehoerigen Klassen .layer-sketch-drag-source,
   .sketch-drag-ghost und .sketch-insert-line sind damit ebenfalls entfallen. Der Klick-zum-
   Bearbeiten-Hinweis (.component-svg-clickable-layers .layer-click-target:hover, oben) bleibt
   unveraendert bestehen. */

/* BMC 022.40 (Nutzerrueckmeldung 24.07.2026): "+"-Einfuegepunkte an den Schichtgrenzen der
   Skizze, analog zu "+ Schicht hier einfuegen" in der Tabelle.
   BMC 022.41 (Nutzerrueckmeldung 24.07.2026): das Plus-Icon ist im Ruhezustand unsichtbar und
   erscheint erst beim Hover ueber die (immer vorhandene) groessere, unsichtbare Trefferflaeche
   '.layer-insert-hit' - haelt die Skizze im Ruhezustand aufgeraeumt. */
.component-svg-insertable-layers .layer-insert-target{cursor:pointer}
.component-svg-insertable-layers .layer-insert-target .layer-insert-icon{opacity:0;transition:opacity .12s ease}
.component-svg-insertable-layers .layer-insert-target:hover .layer-insert-icon{opacity:1}
.component-svg-insertable-layers .layer-insert-target .layer-insert-icon circle,
.component-svg-insertable-layers .layer-insert-target .layer-insert-icon line{transition:fill .12s ease,stroke .12s ease}
.component-svg-insertable-layers .layer-insert-target:hover .layer-insert-icon circle{fill:#16a34a;stroke:#15803d}
.component-svg-insertable-layers .layer-insert-target:hover .layer-insert-icon line{stroke:#fff}

/* BMC 022.41 (Nutzerrueckmeldung 24.07.2026): zusaetzliche Absicherung, falls die interaktive
   Bauteilseite selbst je gedruckt wird (z. B. Strg+P) - die Bearbeiten-/Einfuege-Zusaetze aus
   BMC 022.38/022.40 duerfen unter keinen Umstaenden in einem Ausdruck erscheinen. Strukturell
   ohnehin bereits ausgeschlossen, da component_svg() 'clickable_layers'/'insertable_layers' nur
   am interaktiven Bauteil-Editor setzt (siehe dortige Kommentare) - diese Regel ist ein
   zusaetzliches, unabhaengiges Sicherheitsnetz auf CSS-Ebene. */
@media print{
    .layer-click-target,.layer-insert-target{display:none!important}
}

/* BMC 022.42 (Nutzerauftrag 24.07.2026): zentrale Schriftart fuer die Druckausgabe
   (Bauteildatenblatt + Bauteilkatalog-PDF), gesteuert ueber die CSS-Variable
   --catalog-font-family, die serverseitig aus der Admincenter-Einstellung
   'catalog_font_family' (catalog_font_family_stack()) gesetzt wird. Fallback bleibt Arial,
   damit sich ohne gesetzte Variable am bisherigen Verhalten nichts aendert. */
.sheet{font-family:var(--catalog-font-family,Arial,Helvetica,sans-serif)}

/* BMC 022.42: kleiner Rich-Text-Editor (fett/kursiv/Farbe/Groesse/hoch-/tiefgestellt) fuer die
   Textfelder der Druckausgabe (Bemerkungen, Allgemeines, Begriffe, Bearbeiter-/Erstellerinfo).
   Arbeitet auf einem contenteditable-Element; der sanitisierte HTML-Inhalt wird bei jeder
   Aenderung in ein verstecktes <textarea>/<input> synchronisiert, das tatsaechlich mit dem
   Formular abgeschickt wird (siehe app.js initRichTextFields()). */
.richtext-field{display:flex;flex-direction:column;gap:4px}
.richtext-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:3px;padding:4px;background:#f2f5f9;border:1px solid #bdc9d8;border-radius:7px 7px 0 0;border-bottom:0}
.richtext-toolbar button{background:#fff;color:#243447;border:1px solid #bdc9d8;border-radius:5px;padding:4px 8px;font-size:13px;line-height:1;cursor:pointer;min-width:26px}
.richtext-toolbar button:hover{background:#eef2f7}
.richtext-toolbar button.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.richtext-toolbar button[data-rt-cmd="bold"]{font-weight:700}
.richtext-toolbar button[data-rt-cmd="italic"]{font-style:italic}
.richtext-toolbar button[data-rt-cmd="underline"]{text-decoration:underline}
.richtext-toolbar input[type="color"]{width:28px;height:26px;padding:0;border:1px solid #bdc9d8;border-radius:5px;background:#fff;cursor:pointer}
.richtext-toolbar select{margin:0;padding:4px 6px;width:auto;font-size:12px;border:1px solid #bdc9d8;border-radius:5px}
.richtext-toolbar .richtext-sep{width:1px;align-self:stretch;background:#bdc9d8;margin:0 2px}
.richtext-toolbar .richtext-color-apply{font-size:12px;padding:4px 7px;min-width:auto}
.richtext-toolbar .richtext-recent-colors{display:inline-flex;gap:3px;align-items:center}
.richtext-toolbar .richtext-recent-colors button{width:18px;height:18px;padding:0;border:1px solid #bdc9d8;border-radius:4px;cursor:pointer;min-width:0}
.richtext-toolbar .richtext-recent-colors button:hover{border-color:var(--ink)}
.richtext-editable{min-height:70px;padding:8px 10px;border:1px solid #bdc9d8;border-radius:0 0 7px 7px;background:#fff;font-size:14px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.richtext-editable:focus{outline:2px solid var(--ink);outline-offset:-1px}
.richtext-editable sup,.richtext-editable sub{line-height:0}
.richtext-field.compact .richtext-editable{min-height:40px}

/* BMC 022.44 (Nutzerauftrag 24.07.2026): zentrale Formatierung der Bauteilkatalog-
   Kapitelueberschriften ("1 Allgemeines" bis "3 Begriffe" sowie die Bauteilgruppen-
   Ueberschriften wie "4 Aussenwaende") ueber eine gemeinsame Klasse statt der bisher
   uneinheitlichen h1/h2-Tags (Allgemeines war zuvor als h2 kleiner als die anderen als h1) -
   Selektor bewusst mit hoeherer Spezifitaet als ".catalog-page h1"/".catalog-page h2", damit die
   Ueberschreibung unabhaengig von der Position im Stylesheet sicher greift. Standardwerte
   (15pt/fett) entsprechen dem bisherigen ueberwiegenden Erscheinungsbild (h1). */
/* BMC 022.62 Nachtrag - margin-top hier (0 8mm) steht NICHT im Widerspruch zur eigentlich
   wirksamen Kopf->Ueberschrift-Regel oben: da .catalog-running-head und diese Ueberschrift
   gewoehnliche Block-Geschwister im selben Fliesskontext von .catalog-page sind, kollabieren
   ihre aneinanderstossenden vertikalen Aussenabstaende (margin-bottom der Kopfzeile / margin-top
   der Ueberschrift) laut CSS-Spezifikation zu EINEM gemeinsamen Abstand = dem groesseren der
   beiden Werte. Da margin-bottom der Kopfzeile (12,7mm, siehe oben) staerker ist als dieser
   margin-top (0-8mm je nach Seite), gewinnt praktisch immer der Kopfzeilen-Wert - per Playwright
   empirisch bestaetigt (getComputedStyle beider Werte + tatsaechlicher gerenderter Abstand). Die
   im Kommentar oben behauptete "Spezifitaet setzt sich unabhaengig von Position durch" gilt nur
   gegenueber anderen NICHT-!important-Regeln; sie wurde hier zusaetzlich durch Margin-Collapsing
   ueberlagert. */
.catalog-document{--catalog-heading-font-size:15pt;--catalog-heading-font-weight:700}
.catalog-page h1.catalog-chapter-heading,
.catalog-page h2.catalog-chapter-heading{
  font-size:var(--catalog-heading-font-size,15pt);
  font-weight:var(--catalog-heading-font-weight,700);
  margin:0 0 8mm;
  display:flex;
  align-items:baseline;
  gap:0;
}
/* BMC 022.62 - Abstand Zahl->Text der Kapitelueberschrift nach Vorlage (Nutzerauftrag
   24.07.2026). Der Wordvorlage-Absatzstil "berschrift1" nutzt keinen festen Abstand zwischen
   Nummer und Text, sondern einen Haengeeinzug (w:ind hanging="851") mit Tab-Stopp bei
   w:pos="851" Twips = 15mm: die Nummer beginnt bei Position 0, der Text springt IMMER zu
   Position 15mm - unabhaengig von der Ziffernbreite (1-stellig oder 2-stellig). Nachgebildet
   durch eine feste Breite der Nummer-Spalte (15mm) statt eines festen Zwischenraums (vorher
   gap:3mm) - dadurch beginnt der Ueberschriftstext strukturell immer an derselben Stelle, wie
   im Word-Tabstopp-Modell, auch wenn spaeter zweistellige Kapitelnummern vorkommen. */
.catalog-chapter-heading .catalog-chapter-number{flex:0 0 15mm}
.catalog-chapter-heading .catalog-chapter-text{flex:1 1 auto}
.catalog-heading-editable{cursor:pointer;border-radius:4px}
.catalog-heading-editable:hover{background:rgba(29,53,87,.06);outline:1px dashed #7c93ad;outline-offset:3px}
.catalog-heading-editable.is-saving{opacity:.5;pointer-events:none}

/* BMC 022.66 (Nutzerauftrag 24.07.2026) - laufende Kopfzeile (Bauvorhaben/Adresse/Stand) direkt
   aus der Katalogvorschau editierbar, analog zu .catalog-heading-editable/.catalog-section-
   editable. Nur im Bildschirm-Vorschaumodus sichtbar (siehe @media print unten), damit der reine
   Ausdruck/PDF unveraendert bleibt. */
.catalog-header-editable{cursor:pointer;border-radius:4px;position:relative}
.catalog-header-editable:hover{background:rgba(29,53,87,.06);outline:1px dashed #7c93ad;outline-offset:3px}
.catalog-header-editable.is-saving{opacity:.5;pointer-events:none}
.catalog-header-editable::after{
  content:"Zum Bearbeiten klicken";
  position:absolute;
  left:0;
  bottom:-4mm;
  z-index:2;
  padding:.6mm 1.2mm;
  border-radius:2mm;
  background:rgba(255,255,255,.92);
  color:#657383;
  font-size:6.5pt;
  line-height:1;
  opacity:0;
  pointer-events:none;
  transition:opacity .15s;
}
.catalog-header-editable:hover::after{opacity:1}
.catalog-header-editable.is-saving::after{content:"Speichert ...";opacity:1}
@media print{
  .catalog-header-editable{cursor:auto}
  .catalog-header-editable:hover{background:none;outline:0}
  .catalog-header-editable::after{display:none!important}
}

/* BMC 022.55 (Nutzerrueckmeldung 24.07.2026) - Bauteilkatalog-Skizze: drei praesentationelle
   CSS-Korrekturen, keine Aenderung an component_svg()/Schraffurlogik/Rechenkern.
   1) "Skizze flieht aus der Zelle": Der Skizzen-Container ist ein Flex-Element; ohne
      min-width:0/min-height:0 verweigert ein Flex-Kind mit intrinsischem Seitenverhaeltnis
      (hier das inline-SVG) das Schrumpfen unter seine "content size" (CSS min-height:auto-Falle),
      wodurch die 88%/96% (senkrecht) bzw. 104%/96% (waagerecht) Vorgaben ignoriert wurden und
      das SVG bis zu ~13-14px oben/unten ueber die Zelle hinausragte. Ausserdem stand die Zelle
      selbst auf overflow:visible - Ueberlauf wurde nicht einmal abgeschnitten. Empirisch mit
      Playwright nachgewiesen (Soll 96% von 332.59px = 319.29px, Ist vorher 360px; nach Fix exakt
      319.28px, keine Ueberdeckung der Kopfzeile mehr).
   2) "Auch unter Summe andere Linienstaerke": zwischen der letzten reellen Schicht-Zeile und dem
      Abstandshalter vor der Summenzeile lagen zwei einzelne .25mm-Trennlinien mit 9mm Luecke
      dazwischen (statt einer durchgehenden Linie wie zwischen den uebrigen Zeilen). Die zweite
      (obere) Linie wird entfernt, sodass nur die Linie direkt ueber der Summe stehen bleibt. */
/* BMC 022.61-Korrektur (Nutzerrueckmeldung 24.07.2026, "die Linie unter Kunstharzputz fehlt ..
   in jeder"): die obige BMC-022.55-Regel entfernte die Linie IMMER unter der letzten reellen
   Schicht-Zeile, weil diese dank des flex-wachsenden Abstandshalters (`.catalog-layer-spacer{
   flex:1 1 auto}`) IMMER unmittelbar vor dem Abstandshalter steht - nicht nur, wenn beide Linien
   eng aneinanderstossen. Bei kuerzeren Schichtenlisten (weniger als die maximale Anzahl Schichten)
   liegt zwischen der letzten Schicht-Zeile und der Linie am Ende des Abstandshalters dadurch eine
   grosse, unbegrenzte Luecke - die Zeile wirkt "offen"/ohne Abschlusslinie. Fix: die Linie bleibt
   jetzt an der letzten Schicht-Zeile (dort, wo der reelle Inhalt endet), der Abstandshalter
   bekommt stattdessen KEINE eigene Linie mehr - dadurch weiterhin nur eine durchgehende Linie
   (kein Doppel-Strich wie vor BMC 022.55), aber jetzt an der richtigen, erwartbaren Stelle direkt
   unter der letzten Schicht. */
.catalog-component-page .catalog-layer-spacer{
  border-bottom:0!important;
}

/* BMC 022.56 (Nutzerrueckmeldung 24.07.2026) - drei weitere Feinschliff-Korrekturen an der
   Bauteilkatalog-Druckseite, wieder rein CSS/Markup-seitig (colgroup), kein Rechenkern/
   component_svg()/Schraffurlogik beruehrt.
   1) Randlinien "verschwanden": mehrere fruehere "finale" Patches (u.a. BMC 021.88) hatten die
      Aussenlinie unter Skizze/Aufbau-Tabelle, die Linie unter der Kopfzeile "Skizze zum
      Bauteil:"/"Aufbau ..." und die Linie ueber "Bemerkungen:" schrittweise von .35mm auf .25mm
      verduennt - beim Druck/Export wirkte das als "fehlende" bzw. zu duenne Linie. Auf .35mm
      zurueckgesetzt (siehe Aenderungen weiter oben bei .catalog-build-grid/.catalog-build-head/
      .catalog-remarks).
   2) Eigenschaften-Tabelle links/rechts nicht mit der Skizzen-/Aufbau-Spalte ausgerichtet, dazu
      moeglicher Darstellungsfehler bei den beiden rechten Spalten (Bauteilanforderungen/
      Bauteilleistung): Ursache u.a. eine CSS-Regel, die per :nth-child(3)/:nth-child(4) auf die
      TH-Elemente der Kopfzeile zielte - durch das colspan=2 auf "Eigenschaften" zaehlt dort aber
      bereits das 2. th "Bauteilanforderungen" (nicht das 3.), wodurch dessen Kopfzellen-Breite nie
      gesetzt wurde. Statt die verstreuten :nth-child-Regeln zu entwirren, bekommt die Tabelle in
      `case 'project_catalog_pdf':` jetzt ein eigenes <colgroup> (19%/29%/26%/26% - Summe der
      ersten zwei Spalten 48%, exakt gleich der zuletzt gewinnenden Skizzenspalten-Breite im
      .catalog-build-grid darueber, siehe BMC 021.85-Kaskade dort) plus
      table-layout:fixed, nur fuer die gedruckte Katalogseite (`.catalog-component-page
      .catalog-performance`) - andere Vorkommen von `.catalog-performance` (Fenster-/Tuer-Formulare,
      Vorlagen-Editor) sind ausserhalb von `.catalog-component-page` und bleiben unveraendert. */
.catalog-component-page .catalog-performance{
  table-layout:fixed!important;
}

/* Fusszeile: nur die reine Seitenzahl unten, nicht "Seite N von Gesamt" (Nutzerauftrag 24.07.2026,
   "Seitenzahlen unten nur die Seiten keine Gesamtseiten"). Bisher zeigte der Fuss ausschliesslich
   den zweiten <span> ("Seite N von Total"); jetzt umgekehrt: nur der erste <span> (reine Zahl N). */
.catalog-component-continuation .catalog-running-foot{
  display:block!important;
}
.catalog-running-foot{
  display:block!important;
  text-align:right!important;
}
.catalog-running-foot span:first-child{
  display:inline!important;
  font-size:9pt!important;
}
.catalog-running-foot span:last-child{
  display:none!important;
}

/* BMC 022.57 (Nutzerrueckmeldung 24.07.2026, "Vorschau hellgrau in den Zellen fehlt noch") -
   gegen die verbindliche Word-Vorlage abgeglichen (250612_KUERZEL_Bauteilkatalog...docx):
   dort tragen dort ALLE Zellen unter der Kopfzelle "Eigenschaften" (colspan 2 - also sowohl die
   Kurz-Spalte "Brandschutz"/"Statik"/... als auch die Beschreibungs-Spalte
   "Feuerwiderstandsfaehigkeit"/... ) eine helle Fuellung #F2F2F2 (w:shd), waehrend
   "Bauteilanforderungen"/"Bauteilleistung" weiss bleiben. Bisher hatte die Druckausgabe dort gar
   keine Hintergrundfarbe gesetzt. Nur fuer die gedruckte Katalogseite.
   BMC 022.59-Korrektur (Nutzerrueckmeldung 24.07.2026, "Zelle rechts neben Trittschallpegel ist
   hellgrau"): die Zeile "Trittschallpegel" hat wegen rowspan="2" auf der vorherigen
   "Schallschutz"-Zeile nur 3 statt 4 <td>-Elemente - dadurch traf td:nth-child(2) dort in
   Wirklichkeit die Bauteilanforderungen-Datenzelle (logische Spalte 3), nicht die
   Beschreibungsspalte (logische Spalte 2). Fix: td:nth-child(2) nur noch anwenden, wenn die Zeile
   mindestens 3 weitere Geschwister danach hat (also 4 <td> insgesamt), ueber
   :nth-last-child(n+3) - trifft dann ausschliesslich normale 4-Spalten-Zeilen. */
.catalog-component-page .catalog-performance td:nth-child(1){
  background:#f2f2f2;
}
.catalog-component-page .catalog-performance td:nth-child(2):nth-last-child(n+3){
  background:#f2f2f2;
}

/* BMC 022.58 (Nutzerauftrag 24.07.2026, "im gleichen Stil wie Allgemeines... muss klar sein
   dass es darunter ist, Struktur wie im Ausdruck") - die bisher immer offen/starr im Formular
   stehenden Stammdaten (Titel, Adresse, Beteiligte, Planungsstand ...) bekommen dasselbe
   Aufklapp-/Bearbeiten-Muster wie "Allgemeines"/"Unterlagen"/"Begriffe" (Klasse
   .catalog-general-editor, bereits vorhanden). Damit die Kapitel 1/2/3 sichtbar UNTER den
   Stammdaten stehen (wie im Ausdruck: Deckblatt zuerst, danach Kapitel 1/2/3), werden sie in
   einer eingerueckten Gruppe mit duennem linken Rand zusammengefasst - derselbe visuelle Kniff
   wie beim bereits vorhandenen "masterdata-subaccordion"-Muster (Monatsreferenzklima), nur ohne
   dessen Detailstile zu uebernehmen, um bestehende Nutzung dort nicht zu beeinflussen. */
.catalog-chapter-group{
  margin-left:18px;
  padding-left:16px;
  border-left:2px solid #d8dee7;
  display:flex;
  flex-direction:column;
  gap:12px;
}
.catalog-general-editor-body.form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
  padding:16px;
}
.catalog-general-editor-body.form-grid label{
  display:block;
}

/* BMC 022.61 (Nutzerrueckmeldung 24.07.2026, "das Feld rechts neben Trittschallpegel muss auch
   mittig ausgerichtet sein") - dritte Auspraegung derselben rowspan/nth-child-Fehlerklasse aus
   BMC 022.56 (Spaltenbreiten) und BMC 022.59 (Graufuellung): die Basisregel
   ".catalog-performance td:nth-child(n+3){text-align:center}" zentriert die Werte-Spalten
   (Bauteilanforderungen/Bauteilleistung). In der durch rowspan="2" verkuerzten
   Trittschallpegel-Zeile (nur 3 statt 4 <td>) landet die Bauteilanforderungen-Zelle aber auf
   nth-child(2), nicht nth-child(3) - "nth-child(n+3)" trifft sie deshalb nicht, sie blieb
   linksbuendig (Standard) statt zentriert. Fix nur fuer die Wand-Variante mit <colgroup>
   (".catalog-performance-fixed-grid", siehe BMC 022.60) ueber "nth-last-child(-n+2)" - trifft
   dort strukturell IMMER die letzten zwei Zellen (Bauteilanforderungen+Bauteilleistung), egal ob
   die Zeile 3 oder 4 <td> hat. Bewusst NICHT als allgemeine Regel fuer alle
   .catalog-performance-Tabellen, da andere Varianten (Fenster/Tueren) teils nur 3 Spalten OHNE
   Bauteilleistung haben, wo "die letzten zwei Zellen" die Beschreibungsspalte mit eingeschlossen
   haette. */
.catalog-component-page .catalog-performance-fixed-grid td:nth-last-child(-n+2){
  text-align:center;
}

/* BMC 022.69 (Nutzerauftrag 24.07.2026, Versionierungslogik je Leistungsphase) - Versions-Historie
   in der Bauteilkatalog-Reihenfolge-Karte: je Leistungsphase "leicht eingerueckt" (Nutzerwunsch),
   die einzelnen Versand-/Arbeitsstaende darunter nochmals eingerueckt. Schmalere Dialogbreite fuer
   den einfachen "Neue Leistungsphase starten"-Dialog (die generische .layer-dialog-Breite von
   920px ist fuer zwei Formularfelder ueberdimensioniert). */
/* BMC 022.99 (Nutzerauftrag 25.07.2026, Screenshot: "das muss intuitiver werden und auch
   wesentlich organisierter uebersichtlicher und auch ansehnlicher"): Versions-Historie neu als
   Kartenliste statt einer flachen, gleichfoermigen Aufzaehlung - jede Leistungsphase (auch wenn
   ihr Name sich wiederholt, z. B. zwei "LP 3"-Durchlaeufe) bekommt eine eigene, klar
   abgegrenzte Karte mit sichtbarem Start-Datum zur Unterscheidung. */
.catalog-phase-history{
  margin-top:14px;
  padding-top:12px;
  border-top:1px solid #e5e7eb;
}
.catalog-phase-history-title{
  margin:0 0 10px;
  font-size:1em;
}
.catalog-phase-history-list{
  display:flex;
  flex-direction:column;
  gap:10px;
}
.catalog-phase-history-card{
  border:1px solid #e5e7eb;
  border-radius:10px;
  padding:10px 12px;
  background:#f8fafc;
}
.catalog-phase-history-card.is-current{
  border-color:#94a3b8;
  background:#eef2ff;
}
.catalog-phase-history-card-head{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:6px 10px;
}
.catalog-phase-history-card-title{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:4px 8px;
}
.catalog-phase-history-card-started{
  font-size:.85em;
  color:#64748b;
  font-weight:400;
}
.catalog-phase-history-versions{
  list-style:none;
  margin:8px 0 0;
  padding:0;
  font-size:.92em;
  color:#475569;
  display:flex;
  flex-direction:column;
  gap:5px;
}
.catalog-phase-history-versions li{
  margin:0;
}
.catalog-phase-history-versions li.is-draft{
  display:flex;
  align-items:center;
  gap:8px;
}
.catalog-phase-history-version-pill{
  display:inline-block;
  min-width:1.6em;
  text-align:center;
  padding:1px 8px;
  border-radius:999px;
  background:#334155;
  color:#fff;
  font-weight:700;
  font-size:.85em;
  line-height:1.5;
}
.catalog-phase-history-version-pill.is-draft{
  background:#c1121f;
}
.catalog-phase-history-version-note{
  color:#c1121f;
  font-weight:600;
}
.catalog-phase-history-send-meta{
  margin-left:8px;
}
.catalog-phase-history-no-snapshot{
  color:#94a3b8;
  font-size:.9em;
  font-style:italic;
}
.catalog-phase-history-empty{
  color:#94a3b8;
  font-style:italic;
}
/* BMC 022.100 (Nutzerauftrag 26.07.2026) - uebersprungene HOAI-Phase (synthetischer
   Platzhalter, siehe catalog_phase_history_with_gaps() in index.php): gestrichelter Rahmen,
   kein Klapp-/Startdatum-Bereich. */
.catalog-phase-history-card.is-skipped{
  background:#fafafa;
  border-style:dashed;
}
.catalog-phase-history-skipped-note{
  color:#9a9a9a;
  font-style:italic;
  font-size:.9em;
}
/* BMC 022.100 - aeltere Karten (nicht "is-current") sind standardmaessig eingeklappt; die
   GESAMTE Kopfzeile ist Klickziel zum Auf-/Zuklappen (siehe Nutzerrueckmeldung: "Aufklappen
   nicht nur auf Pfeil"), der Pfeil ist rein dekorativ und besitzt bewusst kein eigenes
   Klick-Verhalten (pointer-events:none). */
.catalog-phase-history-card:not(.is-current) .catalog-phase-history-card-head{
  cursor:pointer;
  border-radius:8px;
  margin:-4px -6px;
  padding:4px 6px;
}
.catalog-phase-history-card:not(.is-current) .catalog-phase-history-card-head:hover{
  background:#eef2f7;
}
.catalog-phase-history-card:not(.is-current) .catalog-phase-history-card-head:focus-visible{
  outline:2px solid #1d5f9a;
  outline-offset:2px;
}
.catalog-phase-history-toggle-arrow{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  width:26px;
  height:26px;
  border:1px solid #cbd5e1;
  border-radius:999px;
  background:#fff;
  color:#475569;
  font-size:.9em;
  pointer-events:none;
}
.catalog-phase-history-toggle-arrow-glyph{
  display:inline-block;
  transition:transform .15s ease;
}
.catalog-phase-history-card-head[aria-expanded="true"] .catalog-phase-history-toggle-arrow-glyph{
  transform:rotate(90deg);
}
.catalog-phase-history-card:not(.is-current) .catalog-phase-history-versions{
  display:none;
}
.catalog-phase-history-card:not(.is-current).is-open .catalog-phase-history-versions{
  display:flex;
}
/* BMC 022.100 - kompakte Drag&Drop-Ablage fuer den je Versand hinterlegten Bauteilkatalog-PDF,
   ersetzt das bisherige schlichte Datei-Feld + "PDF hochladen"-Button. */
.catalog-phase-history-pdf-drop{
  display:flex;
  align-items:center;
  gap:6px;
  border:2px dashed #9fb2c8;
  border-radius:10px;
  background:var(--soft-bg,#f8fafc);
  padding:6px 10px;
  font-size:.82em;
  color:#64748b;
  cursor:pointer;
  white-space:nowrap;
}
.catalog-phase-history-pdf-drop.is-dragover{
  border-color:#1d5f9a;
  background:#eef6ff;
  color:#1d5f9a;
}
.catalog-phase-history-pdf-drop-text{
  font-weight:600;
}
.catalog-phase-history-pdf-drop input[type="file"]{
  display:none;
}
.catalog-phase-history-send-actions .button.icon-btn{
  display:inline-flex;
  align-items:center;
  gap:5px;
}
.catalog-new-phase-dialog{
  width:min(560px, calc(100vw - 28px));
}
.catalog-new-phase-order-choice{
  margin:14px 18px;
  padding:10px 12px;
  border:1px solid #e5e7eb;
  border-radius:10px;
}
.catalog-new-phase-order-choice legend{
  font-weight:700;
  padding:0 4px;
}
.catalog-new-phase-order-choice .checkbox-label{
  align-items:flex-start;
  margin:6px 0;
}

/* BMC 022.71 (Nutzerauftrag 24.07.2026) - je Versand-Eintrag in der Versions-Historie: Label plus
   "Wiederherstellen"/"PDF hochladen"/"PDF öffnen" nebeneinander statt darunter, damit die Liste
   trotz der zusaetzlichen Aktionen kompakt bleibt. */
.catalog-phase-history-send{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px 10px;
  justify-content:space-between;
}
.catalog-phase-history-send-actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:6px;
}
.catalog-phase-history-send-actions form.inline-form{
  display:flex;
  align-items:center;
  gap:6px;
  margin:0;
}
.catalog-phase-history-pdf-upload input[type="file"]{
  max-width:150px;
  font-size:.85em;
}
/* BMC 022.104 (Nutzerauftrag 26.07.2026, RC1-Thema 2 "gedrungen"/Admincenter-Regler): Skizzenbreite
   (Anteil an der Skizze/Tabelle-Spaltenaufteilung) und Skizzenhoehe (getrennt liegend/stehend)
   sind jetzt ueber Admincenter-Einstellungen steuerbar (siehe --catalog-sketch-width-percent/
   --catalog-sketch-height-horizontal/-vertical, gesetzt auf .catalog-document in
   `case 'project_catalog_pdf':`). Bewusst als LETZTE Regel der Datei mit gleicher Spezifitaet +
   !important wie die bestehenden, historisch gewachsenen Kaskaden-Ueberschreibungen weiter oben -
   das gewinnt bei gleichem Gewicht ueber die Quellreihenfolge, ohne dass jede aeltere Regel
   einzeln aufgespuert und angepasst werden muss. Fehlt eine Variable (z. B. andere
   Druckansichten ohne .catalog-document-Wrapper), greift der bisherige, unveraenderte Fallback-
   Wert nach dem Komma.
*/
.catalog-document .catalog-component-page .catalog-build-grid{
  grid-template-columns:var(--catalog-sketch-width-percent,45%) calc(100% - var(--catalog-sketch-width-percent,45%))!important;
}
.catalog-document .catalog-component-page .catalog-sketch-vertical{
  height:var(--catalog-sketch-height-vertical,101mm)!important;
}
/* BMC 022.105 (Nutzerfeedback 26.07.2026: "liegende Bauteile sehen immer noch nicht gut aus",
   Entscheidung "eigene, nur fuer liegende Bauteile geltende Loesung"): eine liegende Skizze
   (Dach/Decke/Boden) ist von Natur aus SEHR breit und WENIG hoch (typ. Seitenverhaeltnis > 1,8:1).
   Die bisherige Regel erzwang eine FESTE Hoehe (101mm) unabhaengig von der erreichbaren Breite -
   die eigentliche Skizze (per component_svg() im eigenen Seitenverhaeltnis gezeichnet) hat den
   erzwungenen Kasten dadurch nur zu einem kleinen Teil ausgefuellt (der Rest blieb Leerraum), und
   alles darin - inkl. der gerade erst vergroesserten Positionsnummern - wurde entsprechend winzig
   mitskaliert. Empirisch mit einer eigenen Testseite (echtes app.css + reale Bodenplatten-Skizze,
   per Playwright/Chromium gerendert und die berechneten Groessen abgefragt) nachvollzogen: bei
   fester Hoehe blieb der groesste Teil der Box ungenutzt.
   Jetzt: die Box bekommt height:auto (richtet sich nach ihrem tatsaechlichen Inhalt) mit der
   bisherigen Hoehen-Einstellung nur noch als OBERGRENZE (max-height) statt als erzwungener,
   fester Wert - und die SVG selbst bekommt width:100%/height:auto statt der festen
   Prozent-Kombination aus BMC 021.84/021.87 (die fuer eine BREITE Skizze in einer SCHMALEN,
   hochformatigen Box gedacht war und hier das eigentliche Problem war). Dadurch nutzt die Skizze
   ihre - dank der jetzt breiteren Skizzenbreite-Einstellung fuer liegende Bauteile - verfuegbare
   Breite voll aus und wird dabei automatisch so hoch wie ihr eigenes Seitenverhaeltnis es
   vorgibt, statt in einer viel zu hohen Box zu "schwimmen". Gilt bewusst NUR fuer liegende
   Bauteile im vollen Bauteilkatalog (.catalog-sketch-sheet-image.catalog-sketch-horizontal) -
   stehende Waende (schon bisher ein gut passendes Hochformat-Seitenverhaeltnis) und alle anderen
   Sketch-Kontexte (Editor, Datenblatt, Helena-Export) bleiben unveraendert. */
.catalog-document .catalog-component-page .catalog-sketch-sheet-image.catalog-sketch-horizontal{
  height:auto!important;
  max-height:var(--catalog-sketch-height-horizontal,101mm)!important;
}
.catalog-document .catalog-component-page .catalog-sketch-sheet-image.catalog-sketch-horizontal .component-svg-sheet-image,
.catalog-document .catalog-component-page .catalog-sketch-sheet-image.catalog-sketch-horizontal .component-svg-catalog{
  width:100%!important;
  height:auto!important;
  max-width:100%!important;
  max-height:100%!important;
  min-width:0!important;
  min-height:0!important;
  transform:none!important;
}
.catalog-document .catalog-component-page .catalog-sketch-sheet-image.catalog-sketch-horizontal .component-svg-catalog text{
  font-size:12px!important;
  font-weight:700!important;
  paint-order:stroke!important;
  stroke:#fff!important;
  stroke-width:2px!important;
  stroke-linejoin:round!important;
}
/* BMC 022.106 (Nutzerfeedback 26.07.2026, Screenshot Holzbauwand AW5):
   1) "Linie zwischen 4a und 4b muss nicht fett sein, soll keine durchgezogene Linie haben":
      seit BMC 022.53 sollte diese Trennlinie eine duenne, helle gepunktete Linie sein (siehe
      ".catalog-layer-row-inhomogeneous-b{border-top:.1mm dotted #b7bcc2!important}" weiter
      oben) - tatsaechlich gewinnt aber eine AELTERE, staerker spezifische Regel
      (".catalog-component-page .catalog-layer-row-inhomogeneous + .catalog-layer-row-
      inhomogeneous{border-top:.25mm solid #222!important}", 3 Klassen vs. 2) und zeichnet
      weiterhin eine volle schwarze Linie - der BMC-022.53-Fix hat nie gegriffen. Hier mit
      einer noch spezifischeren Regel (3 Klassen wie das Original, aber am Ende der Datei)
      endgueltig auf die duenne gepunktete Linie zurueckgesetzt.
   2) "Oberhalb der Summe fehlt eine Linie": bei kurzen Schichtenlisten (deutlich weniger als
      die maximal moegliche Anzahl Schichten) liegt zwischen der letzten Schicht-Zeile und der
      Summenzeile eine grosse, durch den flex-wachsenden Abstandshalter (.catalog-layer-spacer)
      erzeugte Luecke OHNE jede Linie - die Summe wirkt "freischwebend". Die Summenzeile
      bekommt jetzt selbst eine obere Trennlinie, unabhaengig von der Groesse dieser Luecke. */
.catalog-document .catalog-component-page .catalog-layer-row-inhomogeneous-b.catalog-layer-row-inhomogeneous{
  border-top:.1mm dotted #b7bcc2!important;
}
.catalog-document .catalog-component-page .catalog-layer-row.sum{
  border-top:.35mm solid #222!important;
}
.catalog-sketch-settings-grid{display:flex;flex-direction:column;gap:14px;max-width:520px}
.catalog-sketch-settings-grid label{display:flex;flex-direction:column;gap:6px;font-weight:600}
.catalog-sketch-settings-grid input[type="range"]{width:100%}
.catalog-sketch-settings-grid output{font-weight:400;color:#526173;font-size:.9em}

/* BMC 022.112 (Nutzerauftrag 27.07.2026, "Zur Abfolge..."): Reiter/Warnung fuer die "Normierte
   Bauteile"-Spur sowie der neue Umwandlungs-Bildschirm je Bauteil. */
.catalog-track-switcher{flex-direction:column;align-items:flex-start;gap:10px}
.catalog-track-tabs{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.catalog-track-warning{margin:0;width:100%}
/* BMC 022.147 (Nutzerauftrag 28.07.2026, "ja um den Rahmen"): auffaelliger oranger Rahmen um die
   komplette Projektseite, solange die Spur "Normierte Bauteile" aktiv ausgewaehlt ist - der
   bestehende Warnhinweisbalken (.catalog-track-warning oben) bleibt dabei unveraendert bestehen. */
.catalog-track-frame-normiert{border:3px solid #f59e0b;border-radius:16px;padding:18px;margin-bottom:18px}
@media(max-width:640px){.catalog-track-frame-normiert{padding:12px;border-radius:12px}}
.norm-convert-sticky{position:sticky;top:64px;z-index:12;background:#fff}
.norm-convert-metrics{display:flex;gap:24px;flex-wrap:wrap;margin-top:10px}
.norm-convert-metric{min-width:180px}
.norm-convert-metric span{display:block;font-size:12px;color:#657383}
.norm-convert-metric strong{font-size:19px;color:var(--ink)}
.norm-convert-metric.is-good strong{color:#17662d}
.norm-convert-metric.is-bad strong{color:#a62424}
.norm-convert-layer-row{border-left:4px solid var(--line)}
.norm-convert-layer-row.is-open{border-left-color:#f28c28}
.norm-convert-layer-row.is-already-norm{border-left-color:#c3cad2;opacity:.82}
.norm-convert-resolution.is-gelernt{background:#dff4e4;color:#17662d}
.norm-convert-resolution.is-automatisch{background:#e5efff;color:#174b8a}
.norm-convert-resolution.is-manuell{background:#fff0d8;color:#8a5100}
.norm-convert-resolution.is-offen{background:#fde9e9;color:#8f2020}
.norm-convert-resolution.is-bereits_normiert{background:#eef1f4;color:#4a5568}
.norm-convert-slot-form{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-top:10px}
.norm-convert-slot-form label{display:flex;flex-direction:column;gap:4px;font-weight:600;min-width:260px;flex:1}
/* BMC 022.113-Nachbesserung (Nutzerrückmeldung 27.07.2026): eigene, auffaellige Kennzeichnung fuer
   Bauteile mit bereits erfolgter Teiluebernahme ("Aussetzen") - deutlich vom neutralen "bereits
   normiert"-Badge und vom normalen "X/Y zugeordnet"-Knopf abgesetzt. */
.norm-convert-incomplete-badge{background:#fde9e9;color:#8f2020;border:1px solid #f3b9b9;text-decoration:none;cursor:pointer}
.norm-convert-incomplete-badge:hover{background:#fbdada}

/* BMC 022.163 (Hybrid-Neugliederung "Schicht bearbeiten", Nutzerauftrag 29.07.2026 "Dann nimm C -
   ich vertraue dir dabei"): neue Akkordeon-Abschnitte (Darstellung / QNG-LCA / B4 - B4 nutzt die
   bestehende .layer-b4-settings-Klasse zusaetzlich), Zusammenfassungs-Chip und die S/LCA/BP-
   Fusszeile, die im Bearbeiten-Popup jetzt die drei Einbeziehungs-Checkboxen als eigene, immer
   sichtbare Badges zeigt (vom bestehenden Ansatz der S/LCA/BP-Spalte in der Schichtentabelle
   uebernommen, siehe Nutzerauftrag "ich würde die badges LCA/BP/S von der schichtinegabe hier
   übernehmen"). Rein additiv fuer das Bearbeiten-Popup (form.layer-edit-form) - app.js grenzt die
   dafuer angepassten Verhalten (V3.7.108/119/131/018a) bewusst auf dieses Formular ein, der
   add-layer-Dialog bleibt unveraendert. */
.layer-edit-accordion{
  border:1px solid #d7dee6;
  border-radius:10px;
  margin:.6rem 0;
  background:#fff;
}
.layer-edit-accordion>summary{
  cursor:pointer;
  padding:.55rem .8rem;
  display:flex;
  align-items:center;
  gap:.6rem;
  list-style:none;
  font-weight:700;
  font-size:14px;
}
.layer-edit-accordion>summary::-webkit-details-marker{display:none}
.layer-edit-accordion>summary small{font-weight:400;color:#64748b}
.layer-edit-accordion-body{
  padding:0 .8rem .8rem;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:16px;
}
.layer-edit-accordion-body .wide{grid-column:1/-1}
.layer-edit-accordion.is-missing{border-color:#b91c1c}
/* BMC 022.209: vollstaendig zugeordnete Bloecke gruen, wie im Entwurf. */
/* Nutzerauftrag 02.08.2026 ("diese hintergrundfarbe wenn alles vorhanden ist in lca und
   zyklen"): bisher trugen die fertigen Bloecke nur einen gruenen Rahmen und gruene Schrift.
   Der Entwurf vorschau-schicht-neu.html faerbt zusaetzlich die Flaeche (.block.vollstaendig
   background:#f6fefa) - erst dadurch ist auf einen Blick zu sehen, dass Oekobilanz und
   Austausch beide stehen. Gilt fuer beide Bloecke, weil .layer-b4-settings ebenfalls ein
   .layer-edit-accordion ist. */
.layer-edit-accordion.is-ok{border-color:#15803d;background:#f6fefa}
.layer-edit-accordion.is-ok>summary{color:#15803d}
.layer-edit-accordion.is-missing>summary{color:#b91c1c}
.lea-chip{
  font-size:.72rem;
  font-weight:700;
  padding:.15rem .55rem;
  border-radius:999px;
  background:#dcfce7;
  color:#166534;
}
.lea-chip.is-missing{background:#b91c1c;color:#fff}
.layer-edit-flags{
  display:flex;
  /* BMC 022.207: an den erarbeiteten Entwurf angeglichen - dort stehen die Kennzeichen
     enger beieinander (6px statt 8px). */
  gap:6px;
  margin-top:.4rem;
}
.layer-edit-flag{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:.4rem 1rem;
  border-radius:999px;
  background:#eef1f5;
  color:#475569;
  border:1px solid #cbd5e1;
  /* Entwurf: 12,5px / 700, heller Text im inaktiven Zustand. */
  font-weight:700;
  font-size:12.5px;
  color:#94a3b8;
  background:#f1f5f9;
  cursor:pointer;
  gap:0;
}
.layer-edit-flag input{
  position:absolute;
  inset:0;
  opacity:0;
  margin:0;
  width:100%;
  height:100%;
  cursor:pointer;
}
.layer-edit-flag:has(input:checked){
  /* Aktiv im Blauton der Maske, nicht in Fast-Schwarz - wie im Entwurf. */
  background:#1d3557;
  color:#fff;
  border-color:#1d3557;
}
.layer-edit-flag-lca.is-missing{background:#b91c1c!important;color:#fff!important;border-color:#991b1b!important}
/* ".form-grid label" ist spezifischer als ".layer-edit-flag" und setzte die Chips auf
   14px/600 zurueck - diese Regel zieht die Werte des Entwurfs wieder vor. */
.layer-edit-top-actions .layer-edit-flag,
.layer-edit-top-actions .layer-edit-flag .layer-edit-flag-text{
  font-size:12.5px;
  font-weight:700;
}
/* Im Entwurf sind die Kennzeichen gleich breit statt textabhaengig. Die Regeln muessen
   .form-grid.compact .checkbox-label schlagen, die sonst Hoehe, Polsterung und den
   aktiven Hintergrund (hellblau) vorgibt - weisser Text darauf waere unlesbar. */
.layer-edit-top-actions .layer-edit-flag,
.form-grid.compact .layer-edit-top-actions .layer-edit-flag{
  min-width:44px;
  min-height:30px;
  padding:.35rem .7rem;
  background:#f1f5f9;
  border:1px solid #cbd5e1;
}
.layer-edit-top-actions .layer-edit-flag:has(input:checked),
.form-grid.compact .layer-edit-top-actions .layer-edit-flag:has(input:checked){
  background:#1d3557;
  color:#fff;
  border-color:#1d3557;
}
/* BMC 022.163: die Zusatzstoff-Box lag bisher zwischen Pfad A und Pfad B ohne jede eigene
   Gestaltung (siehe Recherche zu app.js) - rein optische Nachbesserung, keine Funktionsaenderung. */
.layer-secondary-material{
  border:1px solid #e2e8f0;
  border-radius:10px;
  padding:.6rem .7rem;
  background:#f8fafc;
}

/* BMC 022.164 (Nutzerauftrag 29.07.2026, Mockup bestaetigt): kompakte Baustoff-A/B-Zeile - beim
   Oeffnen nur Materialname + λ + LCA-Status, Details erst nach Klick. Gilt fuer layer_edit UND
   add_layer (dasselbe .layer-path-panel-a/-b aus V3.7.94, dort ohne Formular-Eingrenzung gebaut). */
.layer-path-summary-row{
  display:none;
  width:100%;
  align-items:flex-start;
  gap:14px;
  border:0;
  background:transparent;
  padding:2px 2px 2px;
  margin:0;
  cursor:pointer;
  text-align:left;
  font:inherit;
  color:inherit;
}
.layer-path-panel.is-lp-collapsed>.layer-path-summary-row{display:flex}
.layer-path-panel.is-lp-collapsed>:not(.layer-path-summary-row){display:none!important}
.layer-path-panel.is-lp-missing{border-color:#b91c1c}
.lp-summary-chip{flex:0 0 auto;font-size:11px;font-weight:800;background:#dbeafe;color:#1d4ed8;padding:4px 10px;border-radius:999px;margin-top:2px}
.layer-path-panel-b .lp-summary-chip{background:#fde7cf;color:#9a4b12}
.lp-summary-main{flex:1;display:flex;flex-direction:column;gap:5px;min-width:0}
/* BMC 022.165 (Nutzerauftrag 29.07.2026, "mach das mal so" zur groesseren/prominenteren
   Materialdarstellung): Name in der eingeklappten Zeile deutlich groesser als zuvor (14.5px ->
   17px), damit er den Hauptteil der Zeilenbreite optisch ausfuellt statt klein mit viel Leerraum
   bis zum Badge zu stehen. */
.lp-summary-main strong{font-size:17px;font-weight:700;color:#17375e;line-height:1.25}
.lp-summary-main small{color:#657383;font-size:12.5px}
.lp-summary-badge{flex:0 0 auto;font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;background:#dcfce7;color:#166534;white-space:nowrap}
.lp-summary-badge.is-missing{background:#b91c1c;color:#fff}
/* BMC 022.167 (Nutzerauftrag 29.07.2026, Mockup bestaetigt: eingeklappte Zeile so reichhaltig wie
   die volle Detailkarte) - Code/Kategorie, Kennwerte und Status-Badges innerhalb der Zeile,
   Farben/Klassen absichtlich identisch zu .material-inline-* (updateMaterialPreview(), Block 1)
   wiederverwendet statt neu erfunden. */
.lp-summary-main .lp-summary-meta{display:block}
.lp-summary-values{display:flex;flex-wrap:wrap;gap:4px 8px;color:#475569;font-size:.82rem}
.lp-summary-badges{display:flex;flex-wrap:wrap;gap:5px}
.lp-summary-badges .material-data-badge,
.lp-summary-badges .lock-badge{font-size:.72rem;padding:3px 7px}
.lp-summary-badges .lock-badge{padding:3px 8px}
.layer-path-chevron{flex:0 0 auto;font-size:15px;color:#94a3b8;line-height:1;margin-top:2px}
.layer-path-panel-head-clickable{cursor:pointer;position:relative;padding-right:22px!important}
.layer-path-panel-head-clickable .layer-path-chevron-collapse{position:absolute;top:0;right:0}

/* BMC 022.166 (Nutzerauftrag 29.07.2026, "Balken Zusatzbaustoff in den Balken des Baustoff A"):
   der bisher eigenstaendige Zusatzstoff-Kasten (BMC 022.165, eigene Zu-/Aufklapp-Gruppe) wird
   jetzt per app.js physisch in Pfad A eingebettet (.layer-secondary-material wird dort zum
   letzten Kind von .layer-path-panel-a). Er hat daher kein eigenes is-lp-collapsed mehr - er ist
   schlicht Teil des normalen, per Blanket-Regel oben (.layer-path-panel.is-lp-collapsed>
   :not(.layer-path-summary-row){display:none}) ausgeblendeten Pfad-A-Inhalts, wenn Pfad A
   eingeklappt ist, und normal sichtbar, wenn Pfad A aufgeklappt ist. */
.layer-secondary-embedded{margin-top:14px}
/* BMC 022.167: gleiches Kopf-Muster wie .layer-path-panel-head (Badge + Ueberschrift + Untertitel
   + Trennlinie), nur mit eigenem "Zusatz"-Badge statt "Pfad A"/"Pfad B" - siehe embedSecondary()
   (app.js). Blaue Palette identisch zu Pfad A, da der Zusatzstoff Teil von Pfad A ist. */
.layer-secondary-embedded-head{
  position:relative;
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  grid-template-rows:auto auto;
  column-gap:10px;
  align-items:center;
  padding:0 0 11px;
  margin-bottom:12px;
  border-bottom:1px solid #dfe9f1;
}
.layer-secondary-embedded-badge{
  grid-row:1/3;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:56px;
  height:26px;
  padding:0 9px;
  border-radius:999px;
  font-size:.68rem;
  font-weight:900;
  letter-spacing:.045em;
  text-transform:uppercase;
  color:#16527d;
  background:#dceefa;
  border:1px solid #a9d0e9;
}
.layer-secondary-embedded-head strong{grid-column:2;display:block;color:#17375e;font-size:.92rem}
.layer-secondary-embedded-head small{grid-column:2;color:var(--muted-2)}

/* Eingeklappte Pfad-A-Zeile: eigene, staendige Zusatzstoff-Zeile (Checkbox "2. Anteil" + ggf.
   Name/Volumenanteil/LCA-Badge), bewusst von der Blanket-Ausblendregel oben ausgenommen - "so
   sieht man im geschlossenen Zustand alles" (Nutzerzitat 29.07.2026). Beim Aufklappen von Pfad A
   verschwindet sie wieder, da der vollstaendige Zusatzstoff-Abschnitt (.layer-secondary-embedded)
   dann ohnehin sichtbar ist. */
.layer-path-secondary-line{
  display:none;
  grid-column:1/-1;
  align-items:center;
  gap:10px;
  width:100%;
  margin-top:8px;
  padding-top:8px;
  border-top:1px dashed #d7e2ec;
}
.layer-path-panel.is-lp-collapsed>.layer-path-secondary-line{display:flex!important}
.layer-path-secondary-line .layer-secondary-toggle{margin:0;flex:0 0 auto;white-space:nowrap}
.layer-path-secondary-summary{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.layer-path-secondary-summary strong{font-size:13.5px;font-weight:700;color:#17375e}
.layer-path-secondary-summary small{color:#657383;font-size:12px}

/* Checkbox "2. Anteil" (Nutzerauftrag: "wenn angehakt lca zuordnung und % anteil eingabe") -
   schaltet Baustoffauswahl + Prozentfeld erst frei, statt sie immer editierbar zu zeigen. Es gibt
   seit BMC 022.166 zwei synchronisierte Exemplare (eingeklappte Zeile + aufgeklappter Abschnitt). */
.layer-secondary-toggle{margin-bottom:.5rem}
.is-lp-toggle-off{opacity:.45;pointer-events:none}

/* Volumenanteil-Hinweis in der Kopfzeile der "Aufteilung der Schicht"-Balkengrafik (bewusst nur
   Text, keine Aenderung an der Balkengrafik selbst - siehe Rueckfrage vom 29.07.2026). */
.stud-share-secondary-badge{font-size:11.5px;font-weight:700;color:#5b21b6;background:#ede9fe;padding:4px 10px;border-radius:999px;white-space:nowrap}


/* BMC 022.168 (Nutzerauftrag 29.07.2026, Mockup bestaetigt: "schmaler machen" + "Breite/
   Achsabstand-Feld reduziert und schmal in der Höhe"): konsolidierte, abschliessende Regeln fuer
   die "Aufteilung der Schicht"-Box und ihr Popover - ueberschreiben bewusst die zahlreichen
   aelteren, einander teils widersprechenden .stud-share-inline-editor-Regeln weiter oben (V3.7.131/
   .132/.155 u.a., dort noch fuer die inzwischen entfernte 4-Spalten-Aufteilung inkl.
   Schichtdicke-Feld ausgelegt - siehe die entfernte .stud-share-thickness-field oben). Statt jede
   einzelne Altregel aufzuspueren, gewinnt diese Regel dank spaeterer Position in der Kaskade bei
   gleicher Spezifitaet automatisch fuer die betroffenen Eigenschaften.
   Das Popover fuer Breite/Achsabstand (+ optionaler manueller Pfad-B-Anteil) ist eine kompakte,
   niedrige Box mit nur 3 Zeilen (Anteil manuell vorgeben, Breite+Achsabstand nebeneinander,
   Aktionen) statt der vorherigen breiten Mehrspalten-Karte - der Fokus liegt bewusst auf
   reduzierter HÖHE (Nutzerformulierung: "reduziert und schmal in der Höhe"), nicht auf einer
   eigenen Breitenbegrenzung. */
/* BMC 022.168-Korrektur (Live-Rueckmeldung 29.07.2026, Screenshot mit Markierung: "volle
   breite"): die zuvor hier gesetzte max-width:480px liess neben der Box unschoenen Leerraum
   entstehen, da Kopfleiste und Pfad-A/B-Kacheln daneben weiterhin volle Breite nutzen. Die Box
   nimmt jetzt wieder die volle verfuegbare Breite ein wie alle anderen Elemente - der eigentliche
   Reflow-Bugfix (.stud-share-inline-editor auf flex-column, siehe unten) bleibt davon unberuehrt
   und verhindert weiterhin das Umbrechen bei schmalen Breiten. */
.stud-share-inline-editor{
  display:flex;
  flex-direction:column;
  gap:8px;
  align-items:stretch;
  padding:10px 12px;
}
.stud-share-inline-editor > .stud-layer-dimensions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  width:100%;
  flex:none;
  justify-content:stretch;
}
.stud-share-inline-editor > .stud-share-inline-actions{
  justify-content:flex-end;
  align-self:auto;
}
@media(max-width:420px){
  .stud-share-inline-editor > .stud-layer-dimensions{grid-template-columns:1fr}
}

/* BMC 022.169 (Nutzerauftrag 29.07.2026, Screenshot mit durchgestrichener Zeile: "eine benennung
   kann weg dafuer die mit allen angaben die dann im eingeklappten zustand ebenfalls angezeigt
   werden ... Baustoff aendern muss dann natuerlich in diese verbleibende Kachel wandern"):
   .material-current-assignment (aus enhance() in app.js, gemeinsame Komponente fuer Pfad A,
   Pfad B, Zusatzstoff UND Steg-/I-Traeger-Material) zeigte Name+lambda/rho REDUNDANT zur vollen
   Detailkarte (.material-inline-preview, per updateMaterialPreview() befuellt) direkt darunter.
   .material-current-copy (die redundante Namens-/Werte-Anzeige) wird jetzt ausgeblendet - es
   bleibt nur noch eine schlanke Aktionsleiste (Baustoff aendern / Entfernen / Wiederherstellen)
   direkt ueber der einzigen verbleibenden, alle Angaben zeigenden Detailkarte. Bewusst nur die
   Anzeige ausgeblendet (kein DOM-Umbau, keine Aenderung an Sticky-Positionierung waehrend
   geoeffnetem Katalog) - geringstes Risiko, alle bestehenden Funktionen (Suche, Entfernen,
   Wiederherstellen, Sticky-Verhalten beim Scrollen) bleiben unveraendert erhalten. */
.material-current-copy{display:none!important}
.material-current-assignment{justify-content:flex-end}

/* BMC 022.170 (Nutzerauftrag 29.07.2026: "Die jetzige Karte mit dem Button kommt komplett weg,
   der Button erscheint ... in der Karte mit der Baustoffbeschreibung"): .material-inline-preview
   wird jetzt (siehe enhance() in app.js) physisch in .material-catalog-picker verschoben, direkt
   nach der Aktionsleiste .material-current-assignment. Die Detailkarte verliert dafuer ihre
   eigene Border/Radius/Hintergrundfarbe, da .material-catalog-picker mit seinem eigenen Rahmen
   (border-radius:14px, overflow:hidden) jetzt beide gemeinsam als EINE Kachel einfasst - sonst
   entstuende eine Kachel-in-Kachel-Optik. */
.material-catalog-picker .material-inline-preview{
  border:0;
  border-radius:0;
  background:transparent;
  margin:0;
}

/* BMC 022.171 (Nutzerauftrag 29.07.2026, Screenshots mit rotem Pfeil: "button dahin auch im pfad
   B und der dunkel blaue balken weg" + "der Haken 2. Anteil kann auch darein spart platz"):
   1) die farbige Kopfleiste (bisher hell-blau bei Pfad A / hell-orange bei Pfad B) ueber der
   Detailkarte entfaellt - nur im GESCHLOSSENEN Zustand (:not(.is-open)), damit die bestehende,
   gut sichtbare Sticky-Kopfzeile waehrend der Katalogsuche unangetastet bleibt. Jetzt liegt der
   Button einfach auf demselben weissen Hintergrund wie die Detailkarte darunter - eine
   durchgehend weisse Kachel statt Kopf+Body in zwei Farben.
   2) .material-current-assignment wechselt von Grid auf Flex, damit optional (nur bei Pfad A,
   nur wenn ein Zusatzstoff-Layer existiert) die "2. Anteil"-Checkbox als zusaetzliches Kind VOR
   dem Button eingefuegt werden kann (siehe embedSecondary() in app.js), ohne eine feste
   Spaltenzahl zu sprengen. .material-current-actions wandert per margin-left:auto zuverlaessig an
   den rechten Rand, unabhaengig davon, ob die Checkbox vorhanden ist oder nicht. */
.material-catalog-picker:not(.is-open) .material-current-assignment{
  background:transparent;
  border-bottom:0;
}
.material-current-assignment{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
}
.material-current-actions{margin-left:auto}
.material-current-assignment .layer-secondary-toggle{
  margin:0;
  white-space:nowrap;
  font-size:.82rem;
  font-weight:700;
  color:#3a4a5c;
}

/* BMC 022.172 (Nutzerrueckmeldung 29.07.2026, Screenshot Pfad B mit "das macht echt kein spass
   mehr"): Regression aus BMC 022.171. Die Alt-Regel aus V3.7.97
   (.material-current-actions{flex-direction:column;align-items:flex-end}) stapelte die Buttons
   der Aktionsleiste (rotes X "Entfernen" ueber "Baustoff aendern") untereinander - solange links
   daneben noch der sichtbare Namens-Text (.material-current-copy, seit BMC 022.169 ausgeblendet)
   stand, fiel das nicht auf. Seit der Flex-Umstellung in 022.171 blieb dadurch bei Pfad B (zwei
   Buttons) ein hoher, links komplett leerer Kopfblock uebrig. Korrektur: die Buttons stehen
   jetzt nebeneinander in EINER kompakten Zeile, rechtsbuendig. width:100% der
   "Wiederherstellen"-Zeile (V3.7.97) wird fuer das Zeilen-Layout ebenfalls zurueckgenommen. */
.material-current-actions{
  flex-direction:row;
  align-items:center;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.material-current-actions .material-catalog-previous-top{width:auto}

/* BMC 022.172 Teil 2 (Nutzerklarstellung 29.07.2026, Screenshot mit rotem Kreis + Pfeil, danach:
   "nein in der karte unten rechts der baustofftext oben links der button baustoff ändern passt"):
   die Kopfzeile der geschlossenen Material-Kachel entfaellt als eigene Zeile. Stattdessen:
   Baustofftext (Name/Code/Werte/Badges) beginnt OBEN LINKS in der Karte, "Baustoff ändern"
   (bei Pfad B zusaetzlich das rote X) liegt OBEN RECHTS, die "2. Anteil"-Checkbox (nur Pfad A)
   UNTEN RECHTS auf Hoehe der Badge-Zeile. Umsetzung rein per CSS-Positionierung im geschlossenen
   Zustand (:not(.is-open)): die Aktionsleiste wird zu einer unsichtbaren, klickdurchlaessigen
   Vollflaechen-Ebene (inset:0, pointer-events:none), ihre interaktiven Kinder werden absolut in
   die Ecken gesetzt (pointer-events:auto). KEINE DOM-Aenderung noetig - die Checkbox bleibt
   DOM-Kind der Aktionsleiste (Retry-Logik aus BMC 022.171 unveraendert), und im GEOEFFNETEN
   Katalog-Zustand greift weiterhin die unangetastete Sticky-Kopfzeile (.is-open-Regeln). */
.material-catalog-picker:not(.is-open){position:relative}
.material-catalog-picker:not(.is-open) .material-current-assignment{
  display:block;
  position:absolute;
  inset:0;
  padding:0;
  pointer-events:none;
  z-index:2;
}
.material-catalog-picker:not(.is-open) .material-current-actions{
  position:absolute;
  top:10px;
  right:12px;
  margin:0;
  pointer-events:auto;
}
.material-catalog-picker:not(.is-open) .material-current-assignment .layer-secondary-toggle{
  position:absolute;
  bottom:13px;
  right:13px;
  pointer-events:auto;
}
/* Platz rechts freihalten, damit weder Name (oben) noch Badges (unten) unter die absolut
   positionierten Bedienelemente laufen; Mindesthoehe, damit auch bei leerer Auswahl ("Bitte
   Baustoff auswählen", eine Zeile) der Button bzw. Button+Checkbox in die Karte passen. */
.material-catalog-picker:not(.is-open) .material-inline-preview{padding-right:175px;min-height:46px}
.material-catalog-picker.has-secondary-toggle:not(.is-open) .material-inline-preview{min-height:86px}

/* =============================================================================
   BMC 022.190 (Nutzerauftrag 31.07.2026, Screenshot der Fenster-Seite im
   Bauteilkatalog): In den Sonderbauteil-Tabellen (Fenster, Tueren,
   Sonderbauteile) war die Spalte "Feuerwiderstandsfaehigkeit" nicht grau
   hinterlegt, und die Werte in "Bauteilanforderungen" standen teils links,
   teils zentriert.

   URSACHE: rowspan. Bei "Waermeschutz" fasst die erste Zelle drei Zeilen
   zusammen; in den Folgezeilen fehlt sie, wodurch sich alle nth-child-Indizes
   um eins verschieben. Die bisherigen Regeln zaehlten von VORN
   (td:nth-child(1)/(2), td:nth-child(n+3)) und trafen dadurch in genau diesen
   Zeilen die falschen Zellen - sichtbar an "0,55" und "0,25", die linksbuendig
   blieben, waehrend "G30" und "0,95" zentriert waren.

   LOESUNG: von HINTEN zaehlen. Die Wertspalten stehen immer am Zeilenende,
   unabhaengig davon ob die Zeile durch rowspan eine Zelle weniger hat.
   - 3-Spalten-Tabellen (.catalog-performance-3col): letzte Zelle = Wert.
   - 4-Spalten-Tabellen: die letzten beiden = Anforderung + Leistung.
   Die Spaltenbreiten kommen jetzt aus <colgroup> statt aus nth-child-Regeln -
   ebenfalls rowspan-immun. Spalte 1 wurde von 18% auf 14% verschmaelert, damit
   "Feuerwiderstandsfaehigkeit" in Spalte 2 einzeilig passt.
   ============================================================================= */

/* Eigenschaftsspalten grau, Wertspalten weiss - 3-Spalten-Varianten */
.catalog-component-page .catalog-performance-3col td:not(:last-child){
  background:#f2f2f2!important;
}
.catalog-component-page .catalog-performance-3col td:last-child{
  background:#fff!important;
  text-align:center!important;
}

/* Eigenschaftsspalten grau, Wertspalten weiss - 4-Spalten-Varianten */
.catalog-component-page .catalog-performance-fixed-grid:not(.catalog-performance-3col) td:nth-last-child(n+3){
  background:#f2f2f2!important;
}
.catalog-component-page .catalog-performance-fixed-grid:not(.catalog-performance-3col) td:nth-last-child(-n+2){
  background:#fff!important;
  text-align:center!important;
}

/* Die Beschreibungsspalte darf umbrechen statt die Tabelle zu sprengen. */
.catalog-component-page .catalog-performance-3col td:nth-last-child(2){
  word-break:normal;
  overflow-wrap:anywhere;
}

/* =============================================================================
   BMC 022.191 - Admincenter-Uebersicht.
   Kachelraster je Themengruppe. Bewusst schlicht gehalten und an den vorhandenen
   .card-Stil angelehnt, damit die Seite sich einfuegt statt aufzufallen.
   ============================================================================= */
.admin-center-group{margin-bottom:18px}
.admin-center-group-head{margin-bottom:14px}
.admin-center-group-head h2{margin:0 0 4px;font-size:1.05rem}
.admin-center-group-head p{margin:0;color:var(--muted,#64748b);font-size:.86rem}

.admin-center-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(232px,1fr));
  gap:10px;
}
.admin-center-tile{
  display:flex;
  flex-direction:column;
  gap:4px;
  padding:13px 15px;
  border:1px solid var(--soft-line,#dbe4ef);
  border-radius:9px;
  background:var(--soft-bg,#f8fafc);
  text-decoration:none;
  color:inherit;
  transition:border-color .12s,background .12s;
}
.admin-center-tile:hover{
  border-color:#17375e;
  background:#fff;
}
.admin-center-tile strong{font-size:.95rem;color:#17375e}
.admin-center-tile small{color:var(--muted,#64748b);line-height:1.3}

@media (max-width:640px){
  .admin-center-grid{grid-template-columns:1fr}
}

/* =============================================================================
   BMC 022.192 - Rechtematrix und Gruppenverwaltung.
   ============================================================================= */
.rbac-matrix{width:100%;border-collapse:collapse;font-size:.86rem}
.rbac-matrix th,.rbac-matrix td{border:1px solid var(--soft-line,#dbe4ef);padding:7px 9px;text-align:left}
.rbac-matrix thead th{background:#eef2f7;color:#17375e;font-weight:600;white-space:nowrap;position:sticky;top:0}
.rbac-matrix thead th:first-child{text-align:left}
.rbac-matrix tbody td:first-child{min-width:230px}
.rbac-matrix tbody td:first-child small{display:block;color:var(--muted,#64748b);font-size:.74rem;margin-top:2px}
.rbac-matrix tbody tr:nth-child(even){background:var(--soft-bg,#f8fafc)}
.rbac-matrix .rbac-cell{text-align:center;width:74px}
.rbac-matrix .rbac-cell input{width:16px;height:16px;cursor:pointer}
.rbac-matrix .rbac-cell input:disabled{cursor:not-allowed;opacity:.55}

.rbac-member-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(250px,1fr));
  gap:6px 14px;
}
.rbac-member-grid .checkbox-label{display:flex;align-items:center;gap:7px;padding:4px 0}
.rbac-member-grid small{color:var(--muted,#64748b)}

@media (max-width:820px){
  .rbac-matrix{font-size:.78rem}
  .rbac-matrix .rbac-cell{width:52px}
  .rbac-member-grid{grid-template-columns:1fr}
}
/* BMC 022.193 - Farblayout-Einstellungen. */
.design-color-grid{display:grid;gap:8px}
.design-color-row{display:grid;grid-template-columns:34px 1fr 58px auto;align-items:center;gap:12px;padding:9px 11px;border:1px solid var(--soft-line,#dbe4ef);border-radius:8px;background:var(--soft-bg,#f8fafc)}
.design-color-swatch{width:30px;height:30px;border-radius:6px;border:1px solid rgba(0,0,0,.16)}
.design-color-main strong{display:block;font-size:.92rem}
.design-color-main small{color:var(--muted,var(--muted-2));font-size:.8rem}
.design-color-row input[type=color]{width:52px;height:32px;padding:2px;border:1px solid var(--soft-line,#dbe4ef);border-radius:6px;background:#fff;cursor:pointer}
.design-color-default{font-size:.74rem;color:var(--muted,var(--muted-2));white-space:nowrap}
@media (max-width:640px){
  .design-color-row{grid-template-columns:30px 1fr 52px;gap:8px}
  .design-color-default{grid-column:2/-1}
}

/* ============================================================================================== */
/* BMC 022.194 - Hoverbilder fuer die Druckausgabe-Einstellungen                                   */
/* Nutzerauftrag 31.07.2026. Hinter jeder Beschriftung sitzt ein kleines Fragezeichen; beim        */
/* Ueberfahren oder Antippen erscheint eine Miniatur der Katalogseite, auf der der betroffene      */
/* Bereich hervorgehoben ist (Aufbau siehe catalog_print_hint_svg in src/functions.php).           */
/*                                                                                                */
/* Die Box liegt bewusst auf position:fixed: die Einstellungsfelder stecken in Karten mit          */
/* eigenem Ueberlauf, eine absolut positionierte Box wuerde dort abgeschnitten. Die Koordinaten    */
/* setzt das Skript in index.php, damit die Box am Bildschirmrand nicht hinausragt.                */
/* ============================================================================================== */

.print-hint{
  display:inline-flex;
  vertical-align:middle;
  margin-left:6px;
}

.print-hint-knopf{
  width:17px;
  height:17px;
  padding:0;
  border:1px solid var(--soft-line,#dbe4ef);
  border-radius:50%;
  background:var(--soft-bg,#f8fafc);
  color:var(--muted-2,#64748b);
  font-size:11px;
  font-weight:700;
  line-height:1;
  cursor:help;
  transition:background .12s,color .12s,border-color .12s;
}
.print-hint-knopf:hover,
.print-hint-knopf:focus-visible{
  background:var(--accent,#1d5f9a);
  border-color:var(--accent,#1d5f9a);
  color:#fff;
  outline:none;
}

.print-hint-box{
  display:none;
  position:fixed;
  z-index:6000;
  width:236px;
  padding:10px;
  border:1px solid var(--soft-line,#dbe4ef);
  border-radius:10px;
  background:var(--sheet-bg,#fff);
  box-shadow:0 12px 32px rgba(15,23,42,.18);
  pointer-events:none;
}
.print-hint-box.offen{ display:block; }

.print-hint-titel{
  display:block;
  margin-bottom:7px;
  color:var(--headline,#0f172a);
  font-size:12px;
  font-weight:700;
}

.print-hint-svg{
  display:block;
  width:100%;
  height:auto;
  border-radius:4px;
}

.print-hint-text{
  display:block;
  margin-top:8px;
  color:var(--muted-2,#64748b);
  font-size:11px;
  line-height:1.45;
}

/* Auf schmalen Geraeten gibt es neben dem Feld keinen Platz - dort spannt die Box ueber die     */
/* volle Breite und legt sich unten an den Bildschirmrand.                                       */
@media (max-width:640px){
  .print-hint-box{
    left:12px !important;
    right:12px;
    top:auto !important;
    bottom:12px;
    width:auto;
  }
}

@media print{
  .print-hint{ display:none; }
}

/* ============================================================================================== */
/* BMC 022.195 - Fussnoten der Druckvorschau                                                      */
/* Spezifikation: PROJECT_MEMORY/SPEZIFIKATION-FUSSNOTEN-DRUCKVORSCHAU.md                         */
/*                                                                                                */
/* Drei Bestandteile: der hochgestellte Marker [1] hinter dem Wert, die nummerierte Liste unter    */
/* der Leistungstabelle, und die Klickflaeche, ueber die eine Fussnote angelegt wird. Die          */
/* Klickflaeche erscheint NUR in der Druckvorschau (Nutzeranforderung 5) und niemals im Druck.     */
/* ============================================================================================== */

.catalog-footnote-mark{
  font-size:.68em;
  line-height:0;
  vertical-align:super;
  color:inherit;
  white-space:nowrap;
  margin-left:1px;
}

.catalog-footnote-list{
  list-style:none;
  margin:0 0 6px;
  padding:0;
}
.catalog-footnote-list .catalog-footnote-item{
  display:flex;
  gap:5px;
  align-items:baseline;
  margin:0 0 2px;
}
.catalog-footnote-nr{
  flex:0 0 auto;
  font-variant-numeric:tabular-nums;
}
.catalog-footnote-text{ flex:1 1 auto; }

/* Der freie Bemerkungstext steht unter den Fussnoten und traegt bewusst KEINE Nummerierung mehr
   (Nutzeranforderung: "dann ein freier bereich ohne nummerierung"). Bis BMC 022.194 bekam hier
   jede Zeile automatisch ein [1], [2], [3] - das war eine Zeilenzaehlung, keine Fussnote. */
.catalog-remarks-free p{ margin:0 0 2px; }
.catalog-footnote-list + .catalog-remarks-free{
  margin-top:4px;
  padding-top:4px;
  border-top:1px solid rgba(0,0,0,.08);
}

/* --- Klickflaeche: nur in der Vorschau, nie im Druck ----------------------------------------- */
.catalog-footnote-slot{ position:relative; }

.catalog-remarks-editable .catalog-footnote-slot,
.catalog-document[data-footnotes-editable] .catalog-footnote-slot{
  cursor:text;
  border-radius:2px;
  transition:background .12s,box-shadow .12s;
}
.catalog-document[data-footnotes-editable] .catalog-footnote-slot:hover{
  background:rgba(29,95,154,.10);
  box-shadow:0 0 0 2px rgba(29,95,154,.16);
}
.catalog-document[data-footnotes-editable] .catalog-footnote-slot.offen{
  background:rgba(29,95,154,.16);
  box-shadow:0 0 0 2px rgba(29,95,154,.34);
}

/* --- Eingabefeld ------------------------------------------------------------------------------ */
.catalog-footnote-editor{
  position:fixed;
  z-index:6200;
  width:310px;
  padding:11px;
  border:1px solid var(--soft-line,#dbe4ef);
  border-radius:10px;
  background:var(--sheet-bg,#fff);
  box-shadow:0 14px 38px rgba(15,23,42,.22);
  font-size:13px;
}
.catalog-footnote-editor h4{
  margin:0 0 7px;
  font-size:12px;
  font-weight:700;
  color:var(--headline,#0f172a);
}
.catalog-footnote-editor textarea{
  width:100%;
  min-height:74px;
  padding:6px 7px;
  border:1px solid var(--soft-line,#dbe4ef);
  border-radius:6px;
  font:inherit;
  font-size:12.5px;
  resize:vertical;
}
.catalog-footnote-editor-vorhandene{
  margin:8px 0 0;
  padding:7px 0 0;
  border-top:1px solid var(--soft-line,#dbe4ef);
  list-style:none;
}
.catalog-footnote-editor-vorhandene li{
  display:flex;
  gap:6px;
  align-items:flex-start;
  margin-bottom:5px;
  font-size:12px;
  color:var(--muted-2,#64748b);
}
.catalog-footnote-editor-vorhandene button{
  flex:0 0 auto;
  padding:1px 6px;
  border:1px solid var(--soft-line,#dbe4ef);
  border-radius:5px;
  background:var(--soft-bg,#f8fafc);
  color:var(--muted-2,#64748b);
  font-size:11px;
  cursor:pointer;
}
.catalog-footnote-editor-vorhandene button:hover{
  border-color:#c0392b;
  color:#c0392b;
}
.catalog-footnote-editor-knoepfe{
  display:flex;
  gap:6px;
  justify-content:flex-end;
  margin-top:9px;
}
.catalog-footnote-editor-meldung{
  margin-top:7px;
  font-size:11.5px;
  color:#c0392b;
}

@media print{
  .catalog-footnote-slot{ background:none !important; box-shadow:none !important; }
  .catalog-footnote-editor{ display:none !important; }
}

/* ============================================================================================== */
/* BMC 022.196 - Seite "Sicherheit" im Admincenter                                                */
/* Kennwortregeln, Anmeldesperre, Sitzungsdauer und Gueltigkeit von Einladungen.                   */
/* ============================================================================================== */

.security-policy-satz{
  margin:0 0 6px;
  padding:9px 12px;
  border-left:3px solid var(--accent,#1d5f9a);
  background:var(--soft-bg,#f8fafc);
  border-radius:0 6px 6px 0;
  font-weight:600;
  color:var(--headline,#0f172a);
}

.security-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(310px,1fr));
  gap:13px;
}

.security-row{
  display:flex;
  flex-direction:column;
  gap:4px;
  padding:11px 12px;
  border:1px solid var(--soft-line,#dbe4ef);
  border-radius:9px;
  background:var(--soft-bg,#f8fafc);
}
.security-name{
  font-weight:600;
  font-size:13.5px;
  color:var(--headline,#0f172a);
}
.security-eingabe{
  display:flex;
  align-items:center;
  gap:7px;
}
.security-eingabe input[type=number]{
  width:104px;
  padding:5px 8px;
  border:1px solid var(--soft-line,#dbe4ef);
  border-radius:6px;
  font:inherit;
  text-align:right;
}
.security-einheit{
  color:var(--muted-2,#64748b);
  font-size:12.5px;
}
.security-row .field-help{ line-height:1.45; }
.security-row .field-help em{
  display:block;
  margin-top:3px;
  font-style:normal;
  color:var(--muted-2,#64748b);
  font-size:11.5px;
}

/* Schalter liegen waagerecht, das Kaestchen zuerst - sonst steht die Beschriftung ohne Bezug */
.security-row-schalter{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:3px 9px;
  align-items:center;
  cursor:pointer;
}
.security-row-schalter input[type=checkbox]{
  grid-row:1;
  width:17px;
  height:17px;
  margin:0;
}
.security-row-schalter .security-name{ grid-row:1; }
.security-row-schalter .field-help{ grid-column:2; }

.security-hinweise{
  margin:0;
  padding-left:19px;
  color:var(--muted-2,#64748b);
  font-size:13px;
  line-height:1.55;
}
.security-hinweise li{ margin-bottom:7px; }
.security-hinweise strong{ color:var(--headline,#0f172a); }

/* ============================================================================================== */
/* BMC 022.197 - Ueberlaufwarnung und Fussnoten-Bearbeitung                                       */
/* Testbefund 31.07.2026: "wenn zuviele da sind rutscht es aus der seite" und                     */
/* "bearbeiten einer fussnote nicht moeglich".                                                    */
/*                                                                                                */
/* .catalog-page hat height:297mm und overflow:hidden - was nicht passt, wird abgeschnitten und   */
/* fehlt im Druck. Die Warnung macht das sichtbar, bevor jemand es erst am Papier bemerkt.        */
/* ============================================================================================== */

.catalog-page-ueberlauf{
  outline:2px solid #c0392b;
  outline-offset:-2px;
}

.catalog-page-overflow-warnung{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  z-index:40;
  padding:7px 12px;
  background:#c0392b;
  color:#fff;
  font-size:11.5px;
  line-height:1.4;
  text-align:center;
  box-shadow:0 -3px 14px rgba(192,57,43,.34);
}
.catalog-page-overflow-warnung strong{ font-weight:700; }

/* Der Hinweis gehoert in die Bearbeitung, nicht aufs Papier. */
@media print{
  .catalog-page-overflow-warnung{ display:none !important; }
  .catalog-page-ueberlauf{ outline:none !important; }
}

/* --- Vorhandene Fussnoten im Editor: aendern und loeschen ------------------------------------ */
.catalog-footnote-editor-vorhandene li{
  display:grid;
  grid-template-columns:auto 1fr auto auto;
  gap:5px;
  align-items:start;
}
.catalog-footnote-editor-vorhandene .fn-nr{
  font-variant-numeric:tabular-nums;
  font-weight:600;
}
.catalog-footnote-editor-vorhandene .fn-text{
  overflow-wrap:anywhere;
}
.catalog-footnote-editor-vorhandene li.wird-bearbeitet{
  background:rgba(29,95,154,.10);
  border-radius:5px;
  padding:3px 5px;
  margin-left:-5px;
  margin-right:-5px;
}
.catalog-footnote-editor-vorhandene [data-bearbeiten]:hover{
  border-color:var(--accent,#1d5f9a);
  color:var(--accent,#1d5f9a);
}

.catalog-footnote-editor-voll{
  margin-bottom:8px;
  padding:6px 8px;
  border-radius:6px;
  background:rgba(192,57,43,.10);
  color:#c0392b;
  font-size:11.5px;
  line-height:1.4;
}

/* ============================================================================================== */
/* BMC 022.197 - Die Klickflaeche der Fussnoten darf NIE etwas am Aussehen aendern                 */
/*                                                                                                */
/* Testbefund 31.07.2026: "da sind Klammern die gehoeren da nicht hin" - vor dem Bauteilnamen und  */
/* vor der Bauteilnummer standen senkrechte Striche.                                              */
/*                                                                                                */
/* Ursache war eine Regel aus dem Bestand:                                                        */
/*     .catalog-component-title span{border-left:0.35mm solid #222}                                */
/* Sie zeichnet die Trennlinie vor der Bauteilnummer und war fuer genau ein <span> gedacht. Sie    */
/* trifft aber JEDES span in der Kopfzeile - und die Klickflaechen sind spans.                     */
/*                                                                                                */
/* Statt jede solche Regel einzeln zu entschaerfen (es gibt mehrere, teils mit !important), setzt  */
/* dieser Block die Klickflaeche auf neutral zurueck. Damit ist sie auch gegen Regeln geschuetzt,  */
/* die spaeter dazukommen. Sie bleibt reine Huelle: kein Rahmen, kein Kasten, keine Abstaende.     */
/* ============================================================================================== */

.catalog-document .catalog-footnote-slot{
  display:inline !important;
  border:0 !important;
  outline:0 !important;
  padding:0 !important;
  margin:0 !important;
  min-width:0 !important;
  background:none;
  box-shadow:none;
  font:inherit;
  color:inherit;
  letter-spacing:inherit;
  text-transform:none;
}

/* Der Hover-Hinweis kommt danach und gewinnt dadurch gegen das background:none oben. */
.catalog-document[data-footnotes-editable] .catalog-footnote-slot:hover{
  background:rgba(29,95,154,.10);
  box-shadow:0 0 0 2px rgba(29,95,154,.16);
  border-radius:2px;
}
.catalog-document[data-footnotes-editable] .catalog-footnote-slot.offen{
  background:rgba(29,95,154,.16);
  box-shadow:0 0 0 2px rgba(29,95,154,.34);
  border-radius:2px;
}

/* Im Druck bleibt nichts davon uebrig. */
@media print{
  .catalog-document .catalog-footnote-slot{
    background:none !important;
    box-shadow:none !important;
  }
}

/* ============================================================================================== */
/* BMC 022.197 - Startseite mit Anmeldung                                                         */
/* Nutzerauftrag 31.07.2026. Ersetzt die bisherige Anmeldekarte: links was die Software kann,      */
/* rechts das Anmeldeformular. Auf schmalen Geraeten untereinander.                                */
/*                                                                                                */
/* Alle Farben kommen aus den Variablen des Farblayouts - wer dort die Akzentfarbe aendert, aendert */
/* auch diese Seite. Die Vorgaben folgen seit 022.197 der Palette von energie-bau.eu.              */
/* ============================================================================================== */

.startseite{
  min-height:100vh;
  display:grid;
  grid-template-columns:1.15fr .85fr;
  background:
    radial-gradient(1200px 600px at 12% -10%, color-mix(in srgb, var(--accent,#f28c28) 16%, transparent), transparent 60%),
    radial-gradient(900px 500px at 110% 110%, color-mix(in srgb, var(--ink,#1d3557) 13%, transparent), transparent 55%),
    var(--bg,#f7fafc);
  margin:0;
  max-width:none;
  padding:0;
}
@media (max-width:940px){
  .startseite{ grid-template-columns:1fr; }
}

/* --- linke Seite: Vorstellung ----------------------------------------------------------------- */
.startseite-vorstellung{
  padding:54px 46px 46px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  max-width:760px;
}
@media (max-width:620px){ .startseite-vorstellung{ padding:36px 22px 26px; } }

.startseite-marke{
  display:flex;
  align-items:center;
  gap:13px;
  margin-bottom:30px;
}
.startseite-marke-bild img{ max-height:48px; width:auto; display:block; }
.startseite-marke-name{
  font-size:21px;
  font-weight:800;
  color:var(--ink,#1d3557);
  letter-spacing:-.3px;
  line-height:1.2;
}
.startseite-marke-name span{
  display:block;
  font-size:12px;
  font-weight:500;
  color:var(--muted-2,#667085);
  letter-spacing:.02em;
}

.startseite h1{
  font-size:38px;
  line-height:1.16;
  margin:0 0 16px;
  letter-spacing:-.7px;
  color:var(--ink,#1d3557);
}
@media (max-width:620px){ .startseite h1{ font-size:29px; } }
.startseite h1 em{ font-style:normal; color:var(--accent,#f28c28); }

.startseite-vorspann{
  font-size:17px;
  color:var(--text,#263238);
  margin:0 0 30px;
  max-width:56ch;
  line-height:1.55;
}

.startseite-punkte{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:15px;
  margin-bottom:30px;
}
@media (max-width:560px){ .startseite-punkte{ grid-template-columns:1fr; } }

.startseite-punkt{
  background:color-mix(in srgb, var(--sheet-bg,#fff) 72%, transparent);
  border:1px solid var(--soft-line,#e6eaf0);
  border-radius:11px;
  padding:14px 15px;
}
.startseite-punkt h2{
  margin:0 0 4px;
  font-size:14.5px;
  color:var(--ink,#1d3557);
  font-weight:700;
}
.startseite-punkt p{
  margin:0;
  font-size:13px;
  color:var(--muted-2,#667085);
  line-height:1.5;
}
.startseite-punkt-zeichen{
  width:29px;
  height:29px;
  border-radius:8px;
  background:color-mix(in srgb, var(--accent,#f28c28) 14%, transparent);
  color:var(--accent,#f28c28);
  display:grid;
  place-items:center;
  margin-bottom:9px;
  font-size:15px;
  filter:saturate(.9) brightness(.85);
}

.startseite-zahlen{
  display:flex;
  gap:30px;
  flex-wrap:wrap;
  padding-top:22px;
  border-top:1px solid var(--soft-line,#e6eaf0);
}
.startseite-zahlen b{
  display:block;
  font-size:23px;
  color:var(--ink,#1d3557);
  letter-spacing:-.5px;
}
.startseite-zahlen span{ font-size:12px; color:var(--muted-2,#667085); }

/* --- rechte Seite: Anmeldung ------------------------------------------------------------------ */
.startseite-anmeldung{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:40px 34px;
  background:color-mix(in srgb, var(--sheet-bg,#fff) 55%, transparent);
  border-left:1px solid var(--soft-line,#e6eaf0);
}
@media (max-width:940px){
  .startseite-anmeldung{ border-left:0; border-top:1px solid var(--soft-line,#e6eaf0); }
}

.startseite-karte{
  width:100%;
  max-width:390px;
  padding:32px 30px;
  border-radius:15px;
  box-shadow:0 18px 46px rgba(15,23,42,.11);
}
.startseite-karte h2{ margin:0 0 5px; font-size:21px; color:var(--ink,#1d3557); }
.startseite-unterzeile{ margin:0 0 24px; font-size:13.5px; color:var(--muted-2,#667085); }
.startseite-karte label{ display:block; margin-bottom:13px; font-size:13px; font-weight:600; color:var(--ink,#1d3557); }
.startseite-karte input{ width:100%; margin-top:5px; }
.startseite-karte button{ width:100%; margin-top:4px; }
.startseite-karte-fuss{
  margin-top:17px;
  padding-top:15px;
  border-top:1px solid var(--soft-line,#e6eaf0);
  font-size:12.5px;
  color:var(--muted-2,#667085);
}

/* ============================================================================================== */
/* BMC 022.198 - Fenster-U-Wert-Rechner nach DIN EN ISO 10077-1                                   */
/* Nutzerauftrag 31.07.2026. Eigenstaendige Seite unter Bauteile; alle Klassen mit fw- praefixt,  */
/* damit sie nicht mit dem uebrigen Stylesheet kollidieren.                                        */
/* ============================================================================================== */


  .fw-kopf{max-width:1080px;margin:0 auto 16px}
  .fw-kopf h1{font-size:23px;margin:0 0 4px;color:var(--ink);letter-spacing:-.3px}
  .fw-kopf p{margin:0;font-size:13.5px;color:var(--muted)}

  .fw-buehne{display:grid;grid-template-columns:1fr 360px;gap:16px;max-width:1080px;margin:0 auto;align-items:start}
  @media (max-width:880px){ .fw-buehne{grid-template-columns:1fr} }

  .fw-karte{background:var(--sheet);border:1px solid var(--line);border-radius:12px;padding:0;overflow:hidden}
  .fw-karte-kopf{padding:11px 18px;background:var(--soft-bg);border-bottom:1px solid var(--line);font-size:12px;font-weight:700;color:var(--ink);text-transform:uppercase;letter-spacing:.05em}
  .fw-karte-leib{padding:16px 18px}

  /* Eingaben als kompakte Bloecke statt Formularzeilen */
  .fw-block{margin-bottom:18px}
  .fw-block:last-child{margin-bottom:0}
  .fw-block-titel{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:9px;display:flex;align-items:center;gap:8px}
  .fw-block-titel::after{content:'';flex:1;height:1px;background:var(--line)}

  .fw-gitter{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:10px}
  .fw-feld{display:flex;flex-direction:column;gap:3px}
  .fw-feld label{font-size:11.5px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em}
  .fw-feld-eingabe{display:flex;align-items:center;gap:6px}
  input[type=number],select{
    width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:7px;
    font:inherit;font-size:14px;background:var(--soft-bg);text-align:right;
  }
  select{text-align:left}
  input:focus,select:focus{outline:2px solid rgba(242,140,40,.35);border-color:var(--accent);background:#fff}
  .fw-feld-eingabe .fw-einheit{font-size:11.5px;color:var(--muted);white-space:nowrap;min-width:46px}

  .fw-paar{display:grid;grid-template-columns:1fr 1fr;gap:8px}

  /* Ergebnisspalte */
  .fw-ergebnis{position:sticky;top:20px}
  .fw-skizzenfeld{padding:16px;background:var(--soft-bg);border-bottom:1px solid var(--line)}
  .fw-skizzenfeld svg{display:block;width:100%;height:auto}

  .fw-werte{width:100%;border-collapse:collapse;font-size:13px}
  .fw-werte td{padding:6px 0;border-bottom:1px solid var(--line)}
  .fw-werte td:last-child{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink)}
  .fw-werte tr:last-child td{border-bottom:0}
  .fw-werte .fw-neben td{color:var(--muted);font-size:12px;font-weight:400;padding-top:0}

  .fw-ergebnisband{
    padding:15px 18px;background:var(--ink);color:#fff;
    display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  }
  .fw-ergebnisband span{font-size:12px;text-transform:uppercase;letter-spacing:.05em;opacity:.82}
  .fw-ergebnisband b{font-size:25px;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
  .fw-ergebnisband b i{font-style:normal;font-size:13px;opacity:.75;font-weight:400}

  .fw-fuss{padding:12px 18px;font-size:11.5px;color:var(--muted);line-height:1.6;border-top:1px solid var(--line)}
  .fw-fuss code{background:var(--soft-bg);padding:1px 5px;border-radius:4px;font-size:11px}
  details summary{cursor:pointer;color:var(--accent);margin-top:7px;font-size:12px}
  .fw-rechenweg{margin-top:7px;font-variant-numeric:tabular-nums;line-height:1.8;font-size:11.5px}
  .fw-warn{margin:10px 18px 0;padding:8px 11px;border-radius:7px;background:rgba(192,57,43,.09);color:#c0392b;font-size:12.5px}

/* BMC 022.198 - Kaempfer und Sprossen sind einklappbar (Nutzerwunsch 01.08.2026): beide werden
   selten gebraucht und haben das Formular unnoetig lang gemacht. Die Zusammenfassung zeigt den
   Stand auch im eingeklappten Zustand, damit man nicht aufklappen muss, um nachzusehen. */
.fw-klapp{ border:1px solid var(--soft-line,#e6eaf0); border-radius:9px; padding:10px 12px; background:var(--soft-bg,#f7fafc); }
.fw-klapp > summary{
  cursor:pointer;
  margin:0;
  list-style:none;
  display:flex;
  align-items:center;
  gap:8px;
}
.fw-klapp > summary::-webkit-details-marker{ display:none; }
.fw-klapp > summary::before{
  content:'▸';
  color:var(--accent,#f28c28);
  font-size:12px;
  transition:transform .15s;
}
.fw-klapp[open] > summary::before{ transform:rotate(90deg); }
.fw-klapp > summary::after{ content:none; }
.fw-klapp[open] > summary{ margin-bottom:11px; }
.fw-klapp-stand{
  margin-left:auto;
  font-weight:400;
  font-size:11.5px;
  text-transform:none;
  letter-spacing:0;
  color:var(--muted-2,#667085);
}
.fw-klapp[open] .fw-klapp-stand{ opacity:.6; }

/* ============================================================================================== */
/* BMC 022.200 - Katalogtexte im Druckbild bearbeiten                                             */
/*                                                                                                */
/* Nutzerwunsch 01.08.2026: "kann man das nicht direkt in der Vorschau ändern ... dann machen wir  */
/* daraus das Eingabefenster". Genau so gelöst: Der vorhandene Rich-Text-Editor (enhanceRich-      */
/* Textarea macht aus dem Textarea ein contenteditable) bekommt die Maße der Katalogseite.         */
/* Eingabefeld und Vorschau sind damit dasselbe - kein zweites Fenster mehr.                       */
/*                                                                                                */
/* 174 mm entsprechen der Textspalte im Druck: 210 mm Blatt minus zweimal 18 mm Rand. Nur bei      */
/* dieser Breite bricht der Text beim Tippen genauso um wie später auf dem Papier.                 */
/* ============================================================================================== */

.katalogtext-hinweis{
  margin:0 0 8px;
  font-size:11.5px;
  color:var(--muted-2,#667085);
}

.catalog-general-editor-body .richtext-field{
  max-width:calc(174mm + 2px);
}
.catalog-general-editor-body .richtext-editable{
  width:174mm;
  max-width:100%;
  box-sizing:border-box;
  min-height:70mm;
  padding:8mm 6mm;
  background:#fff;
  /* Typografie der Katalogseite */
  font-family:var(--catalog-font-family,Arial,Helvetica,sans-serif);
  font-size:10pt;
  line-height:1.28;
  color:#111;
  box-shadow:inset 0 0 0 1px var(--soft-line,#e6eaf0);
}
.catalog-general-editor-body .richtext-editable:focus{
  outline:2px solid color-mix(in srgb, var(--accent,#f28c28) 45%, transparent);
  outline-offset:1px;
}

/* Der Umbruch soll dem Druck entsprechen - deshalb kein eigener Zeilenabstand für Absätze. */
.catalog-general-editor-body .richtext-editable p{ margin:0 0 1.28em; }
.catalog-general-editor-body .richtext-editable p:last-child{ margin-bottom:0; }

/* Auf schmalen Bildschirmen darf das Blatt schrumpfen - dann stimmt der Umbruch zwar nicht mehr
   exakt, aber die Eingabe bleibt bedienbar. Der Hinweis darüber nennt die Sollbreite. */
@media (max-width:820px){
  .catalog-general-editor-body .richtext-editable{ width:100%; padding:6mm 5mm; }
}

/* ============================================================================================== */
/* BMC 022.201 - Bauteilübersicht: Spaltenbreiten und Umbruch                                     */
/*                                                                                                */
/* Testbefund 01.08.2026: "die Badges stammdaten kopieren archivieren etc stehen wild beieinander" */
/* und Text lief ineinander ("Massivholzbau0,955e").                                              */
/*                                                                                                */
/* URSACHE: #component-list-card table hatte table-layout:fixed mit min-width:1120px, aber KEINE   */
/* Breiten je Spalte. Bei fixed verteilt der Browser dann alle 13 Spalten gleichmäßig - je etwa    */
/* 86 px. Lange Bezeichnungen passen dort nicht und laufen mangels overflow-Regel in die           */
/* Nachbarzelle. Deshalb: feste Breiten je Spalte, und Text bricht um statt überzulaufen.          */
/*                                                                                                */
/* Die Spalten werden per th.hidden ausgeblendet, bleiben also im DOM - nth-child ist dadurch      */
/* stabil und die Zuordnung verrutscht nicht, wenn Spalten abgewählt sind.                          */
/* ============================================================================================== */

#component-list-card table{
  min-width:1180px;
  table-layout:fixed;
  border-collapse:collapse;
}

/* Grundregel: nichts läuft mehr über, alles bricht um. */
#component-list-card th,
#component-list-card td{
  overflow:hidden;
  /* break-word statt anywhere: bricht bevorzugt an Wortgrenzen und nur dann mitten im Wort,
     wenn ein einzelnes Wort allein nicht in die Spalte passt. anywhere trennte auch dort, wo
     ein Umbruch an der Wortgrenze möglich gewesen wäre - daher "Innenwan/d". */
  overflow-wrap:break-word;
  word-break:normal;
  hyphens:none;
  vertical-align:top;
  padding:9px 10px;
  line-height:1.35;
}
#component-list-card thead th{
  vertical-align:bottom;
  white-space:nowrap;
  overflow:visible;
}

/*  1 Auswahlkästchen ·  2 Nummer ·  3 Bezeichnung ·  4 Art ·  5 Bauweise ·  6 U-Wert
    7 Rw ·  8 Brandschutz ·  9 Projekt · 10 Schichten · 11 Status · 12 Stand · 13 Aktionen      */
#component-list-card th:nth-child(1),  #component-list-card td:nth-child(1){ width:34px; }
#component-list-card th:nth-child(2),  #component-list-card td:nth-child(2){ width:104px; }
#component-list-card th:nth-child(3),  #component-list-card td:nth-child(3){ width:auto; min-width:180px; }
#component-list-card th:nth-child(4),  #component-list-card td:nth-child(4){ width:106px; }
#component-list-card th:nth-child(5),  #component-list-card td:nth-child(5){ width:172px; }
#component-list-card th:nth-child(6),  #component-list-card td:nth-child(6){ width:96px; }
#component-list-card th:nth-child(7),  #component-list-card td:nth-child(7){ width:74px; }
#component-list-card th:nth-child(8),  #component-list-card td:nth-child(8){ width:92px; }
#component-list-card th:nth-child(9),  #component-list-card td:nth-child(9){ width:100px; }
#component-list-card th:nth-child(10), #component-list-card td:nth-child(10){ width:70px; text-align:right; }
#component-list-card th:nth-child(11), #component-list-card td:nth-child(11){ width:96px; }
#component-list-card th:nth-child(12), #component-list-card td:nth-child(12){ width:86px; }
#component-list-card th:last-child,    #component-list-card td:last-child{ width:132px; }

/* Die Bauteilnummer ist eine Kennung - sie darf nie umbrechen ("EB-AW-/010"). */
#component-list-card td:nth-child(2),
#component-list-card td:nth-child(2) a{
  white-space:nowrap;
  overflow-wrap:normal;
}

/* Zahlenspalten sollen nicht mitten in der Zahl umbrechen. */
#component-list-card td:nth-child(6),
#component-list-card td:nth-child(7),
#component-list-card td:nth-child(10),
#component-list-card td:nth-child(12){
  overflow-wrap:normal;
  font-variant-numeric:tabular-nums;
}

/* --- Die Schaltflächen: untereinander statt wild nebeneinander ------------------------------- */
#component-list-card .component-row-actions{
  display:grid;
  grid-template-columns:1fr;
  gap:4px;
  justify-items:stretch;
  align-content:start;
}
#component-list-card .component-row-actions .button.tiny,
#component-list-card .component-row-actions form,
#component-list-card .component-row-actions form button{
  width:100%;
  margin:0;
  text-align:center;
  white-space:nowrap;
}

/* Statuskästchen und Hinweise bekommen eine eigene Zeile statt neben den Knöpfen zu schweben. */
#component-list-card td:nth-child(11) .status-badge{
  display:block;
  width:fit-content;
  max-width:100%;
}
#component-list-card .component-lca-flag{
  display:block;
  margin-bottom:4px;
  width:fit-content;
}

/* --- Waagerecht scrollen statt quetschen ------------------------------------------------------ */
/* Passt die Tabelle nicht ins Fenster, wird gescrollt - vorher wurde sie zusammengedrückt, bis
   der Inhalt überlief. Der Scrollbereich gehört an die Tabelle, nicht an die Seite.             */
#component-list-card .table-scroll,
#component-list-card > .table-wrap{
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}

@media (max-width:1100px){
  #component-list-card table{ font-size:13px; }
  #component-list-card th, #component-list-card td{ padding:7px 8px; }
}

/* BMC 022.201 - Rueckmeldung bei der Spaltenauswahl (Nutzerhinweis 01.08.2026: nicht still
   begrenzen, sondern darauf hinweisen). Der Zaehler steht ueber dem Kaestchengitter, gesperrte
   Eintraege sind sichtbar ausgegraut statt einfach nicht zu reagieren. */
.spaltenwahl-stand{
  margin:0 0 8px;
  padding:5px 9px;
  border-radius:6px;
  background:var(--soft-bg,#f7fafc);
  border:1px solid var(--soft-line,#e6eaf0);
  font-size:12px;
  color:var(--muted-2,#667085);
  width:fit-content;
}
.spaltenwahl-stand.spaltenwahl-voll{
  background:color-mix(in srgb, var(--accent,#f28c28) 12%, #fff);
  border-color:color-mix(in srgb, var(--accent,#f28c28) 40%, #fff);
  color:#8a5410;
  font-weight:600;
}
.checkbox-label.spaltenwahl-gesperrt{
  opacity:.42;
  cursor:not-allowed;
}
.checkbox-label.spaltenwahl-gesperrt input{ cursor:not-allowed; }
/* BMC 022.202 (Nutzerauftrag 01.08.2026, "beim json import moechte ich die Schichten und die
   Skizze sehen"): Zweispaltige Kontrollansicht auf der Import-Vorschau. Die Skizze steht links
   in fester Hoechstbreite, die Schichtenliste nimmt den Rest. Unter 1000px stapeln beide, damit
   auf schmalen Monitoren nichts nebeneinandergequetscht wird. */
.import-aufbau{ display:grid; gap:22px; align-items:start; }
.import-aufbau-skizze{ border:1px solid var(--line); border-radius:12px; padding:12px; background:#fff; }
/* Das SVG traegt eigene Breiten-/Hoehenangaben; erst width:100% laesst es mitskalieren. */
.import-aufbau-skizze svg{ width:100%; height:auto; display:block; }
.import-aufbau-liste{ min-width:0; }
.import-aufbau-liste table{ width:100%; }
.import-aufbau-liste td strong{ display:block; }
.import-aufbau-liste td small{ display:block; font-size:.82em; line-height:1.35; }
.import-dicke{ white-space:nowrap; text-align:right; }
.import-neu{ color:var(--orange); font-weight:600; }
/* Die Skizze traegt viewBox="0 0 620 502" und skaliert per width:100%. In einer schmalen Spalte
   wuerde sie auf gut die Haelfte schrumpfen und die Legende unlesbar machen. Deshalb steht sie
   normalerweise ueber der Liste in ihrer natuerlichen Breite; nebeneinander erst ab 1400px, wo
   beides ohne Verkleinerung nebeneinanderpasst. */
.import-aufbau-skizze{ max-width:620px; }
@media (min-width:1400px){
  .import-aufbau{ grid-template-columns:620px minmax(0,1fr); }
}
/* BMC 022.203 (Nutzerauftrag 01.08.2026, "nach dem import muss LCA neu gerechnet werden, keine
   Werte uebertragen"): Aufstellung der Baustoffe, deren Kennwerte beim Import verworfen werden. */
.import-lca-hinweis ul{ margin:.4rem 0 .2rem 1.1rem; padding:0; }
.import-lca-hinweis li{ margin:.15rem 0; line-height:1.4; }
.import-lca-hinweis .import-lca-liste{ margin:.6rem 0 .1rem; }
.import-lca-hinweis .field-help{ margin-top:.5rem; }
/* BMC 022.203 (Nutzerauftrag 01.08.2026, "den badge in die leiste vor die auswahl soll zeigen
   was ausgewaehlt ist"): Der Badge sitzt jetzt im Formular direkt vor dem Auswahlfeld statt als
   Geschwister der Karte. Deshalb kein margin-top mehr, sondern Ausrichtung an der Grundlinie
   des Feldes. Die Farbe folgt der wirksamen Quelle. */
.lca-copy-form{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.lca-copy-form .component-lca-qng-badge{ margin-top:0; align-self:center; }
.component-lca-qng-badge.is-manual{ background:#e2e8f0; color:#334155; border-color:#cbd5e1; }
.component-lca-qng-badge.is-oekobaudat{ background:#dbeafe; color:#1e40af; border-color:#bfdbfe; }
/* BMC 022.203: Auf schmalen Fenstern ist die Kopfleiste hoeher - body{padding-top} wechselt
   dort von 54px auf 66px. Die klebende Bauteilleiste muss mitwandern, sonst verschwindet sie
   dort wieder unter der Leiste. */
@media (max-width:1050px){
  .component-sticky-toolbar{ top:66px; }
}
/* BMC 022.205 (Nutzerauftrag 01.08.2026, "Benutzerführung ist zu umständlich"): Baustoffsuche
   fuer die Schichteingabe. Sie legt sich ueber die vorhandenen <select>-Felder, die als
   Datentraeger erhalten bleiben - so aendert sich weder die Speicherlogik noch die Berechnung,
   und ohne JavaScript bleibt die bisherige Bedienung nutzbar. */
.bsuche{ position:relative; }
.bsuche .bs-feld{ width:100%; padding:10px 12px; border:1px solid #cbd5e1; border-radius:9px; font-size:15px; }
.bsuche .bs-feld:focus{ outline:2px solid #2563eb; outline-offset:1px; }
.bsuche .bs-filter{ display:none; margin-top:8px; }
.bsuche .bs-filter.offen{ display:grid; grid-template-columns:58px repeat(2,minmax(0,1fr)); gap:8px; align-items:center; }
@media(max-width:640px){ .bsuche .bs-filter.offen{ grid-template-columns:1fr 1fr; } }
.bsuche .bs-filter select{ width:100%; padding:6px 9px; border:1px solid #cbd5e1; border-radius:7px; font-size:12.5px; background:#fff; }
.bsuche .bs-filter .bs-lab{ font-size:11.5px; color:#8494a8; }
/* BMC 022.209 - Filter und Sortierung der Baustoffsuche stehen wieder so wie im Entwurf
   vorschau-schicht-neu.html: die drei Filterfelder in einer Zeile, die Sortierung darunter.
   Vorher lagen alle sechs Elemente in EINEM Raster mit drei Spalten. Sobald fuelle() ein
   leeres Filterfeld auf display:none setzte, aenderte sich die Zahl der Rasterkinder - die
   Beschriftung "Sortierung" rutschte in die erste Zeile und das Sortierfeld in die 58-px-Spalte
   darunter, wo von "sinnvollste zuerst" nur noch "sin" zu lesen war. */
.bsuche .bs-filter.bs-filter-stoff.offen{ display:block; }
.bsuche .bs-filter-stoff .bs-fzeile{ display:grid; grid-template-columns:58px repeat(4,minmax(0,1fr)); gap:8px; align-items:center; }
.bsuche .bs-filter-stoff .bs-szeile{ display:grid; grid-template-columns:58px minmax(0,240px); gap:8px; align-items:center; margin-top:7px; }
@media(max-width:640px){
  .bsuche .bs-filter-stoff .bs-fzeile{ grid-template-columns:1fr 1fr; }
  .bsuche .bs-filter-stoff .bs-szeile{ grid-template-columns:1fr; }
}
.bsuche .bs-zahl{ font-size:12px; color:#5b6b80; margin-top:6px; min-height:15px; }
.bsuche .bs-liste{ display:none; margin-top:6px; border:1px solid #dbe3ee; border-radius:10px;
                   background:#fff; max-height:320px; overflow-y:auto; }
.bsuche .bs-liste.offen{ display:block; }
.bsuche .bs-tr{ padding:9px 12px; border-bottom:1px solid #eef2f7; cursor:pointer;
                display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:center; }
.bsuche .bs-tr:last-child{ border-bottom:0; }
.bsuche .bs-tr:hover, .bsuche .bs-tr.aktiv{ background:#eff6ff; }
.bsuche .bs-name{ font-weight:700; color:#1d3557; }
.bsuche .bs-kat{ display:block; font-size:11.5px; color:#8494a8; margin-top:1px; }
.bsuche .bs-werte{ font-size:12px; color:#475569; white-space:nowrap; text-align:right; }
.bsuche .bs-werte b{ color:#1d3557; }
.bsuche .bs-swatch{ width:15px; height:15px; border-radius:3px; border:1px solid rgba(0,0,0,.18); flex-shrink:0; }
.bsuche .bs-qng{ display:inline-block; font-size:10px; font-weight:700; padding:1px 6px;
                 border-radius:999px; margin-left:7px; background:#dcfce7; color:#166534; }
.bsuche .bs-qng.offen{ background:#fee2e2; color:#991b1b; }
.bsuche .bs-wahl{ display:none; padding:10px 12px; background:#dbeafe; border:1px solid #93c5fd; border-radius:9px; }
.bsuche .bs-wahl.offen{ display:block; }
.bsuche .bs-wahl .bs-name{ color:#1e3a8a; }
.bsuche .bs-wahl .bs-detail{ display:block; font-size:12px; color:#5b6b80; margin-top:2px; }
.bsuche .bs-wahl button{ float:right; }
.bsuche .bs-alt{ display:none; margin-bottom:8px; padding:8px 11px; background:#fffbeb;
                 border:1px dashed #fcd34d; border-radius:9px; font-size:12.5px; color:#78350f; }
.bsuche .bs-alt.offen{ display:block; }
.bsuche .bs-alt button{ float:right; }
/* BMC 022.206: Neues Eingabeschema der Schicht. Die Schichtdicke steht allein oben, Gefach und
   Balkenlage gleichrangig nebeneinander, der Stegtraeger eingerueckt in der Balkenlage. */
.se-kern{ background:#f8fafc; border:1px solid #dbe3ee; border-radius:12px; padding:18px; margin-bottom:0; }
/* Die Leiste sitzt jetzt im Kasten (Nutzerauftrag "eine Ebene nach unten"). Der bisherige
   Stil hing an .layer-edit-form > .layer-edit-top-actions und greift dort nicht mehr;
   angeheftet bleibt sie nicht, sie scrollt mit dem Kasten. */
/* Die Leiste steht eigenstaendig im weissen Bereich ueber dem Kasten - wie im Entwurf.
   Der bisherige Stil aus .layer-edit-form > .layer-edit-top-actions (angeheftet, mit
   Schatten und Trennlinie) wird dafuer neutralisiert. */
/* BMC 022.209 (Nutzerwunsch 02.08.2026 "die Kopfzeile noch sticky"): das Anheften kommt
   zurueck. Beim Umbau auf das neue Schema war es mit position:static!important abgeschaltet
   worden, weil die Leiste eine Ebene nach unten wanderte - in langen Schichten war der
   Speichern-Knopf dadurch nur ganz oben erreichbar. Das Layout der Leiste (flex, Abstaende)
   bleibt unveraendert, zurueck kommen nur Haftung, deckender Hintergrund und die Kante.
   Der Hintergrund MUSS deckend sein, sonst laeuft der Inhalt sichtbar darunter durch. */
.se-leiste{
  position:sticky!important;
  top:0; z-index:40;
  display:flex!important; align-items:center; gap:.65rem; flex-wrap:nowrap;
  margin:0 0 12px!important; padding:10px 0!important;
  background:#fff!important; border-bottom:1px solid #e2e8f0!important;
  box-shadow:0 6px 10px -8px rgba(15,23,42,.35)!important; backdrop-filter:none!important;
}
/* Das Bezeichnungsfeld muss schrumpfen duerfen, sonst draengt es die Kennzeichen
   und die Knoepfe in eine zweite Zeile. */
.se-leiste > .layer-edit-top-bezeichnung,
.se-leiste > .layer-edit-top-bezeichnung-huelle{ flex:1 1 0; min-width:0; width:auto; }
.se-leiste > .layer-edit-flags{ flex:0 0 auto; }
@media(max-width:760px){
  .se-leiste{ flex-wrap:wrap!important; }
  .se-leiste > .layer-edit-top-bezeichnung,
  .se-leiste > .layer-edit-top-bezeichnung-huelle{ flex:1 1 100%; }
}
.se-kern > .layer-edit-top-actions button,
.se-kern > .layer-edit-top-actions .button{ min-width:110px; margin:0; }
/* Nachgebaute Kopfleiste im Dialog "Neue Schicht": das Bezeichnungsfeld sitzt in einer
   Huelle, damit es sich wie beim Bearbeiten verhaelt. */
.layer-edit-top-bezeichnung-huelle{ display:block; flex:1 1 0; min-width:0; margin:0; }
.layer-edit-top-bezeichnung-huelle input{ width:100%; }
.se-kern > .layer-edit-top-actions > .layer-edit-top-bezeichnung-huelle{ flex:1 1 0; min-width:0; }

.se-kopfreihe{ display:flex; align-items:flex-end; gap:30px; flex-wrap:wrap; }
.se-dicke{ flex:0 0 auto; max-width:210px; }
.se-dicke label{ display:block; }
.se-haken{ display:flex; gap:26px; flex-wrap:wrap; padding-bottom:11px; }
.se-haken-zeile{ display:inline-flex; align-items:center; gap:9px; cursor:pointer;
                 color:#475569; font-size:13.5px; white-space:nowrap; }
.se-haken-zeile input{ width:17px; height:17px; margin:0; accent-color:#2563eb; cursor:pointer; }
.se-haken-zeile input:disabled{ cursor:not-allowed; }
.se-haken-zeile:has(input:disabled){ opacity:.45; }

.se-mit-hinweis{ position:relative; }
/* display:none statt visibility:hidden - ein nur unsichtbarer Kasten von 250px zaehlt
   weiter zur Breite und liess den ganzen Dialog waagerecht rollen. */
.se-mit-hinweis .se-hinweis{ display:none; position:absolute; left:0; top:calc(100% + 7px); z-index:30;
  width:250px; padding:9px 11px; background:#1d3557; color:#fff; border-radius:9px;
  font-size:12.5px; line-height:1.45; white-space:normal; box-shadow:0 8px 20px rgba(15,23,42,.22);
  pointer-events:none; }
.se-mit-hinweis:hover .se-hinweis, .se-mit-hinweis:focus-within .se-hinweis{ display:block; }

.se-stoffe{ display:grid; grid-template-columns:1fr; gap:16px; margin-top:16px; }
.se-stoffe.se-zwei{ grid-template-columns:1fr 1fr; }
@media(max-width:900px){ .se-stoffe.se-zwei{ grid-template-columns:1fr; } }
.se-spalte{ min-width:0; padding:13px; border-radius:11px; }
.se-spalte.se-a{ background:#eff6ff; border:1px solid #bfdbfe; }
.se-spalte.se-b{ background:#faf3e8; border:1px solid #e8d7bd; display:none; }
.se-spalte.se-b.se-sichtbar{ display:block; }
.se-spaltenkopf{ display:flex; align-items:center; justify-content:space-between; gap:12px;
                 flex-wrap:wrap; margin-bottom:9px; min-height:30px; }
.se-titel{ font-weight:700; font-size:14px; color:#1e3a8a; }
.se-b .se-titel{ color:#8a5a2b; }
.se-masse{ display:flex; gap:14px; }
.se-mfeld{ display:inline-flex; align-items:center; gap:5px; font-size:13px; color:#8a5a2b; font-weight:600; }
.se-mfeld input{ width:66px; padding:4px 7px; border:1px solid #e0c9a6; border-radius:6px;
                 font-size:13px; text-align:right; font-weight:700; color:#5b3d1e; background:#fffdf9; }
.se-mfeld span{ font-weight:400; }

.se-steg{ margin-top:12px; padding-top:11px; border-top:1px solid rgba(138,90,43,.22); }
/* Die beiden Haken der Balkenlage stehen nebeneinander und brauchen Luft dazwischen. */
.se-stegkopf{ display:flex; align-items:center; gap:26px; flex-wrap:wrap; }
/* Ist der Steg festgelegt, klappt der Bereich zu und der Kopf zeigt den Wert. */
.se-steg.se-steg-zu .se-stegteil{ display:none; }
.se-swert{ padding:3px 11px; border:1px solid #c8ab86; border-radius:999px;
           background:#fff7ed; color:#8a5a2b; font-size:12.5px; font-weight:700; cursor:pointer; }
.se-swert:hover{ background:#fdf3e6; }
.se-swert-aendern{ margin-left:9px; font-weight:400; text-decoration:underline; }
/* Der Hoverhinweis am Info-Zeichen traegt mehrere Zeilen und braucht mehr Breite. */
.se-info .se-hinweis{ width:300px; left:auto; right:0; }
.se-stegkopf .se-haken-zeile{ color:#8a5a2b; margin:0; }
.se-stegkopf .se-haken-zeile input{ accent-color:#8a5a2b; }
/* Gurthoehe und Stegbreite stehen nebeneinander, das Stegmaterial darunter - wie in der
   Vorschau. */
.se-stegteil{ display:flex; flex-wrap:wrap; gap:14px; }
.se-stegteil > label{ flex:1 1 130px; min-width:0; margin:0; }
.se-stegteil > label.material-select-wrap{ flex:1 1 100%; }
.se-stegteil{ margin-top:11px; margin-left:14px; padding-left:13px;
              border-left:3px solid #e0c9a6; }
/* Die Sichtbarkeit der Stegfelder steuert das hidden-Attribut aus public/index.php -
   ein eigenes Auf- und Zuklappen wuerde damit kollidieren. */
.se-stegteil:not(:has(label:not([hidden]))){ display:none; }

.se-zusatz{ display:none; margin-top:16px; padding:14px; background:#f8fafc;
            border:1px solid #cbd5e1; border-radius:11px; }
.se-zusatz.se-sichtbar{ display:block; }
.se-anteil{ display:none; margin-top:14px; padding:10px 13px; background:#fff;
            border:1px solid #e2e8f0; border-radius:9px; font-size:14px; color:#334155; }
.se-anteil.se-sichtbar{ display:block; }
.se-anteil b{ color:#1d3557; }
.se-warn{ color:#b45309; }

/* BMC 022.207 - Feinschliff des neuen Schichtschemas.
   Der Kern sitzt in einem Formular-Raster und braucht die volle Breite; ohne diese
   Zeile steht er halb so breit wie die Bloecke darunter. */
.se-kern{ grid-column:1 / -1; }
/* Suchkarte und Kennwertkarte nannten Name, Kennwerte und QNG-Stand doppelt.
   Oben im farbigen Baustoffbalken bleiben Name und QNG-Badge (Nutzerwunsch
   "wenn lca zugeordnet ein badge im baustoffbalken"), darunter stehen die
   ausfuehrlichen Kennwerte und die uebrigen Badges. Der QNG-Badge ist in
   app.js immer der erste in .material-inline-badges. */
/* Die gewaehlte Karte traegt jetzt selbst Kurzname, Langname und Kennwerte - wie im
   erarbeiteten Entwurf. Die eingebettete Kennwertkarte von app.js entfaellt damit. */
.se-kern .material-inline-preview{ display:none; }
.se-kern .bs-wahl{ background:#fff; }
/* Die gewaehlte Karte traegt den Rahmen ihrer Spalte: blau im Gefach, hellbraun in der
   Balkenlage - wie in der Vorschau. */
.se-b .bs-wahl.offen{ border-color:#e0c9a6; }
.se-b .bs-wahl .bs-name{ color:#8a5a2b; }
/* BMC 022.209 (Nutzerauftrag 02.08.2026): die Baustoffkarte selbst wird gruen, sobald fuer die
   Schicht Oekobilanz UND Austausch stehen - wie im Entwurf (.gewaehlt.komplett). Gesetzt wird
   die Klasse von seKartenStand() in functions.php. Steht bewusst hinter den Pfadfarben, damit
   sie auch fuer die braune Balkenlage gilt. */
.se-kern .bs-wahl.is-komplett,
.se-b .bs-wahl.offen.is-komplett{ background:#f0fdf4; border-color:#86efac; }
/* Der QNG-Badge bekommt einen dunkleren gruenen Rahmen. */
.bs-qng{ border:1px solid #15803d; }
.bs-qng.offen{ border-color:#dc2626; }
.bs-lang{ display:block; width:100%; font-size:12px; color:#64748b; line-height:1.35; margin-top:1px; }
.bs-tr .bs-lang{ font-size:11.5px; }

/* Erklaerzeile unter den Anteilen und Fussleiste - beides aus dem Entwurf. */
.se-anteil-erklaerung{ display:block; margin-top:3px; font-size:12.5px; color:#64748b; }
/* Die unteren Bloecke stehen im Entwurf mit 10px Abstand, die Fussleiste mit 20px.
   Im Formular-Raster kaemen sonst row-gap und eigene Aussenabstaende zusammen. */
.se-untere{ grid-column:1 / -1; display:flex; flex-direction:column; gap:10px; }
/* Die beiden Formulare haben verschiedene Rasterabstaende: die Bearbeitung 16px,
   der Dialog "Neue Schicht" 10px. Beide werden auf die 10px des Entwurfs gebracht. */
.form-grid > .se-untere{ margin-top:-6px; }
.form-grid.compact > .se-untere{ margin-top:0; }
.se-untere > details{ margin:0; }
.se-fuss{ display:flex; align-items:center; gap:16px; flex-wrap:wrap;
          margin-top:10px; padding-top:14px; border-top:1px solid #e2e8f0; }
.se-fusstext{ font-size:13.5px; color:#475569; }
.se-fusstext.offen{ color:#b45309; font-weight:600; }

/* Ökobilanz je Pfad - Kopfzeile mit Pfadname und gewaehltem Baustoff, wie im Entwurf. */
.qz-hinweis{ margin:2px 0 14px; font-size:13px; color:#64748b; line-height:1.5; }
.qz{ margin-bottom:18px; }
.qz + .qz{ padding-top:16px; border-top:1px solid #eef2f7; }
.qz-kopf{ display:flex; align-items:baseline; gap:10px; margin-bottom:7px; }
.qz-pfad{ font-weight:700; font-size:13.5px; color:#166534; }
.qz.qz-offen .qz-pfad{ color:#b91c1c; }
/* Ohne eigenen Rechenwert, aber mit QNG-Zuordnung am Baustoff: gueltiger Stand, nur dezent. */
.qz.qz-standard .qz-pfad{ color:#475569; }
/* Austausch: Kopfzeile und Ergebnis wie im Entwurf. */
.b4-kopf{ margin:4px 0 6px; }
/* Die Inhalte des Austauschblocks haengen direkt am <details> und hatten deshalb keinen
   Innenabstand - sie klebten am Rahmen. */
.layer-b4-settings > :not(summary){ margin-left:14px; margin-right:14px; }
.layer-b4-settings > .b4-fussnote{ margin-bottom:12px; }
/* Austauschstatus als Auswahlknoepfe, wie im Entwurf. */
.b4-status{ display:flex; gap:22px; flex-wrap:wrap; margin:0 0 12px; }
.b4-status-wahl{ display:inline-flex; align-items:center; gap:7px; font-size:13.5px;
                 color:#334155; cursor:pointer; }
.b4-status-wahl input{ width:16px; height:16px; margin:0; accent-color:#15803d; cursor:pointer; }
.b4-fussnote{ margin-top:14px; padding-top:12px; border-top:1px solid #eef2f7; }
/* Die Trefferliste steht wie in der Vorschau in einem eigenen Rahmen. */
.bbsuche .bs-liste.offen{ border:1px solid #cbd5e1; border-radius:9px; }
.bbsuche .bs-zahl{ margin:4px 0 6px; }
.b4-ergebnis{ margin-top:10px; font-size:13.5px; color:#334155; }
.b4-ergebnis.offen{ color:#b45309; }
/* Der bisherige Weg ueber Kostengruppen bleibt erhalten, tritt aber zurueck. */
.bb-zweitweg{ margin-top:14px; padding-top:12px; border-top:1px solid #eef2f7; }
.bb-zweitweg > summary{ cursor:pointer; font-size:13px; color:#64748b; }
.bb-zweitweg[open] > summary{ margin-bottom:10px; }
.bbsuche .bs-liste{ max-height:230px; }
/* Gruppenauswahl ueber dem Suchfeld, wie in der Vorschau. */
.bb-gruppe{ display:flex; align-items:center; gap:10px; margin-bottom:8px; }
/* Die Zusaetze des Bestands treten hinter die Vorschau-Elemente zurueck. */
.layer-b4-settings > label.checkbox-label{ margin-top:14px; font-size:13px; }
.layer-b4-settings > p.field-help{ margin:6px 0 0; }
.bb-gruppe .bs-lab{ flex:0 0 auto; }
.bb-gruppe select{ flex:1 1 auto; min-width:0; }
/* Die uebernommene Zuordnung steht als gruene Karte da. */
.bbsuche .bs-wahl.offen,.qsuche .bs-wahl.offen{ background:#f0fdf4; border-color:#86efac; }
.bbsuche .bs-wahl .bs-name,.qsuche .bs-wahl .bs-name{ color:#166534; }
.bbsuche .bs-wahl .bs-lang,.qsuche .bs-wahl .bs-lang{ color:#166534; }
.bbsuche .bs-wahl .bs-detail,.qsuche .bs-wahl .bs-detail{ color:#15803d; }
.qz-stoff{ font-size:13px; color:#64748b; }
.qz label{ display:block; }
/* QNG-Suche: gleiche Bedienung wie die Baustoffsuche, nur ohne Farbfeld und Sortierung. */
.qsuche .bs-liste{ max-height:240px; }
.qsuche .bs-tr{ grid-template-columns:1fr auto; }
.qsuche .bs-name{ color:#166534; font-weight:700; }
.qsuche .bs-werte{ color:#166534; white-space:nowrap; }
.qsuche .bs-wahl .bs-name{ font-size:14px; }
/* Statuschip mittig im Blockkopf, wie im Entwurf */
.layer-edit-accordion > summary{ display:flex; align-items:center; gap:14px; }
.layer-edit-accordion > summary > strong{ flex:0 0 auto; }
.layer-edit-accordion > summary > .lea-chip{ margin-left:auto; margin-right:auto; }
/* Haken in der Balkenlage tragen deren Braunton. Die Zeile "durchgehend zeichnen"
   traegt ihre Erklaerung als Hinweis am Mauszeiger, damit sie die Spalte nicht sprengt. */
.se-b .se-haken-zeile{ color:#8a5a2b; }
.se-b .se-haken-zeile input{ accent-color:#8a5a2b; }
.se-durchgehend{ margin-top:10px; }
/* Rundes "i" neben dem Stegtraeger-Haken, Erklaerung erscheint am Mauszeiger. */
.se-info{ display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px;
          border:1px solid #c8ab86; border-radius:50%; font-size:11.5px; font-style:italic;
          font-weight:700; color:#8a5a2b; cursor:help; flex:0 0 auto; }
.se-info:focus{ outline:2px solid #8a5a2b; outline-offset:1px; }
/* Solange kein Baustoff gewaehlt ist, zeigt die Kennwertkarte nur einen leeren Kasten
   ("Keine inhomogene Schicht") - der sah aus wie ein Eingabefeld. Er bleibt verborgen,
   bis wirklich etwas darin steht. */
.se-kern .material-inline-preview:has(.material-inline-empty){ display:none; }
/* Die Bezeichnung steht im Dialog "Neue Schicht" neben der Schichtdicke - in der
   Bearbeitung sitzt sie schon in der Kopfleiste und wird dort nicht angefasst. */
.se-bez{ flex:1 1 240px; min-width:200px; }
.se-bez input{ width:100%; }/* BMC 022.213 (Nutzerentscheidung 03.08.2026, Variante A): Hinweis im EECON-Zuordnungsdialog,
   wenn der beste Kandidat unter der Schwelle liegt. Die Liste bleibt vollstaendig sichtbar -
   nur die Beschriftung sagt jetzt die Wahrheit, statt einen 33-Punkte-Treffer wie einen
   Vorschlag aussehen zu lassen. Gelb statt rot: es ist kein Fehler, sondern eine Entscheidung,
   die der Mensch treffen muss. */
.eecon-kein-treffer{margin:0 0 6px;padding:6px 9px;border:1px solid #fcd34d;border-radius:7px;background:#fffbeb;color:#78350f;font-size:12.5px;line-height:1.4}
.eecon-kein-treffer strong{color:#92400e}
