/*
 * Favoriten: Herz-Knöpfe, Zähler im Header, Favoriten-Seite, Hinweis.
 * Farben und Größen aus den Semmel-Variablen (--semmel-red, --button-size).
 */

/* --- Herz-Symbol (wie die übrigen *-icon: Maske auf weißem ::after) ------ */
.herz-icon:after,
.fav-zaehler:after {
  mask-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><path fill="none" stroke="white" stroke-width="8" stroke-linejoin="round" d="M60 90C30 70 25 55 30 44c5-11 21-13 30 1 9-14 25-12 30-1 5 11 0 26-30 46z"/></svg>');
  mask-position: center;
  mask-size: 100% 100%;
}

.ist-favorit .herz-icon:after,
.fav-zaehler.hat-favoriten:after,
.fav-liste__leer .herz-icon:after {
  mask-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><path fill="white" stroke="white" stroke-width="8" stroke-linejoin="round" d="M60 90C30 70 25 55 30 44c5-11 21-13 30 1 9-14 25-12 30-1 5 11 0 26-30 46z"/></svg>');
}

/* --- Herzschlag beim Überfahren (statt der Drehung der übrigen Symbole) --- */
.fav-knopf:hover .buttonCircle.herz-icon:after,
.fav-knopf:focus-visible .buttonCircle.herz-icon:after,
.header-alert.fav-zaehler:hover:after,
.header-alert.fav-zaehler:focus-visible:after {
  transform: none;
  rotate: none;
  animation: fav_herzschlag 1.1s ease-in-out infinite;
}

.fav-knopf:hover .buttonCircle {
  box-shadow: 0 0 0 4px rgba(213, 17, 48, .15);
}

@keyframes fav_herzschlag {
  0%, 100% { scale: 1; }
  15% { scale: 1.25; }
  30% { scale: 1; }
  45% { scale: 1.15; }
  60% { scale: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .fav-knopf:hover .herz-icon:after,
  .header-alert.fav-zaehler:hover:after {
    animation: none;
  }
}

/* --- Knopf zurücksetzen ---------------------------------------------------- */
.fav-knopf {
  appearance: none;
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
  font: inherit;
  color: var(--semmel-red);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  text-align: left;
}

/* globales button:hover (grauer Hintergrund) aufheben */
.fav-knopf:hover,
.fav-liste__alle-entfernen:hover {
  background: none;
  color: var(--semmel-red);
}

.fav-knopf--hell:hover {
  color: #fff;
}

.fav-knopf:focus-visible,
.fav-zaehler:focus-visible {
  outline: 2px solid var(--semmel-red);
  outline-offset: 3px;
}

.fav-knopf.fav-puls .buttonCircle {
  animation: fav_puls .45s ease-out;
}

@keyframes fav_puls {
  0% { transform: scale(1); }
  40% { transform: scale(1.25); }
  100% { transform: scale(1); }
}

/* Kopf von Künstler-, Tour- und Konzertseite */
.fav-knopf--kopf {
  margin-top: 1rem;
  gap: calc(var(--button-size) * .25);
  font-weight: 700;
  font-size: .85rem;
  letter-spacing: .02em;
}

.fav-knopf--kopf .buttonCircle {
  flex: 0 0 auto;
}

/* roter Tour-Kopf (toRed): weißer Kreis, rotes Herz */
.fav-knopf--hell {
  color: #fff;
}

.fav-knopf--hell .buttonCircle {
  background-color: #fff;
}

.fav-knopf--hell .buttonCircle:after {
  background-color: var(--semmel-red);
}

/* Terminliste der Tour-Seite: wie TICKETS / INFO / DATUM SPEICHERN */
.tickets-termine-element .ticket-overlay .favLink {
  font-size: var(--ticketList);
  font-weight: 700;
  color: var(--semmel-red);
  width: fit-content;
}

.tickets-termine-element .ticket-overlay .favLink .buttonCircle,
.tickets-termine-element .ticket-overlay .favLink .buttonCircle:after {
  width: calc(var(--close-button-size) * .8);
  height: calc(var(--close-button-size) * .8);
}

.tickets-termine-element .ticket-overlay .favLink .tickets-content {
  padding-left: calc(var(--button-size) * .2);
}

/* --- Zähler im Header -------------------------------------------------------- */
.header-alerts:has(.fav-zaehler) {
  gap: 10px;
  justify-self: end;
}

.header-alerts .fav-zaehler + .suche-icon,
.header-alerts .fav-zaehler ~ .hinweis-icon {
  margin-left: 0;
}

.header-alert.fav-zaehler {
  position: relative;
  display: block;
  background: var(--semmel-red);
  width: var(--button-size);
  aspect-ratio: 1 / 1;
  border-radius: 100rem;
  text-decoration: none;
}

.header-alert.fav-zaehler:after {
  mask-size: 70% 70%;
}

.fav-zaehler__zahl {
  position: absolute;
  top: -5px;
  right: -5px;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  box-sizing: border-box;
  border-radius: 9px;
  background: #fff;
  border: 2px solid var(--semmel-red);
  color: var(--semmel-red);
  font: 700 10px/14px 'Montserrat', sans-serif;
  text-align: center;
  pointer-events: none;
}

.fav-zaehler__zahl[hidden] {
  display: none;
}

/* Drei Knöpfe brauchen mehr Platz als die 80/90 px aus header.css */
#header .inside:has(.fav-zaehler) {
  grid-template-columns: 50px 1fr auto;
}

