/* =========================
   Fonts & Tokens
   ========================= */
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@300;400;600;700;900&display=swap');

:root{
  --bg: #f4f5f7;
  --card-bg: #ffffff;
  --txt: #111827;
  --muted: #6b7280;
  --brand: #e63946;
  --brand-700: #c1121f;
  --brand-soft: #fff0f1;
  --border: #e5e7eb;
  --accent: #e63946;

  --shadow: 0 1px 4px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.08);
  --radius: 18px;

  --btn-max-w: 420px;
  --btn-w: 92vw;
  --btn-h-info: 68px;
  --btn-font: clamp(14px, 1.8vw, 18px);
  --btn-icon: clamp(32px, 5.2vw, 40px);

  --sheet-radius: 18px 18px 0 0;
  --sheet-elev: 0 16px 40px rgba(0,0,0,.20);
  --sheet-backdrop: rgba(0,0,0,.45);

  --safe-bottom: env(safe-area-inset-bottom, 0px);
}
@media (prefers-color-scheme: dark){
  :root{
    --bg: #0f141a;
    --card-bg: #1a2030;
    --txt: #f0f4f8;
    --muted: #8898aa;
    --brand: #e63946;
    --brand-700: #c1121f;
    --brand-soft: rgba(230,57,70,.15);
    --border: rgba(255,255,255,.1);
    --shadow: 0 1px 4px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.4);
    --sheet-backdrop: rgba(0,0,0,.6);
  }
}

/* Base */
*{ box-sizing:border-box; }
html,body{ height:100%; margin:0; }
body{
  font-family:'Lato', system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background:var(--bg);
  color:var(--txt);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  /* Platz für die feste untere Leiste */
  padding-bottom: calc(80px + var(--safe-bottom));
}

/* =========================
   Layout Container
   ========================= */
.page-container{
  max-width: 960px;
  margin: 0 auto;
  padding: 0 12px 24px;
}

/* Header-Bild – nur unten abgerundet */
.front-image_3 {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  object-position: center;
  border-radius: 0 0 24px 24px;
  margin: 0 0 16px;
}

/* Card */
.actions-card{
  width: 100%;
  margin: 0 auto 28px;
  background: var(--card-bg);
  color: var(--txt);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 18px 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

/* =========================
   Drei Hauptbuttons – Icon groß, Text kleiner, Beschreibung auf Hover
   ========================= */
.buttons{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap:12px;
  padding:0 4px;
}

/* Grundstil für die Buttons oben */
.buttons > button{
  border:none;
  background:transparent;
  color:var(--txt);
  box-shadow:none;
  cursor:pointer;
  padding:8px 4px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  text-align:center;
  transition:
    transform .08s ease,
    color .18s ease,
    opacity .18s ease;
}
.buttons > button:hover{
  opacity:0.9;
}
.buttons > button:active{
  transform:translateY(1px) scale(0.97);
}

/* Drei großen */
.maerkte_angebote,
.kategorien,
.rezepte_ernaehrung{
  min-height: 120px;
}

/* Icon – groß */
.modal-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  margin-bottom:6px;
}
.modal-icon ion-icon{
  font-size: var(--btn-icon);
  color: var(--brand);
}

/* Titel + Beschreibung – kleiner */
.modal-texts{
  display:flex;
  flex-direction:column;
  gap:2px;
  text-align:center;
}

/* Titel etwas kleiner */
.modal-texts h3{
  margin:0;
  font-size:0.85rem;
  font-weight:800;
}

/* Kleine Texte: noch kleiner, nur auf Hover sichtbar */
.modal-texts p{
  margin:0;
  font-size:0.7rem;
  color:var(--muted);
  max-height:0;
  opacity:0;
  overflow:hidden;
  transition:max-height .18s ease, opacity .18s ease;
}

/* Beim Hover einblenden */
.maerkte_angebote:hover .modal-texts p,
.kategorien:hover .modal-texts p,
.rezepte_ernaehrung:hover .modal-texts p{
  max-height:40px;
  opacity:1;
}

/* =========================
   Info-Button – länglich, Icon NEBEN Text, mittig im Grid
   ========================= */
