/* MP-20260829-008 — Golden Screen Aufmaß
   Reine Darstellungs- und Interaktionshierarchie. Keine Fachlogik. */

#view-aufmass {
  --am-bg: #f5f5f7;
  --am-surface: rgba(255, 255, 255, .94);
  --am-surface-muted: #f8f8fa;
  --am-line: rgba(15, 23, 42, .10);
  --am-line-strong: rgba(15, 23, 42, .16);
  --am-text: rgb(var(--mp-t1-1d1d1f));
  --am-secondary: rgb(var(--mp-t3-6e6e73));
  --am-blue: #168bd2;
  --am-blue-soft: rgba(43, 176, 255, .11);
  --am-green: #21864b;
  --am-radius: 18px;
  background: var(--am-bg);
  color: var(--am-text);
}

#view-aufmass > .view-box {
  width: min(1520px, calc(100% - 40px));
  max-width: none;
  margin-inline: auto;
  padding: 24px 0 120px;
}

#view-aufmass .mp-aufmass-hero {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  margin: 0 0 20px !important;
  padding: 8px 4px 18px !important;
  min-height: 0 !important;
  border: 0 !important;
  border-bottom: 1px solid var(--am-line) !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

/* iPad Querformat / kompakte Landscape-Fenster: Höhe ist der Engpass. */
@media (min-width: 901px) and (max-width: 1199px) and (max-height: 900px) {
  body:has(#view-aufmass.active) #mpSideRail,
  body:has(#view-aufmass.active) #mpRailOverlay,
  body:has(#view-aufmass.active) .bottom-nav {
    display: none !important;
  }

  body:has(#view-aufmass.active) {
    padding-left: 0 !important;
  }

  #view-aufmass > .view-box {
    width: min(100% - 28px, 1120px);
    margin-top: 0 !important;
    padding-top: 10px !important;
  }

  #view-aufmass .mp-aufmass-hero {
    margin-bottom: 12px !important;
    padding: 2px 2px 10px !important;
  }

  #view-aufmass .mp-aufmass-eyebrow,
  #view-aufmass .mp-aufmass-hero p,
  #view-aufmass .mp-aufmass-sync {
    display: none !important;
  }

  #view-aufmass .mp-aufmass-hero h1 {
    font-size: 36px;
  }

  #view-aufmass .mp-aufmass-workspace {
    grid-template-columns: 390px minmax(0, 1fr);
    gap: 16px;
  }

  /* MP-20260913: Master-Höhe und Scroll-Container folgen goldenem Workspace-Standard */
}

/* MP-20260829-008 / MP-20260913: Desktop-Layout für Aufmaß Arbeitsbereich (identisch zu Angebote/Baustellen) */
@media (min-width: 1200px) {
  #view-aufmass > .view-box {
    grid-template-columns: var(--mp-ws-rail-open, 420px) minmax(0, 1fr) !important;
  }
  #view-aufmass > .view-box.is-rail-collapsed,
  html body #view-aufmass.view.active > .view-box.is-rail-collapsed {
    grid-template-columns: var(--mp-ws-rail-closed, 58px) minmax(0, 1fr) !important;
  }
  #view-aufmass > .view-box.is-rail-collapsed .mp-aufmass-master {
    width: 64px !important;
  }
}

@media (max-width: 1199px) {
  #view-aufmass .fassade-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}

/* MP-20260913: Aufmaß-Toolbar und Monats-Zusammenfassungen folgen universell den Golden-List-Regeln aus mp-list-workspaces-golden.css */
/* MP-20260913: Aufmaß-Listenzeilen folgen universell den Golden-List-Regeln aus mp-list-workspaces-golden.css (identisch zu Baustellen) */


/* Desktop: Stripe-artige Arbeits-Shell mit echter linker Datensatzleiste. */
@media (min-width: 1200px) {
  body:has(#view-aufmass.active) #mpSideRail,
  body:has(#view-aufmass.active) #mpRailOverlay {
    display: none !important;
  }

  body:has(#view-aufmass.active) {
    padding-left: 0 !important;
  }

  #view-aufmass > .view-box {
    display: grid !important;
    grid-template-columns: var(--mp-ws-rail-open, 420px) minmax(0, 1fr) !important;
    grid-template-areas:
      "master hero"
      "master detail";
    align-items: start;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0 0 120px;
  }

  #view-aufmass .mp-aufmass-hero {
    grid-area: hero;
    margin: 0 32px 20px !important;
    padding: 26px 4px 18px !important;
  }

  #view-aufmass .mp-aufmass-workspace {
    display: contents !important;
  }

  #view-aufmass .mp-aufmass-rail-toggle {
    position: absolute;
    z-index: 5;
    top: 20px;
    right: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    padding: 0;
    border: 1px solid var(--am-line);
    border-radius: 10px;
    background: rgb(var(--mp-flaeche-rgb));
    color: var(--am-secondary);
    box-shadow: none;
  }

  #view-aufmass .mp-aufmass-rail-toggle:hover,
  #view-aufmass .mp-aufmass-rail-toggle:focus-visible {
    border-color: var(--am-line-strong);
    color: var(--am-text);
    background: var(--am-surface-muted);
  }

  #view-aufmass .mp-aufmass-rail-toggle-icon {
    font-size: 24px;
    font-weight: 400;
    line-height: 1;
  }

  #view-aufmass .mp-aufmass-rail-toggle-label {
    position: absolute;
    overflow: hidden;
    width: 1px;
    height: 1px;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  #view-aufmass .mp-aufmass-detail {
    grid-area: detail;
    min-width: 0;
    padding: 0 32px;
  }

  #view-aufmass .aufmass-list-card {
    height: 100%;
    max-height: none;
    border: 0 !important;
    border-radius: 0 !important;
    background: rgb(var(--mp-flaeche-rgb)) !important;
    box-shadow: none !important;
  }

  #view-aufmass .aufmass-list-card > .card-header {
    padding: 25px 22px 14px !important;
  }

  #view-aufmass .aufmass-list-card > .card-body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    padding: 0 18px 18px !important;
  }

  #view-aufmass .aufmass-list-scroll {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none !important;
  }

  #view-aufmass #aufmassSavedList .mp-record-list--v2 {
    max-height: none !important;
    overscroll-behavior: contain;
  }

  #view-aufmass #aufmassSavedList .mp-record-toolbar {
    position: sticky;
    z-index: 3;
    top: 0;
    padding: 8px 0 10px !important;
    background: rgb(var(--mp-flaeche-rgb));
  }

  #view-aufmass #aufmassSavedList .mp-record-sort::before {
    content: "Sortieren";
    margin-right: 4px;
    color: var(--am-secondary);
    font-size: 11px;
    font-weight: 650;
  }

  #view-aufmass > .view-box.is-rail-collapsed {
    grid-template-columns: 64px minmax(0, 1fr);
  }

  #view-aufmass > .view-box.is-rail-collapsed .mp-aufmass-master {
    width: 64px;
  }

  #view-aufmass > .view-box.is-rail-collapsed .aufmass-list-card {
    display: none !important;
  }

  #view-aufmass > .view-box.is-rail-collapsed .mp-aufmass-rail-toggle {
    top: 18px;
    right: 14px;
  }
}

@media (max-width: 1199px) {
  #view-aufmass .mp-aufmass-rail-toggle {
    display: none !important;
  }
}

/* Finale Desktop-Spezifität gegen die später geladenen Legacy-View-Abstände. */
@media (min-width: 1200px) {
  #view-aufmass > .view-box {
    width: calc(100% + 24px) !important;
    margin: 0 0 0 -12px !important;
    padding: 0 0 120px !important;
  }

  #view-aufmass .mp-aufmass-master {
    top: 0 !important;
    height: calc(100vh - 58px) !important;
    max-height: none !important;
  }

  #view-aufmass .aufmass-list-card {
    height: 100% !important;
    max-height: none !important;
  }
}

#view-aufmass .mp-nzwin-btn {
  display: none !important;
}

#view-aufmass .mp-aufmass-eyebrow {
  margin-bottom: 6px;
  color: var(--am-blue);
  font-size: 12px;
  font-weight: 750;
  letter-spacing: .08em;
  text-transform: uppercase;
}

#view-aufmass .mp-aufmass-hero h1 {
  margin: 0;
  color: var(--am-text);
  font-size: clamp(34px, 4vw, 50px);
  font-weight: 760;
  letter-spacing: -.045em;
  line-height: 1.02;
}

#view-aufmass .mp-aufmass-hero p {
  max-width: 660px;
  margin: 8px 0 0;
  color: var(--am-secondary);
  font-size: 15px;
  line-height: 1.5;
}

#view-aufmass .mp-aufmass-hero-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
}

#view-aufmass .mp-aufmass-sync {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-right: 6px;
  color: var(--am-secondary);
  font-size: 12px;
  font-weight: 650;
  white-space: nowrap;
}

#view-aufmass .mp-aufmass-sync > span {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #34c759;
  box-shadow: 0 0 0 4px rgba(52, 199, 89, .11);
}

#view-aufmass .mp-aufmass-workspace {
  display: grid;
  grid-template-columns: minmax(280px, 330px) minmax(0, 1fr);
  align-items: start;
  gap: 20px;
}

#view-aufmass .mp-aufmass-master,
#view-aufmass .mp-aufmass-detail {
  min-width: 0;
}

#view-aufmass .mp-aufmass-master {
  position: sticky;
  top: 88px;
}

#view-aufmass .aufmass-list-card,
#view-aufmass .aufmass-sticky-header,
#view-aufmass #aufmassInnenContainer > .card,
#view-aufmass #aufmassFassadeContainer > .card,
#view-aufmass .aufmass-room-card {
  border: 1px solid var(--am-line) !important;
  border-radius: var(--am-radius) !important;
  background: var(--am-surface) !important;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .025), 0 10px 28px -24px rgba(15, 23, 42, .32) !important;
  backdrop-filter: none !important;
}

#view-aufmass .aufmass-list-card {
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - 112px);
  margin: 0 !important;
  overflow: hidden;
}

#view-aufmass .aufmass-list-card > .card-header {
  padding: 18px 18px 12px !important;
  border: 0 !important;
  background: transparent !important;
}

#view-aufmass .aufmass-list-card > .card-header h2 {
  font-size: 20px !important;
  letter-spacing: -.025em;
}

#view-aufmass .aufmass-list-card > .card-header p {
  margin-top: 3px !important;
  font-size: 12px;
}

#view-aufmass .aufmass-list-card > .card-body {
  min-height: 0;
  padding: 0 14px 14px !important;
  overflow: hidden;
}

#view-aufmass .aufmass-list-scroll {
  max-height: calc(100vh - 255px) !important;
  overflow: auto !important;
  overscroll-behavior: contain;
  scrollbar-width: thin;
}

#view-aufmass .mp-list-search-row {
  margin-bottom: 10px;
}

/* MP-20260913: Suche, Toolbar, Monatsheader und Zeilen folgen mp-list-workspaces-golden.css */


/* Raum gesamt / Wand für Wand: kompakter, klarer Apple-Segmented-Control. */
#view-aufmass .aufmass-room-card .mp-tabs[data-room-tabs] {
  display: inline-grid !important;
  grid-template-columns: minmax(132px, 1fr) minmax(132px, 1fr) !important;
  width: auto !important;
  max-width: 340px !important;
  gap: 3px !important;
  padding: 4px !important;
  border: 1px solid rgba(15, 23, 42, .09) !important;
  border-radius: 14px !important;
  background: rgba(var(--mp-f3-eff1f5), 0.88) !important;
  box-shadow: inset 0 1px 2px rgba(15, 23, 42, .035) !important;
}

#view-aufmass .aufmass-room-card .mp-tabs[data-room-tabs] .mp-tab-btn {
  min-height: 38px !important;
  padding: 0 16px !important;
  border: 0 !important;
  border-radius: 10px !important;
  background: transparent !important;
  color: rgb(var(--mp-t3-687386)) !important;
  font-size: 13px !important;
  font-weight: 680 !important;
  white-space: nowrap !important;
  box-shadow: none !important;
  transition: color 180ms ease, background 180ms ease, box-shadow 180ms ease, transform 120ms ease !important;
}

#view-aufmass .aufmass-room-card .mp-tabs[data-room-tabs] .mp-tab-btn.is-active {
  background: rgb(var(--mp-flaeche-rgb)) !important;
  color: rgb(var(--mp-t1-172033)) !important;
  box-shadow: 0 2px 8px rgba(15, 23, 42, .10), 0 0 0 1px rgba(15, 23, 42, .045) !important;
}

#view-aufmass .aufmass-room-card .mp-tabs[data-room-tabs] .mp-tab-btn:focus-visible {
  outline: 3px solid rgba(43, 176, 255, .28) !important;
  outline-offset: 1px !important;
}

/* Rechteck / Verwinkelt nutzt dieselbe klare Formensprache. */
#view-aufmass .mp-raum-rg-row .mp-rg-seg {
  padding: 4px !important;
  gap: 3px !important;
  border: 1px solid rgba(15, 23, 42, .09) !important;
  border-radius: 14px !important;
  background: rgba(var(--mp-f3-eff1f5), 0.88) !important;
}

#view-aufmass .mp-raum-rg-row .mp-rg-seg button {
  min-height: 38px !important;
  padding: 0 15px !important;
  border-radius: 10px !important;
  color: rgb(var(--mp-t3-687386)) !important;
  font-weight: 680 !important;
}

#view-aufmass .mp-raum-rg-row .mp-rg-seg button.is-active,
#view-aufmass .mp-raum-rg-row .mp-rg-seg[data-rg-form="winkel"] button[data-rg-seg="winkel"].is-active {
  background: rgb(var(--mp-flaeche-rgb)) !important;
  color: rgb(var(--mp-t1-172033)) !important;
  box-shadow: 0 2px 8px rgba(15, 23, 42, .10), 0 0 0 1px rgba(15, 23, 42, .045) !important;
}

/* Tablet-Querformat / kleine Desktopfenster: eigener Arbeitszustand.
   Die Masterliste bleibt vollständig bedienbar, beansprucht aber nicht mehr
   fast ein Drittel der Breite. Die Zuordnung wird als flache Zwei-Zonen-Karte
   aufgebaut, statt Modus und Aktionen tief unter die Selects zu drücken. */
@media (min-width: 1200px) and (max-width: 1439px) {
  html body #view-aufmass.view.active > .view-box {
    grid-template-columns: 344px minmax(0, 1fr) !important;
  }

  #view-aufmass .mp-aufmass-master {
    width: 344px !important;
  }

  #view-aufmass .aufmass-list-card > .card-header {
    padding-inline: 20px 58px !important;
  }

  #view-aufmass .aufmass-list-card > .card-body {
    padding-inline: 18px !important;
  }

  #view-aufmass .mp-aufmass-hero {
    margin-inline: 18px !important;
  }

  #view-aufmass .mp-aufmass-detail {
    padding-inline: 18px !important;
  }

  #view-aufmass .aufmass-sticky-header.premium {
    display: grid !important;
    grid-template-columns: minmax(360px, 1.2fr) minmax(330px, .8fr) !important;
    grid-template-areas: "zuordnung command" "status status";
    column-gap: 18px !important;
    row-gap: 10px !important;
    align-items: end !important;
    min-height: 0 !important;
    padding: 18px !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-zuordnung {
    grid-area: zuordnung;
    align-self: stretch;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-cmd-divider {
    display: none !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-cmd {
    grid-area: command;
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-end !important;
    gap: 10px !important;
    width: 100% !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-mode-shell,
  #view-aufmass .aufmass-sticky-header .aufmass-mode-buttons {
    width: 100% !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-mode-buttons {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-mode-btn {
    min-width: 0 !important;
    padding-inline: 12px !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-cmd-actions {
    display: grid !important;
    grid-template-columns: minmax(112px, 1fr) auto auto 44px !important;
    gap: 8px !important;
    width: 100% !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-cmd-actions > button {
    min-width: 0 !important;
    padding-inline: 12px !important;
    white-space: nowrap !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-export-status {
    grid-area: status;
  }
}

#view-aufmass .aufmass-sticky-header {
  position: static !important;
  margin: 0 0 16px !important;
  padding: 20px !important;
}

#view-aufmass .aufmass-zuo-head {
  margin-bottom: 10px;
}

#view-aufmass .aufmass-zuo-head h5 {
  color: var(--am-text);
  font-size: 13px;
  letter-spacing: .02em;
}

#view-aufmass .aufmass-zuo-hint {
  color: var(--am-secondary);
  font-size: 11px;
}

#view-aufmass .aufmass-cmd-divider {
  margin: 16px 0 !important;
  background: var(--am-line) !important;
}

#view-aufmass .aufmass-cmd {
  align-items: center;
  gap: 16px;
}

