/* Shared chrome for public feature pages that render on the base shell — the
   booking wizard (/book/) and the news pages (/news/). Those templates
   `{% extends "base/base.html" %}`, so they get `<body class="theme-base">` and
   the generic `.site-header`/`.site-footer`/`.container` markup. On a non-base
   theme that shell is otherwise unstyled: the tenant's theme.css is scoped to
   `.theme-<name>` (never matches here) and `themes/base/theme.css` isn't loaded.
   This gives that shell a calm, token-driven treatment so the whole page reads
   as one cohesive, focused flow on every theme. Token-driven (all brand colour
   stays in the design tokens); linked only on those pages, before the
   page-specific stylesheet. */

body {
  --ps-display: var(--font-heading), Georgia, "Times New Roman", serif;
  --ps-sans: var(--font-body), system-ui, -apple-system, "Segoe UI", sans-serif;
  --ps-line: 1px solid var(--color-border);
  font-family: var(--ps-sans);
  color: var(--color-text);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

/* .container is defined in themes/base/theme.css, which isn't loaded here, so
   without this the header/footer/content would sit flush to the viewport edge. */
.container { width: 100%; max-width: var(--max-width); margin-inline: auto; padding-inline: clamp(1.25rem, 5vw, 2.5rem); }

/* --- Header --------------------------------------------------------------- */
.site-header {
  position: sticky; top: 0; z-index: 20;
  background: color-mix(in srgb, var(--color-surface) 92%, transparent);
  backdrop-filter: blur(8px);
  border-bottom: var(--ps-line);
}
.site-header__inner { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.5rem 1.5rem; padding-block: 1.25rem; }
.brand { display: inline-flex; align-items: center; text-decoration: none; color: var(--color-text); }
.brand__name { font-family: var(--ps-display); font-size: clamp(1.3rem, 2.5vw, 1.7rem); letter-spacing: 0.02em; }
.brand__logo { max-height: 2.6rem; width: auto; }
.site-nav ul { display: flex; flex-wrap: wrap; gap: 0.4rem 1.6rem; list-style: none; margin: 0; padding: 0; }
.site-nav a {
  font-family: var(--ps-sans); font-size: 0.74rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.16em; text-decoration: none; color: var(--color-text);
  transition: color 0.18s ease;
}
.site-nav a:hover, .site-nav a:focus-visible, .site-nav a[aria-current="page"] { color: var(--color-primary); }

/* --- Footer --------------------------------------------------------------- */
.site-footer { margin-top: clamp(3.5rem, 8vw, 6rem); border-top: var(--ps-line); background: color-mix(in srgb, var(--color-surface) 55%, transparent); }
.site-footer__grid { display: grid; gap: 2.5rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); padding-block: 2.75rem 2rem; }
.site-footer__name { font-family: var(--ps-display); font-size: 1.4rem; margin: 0 0 0.6rem; }
.site-footer address { font-style: normal; color: var(--color-muted); margin: 0 0 0.75rem; }
.site-footer a { color: var(--color-text); }
.site-footer__hours h2 { font-family: var(--ps-sans); font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.16em; color: var(--color-muted); margin: 0 0 0.8rem; }
.site-footer .open-badge { display: inline-block; margin-bottom: 0.9rem; font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.16em; padding: 0.3rem 0.9rem; border: var(--ps-line); }
.site-footer .open-badge--open { color: #166534; border-color: #16653433; }
.site-footer .open-badge--closed { color: var(--color-muted); }
.site-footer .hours-list { display: grid; grid-template-columns: auto auto; gap: 0.3rem 1.5rem; justify-content: start; margin: 0; }
.site-footer .hours-list dt { color: var(--color-text); }
.site-footer .hours-list dd { margin: 0; color: var(--color-muted); }
.site-footer__legal { padding-block: 1.5rem; border-top: var(--ps-line); color: var(--color-muted); font-size: 0.8rem; letter-spacing: 0.03em; }
