/*
 * THE Q · Q276
 * Finale Korrekturschicht auf dem unveränderten Q275-Rechenmodell.
 */

:root {
  --q276-green: #08a84f;
  --q276-green-dark: #087d3e;
  --q276-red: #ed2024;
  --q276-red-dark: #ba1116;
  --q276-navy: #123a69;
}

#videos .q276-project-still {
  display: block;
  width: 100%;
  height: 220px;
  object-fit: cover;
}

/* --------------------------------------------------------------------------
   Zustände: aktiv = grünes Häkchen, inaktiv = rotes Kreuz
   -------------------------------------------------------------------------- */

.q275-role-state,
.q270-option-state,
.q276-button-state {
  display: grid !important;
  place-items: center !important;
  box-sizing: border-box !important;
  width: 27px !important;
  height: 27px !important;
  min-width: 27px !important;
  border: 3px solid var(--q276-red) !important;
  border-radius: 6px !important;
  background: #fff !important;
  color: var(--q276-red) !important;
  font: 1000 1.17rem/1 Nunito, Arial, sans-serif !important;
  text-shadow: none !important;
  box-shadow:
    0 0 0 2px rgba(255, 255, 255, .34),
    0 2px 5px rgba(0, 0, 0, .25) !important;
}

.q272-role-choice.is-active .q275-role-state,
.q270-option.is-on .q270-option-state,
.q276-state-button.is-q276-active .q276-button-state {
  border-color: var(--q276-green) !important;
  color: var(--q276-green) !important;
}

.q272-role-choice:not(.is-active) .q275-role-state,
.q270-option.is-off .q270-option-state,
.q276-state-button.is-q276-inactive .q276-button-state {
  border-color: var(--q276-red) !important;
  color: var(--q276-red) !important;
}

.q272-role-choice {
  grid-template-columns: minmax(0, 1fr) 27px !important;
  gap: 7px !important;
}

.q270-option.is-off {
  background: linear-gradient(180deg, #f7f7f7, #e8eaed) !important;
  border-color: #c7cdd3 !important;
}

.q270-option.is-off img {
  filter: grayscale(1) contrast(.82) opacity(.72) !important;
}

.q270-option.is-off .q270-option-copy,
.q270-option.is-off .q270-option-copy * {
  color: #858b92 !important;
}

#apartmentList .v253-option input[type="checkbox"] {
  -webkit-appearance: none !important;
  appearance: none !important;
  position: relative !important;
  display: grid !important;
  place-items: center !important;
  width: 29px !important;
  height: 29px !important;
  min-width: 29px !important;
  margin: 0 !important;
  border: 3px solid var(--q276-red) !important;
  border-radius: 6px !important;
  background: #fff !important;
  box-shadow: 0 2px 5px rgba(0, 0, 0, .18) !important;
  cursor: pointer !important;
}

#apartmentList .v253-option input[type="checkbox"]::after {
  content: "×";
  color: var(--q276-red);
  font: 1000 1.25rem/1 Nunito, Arial, sans-serif;
}

#apartmentList .v253-option input[type="checkbox"]:checked {
  border-color: var(--q276-green) !important;
}

#apartmentList .v253-option input[type="checkbox"]:checked::after {
  content: "✓";
  color: var(--q276-green);
}

#apartmentList .v253-option.inactive .v253-option-copy,
#apartmentList .v253-option.inactive .v253-option-copy * {
  color: #858b92 !important;
}

#apartmentList .v253-option.inactive img {
  filter: grayscale(1) contrast(.85) opacity(.72) !important;
}

#apartmentList .q276-state-button {
  display: inline-grid !important;
  grid-template-columns: minmax(0, 1fr) 27px !important;
  align-items: center !important;
  gap: 8px !important;
  min-height: 42px !important;
  padding: 5px 7px 5px 13px !important;
  white-space: nowrap !important;
}

#apartmentList .q276-state-button.is-q276-inactive {
  background: linear-gradient(180deg, #ffc642 0%, #f29400 50%, #dc7600 100%) !important;
  border-color: #ffe0a0 !important;
  color: #fff !important;
}

#apartmentList .q276-state-button.is-q276-active {
  background: linear-gradient(180deg, #4eb5f2 0%, #2485cc 48%, #0d5b9d 100%) !important;
  border-color: #bce9ff !important;
  color: #fff !important;
}

#apartmentList .q276-state-button:disabled {
  background: linear-gradient(180deg, #eceff2, #d8dde2) !important;
  border-color: #c4cbd2 !important;
  color: #737b83 !important;
  filter: none !important;
  opacity: .78 !important;
}

/* --------------------------------------------------------------------------
   3D-/2D-Bereich: nur die benötigten Abschlüsse stehen lassen
   -------------------------------------------------------------------------- */