.info{
  grid-column: 1 / -1;
  justify-self: center;                  /* Button selbst mittig in der Reihe */
  display: flex;
  flex-direction: row;                   /* Icon links, Text rechts */
  align-items: center;
  justify-content: flex-start;           /* Inhalt startet links im Button */
  gap: 10px;
  width: min(var(--btn-w), var(--btn-max-w));
  height: var(--btn-h-info);
  margin: 4px 0 0;
  padding: 0 18px;

  border: none;
  background: color-mix(in oklab, #DAE3F9 40%, var(--card-bg));
  color: var(--txt);
  border-radius: 999px;
  box-shadow: var(--shadow);
  cursor: pointer;
  font-size: clamp(14px, 1.6vw, 16px);
  font-weight: 700;
  text-align: left;                      /* Text linksbündig */
  transition:
    transform .08s ease,
    filter .18s ease,
    box-shadow .18s ease;
}
.info:hover{
  filter: brightness(1.03);
  box-shadow: 0 12px 26px rgba(0,0,0,.12);
}
.info:active{
  transform: translateY(1px) scale(0.98);
  box-shadow: var(--shadow);
}
.info-icon{
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
/* Icon-Größe gekoppelt an globale Icon-Größe */
.info-icon ion-icon{
  font-size: calc(var(--btn-icon) * 0.8);
  color: #b91c1c;
}
.info-text{
  white-space: nowrap;
}

/* Fokus */
:where(a, button, .category-label, .modal-card):focus-visible{
  outline: 2px solid var(--brand);
  outline-offset: 3px;
  box-shadow: none;
}

/* =========================
   Untere Leiste – fester Bottom-Bar (Statusleiste unten)
   ========================= */
.container{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  height: calc(72px + var(--safe-bottom));
  padding: 0 18px calc(8px + var(--safe-bottom));
  display:flex;
  flex-direction:row;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  background: color-mix(in oklab, var(--card-bg) 85%, var(--bg));
  border-top: 1px solid rgba(0,0,0,.06);
  box-shadow: 0 -6px 18px rgba(0,0,0,.08);
  z-index: 900;
}

.container button{
  flex:1 1 0;
  min-width:0;
  height: 48px;
  border:none;
  background-color: transparent;
  color: #66707a;
  font: 600 clamp(13px, 1.4vw, 15px)/1 'Lato', system-ui, sans-serif;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  cursor:pointer;
  padding: 0 8px;
  text-align:left;
  border-radius:14px;
  transition: color .2s ease, opacity .2s ease, background .2s ease;
}
.container button span{
  white-space:nowrap;
}
.container button:hover{
  color: var(--brand);
  background: rgba(0,0,0,.04);
  opacity:.95;
}
.container button ion-icon{
  font-size: 22px;
}

/* =========================
   Modals (Basis)
   ========================= */
.modal{
  position:fixed; inset:0;
  background: var(--sheet-backdrop);
  z-index:1000;
  overflow:auto;
  display:none;
}
.modal[aria-hidden="false"], .modal.open{ display:block; }

.modal-content{
  width: min(860px, 94vw);
  margin: min(10vh, 80px) auto;
  background: var(--card-bg);
  color: var(--txt);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 20px 16px;
  position: relative;
}
.modal-content h2{
  margin: 0 0 8px;
  font-size: clamp(1.05rem, 0.9rem + 0.6vw, 1.35rem);
  font-weight:800;
  text-align:center;
}
.modal-close{
  position:absolute;
  top:10px;
  right:12px;
  border:none;
  background:transparent;
  color: rgb(104, 2, 2);
  font-size:24px;
  line-height:1;
  padding:4px 8px;
  border-radius:8px;
  cursor:pointer;
  transition: background .2s ease, transform .1s ease;
}
.modal-close:hover{ background: rgba(0,0,0,.06); }
.modal-close:active{ transform: scale(.98); }

/* =========================
   Kategorien-Auswahl (Kacheln)
   ========================= */
#categoryForm{
  display:grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 12px;
  margin-top: 10px;
}
.category-option{ position:relative; }
.category-checkbox{ display:none; }
.category-label{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:10px;
  background: rgba(0,0,0,.02);
  border: 1px solid transparent;
  border-radius: 12px;
  padding: 0;
  height: 136px;
  overflow: hidden;
  cursor: pointer;
  transition: background .2s ease, border-color .2s ease;
}
.category-label:hover{ background: rgba(0,0,0,.04); }
.category-icon{
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:10px;
}

/* Chip unten links (Name + Anzahl) */
.category-text{
  position:absolute;
  left:8px;
  bottom:8px;
  background: rgba(0,0,0,.5);
  color:#fff;
  font-weight:700;
  font-size:.86rem;
  padding:4px 8px;
  border-radius:8px;
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.category-text .category-name{
  white-space:nowrap;
  font-weight:700;
}
.category-text .category-count{
  display:inline-block;
  min-width:22px;
  height:20px;
  line-height:20px;
  padding:0 6px;
  border-radius:999px;
  background: rgba(255,255,255,.18);
  border: 1px solid rgba(255,255,255,.36);
  color:#fff;
  font-weight:800;
  font-size:.78rem;
}

.category-checkbox:checked + .category-label{
  border-color: var(--brand);
  background: color-mix(in oklab, var(--brand) 8%, var(--card-bg));
}

/* =========================
   Bottom-Sheet Verhalten
   ========================= */
@media (max-width: 600px){
  #marketsModal[data-bottomsheet],
  #categoryResultsModal[data-bottomsheet]{ padding:0; }

  #marketsModal[data-bottomsheet] .modal-content,
  #categoryResultsModal[data-bottomsheet] .modal-content{
    width:100%;
    margin:0;
    padding:14px 14px calc(18px + var(--safe-bottom));
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    border-radius: var(--sheet-radius);
    box-shadow: var(--sheet-elev);
    transform: translateY(100%);
    transition: transform .28s ease;
    will-change: transform;
    touch-action: none;
    max-height: 92vh;
    overflow: auto;
  }
  #marketsModal.open .modal-content,
  #categoryResultsModal.open .modal-content{
    transform: translateY(0);
  }

  .sheet-grabber{
    width:40px;
    height:4px;
    border-radius:999px;
    background: rgba(0,0,0,.18);
    margin:6px auto 10px;
  }

  .container{
    padding: 0 14px calc(8px + var(--safe-bottom));
    gap:14px;
  }
}