@container headerContainer (min-width: 1250px) {
  #header .inside:has(.fav-zaehler) {
    grid-template-columns: 180px 1fr auto;
  }
}

/* Bis ca. 1560 px Fensterbreite wird das Menü sonst vom Herz überdeckt */
@container headerContainer (min-width: 1250px) and (max-width: 1500px) {
  #header .inside:has(.fav-zaehler) .mod_navigation .level_1 {
    gap: 20px;
  }
}

@container headerContainer (min-width: 1250px) and (max-width: 1380px) {
  #header .inside:has(.fav-zaehler) .mod_navigation .level_1 {
    gap: 10px;
  }
}

/* --- Hinweis nach dem Merken ------------------------------------------------ */
.fav-hinweis {
  position: fixed;
  left: 50%;
  bottom: 24px;
  z-index: 1000;
  display: flex;
  align-items: center;
  gap: 1rem;
  max-width: calc(100vw - 32px);
  box-sizing: border-box;
  padding: .8rem 1.2rem;
  background: var(--semmel-red);
  color: #fff;
  font: 600 .85rem/1.3 'Montserrat', sans-serif;
  border-radius: 100rem;
  box-shadow: 0 6px 24px rgba(0, 0, 0, .2);
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 20px);
  transition: opacity .25s ease, transform .25s ease;
}

.fav-hinweis.sichtbar {
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, 0);
}

.fav-hinweis a {
  color: #fff;
  font-weight: 700;
  text-decoration: underline;
  white-space: nowrap;
}

/* --- Favoriten-Seite ---------------------------------------------------------- */
.fav-liste {
  box-sizing: border-box;
  max-width: 1400px;
  margin: 0 auto;
  padding: 2rem 30px 4rem;
}

@media (max-width: 600px) {
  .fav-liste {
    padding: 1.5rem 16px 3rem;
  }
}

.fav-liste__werkzeuge {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  margin: 0 0 2rem;
  padding-bottom: .8rem;
  border-bottom: 1px solid #eee;
  font-weight: 700;
}

.fav-liste__werkzeuge[hidden],
.fav-liste__leer[hidden],
.fav-gruppe[hidden] {
  display: none;
}

.fav-liste__alle-entfernen {
  appearance: none;
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  font-size: .75rem;
  color: var(--semmel-red);
  cursor: pointer;
}