#v169SimSection .v169-section-body > .v169-blue-strip:first-child {
  display: none !important;
}

#v169SimSection .v169-section-body > .v169-blue-strip.light {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
}

#v187FilterPanel .v187-filter-title {
  display: none !important;
}

#v187FilterPanel .v187-filter-grid {
  padding-top: 12px !important;
}

#v169SimSection .v169-filter-area {
  margin-top: 0 !important;
}

.q276-filter-reset {
  flex: 0 0 auto !important;
  min-height: 30px !important;
  padding: 4px 12px !important;
  border: 2px solid rgba(255, 255, 255, .92) !important;
  border-radius: 999px !important;
  background: linear-gradient(180deg, #ffbf39, #ed8b00) !important;
  color: #fff !important;
  font: 1000 .75rem/1 Nunito, Arial, sans-serif !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .35) !important;
  box-shadow:
    inset 0 2px 0 rgba(255, 255, 255, .65),
    0 3px 7px rgba(0, 0, 0, .25) !important;
  cursor: pointer !important;
}

#theq3DStage.floor3d-v91 {
  margin-top: 0 !important;
}

/* --------------------------------------------------------------------------
   Finanzierung: letzte Zahlenspalte bleibt vollständig in der Karte
   -------------------------------------------------------------------------- */

#apartmentList .v254-finance-panel .v254-panel-body,
#apartmentList .v254-loan-list,
#apartmentList .v254-loan-row {
  min-width: 0 !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

@media (min-width: 1181px) {
  #apartmentList .v254-loan-row {
    grid-template-columns:
      minmax(110px, 1.24fr)
      minmax(82px, 1fr)
      minmax(61px, .72fr)
      minmax(61px, .72fr)
      minmax(68px, .80fr)
      minmax(91px, 1.08fr) !important;
    gap: 6px !important;
    padding: 9px 10px !important;
  }

  #apartmentList .v254-loan-row > span:last-child {
    padding-right: 3px !important;
  }

  #apartmentList .v254-loan-row small {
    font-size: clamp(.58rem, .63vw, .66rem) !important;
  }

  #apartmentList .v254-loan-row b {
    font-size: clamp(.72rem, .72vw, .80rem) !important;
    letter-spacing: -.015em !important;
  }
}

/* --------------------------------------------------------------------------
   Steuerwirkung: Farblogik und Nunito-Gewichte aus der Freigabeskizze
   -------------------------------------------------------------------------- */

#apartmentList .v242-tax-effect-row {
  grid-template-columns: minmax(0, 1fr) minmax(116px, 22%) !important;
  font-family: Nunito, Arial, sans-serif !important;
}

#apartmentList .v242-tax-effect-row > span,
#apartmentList .v242-tax-effect-row > b {
  color: var(--q276-navy) !important;
}

#apartmentList .v242-tax-effect-row > b {
  justify-self: stretch !important;
  text-align: right !important;
  font-weight: 950 !important;
}

#apartmentList .v242-tax-effect-row:has(> span > strong) > span > strong,
#apartmentList .v242-tax-effect-row:has(> span > strong) > b {
  color: var(--q276-red) !important;
  font-weight: 1000 !important;
}

#apartmentList .v242-tax-effect-row .v244-tax-types-inline {
  color: var(--q276-navy) !important;
  font-weight: 400 !important;
}

#apartmentList .v242-tax-effect-group:nth-of-type(4) .v242-tax-effect-row > span,
#apartmentList .v242-tax-effect-group:nth-of-type(4) .v242-tax-effect-row > b,
#apartmentList .v242-tax-effect-group.single .v242-tax-effect-row > span,
#apartmentList .v242-tax-effect-group.single .v242-tax-effect-row > b {
  color: var(--q276-navy) !important;
  font-weight: 1000 !important;
}

#apartmentList .v242-tax-effect-benefit,
#apartmentList .v242-tax-effect-benefit span,
#apartmentList .v242-tax-effect-benefit small,
#apartmentList .v242-tax-effect-benefit b {
  color: var(--q276-green-dark) !important;
  font-family: Nunito, Arial, sans-serif !important;
  font-weight: 1000 !important;
}

#apartmentList .v242-tax-effect-benefit > div {
  grid-template-columns: minmax(0, 1fr) 48px minmax(116px, 22%) !important;
}

/* --------------------------------------------------------------------------
   Einnahmen/Ausgaben: Cashflow exakt unter und so breit wie „Ausgaben“
   -------------------------------------------------------------------------- */

#apartmentList .v254-cash-wrap {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 12px !important;
  justify-content: stretch !important;
  margin-top: 11px !important;
}

#apartmentList .v254-liquidity-panel .v254-cash-wrap .ap-cash-row {
  grid-column: 2 !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  box-sizing: border-box !important;
}