#view-aufmass .aufmass-mode-shell {
  padding: 3px !important;
  border: 0 !important;
  border-radius: 13px !important;
  background: rgb(var(--mp-f3-ececf0)) !important;
  box-shadow: none !important;
}

#view-aufmass .aufmass-mode-btn {
  min-height: 48px;
  border: 0 !important;
  border-radius: 10px !important;
  color: var(--am-secondary) !important;
}

#view-aufmass .aufmass-mode-btn.active {
  background: rgb(var(--mp-flaeche-rgb)) !important;
  color: var(--am-text) !important;
  box-shadow: 0 1px 4px rgba(15, 23, 42, .10) !important;
}

#view-aufmass .aufmass-cmd-actions {
  margin-left: auto;
}

#view-aufmass .aufmass-cmd-actions > button,
#view-aufmass .mp-aufmass-hero-actions > button {
  min-height: 42px !important;
  border-radius: 11px !important;
  box-shadow: none !important;
}

#view-aufmass #aufmassInnenContainer > .card,
#view-aufmass #aufmassFassadeContainer > .card {
  margin: 0 0 16px !important;
  overflow: hidden;
}

#view-aufmass #aufmassInnenContainer > .card > .card-header,
#view-aufmass #aufmassFassadeContainer > .card > .card-header {
  min-height: 62px;
  padding: 16px 20px !important;
  border-bottom: 1px solid var(--am-line) !important;
  background: transparent !important;
}

#view-aufmass #aufmassInnenContainer > .card > .card-body,
#view-aufmass #aufmassFassadeContainer > .card > .card-body {
  padding: 16px 20px 20px !important;
}

#view-aufmass .aufmass-view-toggle {
  padding: 3px;
  border: 0 !important;
  background: rgb(var(--mp-f3-ececf0)) !important;
  box-shadow: none !important;
}

#view-aufmass .aufmass-view-toggle button {
  min-height: 34px !important;
  border: 0 !important;
  border-radius: 9px !important;
  box-shadow: none !important;
}

#view-aufmass .aufmass-view-toggle button.is-active {
  background: rgb(var(--mp-flaeche-rgb)) !important;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .10) !important;
}

#view-aufmass .aufmass-floor-tabs,
#view-aufmass .aufmass-std-tabs {
  gap: 6px !important;
  overflow-x: auto;
  scrollbar-width: none;
}

#view-aufmass .aufmass-floor-tab,
#view-aufmass .aufmass-std-tab {
  min-height: 38px !important;
  padding: 7px 12px !important;
  border: 1px solid var(--am-line) !important;
  border-radius: 10px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  color: var(--am-text) !important;
  box-shadow: none !important;
  white-space: nowrap;
}

/* MP-20260902-029 Nachtrag (Marcel, Filter-Tabs schwarz statt Markenfarbe):
   aktiver Zustand auf --mp-blue umgestellt — derselbe Token wie
   .mp-record-filter-pill.is-active / .kva-status-filters .filter-btn.active
   (legacy_styles/core/record-list-v2.css), Option A aus der UX-Spec
   2026-09-02-MP-20260902-029-ux-spec-grundriss-editor.md. */
#view-aufmass .aufmass-floor-tab.is-active {
  border-color: transparent !important;
  background: var(--mp-blue, #2bb0ff) !important;
  color: #fff !important;
  box-shadow: 0 1px 2px rgba(43, 176, 255, .20) !important;
}

/* =========================================================
   MP-20260901-013 Paket 1 (④ Filter-Tabs) — "Innenräume"/"Bauelemente"
   Aufklapp-Menüs im Innenbereiche-Kopf, ersetzen die vormaligen zwei
   Chip-Reihen. Trigger bleiben im normalen Fluss von #view-aufmass; das
   geoeffnete Menue wird per JS an body geportalt (bindAufmassFilterBar() in
   aufmass.js) und liegt dadurch strukturell AUSSERHALB von #view-aufmass —
   deshalb eigene, unscoped Regeln fuer den Portal-Zustand (html body > …),
   inkl. Wiederholung der --am-*-Fallbacks, da CSS-Custom-Properties nur
   entlang des DOM-Baums vererben und body kein Nachfahre von #view-aufmass
   ist.
   ========================================================= */
#view-aufmass .mp-aufmass-filterbar {
  display: flex !important;
  flex-wrap: wrap;
  gap: 8px !important;
}

#view-aufmass .mp-af-group {
  position: relative;
}

#view-aufmass .mp-af-trigger {
  display: inline-flex !important;
  align-items: center !important;
  gap: 7px !important;
  min-height: 38px !important;
  padding: 7px 12px !important;
  border: 1px solid var(--am-line) !important;
  border-radius: 10px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  color: var(--am-text) !important;
  box-shadow: none !important;
  font: 600 13px/1.15 -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif !important;
  white-space: nowrap !important;
  cursor: pointer !important;
  touch-action: manipulation !important;
  -webkit-tap-highlight-color: transparent !important;
}

#view-aufmass .mp-af-trigger .mp-af-ico {
  display: inline-flex !important;
  color: var(--am-blue, #168bd2) !important;
}

#view-aufmass .mp-af-value {
  max-width: 130px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--am-secondary, rgb(var(--mp-t3-6e6e73))) !important;
  font-weight: 600 !important;
}

#view-aufmass .mp-af-chevron {
  display: inline-flex !important;
  transition: transform .15s ease;
}

/* MP-20260902-029 Nachtrag: siehe Kommentar bei .aufmass-floor-tab.is-active oben — derselbe Fix, dieselbe Begründung. */
#view-aufmass .mp-af-group.is-open > .mp-af-trigger {
  border-color: transparent !important;
  background: var(--mp-blue, #2bb0ff) !important;
  color: #fff !important;
  box-shadow: 0 1px 2px rgba(43, 176, 255, .20) !important;
}
#view-aufmass .mp-af-group.is-open > .mp-af-trigger .mp-af-ico,
#view-aufmass .mp-af-group.is-open > .mp-af-trigger .mp-af-value,
#view-aufmass .mp-af-group.is-open > .mp-af-trigger .mp-af-chevron {
  color: #fff !important;
}
#view-aufmass .mp-af-group.is-open > .mp-af-trigger .mp-af-chevron {
  transform: rotate(180deg);
}

/* Geschlossener/nicht-portalierter Zustand: das Menue haengt noch im
   Filterbar-Wrapper und ist hidden — Optik ist hier egal, nur "hidden"
   muss greifen (Browser-Default reicht, keine eigene Regel noetig). */

/* Geportalierter (offener) Zustand — Menue haengt direkt unter body. */
html body > .mp-af-menu-portal {
  position: fixed !important;
  /* K-337: box-sizing explizit, sonst kommen padding+border zur per JS gesetzten
     max-height (positionMenu()) zusaetzlich dazu — bei max-height:200px !important
     und 10px+10px Padding wurde real 222px statt 200px gerendert (gemessen,
     tools/test-k337-positionmenu-maxheight.js), also ein Ueberstand trotz korrekt
     gedeckelter max-height. Identische Begruendung/Fix wie .mp-au-menu-portal
     (Paket 3, K-315) oben in dieser Datei. */
  box-sizing: border-box !important;
  z-index: 2147482300 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
  margin: 0 !important;
  padding: 10px !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  border: 1px solid rgba(15, 23, 42, .11) !important;
  border-radius: 12px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  box-shadow: 0 16px 34px -18px rgba(23, 32, 51, .52) !important;
  pointer-events: auto !important;
  touch-action: pan-y !important;
  -webkit-overflow-scrolling: touch !important;
}
html body > .mp-af-menu-portal[hidden] { display: none !important; }

/* MP-20260901-022 (Marcel-Nachtrag ④): wird das Innenräume-Menü AUS DEM
   DOCK heraus geöffnet (aufmass.js: positionMenuFromDock()), bekommt es
   zusätzlich die Klasse .mp-af-menu-dock und fährt transform-basiert von
   rechts herein, statt wie beim Filterbar-Trigger sofort an Ort und Stelle
   zu erscheinen. .mp-af-menu-dock-visible wird JS-seitig erst NACH der
   ersten (unsichtbaren) Positionierung gesetzt (zwei rAF-Schritte), sonst
   gäbe es keinen Zustandswechsel, den die Transition abspielen könnte.
   Reine Transform/Opacity-Animation (kein Layout-Sprung), ~180ms,
   respektiert prefers-reduced-motion. */
html body > .mp-af-menu-portal.mp-af-menu-dock {
  transform: translateX(18px) !important;
  opacity: 0 !important;
  transition: transform .18s cubic-bezier(.16,1,.3,1), opacity .18s ease !important;
}
html body > .mp-af-menu-portal.mp-af-menu-dock.mp-af-menu-dock-visible {
  transform: translateX(0) !important;
  opacity: 1 !important;
}
@media (prefers-reduced-motion: reduce) {
  html body > .mp-af-menu-portal.mp-af-menu-dock {
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}

/* MP-20260901-022 (Marcel-Morgenbefund: "sieht nicht wie meine typischen
   Menüs aus" — Chip-Wolke aus Pill-Buttons, Etagen-Chips vom Menürand
   abgeschnitten, "Meine Räume" wirkte als loser Anhang). Umbau auf die
   mp-bs-nav-Zeilen-Anatomie (core/mp-list-workspaces-golden.js ~Z.1450ff,
   CSS-Referenz mp-baustellen-golden-v2.css:2992-3034, NUR gelesen): volle
   Zeilen mit Icon+Label+Trennlinie statt Chips, EIN Zeilen-Baustein für
   ALLE DREI Menüs (Innenräume-Räume, Bauelemente, Abzüge-&-Zuschläge-
   "+ Hinzufügen" weiter unten) — keine Pillen (Marcels Regel), keine drei
   verschiedenen Optiken für dieselbe Handlung "eine Zeile antippen". */
html body > .mp-af-menu-portal {
  gap: 0 !important;
}
html body > .mp-af-menu-portal .mp-af-menu-section {
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
}
html body > .mp-af-menu-portal .mp-af-menu-section + .mp-af-menu-section {
  margin-top: 10px !important;
  padding-top: 10px !important;
  border-top: 1px solid rgba(15, 23, 42, .08) !important;
}
html body > .mp-af-menu-portal .mp-af-menu-subhead {
  color: rgb(var(--mp-t3-8a96a8)) !important;
  font: 700 10.5px/1.3 -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif !important;
  text-transform: uppercase !important;
  letter-spacing: .04em !important;
}
html body > .mp-af-menu-portal .mp-af-menu-subtext {
  margin-top: -3px !important;
  color: #a7b0bd !important;
  font: 600 11.5px/1.3 -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif !important;
}

/* MP-20260901-022 (mp022d, Marcel-Handy-Befund "Menü-Kopf fehlt"): Titel-
   Kopfzeile — zeigt, was den Tap ausgelöst hat (Dock-Kachel, Filter-Tab,
   "+ Hinzufügen"). Optisch an .mp-af-menu-subhead angelehnt (dieselbe
   Absetzung von den Zeilen darunter), aber als prominenter TITEL: Icon +
   größere/dunklere Schrift statt der kleinen, blassen Uppercase-
   Sektionsüberschrift. Gilt für BEIDE Portal-Typen (Innenräume/
   Bauelemente UND "+ Hinzufügen") — dieselbe CSS-Quelle, kein zweiter
   Kopf-Baustein. Der Titel-Text (.mp-af-menu-title-text) blendet sich
   selbst aus, solange er leer ist (:empty greift dort korrekt, da der
   <span> dann wirklich keine Kind-Knoten hat — der äußere Wrapper hat
   dagegen immer die beiden Icon-/Text-Spans als Kinder und würde von
   :empty nie erfasst, deshalb keine :empty-Regel auf dem Wrapper). */
html body > .mp-af-menu-portal .mp-af-menu-title,
html body > .mp-au-menu-portal .mp-af-menu-title {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 0 10px 10px !important;
  margin-bottom: 6px !important;
  border-bottom: 1px solid rgba(15, 23, 42, .09) !important;
  color: rgb(var(--mp-t1-172033)) !important;
  font: 800 13.5px/1.2 -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif !important;
}
html body > .mp-af-menu-portal .mp-af-menu-title-ico,
html body > .mp-au-menu-portal .mp-af-menu-title-ico {
  display: inline-flex !important;
  flex: 0 0 auto !important;
  color: var(--am-blue, #168bd2) !important;
}
html body > .mp-af-menu-portal .mp-af-menu-title-ico svg,
html body > .mp-au-menu-portal .mp-af-menu-title-ico svg {
  width: 18px !important;
  height: 18px !important;
}
html body > .mp-af-menu-portal .mp-af-menu-title-text:empty,
html body > .mp-au-menu-portal .mp-af-menu-title-text:empty {
  display: none !important;
}

/* Etage bleibt bewusst eine kompakte, EIGENE Segmentzeile (6 kurze Werte —
   volle Zeilen wären hier unnötig hoch), aber jetzt unter eigener
   Überschrift UND mit robust erzwungenem Umbruch: die unscoped
   .aufmass-floor-tabs-Regel in mp-responsive-system.css erzwingt
   flex-wrap:nowrap + overflow-x:auto (für den EHEMALIGEN horizontalen
   Chip-Streifen außerhalb des Menüs) — hier doppelt abgesichert
   (flex-wrap UND overflow), damit sie innerhalb des Menü-Portals niemals
   wieder eine einzeilige, am Rand abgeschnittene Reihe erzwingen kann. */
html body > .mp-af-menu-portal .aufmass-floor-tabs {
  display: flex !important;
  flex-wrap: wrap !important;
  overflow: visible !important;
  gap: 6px !important;
}
html body > .mp-af-menu-portal .aufmass-floor-tab {
  min-height: 34px !important;
  padding: 6px 11px !important;
  border: 1px solid rgba(15, 23, 42, .10) !important;
  border-radius: 9px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  color: rgb(var(--mp-t1-1d1d1f)) !important;
  box-shadow: none !important;
  white-space: nowrap !important;
  font: 600 12.5px/1 -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif !important;
  cursor: pointer !important;
  touch-action: manipulation !important;
  -webkit-tap-highlight-color: transparent !important;
}
/* MP-20260902-029 Nachtrag: portal-scoped (haengt an body, ausserhalb #view-aufmass) —
   --mp-blue ist :root-deklariert und loest deshalb auch hier korrekt auf (im
   Unterschied zu --am-*, siehe Kommentar am Dateianfang). */
html body > .mp-af-menu-portal .aufmass-floor-tab.is-active {
  border-color: transparent !important;
  background: var(--mp-blue, #2bb0ff) !important;
  color: #fff !important;
  box-shadow: 0 1px 2px rgba(43, 176, 255, .20) !important;
}

/* Zeilen-Listen-Container (Raum anlegen / Meine Räume anwenden) — gap:0,
   die Trennlinie kommt von der Zeile selbst (border-bottom), genau wie im
   Referenzmenü. */
html body > .mp-af-menu-portal .mp-af-menu-rooms,
html body > .mp-af-menu-portal .mp-af-menu-rooms-apply {
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
}

/* EIN Zeilen-Baustein für alle drei Menüs — siehe Kommentar oben. */
html body > .mp-af-menu-portal .aufmass-std-tab,
html body > .mp-af-menu-portal .mp-af-room-apply-option,
html body > .mp-af-menu-portal .mp-af-element-option,
html body > .mp-au-menu-portal .mp-au-menu-item {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  width: 100% !important;
  min-height: 46px !important;
  padding: 0 10px !important;
  border: 0 !important;
  border-bottom: 1px solid #edf1f5 !important;
  border-radius: 8px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  color: rgb(var(--mp-t2-273449)) !important;
  font: 700 13px/1.2 -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif !important;
  text-align: left !important;
  white-space: normal !important;
  cursor: pointer !important;
  touch-action: manipulation !important;
  -webkit-tap-highlight-color: transparent !important;
}
html body > .mp-af-menu-portal .aufmass-std-tab:last-child,
html body > .mp-af-menu-portal .mp-af-room-apply-option:last-child,
html body > .mp-af-menu-portal .mp-af-element-option:last-child,
html body > .mp-au-menu-portal .mp-au-menu-item:last-child {
  border-bottom: 0 !important;
}
html body > .mp-af-menu-portal .aufmass-std-tab:active,
html body > .mp-af-menu-portal .mp-af-room-apply-option:active,
html body > .mp-af-menu-portal .mp-af-element-option:active,
html body > .mp-au-menu-portal .mp-au-menu-item:active {
  background: rgb(var(--mp-f2-eef6fb)) !important;
}
html body > .mp-af-menu-portal .mp-af-row-ico,
html body > .mp-af-menu-portal .mp-af-element-ico,
html body > .mp-au-menu-portal .mp-au-menu-ico {
  display: inline-flex !important;
  flex: 0 0 auto !important;
  color: var(--am-blue, #168bd2) !important;
}
html body > .mp-af-menu-portal .mp-af-row-ico svg,
html body > .mp-af-menu-portal .mp-af-element-ico svg,
html body > .mp-au-menu-portal .mp-au-menu-ico svg { width: 18px !important; height: 18px !important; }

#view-aufmass .aufmass-room-card {
  margin: 0 0 14px !important;
  overflow: visible !important;
}

#view-aufmass .aufmass-room-header {
  min-height: 72px;
  padding: 14px 16px !important;
  border-bottom: 1px solid var(--am-line) !important;
  border-radius: var(--am-radius) var(--am-radius) 0 0 !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
}

#view-aufmass .aufmass-room-card.is-collapsed .aufmass-room-header {
  border-bottom: 0 !important;
  border-radius: var(--am-radius) !important;
}

#view-aufmass .room-type-icon {
  width: 38px !important;
  height: 38px !important;
  border-radius: 11px !important;
}

