/* ================================================================
   header-styles.css  -  Topbar + Hauptnavigation + Mobile-Nav
   ================================================================
   VERSION: 27
   Liegt unter: /site/templates/styles/header-styles.css
   Einbinden in _main.php im <head>:
     <link rel="stylesheet" href="<?= $config->urls->templates ?>styles/header-styles.css">

   Angepasst an die ul/li/a-Struktur, die Menu Builder
   (MarkupMenuBuilder) ausgibt - inkl. Klasse "has-children"
   fuer Eintraege mit Untermenue.
   ================================================================ */

/* ---------------- Basis-Variablen ----------------
   Stehen hier, damit der Header auch ohne riva.css funktioniert.
   Falls riva.css spaeter eigene :root-Variablen mitbringt, koennen
   diese hier entfernt werden (Dopplung ist unschaedlich, es gewinnt
   die zuletzt geladene Datei). */
:root{
  --navy:#292E3A;
  --navy-2:#333947;
  --navy-3:#1F2430;
  --navy-deep:#12141B;
  --accent:#D4A97F;
  --accent-deep:#B98A5C;
  --white:#FFFFFF;
  --paper:#F7F4ED;
  --muted:#6A6F7D;
  --line:rgba(41,46,58,.16);
  --surface:var(--white);
  --surface-alt:var(--paper);
  --text:var(--navy);
  --text-muted:var(--muted);
  --shadow-1:0 1px 3px rgba(41,46,58,.10);
  --shadow-2:0 14px 32px rgba(41,46,58,.12);
  --ease:cubic-bezier(.22,.61,.36,1);
}
html.dark{
  --surface:#15171D;
  --surface-alt:#1B1E26;
  --text:#ECEAE3;
  --text-muted:#A9AEBC;
  --line:rgba(255,255,255,.14);
}
html.dark body{background:var(--surface);}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;overflow-x:hidden;}

/* ----------------------------------------------------------------
   .wrap - Basis-Container fuer alle Content-Sektionen (Aktionskarten,
   Das Riva, spaeter Kontakt/Galerie/etc.). War versehentlich in
   keiner CSS-Datei definiert - Sektionen liefen dadurch randlos
   ueber die volle Fensterbreite statt zentriert mit max-width.
   ---------------------------------------------------------------- */
/* ----------------------------------------------------------------
   Typografie-Helfer - GLOBAL, da auf fast jeder Seite gebraucht
   (Startseite, Termine, Galerie, Speisekarte, Pauschalfeiern ...).
   Standen frueher in hero-styles.css; seit dem bedingten Laden der
   Stylesheets war die geschwungene Caveat-Schrift dadurch ueberall
   dort weg, wo hero-styles.css nicht mitgeladen wird.
   ---------------------------------------------------------------- */
h1,h2,h3,h4{margin:0;}
.script{
  font-family:'Caveat',cursive;
  font-weight:600;
  color:var(--accent-deep);
}
/* .eyebrow - schraeg gestellte Variante, war bisher NIRGENDS
   definiert, obwohl sie in _aktionskarten.php und
   pauschale-feiern.php benutzt wird. */
.eyebrow{
  font-family:'Caveat',cursive;
  font-weight:600;
  font-size:30px;
  color:var(--accent-deep);
  display:inline-block;
  transform:rotate(-2deg);
  margin-bottom:-4px;
}
.eyebrow.on-dark{color:var(--accent);}

/* ---------------- Buttons ----------------
   Global, da auf fast jeder Seite gebraucht (Pauschalfeiern,
   Termine, Mein-Riva, Fotograf-Login, riva-admin ...). Standen
   frueher nur in hero-styles.css; seit dem bedingten Laden der
   Stylesheets waren sie dadurch ueberall kaputt, wo hero-styles.css
   nicht mitgeladen wird - gleicher Fehler wie vorher schon bei
   .script und .page-header. */
