.tpl2-scope {
  --tpl2-primary-color: #b28d68;
  --tpl2-secondary-color: #f6eee5;
  --tpl2-font: "Barlow", sans-serif;
  /* text colour to use ON the brand colour - overwritten by JS (contrastColor)
     to #000 or #fff depending on the chosen colour's brightness. */
  --tpl2-on-primary: #fff;
  /* brand colour used as a foreground on white (masked icons in Vorteile
     Weiss) - JS darkens it if the picked colour is too light to read on white. */
  --tpl2-primary-ink: var(--tpl2-primary-color);
  /* white PNG icons on the brand background (Vorteile Hintergrund): JS sets
     this to 1 to invert them to black when the brand colour is light. */
  --tpl2-icon-invert: 0;
  /* black svgs (mobile menu X / arrow): JS sets this to 1 to invert them to
     white when the brand colour is dark. */
  --tpl2-close-invert: 0;
}

@font-face {
  font-family: "Barlow";
  src: url("/ftemplate2/tpl-assets/fonts/Barlow-Regular.ttf");
  font-weight: 400;
  font-style: normal;
}

@font-face {
  font-family: "Barlow";
  src: url("/ftemplate2/tpl-assets/fonts/Barlow-Medium.ttf");
  font-weight: 500;
  font-style: normal;
}

@font-face {
  font-family: "Barlow";
  src: url("/ftemplate2/tpl-assets/fonts/Barlow-SemiBold.ttf");
  font-weight: 600;
  font-style: normal;
}

@font-face {
  font-family: "Barlow";
  src: url("/ftemplate2/tpl-assets/fonts/Barlow-Bold.ttf");
  font-weight: 700;
  font-style: normal;
}

.tpl2-scope, .tpl2-scope * {
  font-family: var(--tpl2-font);
}

.tpl2-scope .primary-bg {
  background-color: var(--tpl2-primary-color);
}

/* Auto-contrast: any text sitting on the brand colour flips to black or white
   based on the colour's brightness (--tpl2-on-primary, set by JS). !important
   so it beats the fragments' hardcoded `text-white` / color:#fff. Scoped to
   .primary-bg only, so white text over dark hero images is NOT affected. */
