:root {
  --panel: rgba(19, 22, 18, .96);
  --panel-2: #20271f;
  --text: #f5f2e7;
  --muted: #bdb8a8;
  --line: rgba(255,255,255,.12);
  --accent: #e7c56b;
  --accent-2: #85bdaa;
  --danger: #d77265;
  --shadow: 0 16px 45px rgba(0,0,0,.34);
}

* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background:#0b0d0b; color:var(--text); }
button, input { font: inherit; }
button { cursor: pointer; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

.zc-map-app { display:grid; grid-template-columns: 350px minmax(0,1fr); height:100dvh; overflow:hidden; }
.zc-sidebar { position:relative; z-index:1000; background:var(--panel); border-right:1px solid var(--line); padding:22px; overflow:auto; box-shadow:var(--shadow); }
.zc-sidebar__header { display:flex; gap:12px; align-items:flex-start; justify-content:space-between; }
.zc-sidebar h1 { font-family: Georgia, "Times New Roman", serif; font-size:25px; line-height:1.12; margin:3px 0 18px; font-weight:700; }
.zc-eyebrow { color:var(--accent); text-transform:uppercase; letter-spacing:.13em; font-size:11px; font-weight:800; }
.zc-icon-btn { display:none; width:36px; height:36px; border:1px solid var(--line); border-radius:9px; background:transparent; color:var(--text); font-size:26px; line-height:1; }

.zc-search input { width:100%; border:1px solid var(--line); background:#111511; color:var(--text); border-radius:10px; padding:12px 13px; outline:none; }
.zc-search input:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(231,197,107,.14); }

.zc-progress { margin:15px 0; padding:13px; background:var(--panel-2); border:1px solid var(--line); border-radius:10px; display:grid; grid-template-columns:1fr auto; gap:8px; font-size:13px; }
.zc-progress span { color:var(--muted); }
.zc-progress__bar { grid-column:1/-1; height:6px; background:#0d100d; border-radius:999px; overflow:hidden; }
.zc-progress__bar i { display:block; width:0; height:100%; background:var(--accent); transition:width .2s ease; }

.zc-tools { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.zc-tools button, .zc-toolbar-btn { border:1px solid var(--line); background:#171c17; color:var(--text); border-radius:9px; padding:9px 10px; }
.zc-tools button:hover, .zc-toolbar-btn:hover { border-color:rgba(231,197,107,.6); }
.zc-only-open { display:flex; gap:9px; align-items:center; color:var(--muted); font-size:13px; margin:14px 0; }

.zc-categories { border-top:1px solid var(--line); padding-top:6px; }
.zc-category { display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:center; padding:10px 2px; border-bottom:1px solid rgba(255,255,255,.055); }
.zc-category input { accent-color:var(--accent); }
.zc-category__name { display:flex; gap:9px; align-items:center; font-size:14px; min-width:0; }
.zc-category__icon { width:24px; height:24px; flex:0 0 24px; display:grid; place-items:center; border-radius:7px; background:rgba(7,10,9,.72); border:1px solid color-mix(in srgb, var(--marker-color) 72%, rgba(255,255,255,.18)); box-shadow:0 2px 7px rgba(0,0,0,.24); overflow:hidden; }
.zc-category__icon .zc-icon-sprite, .zc-category__icon .zc-icon-fallback { width:19px; height:19px; display:grid; place-items:center; color:#fff; font-size:11px; font-style:normal; font-weight:800; line-height:1; }
.zc-category__icon img { display:block; width:100%; height:100%; object-fit:contain; filter:drop-shadow(0 1px 1px rgba(0,0,0,.55)); }
.zc-category__icon b { width:100%; height:100%; place-items:center; color:#fff; font-size:10px; line-height:1; }
.zc-dot { width:9px; height:9px; border-radius:50%; background:var(--accent); box-shadow:0 0 0 2px rgba(255,255,255,.08); }
.zc-category__count { color:var(--muted); font-variant-numeric:tabular-nums; font-size:12px; }
.zc-sidebar__footer { color:var(--muted); font-size:11px; line-height:1.45; margin-top:16px; }

.zc-map-wrap { position:relative; min-width:0; background:#080a08; }
.zc-map { position:absolute; inset:0; background:#080a08; }
.zc-map-toolbar { position:absolute; z-index:700; left:14px; top:14px; display:flex; gap:8px; pointer-events:none; }
.zc-toolbar-btn { pointer-events:auto; box-shadow:0 7px 20px rgba(0,0,0,.26); }
#openSidebar { display:none; }

.zc-marker { width:30px; height:30px; border-radius:50% 50% 50% 8px; transform:rotate(-45deg); border:2px solid rgba(255,255,255,.92); box-shadow:0 3px 9px rgba(0,0,0,.5); display:grid; place-items:center; transition:opacity .16s ease, filter .16s ease, transform .16s ease; }
.zc-marker > span { transform:rotate(45deg); font-size:13px; line-height:1; color:#fff; text-shadow:0 1px 2px #000; }
.zc-marker.has-image { width:31px; height:31px; transform:none; border-radius:50%; background:rgba(10,15,15,.9) !important; border-color:color-mix(in srgb, var(--marker-color) 78%, white 22%); box-shadow:0 0 0 1px rgba(0,0,0,.55), 0 3px 9px rgba(0,0,0,.56); }
.zc-marker.has-image > span { transform:none; }
.zc-marker__sprite { width:23px; height:23px; display:grid; place-items:center; }
.zc-marker__sprite img { display:block; width:100%; height:100%; object-fit:contain; filter:drop-shadow(0 1px 1px rgba(0,0,0,.62)); }
.zc-marker__sprite b { width:100%; height:100%; place-items:center; color:#fff; font-size:11px; line-height:1; text-shadow:0 1px 2px #000; }
.zc-marker__glyph { display:grid; place-items:center; min-width:18px; min-height:18px; font-weight:800; }
.zc-marker.is-found { opacity:.38; filter:grayscale(.58) saturate(.65); }
.leaflet-marker-icon:hover .zc-marker { opacity:1; filter:none; }

.leaflet-popup-content-wrapper, .leaflet-popup-tip { background:#171c17; color:var(--text); }
.leaflet-popup-content-wrapper { border:1px solid var(--line); border-radius:11px; box-shadow:var(--shadow); }
.leaflet-popup-content { margin:15px 16px; min-width:220px; }
.zc-popup h3 { font-family:Georgia,"Times New Roman",serif; margin:0 0 5px; font-size:18px; }
.zc-popup__meta { color:var(--accent); font-size:12px; margin-bottom:8px; }
.zc-popup p { color:#d8d4c8; line-height:1.45; font-size:13px; }
.zc-popup__actions { display:flex; flex-wrap:wrap; gap:7px; margin-top:11px; }
.zc-popup a, .zc-popup button { display:inline-flex; align-items:center; border:1px solid var(--line); background:#222922; color:var(--text); border-radius:8px; padding:7px 9px; text-decoration:none; font-size:12px; }
.zc-popup a:hover, .zc-popup button:hover { border-color:var(--accent); }

.zc-editor { position:absolute; z-index:750; right:14px; bottom:14px; width:min(430px,calc(100% - 28px)); background:rgba(17,21,17,.96); color:var(--text); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); padding:13px; font-size:12px; }
.zc-editor code { display:block; white-space:pre-wrap; word-break:break-word; background:#0b0e0b; padding:9px; border-radius:7px; margin:8px 0; color:#dbd7ca; }
.zc-editor button { border:1px solid var(--line); background:#222922; color:var(--text); border-radius:7px; padding:7px 9px; }

.leaflet-control-zoom a { background:#171c17 !important; color:var(--text) !important; border-bottom-color:var(--line) !important; }
.leaflet-control-attribution { background:rgba(10,12,10,.72) !important; color:#aaa !important; }
.leaflet-control-attribution a { color:#d7c786 !important; }
.marker-cluster-small, .marker-cluster-medium, .marker-cluster-large { background-color:rgba(231,197,107,.28); }
.marker-cluster-small div, .marker-cluster-medium div, .marker-cluster-large div { background-color:#b99c4d; color:#111; font-weight:800; }

@media (max-width: 820px) {
  .zc-map-app { display:block; }
  .zc-sidebar { position:absolute; inset:0 auto 0 0; width:min(88vw,360px); transform:translateX(-105%); transition:transform .2s ease; }
  .zc-sidebar.is-open { transform:translateX(0); }
  .zc-icon-btn, #openSidebar { display:inline-grid; place-items:center; }
  .zc-map-wrap { height:100dvh; }
}

.zc-progress__stats { grid-column:1/-1; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; margin-top:2px; }
.zc-progress__stat { display:flex; justify-content:space-between; gap:8px; padding:6px 7px; border:1px solid rgba(255,255,255,.06); border-radius:7px; background:rgba(0,0,0,.12); color:var(--muted); font-size:11px; }
.zc-progress__stat strong { color:var(--text); font-weight:700; }
.zc-data-status { margin:-5px 0 14px; color:var(--muted); font-size:11px; line-height:1.4; }
.zc-data-status.is-ok { color:#9cc7a0; }
.zc-data-status.is-error { color:#e19b91; }
.zc-popup__code { color:var(--muted); font-size:11px; margin-top:-2px; margin-bottom:8px; }
.zc-editor__actions { display:flex; flex-wrap:wrap; gap:7px; margin-top:10px; }

/* Die 900 Krog-Punkte bleiben bewusst kleiner als Schreine/Türme. */
.zc-marker.is-krog { width:26px; height:26px; border-width:1.5px; }
.zc-marker.is-krog .zc-marker__sprite { width:20px; height:20px; }
.zc-marker.is-krog .zc-marker__glyph { font-size:9px; }

.zc-popup__start { margin-top:8px; font-size:12px; line-height:1.45; color:var(--muted); }
.zc-popup__start strong { color:var(--text); font-weight:650; }
.zc-popup__note { margin-top:8px; padding:6px 8px; border-left:2px solid var(--accent); background:rgba(231,197,107,.08); color:var(--muted); font-size:11px; line-height:1.4; }

/* Schnellfilter, Gegner-Feinfilter und Kilton-Fortschritt */
.zc-presets { margin:12px 0 10px; padding:11px; border:1px solid var(--line); border-radius:10px; background:rgba(255,255,255,.025); }
.zc-presets > strong { display:block; margin-bottom:8px; font-size:12px; color:var(--text); }
.zc-presets__buttons { display:flex; flex-wrap:wrap; gap:6px; }
.zc-presets button { border:1px solid var(--line); background:#171c17; color:var(--muted); border-radius:999px; padding:6px 9px; font-size:11px; }
.zc-presets button:hover { color:var(--text); border-color:rgba(231,197,107,.65); }

.zc-subtype-filter { display:grid; gap:6px; margin:10px 0 12px; color:var(--muted); font-size:12px; }
.zc-subtype-filter select { width:100%; border:1px solid var(--line); background:#111511; color:var(--text); border-radius:9px; padding:9px 10px; outline:none; }
.zc-subtype-filter select:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(231,197,107,.1); }

.zc-medals { margin:0 0 14px; padding:12px; border:1px solid rgba(231,197,107,.22); border-radius:10px; background:rgba(231,197,107,.055); }
.zc-medals__head { display:flex; justify-content:space-between; gap:10px; margin-bottom:8px; font-size:12px; }
.zc-medals__head span { color:var(--accent); font-weight:800; font-variant-numeric:tabular-nums; }
.zc-medals__stats { display:grid; gap:7px; }
.zc-medal > div { display:flex; justify-content:space-between; gap:10px; color:var(--muted); font-size:11px; }
.zc-medal strong { color:var(--text); font-variant-numeric:tabular-nums; }
.zc-medal > i { display:block; height:4px; margin-top:4px; border-radius:999px; overflow:hidden; background:#0d100d; }
.zc-medal > i > b { display:block; height:100%; background:var(--accent); }
.zc-medals p { margin:9px 0 0; color:var(--muted); font-size:10.5px; line-height:1.4; }
.zc-medals.is-complete { border-color:rgba(133,189,170,.65); background:rgba(133,189,170,.1); }
.zc-medals.is-complete .zc-medals__head span { color:var(--accent-2); }

.zc-popup__facts { display:grid; gap:3px; margin:9px 0 2px; padding:7px 8px; border-radius:7px; background:rgba(255,255,255,.04); color:var(--muted); font-size:11px; line-height:1.4; }
.zc-popup__facts strong { color:var(--text); font-weight:650; }

.zc-progress-tools { margin:14px 0 0; padding-top:12px; border-top:1px solid var(--line); }
.zc-progress-tools > strong { display:block; margin-bottom:8px; font-size:12px; }
.zc-progress-tools > div { display:flex; flex-wrap:wrap; gap:6px; }
.zc-progress-tools button { border:1px solid var(--line); background:#171c17; color:var(--muted); border-radius:8px; padding:7px 8px; font-size:11px; }
.zc-progress-tools button:hover { color:var(--text); border-color:var(--accent); }
.zc-progress-tools button.is-danger:hover { border-color:var(--danger); color:#efb2aa; }

/* Regionsfilter und erweiterte Filterwerkzeuge */
.zc-tools #resetFilters { grid-column:1 / -1; }
.zc-filter-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:10px 0 4px; }
.zc-filter-grid .zc-subtype-filter { margin:0; min-width:0; }
.zc-filter-grid__wide { grid-column:1 / -1; }
.zc-visible-count { margin:8px 0 12px; color:var(--muted); font-size:11px; font-variant-numeric:tabular-nums; }

@media (max-width: 420px) {
  .zc-filter-grid { grid-template-columns:1fr; }
}

/* Trefferliste bei aktiver Suche / Region / Variante */
.zc-results { display:grid; gap:5px; margin:0 0 12px; max-height:255px; overflow:auto; }
.zc-results:empty { display:none; }
.zc-results button { width:100%; display:flex; justify-content:space-between; align-items:center; gap:10px; text-align:left; border:1px solid var(--line); background:#111511; color:var(--text); border-radius:8px; padding:8px 9px; }
.zc-results button:hover { border-color:rgba(231,197,107,.65); background:#171c17; }
.zc-results button span { min-width:0; display:grid; gap:2px; }
.zc-results button strong { font-size:11.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.zc-results button small { color:var(--muted); font-size:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.zc-results button b { color:var(--accent); }
.zc-results > p { margin:2px 2px 0; color:var(--muted); font-size:10px; }

/* Zusätzliche Filter für einmalige Fundorte und wiederholbare Farmziele */
.zc-flag-filters{display:grid;gap:6px;margin-top:-2px}


/* Einklappbare Hauptbereiche */
.zc-collapsible { margin:14px 0; border:1px solid var(--line); border-radius:11px; background:rgba(255,255,255,.02); overflow:hidden; }
.zc-collapsible__toggle { width:100%; display:flex; justify-content:space-between; align-items:center; gap:12px; border:0; background:rgba(255,255,255,.035); color:var(--text); padding:11px 12px; font-size:13px; font-weight:800; text-align:left; }
.zc-collapsible__toggle:hover { background:rgba(231,197,107,.08); }
.zc-collapsible__toggle b { display:grid; place-items:center; width:23px; height:23px; border:1px solid var(--line); border-radius:7px; color:var(--accent); font-size:16px; line-height:1; }
.zc-collapsible__content { padding:12px; }
.zc-collapsible__content[hidden] { display:none !important; }
.zc-collapsible.is-collapsed .zc-collapsible__toggle { border-bottom:0; }

/* logisch gruppierte Kategorien */
.zc-categories { border-top:0; padding-top:0; }
.zc-category-group { margin:0 0 12px; border:1px solid rgba(255,255,255,.07); border-radius:9px; overflow:hidden; background:rgba(0,0,0,.08); }
.zc-category-group:last-child { margin-bottom:0; }
.zc-category-group h3 { margin:0; padding:8px 10px; font-size:10.5px; line-height:1.2; letter-spacing:.08em; text-transform:uppercase; color:var(--accent); background:rgba(255,255,255,.025); border-bottom:1px solid rgba(255,255,255,.06); }
.zc-category-group .zc-category { padding-left:9px; padding-right:9px; }
.zc-category-group .zc-category:last-child { border-bottom:0; }

/* lokale SVG-Icons */
.zc-category__icon img, .zc-marker__sprite img { filter:drop-shadow(0 1px 1px rgba(0,0,0,.62)); }

/* Leaflet-Zoom explizit rechts oben; Abstand zur Kante */
.leaflet-top.leaflet-right .leaflet-control-zoom { margin-top:14px; margin-right:14px; box-shadow:0 7px 20px rgba(0,0,0,.26); }

#progressPanel .zc-progress{margin:0 0 12px}
#filtersPanel .zc-data-status{margin:10px 0 12px}

/* ZeldaCollection-Branding und Rücklink auf die redaktionelle Kartenseite */
.zc-map-brand {
  position:absolute;
  z-index:690;
  left:14px;
  bottom:22px;
  display:flex;
  align-items:center;
  gap:10px;
  max-width:min(330px,calc(100% - 28px));
  padding:9px 11px;
  border:1px solid rgba(255,255,255,.22);
  border-radius:10px;
  background:rgba(10,13,10,.88);
  box-shadow:0 7px 20px rgba(0,0,0,.30);
  color:var(--text);
  text-decoration:none;
  backdrop-filter:blur(5px);
}
.zc-map-brand:hover {
  border-color:var(--accent);
  background:rgba(20,25,20,.96);
}
.zc-map-brand__logo {
  display:block;
  width:auto;
  height:32px;
  max-width:205px;
  object-fit:contain;
}
.zc-map-brand__label {
  color:var(--muted);
  font-size:10px;
  line-height:1.15;
  white-space:nowrap;
}

/* Massenaktion: aktuelle Filter-/Suchauswahl gesammelt als erledigt markieren */
.zc-bulk-actions {
  margin:0 0 12px;
  padding:10px;
  border:1px solid rgba(133,189,170,.24);
  border-radius:9px;
  background:rgba(133,189,170,.055);
}
.zc-bulk-actions[hidden] { display:none !important; }
.zc-bulk-actions__scope { margin-bottom:7px; color:var(--muted); font-size:10.5px; line-height:1.35; }
.zc-bulk-actions__buttons { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.zc-bulk-actions button { min-width:0; border:1px solid var(--line); background:#171c17; color:var(--text); border-radius:8px; padding:7px 8px; font-size:10.5px; line-height:1.25; }
.zc-bulk-actions button:first-child { border-color:rgba(133,189,170,.45); }
.zc-bulk-actions button:hover:not(:disabled) { border-color:var(--accent-2); }
.zc-bulk-actions button:disabled { opacity:.42; cursor:not-allowed; }

@media (max-width:820px) {
  .zc-map-brand { left:12px; bottom:18px; padding:7px 9px; }
  .zc-map-brand__logo { height:28px; max-width:175px; }
  .zc-map-brand__label { display:none; }
}

@media (max-width:420px) {
  .zc-bulk-actions__buttons { grid-template-columns:1fr; }
}
