:root{--blue:#0099cb;--pink:#cd0067;--green:#7aa72d;--yellow:#ffcc33;--ink:#172126;--muted:#65747b;--line:#dce6e9;--soft:#f4f8f9;--shadow:0 16px 38px rgba(21,50,62,.16)}
*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#edf4f6;color:var(--ink)}
button,input,select,textarea{font:inherit}button{cursor:pointer}.app{height:100%;display:grid;grid-template-rows:auto 1fr;overflow:hidden}
.topbar{z-index:1200;display:flex;align-items:center;gap:11px;padding:8px 12px;background:rgba(255,255,255,.97);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}
.brand{display:flex;align-items:center;gap:9px;min-width:max-content}.brandIcon{width:42px;height:42px;border-radius:13px}.brandText{display:flex;flex-direction:column;line-height:1.05}.brandText strong{font-size:18px}.brandText small{font-size:11px;color:var(--muted);margin-top:4px}
.search{display:flex;gap:7px;flex:1;max-width:700px;margin-inline:auto}.search input{min-width:0;width:100%;border:1px solid var(--line);border-radius:13px;background:var(--soft);padding:11px 13px;outline:none}.search input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,153,203,.12)}
.topActions{display:flex;gap:7px}.button{border:0;border-radius:12px;padding:10px 13px;font-weight:800;background:#e9f0f2;color:var(--ink);white-space:nowrap}.button.primary{background:var(--blue);color:#fff}.button.accent{background:var(--pink);color:#fff}.button.wide{width:100%}.button:disabled{opacity:.55}
.main{position:relative;min-height:0}#map{height:100%;width:100%;background:#dfe8e6}.sheet{position:absolute;z-index:1000;top:14px;left:14px;width:min(430px,calc(100vw - 28px));max-height:calc(100% - 28px);display:flex;flex-direction:column;overflow:hidden;background:rgba(255,255,255,.97);backdrop-filter:blur(12px);border:1px solid rgba(220,230,233,.95);border-radius:20px;box-shadow:var(--shadow)}
.sheetHead{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:14px 14px 9px;border-bottom:1px solid var(--line)}.sheetHead h1{font-size:17px;margin:0 0 4px}.centerLabel{font-size:13px;font-weight:800;color:#006f91}.status{font-size:11px;color:var(--muted);margin-top:4px;min-height:15px}.headBtns{display:flex;gap:5px}
.roundButton{width:36px;height:36px;border:0;border-radius:11px;background:#eef4f6;font-size:18px;font-weight:900;color:#33444c}.roundButton.add{background:#e9f8fc;color:#007596}.hint{padding:8px 14px;background:#f7fbfc;border-bottom:1px solid var(--line);font-size:11px;line-height:1.45;color:#5b6a71}
.filters{padding:10px 14px;border-bottom:1px solid var(--line);display:grid;gap:9px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 9px;font-size:11px;font-weight:760;color:#44555c}.chip.active{background:#e9f8fc;border-color:#86d3e8;color:#006884}
.filterGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.field span,.modalField>span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;font-weight:850;color:var(--muted);margin:0 0 4px}.field select,.modalField select,.modalField input,.modalField textarea{width:100%;border:1px solid var(--line);border-radius:11px;padding:8px 9px;background:#fff;color:var(--ink);outline:none}
.checkline{display:flex;align-items:flex-start;gap:7px;font-size:11px;line-height:1.35;color:#4f6067}.checkline input{margin-top:1px;accent-color:var(--blue)}.results{overflow:auto;padding:10px;display:grid;gap:8px}
.card{border:1px solid var(--line);border-radius:15px;background:#fff;padding:10px;display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:start}.card:hover{border-color:#b6d9e3;box-shadow:0 8px 17px rgba(15,45,58,.07)}.cardIcon{width:39px;height:39px;border:0;border-radius:12px;background:#eff7f8;display:grid;place-items:center;font-size:20px}.card h2{font-size:13px;line-height:1.28;margin:0 0 5px}
.meta{display:flex;flex-wrap:wrap;gap:5px}.badge{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;background:#f0f4f5;font-size:10px;font-weight:760;color:#526168}.badge.free{background:#eef8e5;color:#52731c}.badge.price{background:#fff6d8;color:#7d5d00}.badge.unknown{background:#f4f0f3;color:#76626d}.badge.community{background:#fcebf4;color:#8d1450}.details{font-size:10px;color:#64737a;margin-top:6px;line-height:1.35}.ratingLine{font-size:10px;margin-top:5px;font-weight:800;color:#715600}
.cardActions{display:flex;flex-direction:column;gap:5px}.iconBtn{width:32px;height:30px;border:0;border-radius:9px;background:#f1f5f6;font-size:15px}.iconBtn.star.active{color:#d89e00;background:#fff7dd}.cardFooter{grid-column:2/4;display:flex;gap:6px;flex-wrap:wrap}.miniButton{border:0;border-radius:9px;background:#eaf4f7;padding:6px 8px;font-size:10px;font-weight:800;color:#245260}.miniButton.maps{background:#edf6e6;color:#47681a}.miniButton.review{background:#fff6d8;color:#785800}
.empty{text-align:center;padding:24px 14px;color:var(--muted);font-size:12px;line-height:1.5}.mapNotice{position:absolute;z-index:900;right:14px;top:14px;max-width:285px;background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:13px;box-shadow:0 8px 20px rgba(15,45,58,.10);padding:9px 11px;font-size:10px;line-height:1.4;color:#596a71}
.toast{position:fixed;z-index:5000;left:50%;bottom:23px;transform:translate(-50%,16px);opacity:0;pointer-events:none;background:#172126;color:#fff;padding:10px 14px;border-radius:999px;font-size:12px;box-shadow:var(--shadow);transition:.18s}.toast.show{opacity:1;transform:translate(-50%,0)}.offlineBadge{position:fixed;z-index:5100;right:12px;bottom:12px;background:#172126;color:white;padding:6px 9px;border-radius:999px;font-size:10px;font-weight:800}
.searchCenterMarker{width:28px;height:28px;border:4px solid white;border-radius:50%;background:#0099cb;box-shadow:0 3px 13px rgba(0,0,0,.32);position:relative}.searchCenterMarker:after{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:white;left:6px;top:6px}.poiMarker{width:32px;height:32px;border-radius:50% 50% 50% 11px;transform:rotate(-45deg);border:3px solid white;display:grid;place-items:center;box-shadow:0 3px 9px rgba(0,0,0,.23)}.poiMarker span{transform:rotate(45deg);font-size:15px}
.modal{position:fixed;inset:0;z-index:4500;background:rgba(10,25,32,.55);display:grid;place-items:center;padding:16px}.modal[hidden]{display:none}.modalCard{position:relative;width:min(560px,100%);max-height:min(88vh,760px);overflow:auto;background:#fff;border-radius:20px;padding:20px;box-shadow:0 22px 60px rgba(0,0,0,.24)}.modalCard h2{margin:0 36px 8px 0;font-size:20px}.modalIntro{font-size:12px;line-height:1.5;color:var(--muted);margin:0 0 15px}.modalClose{position:absolute;right:12px;top:12px;width:34px;height:34px;border:0;border-radius:10px;background:#eef3f4;font-size:23px}
.modalField{display:block;margin:0 0 12px}.modalField small{display:block;margin-top:5px;color:var(--muted);font-size:10px}.modalGrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.starPicker{display:flex;gap:2px}.starPicker button{border:0;background:transparent;padding:0 2px;font-size:34px;color:#c6cdd0}.starPicker button.active{color:#e1a800}.reviewSummary{background:#f7fafb;border:1px solid var(--line);border-radius:12px;padding:10px;margin:0 0 14px;font-size:12px}.reviewList{display:grid;gap:8px;margin-top:18px}.reviewItem{border-top:1px solid var(--line);padding-top:10px;font-size:11px;line-height:1.45}.reviewStars{color:#d89e00;font-weight:900}.reviewImage{display:block;max-width:100%;max-height:240px;margin-top:8px;border-radius:12px}
.leaflet-control-attribution{font-size:9px!important}.mobileOnly{display:none}
@media(max-width:820px){.topbar{gap:6px;padding:7px}.brandText{display:none}.brandIcon{width:39px;height:39px}.search{gap:5px}.search input{padding:10px 9px;font-size:14px}.button{padding:10px}.button span{display:none}}
@media(max-width:430px){.modalGrid{grid-template-columns:1fr}.sheet{max-height:65%}.leaflet-bottom.leaflet-right{bottom:66%}}

/* 0.5 mobile-first map UX */
.mobileFilterBtn{
  display:none;position:absolute;z-index:1300;right:12px;bottom:16px;
  width:48px;height:48px;border:0;border-radius:50%;background:#fff;color:#24353c;
  box-shadow:0 8px 22px rgba(15,45,58,.20);font-size:22px;font-weight:900;
}
.filterBackdrop{
  position:absolute;inset:0;z-index:1190;background:rgba(10,25,32,.22);
}
.filterBackdrop[hidden]{display:none}

@media(max-width:820px){
  .mobileFilterBtn{display:block}
  .sheet{
    display:none;
    top:72px;bottom:auto;left:10px;right:10px;width:auto;
    max-height:calc(100% - 92px);
    border-radius:18px;
    z-index:1250;
  }
  .sheet.mobileOpen{display:flex}
  .sheetHead{padding:12px 12px 8px}
  .sheetHead h1{font-size:15px}
  .hint{padding:7px 12px}
  .filters{padding:9px 12px}
  .results{max-height:42vh}
  .leaflet-bottom.leaflet-right{bottom:10px}
  .mapNotice{display:none}
}


/* 0.7 – minimalistischer Kopf + universelles Hamburger-Menü */
.topbar{
  min-height:58px;
  justify-content:space-between;
  padding:8px 14px 8px 18px;
}
.wordmark{
  font-size:28px;
  font-weight:950;
  letter-spacing:-.055em;
  line-height:1;
  color:var(--ink);
}
.wordmark::after{
  content:"";
  display:inline-block;
  width:.34em;
  height:.34em;
  margin-left:.16em;
  border-radius:50%;
  background:var(--yellow);
  vertical-align:.12em;
}
.menuBtn{
  width:44px;height:44px;border:0;border-radius:13px;background:#fff;
  color:var(--ink);font-size:24px;font-weight:900;
  box-shadow:0 4px 14px rgba(15,45,58,.12);
}
.menuTools{
  padding:11px 14px 0;
  display:grid;
  gap:8px;
}
.menuSearch{display:flex;gap:7px}
.menuSearch input{
  flex:1;min-width:0;border:1px solid var(--line);border-radius:12px;
  background:var(--soft);padding:10px 11px;outline:none;
}
.menuSearch input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,153,203,.10)}
.menuActions{display:flex;flex-wrap:wrap;gap:6px}
.menuActions .button{font-size:11px;padding:8px 10px}

/* Das Filter-/Suchfenster ist auf allen Geräten nur auf Wunsch sichtbar. */
.sheet{
  display:none;
  top:70px;left:auto;right:14px;bottom:auto;
  width:min(440px,calc(100vw - 28px));
  max-height:calc(100% - 84px);
  z-index:1260;
}
.sheet.menuOpen{display:flex}
.filterBackdrop{
  position:absolute;inset:0;z-index:1220;background:rgba(10,25,32,.18);
}
.filterBackdrop[hidden]{display:none}

/* alter Floating-Filter ist vollständig abgeschaltet */
.mobileFilterBtn{display:none!important}

@media(max-width:820px){
  .topbar{min-height:54px;padding:6px 8px 6px 14px}
  .wordmark{font-size:25px}
  .menuBtn{width:42px;height:42px}
  .sheet{
    display:none;
    top:62px;left:8px;right:8px;width:auto;
    max-height:calc(100% - 72px);
    border-radius:18px;
  }
  .sheet.menuOpen{display:flex}
  .results{max-height:36vh}
  .leaflet-bottom.leaflet-right{bottom:10px}
}

.menuBtn{position:relative}
.menuBtn[data-filters]:not([data-filters=""])::after{
  content:attr(data-filters);
  position:absolute;right:-3px;top:-3px;
  min-width:18px;height:18px;padding:0 4px;
  display:grid;place-items:center;
  border-radius:999px;background:var(--pink);color:#fff;
  border:2px solid #fff;font-size:10px;font-weight:900;line-height:1;
}


/* 1.3 – echtes Scrollen der Ergebnisliste auf Touch-Geräten */
.sheet{
  min-height:0;
}
.sheetHead,.menuTools,.hint,.filters{
  flex:0 0 auto;
}
.results{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  touch-action:pan-y;
  scrollbar-gutter:stable;
}

@media(max-width:820px){
  .sheet.menuOpen{
    height:calc(100dvh - 74px);
    max-height:calc(100dvh - 74px);
  }
  .results{
    max-height:none;
    min-height:120px;
    padding-bottom:calc(16px + env(safe-area-inset-bottom));
  }
}


/* 1.4 – mobile Menü: Ergebnisliste bekommt garantiert eigenen Platz */
@media(max-width:820px){
  .sheet.menuOpen{
    display:flex;
    flex-direction:column;
    height:calc(100dvh - 70px);
    max-height:calc(100dvh - 70px);
    overflow:hidden;
  }
  .sheetHead,.menuTools,.hint{
    flex:0 0 auto;
  }
  .filters{
    flex:0 1 auto;
    max-height:34dvh;
    overflow-y:auto;
    overflow-x:hidden;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
  }
  .results{
    flex:1 1 220px;
    min-height:180px;
    max-height:none!important;
    overflow-y:auto!important;
    overflow-x:hidden;
    -webkit-overflow-scrolling:touch;
    touch-action:pan-y;
    overscroll-behavior:contain;
  }
}