#view-aufmass .aufmass-room-name {
  color: var(--am-text) !important;
  font-size: 17px !important;
  font-weight: 720 !important;
  letter-spacing: -.015em;
}

#view-aufmass .room-meta,
#view-aufmass .room-floor-badge,
#view-aufmass .room-schraege-badge {
  border: 0 !important;
  background: transparent !important;
  color: var(--am-secondary) !important;
  font-size: 11px !important;
  font-weight: 650 !important;
}

#view-aufmass .room-actions {
  display: flex;
  align-items: center;
  gap: 7px;
}

#view-aufmass .btn-room-sketch,
#view-aufmass .btn-room-more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 38px;
  padding: 7px 11px;
  border: 1px solid var(--am-line);
  border-radius: 10px;
  background: rgb(var(--mp-flaeche-rgb));
  color: var(--am-text);
  font-size: 12px;
  font-weight: 680;
  box-shadow: none;
}

#view-aufmass .room-more-wrap {
  position: relative;
}

#view-aufmass .room-action-menu {
  position: absolute;
  z-index: 50;
  top: calc(100% + 7px);
  right: 0;
  width: 222px;
  padding: 6px;
  border: 1px solid var(--am-line);
  border-radius: 13px;
  background: rgba(var(--mp-flaeche-rgb), .98);
  box-shadow: 0 16px 42px rgba(15, 23, 42, .16);
}

#view-aufmass .room-action-menu[hidden] {
  display: none !important;
}

#view-aufmass .room-action-menu button {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 10px;
  width: 100% !important;
  min-height: 40px !important;
  padding: 8px 10px !important;
  border: 0 !important;
  border-radius: 9px !important;
  background: transparent !important;
  color: var(--am-text) !important;
  font-size: 13px !important;
  font-weight: 580 !important;
}

#view-aufmass .room-action-menu button:hover,
#view-aufmass .room-action-menu button:focus-visible {
  background: rgba(0, 0, 0, .045) !important;
  outline: none;
}

#view-aufmass .room-action-menu .btn-room-trash {
  margin-top: 4px;
  border-top: 1px solid var(--am-line) !important;
  border-radius: 0 0 9px 9px !important;
  color: #c52a2a !important;
}

/* MP-20260902-013: Portal-Modus — das Menü hängt im GEÖFFNETEN Zustand unter
   <body> (siehe openRoomMenu()/ensureRoomMenu() in aufmass.js), NICHT mehr
   unter #view-aufmass. Die drei Regeln oben (#view-aufmass .room-action-menu
   button/.btn-room-trash) greifen dann NICHT mehr — L-2026-09-01-N-Falle
   (Custom Properties wie var(--am-text)/var(--am-line) sind auf #view-aufmass
   gescoped und lösen sich unter <body> nicht auf). Deshalb hier dieselben
   Deklarationen noch einmal, unscoped und mit literalen Fallback-Farben.
   Positionierung/Box-Optik (fixed, Radius, Schatten) kommen bereits aus der
   wiederverwendeten .mp-au-menu-portal-Klasse (Paket 3), hier NUR die
   button-spezifische Optik. */
html body > .room-action-menu.mp-au-menu-portal button {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 10px;
  width: 100% !important;
  min-height: 40px !important;
  padding: 8px 10px !important;
  border: 0 !important;
  border-radius: 9px !important;
  background: transparent !important;
  color: rgb(var(--mp-t1-1d1d1f)) !important;
  font-size: 13px !important;
  font-weight: 580 !important;
}

html body > .room-action-menu.mp-au-menu-portal button:hover,
html body > .room-action-menu.mp-au-menu-portal button:focus-visible {
  background: rgba(0, 0, 0, .045) !important;
  outline: none;
}

html body > .room-action-menu.mp-au-menu-portal .btn-room-trash {
  margin-top: 4px;
  border-top: 1px solid rgba(15, 23, 42, .1) !important;
  border-radius: 0 0 9px 9px !important;
  color: #c52a2a !important;
}

html body > .room-action-menu.mp-au-menu-portal button[hidden] {
  display: none !important;
}

#view-aufmass .aufmass-room-body {
  padding: 18px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  border-radius: 0 0 var(--am-radius) var(--am-radius);
}

#view-aufmass .form-section {
  margin: 0 0 18px !important;
  padding: 0 0 18px !important;
  border: 0 !important;
  border-bottom: 1px solid var(--am-line) !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

#view-aufmass .form-section:last-child {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
  border-bottom: 0 !important;
}

#view-aufmass input,
#view-aufmass select,
#view-aufmass textarea,
#view-aufmass .mp-dropdown-trigger {
  border-color: var(--am-line) !important;
  border-radius: 11px !important;
  background-color: rgb(var(--mp-flaeche-rgb)) !important;
  box-shadow: none !important;
}

#view-aufmass input:focus,
#view-aufmass select:focus,
#view-aufmass textarea:focus,
#view-aufmass button:focus-visible {
  outline: 3px solid rgba(43, 176, 255, .22) !important;
  outline-offset: 1px;
}

#view-aufmass .aufmass-kpi {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 !important;
  margin: 0 0 14px !important;
  border: 1px solid var(--am-line) !important;
  border-radius: 15px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  box-shadow: none !important;
}

#view-aufmass .aufmass-kpi > div {
  min-width: 0;
  padding: 13px 15px !important;
  border-right: 1px solid var(--am-line);
}

#view-aufmass .aufmass-kpi > div:last-child {
  border-right: 0;
}

#view-aufmass .aufmass-kpi strong {
  display: block;
  color: var(--am-text) !important;
  font-size: 18px !important;
  font-variant-numeric: tabular-nums;
}

#view-aufmass .aufmass-kpi span {
  color: var(--am-secondary) !important;
  font-size: 11px !important;
}

@media (max-width: 1050px) {
  body:has(#view-aufmass.active) #mpSideRail,
  body:has(#view-aufmass.active) #mpRailOverlay,
  body:has(#view-aufmass.active) .bottom-nav {
    display: none !important;
  }

  body:has(#view-aufmass.active) {
    padding-left: 0 !important;
  }

  #view-aufmass > .view-box {
    width: min(100% - 28px, 980px);
  }

  #view-aufmass .mp-aufmass-workspace {
    grid-template-columns: minmax(240px, 285px) minmax(0, 1fr);
    gap: 14px;
  }

  #view-aufmass .mp-aufmass-sync {
    display: none;
  }

  #view-aufmass .aufmass-cmd {
    align-items: stretch;
    flex-direction: column;
  }

  #view-aufmass .aufmass-cmd-actions {
    width: 100%;
    margin-left: 0;
  }
}

/* iPad Hochformat: volle Lesebreite statt einer zu schmalen Master-Spalte. */
@media (min-width: 721px) and (max-width: 900px) {
  #view-aufmass .mp-aufmass-workspace {
    display: flex;
    flex-direction: column;
    gap: 18px;
  }

  #view-aufmass .mp-aufmass-master,
  #view-aufmass .mp-aufmass-detail {
    position: static;
    width: 100%;
    max-height: none;
  }

  #view-aufmass .mp-aufmass-master {
    order: 1;
  }

  #view-aufmass .mp-aufmass-detail {
    order: 2;
  }

  #view-aufmass .aufmass-list-card {
    max-height: none !important;
  }

  #view-aufmass .aufmass-list-scroll {
    max-height: 320px !important;
  }
}

@media (max-width: 720px) {
  body:has(#view-aufmass.active) #mpSideRail,
  body:has(#view-aufmass.active) #mpRailOverlay,
  body:has(#view-aufmass.active) .bottom-nav {
    display: none !important;
  }

  body:has(#view-aufmass.active) {
    padding-left: 0 !important;
  }

  #view-aufmass > .view-box {
    width: 100%;
    padding: 16px 14px 112px;
  }

  #view-aufmass .mp-aufmass-hero {
    align-items: flex-start;
    margin-bottom: 14px;
    min-height: 0 !important;
    padding: 4px 2px 15px !important;
    border: 0 !important;
    border-bottom: 1px solid var(--am-line) !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  #view-aufmass .mp-aufmass-eyebrow,
  #view-aufmass .mp-aufmass-hero p,
  #view-aufmass .mp-aufmass-dashboard-btn,
  #view-aufmass .mp-aufmass-hero-actions > .btn-primary {
    display: none !important;
  }

  #view-aufmass .mp-aufmass-hero h1 {
    font-size: 32px;
  }

  #view-aufmass .mp-aufmass-hero-actions {
    margin-left: auto;
  }

  #view-aufmass .mp-nzwin-btn {
    display: none !important;
  }

  #view-aufmass .mp-aufmass-sync {
    display: inline-flex;
    margin: 8px 2px 0 0;
    font-size: 11px;
  }

  #view-aufmass .mp-aufmass-workspace {
    display: flex;
    flex-direction: column;
    gap: 14px;
  }

  #view-aufmass .mp-aufmass-master {
    position: static;
    order: 1;
    width: 100%;
    max-height: none;
  }

  #view-aufmass .mp-aufmass-detail {
    order: 2;
    width: 100%;
  }

  #view-aufmass .aufmass-list-card {
    max-height: none !important;
  }

  #view-aufmass .aufmass-list-scroll {
    max-height: 280px !important;
  }

  #view-aufmass .aufmass-sticky-header {
    padding: 15px !important;
    border-radius: 16px !important;
  }

  #view-aufmass .aufmass-zuo-grid {
    grid-template-columns: 1fr !important;
  }

  #view-aufmass .aufmass-zuo-grid .form-group {
    display: flex !important;
    flex-direction: column !important;
    gap: 7px;
  }

  #view-aufmass .aufmass-zuo-grid .form-group > label {
    order: 0;
  }

  #view-aufmass .aufmass-zuo-grid .form-group > .mp-dropdown {
    order: 1;
  }

  #view-aufmass .aufmass-zuo-grid .form-group > .mp-kq-addbtn {
    order: 2;
  }

  #view-aufmass .aufmass-cmd-divider {
    margin: 12px 0 !important;
  }

  #view-aufmass .aufmass-mode-btn {
    min-width: 0 !important;
  }

  #view-aufmass .mode-sub {
    display: none;
  }

  #view-aufmass .aufmass-cmd-actions {
    position: fixed;
    z-index: 900;
    right: 10px;
    bottom: max(10px, env(safe-area-inset-bottom));
    left: 10px;
    display: grid !important;
    grid-template-columns: 1fr auto;
    gap: 8px;
    width: auto;
    padding: 8px;
    border: 1px solid var(--am-line);
    border-radius: 16px;
    background: rgba(var(--mp-flaeche-rgb), .94);
    box-shadow: 0 12px 34px rgba(15, 23, 42, .18);
    backdrop-filter: blur(18px) saturate(150%);
  }

  #view-aufmass .aufmass-cmd-actions #aufmassExportToKvaBtn {
    order: 1;
  }

  #view-aufmass .aufmass-cmd-actions #aufmassSaveBtn {
    order: 2;
    min-width: 94px;
  }

  #view-aufmass .aufmass-cmd-actions #aufmassNewBtn,
  #view-aufmass .aufmass-cmd-actions #aufmassExportPdfBtn {
    display: none !important;
  }

  #view-aufmass #aufmassInnenContainer > .card > .card-header,
  #view-aufmass #aufmassFassadeContainer > .card > .card-header,
  #view-aufmass #aufmassInnenContainer > .card > .card-body,
  #view-aufmass #aufmassFassadeContainer > .card > .card-body {
    padding-inline: 14px !important;
  }

  /* K-482 (Lena Berger, QA-Abnahme, Auflage 5 zu MP-20260905-021, PFLICHT):
     Das rechts fixierte `#aufmassQuickDock` (`right:12px`, ~64px breit,
     `z-index:940` — mp-aufmass-golden.css Zeile ~3667) legt sich im
     AUSGEKLAPPTEN Zustand (Default, `body` OHNE
     `.mp-aufmass-quickdock-collapsed`) über die rechten ~64px der
     Innenbereiche-Karte. Belegt per `document.elementFromPoint()` am
     rechten Rand von „Rundgang erfassen"/„+ Bereich hinzufügen": ein Tipp
     dort trifft `button.mp-rail-tab` (das Dock), nicht den eigenen Knopf
     — unabhängig vom -021-Grid-Fix, der nur den Überlauf INNERHALB der
     Karte behebt, nicht die Überdeckung VON AUSSEN durch das Dock.
     Angebote (`#view-kva`) hat bei dieser Breite kein solches Dock, daher
     fällt es dort nicht auf. Fix: rechter Sicherheitsabstand für die
     Innenbereiche-Karte, wenn das Dock sichtbar ist — derselbe Token
     (`--mp-ws-dock-safe`, Default 90px), den
     `mp-aufmass-layout-contract.css` bereits für die View-Box bei ≥768px
     nutzt (dort schon vorhanden, hier nur für ≤767px UND nur bei
     ausgeklapptem Dock ergänzt). `#aufmassInnenContainer` bewusst
     gewählt (nicht `#aufmassFassadeContainer`) — das Dock deckt laut
     QA-Messung nur die Innenbereiche-Karte ab, und die Fassade hat eine
     andere Knopfanordnung (keine 2-Spalten-Zeile am rechten Rand). */
  body:not(.mp-aufmass-quickdock-collapsed) #view-aufmass #aufmassInnenContainer > .card > .card-body {
    padding-right: var(--mp-ws-dock-safe, 90px) !important;
  }

  #view-aufmass .aufmass-actions-row {
    gap: 8px !important;
  }

  /* MP-20260905-021 (Marcel-Foto, Handy 412px: „Standard-Raumhöhe"-Feld +
     „Rundgang erfassen"/„+ Bereich hinzufügen" laufen rechts über den
     Kartenrand hinaus) — klassische `1fr`-Falle (SHARED_LEARNINGS:
     „Schmale Handys, 1fr ohne min-width:0"). Bare `1fr` löst zu
     `minmax(auto,1fr)` auf: die Spaltenbreite darf nicht unter den
     Min-Content-Bedarf ihres Inhalts schrumpfen. `#aufmassRaumRundgangBtn`
     (Text „Rundgang erfassen" + Icon, `white-space:nowrap`, Padding
     13px 18px) braucht ~182px, `#aufmassAddRoomBtn` („+ Bereich
     hinzufügen", Padding 10px 18px) ~183px — zusammen mit 8px Gap ergibt
     das zwingend 372px Gesamtbreite, obwohl die Karte an dieser Stelle nur
     ~330px zur Verfügung hat (CDP `CSS.getMatchedStylesForNode`/
     `getComputedStyleForNode`, 412×915 UND 360×780 auf Staging: beide
     Breiten lieferten identisch 372.25px — viewport-unabhängig, also
     Content-Minimum, kein Viewport-Bug). `.aufmass-default-height` erbte
     dieselbe Breite über `grid-column:1/-1` (spannt beide erzwungenen
     Spalten). Fix: `minmax(0,1fr)` erlaubt den Spalten zu schrumpfen,
     `min-width:0` auf den Knöpfen selbst nimmt deren eigenen impliziten
     Grid-Item-Mindestwert (Default `min-width:auto` = Content-Breite) weg,
     `white-space:normal` erlaubt den Knopf-Beschriftungen bei Bedarf einen
     zweiten Zeilenumbruch statt eines harten Clippings. Betrifft NUR diese
     eine Breite (≤720px); ≥1200px (mp-aufmass-golden.css oben, eigener
     Block) ist unverändert, dort ist reichlich Platz. */
  #view-aufmass .aufmass-actions-right {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    width: 100%;
  }

  #view-aufmass .aufmass-actions-right > button {
    min-width: 0;
    white-space: normal;
  }

  #view-aufmass .aufmass-default-height {
    grid-column: 1 / -1;
    min-width: 0;
  }

  /* K-463 (Marcel-Foto Handy 412px, MP-20260905-021-Nachzug): Die
     Reiterleiste `.mp-aufmass-section-nav` (Kunde & Objekt/Innenbereiche/
     Fassade/…) selbst läuft NICHT über den Kartenrand — gemessen (CDP,
     412px UND 360px): ihre eigene Box endet exakt am selben rechten Rand
     wie die Innenbereiche-Karte darunter (`right`-Wert identisch,
     `document.documentElement.scrollWidth === innerWidth`, also KEIN
     horizontaler Seiten-Überlauf). Die Leiste ist bereits
     `overflow-x:auto` (mehrere Regeln in mp-aufmass-layout-contract.css/
     legacy_styles) — mehr Tabs als Platz sind vorhanden, das ist
     gewollt scrollbar, kein Layoutfehler. Der hier ergänzte
     `mask-image`-Anschnitt-Hinweis war selbst der Fehler aus
     MP-20260906-002 (Marcel-Foto Handy, Fassade-Reiter): eine
     `mask-image`-Alpha-Maske macht das ELEMENT SELBST an dieser Stelle
     transparent — nicht nur „zum Rand hin ausgeblendet", sondern die
     eigene weiße Kartenfläche UND die rechte Rundung fallen in der
     letzten 28px-Zone komplett weg, darunter wird sichtbar, was hinter
     der sticky Leiste liegt (im Foto: das Hero-Foto). Ergebnis exakt wie
     gemeldet: harter Schnitt ohne Rundung, Hintergrund bricht durch.
     Bestätigt per CDP (`getComputedStyle(nav).maskImage` liefert genau
     dieses Gradient zu `rgba(0,0,0,0)`). Entfernt — Scrollbarkeit bleibt
     unverändert funktional (overflow-x:auto), nur der optische
     Anschnitt-Hinweis entfällt. */

  #view-aufmass .aufmass-room-header {
    align-items: center !important;
    min-height: 68px;
    padding: 12px !important;
  }

  #view-aufmass .room-title-wrap {
    min-width: 0;
  }

  #view-aufmass .room-type-icon {
    width: 34px !important;
    height: 34px !important;
  }

  #view-aufmass .aufmass-room-name {
    max-width: 145px;
    font-size: 15px !important;
  }

  #view-aufmass .btn-room-sketch span,
  #view-aufmass .btn-room-more span:last-child {
    display: none;
  }

  #view-aufmass .btn-room-sketch,
  #view-aufmass .btn-room-more {
    width: 40px;
    min-width: 40px;
    height: 40px;
    padding: 0;
  }

  #view-aufmass .room-action-menu {
    position: fixed;
    z-index: 1100;
    right: 12px;
    bottom: 82px;
    left: 12px;
    width: auto;
    height: auto !important;
    min-height: 260px;
    padding: 8px;
    border-radius: 16px;
  }

  #view-aufmass .room-action-menu button {
    min-height: 48px !important;
  }

  #view-aufmass .aufmass-room-body {
    padding: 14px !important;
  }

  #view-aufmass .aufmass-kpi {
    grid-template-columns: 1fr 1fr;
  }

  #view-aufmass .aufmass-kpi > div:nth-child(2) {
    border-right: 0;
  }

  #view-aufmass .aufmass-kpi > div:nth-child(-n+2) {
    border-bottom: 1px solid var(--am-line);
  }
}

