/* B2C-Gästeansicht (/gast) — mobil zuerst (Version 1.57). Farben: Navy #1F4E79, Terrakotta var(--app-primary). */
.gp-body{ background:var(--app-surface, #F7F4EE); }
.gp-top{ display:flex; align-items:center; padding:.6rem 1rem; background:#fff; border-bottom:1px solid var(--app-border, #E4DED4); }
.gp-top__brand{ display:inline-flex; align-items:center; }
.gp-top__logo{ height:40px; width:40px; object-fit:contain; }
.gp-main{ max-width:960px; margin:0 auto; padding:1rem 1rem 2rem; }
.gp-foot{ margin-top:0; }
.gp-preview{ position:sticky; top:0; z-index:1500; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.5rem;
  padding:.55rem 1rem; background:#1F4E79; color:#fff; font-size:.9rem; }
.gp-hero{ margin:.25rem 0 .9rem; }
.gp-eyebrow{ font-size:.75rem; letter-spacing:.08em; text-transform:uppercase; color:var(--app-text-muted, #6b6359); font-weight:600; }
.gp-h1{ font-family:Fraunces, Georgia, serif; font-size:1.7rem; margin:.1rem 0 0; }
.gp-h2{ font-family:Fraunces, Georgia, serif; font-size:1.3rem; margin:0 0 .7rem; }

/* Pillen oberhalb des Plans */
.gp-pills{ display:flex; flex-wrap:wrap; gap:6px; margin:0 0 .75rem; }
.gp-pill{ display:inline-flex; align-items:center; height:36px; padding:0 15px; border-radius:999px; border:1.5px solid #1F4E79; background:transparent;
  color:#1F4E79; font-size:.88rem; font-weight:700; white-space:nowrap; cursor:pointer; }
.gp-pill[aria-pressed="true"]{ background:#1F4E79; color:#fff; }
.gp-pill[data-gp-layer="wcs"][aria-pressed="true"]{ background:var(--app-primary, #C5843A); border-color:var(--app-primary, #C5843A); }
.gp-pill:focus-visible{ outline:2px solid var(--app-primary, #C5843A); outline-offset:2px; }

/* Plan: Bild + Ebenen in Prozent; Zoom über die Breite der Innenfläche (natives Scrollen) */
.gp-plan{ position:relative; border:1px solid var(--app-border, #E4DED4); border-radius:14px; background:#fff; overflow:hidden; }
.gp-plan__scroll{ overflow:auto; max-height:min(78vh, 900px); -webkit-overflow-scrolling:touch; }
.gp-plan__inner{ position:relative; width:100%; container-type:inline-size; line-height:0; }
.gp-plan__img{ display:block; width:100%; height:auto; opacity:.92; user-select:none; -webkit-user-drag:none; }
.gp-scrim{ position:absolute; inset:0; background:#F6F3ED; opacity:0; pointer-events:none; transition:opacity .2s; }
.gp-plan.is-wc .gp-scrim{ opacity:.66; }
.gp-layer{ position:absolute; inset:0; pointer-events:none; line-height:1; }
.gp-layer[hidden]{ display:none; }
.gp-plan__zoom{ position:absolute; right:8px; bottom:8px; display:flex; flex-direction:column; gap:4px; }
.gp-plan__zoom button{ width:38px; height:38px; border-radius:10px; border:1px solid var(--app-border, #E4DED4); background:#fff; font-size:1.3rem; font-weight:700; color:#1F4E79; }
.gp-tip{ position:absolute; z-index:5; transform:translate(-50%,-100%); background:rgba(20,20,20,.88); color:#fff; font-size:12px; line-height:1.35;
  padding:5px 9px; border-radius:7px; pointer-events:none; max-width:240px; }
.gp-tip span{ display:block; opacity:.8; }

/* POIs: Ring um die eingebrannte Standort-Nummer (lässt sie frei); Größe wächst mit der Planbreite */
.gp-poi{ position:absolute; transform:translate(-50%,-50%); width:min(34px, 5.2cqw); height:min(34px, 5.2cqw); border-radius:50%;
  border:max(2px, .45cqw) solid var(--app-primary, #C5843A); background:transparent; box-shadow:0 0 0 2px rgba(255,255,255,.85); pointer-events:auto; cursor:pointer; padding:0; }
.gp-poi.is-on{ border-color:#B42318; box-shadow:0 0 0 3px #fff, 0 0 0 6px rgba(180,35,24,.35); }
.gp-poi:focus-visible{ outline:2px solid #1F4E79; outline-offset:2px; }

/* WCs: kleiner Navy-Chip mit Peg (wie Arealplan 1.55: Faktor min(1, Planbreite/560 px)) */
.gp-layer--wc{ font-size:11px; font-size:min(11px, 1.9643cqw); }
.gp-wc{ position:absolute; transform:translate(-50%,-100%); display:flex; flex-direction:column; align-items:center; pointer-events:auto; border:0; background:none; padding:0; cursor:pointer; }
.gp-wc__chip{ display:inline-flex; align-items:center; gap:.27em; height:1.818em; padding:0 .4545em; border-radius:.909em; background:#1F4E79; border:.1364em solid #fff;
  box-sizing:border-box; color:#fff; font:700 1em/1 Figtree, system-ui, sans-serif; white-space:nowrap; box-shadow:0 1px 3px rgba(0,0,0,.28); }
.gp-wc__chip i{ display:inline-block; width:.545em; height:.545em; border-radius:50%; }
.gp-wc__peg{ display:block; width:2px; height:.4545em; background:#1F4E79; }

/* „Sie sind hier“ */
.gp-me{ position:absolute; transform:translate(-50%,-50%); display:flex; flex-direction:column; align-items:center; }
.gp-me i{ width:16px; height:16px; border-radius:50%; background:#2563EB; border:4px solid #fff; box-shadow:0 0 0 6px rgba(37,99,235,.25); }
.gp-me b{ margin-top:4px; font:700 12px/1 Figtree, system-ui, sans-serif; color:#1D4ED8; background:#fff; padding:3px 6px; border-radius:6px; white-space:nowrap; }

/* Partner-Liste */
.gp-partners{ margin-top:1.4rem; }
.gp-cards{ list-style:none; margin:0; padding:0; display:grid; gap:.7rem; }
@media (min-width: 640px){ .gp-cards{ grid-template-columns:repeat(2, minmax(0, 1fr)); } }
.gp-card{ background:#fff; border:1px solid var(--app-border, #E4DED4); border-radius:14px; padding:.85rem .95rem; scroll-margin-top:5rem; }
.gp-card.is-hit{ border-color:var(--app-primary, #C5843A); box-shadow:0 0 0 2px var(--app-primary, #C5843A); }
.gp-card__head{ display:flex; justify-content:space-between; align-items:flex-start; gap:.5rem; }
.gp-card__name{ font-size:1.02rem; font-weight:700; margin:0; }
.gp-card__map{ border:0; background:none; color:#1F4E79; font-size:.82rem; text-decoration:underline; text-underline-offset:2px; padding:0; white-space:nowrap; }
.gp-card__text{ margin:.25rem 0 0; font-size:.88rem; color:var(--app-text-muted, #6b6359); }
.gp-card__rating{ margin:.4rem 0 0; display:flex; align-items:center; gap:.4rem; flex-wrap:wrap; font-size:.9rem; }
.gp-card__count{ color:var(--app-text-muted, #6b6359); font-variant-numeric:tabular-nums; }
.gp-card__offers{ margin-top:.65rem; }
.gp-attribution{ margin:.8rem 0 0; font-size:.8rem; color:var(--app-text-muted, #6b6359); }

/* Angebote gesperrt → Freischalten (Blatt) */
.gp-gate{ margin-top:1.6rem; }
.gp-gate__card{ position:relative; background:#fff; border:1px solid var(--app-border, #E4DED4); border-radius:16px; padding:1.1rem 1rem; }
.gp-gate.is-sheet{ position:fixed; inset:0; z-index:2000; margin:0; display:flex; align-items:flex-end; justify-content:center; background:rgba(20,16,10,.5); }
.gp-gate.is-sheet .gp-gate__card{ width:100%; max-width:520px; max-height:92vh; overflow:auto; border-radius:18px 18px 0 0; padding-bottom:calc(1.1rem + env(safe-area-inset-bottom)); }
@media (min-width: 640px){ .gp-gate.is-sheet{ align-items:center; } .gp-gate.is-sheet .gp-gate__card{ border-radius:18px; } }
.gp-gate__x{ position:absolute; right:.6rem; top:.4rem; border:0; background:none; font-size:1.6rem; line-height:1; color:#6b6359; }
.gp-gate__partner{ font-weight:700; margin:0 0 .5rem; }
.gp-locked{ list-style:none; padding:0; margin:0 0 .8rem; display:grid; gap:.4rem; }
.gp-locked li{ display:flex; align-items:center; gap:.5rem; padding:.55rem .6rem; border-radius:10px; background:#F3EFE8; }
.gp-locked__bar{ flex:1; height:.7rem; border-radius:4px; background:linear-gradient(90deg, #DDD5C8, #EAE4DA); filter:blur(1px); }
.gp-consent{ display:flex; gap:.55rem; margin-top:.75rem; font-size:.85rem; line-height:1.4; }
.gp-consent .form-check-input{ flex:0 0 auto; margin-top:.15rem; }
.gp-hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
html.gp-noscroll, html.gp-noscroll body{ overflow:hidden; }
.gp-msg{ max-width:560px; margin:1.5rem auto; background:#fff; border:1px solid var(--app-border, #E4DED4); border-radius:16px; padding:1.3rem; }
@media (prefers-reduced-motion:reduce){ .gp-scrim{ transition:none; } }

/* ---------- Version 1.58: Sprachen, Wegweiser, Tagesprogramm ---------- */
.gp-top{ justify-content:space-between; gap:.6rem; }
.gp-lang{ display:flex; flex-wrap:wrap; gap:2px; justify-content:flex-end; }
.gp-lang__opt{ display:inline-flex; align-items:center; justify-content:center; min-width:32px; height:28px; padding:0 6px; border-radius:8px;
  font-size:.75rem; font-weight:700; color:#1F4E79; text-decoration:none; border:1px solid transparent; }
.gp-lang__opt.is-active{ background:#1F4E79; color:#fff; }
.gp-lang__opt:not(.is-active):hover{ border-color:#1F4E79; }
.gp-h3{ font-size:1rem; font-weight:700; margin:0 0 .5rem; }
.gp-muted{ color:var(--app-text-muted, #6b6359); font-size:.9rem; }
.gp-link{ border:0; background:none; padding:0; color:#1F4E79; font-weight:600; font-size:.85rem; text-decoration:underline; text-underline-offset:2px; cursor:pointer; }

/* „Heute Abend“ – Hinweis oben */
.gp-tonight{ display:flex; align-items:center; gap:.6rem; margin:0 0 .8rem; padding:.6rem .8rem; border-radius:12px; background:#1F4E79; color:#fff; text-decoration:none; }
.gp-tonight:hover{ color:#fff; filter:brightness(1.08); }
.gp-tonight__label{ flex:0 0 auto; font-size:.72rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; background:var(--app-primary, #C5843A); padding:.2rem .5rem; border-radius:6px; }
.gp-tonight__text{ font-weight:600; font-size:.92rem; }

/* Wegweiser */
.gp-route-bar{ display:flex; gap:6px; margin:0 0 .75rem; overflow-x:auto; scrollbar-width:none; padding-bottom:2px; }
.gp-route-bar::-webkit-scrollbar{ display:none; }
.gp-route-btn{ flex:0 0 auto; height:34px; padding:0 12px; border-radius:10px; border:1px solid var(--app-border, #E4DED4); background:#fff; font-size:.85rem; font-weight:600; color:#2A2015; white-space:nowrap; }
.gp-route-btn:hover{ border-color:#1F4E79; }
.gp-route-panel{ margin:0 0 .75rem; padding:.7rem .85rem; border-radius:12px; background:#fff; border:1.5px solid #C0392B; }
.gp-route-panel[hidden]{ display:none; }
.gp-route-panel__q{ margin:0 0 .5rem; font-weight:600; }
.gp-route-panel__res{ margin:0 0 .25rem; font-size:1rem; }
.gp-route-panel__meta{ margin:0 0 .5rem; font-size:.82rem; color:var(--app-text-muted, #6b6359); }
.gp-route-panel__row{ display:flex; flex-wrap:wrap; gap:.4rem; align-items:center; margin-bottom:.4rem; }
.gp-route-panel__row .form-select{ flex:1 1 220px; min-width:0; }
.gp-route{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; }
.gp-tip{ pointer-events:auto; }
.gp-tip__btn{ display:block; margin-top:5px; width:100%; border:0; border-radius:6px; padding:4px 8px; background:#fff; color:#1F4E79; font-weight:700; font-size:12px; }
.gp-card__acts{ display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.65rem; }
.gp-card__acts .gp-card__offers{ margin-top:0; }

/* Tagesprogramm */
.gp-program{ margin-top:1.4rem; background:#fff; border:1px solid var(--app-border, #E4DED4); border-radius:14px; padding:1rem; }
.gp-events{ list-style:none; margin:0; padding:0; display:grid; gap:.5rem; }
.gp-event{ display:grid; grid-template-columns:5.5rem minmax(0, 1fr) auto; gap:.6rem; align-items:center; padding:.5rem 0; border-top:1px solid var(--app-border, #E4DED4); }
.gp-event:first-child{ border-top:0; }
.gp-event__time{ font-weight:700; font-variant-numeric:tabular-nums; font-size:.88rem; }
.gp-events--next .gp-event__time{ font-weight:600; font-size:.8rem; color:var(--app-text-muted, #6b6359); }
.gp-event__main{ display:flex; flex-direction:column; min-width:0; }
.gp-event__main span{ font-size:.82rem; color:var(--app-text-muted, #6b6359); }
.gp-event__acts{ display:flex; gap:.4rem; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
@media (max-width: 420px){ .gp-event{ grid-template-columns:4.6rem minmax(0, 1fr); } .gp-event__acts{ grid-column:1 / -1; justify-content:flex-start; } }