.fav-liste__alle-entfernen:hover {
  text-decoration: underline;
}

.fav-liste__leer {
  text-align: center;
  padding: 3rem 1rem;
  max-width: 34rem;
  margin: 0 auto;
}

.fav-liste__leer .buttonCircle {
  margin: 0 auto 1.5rem;
}

.fav-liste__leer .buttonCircle:after {
  mask-size: 65% 65%;
}

.fav-liste__start {
  display: inline-block;
  margin-top: 1rem;
  padding: .7rem 1.4rem;
  border-radius: 100rem;
  background: var(--semmel-red);
  color: #fff;
  font-weight: 700;
  text-decoration: none;
}

.fav-liste__hinweis {
  margin-top: 3rem;
  font-size: .75rem;
  color: #888;
}

.fav-liste.laedt .fav-liste__ausgabe {
  min-height: 200px;
  opacity: .5;
}

.fav-gruppe + .fav-gruppe {
  margin-top: 3rem;
}

.fav-gruppe__titel {
  margin: 0 0 1rem;
  font-size: var(--h4-headline-size, 1.2rem);
  text-transform: uppercase;
}

.fav-gruppe__raster {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 360px), 1fr));
  gap: 1.2rem;
}

/* Karte */
.fav-karte {
  position: relative;
  background: #fff;
  border: 1px solid #eee;
  transition: transform .2s ease, opacity .25s ease;
}

.fav-karte:hover {
  transform: scale(1.02);
}

.fav-karte.wird-entfernt {
  opacity: 0;
  transform: scale(.95);
}

.fav-karte__link {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: .8rem 3.4rem .8rem .8rem;
  color: inherit;
  text-decoration: none;
  height: 100%;
  box-sizing: border-box;
}

.fav-karte__bild {
  flex: 0 0 90px;
  width: 90px;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: #eee;
}

.fav-karte__bild img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.fav-karte__bild.ohne-bild {
  background: var(--semmel-red);
}

.fav-karte__text {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: .2rem;
  font-size: .8rem;
}

.fav-karte__ober {
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--semmel-red);
}

.fav-karte__titel {
  font-weight: 700;
  font-size: .95rem;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.fav-karte__link:hover .fav-karte__titel {
  color: var(--semmel-red);
}

.fav-karte__info {
  color: #666;
}

.fav-karte__status {
  align-self: flex-start;
  margin-top: .3rem;
  padding: .15rem .5rem;
  background: var(--semmel-red);
  color: #fff;
  font-size: .65rem;
  font-weight: 700;
}

.fav-karte.ist-vorbei,
.fav-karte.fehlt {
  opacity: .6;
}

.fav-karte.ist-vorbei .fav-karte__status,
.fav-karte.fehlt .fav-karte__status {
  background: #888;
}

.fav-knopf--rund {
  position: absolute;
  top: .8rem;
  right: .8rem;
}

.fav-knopf--rund .buttonCircle,
.fav-knopf--rund .buttonCircle:after {
  width: calc(var(--button-size) * .75);
  height: calc(var(--button-size) * .75);
}

.fav-liste__fehler {
  color: var(--semmel-red);
  font-weight: 700;
}

/* --- E-Mail-Abo (Favoriten-Seite) --------------------------------------------- */
.fav-abo {
  margin-top: 3.5rem;
  padding: 2rem;
  background: #f6f6f6;
  border-left: 6px solid var(--semmel-red);
  max-width: 46rem;
}

@media (max-width: 600px) {
  .fav-abo {
    padding: 1.4rem 1.1rem;
  }
}

.fav-abo [hidden] {
  display: none !important;
}

.fav-abo__titel {
  margin: 0 0 .8rem;
  font-size: var(--h4-headline-size, 1.2rem);
  text-transform: uppercase;
}

.fav-abo__text,
.fav-abo p {
  font-size: .85rem;
  line-height: 1.5;
}

.fav-abo__form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin-top: 1.2rem;
}