@media (prefers-reduced-motion: reduce) {
  #view-aufmass *,
  #view-aufmass *::before,
  #view-aufmass *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* MP-20260829-009 — KPI-Raster nach der ECHTEN Ergebnisbreite.
   Das Aufmaß hat selbst auf breiten Fenstern links eine Masterliste und im
   Fassadenbereich nochmals zwei Spalten. Ein viewport-basierter Desktop-
   Breakpoint zwang deshalb drei KPI-Karten in teils < 100 px breite Spalten;
   `overflow-wrap:anywhere` stellte die Labels anschließend buchstabenweise
   untereinander. Der Container entscheidet jetzt: schmal = eine gut lesbare
   Spalte, mittel = zwei, nur wirklich breit = drei. */
#view-aufmass .aufmass-output .mp-kpi-wrap {
  container-type: inline-size;
}

#view-aufmass .aufmass-output .mp-kpi-grid {
  grid-template-columns: minmax(0, 1fr) !important;
}

#view-aufmass .aufmass-output .mp-kpi-row span {
  overflow-wrap: normal !important;
  word-break: normal !important;
  hyphens: auto;
}

@container (min-width: 580px) {
  #view-aufmass .aufmass-output .mp-kpi-grid {
    grid-template-columns: repeat(2, minmax(250px, 1fr)) !important;
  }
}

@container (min-width: 900px) {
  #view-aufmass .aufmass-output .mp-kpi-grid {
    grid-template-columns: repeat(3, minmax(250px, 1fr)) !important;
  }
}

/* Muss nach den Basisregeln stehen: Landscape-Höhe gewinnt bewusst. */
@media (min-width: 901px) and (max-width: 1199px) and (max-height: 900px) {
  #view-aufmass .mp-aufmass-workspace {
    grid-template-columns: 390px minmax(0, 1fr) !important;
  }
}

/* MP-20260829-008: finale, kantenbündige Desktop-Masterleiste. */
html body:has(#view-aufmass.active) .topbar,
html body:has(#view-aufmass.active) .topbar.glass {
  border-radius: 0 !important;
}

@media (min-width: 1200px) {
  body:has(#view-aufmass.active) .bottom-nav {
    display: flex !important;
  }

  #view-aufmass {
    background: transparent !important;
  }

  html body #view-aufmass.view.active > .view-box {
    width: calc(100% + 24px) !important;
    max-width: none !important;
    margin-right: 0 !important;
    margin-left: -12px !important;
    padding-right: 0 !important;
    padding-left: 0 !important;
    grid-template-columns: 420px minmax(0, 1fr) !important;
    transition: width 560ms cubic-bezier(.22, 1, .36, 1), margin-left 560ms cubic-bezier(.22, 1, .36, 1) !important;
  }

  #view-aufmass .mp-aufmass-master {
    position: fixed !important;
    z-index: 40;
    top: 58px !important;
    right: auto !important;
    bottom: 0 !important;
    left: 0 !important;
    width: 420px !important;
    height: auto !important;
    max-height: none !important;
    border: 1px solid rgba(15, 23, 42, .09) !important;
    border-left: 0 !important;
    border-radius: 0 28px 28px 0 !important;
    background: linear-gradient(105deg, rgb(var(--mp-flaeche-rgb)) 0%, rgb(var(--mp-flaeche-rgb)) 78%, rgb(var(--mp-f2-fafbfd)) 100%) !important;
    overflow: hidden;
    box-shadow:
      1px 0 0 rgba(255, 255, 255, .96) inset,
      -1px 0 0 rgba(15, 23, 42, .025) inset,
      8px 0 18px -10px rgba(15, 23, 42, .24),
      22px 0 52px -24px rgba(15, 23, 42, .38),
      44px 0 90px -48px rgba(15, 23, 42, .28) !important;
    transition: width 560ms cubic-bezier(.16, 1, .3, 1),
                box-shadow 320ms ease;
    will-change: width;
  }

  #view-aufmass .mp-aufmass-master::after {
    content: "";
    position: absolute;
    z-index: 7;
    top: 18px;
    right: 0;
    bottom: 18px;
    width: 1px;
    border-radius: 999px;
    background: linear-gradient(180deg, rgba(var(--mp-flaeche-rgb), .98), rgba(43,176,255,.20) 38%, rgba(15,23,42,.10) 72%, rgba(var(--mp-flaeche-rgb), .92));
    box-shadow: -1px 0 0 rgba(255,255,255,.72), 1px 0 7px rgba(43,176,255,.10);
    pointer-events: none;
  }

  #view-aufmass .aufmass-list-card {
    width: 100% !important;
    height: 100% !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: rgb(var(--mp-flaeche-rgb)) !important;
    box-shadow: none !important;
    opacity: 1;
    visibility: visible;
    transform: translateX(0) scale(1);
    transform-origin: left center;
    filter: blur(0);
    transition: opacity 260ms 100ms ease-out,
                transform 560ms cubic-bezier(.16, 1, .3, 1),
                filter 300ms 80ms ease-out,
                visibility 0s linear 0s;
    will-change: opacity, transform, filter;
  }

  #view-aufmass .aufmass-list-card > .card-header {
    padding: 26px 58px 14px 24px !important;
  }

  #view-aufmass .aufmass-list-card > .card-body {
    padding: 0 22px 20px !important;
  }

  #view-aufmass .mp-aufmass-hero {
    margin: 16px 24px 20px !important;
    padding: 18px 22px !important;
    border: 1px solid rgba(255, 255, 255, .72) !important;
    border-radius: 18px !important;
    background: rgba(var(--mp-flaeche-rgb), .88) !important;
    box-shadow: 0 12px 34px -26px rgba(15, 23, 42, .38) !important;
    backdrop-filter: blur(24px) saturate(1.45);
    -webkit-backdrop-filter: blur(24px) saturate(1.45);
  }

  #view-aufmass .mp-aufmass-detail {
    padding-right: 24px !important;
    padding-left: 24px !important;
  }

  #view-aufmass > .view-box.is-rail-collapsed {
    grid-template-columns: 64px minmax(0, 1fr) !important;
  }

  html body #view-aufmass.view.active > .view-box.is-rail-collapsed {
    grid-template-columns: 64px minmax(0, 1fr) !important;
  }

  #view-aufmass > .view-box.is-rail-collapsed .aufmass-list-card {
    display: flex !important;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateX(-22px) scale(.985);
    filter: blur(5px);
    transition: opacity 150ms ease-in,
                transform 420ms cubic-bezier(.4, 0, .6, 1),
                filter 180ms ease-in,
                visibility 0s linear 420ms;
  }

  #view-aufmass .mp-aufmass-rail-toggle {
    transition: color 180ms ease,
                background-color 180ms ease,
                border-color 180ms ease,
                box-shadow 260ms ease,
                transform 420ms cubic-bezier(.16, 1, .3, 1);
  }

  #view-aufmass .mp-aufmass-rail-toggle:active {
    transform: scale(.92);
  }

  #view-aufmass .mp-aufmass-rail-toggle-icon {
    display: block;
    transition: transform 560ms cubic-bezier(.16, 1, .3, 1);
    transform-origin: center;
  }

  #view-aufmass > .view-box.is-rail-collapsed .mp-aufmass-rail-toggle-icon {
    transform: rotate(180deg);
  }

  #view-aufmass > .view-box.is-rail-collapsed .mp-aufmass-master {
    width: 64px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  #view-aufmass > .view-box,
  #view-aufmass .mp-aufmass-master,
  #view-aufmass .aufmass-list-card,
  #view-aufmass .mp-aufmass-rail-toggle,
  #view-aufmass .mp-aufmass-rail-toggle-icon {
    transition: none !important;
    animation: none !important;
  }
}

/* Fassadenaufmaß: ein eindeutiger, vertikaler 1–2–3–4-Arbeitsfluss. */
#view-aufmass #aufmassFassadeContainer .fassade-grid {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  gap: 16px !important;
  align-items: stretch !important;
}

#view-aufmass #aufmassFassadeContainer .fassade-col {
  display: contents !important;
}

#view-aufmass #aufmassFassadeContainer .mp-fas-panel {
  position: relative !important;
  top: auto !important;
  width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  overflow: hidden;
  border: 1px solid rgba(15, 23, 42, .10) !important;
  border-radius: 16px !important;
  background: rgba(var(--mp-flaeche-rgb), .94) !important;
  box-shadow: 0 10px 28px -24px rgba(15, 23, 42, .34) !important;
  scroll-margin-top: 82px;
}

/* Das komplette Listenfenster fährt als eine Einheit ein und aus. */
@media (min-width: 1200px) {
  html body #view-aufmass.view.active > .view-box.is-rail-collapsed {
    grid-template-columns: 58px minmax(0, 1fr) !important;
  }
}

/* Tablet: breites, überlagerndes Fenster; der Arbeitsbereich bleibt ungestaucht. */
@media (min-width: 768px) and (max-width: 1199px) {
  html body #view-aufmass.view.active::before {
    content: "";
    position: fixed;
    z-index: 64;
    inset: 58px 0 0;
    background: rgba(15,23,42,.18);
    opacity: 1;
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    transition: opacity 360ms cubic-bezier(.22,1,.36,1);
  }

  html body #view-aufmass.view.active:has(> .view-box.is-rail-collapsed)::before {
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
  }

  html body #view-aufmass.view.active > .view-box {
    display: grid !important;
    grid-template-columns: 72px minmax(0, 1fr) !important;
    width: 100% !important;
    max-width: none !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-workspace {
    display: contents !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-master {
    position: fixed !important;
    z-index: 70 !important;
    inset: 58px auto 0 0 !important;
    display: block !important;
    width: min(520px, calc(100vw - 72px)) !important;
    height: auto !important;
    max-height: none !important;
    overflow: hidden !important;
    border-radius: 0 28px 28px 0 !important;
    background: rgb(var(--mp-flaeche-rgb)) !important;
    box-shadow: 20px 0 58px -30px rgba(15,23,42,.52), inset -1px 0 0 rgba(15,23,42,.04) !important;
    transform: translateX(0);
    transition: transform 560ms cubic-bezier(.22,1,.36,1), box-shadow 360ms ease !important;
  }

  html body #view-aufmass.view.active > .view-box.is-rail-collapsed .mp-aufmass-master {
    width: min(520px, calc(100vw - 72px)) !important;
    transform: translateX(calc(-100% + 58px));
    box-shadow: 7px 0 22px -17px rgba(15,23,42,.38) !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-rail-toggle {
    display: inline-flex !important;
    top: 18px !important;
    right: 10px !important;
  }

  html body #view-aufmass.view.active > .view-box.is-rail-collapsed .aufmass-list-card {
    display: flex !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-detail {
    grid-column: 2 !important;
    width: 100% !important;
    min-width: 0 !important;
  }
}

/* Fassaden-Rundgang: geführtes 4-Schritt-Interview für Handy und Tablet. */
#mpFasRundgangOverlay .mp-fas-rg-sheet {
  width: min(820px, calc(100vw - 28px)) !important;
  border: 1px solid rgba(255,255,255,.84) !important;
  border-radius: 26px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  box-shadow: 0 30px 90px -32px rgba(15,23,42,.48), inset 0 1px 0 #fff !important;
}

#mpFasRundgangOverlay .mp-fas-rg-head {
  padding: 18px 22px 14px !important;
  background: linear-gradient(180deg, rgb(var(--mp-flaeche-rgb)), rgb(var(--mp-f1-fbfcfe))) !important;
}

#mpFasRundgangOverlay .mp-fas-rg-kicker {
  margin-bottom: 4px;
  color: #1499ea;
  font-size: 11px;
  font-weight: 820;
  letter-spacing: .08em;
  text-transform: uppercase;
}

#mpFasRundgangOverlay .mp-fas-rg-progress {
  height: 5px;
  margin-top: 14px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(15,23,42,.07);
}

#mpFasRundgangOverlay .mp-fas-rg-progress > span {
  display: block;
  width: 25%;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #2bb0ff, #5b8cff);
  box-shadow: 0 0 14px rgba(43,176,255,.38);
  transition: width 420ms cubic-bezier(.22,1,.36,1);
}

