/* TechPrint — Référentiel commun écran, graphiques et impression. */
:root {
  /* Identité */
  --tp-navy: #102a5c;
  --tp-primary: #2563eb;
  --tp-primary-hover: #1d4ed8;
  --tp-primary-soft: #eff6ff;
  --tp-primary-border: #93b4eb;
  --tp-on-primary: #ffffff;
  /* Texte et surfaces */
  --tp-ink: #142842;
  --tp-text: #334155;
  --tp-muted: #52647a;
  --tp-placeholder: #64748b;
  --tp-surface: #ffffff;
  --tp-background: #f5f7fb;
  --tp-surface-alt: #f8fafc;
  --tp-border: #dbe5f0;
  --tp-border-strong: #cbd9eb;
  --tp-control-border: #6889b5;
  --tp-input-fill: #f5f9ff;
  --tp-input-hover: #e9f2ff;
  /* Statuts, toujours accompagnés d'un texte */
  --tp-success: #187344;
  --tp-success-soft: #ecfdf3;
  --tp-success-border: #b6dec6;
  --tp-warning: #8a5a0a;
  --tp-warning-soft: #fffbeb;
  --tp-warning-border: #e8cf92;
  --tp-danger: #bd3737;
  --tp-danger-soft: #fef2f2;
  --tp-danger-border: #edbcbc;
  --tp-neutral: #64748b;
  /* Graphiques : même palette sur tous les supports */
  --tp-chart-actual: var(--tp-primary);
  --tp-chart-target: var(--tp-neutral);
  --tp-chart-grid: var(--tp-border);
  --tp-chart-label: var(--tp-muted);
  /* Typographie locale, disponible sans service externe */
  --tp-font: "Segoe UI", Arial, sans-serif;
  --tp-size-caption: 11px;
  --tp-size-label: 12px;
  --tp-size-body: 14px;
  --tp-size-title: 25px;
  --tp-size-kpi: 29px;
  --tp-leading: 1.5;
  --tp-weight-normal: 400;
  --tp-weight-medium: 600;
  --tp-weight-bold: 700;
  --tp-weight-number: 800;
  /* Rythme et composants */
  --tp-space-1: 4px;
  --tp-space-2: 8px;
  --tp-space-3: 12px;
  --tp-space-4: 16px;
  --tp-space-5: 20px;
  --tp-space-6: 24px;
  --tp-space-8: 32px;
  --tp-space-10: 40px;
  --tp-radius-sm: 6px;
  --tp-radius-control: 8px;
  --tp-radius-card: 12px;
  --tp-radius-large: 16px;
  --tp-radius-pill: 999px;
  --tp-control-height: 40px;
  --tp-focus: 3px solid var(--tp-primary);
  --tp-focus-offset: 3px;
  --tp-shadow: 0 2px 12px #102a5c07;
  --tp-shadow-action: 0 3px 10px #2563eb14;
}
*, *::before, *::after { box-sizing: border-box; }
body { font-family: var(--tp-font); color: var(--tp-ink); }
button, input, select, textarea { font: inherit; }
button, [role="button"], summary { cursor: pointer; }
button:focus-visible, a:focus-visible, summary:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: var(--tp-focus);
  outline-offset: var(--tp-focus-offset);
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; scroll-behavior: auto !important; }
}
@media print {
  :root { --tp-shadow: none; --tp-shadow-action: none; }
  body { background: var(--tp-surface); font-family: var(--tp-font); color: var(--tp-ink); }
  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  a { color: var(--tp-primary); }
}
