/* ══════════════════════════════════════════════════════════════════════════════════════════════
   Immobil-iA · thème « Nuit » — choisi par le fondateur le 18/10/2026, mis en ligne le 19/10/2026
   Source : variante V2 « Nuit » des essais de contraste du 18/10 + les sept correctifs de la revue contradictoire
   (focus des champs de connexion, impression, vidéoprojecteur, nuit réchauffée vers le violine, logo « Le Fil » en fichier,
   bordures des champs à 3:1, ruban latéral). Liée juste après le <style> principal d'app.html et de login.html, donc avant
   les styles injectés par les modules. Aucune règle ne dépend du JavaScript.
   Retrait : supprimer les deux lignes <link rel="stylesheet" href="theme-nuit.css…"> (app.html, login.html) et remettre le
   logo précédent (script d'annulation du 19/10/2026).
   Principe : barre latérale de nuit violine (#1f1627 → #17111d, teinte ≈ 271°, saturation faible : ni bleu marine ni indigo),
   textes du menu clairs (AA, y compris au vidéoprojecteur), entrée active au dégradé rose → indigo ; contenu sur fond lavande,
   cartes blanches bordées ; en-tête blanc ; bandeau d'accueil sombre conservé tel quel.
   Les jetons de couleur sont redéfinis DANS .side : toute entrée ajoutée par un module (.nav-group, .nav-i, badges) suit d'office.
   ══════════════════════════════════════════════════════════════════════════════════════════════ */

/* ── 1. Jetons du contenu ── */
:root{
  --bg:#f2f0f6;                 /* fond de page lavande */
  --card:#fff;
  --line:#d8d3e2;               /* bordures des cartes (1,46:1 sur blanc, contre 1,18:1 avant) */
  --line-2:#f0eef5;
  --ink:#101015;
  --ink-2:#353342;              /* 11,9:1 sur blanc */
  --ink-3:#4a4757;              /* 8,9:1 sur blanc */
  --ink-4:#595667;              /* 7,1:1 sur blanc, 6,3:1 sur la page */
  --ph:#6a677c;                 /* texte indicatif des champs */
  --night-1:#1f1627;            /* haut de la barre latérale */
  --night-2:#17111d;            /* bas de la barre latérale, pied collant */
  --shadow-sm:0 1px 2px rgba(30,22,54,.07);
  --shadow:0 1px 2px rgba(30,22,54,.06),0 4px 12px -4px rgba(30,22,54,.14);
  --card-shadow:0 1px 2px rgba(30,22,54,.06),0 3px 10px -5px rgba(30,22,54,.12);
}

