/* Drachenfest – Website (ergänzt Bootstrap 5 / MDB) */

.drachenfest-card--abgesagt {
    opacity: .7;
}
.drachenfest-card--abgesagt .card-title {
    text-decoration: line-through;
}
.drachenfest-card .card-img-top {
    aspect-ratio: 16 / 9;
    object-fit: cover;
}
.drachenfest-date {
    font-weight: 600;
}
.drachenfest-vergangen .card {
    opacity: .8;
}

.drachenfest-zeit {
    flex: 0 0 7.5em;
    font-variant-numeric: tabular-nums;
}
.drachenfest-kat {
    background: #607d8b;
    font-weight: 500;
}
.drachenfest-kat--showflug { background: #1565c0; }
.drachenfest-kat--nachtfliegen { background: #283593; }
.drachenfest-kat--ballongluehen { background: linear-gradient(135deg, #ff6f00, #d84315); }
.drachenfest-kat--kinder { background: #f9a825; color: #212121; }
.drachenfest-kat--bonbon { background: #ad1457; }
.drachenfest-kat--wettbewerb { background: #2e7d32; }
.drachenfest-kat--workshop { background: #6d4c41; }
.drachenfest-kat--musik { background: #6a1b9a; }

.drachenfest .drachenfest-map {
    height: 460px;
    border-radius: .5rem;
    z-index: 0;
}
@media (max-width: 575.98px) {
    .drachenfest .drachenfest-map { height: 360px; }
    .drachenfest-zeit { flex-basis: 6em; }
}

.drachenfest-legend {
    background: rgba(255, 255, 255, .92);
    padding: 6px 8px;
    border-radius: 4px;
    box-shadow: 0 1px 4px rgba(0, 0, 0, .2);
    font-size: 12px;
    line-height: 1.6;
}
.drachenfest-legend span { display: block; }
.drachenfest-legend i {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 2px;
    margin-right: 6px;
}

/* Kartenbedienelemente haben einen hellen Hintergrund – Schriftfarbe fest setzen, damit sie auch im
   dunklen Design (REDAXO-Backend „Dark“, dunkle Systemeinstellung) nicht weiß auf weiß erscheinen */
.leaflet-container .drachenfest-legend,
.leaflet-container .leaflet-control-layers,
.leaflet-container .leaflet-control-layers label,
.leaflet-container .leaflet-popup-content-wrapper,
.leaflet-container .leaflet-tooltip {
    color: #16233a;
}
.leaflet-container .drachenfest-legend {
    background: rgba(255, 255, 255, .95);
}
.leaflet-container .leaflet-popup-content-wrapper a {
    color: #1060c4;
}

/* Feste Beschriftung auf Flächen und Punkten – weiße Schrift mit dunklem Schatten, auf Luftbild und Karte lesbar */
.leaflet-container .leaflet-tooltip.drachenfest-label {
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0;
    color: #fff;
    font-weight: 800;
    font-size: 13px;
    line-height: 1.15;
    letter-spacing: .01em;
    white-space: nowrap;
    text-shadow: 0 0 2px #000, 0 0 4px rgba(0, 0, 0, .9), 0 1px 6px rgba(0, 0, 0, .7);
    pointer-events: none;
}
.leaflet-container .leaflet-tooltip.drachenfest-label::before {
    display: none; /* kein Pfeil */
}
.leaflet-container .leaflet-tooltip.drachenfest-label--muted {
    opacity: .6;
    font-weight: 600;
}
.drachenfest-labels-hidden .leaflet-tooltip.drachenfest-label {
    display: none;
}

/* Honeypot gegen Spam-Bots: für Menschen unsichtbar */
.drachenfest-hp {
    position: absolute !important;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
.drachenfest-anmeldung {
    position: relative;
    scroll-margin-top: 80px;
}

/* --- Programm: Filter, „läuft gerade“, Kalender ------------------------- */
.df-programm-tools {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .5rem;
}
.df-filter {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}
.df-chip {
    --k: #16233a;
    border: 0;
    border-radius: 2rem;
    padding: .35rem .9rem;
    font-weight: 700;
    font-size: .875rem;
    background: #e8edf3;
    color: #16233a;
    cursor: pointer;
    transition: background-color .15s, transform .15s;
}
/* Farbpunkt der Art, aktiver Knopf in voller Farbe */
.df-chip.drachenfest-kat--showflug { --k: #1565c0; }
.df-chip.drachenfest-kat--nachtfliegen { --k: #283593; }
.df-chip.drachenfest-kat--ballongluehen { --k: #e65100; }
.df-chip.drachenfest-kat--kinder { --k: #f9a825; }
.df-chip.drachenfest-kat--bonbon { --k: #ad1457; }
.df-chip.drachenfest-kat--wettbewerb { --k: #2e7d32; }
.df-chip.drachenfest-kat--workshop { --k: #6d4c41; }
.df-chip.drachenfest-kat--musik { --k: #6a1b9a; }
.df-chip.drachenfest-kat--sonstiges { --k: #607d8b; }
.df-chip[class*="drachenfest-kat--"]::before {
    content: "";
    display: inline-block;
    width: .6em;
    height: .6em;
    border-radius: 50%;
    margin-right: .45em;
    background: var(--k);
    vertical-align: .05em;
}
.df-chip:hover { background: #d9e1ea; }
.df-chip.is-active {
    background: var(--k);
    color: #fff;
    transform: scale(1.05);
    box-shadow: 0 3px 10px rgba(22, 35, 58, .2);
}
.df-chip.is-active::before { background: #fff; }
.df-chip.is-active.drachenfest-kat--kinder { color: #212121; }
.df-chip.is-active.drachenfest-kat--kinder::before { background: #212121; }
.df-chip:focus-visible,
.df-ics:focus-visible {
    outline: 3px solid #1b6fd6;
    outline-offset: 2px;
}
.df-ics {
    align-self: center;
    color: #5b6b80;
    font-size: 1.1rem;
    padding: .25rem .4rem;
    border-radius: .5rem;
}
.df-ics:hover { color: #1b6fd6; background: #eef4fc; }
.df-jetzt {
    background: #e53935;
    color: #fff;
    animation: df-puls 1.6s ease-in-out infinite;
}
.df-naechstes .df-jetzt {
    background: #1b6fd6;
    animation: none;
}
.drachenfest-programm .df-laeuft {
    box-shadow: 0 0 0 3px #e53935, 0 8px 24px rgba(229, 57, 53, .18) !important;
}
.drachenfest-programm .df-naechstes {
    box-shadow: 0 0 0 2px #1b6fd6 !important;
}
@keyframes df-puls {
    0%, 100% { opacity: 1; }
    50% { opacity: .55; }
}

/* --- Höhepunkte ---------------------------------------------------------- */
.df-highlight {
    position: relative;
    background: #fff;
    border-radius: 1.25rem;
    padding: 1.4rem 1.4rem 1.2rem;
    box-shadow: 0 10px 30px rgba(22, 35, 58, .08);
    overflow: hidden;
    transition: transform .25s;
}
.df-highlight::before {
    content: "";
    position: absolute;
    inset: 0 0 auto 0;
    height: 8px;
    background: linear-gradient(90deg, #ff4d5e, #ffc531, #12c2a9, #7b4cff);
}
.df-highlight:hover { transform: translateY(-4px) rotate(.4deg); }
.df-highlight h3 { font-size: 1.25rem; margin: .25rem 0 .6rem; }
.df-highlight__zeit { font-weight: 800; color: #1b6fd6; margin: 0; font-size: .95rem; }
.df-highlight__ort { margin: .6rem 0 0; color: #5b6b80; font-size: .9rem; }

/* --- Wind ---------------------------------------------------------------- */
.df-windtag {
    background: #fff;
    border-radius: 1.25rem;
    padding: 1.25rem 1.4rem;
    box-shadow: 0 10px 30px rgba(22, 35, 58, .08);
    border-left: 8px solid var(--w, #1b8cf0);
}
.df-windtag--flau { --w: #90a4ae; }
.df-windtag--leicht { --w: #4fc3f7; }
.df-windtag--gut { --w: #2e9e5b; }
.df-windtag--kraeftig { --w: #ff9800; }
.df-windtag--sturm { --w: #e53935; }
.df-windtag__tag { font-weight: 800; margin: 0 0 .5rem; }
.df-windtag__wert { display: flex; align-items: center; gap: 1rem; line-height: 1.25; }
.df-windtag__wert b { font-size: 2.2rem; font-weight: 900; line-height: 1; }
.df-windtag__urteil { font-weight: 800; color: var(--w); margin: .75rem 0 .25rem; }
.df-windtag__extra { margin: 0; color: #5b6b80; font-size: .9rem; }
.df-windpfeil {
    display: inline-grid;
    place-items: center;
    width: 3.4rem;
    height: 3.4rem;
    border-radius: 50%;
    background: color-mix(in srgb, var(--w) 16%, white);
    color: var(--w);
    font-size: 1.5rem;
    flex: none;
}
.df-windpfeil i {
    /* Pfeil zeigt, wohin der Wind weht (0° = Wind aus Nord = Pfeil nach unten) */
    transform: rotate(var(--grad));
    animation: df-windwackeln 2.4s ease-in-out infinite;
}
@keyframes df-windwackeln {
    0%, 100% { transform: rotate(calc(var(--grad) - 7deg)); }
    50% { transform: rotate(calc(var(--grad) + 7deg)); }
}

/* --- Sponsoren ----------------------------------------------------------- */
.df-sponsoren__liste {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1.25rem 2.5rem;
}
.df-sponsoren__liste img {
    max-height: 70px;
    max-width: 180px;
    width: auto;
    filter: grayscale(1);
    opacity: .75;
    transition: filter .2s, opacity .2s;
}
.df-sponsoren__liste a:hover img,
.df-sponsoren__liste a:focus img { filter: none; opacity: 1; }
.df-sponsoren__liste span { font-weight: 800; font-size: 1.1rem; }

/* --- Galerie und Großansicht --------------------------------------------- */
.df-galerie {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: .6rem;
}
.df-galerie--streifen {
    grid-template-columns: repeat(4, 1fr);
}
.df-galerie__bild {
    display: block;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: .9rem;
    background: #dfe5ec;
}
.df-galerie__bild img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .35s;
    /* überschreibt die schräge Bild-Regel des Rückblicks */
    transform: none !important;
    box-shadow: none !important;
    border-radius: 0 !important;
}
.df-galerie__bild:hover img,
.df-galerie__bild:focus img { transform: scale(1.07) !important; }
.df-galerie__bild:focus-visible { outline: 3px solid #1b6fd6; outline-offset: 2px; }
.df-galerie--streifen .df-galerie__bild:nth-child(odd) { rotate: -1.2deg; }
.df-galerie--streifen .df-galerie__bild:nth-child(even) { rotate: 1.2deg; }
@media (max-width: 767.98px) {
    .df-galerie--streifen { grid-template-columns: repeat(2, 1fr); }
}
.df-lightbox {
    position: fixed;
    inset: 0;
    z-index: 2000;
    background: rgba(10, 18, 34, .93);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.df-lightbox figure { margin: 0; text-align: center; max-width: 100%; }
.df-lightbox img {
    max-width: min(100%, 1400px);
    max-height: calc(100vh - 6rem);
    border-radius: .75rem;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .5);
}
.df-lightbox figcaption { color: #fff; opacity: .8; margin-top: .5rem; font-size: .9rem; }
.df-lightbox button {
    position: absolute;
    border: 0;
    background: rgba(255, 255, 255, .14);
    color: #fff;
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    font-size: 2rem;
    line-height: 1;
    cursor: pointer;
}
.df-lightbox button:hover,
.df-lightbox button:focus-visible { background: rgba(255, 255, 255, .3); outline: 2px solid #fff; }
.df-lightbox__zu { top: 1rem; right: 1rem; }
.df-lightbox__pfeil--links { left: 1rem; top: 50%; translate: 0 -50%; }
.df-lightbox__pfeil--rechts { right: 1rem; top: 50%; translate: 0 -50%; }
.df-lightbox-offen { overflow: hidden; }

/* --- Karte erst nach Klick ----------------------------------------------- */
.drachenfest .drachenfest-map.df-map--wartet {
    display: grid;
    place-items: center;
    background:
        linear-gradient(rgba(255, 255, 255, .88), rgba(255, 255, 255, .88)),
        repeating-linear-gradient(45deg, #cfe3d4 0 22px, #bcd9c6 22px 44px);
    border: 1px solid #dfe5ec;
}
.df-map-consent {
    max-width: 30rem;
    text-align: center;
    padding: 1.5rem;
}
.df-map-consent__icon { font-size: 2.6rem; color: #1b6fd6; margin-bottom: .75rem; }
.df-map-consent__immer { display: block; margin-top: .9rem; font-size: .9rem; cursor: pointer; }
.df-map-consent__immer input { margin-right: .4rem; }

/* --- Fragen & Antworten -------------------------------------------------- */
.df-faq__item {
    background: #fff;
    border-radius: 1rem;
    box-shadow: 0 4px 16px rgba(22, 35, 58, .06);
    margin-bottom: .7rem;
    overflow: hidden;
}
.df-faq__item summary {
    cursor: pointer;
    list-style: none;
    padding: 1rem 3rem 1rem 1.25rem;
    font-weight: 800;
    position: relative;
}
.df-faq__item summary::-webkit-details-marker { display: none; }
.df-faq__item summary::after {
    content: "+";
    position: absolute;
    right: 1.25rem;
    top: 50%;
    translate: 0 -50%;
    font-size: 1.6rem;
    font-weight: 400;
    color: #1b6fd6;
    transition: rotate .2s;
}
.df-faq__item[open] summary::after { rotate: 45deg; }
.df-faq__item summary:focus-visible { outline: 3px solid #1b6fd6; outline-offset: -3px; }
.df-faq__antwort { padding: 0 1.25rem 1rem; }
.df-faq__antwort > :last-child { margin-bottom: 0; }

/* --- Helfer: Schichten wählen -------------------------------------------- */
.df-schichttag { font-weight: 800; margin: 1.25rem 0 .5rem; }
.df-schichtwahl {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
    gap: .6rem;
}
.df-schicht {
    display: flex;
    gap: .75rem;
    background: #fff;
    border: 2px solid #dfe5ec;
    border-radius: 1rem;
    padding: .8rem 1rem;
    cursor: pointer;
    transition: border-color .15s, background-color .15s;
}
.df-schicht:hover { border-color: #1b6fd6; }
.df-schicht:has(input:checked) { border-color: #2e9e5b; background: #eef8f1; }
.df-schicht--voll { opacity: .55; cursor: not-allowed; }
.df-schicht small { color: #2e9e5b; font-weight: 700; }
.df-schicht--voll small { color: #8a8a8a; }
.df-schicht input { margin-top: .2rem; flex: none; }

@media (prefers-reduced-motion: reduce) {
    .df-jetzt, .df-windpfeil i { animation: none !important; }
    .df-galerie__bild img, .df-highlight, .df-chip { transition: none; }
}

/* --- Stellplatzwahl bei der Anmeldung ------------------------------------ */
.df-platzwahl {
    background: #f4f8fc;
    border: 1px solid #dfe8f1;
    border-radius: 1rem;
    padding: 1.1rem 1.2rem 1.2rem;
}
.drachenfest .df-platzwahl__karte {
    height: 420px;
    border-radius: .9rem;
    box-shadow: none;
    border: 1px solid #dfe5ec;
}
.df-platzwahl__legende {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem 1rem;
    margin-top: .5rem;
    color: #5b6b80;
}
.df-platz-punkt {
    display: inline-block;
    width: .8rem;
    height: .8rem;
    border-radius: 3px;
    margin-right: .35rem;
    vertical-align: -1px;
}
.df-platz-punkt--frei { background: #2e9e5b; }
.df-platz-punkt--gewaehlt { background: #1b6fd6; }
.df-platz-punkt--belegt { background: #e53935; }
.df-platz-punkt--passt-nicht { background: #9e9e9e; }
.leaflet-container .leaflet-tooltip.df-platz-label { font-size: 11px; }
.df-platzwahl .leaflet-interactive { cursor: pointer; }
@media (max-width: 575.98px) {
    .drachenfest .df-platzwahl__karte { height: 340px; }
}

/* Stellplatzwahl: Hinweis ohne Übernachtung, Beschriftungen nur bei genug Platz */
.df-platzwahl__hinweis p { color: #3d4b5c; }
.df-platz-labels-aus .leaflet-tooltip.df-platz-label { display: none; }
.df-platz-labels-aus .leaflet-tooltip.df-platz-label.df-platz-label--gewaehlt { display: block; }
.leaflet-container .leaflet-tooltip.df-platz-label--gewaehlt { font-size: 13px; z-index: 700; }