.tpl2-scope .primary-bg:not(.offcanvas),
.tpl2-scope .primary-bg:not(.offcanvas) * {
  color: var(--tpl2-on-primary, #fff) !important;
}

.tpl2-scope .secondary-bg {
  background-color: var(--tpl2-secondary-color);
}

.tpl2-scope .btn-primary {
  padding: 5px 10px;
  border: 1px solid #000;
  background-color: transparent;
  color: #000;
  border-radius: 0;
  transition: background-color 0.2s, border-color 0.2s, color 0.2s;
}

/* GRUNDRISS / Mehr-erfahren outline button sits on the always-light
   secondary-bg, so it's a black outline that fills solid black with white text
   on hover (a clean invert, not the brand colour). */
.tpl2-scope .btn-primary:hover,
.tpl2-scope .btn-primary:focus,
.tpl2-scope .btn-primary:active,
.tpl2-scope .btn-primary.active {
  background-color: #000;
  border-color: #000;
  color: #fff;
}

.tpl2-scope .section-big-padding {
  padding: 50px 0;
}/******************
      NAVBAR 
 *****************/


.tpl2-scope .navbar {
  padding: 20px 0;
  box-shadow: 0px 1px 3px 0px #00000040;
}
.tpl2-scope .navbar-brand {
  max-width: 200px;
  max-height: 100%;
  width: auto;
  height: auto;
}

.tpl2-scope .navbar-brand img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

.tpl2-scope .navbar-nav {
  gap: 30px;
}

.tpl2-scope .navbar .nav-item {
  display: flex;
  align-items: cent2r;
}

.tpl2-scope .navbar .nav-item .nav-link {
  text-transform: uppercase;
  font-size: 20px;
  line-height: 1.5;
  color: #000;
  font-weight: 500;
  letter-spacing: 0.4px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 0;
  transition: 0.2s ease;
}

.tpl2-scope .navbar .nav-item:last-child .nav-link::after {
  content: "";
  display: inline-block;
  width: 24px;
  height: 24px;
  background-image: url("/ftemplate2/tpl-assets/images/arrow-up-right.svg");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}

.tpl2-scope .nav-item:last-child:hover .nav-link::after {
  background-image: url("/ftemplate2/tpl-assets/images/arrow-up-right-wh.svg");
}

.tpl2-scope .navbar .nav-item:last-child .nav-link {
  font-weight: 700;
  border: 1px solid #000;
  padding: 10px 20px;
}

.tpl2-scope .navbar .nav-item:last-child:hover .nav-link {
  background-color: #000;
  color: #fff;
}

.tpl2-scope .navbar .nav-item .nav-link:hover,
.tpl2-scope .navbar .nav-item .nav-link.active {
  font-weight: 700;
  text-decoration: none;
}

.tpl2-scope .navbar-toggler {
  border: none;
  padding: 0;
}

.tpl2-scope .navbar-toggler-icon {
  background-image: url("/ftemplate2/tpl-assets/images/menu.svg");
}

.tpl2-scope .navbar-toggler:focus,
.tpl2-scope .btn-close:focus {
  box-shadow: none;
}

.tpl2-scope .offcanvas .btn-close {
  opacity: 1;
  /* Bootstrap's X is a black svg; invert it to white on a dark brand colour so
     it contrasts the brand-coloured mobile menu panel. (Only shown on mobile.) */
  filter: invert(var(--tpl2-close-invert, 0));
}

/* Mobile off-canvas menu is a brand-coloured panel (only <992px, where the
   navbar-expand-lg off-canvas is a real panel) - auto-contrast its contents
   against the brand colour. Desktop (>=992px) keeps the fixed black header. */
@container tpl2-stage (max-width: 991.98px) {
  .tpl2-scope .navbar .offcanvas .nav-link {
    color: var(--tpl2-on-primary, #fff) !important;
  }
  /* KONTAKT outline box: keep it a steady on-primary outline in BOTH normal and
     hover state on mobile - the desktop black-fill hover looked wrong on the
     brand panel (and touch has no hover anyway). */
  .tpl2-scope .navbar .offcanvas .nav-item:last-child .nav-link,
  .tpl2-scope .navbar .offcanvas .nav-item:last-child:hover .nav-link {
    background-color: transparent !important;
    color: var(--tpl2-on-primary, #fff) !important;
    border-color: var(--tpl2-on-primary, #fff) !important;
  }
  .tpl2-scope .navbar .offcanvas .nav-item:last-child .nav-link::after,
  .tpl2-scope .navbar .offcanvas .nav-item:last-child:hover .nav-link::after {
    background-image: url("/ftemplate2/tpl-assets/images/arrow-up-right.svg") !important;
    filter: invert(var(--tpl2-close-invert, 0));
  }
}

.tpl2-scope .offcanvas-header {
  padding: 27px 18px !important;

  display: flex;
  justify-content: end;
  position: relative;
}
/******************
        HERO
 *****************/


.tpl2-scope .hero-section .swiper {
  width: 100%;
  height: 100%;
}

.tpl2-scope .swiper-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.tpl2-scope .hero-disturber {
  width: 135px;
  height: 135px;
  bottom: unset;
  top: 15%;
  right: 35px;
  border-radius: 50%;
  text-decoration: none;
  padding: 10px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
  transform: rotate(20.84deg);
}/******************
        HERO 1
 *****************/



.tpl2-scope .hero-1-img {
  top: 100px;
  bottom: 0;
}

.tpl2-scope .hero-disturber-1 {
  width: 135px;
  height: 135px;
  top: 5%;
  right: 5px;
  border-radius: 50%;
  text-decoration: none;
  padding: 10px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
  transform: rotate(20.84deg);
}

.tpl2-scope .hero-1-inner h1,
.tpl2-scope .hero-2-text h1,
.tpl2-scope .hero-3-text h1 {
  font-size: 27px;
  line-height: 1.3;
  font-weight: 700;
  text-transform: uppercase;
  margin-bottom: 45px;
  margin-top: 30px;
  /* Placeholder tokens like "[Quartier/Stadtteil]" have no spaces to wrap
     at, so on narrow phones (~320-360px) they can run past the column
     edge instead of breaking onto the next line. In hero-1 specifically
     this h1 is also a flex item inside a column-direction flex container
     (.hero-1-text is d-flex flex-column) with align-items-start, so its
     width is sized via fit-content - which is floored at the content's
     min-content size regardless of the flex container's actual available
     space. overflow-wrap:break-word alone doesn't reduce that min-content
     floor (only overflow-wrap:anywhere does), so the box stayed wider
     than its parent even with break-word set; width:100% + min-width:0
     takes it out of fit-content sizing entirely so it actually shrinks to
     the column and break-word can then do its job. Harmless for
     hero-2/hero-3, whose h1 isn't a flex item to begin with. */
  width: 100%;
  min-width: 0;
  overflow-wrap: break-word;
}

.tpl2-scope .hero-section-1 .hero-1-inner p {
  text-align: start;
}/******************
        HERO 2
 *****************/


.tpl2-scope .hero-section-2,
.tpl2-scope .hero-section-3 {
  height: calc(100svh - 120.5px);
}
  .tpl2-scope .hero-section-3 {
    min-height: 800px;
  }
.tpl2-scope .hero-2-text {
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  max-width: 790px;
}

.tpl2-scope .hero-2-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.tpl2-scope .hero-disturber-2 {
  width: 250px;
  height: 250px;
  bottom: 4%;
  right: 30px;
  border-radius: 50%;
  text-decoration: none;
  padding: 10px;
  font-size: 21px;
  font-weight: 600;
  line-height: 1.2;
  transform: rotate(20.84deg);
}

.tpl2-scope .img-overlay {
  background-color: rgba(0, 0, 0, 0.54);
}/******************
        HERO 3
 *****************/



.tpl2-scope .hero-3-text {
  padding: 50px 0;
}

.tpl2-scope .hero-section-3 .hero-3-text h1 {
  margin-top: 0px;
  margin-bottom: 20px;
}

.tpl2-scope .hero-section-3 .hero-3-text p {
  text-align: start;
  max-width: 990px;
}

.tpl2-scope .hero-3-img img {
  object-position: center;
  min-height: 400px;
}

.tpl2-scope .hero-section-3 .img-container {
  flex: 1;
  min-height: 0;
}

.tpl2-scope .hero-disturber-3 {
  width: 200px;
  height: 200px;
  top: -5%;
  right: 30px;
  border-radius: 50%;
  text-decoration: none;
  padding: 10px;
  font-size: 21px;
  font-weight: 600;
  line-height: 1.2;
  transform: rotate(20.84deg);
}/******************
        CARDS 
 *****************/


.tpl2-scope .cards-text {
  margin-bottom: 40px;
}

.tpl2-scope .title-section h1,
.tpl2-scope .cards-section-pr .vorteile-header h1 {
  font-size: 27px;
  line-height: 1.3;
  font-weight: 700;
  letter-spacing: 0.8px;
  text-transform: uppercase;
  text-align: center;
  color: #000;
  margin-bottom: 18px;
}

.tpl2-scope .text-desc p,
.tpl2-scope .card-box-text p,
.tpl2-scope .hero-1-inner p,
.tpl2-scope .hero-3-text p,
.tpl2-scope .angebot-big-card .title-part p,
.tpl2-scope .angebot-swiper-card .title-part p {
  font-size: 16px;
  line-height: 1.5;
  color: #000;
  text-align: center;
  font-weight: 400;
  margin-bottom: 0;
}

.tpl2-scope .card-box {
  min-height: 305px;
  padding: 15px;
}

.tpl2-scope .card-box h2,
.tpl2-scope .object-text h2,
.tpl2-scope .angebot-section h2,
.tpl2-scope .lage-section h2,
.tpl2-scope .kontakt-section h2,
.tpl2-scope .lage-section-1 h2,
.tpl2-scope .lage-section-2 h2,
.tpl2-scope .angebot-header-text h2,
.tpl2-scope .cards-section .title h2,
.tpl2-scope .cards-section-wh .title h2 {
  font-size: 22px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.8px;
  text-transform: uppercase;
  color: #000;
}

.tpl2-scope .card-box-text h3 {
  font-size: 20px;
  line-height: 1;
  font-weight: 700;
  margin-bottom: 20px;
  text-transform: uppercase;
}/******************
        CARDS 1
 *****************/


.tpl2-scope .cards-section .icon-card,
.tpl2-scope .cards-section-wh .icon-card {
  width: 57px;
  height: 57px;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-bottom: 15px;
}

.tpl2-scope .cards-section .icon-card {
  /* translucent backdrop behind the icon - tinted with the contrast colour
     (white on a dark brand, black on a light one) so it stays visible. */
  background-color: color-mix(in srgb, var(--tpl2-on-primary, #fff) 25%, transparent);
}

.tpl2-scope .cards-section-wh .icon-card {
  background-color: var(--tpl2-secondary-color);
}

.tpl2-scope .cards-section .icon-card img,
.tpl2-scope .cards-section-wh .icon-card img {
  width: 24px;
  height: 24px;
  object-fit: contain;
  /* white PNG icons: invert to black when the brand colour is light (JS sets
     --tpl2-icon-invert to 1), so they stay visible whatever colour is chosen. */
  filter: invert(var(--tpl2-icon-invert, 0));
}

/* vorteile-wh's icons are single-color PNGs with a transparent background -
   masked with themselves so a plain background-color shows through in the
   theme's primary color, instead of the color baked into the PNG. */
.tpl2-scope .cards-section-wh .icon-mask {
  display: block;
  width: 24px;
  height: 24px;
  background-color: var(--tpl2-primary-ink, var(--tpl2-primary-color));
  -webkit-mask-image: var(--icon);
  mask-image: var(--icon);
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
}

.tpl2-scope .cards-section .icon-subtitle,
.tpl2-scope .cards-section-wh .icon-subtitle {
  font-size: 18px;
  line-height: 1;
  font-weight: 700;
  margin-bottom: 16px;
}

.tpl2-scope .cards-section .icon-text p,
.tpl2-scope .cards-section-wh .icon-text p {
  font-size: 18px;
  line-height: 1.5;
  margin-bottom: 0;
}

.tpl2-scope .cards-section .title h2 {
  color: #fff;
  margin-bottom: 30px;
}

.tpl2-scope .cards-section-wh .title h2 {
  margin-bottom: 30px;
}/******************
    CARDS IMG
 *****************/


.tpl2-scope .cards-section-pr .vorteile-header {
  margin-bottom: 30px;
}

.tpl2-scope .cards-section-pr .vorteile-header h2 {
  margin-bottom: 20px;
}

.tpl2-scope .cards-section-pr .vorteile-header p {
  font-size: 18px;
  line-height: 1.5;
  margin-bottom: 0;
  color: #000;
}

.tpl2-scope .card-img-wrapper {
  width: 100%;
  height: 320px;
  margin-bottom: 70px;
}

.tpl2-scope .card-pr-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.tpl2-scope .card-pr-icon {
  bottom: -29px;
  right: 50%;
  left: 50%;
  transform: translateX(-50%);
  background-color: var(--tpl2-primary-color);
  width: 58px;
  height: 58px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.tpl2-scope .card-pr-icon img {
  width: 32px;
  height: 32px;
  object-fit: contain;
  /* white PNG icon on the brand-coloured badge: invert to black when the brand
     colour is light so it stays visible (same as the vorteile-bg icons). */
  filter: invert(var(--tpl2-icon-invert, 0));
}

.tpl2-scope .card-pr-text .icon-subtitle {
  font-weight: 700;
  font-size: 18px;
  line-height: 1;
  text-transform: uppercase;
  margin-bottom: 20px;
  color: #000;
}

.tpl2-scope .card-pr-text .icon-text p {
  font-weight: 400;
  font-size: 18px;
  line-height: 1.5;
  margin-bottom: 0;
}/******************
        OBJEKT 
 *****************/


.tpl2-scope .object-content:not(:last-child) {
  margin-bottom: 40px;
}

.tpl2-scope .image-first .objekt-img,
.tpl2-scope .image-first .objekt-img-2 {
  left: 0;
}

.tpl2-scope .text-first .objekt-img,
.tpl2-scope .text-first .objekt-img-2 {
  right: 0;
}

.tpl2-scope .objekt-img img,
.tpl2-scope .objekt-img-2 img,
.tpl2-scope .col-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.tpl2-scope .object-text {
  padding: 45px 0;
}

.tpl2-scope .object-text h2 {
  margin-bottom: 20px;
}

.tpl2-scope .object-text .text p,
.tpl2-scope .object-text .text ul li {
  font-size: 18px;
  font-weight: 400;
  line-height: 1.7;
  color: #000;
  margin-bottom: 0;
}

.tpl2-scope .object-text .text {
  margin-bottom: 40px;
  gap: 20px;
}

.tpl2-scope .object-text:not(:has(.btn)) .text {
  margin-bottom: 0;
}

.tpl2-scope .object-text ul {
  margin-bottom: 0;
}

.tpl2-scope .object-text .btn {
  font-size: 18px;
  font-weight: 700;
  line-height: 1.7;
}

.tpl2-scope .col-img {
  aspect-ratio: 4/3;
}/******************
        ANGEBOT 
 *****************/


.tpl2-scope .angebot-section h2 {
  margin-bottom: 35px;
  color: #000;
}

.tpl2-scope .lage-table-angebot tbody tr td,
.tpl2-scope .table-angebot tbody tr td {
  font-size: 18px;
  line-height: 1.3;
  padding-top: 12px;
  padding-bottom: 12px;
  font-weight: 400;
}

.tpl2-scope .lage-table-angebot tbody tr th {
  font-size: 18px;
  line-height: 1.3;
  padding-top: 12px;
  padding-bottom: 12px;
  font-weight: 400;
}

.tpl2-scope .lage-table-angebot tr {
  border: 2px solid rgba(237, 234, 230, 1);
}

.tpl2-scope .table-angebot tbody tr:hover td,
.tpl2-scope .table-angebot tbody tr:hover th,
.tpl2-scope .lage-table-angebot tbody tr:hover td,
.tpl2-scope .lage-table-angebot tbody tr:hover th {
  background-color: var(--tpl2-secondary-color);
  transition: background-color 0.2s ease;
}

.tpl2-scope .angebotSwiper {
  padding-bottom: 35px;
}

.tpl2-scope .swiper-button-next.angebot-next,
.tpl2-scope .swiper-button-prev.angebot-prev {
  position: absolute;
  bottom: 0;
  top: auto;
  z-index: 10;
  width: 40px;
  height: 40px;
  margin-top: 0;
}

.tpl2-scope .swiper-button-prev.angebot-prev {
  left: 0;
}

.tpl2-scope .swiper-button-next.angebot-next {
  right: 0;
}

.tpl2-scope .swiper-button-next.angebot-next::after,
.tpl2-scope .swiper-button-prev.angebot-prev::after {
  content: "";
  display: inline-block;
  width: 40px;
  height: 40px;
  background-size: contain;
  background-repeat: no-repeat;
}

.tpl2-scope .swiper-button-prev.angebot-prev::after {
  background-image: url("/ftemplate2/tpl-assets/images/arrow-left.png");
}

.tpl2-scope .swiper-button-next.angebot-next::after {
  background-image: url("/ftemplate2/tpl-assets/images/arrow-right.png");
}/******************
      ANGEBOT 1
 *****************/


.tpl2-scope .angebot-big-card {
  padding: 40px 30px 50px;
}

.tpl2-scope .angebot-swiper-card {
  padding: 40px 30px 50px;
}

.tpl2-scope .divider-card {
  border-bottom: 1px solid var(--tpl2-on-primary, #fff);
  margin: 10px 0;
}

.tpl2-scope .divider-swiper-card {
  border-bottom: 1px solid var(--tpl2-on-primary, #fff);
  margin: 20px 0;
}

.tpl2-scope .angebot-section .title-part h2 {
  color: #fff;
  margin-bottom: 5px;
}

.tpl2-scope .angebot-big-card .title-part p,
.tpl2-scope .angebot-swiper-card .title-part p {
  color: #fff;
  text-align: start;
}

.tpl2-scope .content-part .card-info {
  gap: 10px;
}

.tpl2-scope .content-part .label-text,
.tpl2-scope .content-part .values-text {/* white-space: nowrap; */
  font-size: 16px;
  line-height: 1.9;
  font-weight: 400;
  
}

.tpl2-scope .angebot-card-btn {
  background-color: transparent;
  border: 1px solid var(--tpl2-on-primary, #fff);
  border-radius: 0;
  color: #fff;
  margin-top: 20px;
  font-size: 18px;
  line-height: 1;
  padding: 10px 25px;
  font-weight: 700;
}/******************
      ANGEBOT 2
 *****************/


.tpl2-scope .card-swiper-nav {
  margin-top: 30px;
  gap: 30px;
}

.tpl2-scope .angebot-card-prev,
.tpl2-scope .angebot-card-next {
  width: 50px;
  height: 50px;
  border: none;
  background-color: transparent;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
.tpl2-scope .angebot-card-prev.swiper-button-disabled,
.tpl2-scope .angebot-card-next.swiper-button-disabled {
  opacity: 0.35;
  cursor: default;
}

.tpl2-scope .angebot-card-prev {
  background-image: url("/ftemplate2/tpl-assets/images/arrow-left.png");
}
.tpl2-scope .angebot-card-next {
  background-image: url("/ftemplate2/tpl-assets/images/arrow-right.png");
}

.tpl2-scope .angebot-swiper-card {
  display: flex;
  flex-direction: column;
}

.tpl2-scope .angebot-swiper-card .content-part {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.tpl2-scope .angebot-swiper-card .content-part .card-info {
  margin-bottom: 20px;
}

.tpl2-scope .angebot-swiper-card .content-part .angebot-card-btn {
  margin-top: auto;
  align-self: flex-start;
}

.tpl2-scope .angebot-swiper-card .content-part .angebot-card-btn {
  line-height: 1.7;
}/******************
      ANGEBOT 3
 *****************/



.tpl2-scope .angebot-header-text p {
  font-size: 18px;
  line-height: 1.5;
  font-weight: 400;
  margin-bottom: 30px;
}

.tpl2-scope .filter-select-wrap {
  position: relative;
}

.tpl2-scope .filter-select {
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid #000;
  border-radius: 0;
  background-color: transparent;
  padding: 8px 50px 8px 16px;
  font-size: 16px;
  font-weight: 700;
  text-transform: uppercase;
  color: #000;
  line-height: 1.9;
  cursor: pointer;
  width: 100%;
}

.tpl2-scope .filter-select:focus {
  outline: none;
}

.tpl2-scope .iso-wrapper,
.tpl2-scope .legend p {
  max-width: 465px;
  margin: 0 auto;
}/* chevron strelica desno */


.tpl2-scope .filter-select-wrap::after {
  content: "";
  position: absolute;
  top: 45%;
  right: 18px;
  width: 9px;
  height: 9px;
  border-right: 2px solid #000;
  border-bottom: 2px solid #000;
  transform: translateY(-50%) rotate(45deg);
  pointer-events: none;
}

.tpl2-scope .angebot-section-iso .legend p,
.tpl2-scope .angebot-section-iso-2 .legend p,
.tpl2-scope .angebot-section-iso-3 .legend p {
  font-size: 21px;
  line-height: 1.5;
  font-weight: 400;
  margin-top: 65px;
  margin-bottom: 0;
}

.tpl2-scope .angebot-section-iso-2 .legend p,
.tpl2-scope .angebot-section-iso-3 .legend p {
  margin-top: 35px;
}

.tpl2-scope .filter-wrapper {
  margin-bottom: 50px;
}

.tpl2-scope .filter-wrapper .range-slider.ui-slider {
  height: 6px;
  background: transparent;
  border: 1px solid #ebebeb;
  border-radius: 2px;
  margin: 14px 10px;
}
.tpl2-scope .filter-wrapper .range-slider .ui-slider-range {
  background: #ebebeb;
  border: none;
}
.tpl2-scope .filter-wrapper .range-slider .ui-slider-handle {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #1a1a1a;
  border: none;
  top: 50%;
  margin-left: -9px;
  transform: translateY(-50%);
  cursor: pointer;
  outline: none;
}
.tpl2-scope .filter-wrapper .range-slider .ui-slider-handle.ui-state-hover,
.tpl2-scope .filter-wrapper .range-slider .ui-slider-handle.ui-state-active,
.tpl2-scope .filter-wrapper .range-slider .ui-slider-handle:focus {
  background: #000;
}

.tpl2-scope .filter-wrapper .filter-label,
.tpl2-scope .filter-wrapper .availability-title {
  font-size: 16px;
  line-height: 1.5;
  font-weight: 500;
}

.tpl2-scope .filter-wrapper .form-check {
  padding-left: 0;
}

.tpl2-scope .filter-wrapper .form-check-input {
  width: 24px;
  height: 24px;
  border: 1px solid #000;
  border-radius: 0;
}

.tpl2-scope .filter-wrapper .form-check-input:focus {
  box-shadow: none;
  border: 1px solid #000;
}

.tpl2-scope .filter-wrapper .form-check-input:checked {
  background-color: #d9d9d9;
  background-image: url(/ftemplate2/tpl-assets/images/checkmark.svg);
  background-size: 16px 12px;
  background-repeat: no-repeat;
  background-position: center;
}

.tpl2-scope .filter-wrapper .form-check-label {
  font-size: 14px;
  line-height: 1.5;
  color: #000;
  font-weight: 400;
}

.tpl2-scope .table-angebot thead tr th {
  background: var(--tpl2-primary-color);
  /* !important to beat the th's own Bootstrap `text-white` class so the header
     row auto-contrasts (black text on a light brand colour). */
  color: var(--tpl2-on-primary, #fff) !important;
  border: none;
  font-size: 16px;
  font-weight: 500;
  padding: 12px 8px;
  white-space: nowrap;
}/* Strelica (samo mobilno) */


.tpl2-scope .table-angebot .table-arrow {
  width: 50px;
}
.tpl2-scope .table-angebot .toggle-row {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.tpl2-scope .table-angebot .toggle-row svg {
  transition: transform 0.2s ease;
}
.tpl2-scope .table-angebot .toggle-row.open svg {
  transform: rotate(180deg);
}/* Aufklappbarer Detail-Bereich (mobilno) */


.tpl2-scope .table-angebot .hidden-row > td {
  padding: 0;
  background: var(--tpl2-secondary-color);
}
.tpl2-scope .table-mobile {
  padding: 6px 15px;
}
.tpl2-scope .table-mobile-item {
  padding: 10px 0;
  font-size: 16px;
}
.tpl2-scope .table-mobile-item:not(:last-child) {
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}
.tpl2-scope .table-mobile-item span {
  font-weight: 600;
}

.tpl2-scope .angebot-section-iso-2 .dropdown-filters {
  margin-bottom: 30px;
}/******************
      GALLERY 
 *****************/


.tpl2-scope .swiper.gallerySwiper {
  height: 450px;
}

.tpl2-scope .swiper-button-next.gallery-next,
.tpl2-scope .swiper-button-prev.gallery-prev {
  width: 50px;
  height: 50px;
  top: 50%;
  transform: translateY(-50%);
  margin-top: 0 !important;
}

.tpl2-scope .swiper-button-next.gallery-next {
  right: 30px;
}

.tpl2-scope .swiper-button-prev.gallery-prev {
  right: unset;
  left: 30px;
}

.tpl2-scope .swiper-button-next.gallery-next::after,
.tpl2-scope .swiper-button-prev.gallery-prev::after {
  content: "";
  display: inline-block;
  width: 50px;
  height: 50px;
  background-size: contain;
  background-repeat: no-repeat;
}

.tpl2-scope .swiper-button-next.gallery-next::after {
  background-image: url("/ftemplate2/tpl-assets/images/arrow-right.png");
}

.tpl2-scope .swiper-button-prev.gallery-prev::after {
  background-image: url("/ftemplate2/tpl-assets/images/arrow-left.png");
}

/* Not .tpl2-scope-prefixed on purpose: lightbox.js appends its whole modal
   directly to <body>, outside any .tpl2-scope wrapper (same reason as the
   .lb-nav rule below) - a .tpl2-scope-prefixed selector here would never
   match. position:fixed + centered transform keeps it centered in the
   viewport instead of lightbox.js's own top:scrollTop+50px/absolute
   positioning; fixed dimensions on the overlay (instead of it sizing itself
   to $(document).width()/height()) stop it from briefly inflating the
   document and causing a flash of page overflow when it opens. */
.lightbox {
  position: fixed !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
}

.lightboxOverlay {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
}

.tpl2-scope .lb-details {
  display: none !important;
}

/* Not .tpl2-scope-prefixed on purpose: lightbox.js appends its whole modal
   directly to <body>, outside any .tpl2-scope wrapper.
   lightbox.css's nav arrows are data-URI SVGs with only a viewBox (no
   width/height), and background-size defaults to "auto" - for an image with
   an aspect ratio but no intrinsic size, that scales it to fill the entire
   (huge) .lb-prev/.lb-next click zone instead of staying icon-sized. */
.lb-nav a.lb-prev,
.lb-nav a.lb-next {
  background-size: 80px !important;
}/******************
     GALLERY ALL
 *****************/



.tpl2-scope .gallery-img {
  height: 200px;
}

.tpl2-scope .gallery-slider-section .gallerySwiper1,
.tpl2-scope .gallery-slider-section .gallerySwiper2 {
  width: 100%;
}/* Glavni slajder */


.tpl2-scope .gallerySwiper1 {
  height: 400px;
  margin-bottom: 20px;
}/* Thumbnaili */


.tpl2-scope .gallerySwiper2 {
  height: 100px;
  padding: 0;
}

.tpl2-scope .gallerySwiper1 .swiper-slide,
.tpl2-scope .gallerySwiper2 .swiper-slide {
  text-align: center;
  font-size: 18px;
  background: #444;
  display: flex;
  justify-content: center;
  align-items: center;
  background-size: cover;
  background-position: center;
}

.tpl2-scope .gallerySwiper2 .swiper-slide {
  width: 25%;
  height: 100%;
  opacity: 0.4;
  cursor: pointer;
}

.tpl2-scope .gallerySwiper2 .swiper-slide-thumb-active {
  opacity: 1;
}

.tpl2-scope .gallerySwiper1 .swiper-slide img,
.tpl2-scope .gallerySwiper2 .swiper-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}/******************
      LAGE 
 *****************/


.tpl2-scope .lage-section .text-part h2,
.tpl2-scope .lage-section-2 .text-part h2,
.tpl2-scope .angebot-header-text h2 {
  margin-bottom: 35px;
}

.tpl2-scope .lage-section .text-part p {
  margin-bottom: 20px;
}

.tpl2-scope .lage-section .text-part ul,
.tpl2-scope .lage-section-2 .text-part ul {
  padding-left: 0;
  list-style-position: inside;
  margin-bottom: 0;
}

.tpl2-scope .lage-section .text-part p,
.tpl2-scope .lage-section .text-part ul li,
.tpl2-scope .lage-section-2 .text-part ul li {
  font-size: 18px;
  line-height: 1.5;
  font-weight: 400;
}

.tpl2-scope .lage {
  margin: 45px auto;
}

.tpl2-scope .lage-row {
  color: #000;
  border-bottom: 1px solid #000;
}

.tpl2-scope .lage-table td {
  padding: 9px 4px;
  border-bottom: 0;
}

.tpl2-scope .lage-row td:nth-child(1) {
  width: 42%;
}

.tpl2-scope .lage-table p {
  margin-bottom: 0;
  line-height: 1.5;
  font-size: 16px;
  white-space: nowrap;
}

.tpl2-scope .table-icon {
  max-width: 35px;
  max-height: 43px;
  width: auto;
  object-fit: contain;
}

.tpl2-scope .map-part {
  height: 550px;
}/******************
      LAGE 1
 *****************/


.tpl2-scope .lage-section-1 h2 {
  margin-bottom: 40px;
}

.tpl2-scope .lage-table p {
  text-align: start;
}

.tpl2-scope .lage-1-img-mobile img {
  min-height: 400px;
}

.tpl2-scope .lage-section-2 .text-part p {
  text-align: start;
  margin-bottom: 30px;
}/******************
      KONTAKT 
 *****************/


.tpl2-scope .kontakt-section h2 {
  margin-bottom: 35px;
}

.tpl2-scope .image-part .profile-img {
  max-width: 217px;
  aspect-ratio: 1;
  width: auto;
  height: auto;
}

.tpl2-scope .image-part .profile-img img {
  max-width: 100%;
  height: 100%;
  width: auto;
}

.tpl2-scope .contact-info {
  margin-left: 0;
}

.tpl2-scope .contact-info h4,
.tpl2-scope .company-location h4 {
  font-size: 17px;
  font-weight: 700;
  line-height: 1;
  margin-bottom: 15px;
  color: #000;
}

.tpl2-scope .contact-info p,
.tpl2-scope .contact-info a,
.tpl2-scope .firma-info p {
  font-size: 18px;
  font-weight: 400;
  line-height: 1.5;
  color: #000;
}

.tpl2-scope .contact-info p {
  margin-bottom: 40px;
}

.tpl2-scope .contact-info a {
  margin-left: 20px;
  margin-bottom: 12px;
}

.tpl2-scope .contact-info .contact-tel img,
.tpl2-scope .contact-info .contact-mail img {
  width: 25px;
  height: 25px;
  object-fit: contain;
}

.tpl2-scope .firma-logo {
  max-width: 250px;
  width: auto;
  height: auto;
  max-height: 100%;
  margin-top: 50px;
}

.tpl2-scope .firma-logo img {
  width: 100%;
  max-height: 100%;
  height: auto;
  object-fit: contain;
}

.tpl2-scope .firma-info {
  margin-top: 30px;
}

.tpl2-scope .footer-section {
  padding: 50px 0;
  border-top: 1px solid #16161633;
}

.tpl2-scope .footer-menu {
  list-style: none;
}

.tpl2-scope .footer-menu li:not(:last-child) {
  display: flex;
  align-items: center;
}

.tpl2-scope .footer-menu li:not(:last-child)::after {
  content: "|";
  color: var(--text-color-dark) #000;
  padding: 0 10px;
}

.tpl2-scope .footer-menu .nav-item .nav-link {
  font-size: 16px;
  line-height: 1.5;
  color: #000;
  font-weight: 400;
}

@container tpl2-stage (min-width: 768px) {/******************
        HERO 1
 *****************/
  
  .tpl2-scope .hero-disturber-1 {
    width: 300px;
    height: 300px;
    top: 5%;
    right: 5px;
    font-size: 32px;
    padding: 20px;
  }

  .tpl2-scope .hero-disturber-3 {
    width: 300px;
    height: 300px;
    font-size: 32px;
    padding: 20px;
  }

  .tpl2-scope .cards-section .icon-text,
.tpl2-scope .cards-section-wh .icon-text {
    max-width: 265px;
  }/******************
      KONTAKT 
 *****************/

  

  .tpl2-scope .contact-info {
    margin-left: 40px;
  }

  .tpl2-scope .angebot-section-iso-2 .price-range-wrap,
.tpl2-scope .angebot-section-iso-2 .size-range-wrap {
    width: 75%;
  }
}

/* Restored from gallery-coverflow.html's own inline <style> block in the
   design source (not in the shared style.css) - missed during extraction.
   Placed here, before the 992px media query, so its desktop override below
   wins by source order (both have equal selector specificity). */
.tpl2-scope .coverflow-section .coverflowSwiper {
  width: 100%;
  max-width: 100%;
  margin: 0 auto;
  padding: 20px 0 60px;
}

.tpl2-scope .coverflow-section .swiper-slide {
  position: relative;
  width: 100%;
  max-width: 100%;
  height: 400px;
  overflow: hidden;
}

.tpl2-scope .coverflow-section .swiper-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.tpl2-scope .coverflow-section .swiper-slide::after {
  content: "";
  position: absolute;
  inset: 0;
  backdrop-filter: blur(3.2079615592956543px);
  -webkit-backdrop-filter: blur(3.2079615592956543px);
  transition: opacity 0.3s ease;
  pointer-events: none;
}

.tpl2-scope .coverflow-section .swiper-slide-active::after {
  opacity: 0;
}

.tpl2-scope .coverflow-section .swiper-button-prev {
  left: 30px;
  background-image: url("/ftemplate2/tpl-assets/images/back.png");
}

.tpl2-scope .coverflow-section .swiper-button-next {
  right: 30px;
  background-image: url("/ftemplate2/tpl-assets/images/forward.png");
}

.tpl2-scope .coverflow-section .swiper-button-next::after,
.tpl2-scope .coverflow-section .swiper-button-prev::after {
  display: none;
}

.tpl2-scope .coverflow-section .swiper-button-next,
.tpl2-scope .coverflow-section .swiper-button-prev {
  position: absolute;
  top: calc(20px + 200px);
  transform: translateY(-50%);
  margin-top: 0;
  width: 48px;
  height: 48px;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  z-index: 10;
}
.tpl2-scope .hero-1-text {
   padding-bottom: 40px;
}
@container tpl2-stage (min-width: 992px) {
  .tpl2-scope .section-big-padding {
    padding: 100px 0;
  }

  .tpl2-scope .btn-primary {
    padding: 9px 20px;
  }/******************
      NAVBAR 
 *****************/

  
  .tpl2-scope .navbar {
    padding: 13px 0;
  }

  .tpl2-scope .navbar-nav {
    gap: 25px;
  }/******************
        HERO 
 *****************/

  
  .tpl2-scope .hero-disturber {
    width: 300px;
    height: 300px;
    top: unset;
    bottom: 150px;
    right: 35px;
    font-size: 32px;
    padding: 20px;
  }/******************
        HERO 1
 *****************/

  .tpl2-scope .hero-section-1 {
    padding: 100px 0;
  }

  .tpl2-scope .hero-1-inner h1,
.tpl2-scope .hero-2-text h1,
.tpl2-scope .hero-3-text h1 {
    font-size: 40px;
    line-height: 1.3;
    font-weight: 700;
    text-transform: uppercase;
    margin-bottom: 45px;
    margin-top: 30px;
  }

  .tpl2-scope .hero-1-inner p,
.tpl2-scope .hero-3-text p,
.tpl2-scope .angebot-big-card .title-part p,
.tpl2-scope .angebot-swiper-card .title-part p {
    font-size: 21px;
  }

  .tpl2-scope .hero-1-text {
    margin-right: 50px;
  }/******************
        HERO 2 / HERO 3
 *****************/

  .tpl2-scope .hero-section-2,
  .tpl2-scope .hero-section-3 {
    height: calc(100svh - 128.5px);
  }
  /******************
        HERO 3
 *****************/



  .tpl2-scope .hero-section-3 .hero-3-text p {
    margin-bottom: 0;
  }/******************
        CARDS 
 *****************/

  
  .tpl2-scope .cards-text {
    margin-bottom: 90px;
  }

  .tpl2-scope .title-section h1 {
    font-size: 40px;
    margin-bottom: 30px;
  }

  .tpl2-scope .text-desc p,
.tpl2-scope .card-box-text p {
    font-size: 21px;
    max-width: 1035px;
  }

  .tpl2-scope .card-box h2,
.tpl2-scope .object-text h2,
.tpl2-scope .angebot-section h2,
.tpl2-scope .lage-section h2,
.tpl2-scope .kontakt-section h2,
.tpl2-scope .lage-section-1 h2,
.tpl2-scope .lage-section-2 h2,
.tpl2-scope .angebot-header-text h2,
.tpl2-scope .cards-section .title h2,
.tpl2-scope .cards-section-wh .title h2 {
    font-size: 32px;
  }
  .tpl2-scope .card-box-text {
    padding: 0 10px;
  }/******************
        CARDS 1
 *****************/

  

  .tpl2-scope .cards-section .icon-card,
.tpl2-scope .cards-section-wh .icon-card {
    margin-bottom: 30px;
  }

  .tpl2-scope .cards-section .icon-subtitle,
.tpl2-scope .cards-section-wh .icon-subtitle {
    font-size: 20px;
  }

  .tpl2-scope .cards-section .icon-text p,
.tpl2-scope .cards-section-wh .icon-text p {
    font-size: 21px;
  }

  .tpl2-scope .cards-section .title h2,
.tpl2-scope .cards-section-wh .title h2 {
    margin-bottom: 50px;
  }/******************
      CARDS IMG
 *****************/

  
  .tpl2-scope .cards-section-pr .vorteile-header {
    margin-bottom: 50px;
  }

  .tpl2-scope .cards-section-pr .vorteile-header h1 {
    font-size: 40px;
  }

  .tpl2-scope .cards-section-pr .vorteile-header p {
    font-size: 21px;
  }

  .tpl2-scope .card-pr-text .icon-subtitle {
    font-size: 20px;
  }

  .tpl2-scope .card-pr-text .icon-text p {
    font-size: 21px;
  }/******************
        OBJEKT 
 *****************/

  
  .tpl2-scope .object-content:not(:last-child) {
    margin-bottom: 0;
  }
  .tpl2-scope .object-content .object-text {
    min-height: 640px;
  }

  .tpl2-scope .object-text h2 {
    margin-bottom: 40px;
  }

  .tpl2-scope .image-first .object-text {
    padding-left: 70px;
  }

  .tpl2-scope .text-first .object-text {
    padding-right: 70px;
  }

  .tpl2-scope .object-content:first-child .objekt-img {
    padding: 110px 0;
  }

  .tpl2-scope .object-content:not(:first-child) .objekt-img {
    padding-bottom: 110px;
  }/******************
        OBJEKT 2
 *****************/

  

 /******************
      GALLERY 
 *****************/

  
  .tpl2-scope .swiper.gallerySwiper {
    height: 740px;
  }

  .tpl2-scope .swiper-button-next.gallery-next::after,
.tpl2-scope .swiper-button-prev.gallery-prev::after {
    width: 86px;
    height: 86px;
  }
  .tpl2-scope .swiper-button-next.gallery-next,
.tpl2-scope .swiper-button-prev.gallery-prev {
    width: 86px;
    height: 86px;
  }

  .tpl2-scope .swiper-button-next.gallery-next {
    right: 60px;
  }

  .tpl2-scope .swiper-button-prev.gallery-prev {
    left: 60px;
  }/******************
      GALLERY 2 
 *****************//* Glavni slajder */

  

  
  .tpl2-scope .gallerySwiper1 {
    height: 740px;
  }/* Thumbnail */

  
  .tpl2-scope .gallerySwiper2 {
    height: 200px;
    padding: 0;
  }/******************
      GALLERY 3
 *****************/

  
  .tpl2-scope .coverflow-section .coverflowSwiper {
    width: 1095px;
    max-width: calc(100% - 140px);
  }

  .tpl2-scope .coverflow-section .swiper-slide {
    width: 755px;
    max-width: 90%;
  }

  .tpl2-scope .coverflow-section .swiper-button-prev {
    left: 12px;
  }

  .tpl2-scope .coverflow-section .swiper-button-next {
    right: 12px;
  }

  .tpl2-scope .coverflow-section .coverflow-pagination {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 2px;
  }

  .tpl2-scope .swiper-pagination-bullet {
    width: 11px;
    height: 11px;
  }

  .tpl2-scope .swiper-pagination-bullet.swiper-pagination-bullet-active {
    width: 15px;
    height: 15px;
  }/******************
      LAGE 
 *****************/

  
  .tpl2-scope .lage-section .text-part p,
.tpl2-scope .lage-section .text-part ul li,
.tpl2-scope .lage-section-2 .text-part ul li {
    font-size: 21px;
  }

  .tpl2-scope .lage-section .text-part h2 {
    margin-bottom: 50px;
  }

  .tpl2-scope .lage {
    max-width: 80%;
    margin: 90px auto;
  }

  .tpl2-scope .lage-table p {
    font-size: 21px;
  }/******************
      LAGE  1
 *****************/

  

  .tpl2-scope .lage-section-1,
  .tpl2-scope .lage-section-2 {
    padding: 100px 0;
    overflow: hidden;
  }

  .tpl2-scope .lage-1-img {
    top: 0;
    bottom: 0;
  }

  .tpl2-scope .lage-1-col {
    padding-right: 26px;
  }

  .tpl2-scope .lage-2-col {
    padding-right: 90px;
  }

  .tpl2-scope .lage-2-img {
    top: 0;
    bottom: 0;
  }/******************
      ANGEBOT  1
 *****************/

  

  .tpl2-scope .content-part .card-info {
    gap: 20px;
  }

  .tpl2-scope .content-part .label-text,
.tpl2-scope .content-part .values-text {
    font-size: 18px;
  }/******************
      ANGEBOT 2
 *****************/

  
  .tpl2-scope .angebot-swiper-card .title-part h2 {
    font-size: 24px;
  }

  .tpl2-scope .angebot-swiper-card .title-part p {
    font-size: 18px;
  }

  .tpl2-scope .angebot-swiper-card .content-part .label-text,
.tpl2-scope .angebot-swiper-card .content-part .values-text {
    font-size: 16px;
  }

  .tpl2-scope .angebot-card-prev,
.tpl2-scope .angebot-card-next {
    width: 85px;
    height: 85px;
  }/******************
      ANGEBOT 3
 *****************/

  

  .tpl2-scope .angebot-header-text p {
    font-size: 21px;
    max-width: 70%;
  }/******************
      KONTAKT 
 *****************/

  

  .tpl2-scope .firma-info {
    margin-top: 50px;
  }

  .tpl2-scope .contact-info p,
.tpl2-scope .contact-info a,
.tpl2-scope .firma-info p {
    font-size: 21px;
  }

  .tpl2-scope .contact-info h4,
.tpl2-scope .company-location h4 {
    font-size: 20px;
  }
}

@container tpl2-stage (min-width: 1200px) {/******************
      NAVBAR 
 *****************/
  
  .tpl2-scope .navbar-brand {
    max-width: 285px;
  }

  .tpl2-scope .navbar-nav {
    gap: 55px;
  }

  .tpl2-scope .navbar .nav-item:last-child .nav-link {
    padding: 12px 26px;
  }/******************
        HERO 1 
 *****************/

  
  .tpl2-scope .hero-1-text {
    margin-right: 95px;
  }/******************
        HERO 2
 *****************/

  

  .tpl2-scope .hero-disturber-2 {
    bottom: 9%;
  }

  .tpl2-scope .hero-section-2,
  .tpl2-scope .hero-section-3 {
    height: calc(100svh - 132.5px);
  }/******************
        OBJEKT
 *****************/

  
  .tpl2-scope .image-first .object-text {
    padding-left: 145px;
  }/******************
        ANGEBOT 
 *****************/

  
  .tpl2-scope .table-angebot thead tr th {
    border-top: none !important;
    border-bottom: none !important;
    font-size: 18px;
    font-weight: 500;
    line-height: 1.3;
    padding-top: 12px;
    padding-bottom: 12px;
  }/******************
      LAGE 
 *****************/

  
  .tpl2-scope .map-part {
    height: 750px;
  }/******************
      KONTAKT 
 *****************/

  
  .tpl2-scope .firma-logo {
    margin-bottom: 0;
  }
}

@container tpl2-stage (min-width: 1400px) {
  .tpl2-scope .container {
    max-width: 1344px;
  }/******************
      ANGEBOT 2
 *****************/

  
  .tpl2-scope .angebot-swiper-card .title-part h2 {
    font-size: 32px;
  }

  .tpl2-scope .angebot-swiper-card .title-part p {
    font-size: 21px;
  }

  .tpl2-scope .angebot-section-iso-2 .filter-part {
    padding-right: 45px;
  }
}

/******************************************************************
 * Leak guard - the configurator page this gets embedded into has
 * its own global, unscoped rules (body, h2, p, .btn) that would
 * otherwise bleed into these real sections since there's no iframe.
 * These resets roll those specific properties back to what they'd
 * be on an unstyled/standalone page, so the section always renders
 * as it was designed regardless of what host page it's mounted in.
 ******************************************************************/
.tpl2-scope {
  color: initial;
  text-align: initial;
  /* Swiper's pagination bullets etc. default to its own stock blue
     (:root{--swiper-theme-color:#007aff}) - the original design never
     overrode it, so tie it to the site's own theme color instead. */
  --swiper-theme-color: var(--tpl2-primary-color);
}

.tpl2-scope h1,
.tpl2-scope h2,
.tpl2-scope h3,
.tpl2-scope h4,
.tpl2-scope h5,
.tpl2-scope h6 {
  font-size: revert;
  font-weight: revert;
}

.tpl2-scope p {
  font-size: revert;
  color: inherit;
}

.tpl2-scope .btn {
  width: auto;
  max-width: none;
  font-size: revert;
  line-height: normal;
}

/******************************************************************
 * Every breakpoint-gated rule in this file (768/992/1200/1400px, above)
 * is a @container query keyed to .tpl2-stage's own inline-size, not a
 * plain @media query on the real browser viewport. In "scaled" mode the
 * stage is pinned to a fixed reference width regardless of the
 * surrounding page - 1440px for the desktop preview, 390px when the
 * configurator's desktop/mobile toggle (see live-sections.js
 * MOBILE_STAGE_WIDTH) is switched to mobile - so this makes the
 * configurator's block previews render the matching design, just
 * visually shrunk via transform:scale(). In "final" mode the stage has
 * no fixed width, so it naturally tracks the real page/viewport width
 * and stays responsive as normal for real visitors.
 *
 * Bootstrap's own responsive utility/grid classes (d-lg-*, d-xl-*,
 * col-*-N, offset-*-N, flex-*-row, ...) are a separate case that needs
 * the same fix but can't just be "converted" (they're plain classes
 * baked into bootstrap.min.css, not authored in this file) - every
 * combination actually used across the section fragments is
 * re-implemented below as a container query that overrides Bootstrap's
 * real-viewport version. Without this, e.g. hero-1's text column
 * (.col-lg-6) never gets its 50% width on an actual narrow window, so
 * it stretches to 100% and visually overlaps the absolutely-positioned
 * desktop image next to it, even though the stage itself is 1440px.
 *
 * Since the configurator's own browser window is normally desktop-sized
 * regardless of which toggle state is active, Bootstrap's real @media
 * versions of these same classes are ALSO always live and would win by
 * themselves whenever the mobile toggle sets the stage narrower than
 * their breakpoint. The block right below (no @container condition -
 * applies unconditionally) resets each one back to its mobile/"off"
 * value at higher specificity than Bootstrap's bare class, so the
 * @container blocks further down are the only thing that can switch it
 * back to the desktop value, and only once the stage container is
 * actually wide enough.
 *
 * Scoped to what actually changes layout (grid widths/offsets, display
 * toggles, row-vs-column flex-direction, the header's hamburger/offcanvas
 * switch) - purely cosmetic breakpoint tweaks elsewhere (margins, gaps,
 * nowrap) are left alone since getting those "wrong" in a small preview
 * card isn't visibly broken the way a collapsed column or an overlap is.
 ******************************************************************/
.tpl2-stage {
  container-type: inline-size;
  container-name: tpl2-stage;
}

/* Mobile/"off" defaults - see comment above. Must stay before the
   @container blocks below so equal-specificity ties resolve in the
   @container rule's favor once the stage is wide enough.
   Matches Bootstrap's own mobile-first fallback (.row > * { flex-shrink:0;
   width:100%; max-width:100% }), NOT the browser's flex/width initial
   values - "width: auto" here would undo that fallback and make the
   column shrink to its content instead of filling the row. */
.tpl2-scope .col-sm-6,
.tpl2-scope .col-md-4,
.tpl2-scope .col-md-6,
.tpl2-scope .col-lg-3,
.tpl2-scope .col-lg-4,
.tpl2-scope .col-lg-6,
.tpl2-scope .col-xl-3 {
  flex: 0 0 auto !important;
  width: 100% !important;
  max-width: 100% !important;
}
/* col-xxl-4/col-xxl-3 also show up paired with a bare .col-6 (angebot-1's
   label/value columns) - there the "off" fallback isn't row>*'s 100%, it's
   .col-6's own unconditional 50% (which real Bootstrap would leave alone
   below 1400px). The :not(.col-6) selector keeps that pairing's specificity
   equal to the plain-class one below so the @container(1400px) block's
   matching pair still wins the tie once the stage is wide enough. */
.tpl2-scope .col-6.col-xxl-4,
.tpl2-scope .col-6.col-xxl-3 {
  flex: 0 0 auto !important;
  width: 50% !important;
}
.tpl2-scope .col-xxl-4:not(.col-6),
.tpl2-scope .col-xxl-8 {
  flex: 0 0 auto !important;
  width: 100% !important;
  max-width: 100% !important;
}
.tpl2-scope .offset-lg-6 { margin-left: 0 !important; }
.tpl2-scope .flex-md-row { flex-direction: column !important; }
.tpl2-scope .flex-lg-row { flex-direction: column !important; }
.tpl2-scope .d-lg-none { display: block !important; }
.tpl2-scope .d-lg-block { display: none !important; }
.tpl2-scope .d-xl-table-cell { display: none !important; }
.tpl2-scope .d-xl-table { display: none !important; }
/* div case first (angebot-tabelle.html's mobile-only wrapper div around its
   5 stand-in tables) - tag-scoped to <div> specifically, NOT a bare
   ".d-xl-none" catch-all: the angebot-table-* styles also put d-xl-none on
   <tr class="hidden-row"> detail rows that must stay JS-toggled closed
   (inline style="display:none", opened by the "toggle-row" arrow click) -
   an untagged rule would force those open unconditionally too. Without
   this div-scoped rule, a bare d-xl-none div had no "off" override at all,
   so Bootstrap's own real @media(min-width:1200px) - always matching in
   the configurator's always-desktop-sized window - kept hiding it even
   while the stage simulated mobile, leaving both the (correctly hidden)
   desktop table and the (wrongly still-hidden) mobile one invisible at
   once. */
.tpl2-scope div.d-xl-none { display: block !important; }
.tpl2-scope th.d-xl-none,
.tpl2-scope td.d-xl-none { display: table-cell !important; }
.tpl2-scope table.d-xl-none { display: table !important; }

/* Spacing/order utilities - same "off" reasoning as the grid resets above,
   for the breakpoint-gated utility classes actually used in the fragments.
   Each is reset back to whatever its co-existing unconditional/lower-tier
   class already declares (e.g. mb-md-0 sits next to mb-4, so "off" restores
   mb-4's 1.5rem instead of Bootstrap's real margin-bottom:0 leaking in from
   the configurator's always-desktop-sized window). */
.tpl2-scope .mb-lg-0 { margin-bottom: 1rem !important; }     /* pairs with mb-3 (vorteile-*) */
.tpl2-scope .mb-md-0 { margin-bottom: 1.5rem !important; }    /* pairs with mb-4 (footer profile-img) */
.tpl2-scope .mt-lg-0 { margin-top: 50px !important; }         /* firma-logo's own margin-top */
.tpl2-scope .my-xxl-0 {
  margin-top: 3rem !important;
  margin-bottom: 3rem !important;
}                                                              /* pairs with my-5 (angebot-table dropdown-filters) */
.tpl2-scope .order-xxl-1 { order: 3 !important; }             /* pairs with order-3 (angebot-table dropdown-filters) */
.tpl2-scope .order-xxl-2 { order: 1 !important; }             /* pairs with order-1 (angebot-table iso-wrapper) */
.tpl2-scope .justify-content-md-end { justify-content: center !important; } /* pairs with justify-content-center (footer menu) */
.tpl2-scope .gy-lg-0 { --bs-gutter-y: 1.5rem !important; }    /* pairs with gy-4 (angebot-1 row) */
.tpl2-scope .gy-xl-4 { --bs-gutter-y: 3rem !important; }      /* pairs with gy-5 (vorteile-boxed row) */
.tpl2-scope .text-md-nowrap { white-space: normal !important; }

/* Header hamburger/offcanvas nav - Bootstrap's navbar-expand-lg forces the
   links inline and hides the toggler via its own real @media(min-width:992),
   which (same reasoning as above) stays live regardless of the stage. Reset
   back to the closed/hamburger presentation by default. */
.tpl2-scope .navbar-expand-lg .navbar-toggler { display: block !important; }
/* .navbar-nav itself is column by default (real Bootstrap, unconditional)
   and only becomes row via .navbar-expand-lg .navbar-nav - also gated
   behind Bootstrap's own real @media(min-width:992px), same as everything
   else here. Missing this one specifically still left the nav links
   stacked vertically whenever the real window is narrow (e.g. viewing the
   configurator itself on a phone) even with the "Desktop" stage selected. */
.tpl2-scope .navbar-expand-lg .navbar-nav { flex-direction: column !important; }
.tpl2-scope .navbar-expand-lg .offcanvas {
  position: fixed !important;
  z-index: 1045 !important;
  visibility: hidden !important;
  background-color: var(--tpl2-primary-color) !important;
  border: 0 !important;
  transform: translateX(100%) !important;
  transition: transform .3s ease-in-out !important;
  /* The closed offcanvas's own box is 0-height here (its h-100 resolves
     against the scaled preview's transformed wrapper, which is itself
     0-height) but its nav-link content isn't - without a clip, that content
     still overflows past the 0-height box and gets counted in the
     scaled-preview scaling code's wrapper.scrollHeight measurement
     (live-sections.js fitScaled()), padding out the header preview card
     with blank space below the visible navbar. */
  overflow: hidden !important;
}
/* transform:none ONLY while genuinely open. During CLOSE, Bootstrap keeps
   `.show` on the element AND adds `.hiding` (it removes `.show` only after the
   slide-out finishes), which is why its own CSS uses `.show:not(.hiding)`. We
   must match that - otherwise `.show` here would pin transform:none through the
   whole close, so the panel stays put and then jumps out with no slide. */
.tpl2-scope .navbar-expand-lg .offcanvas.show:not(.hiding),
.tpl2-scope .navbar-expand-lg .offcanvas.showing {
  transform: none !important;
}
/* Visible during open, while shown, AND while sliding back out (.hiding) - so
   the colour doesn't vanish before the slide finishes. */
.tpl2-scope .navbar-expand-lg .offcanvas.show,
.tpl2-scope .navbar-expand-lg .offcanvas.showing,
.tpl2-scope .navbar-expand-lg .offcanvas.hiding {
  visibility: visible !important;
}
.tpl2-scope .navbar-expand-lg .offcanvas .offcanvas-header { display: flex !important; }
.tpl2-scope .navbar-expand-lg .offcanvas .offcanvas-body {
  display: block !important;
  flex-grow: 1 !important;
  padding: 1rem !important;
  overflow-y: auto !important;
}
.tpl2-scope .justify-content-lg-end { justify-content: center !important; }
.tpl2-scope .align-items-lg-end { align-items: flex-start !important; }
.tpl2-scope .align-items-md-end { align-items: flex-start !important; }

@container tpl2-stage (min-width: 576px) {
  .tpl2-scope .col-sm-6 { flex: 0 0 auto !important; width: 50% !important; }
}

@container tpl2-stage (min-width: 768px) {
  .tpl2-scope .col-md-4 { flex: 0 0 auto !important; width: 33.33333333% !important; }
  .tpl2-scope .col-md-6 { flex: 0 0 auto !important; width: 50% !important; }
  .tpl2-scope .flex-md-row { flex-direction: row !important; }
  .tpl2-scope .align-items-md-end { align-items: flex-end !important; }
  .tpl2-scope .mb-md-0 { margin-bottom: 0 !important; }
  .tpl2-scope .justify-content-md-end { justify-content: flex-end !important; }
  .tpl2-scope .text-md-nowrap { white-space: nowrap !important; }
}

@container tpl2-stage (min-width: 992px) {
  .tpl2-scope .d-lg-none { display: none !important; }
  .tpl2-scope .d-lg-block { display: block !important; }
  .tpl2-scope .col-lg-3 { flex: 0 0 auto !important; width: 25% !important; }
  .tpl2-scope .col-lg-4 { flex: 0 0 auto !important; width: 33.33333333% !important; }
  .tpl2-scope .col-lg-6 { flex: 0 0 auto !important; width: 50% !important; }
  .tpl2-scope .offset-lg-6 { margin-left: 50% !important; }
  .tpl2-scope .flex-lg-row { flex-direction: row !important; }
  .tpl2-scope .justify-content-lg-end { justify-content: flex-end !important; }
  .tpl2-scope .align-items-lg-end { align-items: flex-end !important; }
  .tpl2-scope .navbar-expand-lg .navbar-toggler { display: none !important; }
  .tpl2-scope .navbar-expand-lg .navbar-nav { flex-direction: row !important; }
  .tpl2-scope .navbar-expand-lg .offcanvas {
    position: static !important;
    z-index: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none !important;
    overflow: visible !important;
  }
  .tpl2-scope .navbar-expand-lg .offcanvas .offcanvas-header { display: none !important; }
  .tpl2-scope .navbar-expand-lg .offcanvas .offcanvas-body {
    display: flex !important;
    flex-grow: 0 !important;
    padding: 0 !important;
    overflow-y: visible !important;
  }
  .tpl2-scope .mb-lg-0 { margin-bottom: 0 !important; }
  .tpl2-scope .mt-lg-0 { margin-top: 0 !important; }
  .tpl2-scope .gy-lg-0 { --bs-gutter-y: 0 !important; }
}

@container tpl2-stage (min-width: 1200px) {
  .tpl2-scope .d-xl-none { display: none !important; }
  /* th.d-xl-none/td.d-xl-none/table.d-xl-none below match the tag-scoped
     mobile-default resets above pixel-for-pixel in specificity (2 classes
     + 1 element each) - without the tag qualifier here too, the bare rule
     above would lose that tie and this desktop switch would never fire. */
  .tpl2-scope th.d-xl-none,
  .tpl2-scope td.d-xl-none,
  .tpl2-scope table.d-xl-none,
  .tpl2-scope div.d-xl-none { display: none !important; }
  .tpl2-scope .d-xl-table { display: table !important; }
  .tpl2-scope .d-xl-table-cell { display: table-cell !important; }
  .tpl2-scope .col-xl-3 { flex: 0 0 auto !important; width: 25% !important; }
  .tpl2-scope .gy-xl-4 { --bs-gutter-y: 1.5rem !important; }
}

@container tpl2-stage (min-width: 1400px) {
  /* col-xxl-4/col-xxl-3 also show up paired with a bare .col-6 (angebot-1's
     label/value columns) - the :not(.col-6) split matches the equal-
     specificity pairing in the mobile/off defaults above. */
  .tpl2-scope .col-6.col-xxl-4,
  .tpl2-scope .col-xxl-4:not(.col-6) {
    flex: 0 0 auto !important;
    width: 33.33333333% !important;
  }
  .tpl2-scope .col-6.col-xxl-3 {
    flex: 0 0 auto !important;
    width: 25% !important;
  }
  .tpl2-scope .col-xxl-8 {
    flex: 0 0 auto !important;
    width: 66.66666667% !important;
  }
  .tpl2-scope .my-xxl-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .tpl2-scope .order-xxl-1 { order: 1 !important; }
  .tpl2-scope .order-xxl-2 { order: 2 !important; }
}
