.header-bg { background-color:#e6e6e6; }
.bg-gradient-soft {
  background: radial-gradient(1200px circle at 10% 10%, #f3f0ff 0%, transparent 60%),
              radial-gradient(900px circle at 90% 0%, #e6f2ff 0%, transparent 55%),
              #f7f8fb;
}
.logo-img { width:200px; height:auto; }
.bd-border { border-color:#ccc !important; }
.mt-10px { margin-top:10px; }

#map { height: 70vh; }
    .leaflet-popup-content { margin: 8px 12px; }
.disabled {color:#bbb !important;}
.txt-small {font-size:0.75rem;}
.popup-btn {background-color:#0078A8; color:#FFF !important; padding:8px !important; border-radius:8px !important;}

/* Popup-Typo & Layout */
.bd-pop { min-width: 280px; max-width: 360px; color: #111827; }
.bd-pop-title { font-weight: 800; font-size: 20px; line-height: 24px; margin: 0 0 4px 0; }
.bd-pop-desc { font-size: 14px; line-height: 20px; color: #374151; margin: 0 0 12px 0; }
.small { font-size: 11px; color: #6b7280; }

.bd-section { border-top: 1px solid #e5e7eb; padding-top: 10px; margin-top: 10px; }

.bd-row { display: flex; align-items: baseline; gap: 8px; margin: 4px 0; }
.bd-row .label { font-size: 12px; color: #6b7280; min-width: 120px; text-transform: uppercase; letter-spacing: .04em; }
.bd-row .icon { flex: 0 0 18px; display: inline-flex; align-items: center; justify-content: center; }
.bd-row .value { font-size: 13px; color: #111827; flex: 1 1 auto; }

/* CTA Button (einheitlich) */
.btn { display:inline-flex; align-items:center; gap:8px; padding:10px 12px; border-radius:10px; font-weight:700; text-decoration:none; }
.btn-primary { background:#111827; color:#fff; border:1px solid #111827; }
.btn-primary:hover { filter: brightness(1.1); }

/* ========= Beweg Dich – UI Basisthema ========= */
:root{
    --bd-bg: #ffffff;
    --bd-fg: #111827;            /* nahezu schwarz */
    --bd-muted: #6b7280;         /* grau */
    --bd-accent: #2563eb;        /* blau */
    --bd-accent-fg: #ffffff;     /* weiß auf blau */
    --bd-border: #e5e7eb;        /* hellgrau */
    --bd-shadow: 0 8px 24px rgba(0,0,0,.12);
    --bd-radius: 16px;
    --bd-radius-sm: 10px;
  }

body{
  font-family: 'Sora', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  background: radial-gradient(1200px circle at 10% 10%, #f3f0ff 0%, transparent 60%),
              radial-gradient(900px circle at 90% 0%, #e6f2ff 0%, transparent 55%),
              #f7f8fb;
}
  
  /* ========= Auth-Bar (oben über der Karte) ========= */
  .auth-bar{
    display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; justify-content:flex-end;
    padding:.5rem .75rem; background:var(--bd-bg); border:1px solid var(--bd-border);
    border-radius: var(--bd-radius-sm); box-shadow: var(--bd-shadow);
    position:relative; z-index: 400; /* über Leaflet Controls */
  }
  #auth-user{ color:var(--bd-muted); font-size:.95rem; }
  
  /* Buttons – generisch (greift auf Auth-Bar & Modals) */
  .auth-bar button,
  .modal-box button{
    appearance:none; border:1px solid var(--bd-border); background:#fff; color:var(--bd-fg);
    padding:.55rem .9rem; border-radius:12px; font-weight:600; cursor:pointer;
    transition: transform .08s ease, box-shadow .15s ease, background .15s ease;
  }
  .auth-bar button:hover,
  .modal-box button:hover{ box-shadow: var(--bd-shadow); transform: translateY(-1px); }
  .auth-bar button:active,
  .modal-box button:active{ transform: translateY(0); }
  
  .auth-bar #btn-login,
  .auth-bar #btn-register{ background:var(--bd-bg); }
  .auth-bar #btn-logout{ background:#fff; }
  
  button.primary{
    background: var(--bd-accent); color: var(--bd-accent-fg); border-color: transparent;
  }
  button.ghost{
    background: transparent; border-color: transparent; color: var(--bd-muted);
  }
  
  /* ========= Modal-Overlay + Box ========= */
  .modal{
    position: fixed; inset: 0; z-index: 10000; /* über allem, auch Leaflet-Popups */
    display: none; /* wird via JS auf display:block gesetzt */
    background: rgba(17,24,39,.45); /* dunkles Glas */
    backdrop-filter: blur(2px);
  }
  .modal .modal-box{
    position: absolute; left: 50%; top: 10%;
    transform: translateX(-50%);
    width: calc(100% - 2rem); max-width: 560px;
    background: var(--bd-bg); color: var(--bd-fg);
    border: 1px solid var(--bd-border); border-radius: var(--bd-radius);
    box-shadow: var(--bd-shadow);
    padding: 1rem;
    animation: bd-pop .18s ease-out;
  }
  @keyframes bd-pop{
    from{ transform: translateX(-50%) translateY(6px); opacity: 0; }
    to  { transform: translateX(-50%) translateY(0);  opacity: 1; }
  }
  @media (min-width: 640px){
    .modal .modal-box{ padding: 1.25rem 1.25rem; top: 12%; }
  }
  @media (min-width: 768px){
    .modal .modal-box{ padding: 1.5rem 1.75rem; top: 14%; }
  }
  
  /* ========= Überschriften & Hinweise ========= */
  .modal-box h3{
    margin: 0 0 .75rem 0; font-size: 1.25rem; line-height: 1.2;
  }
  .hint{ color: var(--bd-muted); font-size: .9rem; margin-top: .5rem; }
  
  /* ========= Formulargestaltung ========= */
  .modal-box form{ display: grid; gap: .75rem; }
  .modal-box label{ display:flex; flex-direction:column; gap:.35rem; font-weight:600; }
  .modal-box input{
    appearance:none; width:100%;
    border:1px solid var(--bd-border); border-radius:12px; background:#fff; color:var(--bd-fg);
    padding:.2rem .75rem; font: inherit;
  }
  .modal-box input:focus{
    outline: none; border-color: var(--bd-accent);
    box-shadow: 0 0 0 3px rgba(37,99,235,.15);
  }
  
  /* Zeilen-/Spalten-Layout innerhalb von Formularen (z. B. PLZ/Ort; Lat/Lon) */
  .modal-box .row{ display:flex; gap:.5rem; }
  .modal-box .row > label{ flex:1; }
  .modal-box .row > label.shrink{ flex:0 0 8rem; }
  
  /* Button-Zeile im Modal */
  .modal-box form .actions{ display:flex; gap:.5rem; justify-content:flex-end; margin-top:.25rem; }
  .modal-box form .actions > *{ min-width: 8rem; }
  
  /* ========= Kleine Quality-of-Life-Regeln ========= */
  .modal [data-close]{
    background: transparent; border-color: transparent; color: var(--bd-muted);
  }
  .modal [data-close]:hover{ color: var(--bd-fg); }
  
  @media (prefers-reduced-motion: reduce){
    .modal .modal-box{ animation: none; }
    .auth-bar button, .modal-box button{ transition: none; }
  }
  
  /* ========= Optional: Leaflet-Report-Button als Control ========= */
  .leaflet-control .bd-report-btn{
    display:inline-block; padding:.35rem .6rem; background:#fff; border:1px solid var(--bd-border);
    border-radius:10px; font-weight:700; cursor:pointer; box-shadow: var(--bd-shadow);
  }
  .leaflet-control .bd-report-btn:hover{ transform: translateY(-1px); }
  
  #form-report input.is-locked { background:#f4f4f4; pointer-events:none; opacity:.85; }

  .bd-pill {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    font-size: .875rem;
    line-height: 1;
    padding: .4rem .7rem;
    border-radius: 999px;
    background: rgba(15, 23, 42, .85); /* slate-900/85 */
    color: #fff;
    box-shadow: 0 2px 10px rgba(0,0,0,.15);
  }
  .bd-pill .dot {
    width: .5rem; height: .5rem; border-radius: 999px;
    background: currentColor; opacity: .9;
  }
  .leaflet-top.leaflet-left .leaflet-control.bd-pill-control {
    margin-top: 10px; /* etwas Abstand zu Zoom */
  }
  
  /* Utility */
.hidden { display: none !important; }

/* (Optional) Kompakte Badge-Optik, falls du sie außerhalb des Controls nutzen willst */
.badge {
  display:inline-flex; align-items:center; gap:.35rem;
  padding:.25rem .5rem; border-radius:9999px; font-weight:700;
  border:1px solid var(--bd-border); background:#fff; color:#111827;
}

/* Favorites (Herz) */
.btn-fav {
    display:inline-flex; align-items:center; gap:.4rem;
    padding:.35rem .6rem; border-radius:9999px;
    border:1px solid var(--bd-border, #e5e7eb);
    background:#fff; color:#ef4444; font-weight:700; cursor:pointer;
  }
  .btn-fav .icon { font-size: 1rem; line-height: 1; }
  .btn-fav[aria-pressed="true"] { 
    background:#fee2e2; border-color:#fecaca; color:#b91c1c;
  }
  .btn-fav:disabled { opacity:.6; cursor:default; }
  

:root {
  --sf-max-width: 1280px;
  --sf-bg: #fafaf7;
  --sf-card: #ffffff;
  --sf-text: #22312c;
  --sf-muted: #5d6b66;
  --sf-border: #e4e8e3;
  --sf-mint: #bdeddc;
  --sf-lavender: #d9d0f2;
  --sf-sand: #f4e7c5;
}
.sf-home { background: radial-gradient(1200px circle at 8% 10%, #f0f8f4 0%, transparent 55%), radial-gradient(800px circle at 90% 0%, #f2edff 0%, transparent 50%), var(--sf-bg); min-height: 100vh; }
.sf-wrap { max-width: var(--sf-max-width); margin: 0 auto; padding: 24px 16px 56px; }
.sf-topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:28px; }
.sf-logo { width: 190px; height: auto; }
.sf-nav { display:flex; gap:14px; flex-wrap:wrap; }
.sf-nav a { color: var(--sf-text); text-decoration:none; font-weight:600; }
.sf-nav a:hover { text-decoration:underline; }
.sf-eyebrow { letter-spacing:.12em; text-transform:uppercase; color:var(--sf-muted); font-size:12px; margin-bottom:8px; }
.sf-hero h1 { font-size: clamp(2rem, 4vw, 3.2rem); line-height:1.1; margin:0 0 10px; color:var(--sf-text); }
.sf-sub { color:var(--sf-muted); max-width: 52ch; }
.sf-actions { display:flex; gap:10px; flex-wrap:wrap; margin-top:20px; }
.sf-btn { border-radius: 999px; padding: 10px 18px; font-weight: 700; text-decoration:none; border:1px solid var(--sf-border); }
.sf-btn-primary { background: #3a6757; color:#fff; border-color:#3a6757; }
.sf-btn-soft { background: var(--sf-lavender); color: #2f2a45; border-color: #c8bee8; }
.sf-card { background: var(--sf-card); border:1px solid var(--sf-border); border-radius: 18px; padding: 20px; box-shadow: 0 10px 24px rgba(34,49,44,.06); }
.sf-card h2 { margin:0 0 8px; font-size:1.3rem; }
.sf-card p { color: var(--sf-muted); margin:0 0 10px; }
.sf-card ul { margin:0; padding-left: 20px; color:var(--sf-text); }
.sf-hero-rotator {
  position: relative;
  min-height: 312px;
  max-height: 312px;
  border-radius: 22px;
  overflow: hidden;
  border: 1px solid rgba(34,49,44,.12);
  background: #dfe9e4;
  box-shadow: 0 18px 38px rgba(34,49,44,.12);
}
.sf-hero-image {
  position: absolute;
  inset: 0;
  background-image: linear-gradient(90deg, rgba(8,21,24,.76), rgba(8,21,24,.62) 36%, rgba(8,21,24,.24) 62%, rgba(8,21,24,.06)), url('../images/Hero_Images.png');
  background-size: auto 330%;
  background-position: center calc(var(--sf-hero-frame, 0) * 50%);
  transition: background-position 650ms ease;
}
.sf-hero-copy {
  position: relative;
  z-index: 1;
  min-height: 312px;
  width: 100%;
  padding: 34px 44px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.sf-hero-copy .sf-eyebrow,
.sf-hero-copy h1,
.sf-hero-copy .sf-sub {
  color: #fff;
  text-shadow: 0 2px 14px rgba(0,0,0,.32);
}
.sf-hero-copy .sf-sub {
  color: rgba(255,255,255,.88);
}
.sf-hero-copy h1 {
  font-size: clamp(1.6rem, 3.2vw, 2.56rem);
}
.sf-hero-copy .sf-btn {
  background: rgba(255,255,255,.92);
  color: #20342f;
  border-color: rgba(255,255,255,.74);
}
.sf-hero-copy .sf-btn-primary {
  background: #bdeddc;
  color: #17342b;
  border-color: #bdeddc;
}
.sf-hero-dots {
  display: flex;
  gap: 8px;
  margin-top: 24px;
}
.sf-hero-search {
  display: flex;
  gap: 8px;
  width: min(100%, 520px);
  margin-top: 18px;
  padding: 6px;
  border-radius: 999px;
  background: rgba(255,255,255,.9);
  border: 1px solid rgba(255,255,255,.72);
  box-shadow: 0 10px 28px rgba(0,0,0,.18);
}
.sf-hero-search input {
  min-width: 0;
  flex: 1 1 auto;
  border: 0;
  background: transparent;
  padding: 9px 12px;
  color: #20342f;
  outline: none;
}
.sf-hero-search button {
  flex: 0 0 auto;
  border: 0;
  border-radius: 999px;
  padding: 9px 16px;
  font-weight: 700;
  color: #17342b;
  background: #bdeddc;
  cursor: pointer;
}
.sf-hero-chips {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 12px;
}
.sf-hero-chips a {
  text-decoration: none;
  color: #fff;
  font-weight: 700;
  font-size: 0.84rem;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.36);
  background: rgba(255,255,255,.16);
  backdrop-filter: blur(6px);
}
.sf-hero-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}
.sf-hero-stats span {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  min-height: 32px;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.34);
  background: rgba(255,255,255,.18);
  color: rgba(255,255,255,.9);
  font-size: 0.84rem;
  font-weight: 700;
  backdrop-filter: blur(6px);
}
.sf-hero-stats b {
  color: #fff;
  font-size: 1rem;
}
.sf-hero-dots button {
  width: 34px;
  height: 5px;
  border: 0;
  border-radius: 999px;
  background: rgba(255,255,255,.42);
  cursor: pointer;
}
.sf-hero-dots button.is-active {
  background: #bdeddc;
}
@media (max-width: 900px) {
  .sf-logo{ width:150px; }
  .sf-hero-rotator {
    min-height: 416px;
    max-height: 416px;
  }
  .sf-hero-image {
    background-size: auto 330%;
    background-position: center calc(var(--sf-hero-frame, 0) * 50%);
  }
  .sf-hero-copy {
    width: 100%;
    min-height: 416px;
    padding: 210px 20px 24px;
    justify-content: flex-end;
    background: linear-gradient(180deg, rgba(0,0,0,0) 35%, rgba(8,21,24,.78) 78%);
  }
  .sf-hero h1 {
    font-size: 2rem;
  }
  .sf-hero-search {
    border-radius: 16px;
  }
  .sf-hero-search button {
    padding-left: 12px;
    padding-right: 12px;
  }
}

.sf-global-header {
  position: sticky;
  top: 0;
  z-index: 500;
  background: rgba(250, 250, 247, 0.92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--sf-border);
}
.sf-global-header-inner {
  max-width: var(--sf-max-width);
  margin: 0 auto;
  padding: 10px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.sf-brand {
  display: inline-flex;
  align-items: center;
}
.sf-brand-logo {
  width: 190px;
  height: 58px;
  object-fit: cover;
  object-position: left center;
}
.sf-main-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  flex: 1 1 auto;
}
.sf-main-nav a {
  color: var(--sf-text);
  text-decoration: none;
  font-weight: 600;
  padding: 8px 12px;
  border-radius: 999px;
}
.sf-main-nav a:hover {
  background: #eef3ef;
}
.sf-main-nav a.is-active {
  background: var(--sf-mint);
}
.sf-home .sf-hero,
.klp-page,
.min-h-screen.flex.flex-col > main {
  padding-top: 8px;
}

.sf-page-head {
  padding-top: 2px;
  padding-bottom: 2px;
}
.sf-page-head h1 {
  letter-spacing: -0.01em;
}
.sf-page-shell {
  max-width: var(--sf-max-width);
  margin-left: auto;
  margin-right: auto;
  padding: 1.5rem 1rem;
}

.sf-theme-bg {
  background: radial-gradient(1200px circle at 8% 10%, #f0f8f4 0%, transparent 55%),
              radial-gradient(800px circle at 90% 0%, #f2edff 0%, transparent 50%),
              var(--sf-bg);
}

.klp-shell,
.sf-page-shell,
.min-h-screen.flex.flex-col > main > .max-w-6xl,
.min-h-screen.flex.flex-col .max-w-6xl,
.sf-wrap,
.sf-global-header-inner {
  max-width: var(--sf-max-width);
}


.sf-auth-nav {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.sf-auth-nav a {
  color: var(--sf-text);
  text-decoration: none;
  font-weight: 600;
  padding: 8px 12px;
  border-radius: 999px;
}
.sf-auth-nav a:hover { background: #eef3ef; }
.sf-auth-user {
  color: var(--sf-muted);
  font-size: 0.85rem;
  margin-right: 4px;
}
.sf-map-section { padding: 8px 16px 40px; }
.sf-map-head h2, .sf-discover h2 { font-size: 1.6rem; margin: 0 0 6px; }
.sf-home-map {
  width: 100%;
  height: 52vh;
  min-height: 360px;
  border: 1px solid var(--sf-border);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 10px 24px rgba(34,49,44,.06);
}
.sf-dynamic-cards {
  margin-top: 14px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.sf-module-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.sf-module-head h3 {
  margin: 0;
  font-size: 1.08rem;
}
.sf-module-head a,
.sf-mini-card a {
  color: #335f50;
  font-weight: 700;
  text-decoration: none;
}
.sf-module-head a:hover,
.sf-mini-card a:hover {
  text-decoration: underline;
}
.sf-mini-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin-top: 10px;
}
.sf-mini-card {
  border: 1px solid var(--sf-border);
  border-radius: 12px;
  padding: 10px;
  background: #fff;
}
.sf-mini-card h4 { margin: 0 0 4px; font-size: 0.98rem; }
.sf-mini-card p { margin: 0 0 8px; color: var(--sf-muted); font-size: 0.86rem; }
.sf-discover { padding: 0 16px 56px; }
.sf-discover-sub {
  margin: 0 0 18px;
}
.sf-discover-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit,minmax(220px,1fr));
  gap: 12px;
}
.sf-discover-grid .sf-card h3 { margin: 0 0 6px; font-size: 1.1rem; }
.sf-topic-card {
  text-decoration: none;
  color: var(--sf-text);
  min-height: 172px;
  border-radius: 16px;
  box-shadow: none;
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
}
.sf-topic-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 28px rgba(34,49,44,.1);
  border-color: #c0c8c3;
}
.sf-topic-card span {
  display: inline-flex;
  width: fit-content;
  margin-bottom: 14px;
  padding: 5px 9px;
  border-radius: 999px;
  background: rgba(255,255,255,.62);
  color: #335f50;
  font-weight: 700;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.sf-topic-card p {
  flex: 1 1 auto;
  line-height: 1.45;
}
.sf-topic-card strong {
  color: #335f50;
  font-size: 0.9rem;
}
.sf-topic-move { background: #bdeddc; }
.sf-topic-culture { background: #d9d0f2; }
.sf-topic-family { background: #f4e7c5; }
.sf-topic-nature { background: #a8d8c4; }
.sf-topic-water { background: #bfddf3; }
.sf-topic-events { background: #f7b7a3; }
@media (max-width: 960px) {
  .sf-global-header-inner { align-items: flex-start; }
  .sf-dynamic-cards { grid-template-columns: 1fr; }
  .sf-discover-grid { grid-template-columns: 1fr; }
}

.sf-theme-panel {
  background: #fff;
  border: 1px solid var(--sf-border);
  border-radius: 14px;
  padding: 16px;
  box-shadow: 0 10px 24px rgba(34,49,44,.06);
}
.sf-theme-map-card {
  position: relative;
  background: #fff;
  border: 1px solid var(--sf-border);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 10px 24px rgba(34,49,44,.06);
}
.sf-theme-map {
  width: 100%;
  height: 66vh;
  min-height: 420px;
  background: #eef3ef;
}
.sf-icon-btn {
  flex: 0 0 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  background: #fff;
  color: var(--sf-text);
  font-size: 16px;
  line-height: 1;
}
.sf-theme-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.sf-theme-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--sf-muted);
  font-size: 12px;
}
.sf-theme-legend-item .sf-theme-marker {
  width: 10px;
  height: 10px;
  box-shadow: none;
}
.sf-theme-results {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.sf-theme-result {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--sf-border);
  border-radius: 10px;
  padding: 10px;
  background: #fbfcfb;
}
.sf-theme-result-main {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  width: 100%;
  border: 0;
  background: transparent;
  padding: 0;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.sf-theme-result-main .sf-theme-marker {
  margin-top: 2px;
}
.sf-theme-result-copy {
  min-width: 0;
  display: grid;
  gap: 2px;
}
.sf-theme-result-title {
  color: var(--sf-text);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.sf-theme-result-meta {
  color: var(--sf-muted);
  font-size: 12px;
  line-height: 1.35;
}
.sf-theme-result-link {
  color: #315f50;
  font-size: 12px;
  font-weight: 700;
  text-decoration: none;
}
.sf-theme-result-link:hover {
  text-decoration: underline;
}

.sf-auth-gate {
  border: 1px solid #dbe5dd;
  border-radius: 12px;
  background: #f6faf7;
  padding: 14px;
}
.sf-auth-gate h2 {
  margin: 0 0 4px;
  font-size: 15px;
  font-weight: 700;
  color: var(--sf-text);
}
.sf-auth-gate p {
  margin: 0;
  color: var(--sf-muted);
  font-size: 13px;
}
.sf-auth-gate-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 10px;
}
.sf-auth-gate-actions a {
  display: inline-flex;
  border-radius: 999px;
  padding: 7px 12px;
  background: #315f50;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
}
.sf-auth-gate-actions a + a {
  background: #fff;
  color: var(--sf-text);
  border: 1px solid var(--sf-border);
}
.sf-map-gate {
  position: absolute;
  inset: auto 16px 16px 16px;
  z-index: 450;
  display: grid;
  gap: 2px;
  border: 1px solid var(--sf-border);
  border-radius: 12px;
  background: rgba(255,255,255,.95);
  padding: 12px;
  box-shadow: 0 10px 24px rgba(34,49,44,.08);
  color: var(--sf-text);
}
.sf-map-gate span {
  color: var(--sf-muted);
  font-size: 13px;
}

.sf-detail-section {
  background: rgba(255,255,255,.94);
  border: 1px solid var(--sf-border);
  border-radius: 16px;
  padding: 22px;
  box-shadow: 0 10px 24px rgba(34,49,44,.06);
}
.sf-related-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.sf-related-card {
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  border: 1px solid #d9e2db;
  border-radius: 12px;
  background: #f8fbf8;
  padding: 10px;
  color: var(--sf-text);
  text-decoration: none;
}
.sf-related-card:hover {
  background: #eef5f0;
  border-color: #c9d8cf;
}
.sf-related-thumb {
  width: 74px;
  height: 74px;
  border-radius: 10px;
  background: #e8f0ea;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.sf-related-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.sf-related-thumb img[src$=".svg"] {
  width: 38px;
  height: 38px;
  object-fit: contain;
}
.sf-related-copy {
  min-width: 0;
}
.sf-related-title {
  font-size: 14px;
  font-weight: 800;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.sf-related-meta {
  margin-top: 2px;
  color: var(--sf-muted);
  font-size: 12px;
  line-height: 1.35;
}
.sf-related-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.sf-related-tags span {
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--sf-border);
  padding: 3px 8px;
  font-size: 11px;
  color: var(--sf-muted);
}
.sf-related-link {
  margin-top: 8px;
  color: #315f50;
  font-size: 12px;
  font-weight: 800;
}

.sf-marker-wrap {
  background: transparent !important;
  border: 0 !important;
}
.sf-cluster-wrap {
  background: transparent !important;
  border: 0 !important;
}
.sf-theme-cluster {
  width: 100%;
  height: 100%;
  border: 2px solid #fff;
  border-radius: 999px;
  background: radial-gradient(circle at 35% 30%, #dff8ef, #3a6757);
  color: #fff;
  box-shadow: 0 10px 24px rgba(15, 23, 42, .28), 0 0 0 1px rgba(34, 49, 44, .18);
  cursor: pointer;
  display: grid;
  font-size: 12px;
  font-weight: 900;
  line-height: 1;
  place-items: center;
}
.sf-theme-cluster:hover {
  transform: scale(1.06);
}
.sf-theme-marker {
  display: block;
  width: 14px;
  height: 14px;
  border-radius: 999px;
  border: 2px solid #fff;
  box-shadow: 0 0 0 1px rgba(15, 23, 42, .25), 0 4px 10px rgba(15, 23, 42, .25);
}
.sf-marker-family,
.sf-marker-familie { background: #f59e0b; }
.sf-marker-nature,
.sf-marker-natur { background: #16a34a; }
.sf-marker-water,
.sf-marker-wasser { background: #0ea5e9; }
.sf-marker-cat-spielplatz { background: #f59e0b; }
.sf-marker-cat-wasserspielplatz { background: #f97316; }
.sf-marker-cat-parks { background: #22c55e; }
.sf-marker-cat-picknickplaetze { background: #84cc16; }
.sf-marker-cat-badestellen { background: #0ea5e9; }
.sf-marker-cat-badeseen { background: #0284c7; }
.sf-marker-cat-sup-einstiege { background: #06b6d4; }

.sf-sheet[hidden] { display: none !important; }
.sf-sheet {
  position: fixed;
  inset: 0;
  z-index: 1500;
}
.sf-sheet-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, .4);
}
.sf-sheet-panel {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  background: #fff;
  border-top-left-radius: 14px;
  border-top-right-radius: 14px;
  box-shadow: 0 -8px 28px rgba(15, 23, 42, .25);
  padding: 14px;
  min-height: 180px;
}
.sf-sheet-close {
  position: absolute;
  top: 10px;
  right: 12px;
  border: 0;
  background: transparent;
  font-size: 24px;
  color: #334155;
  line-height: 1;
}
.sf-sheet-body { padding-right: 22px; }

.sf-site-footer {
  color: #22312c;
}
.sf-site-footer-inner,
.sf-site-footer-bottom {
  max-width: var(--sf-max-width);
  margin: 0 auto;
  padding-left: 16px;
  padding-right: 16px;
}
.sf-site-footer-inner {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) repeat(3, minmax(150px, .55fr));
  gap: 28px;
  padding-top: 56px;
  padding-bottom: 34px;
  font-size: 14px;
}
.sf-site-footer-brand p {
  color: #5d6b66;
  max-width: 58ch;
}
.sf-site-footer-source {
  margin-top: 14px;
  font-size: 12px;
}
.sf-site-footer-col {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sf-site-footer-col a {
  color: #315f50;
  text-decoration: none;
}
.sf-site-footer-col a:hover {
  text-decoration: underline;
}
.sf-site-footer-bottom {
  padding-bottom: 32px;
  color: #64748b;
  font-size: 12px;
}
@media (min-width: 901px) {
  .sf-sheet { display: none !important; }
}
@media (max-width: 860px) {
  .sf-site-footer-inner {
    grid-template-columns: 1fr 1fr;
  }
  .sf-site-footer-brand {
    grid-column: 1 / -1;
  }
}
@media (max-width: 560px) {
  .sf-site-footer-inner {
    grid-template-columns: 1fr;
    gap: 22px;
  }
}
@media (max-width: 900px) {
  .sf-theme-map {
    height: 56vh;
    min-height: 340px;
  }
  .sf-theme-results {
    grid-template-columns: 1fr;
  }
  .sf-related-grid {
    grid-template-columns: 1fr;
  }
}