#mpFasRundgangOverlay .mp-fas-rg-body {
  padding: 20px 22px 12px !important;
}

#mpFasRundgangOverlay .mp-fas-rg-step {
  animation: mpFasStepIn 360ms cubic-bezier(.22,1,.36,1) both;
}

#mpFasRundgangOverlay .mp-fas-rg-step[hidden] { display: none !important; }

@keyframes mpFasStepIn {
  from { opacity: 0; transform: translateX(14px); }
  to { opacity: 1; transform: translateX(0); }
}

#mpFasRundgangOverlay .mp-fas-rg-question {
  display: flex;
  margin-bottom: 18px;
  flex-direction: column;
  gap: 5px;
}

#mpFasRundgangOverlay .mp-fas-rg-question strong {
  color: rgb(var(--mp-t1-172033));
  font-size: 20px;
  font-weight: 810;
  letter-spacing: -.025em;
}

#mpFasRundgangOverlay .mp-fas-rg-question span,
#mpFasRundgangOverlay .mp-fas-rg-option-card > div > span {
  color: rgb(var(--mp-t3-6f7d91));
  font-size: 13px;
  font-weight: 520;
  line-height: 1.45;
}

#mpFasRundgangOverlay .mp-fas-rg-hero-field {
  padding: 18px;
  border: 1px solid rgba(43,176,255,.22);
  border-radius: 18px;
  background: linear-gradient(145deg, rgba(43,176,255,.08), rgba(var(--mp-flaeche-rgb), .98));
  box-shadow: 0 16px 34px -28px rgba(43,176,255,.46), inset 0 1px 0 #fff;
}

#mpFasRundgangOverlay .mp-fas-rg-hero-field input {
  height: 56px !important;
  margin-top: 8px;
  border-radius: 14px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  font-size: 20px !important;
  font-weight: 740 !important;
}

#mpFasRundgangOverlay .mp-fas-rg-tip {
  margin-top: 14px;
  padding: 11px 13px;
  border-radius: 12px;
  background: rgba(15,23,42,.035);
  color: rgb(var(--mp-t3-64748b));
  font-size: 12.5px;
  font-weight: 560;
  line-height: 1.4;
}

#mpFasRundgangOverlay .mp-fas-rg-side,
#mpFasRundgangOverlay .mp-fas-rg-option-card {
  margin-bottom: 12px;
  border: 1px solid rgba(15,23,42,.085) !important;
  border-radius: 17px !important;
  background: linear-gradient(145deg, rgb(var(--mp-flaeche-rgb)), rgb(var(--mp-flaeche-2-rgb))) !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.04), 0 14px 30px -26px rgba(15,23,42,.34), inset 0 1px 0 #fff !important;
}

#mpFasRundgangOverlay .mp-fas-rg-option-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 14px;
}

#mpFasRundgangOverlay .mp-fas-rg-option-card > div:first-child {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 2px;
}

#mpFasRundgangOverlay .mp-fas-rg-option-card > .mp-fas-rg-list {
  grid-column: 1 / -1;
}

#mpFasRundgangOverlay .mp-fas-rg-add {
  width: 100%;
  min-height: 46px;
  border-style: dashed !important;
}

#mpFasRundgangOverlay .mp-fas-rg-review {
  display: grid;
  gap: 9px;
}

#mpFasRundgangOverlay .mp-fas-rg-review-row {
  display: flex;
  align-items: center;
  gap: 11px;
  min-height: 48px;
  padding: 10px 13px;
  border: 1px solid rgba(15,23,42,.075);
  border-radius: 13px;
  background: rgb(var(--mp-flaeche-rgb));
}

#mpFasRundgangOverlay .mp-fas-rg-review-row > span {
  display: grid;
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  place-items: center;
  border-radius: 999px;
  background: rgba(16,185,129,.12);
  color: #07834c;
  font-weight: 850;
}

#mpFasRundgangOverlay .mp-fas-rg-review-row.is-missing > span {
  background: rgba(245,158,11,.13);
  color: #b76a05;
}

#mpFasRundgangOverlay .mp-fas-rg-sum {
  margin-top: 14px;
  padding: 16px !important;
  border-radius: 15px;
  background: linear-gradient(135deg, rgba(43,176,255,.11), rgba(91,140,255,.07)) !important;
  color: rgb(var(--mp-t1-172033)) !important;
  font-size: 15px !important;
  font-weight: 780 !important;
}

#mpFasRundgangOverlay .mp-fas-rg-foot {
  gap: 10px;
  padding: 13px 22px max(16px, env(safe-area-inset-bottom)) !important;
  background: rgba(var(--mp-flaeche-rgb), .96) !important;
}

#mpFasRundgangOverlay .mp-fas-rg-foot > button {
  min-height: 48px !important;
  border-radius: 14px !important;
}

#mpFasRundgangOverlay .mp-fas-rg-foot > button[hidden] { display: none !important; }

@media (max-width: 767px) {
  #mpFasRundgangOverlay .mp-fas-rg-sheet {
    width: 100% !important;
    max-height: calc(100dvh - 8px) !important;
    border-radius: 24px 24px 0 0 !important;
  }

  #mpFasRundgangOverlay .mp-fas-rg-head { padding: 14px 16px 12px !important; }
  #mpFasRundgangOverlay .mp-fas-rg-body { padding: 17px 14px 10px !important; }
  #mpFasRundgangOverlay .mp-fas-rg-question strong { font-size: 18px; }
  #mpFasRundgangOverlay .mp-fas-rg-option-card { grid-template-columns: minmax(0,1fr); }
  #mpFasRundgangOverlay .mp-fas-rg-option-card > button { width: 100%; min-height: 44px; }
  #mpFasRundgangOverlay .mp-fas-rg-row--side {
    grid-template-columns: minmax(0,1fr) minmax(0,1fr) 40px !important;
    grid-template-areas: "label label del" "len hoehe m2" !important;
  }
  #mpFasRundgangOverlay .mp-fas-rg-row input,
  #mpFasRundgangOverlay .mp-fas-rg-row select { min-height: 46px !important; font-size: 16px !important; }
  #mpFasRundgangOverlay .mp-fas-rg-foot { padding-inline: 14px !important; }
}

@media (prefers-reduced-motion: reduce) {
  #mpFasRundgangOverlay .mp-fas-rg-step,
  #mpFasRundgangOverlay .mp-fas-rg-progress > span { animation: none !important; transition-duration: .01ms !important; }
}

#view-aufmass #aufmassFassadeContainer .mp-fas-panel-head {
  min-height: 64px;
  padding: 14px 16px !important;
  border-bottom: 1px solid rgba(15, 23, 42, .08) !important;
  background: rgba(var(--mp-flaeche-2-rgb), .82) !important;
}

#view-aufmass #aufmassFassadeContainer .mp-fas-step {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  background: #e8f5ff;
  color: #087fc4;
  font-size: 13px;
  box-shadow: inset 0 0 0 1px rgba(43, 176, 255, .16);
}

/* MP-20260901-005 (Marcel, Nachtrag): Innenraum-Abschnittsköpfe optisch
   identisch zur Fassaden-Optik nummeriert/betitelt — SELBE Klassen
   (.mp-fas-panel-head/.mp-fas-panel-title/.mp-fas-step), nur auf den
   Raumkarten-Container re-skopiert (gleiches Muster wie oben für die
   Fassade: unscoped Basis in legacy_styles/modules/aufmass.css:2090ff,
   hier die pixelgenaue Fassaden-Politur gespiegelt). Bestehende
   .section-head/.section-icon-Klassen bleiben unverändert erhalten. */
#view-aufmass #aufmassRoomList .mp-fas-panel-head {
  min-height: 64px;
  padding: 14px 16px !important;
  border-bottom: 1px solid rgba(15, 23, 42, .08) !important;
  background: rgba(var(--mp-flaeche-2-rgb), .82) !important;
}

#view-aufmass #aufmassRoomList .mp-fas-step {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  background: #e8f5ff;
  color: #087fc4;
  font-size: 13px;
  box-shadow: inset 0 0 0 1px rgba(43, 176, 255, .16);
}

/* MP-20260913: Monats-Chevron folgt mp-list-workspaces-golden.css */

/* MP-20260913: Aufmaß-Dock folgt universell dem Standard-Dock aus mp-dock-glas.css (identisch zu Baustellen) */


/* Finale Tablet-Querformat-Priorität: steht nach allen Desktop-Basisregeln. */
@media (min-width: 1200px) and (max-width: 1439px) {
  html body #view-aufmass.view.active > .view-box {
    grid-template-columns: 344px minmax(0, 1fr) !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-master {
    width: 344px !important;
  }

  html body #view-aufmass.view.active > .view-box.is-rail-collapsed {
    grid-template-columns: 64px minmax(0, 1fr) !important;
  }

  #view-aufmass .aufmass-sticky-header.premium {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    grid-template-areas: "zuordnung" "command" "status" !important;
    align-items: stretch !important;
    min-height: 0 !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-cmd {
    display: grid !important;
    grid-template-columns: minmax(360px, 1fr) auto !important;
    align-items: center !important;
    gap: 14px !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-mode-shell {
    width: 100% !important;
    max-width: 520px !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-cmd-actions {
    display: flex !important;
    flex-wrap: nowrap !important;
    justify-content: flex-end !important;
    gap: 8px !important;
    width: auto !important;
  }

  #view-aufmass .aufmass-sticky-header .aufmass-cmd-actions > button {
    flex: 0 0 auto !important;
  }
}

/* Fassadenflächen · klare Apple-artige Informationskarten statt Formularzeilen. */
#view-aufmass #aufmassFassadeExtraAreas.aufmass-fassade-areas {
  display: grid !important;
  gap: 12px !important;
  padding: 2px !important;
  background: transparent !important;
}

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-surface-group {
  position: relative;
  overflow: hidden;
  margin: 0 !important;
  border: 1px solid rgba(15, 23, 42, .095) !important;
  border-radius: 16px !important;
  background: rgba(var(--mp-flaeche-rgb), .94) !important;
  box-shadow: 0 8px 24px -20px rgba(15, 23, 42, .28) !important;
}

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-surface-group::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: var(--mp-fas-group-accent, #2bb0ff);
  opacity: .88;
}

#view-aufmass #aufmassFassadeExtraAreas [data-fassade-extra-group="giebel"] { --mp-fas-group-accent: #8b5cf6; }
#view-aufmass #aufmassFassadeExtraAreas [data-fassade-extra-group="sockel"] { --mp-fas-group-accent: rgb(var(--mp-t3-64748b)); }
#view-aufmass #aufmassFassadeExtraAreas [data-fassade-extra-group="holzwerk"] { --mp-fas-group-accent: #c1783b; }
#view-aufmass #aufmassFassadeExtraAreas [data-fassade-extra-group="gesimse"] { --mp-fas-group-accent: #16a085; }

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-surface-head {
  min-height: 70px !important;
  padding: 13px 14px 13px 18px !important;
  border: 0 !important;
  background: linear-gradient(180deg, rgba(var(--mp-flaeche-2-rgb), .90), rgba(var(--mp-flaeche-rgb), .72)) !important;
}

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-surface-head h4 {
  margin: 0 !important;
  color: rgb(var(--mp-t1-172033)) !important;
  font-size: 15px !important;
  font-weight: 780 !important;
  letter-spacing: -.012em !important;
}

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-surface-head [data-fassade-extra-summary] {
  display: block;
  margin-top: 4px !important;
  color: rgb(var(--mp-t3-748196)) !important;
  font-size: 12px !important;
  font-weight: 560 !important;
}

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-surface-add {
  min-width: 104px !important;
  min-height: 42px !important;
  padding: 0 15px !important;
  border: 1px solid rgba(43, 176, 255, .26) !important;
  border-radius: 12px !important;
  background: rgba(43, 176, 255, .08) !important;
  color: #087fc3 !important;
  font-size: 13px !important;
  font-weight: 720 !important;
  box-shadow: none !important;
}

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-surface-add:hover {
  border-color: rgba(43, 176, 255, .46) !important;
  background: rgba(43, 176, 255, .14) !important;
  transform: translateY(-1px);
}

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-main {
  padding: 14px 16px 16px !important;
  border-top: 1px solid rgba(15, 23, 42, .07) !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
}

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-hint {
  margin: 0 0 13px !important;
  padding: 10px 12px !important;
  border-radius: 10px !important;
  background: rgba(43, 176, 255, .065) !important;
  color: rgb(var(--mp-t3-50657d)) !important;
  font-size: 12px !important;
  line-height: 1.45 !important;
}

#view-aufmass #aufmassFassadeExtraAreas .form-group label,
#view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-area-grid label {
  margin: 0 0 6px !important;
  color: rgb(var(--mp-t3-69778a)) !important;
  font-size: 11px !important;
  font-weight: 720 !important;
  letter-spacing: .055em !important;
  text-transform: uppercase !important;
}

#view-aufmass #aufmassFassadeExtraAreas input {
  min-height: 46px !important;
  border: 1px solid rgba(15, 23, 42, .12) !important;
  border-radius: 12px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  color: rgb(var(--mp-t1-172033)) !important;
  font-size: 14px !important;
  font-weight: 570 !important;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .025) !important;
}

#view-aufmass #aufmassFassadeExtraAreas input:focus {
  border-color: rgba(43, 176, 255, .72) !important;
  box-shadow: 0 0 0 4px rgba(43, 176, 255, .13) !important;
  outline: none !important;
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-areas-list {
  padding: 0 14px 14px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-areas-list:empty::before {
  content: "Noch keine Fläche in diesem Bereich";
  display: flex;
  min-height: 44px;
  align-items: center;
  padding: 0 13px;
  border: 1px dashed rgba(100, 116, 139, .20);
  border-radius: 11px;
  color: rgb(var(--mp-t3-8a97a9));
  font-size: 12px;
  background: rgba(var(--mp-flaeche-2-rgb), .72);
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-area-row {
  display: grid !important;
  grid-template-columns: minmax(180px, 1.35fr) minmax(250px, 1fr) auto 40px !important;
  gap: 12px !important;
  align-items: end !important;
  margin-top: 10px !important;
  padding: 13px !important;
  border: 1px solid rgba(15, 23, 42, .085) !important;
  border-radius: 13px !important;
  background: rgb(var(--mp-flaeche-2-rgb)) !important;
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-area-row > .form-group,
#view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-area-grid > .form-group {
  display: grid !important;
  grid-template-rows: 17px 46px !important;
  gap: 6px !important;
  min-width: 0 !important;
  margin: 0 !important;
  align-self: end !important;
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-area-row label {
  display: flex !important;
  height: 17px !important;
  margin: 0 !important;
  align-items: center !important;
  line-height: 17px !important;
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-area-row input {
  box-sizing: border-box !important;
  width: 100% !important;
  height: 46px !important;
  min-height: 46px !important;
  margin: 0 !important;
  padding: 0 13px !important;
  line-height: 44px !important;
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-area-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 10px !important;
}

#view-aufmass #aufmassFassadeExtraAreas .mp-fas-row-m2 {
  align-self: end !important;
  display: inline-flex !important;
  height: 46px !important;
  box-sizing: border-box !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 74px;
  padding: 0 13px !important;
  border-radius: 999px !important;
  background: rgba(43, 176, 255, .10) !important;
  color: #087fc3 !important;
  font-size: 12px !important;
  font-weight: 740 !important;
  text-align: center !important;
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-del-icon {
  width: 40px !important;
  height: 46px !important;
  min-height: 46px !important;
  align-self: end !important;
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
  border: 1px solid rgba(15, 23, 42, .10) !important;
  border-radius: 11px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  color: rgb(var(--mp-t3-7f8a9a)) !important;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .045) !important;
  transition: color 160ms ease, border-color 160ms ease, background 160ms ease !important;
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-del-icon svg {
  width: 16px !important;
  height: 16px !important;
  stroke: currentColor !important;
}

#view-aufmass #aufmassFassadeExtraAreas .aufmass-del-icon:hover {
  border-color: rgba(220, 38, 38, .24) !important;
  background: rgba(220, 38, 38, .06) !important;
  color: #dc2626 !important;
}

@media (max-width: 900px) {
  #view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-area-row {
    grid-template-columns: minmax(0, 1fr) auto !important;
  }

  #view-aufmass #aufmassFassadeExtraAreas .mp-fas-area-name,
  #view-aufmass #aufmassFassadeExtraAreas .aufmass-fassade-area-grid {
    grid-column: 1 / -1;
  }
}

/* Golden-Screen-Kartenebene: räumlich, aber eine Stufe ruhiger als die Rail. */
#view-aufmass .aufmass-sticky-header,
#view-aufmass #aufmassInnenContainer > .card,
#view-aufmass #aufmassFassadeContainer > .card,
#view-aufmass .aufmass-room-card,
#view-aufmass #aufmassFassadeContainer .mp-fas-panel {
  border-color: rgba(255,255,255,.78) !important;
  background: linear-gradient(145deg, rgb(var(--mp-flaeche-rgb)) 0%, rgb(var(--mp-flaeche-rgb)) 58%, rgb(var(--mp-flaeche-2-rgb)) 100%) !important;
  background-color: rgb(var(--mp-flaeche-rgb)) !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.055), 0 10px 28px -18px rgba(15,23,42,.24), 0 28px 64px -38px rgba(15,23,42,.30), inset 0 1px 0 rgba(255,255,255,.94), inset 0 -1px 0 rgba(15,23,42,.045) !important;
}