/* ── 2. Barre latérale de nuit : jetons locaux (hérités par toutes les entrées, y compris celles des modules) ── */
.side{
  --ink:#f5f2fa;                /* noms, entrée active : 16,7:1 */
  --ink-2:#e4dfee;              /* entrées du menu : 13,4:1 (haut) à 14,2:1 (bas) ; 5,2:1 au vidéoprojecteur (noir relevé de 10 %) */
  --ink-3:#c6bfd6;              /* icônes du menu : 9,8:1 */
  --ink-4:#d8d2e4;              /* titres de groupe, rôle, déconnexion : 11,9:1 à 12,6:1 ; 4,7:1 et 3,0:1 au vidéoprojecteur (noir relevé de 10 % et 20 %) */
  --line:rgba(255,255,255,.12);
  --line-2:rgba(255,255,255,.06);
  --red-text:#fca5a5;--red-bg:rgba(248,113,113,.14);
  background:linear-gradient(180deg,var(--night-1) 0%,#1a151f 55%,var(--night-2) 100%);
  border-right:1px solid #0f0c14;color:var(--ink);
  scrollbar-color:rgba(255,255,255,.2) transparent;
}
.side :focus-visible{outline-color:#c7d2fe}      /* anneau de focus clavier sur fond de nuit : 11,7:1 ; 3,0:1 au vidéoprojecteur (noir relevé de 20 %) */
/* logo « Le Fil » inverse (assets/immobil-ia-logo-inverse.svg, posé par src dans app.html) : 28 px de haut */
.side .logo .brand{height:28px;width:auto;display:block;flex-shrink:0}
/* groupes et entrées */
.side .nav-group{color:var(--ink-4)}
.side .nav-i{position:relative;color:var(--ink-2)}
.side .nav-i .ic{color:var(--ink-3)}
.side .nav-i:hover{background:rgba(255,255,255,.07);color:#fff}
.side .nav-i:hover .ic{color:#fff}
/* entrée active : voile rose → indigo + marqueur vertical au dégradé rose → indigo, texte blanc */
.side .nav-i.active{background:linear-gradient(90deg,rgba(233,30,140,.22),rgba(99,102,241,.14));color:#fff;font-weight:600;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.side .nav-i.active::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:linear-gradient(180deg,#e91e8c,#6366f1)}
.side .nav-i.active .ic{stroke:#f9a8d4}           /* 7,7:1 sur le voile actif */
/* compteurs : blanc sur #c2127a (5,74:1), liseré de nuit pour les détacher du fond */
.side :is(.nav-badge,.tel-nav-badge){background:#c2127a;color:#fff;box-shadow:0 0 0 2px var(--night-1)}
/* pied collant : Mode vocal, profil, déconnexion */
.side .side-foot{background:var(--night-2);border-top:1px solid rgba(255,255,255,.09)}
.side .side-foot::before{background:linear-gradient(rgba(23,17,29,0),var(--night-2))}
.side .a11y-toggle{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.14);color:#e4dfee}
.side .a11y-toggle:hover{border-color:#f472b6;color:#fff}
.side .a11y-toggle[aria-pressed="true"]{background:var(--grad-text);border-color:transparent;color:#fff}
.side .side-user:hover{background:rgba(255,255,255,.06)}
.side .side-user .nm{color:var(--ink)}
.side .side-user .rl{color:var(--ink-4)}
.side .side-user .av{box-shadow:0 0 0 1px rgba(255,255,255,.14)}
.side .logout{color:var(--ink-4)}
.side .logout:hover{color:#fecaca;background:var(--red-bg)}
/* ruban « Démonstration » dans la barre latérale : rose clair sur voile rose (8,8:1) */
.side .cui-demo{color:#f9a8d4;background:rgba(233,30,140,.14);border-color:rgba(249,168,212,.55)}
.side .cui-demo::before{background:#f472b6}
/* tiroir mobile (≤ 820 px) : même nuit, ombre plus franche sur la page voilée */
@media(max-width:820px){ body.nav-open .side{box-shadow:0 18px 50px rgba(8,6,14,.45)} }

/* ── 3. En-tête blanc, net sur le contenu ── */
.topbar{background:rgba(255,255,255,.94);border-bottom:1px solid #d5d0df;box-shadow:0 1px 0 rgba(30,22,54,.03)}
.topbar .search{background:var(--bg);border:1px solid var(--line);color:var(--ink-4)}
.topbar .search:focus-within{border-color:var(--blue)}
::placeholder{color:var(--ph);opacity:1}
.menu-toggle{border-color:var(--line);color:var(--ink-2)}

/* ── 4. Cartes blanches bordées, ombre nette ── */
.kpi{border-color:var(--line);box-shadow:var(--card-shadow)}
:is(.card,.prop,.cand,.int-card,.pige-card,.est-type,.api-down,.chat-wrap){box-shadow:var(--card-shadow)}
.cand.top{box-shadow:var(--card-shadow)}
.cand-g{background:#fff}
.chip{border-color:var(--line)}

/* ── 5. Ruban « Démonstration » de bas de page : fond clair opaque (5,2:1) ── */
body .cui-demo{background:#fdf0f7;border-color:rgba(194,18,122,.32)}

/* ── 6. Connexion (login.html) : même fond de page, champs blancs bordés, encadré lisible ── */
main.left .field{box-shadow:var(--shadow-sm)}
main.left .field .ic{color:var(--ink-4)}
main.left .hint{background:#fff;border:1px solid var(--line);color:var(--ink-4)}
main.left .hint b{color:var(--ink-2)}
/* logo « Le Fil » avec la mention « suite Assist-iA » (assets/immobil-ia-logo-signature.svg) : 44 px de haut */
main.left .logo .brand{height:44px;width:auto;display:block}

/* ── 7. Champs bordés à 3:1 au moins (WCAG 1.4.11) : #857f93 = 3,85:1 sur blanc, 3,40:1 sur la lavande.
      Spécificité (0,2,2) pour passer devant les règles des écrans et des modules (.modal input, .ii, .cand-g input…) ;
      :not(:focus) laisse s'appliquer les règles de focus roses existantes. ── */
:root{--line-input:#857f93}
body :is(input:not([type=checkbox],[type=radio],[type=range],[type=hidden],[type=file],[type=color],[type=submit],[type=button],[type=reset],[type=image]),select,textarea):not(:focus){border-color:var(--line-input)}
#a_eprov:not(:focus),#a_ekey:not(:focus){border-color:var(--line-input)}
main.left .field:not(:focus-within),.topbar .search:not(:focus-within){border-color:var(--line-input)}
main.left .field:focus-within{border-color:var(--rose);box-shadow:0 0 0 3px rgba(233,30,140,.14)}

/* ── 8. Impression : ni barre latérale, ni en-tête, ni tiroir ; le contenu prend toute la page ; bandeau d'accueil clair ── */
@media print{
  .side,.topbar,.nav-backdrop{display:none!important}   /* le ruban « Démonstration » (.cui-foot) reste imprimé */
  .app{grid-template-columns:1fr}
  .content{padding:0}
  .hero-bar{color:#101015;background:#fff!important;border:1px solid #d8d3e2}
  .hero-bar::before,.hero-bar::after{display:none!important}
  .hero-bar h1{color:#101015!important}
  .hero-bar :is(.hb-eyebrow,.hb-sub,.hb-stat .l){color:#4a4757!important}
  .hero-bar .hb-stat .v{background:none!important;color:#c2127a!important;-webkit-text-fill-color:#c2127a}
}
