/* ============================================================
   sorva-theme.css · feuille de thème commune Sorva
   Source de vérité unique : /srv/sorva-brand/theme/sorva-theme.css
   Servie en same-origin par chaque vhost via «location = /sorva-theme.css».
   Règle Sorva : jamais de tiret cadratin (lu «IA»). On utilise «·».
   Principe : expose des variables + pose l'accent cuivre, la typo et des
   radius/ombres doux sur les éléments PRIMAIRES seulement. Le reste (mapping
   de variables propres à une app, masquage de rubriques) vit dans sorva-app.css.
   ============================================================ */

/* --- Fontes self-hosted (CSP Firefly font-src 'self' bloque les CDN Google) --- */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/sorva-fonts/inter.woff2') format('woff2');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 500 700;
  font-display: swap;
  src: url('/sorva-fonts/cormorant.woff2') format('woff2');
}

/* --- Tokens Sorva (palette APP · le hub est la référence) --- */
:root {
  --sorva-bg:          #f5f6f8;
  --sorva-card:        #ffffff;
  --sorva-line:        #e6e8ee;
  --sorva-line-strong: #d7dae2;
  --sorva-ink:         #1f2430;
  --sorva-muted:       #6b7280;
  --sorva-faint:       #9aa1ad;
  --sorva-accent:        #b9905b;
  --sorva-accent-hover:  #a87f4d;
  --sorva-accent-strong: #8c6638;
  --sorva-accent-soft:   #f3ead9;
  --sorva-accent-ring:   rgba(185,144,91,.18);
  --sorva-up:   #18a058;
  --sorva-down: #d03050;
  --sorva-radius:    12px;
  --sorva-radius-sm: 8px;
  --sorva-shadow-soft:   0 1px 2px rgba(31,36,48,.06), 0 1px 3px rgba(31,36,48,.04);
  --sorva-shadow-strong: 0 6px 24px rgba(31,36,48,.10), 0 2px 6px rgba(31,36,48,.06);
  --sorva-sans:  'Inter', 'Noto Sans SC', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --sorva-serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
}

/* Chinois : priorité au CJK système si Noto Sans SC absent. */
[lang="zh"], [lang^="zh-"] {
  --sorva-sans: 'Noto Sans SC', 'Inter', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;
}

/* ============================================================
   Couche neutre et prudente : uniquement des hooks transverses et sûrs.
   Aucune règle ne masque ni ne casse une fonction ; lisibilité préservée.
   La spécificité (0,0,1) cède aux règles de nav propres à chaque app.
   ============================================================ */

a            { color: var(--sorva-accent); }
a:hover,
a:focus      { color: var(--sorva-accent-hover); }

:focus-visible {
  outline: 2px solid var(--sorva-accent);
  outline-offset: 2px;
}

input:focus, select:focus, textarea:focus {
  border-color: var(--sorva-accent) !important;
  box-shadow: 0 0 0 3px var(--sorva-accent-ring) !important;
}

::selection { background: var(--sorva-accent-soft); color: var(--sorva-ink); }

/* Boutons d'action primaire (classes Bootstrap stables, partagées Firefly). */
.btn-primary, .btn-success {
  background-color: var(--sorva-accent) !important;
  border-color: var(--sorva-accent) !important;
  color: #fff !important;
}
.btn-primary:hover, .btn-primary:focus,
.btn-success:hover, .btn-success:focus {
  background-color: var(--sorva-accent-hover) !important;
  border-color: var(--sorva-accent-hover) !important;
}

/* Surfaces conteneurs : radius et ombre douce, sans imposer de couleur de fond. */
.box, .info-box, .small-box, .modal-content, .panel {
  border-radius: var(--sorva-radius) !important;
  box-shadow: var(--sorva-shadow-soft) !important;
}

/* Typo : Inter sur le corps (sans forcer tout l'arbre · préserve les icônes). */
body { font-family: var(--sorva-sans); }

h1, h2, .content-header h1 {
  font-family: var(--sorva-serif);
  font-weight: 600;
  letter-spacing: 0.018em;
}
