/* Content-only motion. The host retains all list / viewport / shell geometry. */
.device-result-row.is-morph-move,
.device-result-row.is-leaving,
.device-result-list.is-morphing > .device-result-row,
.pm-result-morph-leave .device-result-row {
  transition: none !important;
}

.device-result-list { align-content: start; overflow-anchor: none; grid-auto-rows: max-content; }
.device-result-list.pm-elastic-host {
  display: block;
}
.device-result-list.pm-elastic-host > .pm-elastic-clip {
  display: block;
}
.device-result-list.pm-elastic-host > .pm-elastic-clip > .pm-elastic-visual {
  display: grid;
  align-content: start;
  grid-auto-rows: max-content;
  gap: var(--pm-s25-result-gap, 10px);
  will-change: auto;
}
.repair-picker-scroll.pm-elastic-host > .pm-elastic-clip,
.repair-picker-scroll.pm-elastic-host > .pm-elastic-clip > .pm-elastic-visual,
[data-repair-list-scroller].pm-elastic-host > .pm-elastic-clip,
[data-repair-list-scroller].pm-elastic-host > .pm-elastic-clip > .pm-elastic-visual {
  display: block;
}
.pm-elastic-clip {
  min-height: 0;
}
.pm-elastic-visual {
  transform: translate3d(0, 0, 0);
}
/* Hover uses inner content; the keyed row's transform belongs only to GSAP. */
body #geraetesuche .device-result-row:hover { transform: none; }
body #geraetesuche .device-result-row:hover > .device-result-row-body,
body #geraetesuche .device-result-row:hover > .device-result-row-icon { translate: 0 -1px; }
.pm-result-morph-move {
  position: absolute;
  inset: 0;
  z-index: 2;
  overflow: visible;
  pointer-events: none;
}
.pm-result-morph-move .device-result-row { transition: none !important; }
/* Only the measured clipping panel releases its visual path. The scrollport
   keeps its final clip; proxies/exit rows remain bounded by the outer shell. */
body #geraetesuche .repair-flow-panel.pm-search-morph-visuals,
body #geraetesuche .device-search-dropdown-inner.pm-search-morph-visuals,
body #geraetesuche .device-search-dropdown.pm-search-morph-visuals {
  overflow: visible !important;
}

.pm-result-morph-leave {
  position: absolute;
  inset: 0;
  z-index: 3;
  overflow: visible;
  pointer-events: none !important;
}

.pm-result-morph-leave.is-morphing {
  overflow: visible;
}

.pm-result-morph-leave .device-result-row.is-leaving {
  margin: 0 !important;
  pointer-events: none !important;
}

.device-result-row.is-morph-move:not(.is-leaving)::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background: rgba(37, 99, 235, 0.035);
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, 0.16);
  opacity: var(--pm-morph-accent, 0);
}

/* Alpha belongs to the stationary viewport: colored cards dissolve into the
   actual shell backdrop. No painted overlay and no second mask on the parent. */
body #geraetesuche [data-device-search-results],
body #geraetesuche [data-device-search-results] .device-result-viewport {
  -webkit-mask-image: none !important;
  mask-image: none !important;
}
body #geraetesuche [data-device-search-results] .device-result-viewport[data-pm-fade-visible="true"],
body.pm-cta-live-demo #geraetesuche [data-pm-list-viewport][data-pm-fade-visible="true"] {
  -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 36px), rgba(0,0,0,.85) calc(100% - 24px), rgba(0,0,0,.35) calc(100% - 12px), transparent 100%) !important;
  mask-image: linear-gradient(to bottom, #000 calc(100% - 36px), rgba(0,0,0,.85) calc(100% - 24px), rgba(0,0,0,.35) calc(100% - 12px), transparent 100%) !important;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}
body #geraetesuche [data-device-search-results] [data-device-result-viewport].device-result-viewport > .device-result-bottom-fade {
  display: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .device-result-row.is-morph-move::after { animation: none; opacity: 0; }
}
:root { --pm-search-responsive-mode: DESKTOP_WIDE; }
@media (max-width: 1180px) { :root { --pm-search-responsive-mode: DESKTOP_COMPACT; } }
@media (max-width: 900px) { :root { --pm-search-responsive-mode: TABLET; } }
@media (max-width: 767px) { :root { --pm-search-responsive-mode: MOBILE; } }
@media (max-width: 767px) {
  /* Wrapped metadata is real content. A desktop 68px fixed row otherwise makes
   * the last text line create fake overflow below an apparently fitting list. */
  body #geraetesuche .device-result-list > .device-result-row,
  body #geraetesuche .device-result-list .pm-elastic-visual > .device-result-row {
    height: auto !important;
  }
}

