/* theme.css — apparence commune au shell et à TOUTES les sous-apps.
   Servi par le shell (/static/theme.css) et référencé par chaque module : c'est la
   seule chose que les modules partagent visuellement. Chacun garde son propre CSS pour
   ce qui lui est spécifique — l'iframe isole le reste. */

:root{
  --bg:#0f1117; --card:#161b27; --line:#1e2535; --line2:#1a2234;
  --txt:#e2e8f0; --txt2:#94a3b8; --dim:#64748b; --dim2:#475569;
  --accent:#60a5fa; --accent-bg:#1e2d45; --accent-line:#2d4a70;
  --ok:#10b981; --ok-txt:#34d399; --warn:#f59e0b; --warn-txt:#fbbf24;
  --danger:#ef4444; --danger-txt:#f87171;
}

*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:14px}

h2{font-size:19px;color:#f1f5f9;margin-bottom:4px}
h3{font-size:13px;color:var(--txt2);margin-bottom:14px}
.hint{font-size:12px;color:var(--dim);margin-bottom:18px}
.loading{color:var(--dim2);font-size:13px;padding:22px}

/* Blocs */
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:18px}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin-bottom:22px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:15px}
.kpi .v{font-size:26px;font-weight:700;color:#f1f5f9}
.kpi .l{font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:.5px;margin-top:3px}
.kpi.ok .v{color:var(--ok)} .kpi.warn .v{color:var(--warn)}
.kpi.danger .v{color:var(--danger)} .kpi.blue .v{color:var(--accent)}

/* Tableaux */
table{width:100%;border-collapse:collapse}
th{font-size:11px;color:var(--dim);text-align:left;padding:9px 12px;background:var(--bg);
  text-transform:uppercase;letter-spacing:.4px}
td{padding:10px 12px;font-size:13px;border-bottom:1px solid var(--line2)}
tr:last-child td{border-bottom:none}
tbody tr:hover td{background:var(--line2)}
.scroll-x{overflow-x:auto}          /* un tableau large défile DANS son cadre, jamais la page */

/* Pastilles et étiquettes */
.pill{padding:2px 9px;border-radius:9px;font-size:11px;white-space:nowrap;display:inline-block}
.b-l1{background:#1a3a2a;color:var(--ok-txt)} .b-l2{background:#1a2f4a;color:var(--accent)}
.b-l3{background:#3a1a1a;color:var(--danger-txt)} .b-urgent{background:#3a2a0a;color:var(--warn-txt)}
.st-new{background:#1a2535;color:var(--txt2)}
.tag{display:inline-block;background:#1a2535;color:var(--txt2);font-size:10px;
  padding:1px 7px;border-radius:7px;margin:2px 3px 0 0}

/* Messages */
.note{font-size:12px;color:var(--dim);background:#0f1525;border-left:3px solid #3b82f6;
  padding:8px 12px;border-radius:0 6px 6px 0;margin-bottom:14px}
.warnbox{font-size:12px;color:var(--warn-txt);background:#1f1605;border-left:3px solid #a16207;
  padding:8px 12px;border-radius:0 6px 6px 0;margin-bottom:14px}
.err{background:#1f0a0a;border-left:3px solid var(--danger);color:#fca5a5;
  padding:9px 12px;border-radius:0 6px 6px 0;font-size:12px;margin-bottom:14px}
.ok{background:#0a1f0a;border-left:3px solid var(--ok);color:#6ee7b7;
  padding:9px 12px;border-radius:0 6px 6px 0;font-size:12px;margin-bottom:14px}

/* Contrôles */
.btn{background:var(--accent-bg);border:1px solid var(--accent-line);color:var(--accent);
  padding:7px 12px;border-radius:7px;cursor:pointer;font-size:12px}
.btn:hover{background:#254a6a}
.btn:disabled{opacity:.5;cursor:not-allowed}
.seg{display:flex;gap:6px;margin-bottom:14px}
.seg button{padding:5px 12px;border:1px solid var(--line);background:transparent;color:var(--txt2);
  border-radius:7px;cursor:pointer;font-size:12px}
.seg button.active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent-line)}

/* Onglets internes d'un module (les « sous-menus ») */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;flex-wrap:wrap}
.tab{padding:9px 14px;font-size:13px;color:var(--txt2);cursor:pointer;border-bottom:2px solid transparent}
.tab:hover{color:var(--txt)}
.tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.tab .badge{margin-left:7px;background:#334155;color:#cbd5e1;font-size:10px;padding:1px 6px;border-radius:10px}
.hidden{display:none !important}

/* État de chargement, partagé par le shell et les modules */
.stale{opacity:.6;transition:opacity .12s}
body:after{content:'';position:fixed;top:0;left:0;height:2px;width:0;background:var(--accent);
  z-index:9998;transition:width .25s ease-out;opacity:0}
body.busy:after{width:70%;opacity:1;transition:width 8s cubic-bezier(0,.8,.2,1)}
