/* LUNER Platform — Base Theme Variables
 * Neutral fallback defaults for every theme token. A master template must render
 * acceptably with ONLY this file loaded (no client, no theme). Themes override
 * these via theme.css (static) and luner-core.applyTheme() (runtime, from theme.json).
 * Templates must never hardcode a colour — they read these custom properties only.
 */
:root {
  /* Brand palette */
  --primary-color: #C9956A;
  --secondary-color: #A3705A;
  --accent-color: #A3705A;

  /* Buttons */
  --button-color: #C9956A;
  --button-color-end: #A3705A;

  /* Typography */
  --font-primary: 'Poppins', sans-serif;
  --font-heading: 'Montserrat', sans-serif;

  /* Page background — neutral preload; campaign theme overrides at runtime */
  --background-color: #F3F4F6;
  --background-gradient: linear-gradient(135deg, rgba(243,244,246,1) 0%, rgba(229,231,235,0.85) 100%);

  /* Ink (text) */
  --ink-primary: #3B2618;
  --ink-secondary: #5C3D2A;
  --ink-tertiary: #7A5545;
  --ink-on-btn: #FAF6EF;

  /* Cards & surfaces */
  --card-bg: rgba(253,248,242,0.72);
  --card-border: rgba(210,175,145,0.50);
  --surface-bg: rgba(242,230,216,0.55);
  --surface-border: rgba(183,110,121,0.16);

  /* Effects & shapes */
  --shadow-color: rgba(120,60,40,0.20);
  --radius-card: 24px;
  --radius-control: 14px;
}

/* Shared title alignment contract: brand fallback and primary layer titles use
 * the same centered, safe-wrap geometry in previews and rendered campaigns. */
.luner-brand-title,
.luner-layer-title {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  text-align: center;
  overflow-wrap: anywhere;
  word-break: normal;
  text-wrap: balance;
}
.luner-brand-title { margin-inline: auto; }