/* Dark-Mode Feinheiten */
@media (prefers-color-scheme: dark){
  .category-text .category-count{
    background: rgba(255,255,255,.22);
    border-color: rgba(255,255,255,.38);
  }
}

/* =========================
   Leaflet Maps (Märkte + Kategorien)
   ========================= */
.leaflet-wrap{
  width: 100%;
  margin-top: 8px;
}

.leaflet-map{
  width: 100%;
  height: 360px;
  border-radius: 12px;
  overflow: hidden;
  background: rgba(0,0,0,.04);
  box-shadow: var(--shadow);
}

.leaflet-container{
  width: 100%;
  height: 100%;
  border-radius: 12px;
}

.map-error{
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(138, 6, 6, .08);
  border: 1px solid rgba(138, 6, 6, .18);
  color: var(--txt);
  font-weight: 700;
}

.leaflet-popup-content{
  margin: 10px 12px;
  font-family: inherit;
}
.leaflet-popup-content h3{
  margin: 0 0 6px;
  font-size: 1rem;
}
.leaflet-popup-content p{
  margin: 0 0 10px;
  font-size: .9rem;
  color: var(--muted);
}
.leaflet-popup-content .popup-actions{
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.leaflet-popup-content .popup-actions a{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 10px;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 800;
  font-size: .85rem;
  background: color-mix(in oklab, var(--brand) 14%, var(--card-bg));
  color: var(--brand-700);
  border: 1px solid color-mix(in oklab, var(--brand) 18%, transparent);
}
.leaflet-popup-content .popup-actions a:hover{ opacity: .92; }

/* ── Tag-Chip Fix (Marriage Filter Icons) ── */
#categoryResultsModal .standortsuche .tag-chip {
  width: 34px !important;
  height: 34px !important;
  border-radius: 10px !important;
  background: rgba(255,255,255,0.06) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: var(--muted) !important;
  box-shadow: none !important;
  font-size: 13px !important;
}
#categoryResultsModal .standortsuche .tag-chip i {
  font-size: 13px !important;
  color: var(--muted) !important;
}
#categoryResultsModal .standortsuche .tag-chip::after,
#categoryResultsModal .standortsuche .tag-chip::before {
  display: none !important;
}
#categoryResultsModal .standortsuche .tag-chip:hover {
  background: rgba(230,57,70,0.15) !important;
  border-color: rgba(230,57,70,0.3) !important;
  color: var(--brand) !important;
}
#categoryResultsModal .standortsuche .tag-chip.is-active,
#categoryResultsModal .standortsuche .tag-chip[aria-pressed="true"] {
  background: rgba(230,57,70,0.15) !important;
  border-color: var(--brand) !important;
  color: var(--brand) !important;
}
#categoryResultsModal .standortsuche .tag-chip.is-active i,
#categoryResultsModal .standortsuche .tag-chip[aria-pressed="true"] i {
  color: var(--brand) !important;
}
@media (prefers-color-scheme: light) {
  #categoryResultsModal .standortsuche .tag-chip {
    background: rgba(0,0,0,0.04) !important;
    border: 1px solid rgba(0,0,0,0.08) !important;
    color: #6b7280 !important;
  }
}
