:root {
  --bg-main: #F5F9EF;
  --bg-surface: #E2ECDC;
  --accent-thread: #C24935;
  --btn-primary: #2F8F7A;
  --btn-secondary: #77CAB3;
  --text-main: #1F2F2A;
  --state-muted: #CFD9CD;
  --accent-gold: #E6B422;
  --radius-md: 14px;
  --radius-lg: 18px;
  --shadow-soft: 0 8px 20px rgba(31, 47, 42, 0.08);
  --font-title: "Playfair Display", serif;
  --font-body: "Roboto", sans-serif;
  --font-note: "Caveat", cursive;
  /* Backward-compatible aliases for migrated templates */
  --text: var(--text-main);
  --accent: var(--btn-primary);
  --accent-dark: #2b7a68;
  --red-thread: var(--accent-thread);
}

/* Global typography (PUBLIC + APP): keep neutral defaults.
   App-specific typography is applied in css/v2/pages/app.css. */
html, body {
  font-family: var(--font-body);
  color: var(--text-main);
  font-size: 16px;
}

/* Заголовки */
h1, h2, h3, .v2-title, .v2-app-title {
  font-family: var(--font-title);
  font-weight: 700;
  letter-spacing: 0.2px;
}

/* Кнопки */
button, .btn, .v2-btn, .v2-nav-link {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 1rem;
}

/* Длинные тексты/ввод: оставляем sans-serif для удобства чтения и редактирования */
input, textarea, select,
.v2-input, .v2-textarea,
#yuli-chat-input,
#yuli-node-title, #yuli-node-description, #yuli-node-notes {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 16px;
}
