/* vorOrt dabei – Strände (Foto-Pins, Galerie, Ausstattung) & Saison-Themen der Karte */

/* ---------- Strand-Pin (rundes Foto) ---------- */
.spin { position: absolute; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; cursor: pointer; }
.spin-img { width: 46px; height: 46px; border-radius: 50%; overflow: hidden; display: block; background: var(--mint); box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--teal-d), 0 4px 12px rgba(29,54,95,.35); }
.spin-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.spin-b { position: absolute; right: -7px; top: 27px; width: 22px; height: 22px; border-radius: 11px; background: var(--teal-d); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 2px #fff; }
.spin .pin-l { position: static; margin-top: 7px; font-size: 13px; }
.leaflet-marker-icon:focus-visible .spin-img { outline: 3px solid var(--navy); outline-offset: 4px; }
.karte .chip.st.float { background: var(--teal-d); color: #fff; }
.karte .chip.st.float .ico-svg { color: #fff !important; }

/* ---------- Ort-/Strand-Seite: Galerie ---------- */
.d-hero.has-gal { height: 330px; overflow: hidden; }
.gal, .gal-track { position: absolute; inset: 0; }
.gal-track { display: flex; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.gal-track::-webkit-scrollbar { display: none; }
.gal-slide { flex: 0 0 100%; scroll-snap-align: center; border: 0; padding: 0; margin: 0; background: var(--navy); cursor: zoom-in; }
.gal-slide img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gal-badge, .gal-count { position: absolute; bottom: 44px; display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 11px; border-radius: 15px; font-weight: 600; font-size: 0.875rem; pointer-events: none; }
.gal-badge { left: 16px; }
.gal-count { right: 16px; }
.gal-dots { position: absolute; left: 0; right: 0; bottom: 54px; display: flex; justify-content: center; gap: 6px; pointer-events: none; }
.gal-dots i { width: 7px; height: 7px; border-radius: 4px; background: rgba(255,255,255,.55); box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: width .2s; }
.gal-dots i.on { width: 20px; background: #fff; }
.gal-thumbs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.gal-th { border: 0; padding: 0; border-radius: 14px; overflow: hidden; aspect-ratio: 4 / 3; cursor: zoom-in; background: var(--mint); }
.gal-th img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Ausstattung */
.sinfo { margin: 6px 0 18px; }
.sinfo .h2 { margin: 0 0 10px; }
.sinfo-g { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.sinfo-g li { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 2px 8px; border-radius: 14px; background: var(--mint-l); text-align: center; position: relative; }
.sinfo-i { width: 38px; height: 38px; border-radius: 19px; background: #fff; color: var(--teal-d); display: flex; align-items: center; justify-content: center; }
.sinfo-t { font-weight: 600; font-size: 0.875rem; line-height: 1.1; color: var(--navy); }
.sinfo-g li.off { background: #F3F5F6; }
.sinfo-g li.off .sinfo-i { color: #A3ACB4; }
.sinfo-g li.off .sinfo-t { color: #8A949E; text-decoration: line-through; }

/* Vollbild-Galerie */
.lb { position: fixed; inset: 0; z-index: 2000; background: #0B1424; color: #fff; display: flex; flex-direction: column; }
.lb-top { display: flex; align-items: center; justify-content: space-between; padding: calc(var(--safe-t) + 10px) 12px 6px 20px; }
.lb-count { font-weight: 600; font-size: 1rem; opacity: .85; }
.lb-x { width: 44px; height: 44px; border: 0; border-radius: 22px; background: rgba(255,255,255,.14); color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.lb-track { flex: 1; display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.lb-track::-webkit-scrollbar { display: none; }
.lb-slide { flex: 0 0 100%; margin: 0; scroll-snap-align: center; display: flex; align-items: center; justify-content: center; }
.lb-slide img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; }
.lb-cap { margin: 0; padding: 14px 20px calc(var(--safe-b) + 22px); font-size: 0.9375rem; line-height: 1.4; color: rgba(255,255,255,.9); }
.lb-cap b { color: #fff; }
.lb-credit { display: block; margin-top: 2px; font-size: 0.875rem; opacity: .6; }

/* ---------- Saison-Themen ---------- */
.saison-fx { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; }
.map-box::after { content: ''; position: absolute; inset: 0; z-index: 250; pointer-events: none; transition: background .4s; }

.saison-chip {
  align-self: flex-start; display: inline-flex; align-items: center; gap: 10px; border: 0; cursor: pointer; text-align: left;
  padding: 6px 14px 6px 6px; border-radius: 26px; background: rgba(255,255,255,.96); color: var(--navy); box-shadow: 0 2px 10px rgba(29,54,95,.22);
}
.saison-chip-i { width: 38px; height: 38px; border-radius: 19px; display: flex; align-items: center; justify-content: center; background: var(--teal-d); color: #fff; flex-shrink: 0; }
.saison-chip-b { display: flex; flex-direction: column; line-height: 1.15; }
.saison-chip-b b { font-size: 0.9375rem; font-weight: 900; }
.saison-chip-b span { font-size: 0.875rem; font-weight: 600; color: var(--teal-d); }

/* Halloween: dunkle Karte, orange Pins */
.saison-halloween .karte, .saison-halloween .map-box { background: #1C1230; }
.saison-halloween .leaflet-tile-pane { filter: sepia(.7) hue-rotate(225deg) saturate(1.5) brightness(.5) contrast(1.15); }
.saison-halloween .map-box::after { background: radial-gradient(120% 70% at 70% 30%, rgba(240,123,26,.16), rgba(28,10,48,.30) 75%); }
.saison-halloween .pin-t { background: #F07B1A; color: #1E1030; box-shadow: 0 0 0 2px #1E1030, 0 0 14px rgba(240,123,26,.55); }
.saison-halloween .pin-c { background: #1E1030; color: #F7A04B; }
.saison-halloween .pin-stem { background: #F07B1A; }
.saison-halloween .pin-l { color: #FFE8D1; text-shadow: 0 0 3px #1E1030, 0 0 3px #1E1030, 0 0 2px #1E1030; }
.saison-halloween .opin { background: #2A1740; color: #F7A04B; box-shadow: 0 0 0 2px #F07B1A, 0 0 10px rgba(240,123,26,.45); }
.saison-halloween .spin-img { box-shadow: 0 0 0 3px #1E1030, 0 0 0 5px #F07B1A, 0 0 16px rgba(240,123,26,.6); }
.saison-halloween .spin-b { background: #F07B1A; color: #1E1030; box-shadow: 0 0 0 2px #1E1030; }
.saison-halloween .saison-chip { background: #2A1740; color: #fff; box-shadow: 0 0 0 2px #F07B1A, 0 4px 16px rgba(240,123,26,.35); }
.saison-halloween .saison-chip-i { background: #F07B1A; color: #1E1030; }
.saison-halloween .saison-chip-b span { color: #F7A04B; }
.saison-halloween .karte .leaflet-control-attribution { background: rgba(28,18,48,.8); color: #bbb; }
.saison-halloween .karte .leaflet-control-attribution a { color: #F7A04B; }

/* Winter & Advent: verschneite, kühle Karte, Schneehauben auf den Pins */
.saison-schnee .leaflet-tile-pane { filter: saturate(.45) brightness(.93) contrast(1.02); }
.saison-schnee .map-box::after { background: linear-gradient(180deg, rgba(70,105,150,.30), rgba(120,150,190,.16) 60%, rgba(200,220,240,.2)); }
.saison-schnee .pin-t, .saison-schnee .opin { position: relative; }
.saison-schnee .pin-t::before, .saison-schnee .opin::before {
  content: ''; position: absolute; left: 4px; right: 4px; top: -7px; height: 8px; background: #fff;
  border-radius: 9px 9px 5px 5px; box-shadow: 0 1px 1.5px rgba(29,54,95,.35);
}
.saison-schnee .spin::before { content: ''; position: absolute; z-index: 2; top: -5px; left: 7px; width: 32px; height: 11px; background: #fff; border-radius: 12px 12px 6px 6px; box-shadow: 0 1px 2px rgba(29,54,95,.35); }
.saison-winter .saison-chip-i { background: #3E7CB1; }
.saison-advent .saison-chip-i { background: #C8343F; }
.saison-advent .saison-chip-b span { color: #C8343F; }
.saison-advent .pin.sel .pin-t, .saison-advent .pin-c { background: #C8343F; color: #fff; }
.lichter { position: absolute; left: 0; right: 0; top: -13px; height: 26px; pointer-events: none; z-index: 2; }
.lichter svg { width: 100%; height: 100%; display: block; overflow: visible; }
.lichter .bulb { animation: vodBulb 1.8s ease-in-out infinite alternate; }
@keyframes vodBulb { from { opacity: .55; } to { opacity: 1; } }

/* Silvester */
.saison-silvester .leaflet-tile-pane { filter: brightness(.7) saturate(.8); }
.saison-silvester .map-box::after { background: linear-gradient(180deg, rgba(29,54,95,.45), rgba(29,54,95,.1)); }
.saison-silvester .saison-chip-i { background: var(--navy); color: var(--yellow); }

@media (prefers-reduced-motion: reduce) { .lichter .bulb { animation: none; opacity: 1; } }

/* ---------- Eigene Strandfotos hochladen ---------- */
.sfoto { margin: 6px 0 4px; padding: 18px; border-radius: 20px; background: linear-gradient(135deg, var(--mint-l), #E2F2F3); box-shadow: inset 0 0 0 1px var(--line); display: flex; flex-direction: column; gap: 14px; }
.sfoto-top { display: flex; gap: 14px; align-items: flex-start; }
.sfoto-ico { width: 48px; height: 48px; border-radius: 24px; background: var(--teal-d); color: #fff; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.sfoto-t { margin: 0; font-weight: 900; font-size: 1.125rem; line-height: 1.25; color: var(--navy); }
.sfoto-s { margin: 4px 0 0; font-size: 0.875rem; line-height: 1.45; color: var(--muted); }
.sfoto-mine { display: flex; gap: 8px; }
.sfoto-p { position: relative; width: 128px; aspect-ratio: 4 / 3; border-radius: 12px; overflow: hidden; background: var(--mint); }
.sfoto-p img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.75); }
.sfoto-pt { position: absolute; left: 0; right: 0; bottom: 0; display: flex; align-items: center; gap: 4px; padding: 3px 6px; font-size: 0.8125rem; font-weight: 600; color: #fff; background: rgba(29,54,95,.78); }
.sfoto .btn { height: 48px; gap: 6px; }

.sf-form { display: flex; flex-direction: column; gap: 16px; padding-bottom: 6px; }
.sf-where { margin: 0; display: flex; align-items: center; gap: 6px; font-size: 0.9375rem; color: var(--muted); }
.sf-where .ico-svg { color: var(--teal-d); }
.sf-where b { color: var(--navy); }
.sf-drop { min-height: 168px; }
.sf-prev { aspect-ratio: 4 / 3; }
.sf-tag { position: absolute; left: 10px; top: 10px; display: inline-flex; align-items: center; gap: 5px; height: 28px; padding: 0 10px; border-radius: 14px; background: rgba(29,54,95,.82); color: #fff; font-weight: 600; font-size: 0.875rem; }
.sf-checks { display: flex; flex-direction: column; gap: 10px; }
.sf-checks .crow label { font-size: 0.875rem; line-height: 1.4; }
.sf-note { margin: 0; display: flex; gap: 8px; align-items: flex-start; padding: 12px 14px; border-radius: 14px; background: var(--mint-l); font-size: 0.875rem; line-height: 1.45; color: var(--ink); }
.sf-note .ico-svg { color: var(--teal-d); margin-top: 1px; flex-shrink: 0; }
.sf-foot { width: 100%; }
.sf-foot .btn { gap: 8px; }
.sf-done { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 10px; padding: 16px 4px 10px; }
.sf-done-img { position: relative; width: 200px; aspect-ratio: 4 / 3; border-radius: 18px; overflow: hidden; box-shadow: 0 6px 18px rgba(29,54,95,.2); }
.sf-done-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-done-ok { position: absolute; right: 8px; bottom: 8px; width: 44px; height: 44px; border-radius: 22px; background: var(--teal-d); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 3px #fff; }
.sf-done h3 { margin: 8px 0 0; font-weight: 900; font-size: 1.375rem; color: var(--navy); }
.sf-done p { margin: 0; font-size: 0.9375rem; line-height: 1.5; color: var(--ink); max-width: 300px; }

/* Saison-Themen auch für Partner-Pins (app v5) */
.saison-halloween .ppin-c { box-shadow: 0 0 0 2px #F07B1A, 0 0 12px rgba(240,123,26,.5); filter: brightness(.88) saturate(.9); }
.saison-schnee .ppin { }
.saison-schnee .ppin::before { content: ''; position: absolute; z-index: 2; left: 50%; top: -4px; transform: translate(-50%, -50%); width: 26px; height: 9px; background: #fff; border-radius: 10px 10px 5px 5px; box-shadow: 0 1px 2px rgba(29,54,95,.35); }

/* Kürbisse auf der Karte (app v11, nur Halloween) – Größe je Zoom über --kg (saison.js), je Kürbis --s/--r/--d */
.leaflet-saisonDeko-pane.aus { display: none; }
.kuerbis-ico { background: none; border: 0; }
.kuerbis { position: absolute; left: 0; top: 0; width: calc(var(--kg, 28px) * var(--s, 1)); height: calc(var(--kg, 28px) * var(--s, 1));
  transform: translate(-50%, -80%) rotate(var(--r, 0deg)); }
.kuerbis::before { content: ''; position: absolute; inset: -55%; border-radius: 50%;
  background: radial-gradient(circle, rgba(255,170,60,.42), rgba(255,140,40,0) 62%); animation: kflacker 2.6s ease-in-out infinite; animation-delay: var(--d, 0s); }
.kuerbis svg { position: relative; display: block; width: 100%; height: 100%; filter: drop-shadow(0 2px 2px rgba(20,8,30,.5)); }
.kuerbis .kf { animation: kflacker 2.6s ease-in-out infinite; animation-delay: var(--d, 0s); }
@keyframes kflacker { 0%, 100% { opacity: .9; } 18% { opacity: .55; } 32% { opacity: 1; } 55% { opacity: .7; } 72% { opacity: .95; } }
@media (prefers-reduced-motion: reduce) { .kuerbis::before, .kuerbis .kf { animation: none; } }