.fav-abo__feld span {
  display: block;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  margin-bottom: .3rem;
}

.fav-abo__feld input {
  width: 100%;
  max-width: 26rem;
  box-sizing: border-box;
  padding: .7rem .9rem;
  border: 1px solid #ccc;
  border-radius: 0;
  background: #fff;
  font: inherit;
  font-size: .9rem;
}

.fav-abo__feld input:focus {
  outline: 2px solid var(--semmel-red);
  outline-offset: 0;
  border-color: var(--semmel-red);
}

.fav-abo__einwilligung {
  display: flex;
  gap: .7rem;
  align-items: flex-start;
  font-size: .75rem;
  line-height: 1.45;
  cursor: pointer;
}

.fav-abo__einwilligung input {
  flex: 0 0 auto;
  width: 1.1rem;
  height: 1.1rem;
  margin-top: .1rem;
  accent-color: var(--semmel-red);
}

.fav-abo__einwilligung a {
  color: var(--semmel-red);
}

.fav-abo altcha-widget {
  --altcha-max-width: 26rem;
  --altcha-color-border-focus: var(--semmel-red);
  --altcha-color-active: var(--semmel-red);
  --altcha-border-radius: 0;
}

.fav-abo__knopf,
.fav-abo__abmelden {
  appearance: none;
  align-self: flex-start;
  border: 0;
  border-radius: 100rem;
  padding: .8rem 1.6rem;
  background: var(--semmel-red);
  color: #fff;
  font: inherit;
  font-size: .8rem;
  font-weight: 700;
  cursor: pointer;
  transition: background .2s ease;
}

.fav-abo__knopf:hover,
.fav-abo__knopf:focus-visible {
  background: #90091F;
  color: #fff;
}

.fav-abo__abmelden {
  background: none;
  color: var(--semmel-red);
  border: 2px solid var(--semmel-red);
  padding: .6rem 1.4rem;
}

.fav-abo__abmelden:hover,
.fav-abo__abmelden:focus-visible {
  background: var(--semmel-red);
  color: #fff;
}

.fav-abo__knopf:disabled,
.fav-abo__form.sendet .fav-abo__knopf {
  opacity: .5;
  cursor: wait;
}

.fav-abo__meldung {
  margin: 0;
  font-weight: 700;
  color: #1a7f37;
}

.fav-abo__meldung:empty {
  display: none;
}

.fav-abo__meldung.ist-fehler {
  color: var(--semmel-red);
}

.fav-abo__wechsel {
  margin: 1.2rem 0 0;
}

.fav-abo__modus {
  appearance: none;
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  font-size: .8rem;
  color: var(--semmel-red);
  text-decoration: underline;
  cursor: pointer;
}

.fav-abo__modus:hover {
  background: none;
  color: #90091F;
}

.fav-abo__aktion {
  margin-bottom: 1rem;
}

/* Globale Regeln aus formulare.css aufheben: label in Großbuchstaben,
   button mit margin-top: 3vh */
.fav-abo__einwilligung,
.fav-abo__feld {
  text-transform: none;
  font-weight: 400;
}

.fav-abo__einwilligung {
  font-size: .78rem;
}

.fav-abo__knopf,
.fav-abo__abmelden,
.fav-abo__modus,
.fav-liste__alle-entfernen {
  margin: 0;
}

.fav-abo__an .fav-abo__abmelden {
  margin-top: .4rem;
}

.fav-abo__an .fav-abo__meldung {
  margin-top: 1rem;
}

.fav-abo__knopf,
.fav-abo__abmelden {
  line-height: 1.3;
}

/* --- Brief-Knopf: Mails pro Favorit an/aus (nur mit verbundenem Abo) ------ */
.fav-mail-knopf {
  display: none;
  position: absolute;
  top: .8rem;
  right: calc(.8rem + var(--button-size) * .75 + 8px);
  appearance: none;
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
}