/* Mobile Aufmass: Die globale Navigation bleibt erreichbar. Die feste
   Arbeitsleiste sitzt mit eigenem Sicherheitsabstand oberhalb der Dock. */
@media (max-width: 767px) {
  html body:has(#view-aufmass.active) nav.bottom-nav {
    display: flex !important;
  }

  html body #view-aufmass.view.active > .view-box,
  html body #view-aufmass.view.active > .view-container > .view-box {
    padding-bottom: calc(196px + env(safe-area-inset-bottom, 0px)) !important;
  }

  html body #view-aufmass.view.active .aufmass-cmd-actions {
    box-sizing: border-box !important;
    right: 10px !important;
    bottom: calc(96px + env(safe-area-inset-bottom, 0px)) !important;
    left: 10px !important;
    width: auto !important;
    max-width: calc(100vw - 20px) !important;
  }

  html body #view-aufmass.view.active .room-action-menu {
    bottom: calc(174px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* ================================================================
   Mobile Golden Screen: Die Aufmassliste ist ein echtes ausfahrbares
   Fenster. Der Arbeitsbereich startet sofort, die Liste blockiert weder
   Eingaben noch Dock und bleibt im Drawer eigenstaendig scrollbar.
   ================================================================ */
.mp-aufmass-mobile-list-launcher {
  display: none !important;
}

@media (max-width: 767px) {
  html body #view-aufmass.view.active > .view-box,
  html body #view-aufmass.view.active > .view-container > .view-box {
    box-sizing: border-box !important;
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 28px 10px calc(196px + env(safe-area-inset-bottom, 0px)) !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-workspace {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-detail {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    padding-bottom: clamp(80px, 12vh, 120px) !important;
  }

  /* MP-20260913: Aufmaß-Master-Rail folgt universell mp-list-workspaces-golden.css (identisch zu Angebote und Baustellen) */

  html body #view-aufmass.view.active .mp-aufmass-rail-toggle {
    position: absolute !important;
    z-index: 9 !important;
    top: 14px !important;
    right: 13px !important;
    display: grid !important;
    width: 42px !important;
    height: 42px !important;
    min-height: 42px !important;
    padding: 0 !important;
    place-items: center !important;
    border-radius: 13px !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-rail-toggle-label {
    display: none !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-rail-toggle-icon {
    display: block !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-mobile-list-launcher {
    box-sizing: border-box !important;
    display: grid !important;
    width: 46px !important;
    min-width: 46px !important;
    height: 46px !important;
    min-height: 46px !important;
    padding: 0 !important;
    place-items: center !important;
    border: 1px solid rgba(43,176,255,.22) !important;
    border-radius: 14px !important;
    background: rgba(43,176,255,.10) !important;
    color: #087fc3 !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.90) !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-mobile-list-launcher[hidden] {
    display: none !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-mobile-list-launcher svg {
    width: 20px !important;
    height: 20px !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-mobile-list-launcher span {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
  }

  html body #view-aufmass.view.active .aufmass-cmd-actions {
    display: grid !important;
    grid-template-columns: 46px minmax(0, 1fr) auto !important;
    gap: 7px !important;
    align-items: center !important;
  }

  html body.mp-aufmass-mobile-list-open {
    overflow: hidden !important;
  }

  html body.mp-aufmass-mobile-list-open #view-aufmass.view.active::before {
    content: "";
    position: fixed;
    z-index: 970;
    inset: 58px 0 0;
    background: rgba(15,23,42,.32);
    -webkit-backdrop-filter: blur(5px);
    backdrop-filter: blur(5px);
    animation: mpAufmassMobileShadeIn 260ms ease both;
  }

  html body.mp-aufmass-mobile-list-open #view-aufmass.view.active .aufmass-cmd-actions,
  html body.mp-aufmass-mobile-list-open:has(#view-aufmass.active) nav.bottom-nav {
    opacity: 0 !important;
    pointer-events: none !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-detail input,
  html body #view-aufmass.view.active .mp-aufmass-detail select,
  html body #view-aufmass.view.active .mp-aufmass-detail textarea {
    min-width: 0 !important;
    font-size: 16px !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-detail label,
  html body #view-aufmass.view.active .mp-aufmass-detail .hint,
  html body #view-aufmass.view.active .mp-aufmass-detail .muted,
  html body #view-aufmass.view.active .mp-aufmass-detail small {
    font-size: max(12.5px, .78rem) !important;
    line-height: 1.45 !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-hero {
    margin: 0 0 14px !important;
    padding: 17px 16px !important;
    border: 1px solid rgba(255,255,255,.82) !important;
    border-radius: 19px !important;
    background: rgba(var(--mp-flaeche-rgb), .94) !important;
    box-shadow: 0 1px 2px rgba(15,23,42,.05), 0 16px 40px -30px rgba(15,23,42,.42), inset 0 1px 0 #fff !important;
    -webkit-backdrop-filter: blur(22px) saturate(1.25) !important;
    backdrop-filter: blur(22px) saturate(1.25) !important;
  }

  html body #view-aufmass.view.active .mp-aufmass-hero h1 {
    font-size: 28px !important;
    line-height: 1.05 !important;
  }

  html body #view-aufmass.view.active #aufmassFassadeContainer > .card > .card-body,
  html body #view-aufmass.view.active #aufmassFassadeContainer .mp-fas-panel {
    padding-inline: 10px !important;
  }
}

@keyframes mpAufmassMobileShadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  #view-aufmass .mp-aufmass-master { transition-duration: .01ms !important; }
}

/* MP-20260913: Aufmaß-Filter und -Menü folgen universell den Finder-16-Regeln aus mp-list-workspaces-golden.css (identisch zu Angebote/Baustellen) */

/* ═══════════════════════════════════════════════════════════════════
   MP-20260901-013 — Bauelement-Karten (Rollladenkasten/Geländer/
   Holzwerk), F-1-Positionsfelder, Öffnungen-Zeilen-Redesign
   ═══════════════════════════════════════════════════════════════════ */

/* Marcel (Tablet-Fund): "Fenster / 1.2 × 1.2 m · 3 Stk / 4.32 m² · ≤ 2,5
   m² – ohne Abzug" war ein gequetschter Textblock. Jetzt: Kopfzeile mit
   Elementname + klar abgesetztem Badge, darunter drei gleich große
   Wertblöcke — Kernwerte GROSS (18px), keine Kleinstschrift. 12px Radius
   überall (keine runden Pillen). */
#view-aufmass .mp-oeff-row .mini-main { width: 100%; }
#view-aufmass .mp-oeff-row-head {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  flex-wrap: wrap !important;
  margin-bottom: 6px !important;
}
#view-aufmass .mp-oeff-row-head strong { font-size: 15px !important; }
#view-aufmass .mp-oeff-badge {
  display: inline-flex !important;
  align-items: center !important;
  padding: 3px 9px !important;
  border-radius: 8px !important;
  font-size: 11px !important;
  font-weight: 780 !important;
  letter-spacing: .02em !important;
  background: rgb(var(--mp-flaeche-3-rgb)) !important;
  color: rgb(var(--mp-t2-475569)) !important;
}
#view-aufmass .mp-oeff-badge.is-abzug { background: rgb(var(--mp-f2-fff7ed)) !important; color: #c2410c !important; }
#view-aufmass .mp-oeff-badge.is-frei { background: rgb(var(--mp-f2-f0fdf4)) !important; color: #15803d !important; }
#view-aufmass .mp-oeff-badge.is-info { background: rgb(var(--mp-f2-eff8ff)) !important; color: #1d75c9 !important; }
#view-aufmass .mp-oeff-vals {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 8px !important;
}
#view-aufmass .mp-oeff-val {
  display: flex !important;
  flex-direction: column !important;
  gap: 2px !important;
  padding: 8px 10px !important;
  border-radius: 10px !important;
  background: rgb(var(--mp-flaeche-2-rgb)) !important;
}
#view-aufmass .mp-oeff-val b {
  font-size: 17px !important;
  font-weight: 800 !important;
  color: rgb(var(--mp-t1-1e2430)) !important;
  line-height: 1.15 !important;
}
#view-aufmass .mp-oeff-val small {
  font-size: 10.5px !important;
  font-weight: 650 !important;
  color: rgb(var(--mp-t3-8a96a8)) !important;
  text-transform: uppercase !important;
  letter-spacing: .04em !important;
}
@media (max-width: 479px) {
  #view-aufmass .mp-oeff-vals { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 6px !important; }
  #view-aufmass .mp-oeff-val { padding: 6px 8px !important; }
  #view-aufmass .mp-oeff-val b { font-size: 15px !important; }
}

/* Ab Tablet quer/Desktop: Kopfzeile + Wertblöcke einer Zeile nebeneinander
   statt gestapelt — mehr Zeilen gleichzeitig sichtbar ohne Scrollen
   (MP-20260901-019, UX-Spec „<2s finden"-Ziel). Gilt für ALLE
   .mp-oeff-row-Verwender (Öffnungen/Zurechnungen/Teilflächen, Variante A
   UND B — dieselbe Redesign-Fläche, keine zweite Regel je Kategorie). */
@media (min-width: 1024px) {
  #view-aufmass .mp-oeff-row .mini-main {
    display: flex !important;
    align-items: center !important;
    gap: 16px !important;
  }
  #view-aufmass .mp-oeff-row .mp-oeff-row-head {
    flex: 0 1 auto !important;
    min-width: 240px !important;
    margin-bottom: 0 !important;
  }
  #view-aufmass .mp-oeff-row .mp-oeff-vals { flex: 1 1 auto !important; }
}

/* ═══════════════════════════════════════════════════════════════════
   MP-20260901-019 — Sektion „Abzüge & Zuschläge": EINE scannbare Liste +
   EIN „+ Hinzufügen"-Knopf mit Menü. Ersetzt für Variante A (normaler
   Raum) die alten .mp-aufmass-adjustments-grid + drei
   .mp-aufmass-adjustment-card-Blöcke vollständig; Variante B
   (eigenständige Fenster-/Türen-Karte) nutzte .mp-oeff-row bereits.
   ═══════════════════════════════════════════════════════════════════ */
#view-aufmass .mp-au-toolbar {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 10px !important;
  margin: 0 0 12px !important;
}
#view-aufmass .mp-au-count {
  color: rgb(var(--mp-t3-718096)) !important;
  font-size: 12.5px !important;
  font-weight: 650 !important;
}
#view-aufmass .mp-au-add-trigger {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 7px !important;
}
#view-aufmass .mp-au-add-trigger svg { width: 15px !important; height: 15px !important; }

#view-aufmass .mp-au-entries {
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
}

/* Gruppen-Caption — nur sichtbar, wenn ≥2 Kategorien gemischt sind
   (renderAufmassEntries() lässt sie sonst ganz weg, siehe aufmass.js). */
#view-aufmass .mp-au-group-caption {
  margin: 6px 0 -2px !important;
  color: rgb(var(--mp-t3-8a96a8)) !important;
  font-size: 10.5px !important;
  font-weight: 750 !important;
  text-transform: uppercase !important;
  letter-spacing: .04em !important;
}
#view-aufmass .mp-au-group-caption:first-child { margin-top: 0 !important; }

/* Kind-Badge — trägt IMMER Text (Abzug/Zuschlag/Separat), 8px Radius statt
   der verbotenen 999px-Pille der alten .mp-adjustment-kind-Klasse (K-336). */
#view-aufmass .mp-au-kind-badge {
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  padding: 3px 9px !important;
  border-radius: 8px !important;
  font-size: 11px !important;
  font-weight: 780 !important;
  letter-spacing: .02em !important;
  white-space: nowrap !important;
}
#view-aufmass .mp-au-kind-dot { width: 6px !important; height: 6px !important; flex: 0 0 auto !important; }
#view-aufmass .mp-au-kind-badge.is-abzug    { background: rgb(var(--mp-f2-fff7ed)) !important; color: #c2410c !important; }
#view-aufmass .mp-au-kind-badge.is-zuschlag { background: rgb(var(--mp-f2-f0fdf4)) !important; color: #15803d !important; }
/* Vereinheitlichter Blauton fürs „Separat"-Kind (UX-Spec MP-20260901-019):
   der frühere .mp-oeff-badge.is-info-Ton (#eff8ff/#1d75c9) wird für „Separat"
   NICHT mehr verwendet — ab jetzt gilt appweit dieser eine Blauton
   (identisch zum früheren .is-partial-Kartenrahmen-Akzent). */
#view-aufmass .mp-au-kind-badge.is-separat  { background: rgb(var(--mp-f2-f0f9ff)) !important; color: #0369a1 !important; }

#view-aufmass .mp-au-row-note {
  color: rgb(var(--mp-t3-8a96a8)) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
}

/* Leerzustand der GESAMTEN Sektion — einzeilig, kein Kasten (ersetzt die
   früheren, meist leeren .mp-adjustment-empty-Kästen je Kategorie). Der
   „Hinzufügen"-Knopf steht unverändert in der Toolbar darüber. */
#view-aufmass .mp-au-empty {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  min-height: 40px !important;
  padding: 8px 2px !important;
  color: rgb(var(--mp-t3-718096)) !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
}
#view-aufmass .mp-au-empty svg { flex: 0 0 14px !important; width: 14px !important; height: 14px !important; color: #94a3b8 !important; }

/* „+ Hinzufügen"-Menü — eigene Portal-Instanz, gleiche Technik wie
   .mp-af-menu-portal (Paket 1), NICHT derselbe DOM-Knoten (L-2026-09-01-N:
   jede var(--am-*)-Referenz hier braucht einen literalen Fallback, weil das
   Menü unter body hängt und #view-aufmass nicht mehr im Vorfahren-Pfad liegt). */
html body > .mp-au-menu-portal {
  position: fixed !important;
  /* box-sizing explizit, nicht auf einen app-weiten Reset verlassen: die
     JS-Positionierung (positionAuMenu()) berechnet max-height als exakte
     Viewport-Restfläche in der gewählten Richtung — mit content-box würden
     padding+border zusätzlich draufkommen und den unteren Viewport-Rand
     real überragen (per Touch-Wache gemessen, kein Vermutungsfall). */
  box-sizing: border-box !important;
  z-index: 2147482300 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
  margin: 0 !important;
  padding: 6px !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  border: 1px solid rgba(15, 23, 42, .11) !important;
  border-radius: 12px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
  box-shadow: 0 16px 34px -18px rgba(23, 32, 51, .52) !important;
  pointer-events: auto !important;
  touch-action: pan-y !important;
  -webkit-overflow-scrolling: touch !important;
}
html body > .mp-au-menu-portal[hidden] { display: none !important; }
/* MP-20260901-022 (Marcel-Morgenbefund, Menü-Anatomie, "EINE CSS-Quelle"):
   .mp-au-menu-item/.mp-au-menu-ico sind jetzt Teil des gemeinsamen
   Zeilen-Bausteins weiter oben in dieser Datei (bei .aufmass-std-tab/
   .mp-af-element-option) — hier NICHT mehr doppelt deklariert, sonst
   würde diese spätere Fassung (gleiche Spezifität, `!important`, aber
   spätere Position in der Kaskade) die dortige Vereinheitlichung
   stillschweigend wieder aushebeln. .mp-au-menu-sep bleibt hier — ein
   Kategorie-Trenner (Öffnungen vs. Zurechnung/Teilfläche), etwas anderes
   als die Zeilen-eigene border-bottom-Trennlinie. */