/* --------------------------------------------------------------------------
   Orange/Blau schließen ihre Karten wirklich an der Oberkante ab
   -------------------------------------------------------------------------- */

#berechnung {
  padding-top: 0 !important;
}

#berechnung > .section-title {
  width: 100% !important;
  margin: 0 !important;
  box-sizing: border-box !important;
  border-radius: 18px 18px 0 0 !important;
}

#berechnung > .content-card {
  margin-top: 0 !important;
  border-radius: 0 0 18px 18px !important;
}

#privatePanel .v126-buyer-card,
#gbrMembers .gbr-member {
  padding: 0 12px 12px !important;
  overflow: hidden !important;
}

#privatePanel .v126-buyer-title,
#gbrMembers .gbr-member > h4 {
  width: calc(100% + 24px) !important;
  max-width: none !important;
  margin: 0 -12px 12px !important;
  box-sizing: border-box !important;
  border-radius: 16px 16px 0 0 !important;
  border-top: 0 !important;
  border-left: 0 !important;
  border-right: 0 !important;
  box-shadow: none !important;
}

/* --------------------------------------------------------------------------
   Brutto-/Netto-Projektion: interne Zahlen rund 20 % größer
   -------------------------------------------------------------------------- */

#berechnung .v228-datev-sheet .v228-o.v228-small {
  font-size: clamp(7px, .59vw, 10px) !important;
  line-height: 1.04 !important;
  letter-spacing: -.045em !important;
}

/* --------------------------------------------------------------------------
   Ansprechpartner: gleiche Spalten, gleiche Signaturflächen, bündiger Abschluss
   -------------------------------------------------------------------------- */

#unterlagen .about-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  align-items: stretch !important;
}

#unterlagen .about-card.team-card.q274-signed-profile {
  display: grid !important;
  grid-template-rows: 320px minmax(0, 1fr) !important;
  height: 100% !important;
}

#unterlagen .about-card.team-card.q274-signed-profile .pad {
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
  min-height: 0 !important;
  box-sizing: border-box !important;
}

#unterlagen .q274-signature-panel,
#unterlagen .q274-signature-panel.is-ludmilla,
#unterlagen .q274-signature-panel.is-stefan {
  grid-template-columns: minmax(118px, 48%) minmax(0, 1fr) !important;
  width: 100% !important;
  height: 142px !important;
  min-height: 142px !important;
  margin-top: auto !important;
  padding: 12px 13px !important;
  gap: 10px !important;
  box-sizing: border-box !important;
}

#unterlagen .q274-signature-panel.is-ludmilla > img {
  justify-self: center !important;
  width: auto !important;
  height: 104px !important;
  max-width: 92px !important;
}

#unterlagen .q274-signature-panel.is-stefan > img {
  justify-self: center !important;
  width: 100% !important;
  height: 82px !important;
  max-width: 174px !important;
}

#unterlagen .q274-signature-copy strong {
  font-size: .90rem !important;
}

#unterlagen .q274-signature-copy span {
  font-size: .72rem !important;
}

@media (max-width: 1180px) {
  #unterlagen .about-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 760px) {
  #v169SimSection .v169-section-body > .v169-blue-strip.light {
    align-items: flex-start !important;
    flex-direction: column !important;
  }

  .q276-filter-reset {
    align-self: stretch !important;
  }

  #apartmentList .v254-cash-wrap {
    grid-template-columns: 1fr !important;
  }

  #apartmentList .v254-liquidity-panel .v254-cash-wrap .ap-cash-row {
    grid-column: 1 !important;
  }

  #apartmentList .v242-tax-effect-row {
    grid-template-columns: minmax(0, 1fr) max-content !important;
    gap: 8px !important;
  }

  #apartmentList .v242-tax-effect-benefit > div {
    grid-template-columns: minmax(0, 1fr) 42px max-content !important;
  }

  #unterlagen .about-grid {
    grid-template-columns: 1fr !important;
  }

  #unterlagen .about-card.team-card.q274-signed-profile {
    grid-template-rows: 320px auto !important;
  }

  #unterlagen .q274-signature-panel,
  #unterlagen .q274-signature-panel.is-ludmilla,
  #unterlagen .q274-signature-panel.is-stefan {
    grid-template-columns: minmax(120px, 43%) minmax(0, 1fr) !important;
  }
}

@media (max-width: 430px) {
  #apartmentList .q276-state-button {
    grid-template-columns: minmax(0, 1fr) 25px !important;
    min-width: 0 !important;
    width: 100% !important;
    font-size: .71rem !important;
  }

  #apartmentList .v253-option input[type="checkbox"],
  .q275-role-state,
  .q270-option-state,
  .q276-button-state {
    width: 25px !important;
    height: 25px !important;
    min-width: 25px !important;
  }
}
