/* Public site styles for Miracolo the Musical.
   Colours are driven by CSS custom properties so the active theme (chosen in
   Settings) can override them. The :root block below is the built-in default
   ("White"); page.ejs injects an inline <style> that overrides it with
   whatever theme is currently saved. See src/services/themes.js. */
:root {
  --m-bg: #ffffff;
  --m-text: #1f2d3d;
  --m-nav-bg: #ffffff;
  --m-nav-text: #2f5d8a;
  --m-accent: #3a86c8;
  --m-accent-text: #ffffff;
  --m-border: #e3e8ee;
  --m-muted: #5b6b7d;
  --m-panel: #ffffff;
  --m-font: 'Merriweather';
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--m-font), Georgia, serif;
  background: var(--m-bg);
  color: var(--m-text);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; }
a { color: inherit; }

/* --- Site branding (logo / name / tagline) --------------------------------- */
.m-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 22px 20px 8px;
  background: var(--m-nav-bg);
  text-align: center;
}
.m-brand-link {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
  color: var(--m-nav-text);
}
.m-brand-logo { max-height: 88px; width: auto; display: block; }
.m-brand-name {
  font-family: var(--m-title-font, var(--m-font)), Georgia, serif;
  color: var(--m-title-color, inherit);
  font-size: 26px;
  font-weight: 700;
  letter-spacing: .02em;
}
.m-brand-tagline {
  margin: 0;
  color: var(--m-muted);
  font-size: 14px;
  font-style: italic;
}

/* --- Site navigation -------------------------------------------------------- */
.m-nav {
  display: flex;
  gap: 22px;
  align-items: center;
  justify-content: center;
  padding: 14px 20px;
  background: var(--m-nav-bg);
  border-bottom: 1px solid var(--m-border);
  flex-wrap: wrap;
}
.m-nav a {
  color: var(--m-nav-text);
  text-decoration: none;
  font-family: var(--m-nav-font, 'Montserrat'), Arial, sans-serif;
  font-size: 14px;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.m-nav a.active, .m-nav a:hover { color: var(--m-accent); }

/* Nested-page dropdown menus */
.m-nav-group { position: relative; }
.m-nav-sub {
  display: none;
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  background: var(--m-nav-bg);
  border: 1px solid var(--m-border);
  border-radius: 6px;
  padding: 6px 0;
  min-width: 170px;
  z-index: 50;
  flex-direction: column;
  box-shadow: 0 6px 20px rgba(15, 23, 35, .12);
}
.m-nav-group:hover .m-nav-sub { display: flex; }
.m-nav-sub a { padding: 8px 18px; white-space: nowrap; }
.m-nav-sub a:hover { background: var(--m-bg); }
.m-nav-sub a.m-nav-sub2 { padding-left: 34px; font-size: 12px; opacity: .85; }

/* --- Sections + positioned elements ---------------------------------------- */
.m-section {
  position: relative;
  width: 100%;
  overflow: hidden;
}
.m-section-inner {
  position: absolute;
  inset: 0;
  width: 960px;
  max-width: 100%;
  margin: 0 auto;
}
.m-el { position: absolute; }
.m-text { width: 100%; height: 100%; overflow: hidden; word-wrap: break-word; }
.m-el-image img { display: block; }

.m-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background: var(--m-accent);
  color: var(--m-accent-text);
  text-decoration: none;
  border-radius: 6px;
  font-family: 'Montserrat', Arial, sans-serif;
}

/* --- Audio player ----------------------------------------------------------- */
.m-audio {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  height: 100%;
  background: var(--m-panel);
  border: 1px solid var(--m-border);
  border-radius: 8px;
  padding: 0 14px;
}
.m-audio-btn {
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: none;
  background: var(--m-accent);
  color: var(--m-accent-text);
  font-size: 15px;
  cursor: pointer;
}
.m-audio-btn.playing { background: #ff6b6b; color: #fff; }
.m-audio-label {
  font-family: 'Montserrat', Arial, sans-serif;
  font-size: 14px;
  color: var(--m-muted);
}

/* --- Auto page title (optional H1 above the page body) ---------------------- */
.m-page-title {
  font-family: var(--m-heading-font, var(--m-font)), Georgia, serif;
  color: var(--m-heading-color, var(--m-text));
  font-size: 36px;
  font-weight: 700;
  text-align: center;
  margin: 24px auto 12px;
  max-width: 960px;
  padding: 0 20px;
}

/* --- Footer styling --------------------------------------------------------- */
/* Footer section text inherits these via the published footer HTML wrapper. */
.m-section-footer .m-text,
.m-section-footer .m-button {
  font-family: var(--m-footer-font, var(--m-font)), Georgia, serif;
}
.m-section-footer .m-text {
  color: var(--m-footer-color, inherit);
}

/* --- Shop highlights on the home page -------------------------------------- */
.m-home-shop { padding: 30px 16px; background: var(--m-bg); border-top: 1px solid var(--m-border); }
.m-home-shop-inner { width: 1000px; max-width: 100%; margin: 0 auto; }

/* --- Draft preview banner --------------------------------------------------- */
.m-preview-banner {
  position: sticky;
  top: 0;
  z-index: 9999;
  background: #ff6b6b;
  color: #fff;
  text-align: center;
  padding: 8px;
  font-family: 'Montserrat', Arial, sans-serif;
  font-size: 13px;
}

/* --- Mobile: stack absolutely-positioned elements -------------------------- */
@media (max-width: 768px) {
  .m-section { height: auto !important; min-height: 0 !important; }
  .m-section-inner {
    position: static;
    width: 100%;
    padding: 24px 18px;
  }
  .m-el {
    position: static !important;
    width: 100% !important;
    height: auto !important;
    min-height: 40px;
    margin-bottom: 16px;
    transform: none !important;
  }
  .m-el-image img { height: auto !important; }
}