html body > .mp-au-menu-portal .mp-au-menu-sep {
  height: 1px !important;
  margin: 5px 4px !important;
  background: rgb(var(--mp-flaeche-3-rgb)) !important;
}

@media (max-width: 599px) {
  #view-aufmass .mp-au-toolbar { flex-wrap: wrap !important; }
}

/* MP-20260901-013 Paket 3 (Punkt B, Fachbefund F-1): Untergrund/
   Altbeschichtung/Zustand im Öffnungen-Sheet (#aufmassOvzOverlay,
   public/index.html) — 1 Spalte auf schmalen Geräten, 3 Spalten ab 600px.
   Eigene, scoped Klasse statt Inline-Style, damit die responsive Regel
   wirklich greift (ein hart kodiertes grid-template-columns inline hätte
   jede spätere Media-Query auf .form-grid unwirksam gemacht). */
#aufmassOvzOverlay .mp-ovz-f1-grid {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 12px !important;
}
@media (min-width: 600px) {
  #aufmassOvzOverlay .mp-ovz-f1-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}

/* Bauelement-Positionskarten (Rollladenkasten/Geländer/Holzwerk) — ruhige
   Hierarchie statt dominierender großer Buttons (Marcels Kritik an der
   Sektion insgesamt): Positionskopf klein/neutral, Formularfelder tragen
   die Aufmerksamkeit. */
#view-aufmass .mp-bauelement-position {
  border: 1px solid #e2e8f0 !important;
  border-radius: 14px !important;
  padding: 12px 14px !important;
  margin-bottom: 10px !important;
  background: rgb(var(--mp-flaeche-rgb)) !important;
}
#view-aufmass .mp-bauelement-position .mp-adjustment-card-head {
  padding: 0 0 8px !important;
  border-bottom: 1px solid #eef1f5 !important;
  margin-bottom: 10px !important;
}
#view-aufmass .mp-bauelement-position .mp-adjustment-card-head h5 {
  margin: 0 !important;
  font-size: 13px !important;
  font-weight: 750 !important;
  color: rgb(var(--mp-t2-475569)) !important;
}
/* MP-20260901-022 Befund ②: explizite Zwei-Spalten-Schwelle für die
   Feldpaare EINER Position — genau wie von Marcel verlangt ("ab sinnvoller
   Breite >=1024/1200 zweispaltig, auf kleineren Geräten wie bisher
   untereinander"). Ohne diese Regel würde `.form-grid` (Basisregel in
   legacy_styles/modules/aufmass.css, unscoped, 2 Spalten ab ~481px) auch
   auf Tablet-Breiten unterhalb von 1200px unkontrolliert 2-spaltig
   rendern — höher-spezifisch + `!important` hier, damit unabhängig von der
   Ladereihenfolge der 155 CSS-Dateien immer diese, bewusst gesetzte
   Schwelle gewinnt (auch gegen die globalen `.form-grid{1fr}`-Regeln bei
   ≤640/≤480px, die sonst dieselbe Spezifität hätten). Die Karte selbst ist
   seit dem Fix oben immer schon volle Breite — hier nur noch die
   Feldpaare. */
#view-aufmass .mp-bauelement-position .form-grid {
  grid-template-columns: minmax(0,1fr) !important;
}
@media (min-width:1200px) {
  #view-aufmass .mp-bauelement-position .form-grid {
    grid-template-columns: minmax(0,1fr) minmax(0,1fr) !important;
  }
}

/* MP-20260901-013 Nachtrag (Marcel, Tablet-Fund): Das Öffnungen-Sheet
   deckte die Dockleisten ab. body.sheet-open ist der bestehende,
   app-weite Mechanismus (mp-dock-nav.css:994 blendet nav.bottom-nav aus)
   — aufmass.js:openOvzSheet setzt ihn jetzt korrekt. Diese Regel deckt
   zusätzlich das Aufmaß-Schnelldock ab (#aufmassQuickDock, jetzt gebaut in
   Paket 2, siehe Block darunter). */
body.sheet-open #aufmassQuickDock,
body.sheet-open #aufmassQuickDockToggle { display: none !important; }

/* MP-20260901-013 Paket 2, ⑤: Aufmaß-Schnellerfassungs-Dock.
   Zweite, eigenständige rechte Dockleiste NEBEN #mpSideRail (UX-Spec
   Abschnitt B) — wird per JS an document.body gehängt
   (ensureAufmassQuickDock(), aufmass.js), NICHT statisch in aufmass.html
   platziert. Grund: ein direkt an body gehängtes position:fixed-Element ist
   unabhängig von jeder (auch künftigen) Transform-Animation eines
   View-Containers immer im Viewport verankert — die "transformierte-
   Vorfahren-Falle" ist damit strukturell ausgeschlossen, nicht nur geprüft
   (dieselbe Bauweise wie #mpSideRail selbst,
   modules/leads/mp-leads-sidebar.js:546-559). Geometrie 1:1 aus
   mp-baustellen-golden-v2.css:938-1025 übernommen (46×46 Kacheln, 12px
   Radius, 24×24 Icon-Box/23×23 SVG, 9px Padding, 7px Gap), OHNE diese Datei
   anzufassen (Vorgabe UX-Spec) — eigener Selektor hier.
   `:not(.sheet-open)` verhindert bewusst einen Spezifitäts-Wettlauf mit der
   sheet-open-Ausblendregel oben: die Sichtbarkeitsregel hier MATCHT im
   sheet-open-Zustand gar nicht erst, statt mit ihr um !important-Vorrang zu
   konkurrieren. */
#aufmassQuickDock,
#aufmassQuickDockToggle { display: none; }

html body:has(#view-aufmass.view.active):not(.sheet-open) #aufmassQuickDock {
  position: fixed !important;
  right: 12px !important;
  left: auto !important;
  bottom: calc(96px + env(safe-area-inset-bottom, 0px)) !important;
  z-index: 940 !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 7px !important;
  padding: 9px !important;
  transition: transform .32s cubic-bezier(.16,1,.3,1) !important;
}
html body.mp-aufmass-quickdock-collapsed #aufmassQuickDock {
  transform: translateX(145%) !important;
}

/* K-514 / MP-20260906-016 (Eilprüfung Lena Berger, qa-reliability,
   `docs/ai-company/handoffs/2026-09-06-K-514-eilpruefung.md`; Bestand,
   liegt auch auf Prod v854 vor): „Aufmaß speichern" ist der LETZTE der
   sieben Knöpfe der waagerecht scrollbaren Reiterleiste
   `.mp-aufmass-section-nav` (gebaut in core/mp-list-workspaces-golden.js
   2027-2035). Die Leiste endet am selben rechten Rand wie das
   ausgeklappte, `position:fixed` verankerte `#aufmassQuickDock`
   (`right:12px`, 64px breit, `z-index:940`). Scrollt man die Leiste ans
   Ende — und das tut jeder, der den Speichern-Knopf sucht — liegt der nur
   45px schmale Icon-Knopf VOLLSTÄNDIG unter dem Dock; ein Tipp trifft
   `.mp-rail-tab`/`.mp-rail-collapse`, nicht den Knopf. Gemessen per
   `elementFromPoint` an 20/50/80 % der Knopfbreite auf 360/390/412/430,
   3 von 3 Punkten je Breite (Lena).

   WARUM NICHT wie K-482 ein `padding-right` am Karteninhalt, und warum
   auch KEIN `padding-inline-end` in der Leiste selbst (die zuerst
   vorgeschlagene Fix-Richtung): Beide wurden gebaut und per Messung
   VERWORFEN. Ein Innen-Abstand am Ende des Scroll-Inhalts hätte nur den
   Zustand „ganz nach rechts gescrollt" geheilt. Die eigene Nachmessung
   (`tools/__diag-k514-dock-verdeckung.js`, echtes Staging, 360/390/412/430)
   zeigt aber: Das Dock überdeckt die Leiste NICHT nur am Scrollende — es
   liegt auf ihrer gesamten rechten Zone. Schon in der AUSGANGSLAGE
   (`scrollLeft = 0`, ohne jedes Zutun des Nutzers) trifft ein Tipp auf den
   Reiter „Fassade" bei 390/412/430 an 50 % und 80 % seiner Breite
   `DIV#aufmassQuickDock` bzw. `BUTTON.mp-rail-tab` statt den Reiter
   (412 px: Fassade x 293-386, Dock x 336-400 — Selbsttreffer 1 von 3).
   Ein Ende-Abstand hätte diesen Fall NICHT geheilt und den Fehler nur
   verschoben.
   Deshalb: die Leiste endet ab jetzt LINKS von der Dockzone, statt unter
   ihr hindurchzulaufen — dann ist kein Reiter mehr, an keiner
   Scrollposition, unter dem Dock. Erreichbar bleiben alle sieben Knöpfe,
   weil die Leiste ohnehin waagerecht rollt (`overflow-x:auto`); sie zeigt
   nur ein schmaleres Fenster.
   Wert: derselbe Token wie in der K-482-Familie (`--mp-ws-dock-safe`,
   90px aus mp-aufmass-layout-contract.css:9) — das Dock belegt 12+64=76px,
   bleiben 14px Luft. EINE Quelle für „wie breit ist die Dockzone", kein
   zweiter literaler Wert.
   NUR ≤767.98px UND nur bei AUSGEKLAPPTEM Dock (`body:not(
   .mp-aufmass-quickdock-collapsed)`, K-482-Muster): eingeklappt sind alle
   sieben Knöpfe laut Messung frei (Dock aus dem Sichtfeld geschoben), dann
   wäre die Reserve nur verschenkte Breite — die Leiste geht dort wieder
   über die volle Breite. Ab 768px hat die View-Box bereits
   `padding-right: var(--mp-ws-dock-safe)`
   (mp-aufmass-layout-contract.css:251/298) — dort endet die Leiste ohnehin
   links vom Dock, keine zweite Reserve nötig.
   SPEZIFITÄT — ZWEI Anläufe gebaut, im Browser gemessen und WIDERLEGT,
   bevor diese Fassung stand (Messungen in
   `tools/__diag-k514-breite-kaskade.js`):
   ① `html body:not(…) #view-aufmass.view.active .mp-aufmass-section-nav`
      = (1,4,2) → wirkungslos.
   ② dieselbe Regel mit `nav` + doppelter Klasse = (1,5,3) → EBENFALLS
      wirkungslos, obwohl die Regel im CSSOM stand und `nav.matches()`
      wahr war.
   URSACHE (gemessen, nicht vermutet — die `:is()`-Spezifitätsfalle):
   `mp-aufmass-layout-contract.css:92-99` und
   `mp-ui-final-hardwall.css:949-957` setzen `width:100% !important` über
   `html body #view-aufmass.view.active .mp-aufmass-detail >
   :is(.mp-aufmass-section-nav, .aufmass-sticky-header,
   #aufmassInnenContainer, #aufmassFassadeContainer, .mp-aufmass-summary)`.
   `:is()` zählt mit der Spezifität seines SPEZIFISCHSTEN Arguments — und
   in der Liste steht `#aufmassInnenContainer`. Die Regel wiegt damit
   ZWEI IDs (2,3,2), obwohl sie optisch nach einer Klassenregel aussieht.
   Jede Ein-ID-Regel verliert dagegen, egal wie viele Klassen man anhängt.
   Deshalb hier zwei IDs: `#view-aufmass#view-aufmass` — dieselbe im Repo
   bereits benutzte Notlösung wie `html:not(#mp-record-contract)…` in
   mp-aufmass-layout-contract.css:230. Ergebnis (2,5,3), schlägt (2,3,2).
   Absicht, kein Versehen. */
@media (max-width: 767.98px) {
  html body:not(.mp-aufmass-quickdock-collapsed) #view-aufmass#view-aufmass.view.active nav.mp-aufmass-section-nav.mp-aufmass-section-nav {
    width: calc(100% - var(--mp-ws-dock-safe, 90px)) !important;
    max-width: calc(100% - var(--mp-ws-dock-safe, 90px)) !important;
    scroll-padding-inline-end: 8px !important;
  }

  /* AUFLAGE 1 aus dem Gestaltungsurteil von Ida Neumann (ux-brand-designer),
     `docs/ai-company/specs/2026-09-06-MP-20260906-016-013-ida-urteil.md`,
     Abschnitt 1 — blockierend für die Abnahme: Die Leiste hat seit
     `MP-20260906-002` GAR KEINEN Rollhinweis mehr (Bildlaufleiste ist
     ausgeblendet, `mp-aufmass-layout-contract.css:128-138`; der
     `mask-image`-Anschnitt musste weg, weil eine Alpha-Maske der Karte die
     EIGENE Fläche nimmt — Rundung fällt weg, der Hintergrund bricht durch,
     `L-2026-09-06-G`). Mit der schmaleren Leiste wächst der Rollweg auf
     ≈3,5 Bildschirmbreiten; ohne sichtbare Zusicherung „da geht es weiter"
     wäre der K-514-Fix für den Nutzer eine Verschlechterung.
     Deshalb der Hintergrund-Doppeltrick (Werte 1:1 aus Idas Mini-Spec):
     Er ADDIERT Farbe statt Deckkraft zu entfernen, braucht KEIN neues
     DOM-Element und KEINE neue CSS-Datei, und der Schatten erscheint
     automatisch nur an der Seite, an der noch Inhalt liegt — die beiden
     weißen Deckflächen scrollen mit (`background-attachment: local`), die
     beiden Schattenkanten bleiben stehen (`scroll`).
     BEWUSST OHNE die `:not(.mp-aufmass-quickdock-collapsed)`-Bedingung:
     die Leiste rollt in BEIDEN Dock-Zuständen (Inhalt ≈836px gegen 244-404px
     Sichtfenster, gemessen), der Hinweis gehört deshalb in beide.
     Dunkelmodus: `css/mp-baustellen-golden-v2.css:437` setzt für diese
     Leiste `background:#fff !important` und `dark-mode.css` enthält KEINE
     Regel für `.mp-aufmass-section-nav` (grep-geprüft, 0 Treffer) — die
     Leiste ist heute auch im Dunkelmodus weiß. `#fff` ändert daran nichts;
     eine eigene Dunkelfassung wäre eine neue Gestaltungsentscheidung und
     gehört nicht in diesen Fix.
     Spezifität: dieselbe Doppel-ID wie oben (2,5,3) — die Basisregel trägt
     `background:#fff !important`, eine Kurzform, die jede Einzelangabe
     zurücksetzt. */
  html body #view-aufmass#view-aufmass.view.active nav.mp-aufmass-section-nav.mp-aufmass-section-nav {
    background-color: rgb(var(--mp-flaeche-rgb)) !important;
    background-image:
      linear-gradient(to right, rgb(var(--mp-flaeche-rgb)) 40%, rgba(var(--mp-flaeche-rgb),0)),
      linear-gradient(to left,  rgb(var(--mp-flaeche-rgb)) 40%, rgba(var(--mp-flaeche-rgb),0)),
      radial-gradient(farthest-side at 0    50%, rgba(15,23,42,.14), rgba(15,23,42,0)),
      radial-gradient(farthest-side at 100% 50%, rgba(15,23,42,.14), rgba(15,23,42,0)) !important;
    background-position: 0 0, 100% 0, 0 0, 100% 0 !important;
    background-repeat: no-repeat !important;
    background-size: 30px 100%, 30px 100%, 11px 100%, 11px 100% !important;
    background-attachment: local, local, scroll, scroll !important;
  }

  /* AUFLAGE 2, CSS-Teil (Ida, ebd.): der per `scrollIntoView` in Sicht
     gerollte Reiter darf nicht bündig an der Kante kleben. Der JS-Teil
     steht in `core/mp-list-workspaces-golden.js` (`select()`). */
  html body #view-aufmass#view-aufmass.view.active .mp-aufmass-section-item {
    scroll-margin-inline: 12px !important;
  }
}
html body:has(#view-aufmass.view.active):not(.sheet-open).mp-aufmass-quickdock-collapsed #aufmassQuickDockToggle {
  display: flex !important;
  position: fixed !important;
  right: 0 !important;
  left: auto !important;
  bottom: calc(96px + env(safe-area-inset-bottom, 0px)) !important;
  z-index: 939 !important;
  width: 18px !important;
  height: 54px !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  border: 1px solid rgba(148,163,184,.22) !important;
  border-right: 0 !important;
  border-radius: 12px 0 0 12px !important;
  background: var(--mp-card,rgb(var(--mp-flaeche-rgb))) !important;
  box-shadow: -3px 0 14px rgba(15,23,42,.14) !important;
  color: rgb(var(--mp-t3-64748b)) !important;
  cursor: pointer !important;
}
/* MP-20260901-022 Befund ①: bis hierhin waren ALLE sieben Kacheln
   einheitlich blau (`linear-gradient(145deg,#38b8ff,#0d8fdb)` für JEDEN
   `[data-qd-action]`) — Marcel verlangt dieselbe Optik wie die anderen
   Docks, u. a. #mpSideRail (rechte Modul-Leiste) mit je EIGENER
   Modulfarbe. Geometrie/Anatomie (46×46, Radius, Grid, mrt-ico) bleibt
   unverändert aus Paket 2 — 1:1 aus mp-baustellen-golden-v2.css:938-1025
   übernommen. NEU (Nachtrag, Marcel): Grenzwert/Schatten-Signatur jetzt
   ZUSÄTZLICH exakt wie #mpSideRail (mp-baustellen-golden-v2.css:598-606,
   NUR gelesen, nicht editiert) — 1px Lichtrand + Verlauf hell→dunkel +
   weicher Tiefenschatten + innere Lichtkante oben (inset-Highlight), statt
   des vorherigen einzelnen Außenschattens ohne Kante.
   ⚠ Offener Ein-Zeiler für den Koordinator: Die zentrale, gemeinsame
   Stil-Definition, die MP-20260901-018 laut Auftrag bauen sollte (Quelle
   #mpSideRail → gemeinsame Klasse/Custom-Properties für unteres
   Haupt-Dock + Startmenü-Raster), existiert im MP-018-Handoff-Stand dieser
   Sitzung NOCH NICHT (der dortige Handoff behandelt einen anderen Befund,
   den Hover-Clip an nav.bottom-nav) — deshalb hier bewusst die
   #mpSideRail-Werte direkt übernommen, nicht auf eine noch nicht
   existierende Quelle verwiesen. Sobald die zentrale Definition steht:
   hierher konsumieren statt der literalen Werte unten.
   Farbzuordnung: dieselben Akzentfarben-Familien wie die
   Kartenkopf-Akzente in mp-aufmass-v2.css (raum/fenster=Markenblau,
   tür=Slate, rollladenkasten=Amber, geländer=Cyan, holzwerk=Orange) — EINE
   Quelle für „welche Farbe gehört zu welchem Elementtyp"; raum/fenster
   (Blau) und rollladenkasten (Amber, inkl. dunkler Icon-Farbe für Kontrast)
   sind zusätzlich BYTE-GLEICH mit echten #mpSideRail-Kacheln
   (`[data-tab="leads"]`/`[data-tab="notizen"]`), tür/filter/geländer/
   holzwerk sind neue, gleich aufgebaute Verläufe (145deg, hell→dunkel,
   zwei Stopps) in den passenden Familien, da #mpSideRail selbst keine
   Slate-/Cyan-/Orange-Kachel kennt. */
