/* SARAVUE v10 · App-Shell aller generierten Kundinnenseiten (build_pages.py): Kopf, Tab-Leiste / Seitenleiste, Fuß.
   Baut auf assets/v9/base.css auf (Tokens, Komponenten). Keine gestrichelten Linien, keine Texturen, kein Glas. */

/* Höhe der unteren Leisten: app.js misst sie live (SVApp.measure → :root --chrome-b). */
body.app.has-bar,body.app[data-flow],body.app[data-flow].has-bar{--chrome-b:inherit}
body.app>.app-main{padding-bottom:var(--ma-6)}

/* Mobil: kleiner Kopf nur mit Wortmarke, Navigation liegt in der Tab-Leiste */
.apphead{height:calc(48px + var(--safe-t))}
.apphead .brand svg{height:13px}
.apphead-a:empty{display:none}
.side-brand{display:none}

/* ---------- Fuß (jede Seite): Währung, Rechtslinks inkl. „Vertrag widerrufen“ (§ 356a BGB), Kanäle ---------- */
.appfoot{width:calc(100% - 2 * var(--gutter));max-width:var(--app-w);margin:var(--ma-6) auto 0;padding:0 0 calc(var(--chrome-b) + var(--ma-5));border-top:0;display:grid;gap:14px;font-size:14px;line-height:1.5;color:var(--rauch)}
body.home>.appfoot{max-width:1120px}
.appfoot .foot-cur{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;padding:6px 0;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);color:var(--tusche);font-size:15px}
.appfoot .foot-n{display:flex;flex-wrap:wrap;gap:0 18px}
.appfoot .foot-n a{display:inline-flex;align-items:center;justify-content:center;min-width:var(--tap);min-height:var(--tap);color:var(--rauch);text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:4px;font-size:14px}
.appfoot .foot-n a:hover{color:var(--tusche);text-decoration-color:currentColor}
.appfoot .foot-n .foot-wd{color:var(--wald);font-weight:500;text-decoration-color:color-mix(in srgb,var(--wald) 40%,transparent)}
.appfoot .foot-b{color:var(--rauch)}
.appfoot .foot-m a{color:inherit;text-underline-offset:3px}
.appfoot .foot-b a{display:inline;min-height:0}
.appfoot .foot-m a{display:inline-flex;align-items:center;min-height:32px}   /* v15 L1 #23 */
.appfoot .geo{white-space:nowrap}

/* Währungsschalter: Trefferfläche 44 px */
.cur-sw button{min-height:var(--tap)}

/* ---------- Desktop ≥ 1024 px: Seitenleiste mit Wortmarke, Navigation, Studio und Zeiten; kein Kopfbalken ---------- */
.side-foot p{margin:0;line-height:1.5}
.side-foot .side-cur{display:grid;gap:6px;justify-items:start;margin-top:6px}
@media (min-width:1024px){
  body.app{grid-template-rows:1fr;grid-template-areas:"side main"}
  body.app.has-aside{grid-template-areas:"side main aside"}
  body.app>.apphead{display:none}
  .tabbar,body[data-flow] .tabbar{top:0;height:100vh;height:100dvh;padding:28px 20px 24px;gap:2px}
  .side-brand{display:flex;align-items:center;min-height:var(--tap);margin:0 8px 18px;color:var(--tusche)}
  .side-brand svg{height:15px;width:auto}
  .side-foot{padding:16px 8px 0;gap:4px;font-size:14px}
  .side-foot .side-h{font-weight:600;color:var(--tusche);margin-bottom:4px}
  .side-hrs>div{display:flex;justify-content:space-between;gap:12px;padding:3px 0}
  .app-aside{top:0;height:100vh;height:100dvh}
  body.app>.appfoot{grid-column:2;padding-bottom:calc(var(--chrome-b) + var(--ma-6))}   /* v15 L1 #10 / F1 #1: feste Kaufleiste (Gutschein) verdeckt den Fuß nicht mehr */
  body.app.has-aside>.appfoot{grid-column:2}
}

/* Kopf im Buchungsfluss: der Flow-Kopf (in #app) ersetzt ihn mobil */
@media (max-width:1023.98px){body[data-flow]>.apphead{display:none}}

/* Druck: nur Inhalt */
@media print{.apphead,.tabbar,.bar,.cta-bar,.appfoot,.app-aside{display:none!important}body.app{display:block}}

/* Sprunglink: 44 px Trefferfläche, sichtbar erst bei Fokus (base.css .skip) */
.skip{display:inline-flex;align-items:center;min-height:var(--tap);padding:0 16px}

/* v10: Einladungs-/Code-Link beim Öffnen (site.js, #sh-invite): ruhiges Sheet, zwei Wege */
.invite-sheet .sheet-body p{margin:0;color:var(--tusche)}
.invite-sheet .sheet-foot{display:grid;gap:8px}

/* v11: ehrlicher Bildhinweis im Fuß */
.appfoot .foot-ki{white-space:normal}

/* UX v11: ruhige Erinnerung nach „Erst umsehen“ (Einladung, Gutschein, Code) – eine Zeile, schließbar, bis zur Buchung */
.sv-remind{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:0 8px;margin:0 0 var(--ma-4);padding:2px 0 2px 16px;border-radius:var(--r-1);background:var(--gruen);color:var(--tusche)}
.sv-remind-t{margin:0;min-width:0;font-size:15px;line-height:1.35;padding-block:8px}
.sv-remind-t b{font-weight:600;white-space:nowrap}
.sv-remind .textlink{white-space:nowrap}
.sv-remind-x{flex:none;width:var(--tap);height:var(--tap);border:0;background:none;display:grid;place-items:center;color:var(--tusche);border-radius:50%;cursor:pointer}
.sv-remind-x::after{content:"";width:12px;height:12px;background:linear-gradient(45deg,transparent calc(50% - .8px),currentColor calc(50% - .8px),currentColor calc(50% + .8px),transparent calc(50% + .8px)),linear-gradient(-45deg,transparent calc(50% - .8px),currentColor calc(50% - .8px),currentColor calc(50% + .8px),transparent calc(50% + .8px))}
.sv-remind-x:focus-visible{outline:2px solid var(--wald);outline-offset:-2px}
@media print{.sv-remind{display:none}}

/* ---------- v15 (X1): Währung nur bei aktiver CHF-Wahl, schlanker Fuß im Buchungsfluss ---------- */
/* CHF-Schalter ist auf öffentlichen Seiten weg (Kasse/Konto behalten ihn). Wer früher CHF gewählt hat, sieht im Fuß den Weg zurück zu Euro. */
html:not([data-cur="CHF"]) .appfoot .foot-cur{display:none}
/* Buchungsfluss (/buchen/): keine SEO-Linkliste, kein Währungsschalter im Fuß; Rechtslinks inkl. „Vertrag widerrufen“ bleiben */
body[data-flow] .appfoot .foot-cur,body[data-flow] .appfoot .foot-svc{display:none}
body[data-flow]>.appfoot{margin-top:var(--ma-5);gap:8px}