.fav-liste.abo-verbunden .fav-mail-knopf {
  display: flex;
}

.fav-liste.abo-verbunden .fav-karte__link {
  padding-right: calc(1.6rem + var(--button-size) * 1.5 + 8px);
}

.fav-mail-knopf:hover {
  background: none;
}

.fav-mail-knopf:focus-visible {
  outline: 2px solid var(--semmel-red);
  outline-offset: 3px;
  border-radius: 100rem;
}

.fav-mail-knopf .buttonCircle,
.fav-mail-knopf .buttonCircle:after {
  width: calc(var(--button-size) * .75);
  height: calc(var(--button-size) * .75);
}

.brief-icon:after {
  mask-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><rect x="28" y="38" width="64" height="44" rx="4" fill="none" stroke="white" stroke-width="7"/><path d="M30 42 60 64 90 42" fill="none" stroke="white" stroke-width="7" stroke-linejoin="round"/></svg>');
  mask-position: center;
  mask-size: 100% 100%;
}

/* Stumm: grauer Kreis, Brief durchgestrichen */
.fav-mail-knopf.ist-stumm .buttonCircle {
  background-color: #b5b5b5;
}

.fav-mail-knopf.ist-stumm .brief-icon:after {
  mask-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><rect x="28" y="38" width="64" height="44" rx="4" fill="none" stroke="white" stroke-width="7"/><path d="M30 42 60 64 90 42" fill="none" stroke="white" stroke-width="7" stroke-linejoin="round"/><path d="M26 92 94 28" stroke="white" stroke-width="8" stroke-linecap="round"/></svg>');
}

.fav-mail-knopf:hover .buttonCircle.animate:after,
.fav-mail-knopf:hover .brief-icon:after {
  transform: none;
}

.fav-mail-knopf:hover .buttonCircle {
  box-shadow: 0 0 0 4px rgba(213, 17, 48, .15);
}

/* --- Erklärungen im Abo-Bereich ----------------------------------------------- */
.fav-abo__regeln {
  margin: 1rem 0 0;
  font-size: .8rem;
  line-height: 1.5;
}

.fav-abo__regeln summary {
  cursor: pointer;
  font-weight: 700;
  color: var(--semmel-red);
  list-style-position: inside;
}

.fav-abo__regeln summary:hover {
  text-decoration: underline;
}

.fav-abo__regeln dl {
  margin: .8rem 0 0;
}

.fav-abo__regeln dt {
  font-weight: 700;
  margin-top: .6rem;
}

.fav-abo__regeln dd {
  margin: .1rem 0 0;
}

.fav-abo__regeln p {
  margin: .8rem 0 0;
  color: #666;
}

.fav-abo__an .fav-abo__regeln {
  margin-bottom: 1.4rem;
}

/* Legende zum Brief-Knopf */
.fav-abo__brief {
  margin: 1.2rem 0 1rem;
}

.fav-abo__brief-zeile {
  display: flex;
  align-items: flex-start;
  gap: .7rem;
  margin: 0 0 .6rem;
}

.fav-abo__brief-zeile .buttonCircle,
.fav-abo__brief-zeile .buttonCircle:after {
  flex: 0 0 auto;
  width: calc(var(--button-size) * .65);
  height: calc(var(--button-size) * .65);
}

.fav-abo__brief-zeile.ist-stumm .buttonCircle {
  background-color: #b5b5b5;
}

.fav-abo__brief-zeile.ist-stumm .brief-icon:after {
  mask-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><rect x="28" y="38" width="64" height="44" rx="4" fill="none" stroke="white" stroke-width="7"/><path d="M30 42 60 64 90 42" fill="none" stroke="white" stroke-width="7" stroke-linejoin="round"/><path d="M26 92 94 28" stroke="white" stroke-width="8" stroke-linecap="round"/></svg>');
}
