/* ═══════════════════════════════════════════════════════════════════════════
 * admin.css — Design system PARTAGÉ des pages outils api-dvf (debug.php, help.php).
 * Thème CLAIR conforme au design figé (docs/UX_SPECIFICATION.md §12) :
 *   primary emerald #10b981 · secondary teal #14b8a6 · accent indigo #4f46e5 · violet #8b5cf6.
 * Icônes = Font Awesome (jamais d'emoji). À charger AVEC Tailwind CDN + FA 6.5.0.
 * Règle d'or #41 — ne jamais remettre un <style> sombre par page.
 * ═══════════════════════════════════════════════════════════════════════════ */
:root {
  --primary:#10b981; --primary-d:#059669; --secondary:#14b8a6;
  --accent:#4f46e5; --violet:#8b5cf6;
  --ok:#16a34a; --warn:#b45309; --warn-bg:#fef3c7; --err:#dc2626; --err-bg:#fee2e2;
  --info:#4f46e5; --grn-bg:#dcfce7;
  --bg:#f8fafc; --card:#ffffff; --bd:#e2e8f0; --tx:#1e293b; --mut:#64748b;
}
* { box-sizing:border-box; }
body {
  margin:0; background:var(--bg); color:var(--tx);
  font:14px/1.55 'Inter', system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
}
.wrap { max-width:1100px; margin:0 auto; padding:24px 18px 60px; }
h1 { font-family:'Space Grotesk','Inter',sans-serif; font-size:22px; margin:0 0 4px; color:#0f172a; }
h1 .v { font-size:13px; color:var(--primary-d); border:1px solid var(--bd); border-radius:6px; padding:2px 8px; vertical-align:middle; }
.sub { color:var(--mut); margin:0 0 18px; }
a { color:var(--accent); text-decoration:none; }
a:hover { text-decoration:underline; }
code, .ex code { background:#f1f5f9; color:var(--accent); padding:1px 6px; border-radius:5px; font:12.5px 'JetBrains Mono', ui-monospace, monospace; }

/* Bandeau (self-check, alerte) */
.banner { padding:12px 16px; border-radius:10px; margin:0 0 20px; font-weight:600; }
.banner.ok  { background:var(--grn-bg); border:1px solid var(--ok); color:var(--ok); }
.banner.ko  { background:var(--err-bg); border:1px solid var(--err); color:var(--err); }
.banner small { display:block; font-weight:400; color:var(--tx); margin-top:6px; }

/* Cartes (debug.php) */
.card { background:var(--card); border:1px solid var(--bd); border-radius:12px; margin:0 0 16px; box-shadow:0 1px 2px rgba(15,23,42,.04); overflow:hidden; }
.card-head { padding:12px 16px; border-bottom:1px solid var(--bd); font-weight:700; color:#0f172a; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.card-body { padding:14px 16px; }

/* Groupes (help.php) */
.grp { margin:22px 0 8px; font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--violet); font-weight:700; }
.intro { background:var(--card); border:1px solid var(--bd); border-radius:10px; padding:14px 16px; margin:0 0 8px; color:var(--tx); }
.intro code { background:#f1f5f9; color:var(--warn); }
.links { margin:16px 0; display:flex; gap:10px; flex-wrap:wrap; }
.links a { background:var(--card); border:1px solid var(--bd); border-radius:8px; padding:8px 12px; color:var(--tx); }
.links a:hover { border-color:var(--primary); text-decoration:none; }

/* Tables claires zébrées */
table { width:100%; border-collapse:collapse; background:var(--card); border:1px solid var(--bd); border-radius:10px; overflow:hidden; }
th, td { padding:9px 12px; text-align:left; border-bottom:1px solid var(--bd); vertical-align:top; }
th { background:#f1f5f9; color:var(--mut); font-size:12px; font-weight:700; }
tr:last-child td { border-bottom:none; }
tbody tr:nth-child(even) td { background:#fafcff; }
.act { font-weight:700; color:var(--primary-d); white-space:nowrap; font-family:'JetBrains Mono', ui-monospace, monospace; }
.req { color:var(--tx); } .opt { color:var(--mut); }
.ex a { text-decoration:none; }

/* Badges (pastilles palette) */
.badge { font-size:10px; padding:2px 7px; border-radius:6px; font-weight:700; display:inline-block; }
.badge.get { background:rgba(79,70,229,.12); color:var(--accent); }
.badge.adm { background:var(--warn-bg); color:var(--warn); }
.badge.ok  { background:var(--grn-bg); color:var(--ok); }
.badge.warn{ background:var(--warn-bg); color:var(--warn); }
.badge.err { background:var(--err-bg); color:var(--err); }
.badge.info{ background:rgba(20,184,166,.15); color:#0f766e; }

/* Boutons */
.btn, .dl-btn { display:inline-block; background:var(--primary); color:#fff; border:none; border-radius:8px; padding:8px 14px; font-size:13px; font-weight:600; cursor:pointer; text-decoration:none; }
.btn:hover, .dl-btn:hover { background:var(--primary-d); text-decoration:none; }
.dl-btn.sm { padding:4px 9px; font-size:12px; }
.btn.secondary { background:var(--secondary); }
.btn.warn { background:var(--warn); }

/* Alertes en bloc (debug.php) */
.alert { padding:10px 14px; border-radius:8px; margin:0 0 12px; font-size:13px; }
.alert.ok   { background:var(--grn-bg); border:1px solid var(--ok); color:var(--ok); }
.alert.warn { background:var(--warn-bg); border:1px solid var(--warn); color:var(--warn); }
.alert.err  { background:var(--err-bg); border:1px solid var(--err); color:var(--err); }

/* Barre de nav commune des outils api-dvf */
.admin-nav { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin:0 0 18px; padding:10px 14px; background:var(--card); border:1px solid var(--bd); border-radius:10px; }
.admin-nav .brand { font-family:'Space Grotesk','Inter',sans-serif; font-weight:700; color:var(--primary-d); margin-right:6px; }
.admin-nav a { padding:6px 10px; border-radius:7px; color:var(--tx); }
.admin-nav a:hover { background:#f1f5f9; text-decoration:none; }
.admin-nav a.active { background:var(--primary); color:#fff; }

/* Bloc préformaté clair (dumps) — lisible sans thème sombre */
pre.dump { background:#f8fafc; border:1px solid var(--bd); border-radius:8px; padding:12px; overflow:auto; font:12px 'JetBrains Mono', ui-monospace, monospace; color:#334155; }

/* ── Composants debug.php (migrés ici = source unique, plus de <style> par page) ── */
:root {
  --ok-bg:#f0fdf4; --ok-bd:#bbf7d0; --err-bg:#fef2f2; --err-bd:#fecaca;
  --warn-bd:#fde68a; --info:#2563eb; --info-bg:#eff6ff; --info-bd:#bfdbfe;
  --gray:#374151; --gray-bg:#f9fafb; --gray-bd:#e5e7eb; --purple:#7c3aed; --purple-bg:#f5f3ff;
}
/* Titre d'outil (remplace le header bleu de debug.php) */
.tool-h1 { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin:0 0 4px; }
.tool-h1 .meta { font-size:12px; color:var(--mut); font-weight:400; }
/* Badges avec bordure (debug.php) — cascade sur les pastilles de base */
.badge.ok   { background:var(--ok-bg);   color:var(--ok);   border:1px solid var(--ok-bd); }
.badge.err  { background:var(--err-bg);  color:var(--err);  border:1px solid var(--err-bd); }
.badge.warn { background:var(--warn-bg); color:var(--warn); border:1px solid var(--warn-bd); }
.badge.info { background:var(--info-bg); color:var(--info); border:1px solid var(--info-bd); }
/* Alertes bordure gauche (debug.php) */
.alert { border-left:4px solid; }
.alert.ok   { background:var(--ok-bg);   border-color:var(--ok);   color:#166534; }
.alert.err  { background:var(--err-bg);  border-color:var(--err);  color:#991b1b; }
.alert.warn { background:var(--warn-bg); border-color:var(--warn); color:#92400e; }
.alert.info { background:var(--info-bg); border-color:var(--info); color:#1e40af; }
/* Formulaire de recherche IDU */
.search-form { display:flex; gap:8px; margin-bottom:16px; }
.search-form input { flex:1; padding:8px 12px; border:1px solid var(--gray-bd); border-radius:6px; font-size:13px; font-family:'JetBrains Mono', monospace; }
.search-form button { padding:8px 16px; background:var(--primary); color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:13px; font-weight:600; }
.search-form button:hover { background:var(--primary-d); }
/* Timeline mutations */
.timeline { position:relative; padding-left:24px; }
.timeline::before { content:''; position:absolute; left:8px; top:0; bottom:0; width:2px; background:#e2e8f0; }
.tl-item { position:relative; margin-bottom:16px; }
.tl-dot { position:absolute; left:-20px; top:4px; width:12px; height:12px; border-radius:50%; background:var(--info); border:2px solid #fff; box-shadow:0 0 0 2px var(--info-bd); }
.tl-dot.first { background:var(--ok); box-shadow:0 0 0 2px var(--ok-bd); }
.tl-card { background:#fff; border:1px solid var(--gray-bd); border-radius:8px; padding:12px; }
.tl-date { font-weight:700; font-size:14px; color:var(--gray); }
.tl-prix { font-size:22px; font-weight:800; color:var(--purple); }
.tl-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(120px, 1fr)); gap:8px; margin-top:8px; }
.tl-stat { background:var(--gray-bg); border-radius:6px; padding:6px 10px; }
.tl-stat-label { font-size:10px; color:#64748b; text-transform:uppercase; letter-spacing:.5px; }
.tl-stat-val { font-size:14px; font-weight:700; }
.tl-addr { font-size:12px; color:#64748b; margin-top:6px; }
.first-tag { background:var(--ok-bg); color:var(--ok); border:1px solid var(--ok-bd); font-size:10px; padding:1px 6px; border-radius:4px; font-weight:700; vertical-align:middle; }
/* Dumps JSON colorés — restent sur fond sombre (lisibilité du JSON brut, hors contrat clair) */
pre { background:#1e293b; color:#e2e8f0; padding:16px; border-radius:8px; overflow-x:auto; font-size:12px; line-height:1.5; }
.json-key { color:#93c5fd; } .json-str { color:#86efac; } .json-num { color:#fde68a; } .json-bool { color:#f9a8d4; }
.card-head { background:var(--gray-bg); }