.btn{
  display:inline-block;
  font-family:'Barlow',sans-serif;
  font-size:14px;font-weight:500;
  letter-spacing:.03em;
  padding:12px 24px;border-radius:2px;
  transition:all .35s var(--ease);
  cursor:pointer;
}
.btn-solid{background:var(--accent);color:var(--navy);}
.btn-solid:hover{background:var(--accent-deep);color:#fff;transform:translateY(-2px);box-shadow:var(--shadow-2);}
.btn-dark{background:var(--navy);color:#fff;}
.btn-dark:hover{background:var(--navy-2);transform:translateY(-2px);box-shadow:var(--shadow-2);}
.btn-ghost{border:1px solid rgba(255,255,255,.5);color:#fff;}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px);}
.btn-ghost-dark{border:1px solid var(--navy);color:var(--navy);}
html.dark .btn-ghost-dark{border-color:var(--accent-deep);color:var(--accent-deep);}
html.dark .btn-ghost-dark:hover{border-color:var(--accent);color:var(--accent);}
.btn-ghost-dark:hover{background:var(--navy);color:#fff;transform:translateY(-2px);}

.wrap{max-width:1180px;margin:0 auto;padding:0 40px;}
@media(max-width:980px){
  .wrap{padding:0 30px;}
}
@media(max-width:480px){
  .wrap{padding:0 30px;}
}

/* ----------------------------------------------------------------
   .page-header - schmaler dunkler Seiten-Header (Breadcrumb, Titel,
   Untertitel) - genutzt von Speisekarte, Termine, Pauschale Feiern,
   Mein Riva usw. War bisher NUR in speisekarte-styles.css und
   mein-riva-styles.css dupliziert (mit leicht abweichenden Werten)
   statt global zu stehen - seit dem bedingten Laden der Stylesheets
   (nur die jeweils benoetigte Seite laedt ihr eigenes CSS) fehlte
   es dadurch auf allen anderen Seiten komplett.
   ---------------------------------------------------------------- */
/* ----------------------------------------------------------------
   SCHMALER SEITEN-HEADER - Box-Optik mit Hintergrundbild
   ----------------------------------------------------------------
   NEU: Ueberschrift/Text sitzen in einer weissen Box ueber dem
   Hintergrundbild (im Dark Mode wird die Box dunkel) - Vorlage war
   raeume.html. Der Hintergrund wird ueber ein Bild gefuellt
   (.page-header-bg, per inline style background-image gesetzt),
   .ph-header-flat bleibt als Navy-Flaeche fuer Seiten OHNE Bild.

   ZWEI HOEHENVARIANTEN (mehr gibt es bewusst nicht, sonst wirkt die
   Seite uneinheitlich):
     - Standard (keine Zusatzklasse): kompakt, bisheriges Mass -
       Speisekarte, Termine, Galerie, Mein Riva, Pauschalfeiern.
     - .page-header-tall: so hoch wie der Hero-Slider der Startseite
       (76vh/min-height 500px) - fuer Seiten, die mehr visuelle
       Praesenz brauchen (z.B. Raeume).
   ---------------------------------------------------------------- */
.page-header{
  position:relative;overflow:hidden;color:#fff;background:var(--navy);
  padding:56px 0 50px;
  display:flex;align-items:center;
}
.page-header.page-header-tall{
  min-height:76vh;
  padding:70px 0;
}
.page-header .ph-header-flat{position:absolute;inset:0;background:var(--navy-2);opacity:.5;pointer-events:none;}
.page-header .page-header-bg{
  position:absolute;inset:0;background-size:cover;background-position:center;
  pointer-events:none;
}
/* Abdunkelung ueber dem Bild, damit die Box + Breadcrumb (falls
   ausserhalb der Box) immer lesbar bleiben, unabhaengig vom Motiv. */
.page-header .page-header-bg::after{
  content:"";position:absolute;inset:0;background:rgba(18,20,27,.35);
}
/* WICHTIG: Der eigentliche Seiteninhalt (.wrap, mit max-width:1180px
   und margin:0 auto - siehe weiter unten) MUSS ueber der Abdunkelung
   liegen. Vorher stand diese Regel auf einer Klasse ".inner", die in
   keinem der fuenf Header-Markups tatsaechlich vorkommt - .wrap/
   .header-box hatten dadurch GAR KEINEN eigenen Stapelkontext, und
   .page-header-bg::after (absolut positioniert) hat sich einfach
   darueber gelegt. Das war die Ursache fuer den "blassen" Look -
   die dunkle Abdunkelung lag ueber der Box statt nur ueber dem Bild
   dahinter. Jetzt direkt auf .wrap, das in JEDEM der fuenf Header
   tatsaechlich verwendet wird.

   KEIN padding-left:0 (mehr): das war ein Versehen aus einer
   frueheren Version dieses Fixes und stand NICHT in der
   urspruenglichen Design-Vorlage - dadurch klebte die Header-Box
   naeher am linken Rand als vorgesehen. .wrap behaelt jetzt sein
   normales 40px-Padding wie ueberall sonst auch. */
.page-header > .wrap{position:relative;z-index:2;width:100%;}

/* ---------------- Die weisse/dunkle Box ---------------- */
.header-box{
  background:#fff;display:inline-block;max-width:600px;
  width:fit-content;
  padding:32px 38px;border-radius:3px;
  box-shadow:0 30px 60px rgba(0,0,0,.35);
  transition:background .35s var(--ease);
}
.header-box .script{font-size:26px;color:var(--accent-deep);display:inline-block;}
.header-box h1{
  font-family:'Oswald',sans-serif;font-weight:600;text-transform:uppercase;
  font-size:clamp(30px,4.5vw,44px);line-height:1.05;letter-spacing:.01em;margin:10px 0 14px;
  color:var(--navy);
}
.header-box .sub,.header-box p{font-size:16px;color:var(--muted);font-weight:300;line-height:1.6;margin:0;max-width:520px;}

html.dark .header-box{background:#1F2430;box-shadow:0 30px 60px rgba(0,0,0,.45);}
html.dark .header-box .script{color:var(--accent);}
html.dark .header-box h1{color:#fff;}
html.dark .header-box .sub,html.dark .header-box p{color:#D5D8DF;}
html.dark .header-box .breadcrumb{color:#9AA0AE;}
html.dark .header-box .breadcrumb a{color:#C6CAD4;}
html.dark .header-box .breadcrumb a:hover{color:var(--accent);}

.breadcrumb{font-size:15px;color:var(--muted);margin-bottom:12px;position:relative;z-index:2;}
.breadcrumb a{color:var(--navy);transition:color .25s var(--ease);}
.breadcrumb a:hover{color:var(--accent-deep);}
/* Breadcrumb sitzt meist INNERHALB der Box (dort auf die dunklen
   Werte oben unter html.dark .header-box umschalten); falls eine
   Seite ihn stattdessen frei ueber dem Bild plaziert, hier eine
   helle Variante fuers Navy-/Bild-Umfeld bereitstellen. */
.page-header > .wrap > .breadcrumb{color:#9AA0AE;}
.page-header > .wrap > .breadcrumb a{color:#C6CAD4;}
.page-header > .wrap > .breadcrumb a:hover{color:var(--accent);}

@media(max-width:980px){
  .page-header{min-height:240px;padding:28px 0 32px;}
  .page-header.page-header-tall{min-height:auto;padding:36px 0 32px;}
  .header-box{max-width:100%;padding:24px 26px;}
}

/* ----------------------------------------------------------------
   .ph-flat - Basis-Platzhalterbox fuer fehlende Bilder. War
   bisher NIRGENDS definiert, nur vereinzelte Kontext-Overrides
   (z.B. .feat-main .ph-flat{background:...}) ohne Grundregel -
   dadurch hatte die Box weder Layout noch Text-Zentrierung.
   ---------------------------------------------------------------- */
.ph-flat{
  background:var(--surface-alt);
  border:1px dashed var(--line);
  display:flex;align-items:center;justify-content:center;
  text-align:center;
  transition:background .35s var(--ease),border-color .35s var(--ease);
}
.ph-flat .ph-inner{padding:14px;}
.ph-flat .ph-n{font-family:'Oswald',sans-serif;font-weight:600;font-size:14px;color:var(--accent-deep);letter-spacing:.04em;}
.ph-flat .ph-l{font-family:'Barlow',sans-serif;font-size:14px;color:var(--text-muted);margin-top:4px;}

/* ----------------------------------------------------------------
   Modal-Shell (Info-Popups: Fruehstueck, Happy Hour, Aktionskarten).
   War KOMPLETT undefiniert - der Klick fuegte zwar die Klassen
   "open"/"no-scroll" hinzu (Scrollbar verschwand korrekt), aber
   die eigentliche Popup-Box hatte keinerlei Styling und war
   dadurch unsichtbar/funktionslos - Seite wirkte wie "haengen
   geblieben", weil kein Schliessen-Button sichtbar war.
   ---------------------------------------------------------------- */
.modal-overlay{
  position:fixed;inset:0;z-index:200;
  background:rgba(31,36,48,.72);
  display:flex;align-items:center;justify-content:center;padding:24px;
  opacity:0;pointer-events:none;transition:opacity .35s var(--ease);
}
.modal-overlay.open{opacity:1;pointer-events:auto;}

.modal-box{
  background:var(--surface);max-width:640px;width:100%;max-height:86vh;overflow-y:auto;
  border-radius:3px;position:relative;box-shadow:0 30px 70px rgba(0,0,0,.3);
  transform:translateY(24px) scale(.98);
  transition:transform .4s var(--ease),max-width .3s var(--ease),background .35s var(--ease);
}
.modal-box.wide{max-width:900px;}
.modal-overlay.open .modal-box{transform:translateY(0) scale(1);}

.modal-visual{height:220px;}
.modal-visual .ph-flat{height:100%;border:none;border-radius:0;}

.modal-body{padding:34px 36px 38px;}
.modal-body.no-pad{padding:0;}
.modal-body .script{font-size:26px;display:block;}
.modal-body h2{font-family:'Oswald',sans-serif;font-weight:600;text-transform:uppercase;font-size:30px;margin-top:4px;}
.modal-body p{font-size:15.5px;line-height:1.7;color:var(--text-muted);font-weight:300;margin:16px 0;}
.modal-body ul{margin:16px 0;padding:0;list-style:none;}
.modal-body li{font-size:15px;padding:10px 0;border-bottom:1px dotted var(--line);display:flex;justify-content:space-between;gap:12px;color:var(--text);}
.modal-body li b{font-family:'Oswald',sans-serif;font-weight:600;color:var(--accent-deep);}

.modal-close{
  position:absolute;top:16px;right:16px;z-index:5;
  width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.92);
  display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--navy);
  box-shadow:var(--shadow-1);transition:all .3s var(--ease);
}
.modal-close:hover{background:var(--accent);color:#fff;transform:rotate(90deg);}

@media(max-width:640px){
  .modal-overlay{padding:12px;}
  .modal-box{max-height:92vh;}
  .modal-visual{height:160px;}
  .modal-body{padding:24px 20px 26px;}
  .modal-body .script{font-size:21px;}
  .modal-body h2{font-size:23px;}
  .modal-body p{font-size:14.5px;}
  .modal-body li{font-size:14px;padding:9px 0;}
  .modal-close{top:10px;right:10px;width:34px;height:34px;font-size:16px;}
}
body{
  margin:0;
  font-family:'Barlow',sans-serif;
  font-size:16px;
  background:var(--surface);
  color:var(--text);
  -webkit-font-smoothing:antialiased;
  transition:background .35s var(--ease),color .35s var(--ease);
  overflow-x:hidden;
  width:100%;
  /* Sticky Footer: Body als Spalte ueber die volle Bildschirmhoehe,
     der Inhalts-Wrapper dazwischen waechst. Ohne das rutscht der
     Footer bei kurzen Seiten (z.B. Mein-Riva-Panels mit wenig
     Inhalt) nach oben. Eine min-height auf dem Inhalt allein reicht
     dafuer nicht zuverlaessig. */
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
.riva-page-main{flex:1 0 auto;}
body > footer,
body > .site-footer{flex-shrink:0;}
body.no-scroll{overflow:hidden;}
a{color:inherit;text-decoration:none;}
img{display:block;max-width:100%;}
button{
  font-family:inherit;border:none;background:none;cursor:pointer;
  padding:0;margin:0;text-align:inherit;
  -webkit-appearance:none;appearance:none;
}

/* ================= TOPBAR ================= */
.topbar{
  background:var(--navy-3);color:#C6CAD4;
  font-size:14px;letter-spacing:.02em;
}
.topbar-inner{
  max-width:1180px;margin:0 auto;padding:9px 40px;
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;
}
.topbar-text{min-width:0;}
/* Hervorhebungen aus dem CKEditor-Feld (z.B. Uhrzeiten) */
.topbar-text span,
.topbar-text b,
.topbar-text strong{color:var(--accent);font-weight:inherit;}
.topbar-text p{margin:0;}

/* --- Menu Builder Ausgabe in der Topbar (Menue "top-right") --- */
.social{
  display:flex;
  align-items:center;
}
.social ul{
  list-style:none;margin:0;padding:0;
  display:flex;align-items:center;
}
.social ul li{display:flex;align-items:center;}
.social a{
  margin-left:16px;opacity:.8;
  transition:opacity .25s var(--ease),color .25s var(--ease);
}
.social a:hover{opacity:1;color:var(--accent);}
/* Falls im Menu Builder ein Icon-Link (z.B. "Mein Riva") gepflegt wird */
.social svg{width:16px;height:16px;display:block;}

.social-icon-link{
  width:30px;height:30px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:#C6CAD4;margin-left:10px;flex:0 0 auto;
  transition:color .3s var(--ease),background .3s var(--ease);
}
.social-icon-link:hover{color:var(--accent);background:rgba(255,255,255,.08);}
.social-icon-link svg{width:16px;height:16px;}


.theme-toggle{
  width:30px;height:30px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:#C6CAD4;margin-left:18px;flex:0 0 auto;
  transition:color .3s var(--ease),background .3s var(--ease),transform .3s var(--ease);
}
.theme-toggle:hover{color:var(--accent);background:rgba(255,255,255,.08);transform:rotate(12deg);}
.theme-toggle svg{width:16px;height:16px;}

/* ================= HAUPTNAVIGATION ================= */
nav.mainnav{
  background:var(--navy);
  position:sticky;top:0;z-index:60;
  box-shadow:0 1px 0 rgba(255,255,255,.06);
}
.nav-inner{
  max-width:1180px;margin:0 auto;padding:0 40px;
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
}
.navlinks-left{justify-self:start;}
.navlinks-right{justify-self:end;}
.brand{justify-self:center;}

.navlinks{display:flex;align-items:center;gap:28px;}

/* ---- Menu Builder: 1. Ebene ---- */
.navlinks ul{
  list-style:none;margin:0;padding:0;
  display:flex;align-items:center;gap:28px;
}
.navlinks > ul > li{position:relative;}
.navlinks > ul > li > a{
  display:inline-flex;align-items:center;gap:5px;
  font-size:14px;letter-spacing:.03em;
  color:#E4E6EB;font-weight:400;
  padding:20px 0;position:relative;
  transition:color .3s var(--ease);
}
.navlinks > ul > li > a::after{
  content:"";position:absolute;left:0;bottom:14px;width:0;height:1px;
  background:var(--accent);transition:width .35s var(--ease);
}
.navlinks > ul > li > a:hover{color:var(--accent);}
.navlinks > ul > li > a:hover::after{width:100%;}
.navlinks > ul > li.current > a{color:var(--accent);}

/* ---- Caret-Pfeil bei Eintraegen mit Untermenue (CSS-only) ---- */
.navlinks li.has-children > a::before{
  content:"";
  display:inline-block;
  width:6px;height:6px;
  border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;
  transform:rotate(45deg) translateY(-2px);
  margin-right:2px;
  order:2;                 /* Pfeil hinter den Text */
  transition:transform .3s var(--ease);
  flex:0 0 auto;
}
.navlinks > ul > li.has-children:hover > a::before{
  transform:rotate(225deg) translateY(-2px);
}

/* ---- Menu Builder: 2. Ebene (Dropdown) ---- */
.navlinks ul ul{
  position:absolute;top:100%;left:0;
  display:block;
  min-width:230px;
  padding:10px 0 0;margin:0;
  opacity:0;pointer-events:none;transform:translateY(-6px);
  transition:opacity .2s var(--ease),transform .2s var(--ease);
  z-index:90;
}
.navlinks ul ul::before{
  content:"";position:absolute;top:10px;left:0;right:0;bottom:0;
  background:var(--navy-2);border-radius:0 0 4px 4px;
  box-shadow:0 18px 40px rgba(0,0,0,.25);z-index:-1;
}
.navlinks li:hover > ul,
.navlinks li:focus-within > ul{
  opacity:1;pointer-events:auto;transform:translateY(0);
}
.navlinks ul ul li{position:relative;display:block;}
.navlinks ul ul li a{
  display:flex;justify-content:space-between;align-items:center;
  padding:11px 20px;font-size:14px;color:#E4E6EB;white-space:nowrap;
  transition:background .2s var(--ease),color .2s var(--ease),padding-left .2s var(--ease);
}
.navlinks ul ul li a:hover{
  background:rgba(255,255,255,.06);color:var(--accent);padding-left:24px;
}

/* ---- Menu Builder: 3. Ebene (Flyout nach rechts) ---- */
.navlinks ul ul ul{
  top:-10px;left:100%;
  padding:0 0 0 6px;
  border-radius:4px;
}
.navlinks ul ul ul::before{top:0;left:6px;border-radius:4px;}
/* Pfeil der 2. Ebene zeigt nach rechts statt nach unten */
.navlinks ul ul li.has-children > a::before{
  transform:rotate(-45deg) translateX(-2px);
}
.navlinks ul ul li.has-children:hover > a::before{
  transform:rotate(-45deg) translateX(-2px);
}

/* ---- Logo ---- */
.brand{position:relative;flex:0 0 auto;}
.brand img{max-height:40px;}
.brand small{
  display:block;font-family:'Barlow',sans-serif;
  font-size:12px;letter-spacing:.16em;color:var(--accent);
  margin-top:6px;font-weight:500;text-transform:uppercase;
}

/* ---- CTA "Reservieren" (aktuell ungenutzt, evtl. spaeter woanders wieder verwendet) ---- */
.navcta{
  background:none;color:#fff;
  font-size:14px;font-weight:500;letter-spacing:.03em;
  padding:8px 4px;border-radius:0;
  border-bottom:1px solid var(--accent);
  transition:color .3s var(--ease),letter-spacing .3s var(--ease);
  flex:0 0 auto;
}
.navcta:hover{color:var(--accent);letter-spacing:.05em;}

/* ---- "Mein Riva" Button + Dropdown (Login/Konto/Abmelden) ---- */
.nav-account-wrap{position:relative;flex:0 0 auto;}
.nav-account-btn{
  display:inline-flex;align-items:center;gap:8px;
  background:rgba(212,169,127,.12);color:var(--accent);
  border:1px solid rgba(212,169,127,.45);border-radius:22px;
  padding:9px 18px 9px 14px;font-family:'Barlow',sans-serif;
  font-size:14px;font-weight:600;letter-spacing:.02em;
  cursor:pointer;transition:all .3s var(--ease);
}
.nav-account-btn svg{width:16px;height:16px;flex:0 0 auto;}
.nav-account-btn:hover,.nav-account-wrap:focus-within .nav-account-btn{
  background:var(--accent);color:var(--navy);border-color:var(--accent);
  box-shadow:0 6px 18px rgba(212,169,127,.35);
}
.nav-account-dot{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 5px;border-radius:9px;
  background:#C0392B;color:#fff;font-size:11px;font-weight:700;
  line-height:1;flex:0 0 auto;
}
.mn-cta .nav-account-dot{margin-left:6px;}

.nav-account-panel{
  position:absolute;top:100%;right:0;min-width:190px;
  padding:10px 0 0;margin:0;
  opacity:0;pointer-events:none;transform:translateY(-6px);
  transition:opacity .2s var(--ease),transform .2s var(--ease);
  z-index:90;
}
.nav-account-panel::before{
  content:"";position:absolute;top:10px;left:0;right:0;bottom:0;
  background:var(--navy-2);border-radius:4px;
  box-shadow:0 18px 40px rgba(0,0,0,.25);z-index:-1;
}
.nav-account-wrap:hover .nav-account-panel,
.nav-account-wrap:focus-within .nav-account-panel{
  opacity:1;pointer-events:auto;transform:translateY(0);
}
.nav-account-panel a{
  display:block;padding:12px 20px;font-size:14px;color:#E4E6EB;white-space:nowrap;
  transition:background .2s var(--ease),color .2s var(--ease),padding-left .2s var(--ease);
}
.nav-account-panel a:hover{background:rgba(255,255,255,.06);color:var(--accent);padding-left:24px;}

/* ---- Mobil: Login/Konto-Block im Mobile-Nav-Panel ---- */
.mn-account-block{margin-top:10px;display:flex;flex-direction:column;gap:10px;}
.mn-account-block .mn-cta{margin-top:0;}
.mn-account-logout{text-align:center;font-size:13.5px;color:#B7BBC5;transition:color .2s var(--ease);}
.mn-account-logout:hover{color:var(--accent);}

/* ================= HAMBURGER ================= */
.hamburger{
  display:none;flex-direction:column;justify-content:center;gap:5px;
  width:38px;height:38px;flex:0 0 auto;
}
.hamburger span{
  display:block;width:22px;height:2px;background:#fff;border-radius:2px;
  transition:all .3s var(--ease);
}

/* ================= MOBILE NAVIGATION ================= */
.mobile-nav-overlay{
  position:fixed;inset:0;z-index:150;background:rgba(18,20,27,.55);
  opacity:0;pointer-events:none;transition:opacity .3s var(--ease);
}
.mobile-nav-overlay.open{opacity:1;pointer-events:auto;}
.mobile-nav-panel{
  position:absolute;top:0;right:0;bottom:0;width:min(340px,88vw);
  background:var(--navy);
  box-shadow:-14px 0 30px rgba(0,0,0,.25);
  padding:22px 22px 30px;overflow-y:auto;
  transform:translateX(100%);transition:transform .35s var(--ease);
  display:flex;flex-direction:column;
}
.mobile-nav-overlay.open .mobile-nav-panel{transform:translateX(0);}
.mobile-nav-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;}
.mn-brand-logo{height:32px;width:auto;display:block;}
.mn-close{
  width:34px;height:34px;border-radius:50%;background:var(--navy-2);color:#fff;
  font-size:20px;display:flex;align-items:center;justify-content:center;
}
.mobile-nav-tree{flex:1;display:flex;flex-direction:column;gap:2px;}
.mn-acc{border-bottom:1px solid rgba(255,255,255,.08);}
.mn-acc-head{display:flex;align-items:center;justify-content:space-between;}
.mn-acc-link,.mn-link{display:block;padding:13px 4px;font-size:15px;color:#E4E6EB;}
.mn-link{border-bottom:1px solid rgba(255,255,255,.08);}
.mn-acc-link{flex:1;}
.mn-acc-toggle{
  width:32px;height:32px;flex:0 0 auto;color:var(--accent);
  font-size:18px;transition:transform .3s var(--ease);
}
.mn-acc.open > .mn-acc-head .mn-acc-toggle{transform:rotate(45deg);}
.mn-acc-body{max-height:0;overflow:hidden;transition:max-height .35s var(--ease);padding-left:14px;}
.mn-acc.open > .mn-acc-body{max-height:600px;}
.mn-sub-link{display:block;padding:10px 4px;font-size:14px;color:#B7BBC5;}
.mn-sub-link:hover{color:var(--accent);}
.mn-acc.level-2 .mn-acc-link,
.mn-acc.level-2 .mn-sub-link{font-size:13.5px;color:#A9AEBC;}
.mn-cta{
  width:100%;text-align:center;margin-top:18px;
  display:inline-block;
  font-size:14px;font-weight:500;letter-spacing:.03em;
  padding:12px 24px;border-radius:2px;
  background:var(--accent);color:var(--navy);
  transition:all .35s var(--ease);
}
.mn-cta:hover{background:var(--accent-deep);color:#fff;}

/* ================= RESPONSIVE ================= */
@media(max-width:980px){
  .topbar-inner,.nav-inner{padding-left:24px;padding-right:24px;}
  .navlinks{display:none;}
  .hamburger{display:flex;}
  /* Auf Mobile sind nur noch Logo + Hamburger sichtbar (die
     Navlinks-Spalten links/rechts sind leer) - das 3-Spalten-Grid
     der Desktop-Ansicht wuerde das Logo trotzdem in die Mitte
     zwingen. Einfaches 2-Elemente-Flex stattdessen: Logo links,
     Hamburger rechts. */
  .nav-inner{display:flex;justify-content:space-between;}
  .brand{justify-self:auto;margin:0;}
}
@media(max-width:640px){
  .topbar-inner{justify-content:center;text-align:center;}
}
@media(max-width:480px){
  .topbar-inner,.nav-inner{padding-left:18px;padding-right:18px;}
}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;transition-duration:.01ms !important;}
}

/* ---------- Globales Reservieren-Modal (resmio-Widget) ----------
   Site-weit, wird von jedem Element mit data-reservieren geoeffnet
   (siehe resmio-reservieren.js). Bewusst schlicht gehalten - das
   Widget selbst bringt sein eigenes Design mit. */
.rm-reservieren-modal{
  display:none;position:fixed;inset:0;z-index:500;
  background:rgba(15,17,22,.9);
  align-items:center;justify-content:center;padding:20px;
}
.rm-reservieren-modal.open{display:flex;}
.rm-reservieren-box{
  position:relative;background:#fff;border-radius:4px;
  box-shadow:0 24px 70px rgba(0,0,0,.55);
  padding:10px;
}
.rm-reservieren-close{
  position:absolute;top:-14px;right:-14px;z-index:2;
  width:32px;height:32px;border-radius:50%;
  background:var(--navy);color:#fff;border:2px solid #fff;
  font-size:18px;line-height:1;cursor:pointer;
  transition:background .2s var(--ease);
  display:flex;align-items:center;justify-content:center;
}
.rm-reservieren-close:hover{background:var(--navy-2);}

/* ---------- Globale Bild-Lightbox (site-weit) ----------
   Urspruenglich nur bei Termine/Events, jetzt global damit auch
   andere Seiten (z.B. Ticket-Flyer auf gutscheine.php) exakt
   dieselbe Lightbox nutzen koennen statt einer eigenen Nachbildung.
   Wird per JS dynamisch erzeugt, siehe gal-lightbox.js -
   openGalleryLightbox(url). */
.gal-lightbox{
  position:fixed;inset:0;background:rgba(15,17,22,.94);z-index:200;
  display:none;align-items:center;justify-content:center;padding:30px;
}
.gal-lightbox.open{display:flex;}
.gal-lightbox img{max-width:100%;max-height:500px;border-radius:3px;box-shadow:0 20px 60px rgba(0,0,0,.5);}
.gal-lightbox-close{
  position:absolute;top:20px;right:24px;width:38px;height:38px;border-radius:50%;
  background:rgba(255,255,255,.1);color:#fff;border:none;font-size:22px;cursor:pointer;
  transition:background .2s var(--ease);
}
.gal-lightbox-close:hover{background:rgba(255,255,255,.2);}