/* One geometry transaction publishes these three values. Legacy state rules and
 * inline budgets cannot override them while the active search owns the shell. */
body #geraetesuche > .container:has([data-pm-search-geometry="1"]) {
  translate: var(--pm-search-horizontal-shift, 0px) 0;
}
body #geraetesuche [data-device-search-mount][data-lab-search-layout-state^="search-results"] {
  padding-bottom: 0 !important;
}
body #geraetesuche [data-lab-shell-window][data-pm-search-geometry="1"] {
  height: var(--pm-search-shell-height) !important;
  min-height: 0 !important;
  max-height: var(--pm-search-shell-height) !important;
  transition: none !important;
}
body #geraetesuche [data-pm-search-geometry="1"] [data-lab-shell-inner] {
  transition: none !important;
  height: var(--pm-search-stage-height) !important;
  max-height: var(--pm-search-stage-height) !important;
  min-height: 0 !important;
  flex: 0 0 auto !important;
  justify-content: flex-start !important;
  overflow: hidden !important;
}
body #geraetesuche [data-pm-search-geometry="1"] [data-lab-content-panel="device"] {
  transition: none !important;
  max-height: var(--pm-search-stage-height) !important;
  overflow: visible !important;
}
body #geraetesuche [data-pm-search-geometry="1"] .device-search-dropdown,
body #geraetesuche [data-pm-search-geometry="1"] .device-search-dropdown-inner {
  transition: none !important;
  height: auto !important;
  max-height: none !important;
  min-height: 0 !important;
  flex: 0 0 auto !important;
}
body #geraetesuche [data-pm-search-geometry="1"] [data-device-search-results],
body #geraetesuche [data-pm-search-geometry="1"] .device-result-viewport {
  transition: none !important;
  height: var(--pm-search-result-height) !important;
  max-height: var(--pm-search-result-height) !important;
  min-height: 0 !important;
  flex: 0 0 auto !important;
}
body #geraetesuche [data-pm-search-geometry="1"] .device-result-viewport {
  overflow: hidden !important;
}
/* Entry transforms can temporarily extend scrollHeight; FIT is derived from
 * layout content, so it never displays a misleading overflow affordance. */
body #geraetesuche [data-pm-search-geometry="1"][data-pm-search-geometry-mode="fit"] [data-device-search-results] [data-device-result-viewport].device-result-viewport > .device-result-bottom-fade {
  display: none !important;
}
body #geraetesuche [data-pm-search-geometry="1"][data-pm-search-geometry-mode="fit"] [data-device-search-results] .device-result-viewport {
  -webkit-mask-image: none !important;
  mask-image: none !important;
}
/* Inert MOVE/OUT visuals retain the captured presentation when a smaller FIT
 * shell commits. The live flow remains inside its final clipping viewport. */
/* Repeated ID deliberately outranks the legacy :not(:has(...)) overflow chain. */
body #geraetesuche#geraetesuche [data-pm-search-geometry="1"]:has(.pm-search-morph-visuals) > .repair-flow-shell,
body #geraetesuche#geraetesuche [data-pm-search-geometry="1"]:has(.pm-search-morph-visuals) [data-lab-shell-inner] {
  overflow: visible !important;
}
body.pm-cta-live-demo #geraetesuche [data-pm-search-geometry="1"] [data-device-search-results] .device-result-viewport > .device-result-list {
  grid-auto-rows: max-content;
  height: 100% !important;
  max-height: 100% !important;
  min-height: 0 !important;
  overflow: hidden auto !important;
}