#aufmassQuickDock .mp-rail-tab {
  position: relative !important;
  display: grid !important;
  width: 46px !important;
  height: 46px !important;
  min-width: 46px !important;
  min-height: 46px !important;
  padding: 0 !important;
  place-items: center !important;
  box-sizing: border-box !important;
  border: 1px solid rgba(255,255,255,.50) !important;
  border-radius: 13px !important;
  cursor: pointer !important;
  color: #fff !important;
  background: linear-gradient(145deg,#38b8ff,#168fd7) !important;
  box-shadow: 0 7px 15px -9px rgba(15,23,42,.58), inset 0 1px 0 rgba(255,255,255,.42) !important;
  transition: box-shadow .14s ease, transform .12s ease !important;
  touch-action: manipulation !important;
  -webkit-tap-highlight-color: transparent !important;
}
#aufmassQuickDock .mp-rail-tab[data-qd-action="raum"],
#aufmassQuickDock .mp-rail-tab[data-qd-action="fenster"] {
  background: linear-gradient(145deg,#38b8ff,#168fd7) !important;
}
#aufmassQuickDock .mp-rail-tab[data-qd-action="tuer"],
#aufmassQuickDock .mp-rail-tab[data-qd-action="filter"] {
  background: linear-gradient(145deg,#94a3b8,#475569) !important;
}
#aufmassQuickDock .mp-rail-tab[data-qd-action="rollladenkasten"] {
  background: linear-gradient(145deg,#ffc83f,#eca800) !important;
  color: #513800 !important;
}
#aufmassQuickDock .mp-rail-tab[data-qd-action="gelaender"] {
  background: linear-gradient(145deg,#22d3ee,#0e7490) !important;
}
#aufmassQuickDock .mp-rail-tab[data-qd-action="holzwerk"] {
  background: linear-gradient(145deg,#ff9f5a,#c2571a) !important;
}
#aufmassQuickDock .mp-rail-tab:hover { transform: translateX(-3px) translateY(-1px) scale(1.035) !important; }
#aufmassQuickDock .mp-rail-tab:active { transform: scale(.94) !important; }
#aufmassQuickDock .mp-rail-tab .mrt-ico {
  display: grid !important;
  width: 24px !important;
  height: 24px !important;
  place-items: center !important;
}
#aufmassQuickDock .mp-rail-tab .mrt-ico svg { width: 23px !important; height: 23px !important; display: block !important; }
#aufmassQuickDock .mp-rail-tab::after {
  content: attr(data-tooltip);
  position: absolute;
  right: calc(100% + 10px);
  left: auto;
  top: 50%;
  z-index: 5;
  transform: translateY(-50%);
  padding: 6px 9px;
  border: 1px solid rgba(15,23,42,.1);
  border-radius: 8px;
  background: rgb(var(--mp-flaeche-rgb));
  color: rgb(var(--mp-t1-182235));
  box-shadow: 0 6px 18px rgba(15,23,42,.12);
  font: 700 12px/1.2 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .12s ease;
}
#aufmassQuickDock .mp-rail-tab:hover::after,
#aufmassQuickDock .mp-rail-tab:focus-visible::after { opacity: 1; visibility: visible; }
#aufmassQuickDock .mp-rail-collapse {
  width: 46px !important;
  height: 32px !important;
  margin-top: 2px !important;
  border: none !important;
  border-radius: 10px !important;
  background: rgba(148,163,184,.18) !important;
  color: rgb(var(--mp-t2-475569)) !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
#aufmassQuickDock .mp-rail-collapse:hover { background: rgba(148,163,184,.3) !important; }
#aufmassQuickDock .mp-rail-collapse svg { width: 15px !important; height: 15px !important; }
#aufmassQuickDockToggle svg { width: 14px !important; height: 14px !important; }

/* ═══════════════════════════════════════════════════════════════════
   MP-20260902-011 ③ — Im Aufmaß-Modus ERSETZT die Aufmaß-Leiste die
   rechte Modulleiste (Marcels Screenshot: beide Leisten lagen rechts
   übereinander/„beißen sich"). Zielbild wörtlich: Aufmaß-Leiste in den
   Slot der rechten Dockleiste, mit demselben weißen Glas-Effekt wie die
   Haupt-Dockleiste und demselben Fähnchen zum Ein-/Ausfahren; die andere
   Dockleiste dabei ausblenden.
   Quelle der Glas-/Fähnchen-Werte: mp-list-workspaces-golden.css
   („Glas-Pod statt Randfaehnchen", #mpSideRail ~Z.2391 + #mpRailToggle
   ~Z.2462) — NUR gelesen, nicht editiert; Werte hier bewusst literal
   übernommen (dieselbe Abwägung wie im MP-022-①-Block oben: die
   zentrale gemeinsame Stil-Definition aus MP-018 existiert noch nicht).
   Spezifität: `html body:has(#view-aufmass.view.active) #mpSideRail`
   trägt 2 IDs und schlägt damit jede `html body #mpSideRail`-Regel der
   Workspaces-Datei unabhängig von der Ladereihenfolge; die Kollaps-/
   Toggle-Overrides unten stehen NACH den gleichspezifischen Basisregeln
   oben in DIESER Datei und gewinnen über die Reihenfolge. */

/* Die rechte Modulleiste weicht im Aufmaß-Modus — auf ALLEN Breiten
   (auch <768px liegen sonst beide Leisten rechts). Kein :not(.sheet-open):
   auch unter einem offenen Sheet bleibt sie weg, dort deckt das Sheet ab. */
html body:has(#view-aufmass.view.active) #mpSideRail,
html body:has(#view-aufmass.view.active) #mpRailToggle {
  display: none !important;
}

@media (min-width: 768px) {
  /* QuickDock übernimmt den Rail-Slot: rechts, vertikal mittig, Glas-Pod
     exakt wie #mpSideRail. Basisgeometrie (flex/column) kommt aus der
     Sichtbarkeitsregel oben — hier nur Slot + Optik. */
  html body:has(#view-aufmass.view.active):not(.sheet-open) #aufmassQuickDock {
    top: 50% !important;
    bottom: auto !important;
    right: 12px !important;
    box-sizing: border-box !important;
    width: 62px !important;
    padding: 8px !important;
    gap: 6px !important;
    transform: translateY(-50%) !important;
    border: 1px solid rgba(255,255,255,.78) !important;
    border-radius: 23px !important;
    background: rgba(var(--mp-flaeche-rgb), .76) !important;
    box-shadow: 0 1px 2px rgba(15,23,42,.05), 0 20px 54px -25px rgba(15,23,42,.46), inset 0 1px 0 rgba(255,255,255,.96) !important;
    -webkit-backdrop-filter: blur(26px) saturate(1.38) !important;
    backdrop-filter: blur(26px) saturate(1.38) !important;
    transition: transform 460ms cubic-bezier(.16,1,.3,1), opacity 220ms ease !important;
  }
  /* Einfahren wie die Modulleiste: seitlich raus + ausblenden. Muss die
     translateY(-50%)-Zentrierung mitführen, sonst springt die Leiste beim
     Einklappen erst auf ihre Top-Kante.
     QA-Befund F-3 (Lena, 02.09.): die erste Fassung stand auf
     `html body.…-collapsed #aufmassQuickDock` (1,1,2) und verlor gegen
     die (2,3,2)-Basisregel oben — das Ausfahren war tote Regel, sichtbar
     war nur das Fading. Jetzt (2,4,2) — schlägt die Basisregel sicher.
     Dieselbe Fallenklasse wie L-2026-09-02-K, diesmal bei uns selbst. */
  html body:has(#view-aufmass.view.active):not(.sheet-open).mp-aufmass-quickdock-collapsed #aufmassQuickDock {
    opacity: 0 !important;
    pointer-events: none !important;
    transform: translateY(-50%) translateX(calc(100% + 28px)) !important;
  }
  /* Einklapp-Knopf in der Leiste: Maße/Optik wie .mp-rail-collapse der
     Modulleiste (34×28, dezenter Slate-Ton). */
  html body:has(#view-aufmass.view.active) #aufmassQuickDock .mp-rail-collapse {
    width: 34px !important;
    height: 28px !important;
    border-radius: 10px !important;
    background: rgba(100,116,139,.09) !important;
    color: rgb(var(--mp-t3-64748b)) !important;
  }
  /* Rückhol-Fähnchen: exakt das Glas-Fähnchen von #mpRailToggle —
     22×62, vertikal mittig am rechten Rand, Glas statt Karton. */
  html body:has(#view-aufmass.view.active):not(.sheet-open).mp-aufmass-quickdock-collapsed #aufmassQuickDockToggle {
    top: 50% !important;
    bottom: auto !important;
    transform: translateY(-50%) !important;
    width: 22px !important;
    height: 62px !important;
    border: 1px solid rgba(255,255,255,.76) !important;
    border-right: 0 !important;
    /* QA F-4: #mpRailToggle rendert GEMESSEN mit 12px-Radius (nicht die
       14px aus der Workspaces-Quelle — dort gewinnt eine andere Regel);
       „exakt wie das Fähnchen" heißt exakt wie gemessen. */
    border-radius: 12px 0 0 12px !important;
    background: rgba(var(--mp-flaeche-rgb), .84) !important;
    box-shadow: -8px 0 24px -16px rgba(15,23,42,.55) !important;
    -webkit-backdrop-filter: blur(22px) saturate(1.3) !important;
    backdrop-filter: blur(22px) saturate(1.3) !important;
  }
}

/* MP-20260901-022 (mp022d, Marcel-Handy-Befund): Diese Regel sollte das
   Schnelldock <768px verstecken (UX-Spec-Vorgabe: kein horizontales
   Quickbar-Muster für Handys gebaut). Sie war aber NIE wirksam — die
   Sichtbarkeitsregel weiter oben (`html body:has(#view-aufmass.view.active)
   :not(.sheet-open) #aufmassQuickDock { display:flex !important; ... }`,
   Zeile ~3550) hat wegen der ID in `:has(#view-aufmass.view.active)` IMMER
   höhere Spezifität als der reine `#aufmassQuickDock`-Selektor hier und
   gewinnt deshalb unabhängig von der Bildschirmbreite (dieselbe
   Fallenklasse wie L-2026-09-02-K). Marcels Handy-Screenshot zeigt das
   Dock genau deshalb auf ~390px Breite — und er NUTZT es dort aktiv.
   Entscheidung (Marcel, mp022d): Mobil-Sichtbarkeit ist ab sofort
   GEWOLLT, nicht mehr nur ein Bug — die tote, wirkungslose Ausblendregel
   ist entfernt statt erneut (diesmal wirksam) nachgebaut. Geprüft:
   Kollision mit dem unteren App-Dock, Menü-Passform im Phone-Viewport und
   Touch-Zielgrößen bei 390×844/430×932 — siehe
   tools/test-aufmass-quickdock-touch.js (Läufe K/L). */

/* MP-20260901-013 ⑧: Zusammenfassungs-Erweiterungen für Bauelement-Karten
   — Raum-Zuordnung im Titel, Klärung-offen-Badge (F-1), Holzwerk-Typzeile. */
#view-aufmass .mp-aufmass-summary-room-target {
  font-weight: 600 !important;
  color: rgb(var(--mp-t3-64748b)) !important;
}
#view-aufmass .mp-aufmass-summary-klaerung {
  display: inline-block !important;
  margin-left: 6px !important;
  padding: 2px 8px !important;
  border-radius: 8px !important;
  background: rgb(var(--mp-f2-fff7ed)) !important;
  color: #c2410c !important;
  font-size: 10px !important;
  font-weight: 780 !important;
  letter-spacing: .02em !important;
}
#view-aufmass .mp-aufmass-summary-hw-typen {
  margin-top: 8px !important;
  padding-top: 8px !important;
  border-top: 1px solid #eef1f5 !important;
  font-size: 11.5px !important;
  color: rgb(var(--mp-t3-64748b)) !important;
}

/* MP-20260901-013 Paket 2, ⑨: Gesamt-Summenblock über ALLE Bereiche.
   Wiederverwendet ausschließlich Bestandsklassen aus
   mp-baustellen-golden-v2.css (.mp-aufmass-summary-room/-values/-panel-icon
   — "gleiche Wertkachel-Optik wie die Bereichskarten", Auftrag), diese Datei
   trägt nur die neuen, additiven Layout-/Kopf-Regeln für den Wrapper. */
#view-aufmass .mp-aufmass-summary-aggregate {
  margin-bottom: 18px !important;
}
#view-aufmass .mp-aufmass-summary-aggregate-head {
  margin-bottom: 10px !important;
}
#view-aufmass .mp-aufmass-summary-aggregate-head h3 {
  margin: 0 !important;
  color: rgb(var(--mp-t1-172033)) !important;
  font-size: 15px !important;
  font-weight: 800 !important;
}
#view-aufmass .mp-aufmass-summary-aggregate-head p {
  margin: 2px 0 0 !important;
  color: rgb(var(--mp-t3-8793a5)) !important;
  font-size: 11px !important;
}
#view-aufmass .mp-aufmass-summary-aggregate-list {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
#view-aufmass .mp-aufmass-summary-aggregate-card {
  border: 1px solid #dbe6f0 !important;
  background: rgb(var(--mp-f2-f9fbfd)) !important;
}
#view-aufmass .mp-aufmass-summary-aggregate-values {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
@media (max-width: 767px) {
  #view-aufmass .mp-aufmass-summary-aggregate-list { grid-template-columns: minmax(0, 1fr) !important; }
  #view-aufmass .mp-aufmass-summary-aggregate-values { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
