
 :root{
   /* Charte « plateforme devis IFFEN » : neutres légèrement verts, accordés au logo. */
   --ink:#1c2a22; --ink-2:#2f3d34; --muted:#5a665e;
   --surface:#ffffff; --plane:#f4f6f1; --line:#d8dfd5; --line-2:#e7ece4; --frost:#ecf5ee;
   --brand:#0f7b3e; --brand-deep:#0b5c2e; --accent:#f39200; --lime:#bccf02;
   --ok-c:#1b7448; --ok-soft:#e3f3ea; --warn-c:#9a5800; --warn-soft:#fdf0d9;
   --danger-c:#b3261e; --danger-soft:#fbe6e4; --ring:rgba(17,24,39,.06);
   --r1:#6cbd93; --r2:#3ea273; --r3:#1a8850; --r4:#0b5c2e;
   --good:#0ca30c; --warn:#fab219; --crit:#d03b3b;
   --font:"Barlow",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
   --font-display:"Barlow Semi Condensed","Barlow",ui-sans-serif,system-ui,sans-serif;
 }
 *{box-sizing:border-box}
 body{margin:0;background:var(--plane);color:var(--ink);font-family:var(--font);
      font-size:15px;line-height:1.5;font-feature-settings:"tnum" 1,"lnum" 1;
      -webkit-font-smoothing:antialiased}
 h1,h2,h3{font-family:var(--font-display);letter-spacing:.005em}
 :focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
 ::selection{background:#c9e2d2}
 .top{background:var(--surface);border-bottom:1px solid var(--line);padding:12px 24px;display:flex;
      justify-content:space-between;align-items:center;gap:12px}
 .top .b{display:flex;align-items:center;min-height:44px}
 .top .logo{display:block;height:56px;width:auto;max-width:230px;object-fit:contain}
 .top .nav{display:flex;align-items:center;justify-content:flex-end;gap:10px;font-size:14px;color:var(--ink);text-align:right}
 .top .nav .user{font-weight:600;color:var(--ink);margin-right:2px;max-width:220px;
      white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .top .nav .icon-btn.menu-btn{display:none;background:transparent;cursor:pointer;padding:0}
 .side-scrim{display:none}
 .top .nav a{color:var(--ink);text-decoration:none}
 .top .nav .nav-link{padding:7px 12px;border-radius:6px;border:1px solid var(--line);font-weight:600}
 .top .nav .nav-link:hover,.top .nav .icon-btn:hover{background:var(--plane)}
 .top .nav .icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;
      border-radius:6px;border:1px solid var(--line);color:var(--ink)}
 .top .nav .icon-btn svg{width:18px;height:18px;stroke:currentColor;stroke-width:2;
      fill:none;stroke-linecap:round;stroke-linejoin:round}
 .wrap{margin:0 auto;padding:22px 24px 16px}
 .card{background:var(--surface);border:1px solid var(--line);border-radius:10px;
       box-shadow:0 1px 3px var(--ring);padding:22px 24px;margin-bottom:18px;overflow:hidden}
 h1{font-size:22px;font-weight:700;color:var(--ink);margin:0 0 16px;letter-spacing:-.015em}
 h2{font-size:16px;font-weight:700;color:var(--ink);margin:0 0 14px;letter-spacing:-.01em}
 .muted{color:var(--muted);font-size:13px}
 .meta{font-size:14px;color:var(--ink-2);line-height:1.6;margin-bottom:14px}
 table{width:100%;border-collapse:collapse;font-size:14px}
 th{text-align:left;color:var(--muted);padding:10px 12px;font-size:12px;font-weight:700;
     text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line)}
 td{padding:13px 12px;border-bottom:1px solid var(--line);vertical-align:middle;
     color:var(--ink-2);font-variant-numeric:tabular-nums;line-height:1.45}
 tr:last-child td{border-bottom:0}
 td strong{color:var(--ink);font-weight:600}
 .ok{color:var(--ink);font-weight:600}
 .off{color:var(--muted);font-size:13px}
 .stat{display:inline-block;background:var(--plane);border-radius:10px;padding:12px 18px;
       margin:0 10px 10px 0;text-align:center;min-width:100px}
 .stat b{display:block;font-size:22px;color:#0b5c2e}
 .slot{border:1px solid #e5e9ee;border-radius:10px;padding:14px 16px;margin-bottom:12px;
       display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
 .slot .d{font-size:14px}
 .slot .d small{color:#6b7280}
 button,.btn{background:#0f7b3e;color:#fff;border:0;border-radius:8px;padding:10px 18px;
       font-size:14px;font-weight:bold;cursor:pointer;text-decoration:none;display:inline-block}
 .btn2{background:#fff;color:#0b5c2e;border:1px solid #0f7b3e}
 /* Action destructive : distincte, jamais le geste le plus visible de la ligne. */
 .btn-danger{background:#fff;color:#b42318;border:1px solid #f0c9c9}
 .btn-danger:hover{background:#fef2f2;border-color:#b42318}
 /* Action de ligne : discrete par defaut, elle ne doit pas concurrencer le contenu
    du tableau ; elle s'affirme au survol, au moment ou on vise vraiment le bouton. */
 button.mini{background:#fff;color:#0b5c2e;border:1px solid #cbd5d1;padding:6px 12px;
       font-size:13px;font-weight:600;border-radius:7px}
 button.mini:hover{border-color:#0f7b3e;background:#f3faf6}
 button.mini.danger{color:#b42318;border-color:#f0c9c9}
 button.mini.danger:hover{background:#fef2f2;border-color:#b42318}
 button.mini:disabled{opacity:.55;cursor:default;border-color:#cbd5d1;background:#f6f7f6}
 td form{margin:0}
 /* Champ mot de passe avec bascule d'affichage. Le bouton se pose DANS le champ, a
    droite ; le rembourrage du champ lui laisse la place pour ne pas couvrir le texte. */
 .pwd-wrap{position:relative;display:block}
 .pwd-wrap input{padding-right:44px}
 .pwd-eye{position:absolute;top:6px;right:6px;height:calc(100% - 24px);width:34px;
      display:flex;align-items:center;justify-content:center;background:none;border:0;
      padding:0;cursor:pointer;color:var(--muted);border-radius:6px}
 .pwd-eye:hover{color:#0b5c2e;background:var(--plane)}
 .pwd-eye svg{width:18px;height:18px;stroke:currentColor;stroke-width:1.8;fill:none;
      stroke-linecap:round;stroke-linejoin:round}
 .inline-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:7px;
      align-items:end;margin-top:8px}
 .inline-form label{display:block;color:var(--muted);font-size:11px;font-weight:700;
      text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}
 .inline-form input{margin:0;padding:8px 9px;font-size:13px;border-radius:7px}
 /* Actions d'une conversation : elles s'empilent sur mobile plutot que de deborder. */
 .convo-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
 .convo-actions form{margin:0}
 /* Synthese : encadre clair, pose AVANT les messages, car c'est ce qu'on lit en premier. */
 .resume{border-left:3px solid #0f7b3e}
 .resume.err{border-left-color:#d03b3b}
 .resume-body{font-size:14px;line-height:1.65;color:var(--ink-2)}
 .resume-body div{margin-bottom:5px}
 .resume-body div:last-child{margin-bottom:0}
 /* Barre de pagination : discrete, sous le tableau, dans la carte. L'info de position
    ("26-50 sur 312") compte autant que les fleches : elle dit ce qu'on ne voit pas. */
 .pg{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
      padding:14px 4px 4px;border-top:1px solid var(--line);margin-top:4px}
 .pg-info{font-size:13.5px;color:#6b7280}
 .pg-nav{display:flex;align-items:center;gap:10px}
 .pg-cur{font-size:13.5px;color:var(--ink);font-weight:600;white-space:nowrap}
 .pg-go{font-size:13.5px;font-weight:600;color:#0b5c2e;text-decoration:none;
        border:1px solid #cbd5d1;border-radius:7px;padding:7px 14px;white-space:nowrap}
 .pg-go:hover{border-color:#0f7b3e;background:#f3faf6}
 .pg-off{font-size:13.5px;color:#6b7280;border:1px solid var(--line);border-radius:7px;
         padding:7px 14px;white-space:nowrap}
 input{width:100%;padding:10px 12px;border:1px solid #cbd5d1;border-radius:8px;margin:6px 0 14px;
       font-size:14px}
 .flash{background:#eaf7ef;color:#0b5c2e;border-radius:8px;padding:12px 14px;
       font-size:14px;margin-bottom:14px}
 .err{background:#fdecec;color:#b42318}
 a{color:#0f7b3e}
 .foot{padding:8px 2px 20px;font-size:12px;color:var(--muted)}
 /* ================= Tableau de bord ================= */
 /* Chiffre phare : un SEUL par vue. Chiffres proportionnels (tabular-nums ferait
    respirer artificiellement un grand nombre). */
 .hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}
 .hero .n{font-size:46px;font-weight:700;color:var(--ink);line-height:1.05;letter-spacing:-.025em}
 .hero .l{font-size:13px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;
          margin-bottom:8px}
 .hero .side{text-align:right;font-size:14px;color:var(--ink-2);line-height:1.75}
 .hero .side b{color:var(--ink);font-weight:600}

 /* Tuiles de stat : libelle, valeur, delta nomme. */
 /* Grille de tuiles autonomes : pas de fond partage, sinon la derniere rangee
    incomplete laisse une zone vide coloree. */
 .kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px}
 .kpi{background:var(--surface);border:1px solid var(--line);border-radius:10px;
      padding:16px 18px}
 .kpi .v{font-size:26px;font-weight:700;color:var(--ink);line-height:1.15;letter-spacing:-.02em}
 .kpi .l{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;
         margin-top:7px}
 .kpi .s{font-size:13px;color:var(--ink-2);margin-top:6px}
 .kpi .s.up{color:#006300;font-weight:600}

 /* Entonnoir : barres fines, extremite arrondie 4px, ancrees a la ligne de base,
    rampe ordinale (l'etape avance = teinte plus foncee). */
 .step{margin-bottom:16px}
 .step:last-child{margin-bottom:2px}
 .step .h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
          font-size:14px;color:var(--ink-2);margin-bottom:7px}
 .step .h b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
 .step .h .pct{color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
 .track{height:16px;background:#eef4f0;border-radius:4px;overflow:hidden}
 .track i{display:block;height:100%;border-radius:0 4px 4px 0;min-width:3px}

 /* Etat : couleur + LIBELLE, jamais la couleur seule. */
 .pill{display:inline-block;font-size:12px;font-weight:600;padding:4px 10px;border-radius:99px;white-space:nowrap;
       white-space:nowrap;border:1px solid transparent}
 .pill.yes{background:#e8f6e8;color:#046904;border-color:#bfe4bf}
 .pill.no{background:#fbeaea;color:#a12626;border-color:#f0c9c9}
 .pill.wait{background:#fdf4e3;color:#7a5200;border-color:#f0dcb0}
 .warn{display:flex;gap:12px;align-items:flex-start;background:#fdf4e3;color:#5c4200;
       border:1px solid #f0dcb0;border-radius:10px;padding:13px 16px;font-size:14px;
       margin-bottom:10px;line-height:1.55}
 .warn:last-child{margin-bottom:0}
 .warn .i{flex:0 0 auto;font-weight:700;color:#a35b00;font-size:14px}
 /* L'action se place a droite du texte : l'alerte dit quoi faire ET ou le faire. */
 .warn-go{margin-left:auto;flex:0 0 auto;white-space:nowrap;font-weight:600;
          color:#7a5200;text-decoration:underline;text-underline-offset:2px;font-size:13.5px}
 .warn-go:hover{color:#5c4200}
 /* Un tableau large defile DANS sa carte : la page elle-meme ne part jamais
    en scroll horizontal (la carte est en overflow:hidden, qui sinon rognerait). */
 .tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
 .tw table{min-width:640px}
 .nw{white-space:nowrap}
 .legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:14px;font-size:13px;color:var(--ink-2)}
 .legend span{display:inline-flex;align-items:center;gap:6px}
 .legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
 .dash-shell{display:grid;grid-template-columns:232px minmax(0,1fr);gap:24px;align-items:start}
 .dash-main{min-width:0}
 .dash-side{position:sticky;top:16px}
 .module-menu{background:var(--surface);border:1px solid var(--line);border-radius:10px;
      box-shadow:0 1px 3px var(--ring);padding:14px 12px;margin-bottom:16px}
 .module-menu .title{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;
      letter-spacing:.05em;margin:2px 6px 10px}
 .module-menu a{display:flex;align-items:center;justify-content:space-between;gap:8px;
      padding:10px 12px;border-radius:8px;color:var(--ink-2);text-decoration:none;font-size:14px}
 .module-menu a:hover{background:var(--plane);color:var(--ink)}
 .module-menu a.active{background:#eaf7ef;color:#0b5c2e;font-weight:700}
 .module-menu b{color:var(--ink);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
 .module-note{font-size:13px;color:var(--ink-2);line-height:1.55;padding:2px 6px 6px}
 .module-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;
      margin:2px 0 12px;padding-top:2px}
 .module-head h1,.module-head h2{margin:0}
 .module-head .eyebrow{font-size:12px;color:var(--muted);text-transform:uppercase;
      letter-spacing:.05em;margin-bottom:4px;font-weight:700}
 .module-head .hint{font-size:13px;color:var(--ink-2);text-align:right;max-width:400px;line-height:1.5}
 .module-section{scroll-margin-top:18px;margin-bottom:6px}
 .page-title{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:2px 0 16px}
 .page-title h1{font-size:24px;font-weight:700;margin:0 0 6px}
 .page-title p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.55;max-width:720px}
 .todo h2{display:flex;align-items:baseline;gap:8px}
 .todo-row{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);
      border-radius:10px;margin-bottom:8px;color:var(--ink);text-decoration:none;background:var(--surface)}
 .todo-row:last-child{margin-bottom:0}
 .todo-row:hover{border-color:#0f7b3e;background:#f3faf6}
 .todo-row.urgent{border-color:#f0c36d;background:#fdf8ec}
 .todo-row.urgent:hover{border-color:#a35b00}
 .todo-n{flex:0 0 auto;min-width:40px;height:40px;border-radius:10px;display:inline-flex;align-items:center;
      justify-content:center;font-size:18px;font-weight:700;background:#e8f3ec;color:#0b5c2e}
 .todo-row.urgent .todo-n{background:#fbe3b0;color:#7a4300}
 .todo-t{flex:1;min-width:0}
 .todo-t strong{display:block;font-size:14.5px}
 .todo-t span{display:block;font-size:13px;color:var(--muted);margin-top:2px}
 .todo-go{flex:0 0 auto;font-weight:600;font-size:13.5px;color:#0b5c2e;white-space:nowrap}
 .todo-ok{display:flex;gap:10px;align-items:center;padding:12px 14px;border-radius:10px;
      background:#e8f3ec;color:#0b5c2e;font-weight:600}
 .quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}
 .quick{display:block;background:var(--surface);border:1px solid var(--line);border-radius:10px;
      padding:16px 18px;text-decoration:none;color:var(--ink);box-shadow:0 1px 3px var(--ring)}
 .quick strong{display:block;font-size:15px;font-weight:600;margin-bottom:6px}
 .quick span{display:block;color:var(--ink-2);font-size:13px;line-height:1.5}
 .split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
 .empty{padding:20px;color:var(--muted);font-size:14px;background:var(--plane);border-radius:10px}
 .internal-wrap{max-width:none!important;padding:0}
 .internal-shell{min-height:100vh;display:grid;grid-template-columns:270px minmax(0,1fr);background:var(--plane)}
 .internal-side{min-height:100vh;background:#0b5c2e;color:#eaf7ef;display:flex;flex-direction:column;
      border-right:1px solid rgba(255,255,255,.10)}
 .internal-logo{height:74px;display:flex;align-items:center;padding:0 22px;border-bottom:1px solid rgba(255,255,255,.10)}
 .internal-logo img{height:50px;width:auto;max-width:200px;object-fit:contain}
 .internal-new{margin:16px;background:#0f7b3e;color:#fff;text-align:center;border-radius:8px;padding:12px 14px;
      font-size:13px;font-weight:800;text-decoration:none}
 .internal-new:hover{background:#0d6d37;color:#fff}
 .internal-label{font-size:11px;letter-spacing:.10em;text-transform:uppercase;color:#bdd9c9;font-weight:800;
      margin:12px 22px 8px}
 .internal-nav{padding:0 12px 10px}
 .internal-nav a{display:flex;align-items:center;gap:10px;color:#eaf7ef;text-decoration:none;border-radius:7px;
      padding:10px 11px;font-size:13px;font-weight:650;margin-bottom:4px}
 .internal-nav a:hover{background:rgba(255,255,255,.09);color:#fff}
 .internal-nav a.active{background:rgba(255,255,255,.14);box-shadow:inset 3px 0 0 #fff;color:#fff}
 .internal-nav svg{width:17px;height:17px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
 .internal-recents{padding:0 12px 10px;overflow:auto;max-height:270px}
 .internal-recent{display:block;color:#d5e5dc;text-decoration:none;padding:9px 11px;border-radius:7px;font-size:12px;
      line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}
 .internal-recent:hover{background:rgba(255,255,255,.08);color:#fff}
 .internal-account{margin-top:auto;border-top:1px solid rgba(255,255,255,.10);padding:14px 16px;
      display:flex;align-items:center;gap:10px}
 .internal-avatar{width:34px;height:34px;border-radius:99px;background:#eaf7ef;color:#0b5c2e;font-weight:800;
      display:flex;align-items:center;justify-content:center;font-size:12px;flex:0 0 auto}
 .internal-user{min-width:0;line-height:1.3}
 .internal-user strong{display:block;color:#fff;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .internal-user span{display:block;color:#bdd9c9;font-size:11px}
 .internal-logout{margin-left:auto;color:#eaf7ef;text-decoration:none;display:inline-flex;align-items:center;
      justify-content:center;width:30px;height:30px;border-radius:7px}
 .internal-logout:hover{background:rgba(255,255,255,.10);color:#fff}
 .internal-logout svg{width:17px;height:17px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
 .internal-main{min-width:0;display:flex;flex-direction:column;min-height:100vh}
 .internal-top{height:58px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;
      align-items:center;justify-content:space-between;padding:0 24px}
 .internal-top h1{font-size:16px;margin:0;color:var(--ink)}
 .internal-body{padding:22px;min-width:0}
 .assistant-home{min-height:calc(100vh - 102px);display:flex;flex-direction:column;align-items:center;
      justify-content:center;padding:26px 16px 18px}
 .assistant-welcome{text-align:center;max-width:720px;margin:auto 0 76px}
 .assistant-welcome img{height:52px;width:auto;max-width:120px;object-fit:contain;margin-bottom:18px}
 .assistant-welcome h2{font-size:21px;margin:0 0 8px;color:var(--ink)}
 .assistant-welcome p{font-size:14px;color:var(--ink-2);line-height:1.55;margin:0}
 .assistant-compose{width:min(870px,100%);border-top:1px solid var(--line);padding-top:12px;margin-top:auto}
 .assistant-compose form{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:10px;background:#fff;
      border:1px solid #dbe2de;border-radius:8px;padding:10px}
 .assistant-compose textarea{width:100%;border:0;resize:none;outline:0;min-height:34px;max-height:130px;
      font-size:14px;font-family:inherit;color:var(--ink);padding:8px;background:transparent}
 .assistant-compose button{width:36px;height:36px;border-radius:7px;padding:0;align-self:end;
      display:flex;align-items:center;justify-content:center}
 .assistant-compose button svg{width:18px;height:18px;stroke:#fff;stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round}
 .assistant-shortcuts{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:12px}
 .assistant-shortcuts a{display:block;background:#fff;color:var(--ink-2);border:1px solid #dbe2de;border-radius:8px;
      padding:9px 11px;text-decoration:none;font-size:12px;font-weight:650;text-align:center}
 .assistant-shortcuts a:hover{border-color:#0f7b3e;color:#0b5c2e;background:#f3faf6}
 .assistant-help{text-align:center;color:var(--muted);font-size:11px;margin-top:8px}
 .filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;
      align-items:end;margin:0 0 16px}
 .filters label{display:block;color:var(--muted);font-size:12px;font-weight:700;
      text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
 .filters input,.filters select{width:100%;padding:10px 12px;border:1px solid #cbd5d1;
      border-radius:8px;background:#fff;color:var(--ink);font-size:14px;margin:0}
 .filters .actions{display:flex;gap:10px;align-items:center}
 .filters .actions a{font-size:13.5px;font-weight:600;text-decoration:none}
 .filters .help{font-size:13px;color:var(--muted);line-height:1.45}
 .filters-toggle{display:none}
 .export-links{display:flex;align-items:center;justify-content:flex-end;gap:8px;
      margin:-4px 0 14px;font-size:13px;color:var(--ink-2)}
 .export-links span{margin-right:2px;color:var(--muted)}
 .export-links .btn{padding:7px 12px;font-size:13px;font-weight:600;border-radius:7px}
 .bar-list{display:grid;gap:12px}
 .bar-row{display:grid;grid-template-columns:100px minmax(0,1fr) 96px;gap:14px;align-items:center;
      font-size:14px;color:var(--ink-2);padding:2px 0}
 .bar-track{height:14px;background:#eef4f0;border-radius:5px;overflow:hidden}
 .bar-fill{height:100%;background:#0f7b3e;border-radius:0 4px 4px 0;min-width:2px}
 .bar-value{text-align:right;color:var(--ink);font-weight:600;white-space:nowrap;font-size:14px}
 /* ── Modal de confirmation ──────────────────────────────────────────────
    Remplace le confirm() natif, qui affiche l'URL du serveur et casse la charte.
    Un SEUL exemplaire par page, rempli au moment du clic : dupliquer le markup
    sur chaque ligne alourdirait une liste de 80 rappels pour rien. */
 .convo-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
 .convo-head h2{margin-bottom:6px}
 .convo-card{padding-bottom:22px}
 .conversation{display:flex;flex-direction:column;gap:14px}
 .msg-wrapper{display:flex;gap:10px;max-width:min(780px,86%);align-items:flex-start}
 .msg-wrapper.from-assistant{align-self:flex-start}
 .msg-wrapper.from-user{align-self:flex-end}
 .msg-avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;margin-top:2px}
 .msg-avatar.ai-avatar{background:#0f7b3e;color:#fff}
 .msg-avatar.user-avatar{background:#334155;color:#fff}
 .msg{padding:13px 17px;border-radius:18px;max-width:100%;position:relative}
 .msg.from-assistant{background:#ffffff;color:#1e293b;border:1px solid var(--line);border-bottom-left-radius:4px}
 .msg.from-user{background:#0f7b3e;color:#ffffff;border:none;border-bottom-right-radius:4px}
 .msg.from-system{align-self:center;background:#fff8e8;border-color:#f0dcb0;max-width:88%;margin:0 auto}
 .msg-role-badge{font-size:11.5px;font-weight:700;letter-spacing:.05em;margin-bottom:6px}
 .msg.from-assistant .msg-role-badge{color:#0b5c2e;text-transform:uppercase}
 .msg.from-user .msg-role-badge{color:#a7f3d0;text-transform:uppercase;text-align:right}
 .msg-body{font-size:14px;line-height:1.6;word-break:break-word}
 .msg.from-assistant .msg-body{color:#1e293b}
 .msg.from-user .msg-body{color:#ffffff}
 .msg.from-user .msg-body a{color:#d1fae5;text-decoration:underline}
 .msg-body p{margin:6px 0}
 .msg-body p:first-child{margin-top:0}
 .msg-body p:last-child{margin-bottom:0}
 .chat-items{list-style:none;margin:8px 0 10px;padding:0;border:1px solid var(--line);border-radius:10px;
      background:#fff;overflow:hidden}
 .chat-items .ci{display:flex;gap:12px;align-items:flex-start;padding:9px 12px;border-top:1px solid #eef2f0}
 .chat-items .ci:first-child{border-top:0}
 .chat-items .ci:nth-child(even){background:#fafcfb}
 .ci-n{flex:0 0 auto;min-width:22px;height:22px;border-radius:6px;background:#e8f3ec;color:#0b5c2e;
      font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;margin-top:1px}
 .ci-b{flex:1;min-width:0}
 .ci-t{font-weight:600;color:#0f172a;line-height:1.4;overflow-wrap:anywhere}
 .ci-s{font-size:12.5px;color:#64748b;line-height:1.4}
 .ci-m{display:flex;flex-wrap:wrap;gap:0 8px;font-size:12.5px;color:#475569;line-height:1.5;margin-top:1px}
 .ci-m span{overflow-wrap:anywhere}
 .ci-m span:not(:last-child)::after{content:"·";margin-left:8px;color:#cbd5e1}
 .ci-r{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right;max-width:45%}
 .ci-v{font-weight:700;color:#0f172a;white-space:nowrap}
 .ci-v.muted{font-weight:500;color:#94a3b8;font-size:12.5px}
 .ci-r .pill{font-size:11.5px;white-space:nowrap}
 .ci.kv{align-items:center;padding:7px 12px}
 .ci.kv .ci-t{font-weight:500;color:#334155}
 .ci.kv .ci-t strong{font-weight:500}
 .ci.kv .ci-v{white-space:normal}
 .msg-body ul.chat-list{margin:8px 0;padding-left:20px}
 .msg-body ul.chat-list li{margin:4px 0}
 .msg-body code{background:rgba(0,0,0,.06);padding:2px 6px;border-radius:4px;font-family:monospace;font-size:13px}
  .msg.from-user .msg-body code{background:rgba(255,255,255,.2);color:#fff}
  .msg-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:8px;border-top:1px solid #f1f5f9}
  .chip-btn{background:#eef4f0;color:#0b5c2e;border:1px solid #cbe0d4;border-radius:16px;padding:5px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease;display:inline-flex;align-items:center;gap:5px}
  .chip-btn:hover{background:#0f7b3e;color:#ffffff;border-color:#0f7b3e}
  .chip-btn.chip-other{background:#ffffff;color:#475569;border-color:#cbd5d1}
  .chip-btn.chip-other:hover{background:#475569;color:#ffffff;border-color:#475569}
  .ines-typing{display:inline-flex;align-items:center;gap:8px;padding:11px 15px}
  .ines-typing-label{font-size:13px;color:#64748b;font-weight:500}
  .ines-dots{display:inline-flex;gap:4px}
  .ines-dots i{width:6px;height:6px;border-radius:50%;background:#0f7b3e;display:inline-block;animation:inesbounce 1.2s infinite ease-in-out both}
  .ines-dots i:nth-child(2){animation-delay:.16s}
  .ines-dots i:nth-child(3){animation-delay:.32s}
  @keyframes inesbounce{0%,80%,100%{transform:scale(.6);opacity:.45}40%{transform:scale(1);opacity:1}}
  /* Indicateur "Ines prepare la reponse" injecte par le JS d'envoi (span.typing > i x3). */
  .typing{display:inline-flex;gap:4px;align-items:center;padding:2px 0}
  .typing i{width:6px;height:6px;border-radius:50%;background:#0f7b3e;display:inline-block;animation:inesbounce 1.2s infinite ease-in-out both}
  .typing i:nth-child(2){animation-delay:.16s}
  .typing i:nth-child(3){animation-delay:.32s}
  .ines-avatar-pulse{animation:inespulse 1.4s infinite ease-in-out}
  @keyframes inespulse{0%,100%{box-shadow:0 0 0 0 rgba(15,123,62,.22)}50%{box-shadow:0 0 0 7px rgba(15,123,62,.08)}}
  .opt-cards{display:flex;flex-direction:column;gap:6px;margin-top:10px;padding-top:8px;border-top:1px solid #f1f5f9;max-width:440px}
  .opt-card{font-family:inherit;text-align:left;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:9px 12px;cursor:pointer;transition:all .15s ease;display:flex;flex-direction:column;gap:2px;width:100%}
  .opt-card:hover{background:#eef4f0;border-color:#0f7b3e}
  .opt-card:active{transform:translateY(0)}
  .opt-label{font-size:13px;font-weight:700;color:#0f172a}
  .recap-card{border:1px solid var(--line);border-radius:10px;background:#f8faf9;padding:12px 14px;margin:2px 0 10px}
  .recap-card .recap-t{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:8px}
  .recap-card dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;font-size:14px}
  .recap-card dt{color:var(--muted);font-weight:600}
  .recap-card dd{margin:0;color:var(--ink)}
  .opt-desc{font-size:12px;color:#64748b;line-height:1.35}
  .opt-card.opt-other{border-style:dashed;background:#ffffff}
  .opt-card.opt-other .opt-label{color:#475569}
  .opt-card.opt-other:hover{border-color:#94a3b8;background:#f8fafc}
  /* Carte de SESSION structurée (choix d'une date pour le devis) */
  .opt-card.opt-sess{gap:2px;padding:10px 12px}
  .sess-head{display:flex;gap:10px;align-items:baseline;justify-content:space-between}
  .sess-titre{font-size:13.5px;font-weight:700;color:#0f172a;line-height:1.3;min-width:0}
  .sess-prix{flex:0 0 auto;font-size:13.5px;font-weight:700;color:#0b5c2e;white-space:nowrap}
  .sess-sous{font-size:12px;color:#64748b;line-height:1.35}
  .sess-bas{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-top:4px}
  .sess-meta{display:flex;flex-wrap:wrap;gap:2px 12px;font-size:12.5px;color:#334155;font-weight:600;min-width:0}
  .sess-meta>span{white-space:nowrap}
  .sess-cta{flex:0 0 auto;background:#0f7b3e;color:#fff;font-size:12px;
      font-weight:700;padding:5px 12px;border-radius:7px}
  .sess-num{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;
      border-radius:6px;background:#e8f3ec;color:#0b5c2e;font-size:11.5px;margin-right:7px;vertical-align:1px}
  .sess-tag{flex:0 0 auto;font-size:11.5px;font-weight:600;color:#64748b;background:#f1f5f9;
      border:1px solid #e2e8f0;padding:3px 8px;border-radius:7px}
  .opt-card.opt-sess.opt-info{cursor:default;background:#fff}
  .opt-card.opt-sess.opt-info:hover{background:#fff;border-color:#e2e8f0}
  .sess-prix.muted{color:#94a3b8;font-weight:600}
  .opt-card.opt-sess:hover{background:#eef4f0;border-color:#0f7b3e}
  .opt-card.opt-sess:hover .sess-cta{background:#0b5c2e}
  
  /* ── Interface de Chat Inès (Pleine Page & Ultra Pro) ── */
  .wrap.ines-wrap{max-width:100%!important;width:100%!important;padding:0!important;margin:0!important;height:calc(100vh - 66px);overflow:hidden}
  .ines-page{display:grid;grid-template-columns:280px minmax(0,1fr);gap:0;height:100%;background:#f8fafc;border-radius:0;border:none;box-shadow:none;overflow:hidden}
  .ines-history{background:#0b5c2e;color:#eaf7ef;padding:12px 10px;display:flex;flex-direction:column;min-height:0;height:100%;border-right:1px solid rgba(255,255,255,.10)}
  .ines-history-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:0 4px}
  .ines-history-title{font-size:11px;color:#bdd9c9;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
  .ines-new{display:flex;align-items:center;justify-content:center;gap:6px;background:#0f7b3e;color:#fff;text-decoration:none;border-radius:8px;padding:9px 12px;font-size:12px;font-weight:700;margin-bottom:10px;transition:background .15s ease;border:none;width:100%;cursor:pointer}
  .ines-new:hover{background:#0d6d37;color:#fff}
  .ines-thread-list{overflow-y:auto;overflow-x:hidden;display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:2px;padding-right:2px;flex:1 1 auto;min-height:0}
  
  /* Tuiles de discussion compactes */
  .ines-thread{display:block;min-width:0;text-decoration:none;color:#d5e5dc;border-radius:6px;padding:4px 8px;background:transparent;transition:background .12s ease,color .12s ease;border-left:2px solid transparent}
  .ines-thread:hover{background:rgba(255,255,255,.09);color:#fff}
  .ines-thread.active{background:rgba(255,255,255,.14);border-left-color:#fff;color:#fff}
  .ines-thread strong{display:block;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
  .ines-thread span{display:block;font-size:12px;color:#bdd9c9;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}

  .ines-history-footer{margin-top:auto;padding-top:10px;border-top:1px solid rgba(255,255,255,.12);font-size:12px;color:#bdd9c9;display:flex;flex-direction:column;gap:4px}
  .ines-history-footer a{color:#cfe3d7;text-decoration:none;display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:4px}
  .ines-history-footer a:hover{color:#fff;background:rgba(255,255,255,.08)}
  
  .ines-chat{min-width:0;background:#ffffff;overflow:hidden;height:100%;display:flex;flex-direction:column}
  .ines-topbar{height:48px;background:#ffffff;border-bottom:1px solid #e2e8f0;padding:0 20px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
  .ines-topbar-info{display:flex;align-items:center;gap:8px}
  .ines-topbar-title{font-size:14px;font-weight:700;color:#0f172a;display:flex;align-items:center;gap:6px}

  .assistant-home{flex:1 1 auto;min-height:0;height:auto;padding:16px 20px 12px;overflow:hidden;display:flex;flex-direction:column}
  .ines-welcome-hero{text-align:center;max-width:760px;margin:auto auto 16px;width:100%}
  .ines-welcome-badge{width:52px;height:52px;border-radius:50%;background:#0f7b3e;color:#fff;font-size:24px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px}
  .ines-welcome-hero h2{font-size:21px;font-weight:800;color:#0f172a;margin:0 0 6px;letter-spacing:-.02em}
  .ines-welcome-hero p{font-size:13px;color:#64748b;margin:0 0 18px;line-height:1.5}
  
  .prompt-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;max-width:740px;margin:0 auto;text-align:left}
  .prompt-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:11px 14px;cursor:pointer;transition:all .15s ease;display:flex;flex-direction:column;gap:3px}
  .prompt-card:hover{background:#ffffff;border-color:#0f7b3e}
  .prompt-card strong{font-size:12px;color:#0f172a;display:flex;align-items:center;gap:5px}
  .prompt-card span{font-size:11px;color:#64748b;line-height:1.35}

  .ines-chat .convo-card{width:min(900px,100%);margin:0 auto;border:0;box-shadow:none;background:transparent;padding:0;overflow-y:auto;flex:1 1 auto;min-height:0}
  .ines-chat .conversation{gap:12px;padding:6px 2px}
  
  .ines-chat .assistant-compose{width:min(880px,100%);margin:8px auto 0;border-top:none;padding-top:0}
  .assistant-compose form{display:grid;grid-template-columns:minmax(0,1fr) 40px;gap:8px;background:#ffffff;border:1.5px solid #cbd5d1;border-radius:14px;padding:6px 10px;align-items:center;transition:border-color .15s ease,box-shadow .15s ease}
  .assistant-compose form:focus-within{border-color:#0f7b3e;box-shadow:0 0 0 3px rgba(15,123,62,.12)}
  .assistant-compose textarea{width:100%;border:0;resize:none;outline:0;min-height:34px;max-height:120px;font-size:13.5px;font-family:inherit;color:#0f172a;padding:6px 4px;background:transparent;line-height:1.45}
  .assistant-compose button{width:36px;height:36px;border-radius:10px;padding:0;background:#0f7b3e;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease}
  .assistant-compose button:hover{background:#0b5c2e}
  .assistant-compose button svg{width:18px;height:18px;stroke:#ffffff;stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round}
  .assistant-help-bar{text-align:center;font-size:12px;color:var(--muted);margin-top:4px}
  
  .create-user-modal{position:fixed;inset:0;background:rgba(17,24,20,.48);display:none;
       align-items:center;justify-content:center;padding:20px;z-index:60}
  .create-user-modal[open]{display:flex}
 .create-user-box{background:#fff;border-radius:12px;padding:20px;max-width:520px;width:100%;
      box-shadow:0 18px 48px rgba(0,0,0,.22)}
 .create-user-box form{margin-top:12px}
 .modal{position:fixed;inset:0;background:rgba(17,24,20,.48);display:none;
       align-items:center;justify-content:center;padding:20px;z-index:50}
 .modal[open]{display:flex}
 .modal-box{background:#fff;border-radius:14px;padding:22px 24px;max-width:430px;width:100%;
       box-shadow:0 18px 48px rgba(0,0,0,.22);animation:modal-in .13s ease-out}
 @keyframes modal-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
 .modal-box h3{margin:0 0 8px;font-size:17px;color:var(--ink)}
 /* Calendrier des sessions */
 .cal-top{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:-6px 0 14px}
 .cal-table td{vertical-align:top}
 .cal-mois td{background:var(--plane);font-weight:700;color:var(--ink);font-size:14px;padding:9px 12px;
      border-top:1px solid var(--line)}
 .cal-mois span{font-weight:500;color:var(--muted);font-size:13px;margin-left:10px}
 .cal-anomalie td:first-child{box-shadow:inset 3px 0 0 #d97706}
 .cal-warn{color:#92400e;font-size:12.5px;margin-top:4px;line-height:1.4}
 .cal-acts{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:nowrap}
 .cal-note{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;max-width:420px}
 .more{position:relative}
 .more>summary{list-style:none;cursor:pointer;min-width:34px;height:31px;display:inline-flex;align-items:center;
      justify-content:center;border:1px solid #cbd5d1;border-radius:7px;background:#fff;color:#0b5c2e;
      font-weight:700;font-size:15px;line-height:1}
 .more>summary:hover,.more[open]>summary{border-color:#0f7b3e;background:#f3faf6}
 .more>summary::-webkit-details-marker{display:none}
 .more-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:20;background:#fff;border:1px solid var(--line);
      border-radius:10px;box-shadow:0 10px 30px rgba(17,24,39,.14);padding:6px;min-width:220px}
 .more-menu form{margin:0}
 .more-menu.a-droite{right:auto;left:0}
 .more-menu.en-haut{top:auto;bottom:calc(100% + 4px)}
 #cfm-yes.danger{background:var(--danger-c);border-color:var(--danger-c);color:#fff}
 #cfm-yes.danger:hover{filter:brightness(.92)}
 .more-item{display:block;width:100%;text-align:left;background:#fff;color:var(--ink);border:0;
      padding:9px 10px;border-radius:7px;font-size:13.5px;font-weight:500}
 .more-item:hover{background:var(--plane)}
 .more-item.danger{color:#b42318}
 .more-item.danger:hover{background:#fef2f2}
 .cal-modal{background:#fff;border-radius:12px;max-width:560px;width:100%;max-height:calc(100vh - 40px);
      overflow-y:auto;padding:22px 24px;box-shadow:0 20px 60px rgba(17,24,39,.25)}
 .cal-modal-large{max-width:760px}
 .cal-modal-acts{display:flex;gap:10px;justify-content:flex-end;margin-top:6px;position:sticky;bottom:-22px;
      background:#fff;padding:10px 0}
 .cal-doli>summary{cursor:pointer;list-style:none}
 .cal-doli>summary::-webkit-details-marker{display:none}
 .cal-doli>summary h2{margin:0;display:inline}
 .cal-doli>summary::before{content:'▸ ';color:var(--muted)}
 .cal-doli[open]>summary::before{content:'▾ '}
 .cal-doli[open]>summary{margin-bottom:14px}
 .modal-box .detail{background:#f4f6f5;border-radius:8px;padding:9px 11px;font-size:13px;
       font-weight:600;color:var(--ink);margin-bottom:10px;word-break:break-word}
 .modal-box .why{font-size:13px;color:#6b7280;line-height:1.5;margin:0 0 18px}
 .modal-acts{display:flex;gap:9px;justify-content:flex-end}
 .modal-acts button{padding:9px 17px;font-size:13px}
 .modal-acts .cancel{background:#fff;color:var(--ink);border:1px solid #cbd5d1}
 .modal-acts .cancel:hover{border-color:#9aa3af}
 /* ================= Charte plateforme devis IFFEN ================= */
 /* Panneaux : bordure plutôt qu'ombre ; le titre devient l'en-tête du panneau. */
 .card{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:none;padding:20px}
 .card>h2:first-child{margin:-20px -20px 18px;padding:12px 20px;border-bottom:1px solid var(--line);
      font-size:17px;font-weight:600}
 .card>h1:first-child{font-size:24px}
 h1{font-size:28px;font-weight:600;line-height:1.2;letter-spacing:.005em}
 h2{font-size:17px;font-weight:600}
 .muted{color:var(--muted)}
 a{color:var(--brand)}
 .page-title{margin:0 0 22px;align-items:flex-end}
 .page-title h1{font-size:28px;font-weight:600;margin:0}
 .page-title p{margin:4px 0 0;color:var(--muted);font-size:15px;max-width:70ch}
 /* Tableaux */
 table{font-size:14.5px}
 th{text-transform:none;letter-spacing:0;font-size:13px;font-weight:600;color:var(--muted);
     padding:9px 14px;white-space:nowrap}
 td{padding:11px 14px;border-bottom:1px solid var(--line-2);color:var(--ink)}
 tbody tr:hover td,tr:hover>td{background:#f8faf6}
 tr.cal-mois:hover td{background:var(--plane)}
 /* Boutons : principal vert plein, secondaire bordé, danger bordé rouge */
 button,.btn{background:var(--brand);color:#fff;border:1px solid transparent;border-radius:6px;padding:8px 14px;
      font-family:inherit;font-size:14.5px;font-weight:600;line-height:1.35}
 button:hover,.btn:hover{filter:brightness(1.1)}
 .btn2{background:var(--surface);color:var(--ink);border:1px solid var(--line)}
 .btn2:hover{background:var(--plane);filter:none}
 .btn-danger{background:var(--surface);color:var(--danger-c);border:1px solid #e6b3ae}
 .btn-danger:hover{background:var(--danger-soft);filter:none}
 button.mini{background:var(--surface);color:var(--ink);border:1px solid var(--line);padding:4px 10px;
      font-size:13.5px;font-weight:600;border-radius:6px}
 button.mini:hover{background:var(--plane);border-color:#b7c2b3;filter:none}
 button.mini.danger{color:var(--danger-c);border-color:#e6b3ae}
 button.mini.danger:hover{background:var(--danger-soft)}
 /* Champs */
 input,select,textarea{font-family:inherit}
 input{border:1px solid var(--line);border-radius:6px;padding:8px 11px;font-size:15px;color:var(--ink);background:var(--surface)}
 input:hover,select:hover,textarea:hover{border-color:#b7c2b3}
 input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(15,123,62,.18)}
 .filters label,.inline-form label{text-transform:none;letter-spacing:0;font-size:14px;font-weight:600;color:var(--ink)}
 .filters input,.filters select{border:1px solid var(--line);border-radius:6px;padding:8px 11px;font-size:15px}
 /* Barres de filtres à pastilles (comme la plateforme iffen-devis) */
 .pills-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px}
 .pill-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:99px;font-size:13.5px;font-weight:500;text-decoration:none;color:var(--ink);background:var(--surface);border:1px solid var(--line);transition:all .15s}
 .pill-btn.struct{border-radius:6px}
 .pill-btn:hover{background:var(--plane)}
 .pill-btn.active{background:var(--brand);color:#ffffff;border-color:var(--brand);font-weight:600}
 .pill-btn.active-sub{background:var(--frost);color:var(--ink);border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand);font-weight:600}
 /* Pastilles de statut : libellé + teinte douce */
 .pill{border:0;border-radius:99px;font-size:13px;font-weight:600;padding:2px 10px;background:var(--plane);
      color:var(--muted);box-shadow:inset 0 0 0 1px var(--line)}
 .pill.yes{background:var(--ok-soft);color:var(--ok-c);box-shadow:none}
 .pill.no{background:var(--danger-soft);color:var(--danger-c);box-shadow:none}
 .pill.wait{background:var(--warn-soft);color:var(--warn-c);box-shadow:none}
 /* Messages */
 .flash{background:var(--ok-soft);color:var(--ink);border:1px solid #b9dcc8;border-radius:6px;padding:11px 16px;font-size:14.5px}
 .flash.err,.err{background:var(--danger-soft);color:var(--ink);border-color:#efc2bd}
 .warn{background:var(--warn-soft);color:var(--ink);border:1px solid #f0d7a8;border-radius:6px}
 .warn .i,.warn-go{color:var(--warn-c)}
 .empty{background:var(--plane);border-radius:6px;color:var(--muted)}
 /* Chiffres : libellé au-dessus, grand chiffre, filet à gauche */
 .kpis{gap:20px 24px}
 .kpi{display:flex;flex-direction:column;background:transparent;border:0;border-left:2px solid var(--line);
      border-radius:0;padding:4px 0 4px 16px}
 .kpi .l{order:-1;text-transform:none;letter-spacing:0;font-size:14px;font-weight:500;color:var(--muted);margin:0}
 .kpi .v{font-family:var(--font-display);font-size:32px;font-weight:600;line-height:1.2}
 .kpi .s{font-size:13.5px;color:var(--muted);margin-top:2px}
 .hero .n{font-family:var(--font-display);font-weight:600}
 .hero .l{text-transform:none;letter-spacing:0;font-size:14px;font-weight:500}
 .quick{box-shadow:none;border-radius:8px}
 .quick:hover{border-color:#b7c2b3;background:#f8faf6}
 .todo-row{border-radius:6px}
 .todo-row.urgent{border-color:#f0d7a8;background:var(--warn-soft)}
 .todo-n{border-radius:6px;font-family:var(--font-display)}
 .more>summary{border:1px solid var(--line);border-radius:6px;color:var(--ink)}
 .more>summary:hover,.more[open]>summary{border-color:#b7c2b3;background:var(--plane)}
 .more-menu{border-radius:8px;box-shadow:0 8px 24px rgba(20,33,43,.12)}
 .more-item:hover{background:var(--frost)}
 .modal-box,.cal-modal,.create-user-box{border-radius:8px}
 .pg-go{border:1px solid var(--line);border-radius:6px;color:var(--ink)}
 .pg-go:hover{background:var(--plane);border-color:#b7c2b3}

 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);
      white-space:nowrap;border:0}
 /* Connexion : colonne étroite centrée, logo complet, panneau */
 .login{min-height:100vh;display:grid;place-items:center;padding:40px 20px}
 .login-box{width:100%;max-width:400px}
 .login-logo{display:block;width:230px;height:auto}
 .login h1{font-size:22px;margin:24px 0 20px}
 .login .card{padding:24px}
 .login label{display:block;font-size:14px;font-weight:600;margin-bottom:4px}
 .login input{margin:0 0 16px}
 .login button[type=submit]{margin-top:4px}
 .login .flash{margin:0 0 16px}
 .login .pwd-eye{top:0;height:calc(100% - 16px)}
 .login .muted{font-size:13.5px;margin-top:16px}
 /* Fluidité (maquette) : seules les COULEURS changent, en douceur (120 ms) ; rien ne bouge. */
 a,button,.btn,.btn2,.more>summary,.app-nav a,.todo-row,.quick,.pg-go,.ines-thread,.filters-toggle,
 .more-item,tbody tr td,tr>td{transition:background-color .12s ease,border-color .12s ease,color .12s ease,
      box-shadow .12s ease,filter .12s ease}
 input,select,textarea{transition:border-color .12s ease,box-shadow .12s ease}
 input[type=checkbox],input[type=radio]{width:16px;height:16px;padding:0;margin:0 8px 0 0;vertical-align:-3px;
      accent-color:var(--brand);box-shadow:none;cursor:pointer}
 /* Formulaires des fenêtres : libellé en gras foncé au-dessus du champ, listes blanches. */
 .cal-modal label.muted,.create-user-box label.muted{font-size:14px;font-weight:600;color:var(--ink)}
 .cal-modal select,.create-user-box select,.cal-modal textarea,.create-user-box textarea{background:var(--surface);
      color:var(--ink);font-size:15px}
 /* Envoi en cours : bouton grisé, libellé « Enregistrement… » (voir le script plus bas). */
 button:disabled,button.is-pending{opacity:.6;cursor:progress;filter:none}
 /* Volets repliables : la flèche pivote au lieu de changer de caractère. */
 .cal-doli>summary::before{content:'▸';display:inline-block;margin-right:6px;transition:transform .15s ease}
 .cal-doli[open]>summary::before{content:'▸';transform:rotate(90deg)}
 .create-user-modal[open]>*{animation:modal-in .13s ease-out}
 /* Icônes au trait */
 .ico{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;
      stroke-linejoin:round;flex:0 0 auto;vertical-align:-3px}
 .msg-avatar .ico{width:17px;height:17px;vertical-align:0}
 .app-nav .ico{color:var(--accent);margin-right:6px}
 .ines-welcome-badge .ico{width:26px;height:26px}
 .ines-topbar-title .ico,.prompt-card .ico{color:var(--brand)}
 .sess-meta .ico,.cal-note .ico{width:14px;height:14px;color:var(--muted);margin-right:2px}
 td .ico{color:var(--ok-c)}
 /* En-tête de page avec actions, retour, fiches en deux colonnes */
 .page-title{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
 .page-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
 .page-acts form{margin:0}
 .page-acts .btn .ico,.btn .ico{margin-right:4px}
 .retour{display:inline-block;margin:-6px 0 10px;font-size:14px;font-weight:600;color:var(--muted);text-decoration:none}
 .retour:hover{color:var(--ink)}
 .fiche{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:20px;align-items:start}
 .fiche-side{position:sticky;top:20px}
 .fiche-statut{display:flex;align-items:baseline;gap:10px;margin:-8px 0 20px}
 .fiche-montant{font-family:var(--font-display);font-size:30px;font-weight:600;margin-left:6px}
 dl.def{display:grid;grid-template-columns:minmax(110px,max-content) minmax(0,1fr);gap:9px 22px;margin:0;font-size:14.5px}
 dl.def dt{color:var(--muted)}
 dl.def dd{margin:0;min-width:0;overflow-wrap:anywhere}
 ol.etapes{list-style:none;margin:0;padding:0}
 ol.etapes li{display:flex;gap:12px;position:relative;padding-bottom:16px}
 ol.etapes li:last-child{padding-bottom:0}
 ol.etapes li::before{content:'';position:absolute;left:5px;top:14px;bottom:0;width:2px;background:var(--line)}
 ol.etapes li:last-child::before{display:none}
 .etape-point{flex:0 0 12px;height:12px;border-radius:50%;background:var(--brand);margin-top:4px;
      box-shadow:0 0 0 3px var(--ok-soft);position:relative}
 ol.etapes strong{display:block;font-weight:600}
 ol.etapes .muted{font-size:13.5px}
 ul.liste-simple{list-style:none;margin:0;padding:0}
 ul.liste-simple li{padding:8px 0;border-top:1px solid var(--line-2);font-size:14px}
 ul.liste-simple li:first-child{border-top:0;padding-top:0}
 .btn-bloc{display:block;width:100%;text-align:center;margin-top:16px}
 .grille-2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
 .field-error[hidden]{display:none}
 .recap-note{font-size:13px;color:var(--muted);margin:10px 0 0;text-align:center}
 .fiche-side dl.def{grid-template-columns:1fr;gap:2px}
 .fiche-side dl.def dt{margin-top:10px;font-size:13px}
 .fiche-side dl.def dt:first-child{margin-top:0}
 .nouveau-devis label,.confirmation label{display:block;font-size:14px;font-weight:600;margin-bottom:4px}
 .nouveau-devis label .muted{font-weight:400;margin-left:4px}
 .nouveau-devis input:not([type=checkbox]){display:block;margin:0 0 14px}
 .aide{font-size:13px;color:var(--muted);margin:-8px 0 14px}
 details.sans-date{margin:-4px 0 14px}
 details.sans-date>summary{font-size:14px;font-weight:600;color:var(--brand);list-style:none;padding:4px 0}
 details.sans-date>summary::-webkit-details-marker{display:none}
 details.sans-date[open]>summary{margin-bottom:10px}
 .recap-vivant dd{font-weight:500}
 .recap-total{font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--ink)}
 .confirmation{max-width:720px}
 .confirmation .warn{margin-bottom:14px}
 .confirm-acts{display:flex;justify-content:flex-end;gap:10px;margin-top:22px;flex-wrap:wrap}
 .confirm-acts form{margin:0}
 a.lien-fort{font-weight:600;color:var(--brand);text-decoration:none}
 a.lien-fort:hover{text-decoration:underline}
 tr[data-href]{cursor:pointer}
 th.num,td.num{text-align:right}
 button.mini.copie{color:var(--ok-c);border-color:#b9dcc8;background:var(--ok-soft)}
 a.more-item{text-decoration:none}
 .mini-conv{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}
 .mini-bulle{max-width:78%;padding:8px 12px;border-radius:12px;font-size:14px;line-height:1.45;white-space:pre-wrap;
      overflow-wrap:anywhere}
 .mini-bulle.client{align-self:flex-start;background:var(--plane);border:1px solid var(--line);border-bottom-left-radius:4px}
 .mini-bulle.equipe{align-self:flex-end;background:var(--frost);border:1px solid #c5e0cf;border-bottom-right-radius:4px}
 /* Indicateur temps réel */
 .direct{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--muted);margin:-8px 0 14px}
 .direct::before{content:'';width:8px;height:8px;border-radius:50%;background:#c3cbc0}
 .direct.on{color:var(--ok-c)}
 .direct.on::before{background:var(--ok-c);box-shadow:0 0 0 3px rgba(27,116,72,.18);animation:pulse-dot 2s ease-in-out infinite}
 @keyframes pulse-dot{50%{box-shadow:0 0 0 6px rgba(27,116,72,0)}}
 /* Sélecteur de fichier : zone de dépôt au lieu du bouton natif */
 .depot{position:relative;display:flex;align-items:center;gap:14px;border:1.5px dashed #c3cbc0;border-radius:8px;
      background:var(--plane);padding:16px 18px;margin:4px 0 14px;cursor:pointer;
      transition:border-color .12s ease,background-color .12s ease}
 .depot:hover,.depot.survol{border-color:var(--brand);background:var(--frost)}
 .depot input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0}
 .depot .ico{width:24px;height:24px;color:var(--brand)}
 .depot-txt{display:block;font-size:14.5px;color:var(--ink)}
 .depot-txt strong{color:var(--brand)}
 .depot-nom{display:block;font-size:13.5px;color:var(--muted);margin-top:2px}
 .depot.choisi{border-style:solid;border-color:#b9dcc8;background:var(--ok-soft)}
 /* Bandeau d'état (prise en main d'une conversation…) */
 .etat{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;
      background:var(--surface);padding:14px 18px;margin-bottom:18px}
 .etat-ico{width:20px;height:20px}
 .etat-txt{flex:1;min-width:220px}
 .etat-txt strong{display:block;font-size:15px;font-weight:600}
 .etat-txt span{display:block;font-size:14px;color:var(--muted);margin-top:2px}
 .etat-acts{display:flex;gap:8px;flex-wrap:wrap}
 .etat-acts form{margin:0}
 .etat-ok{background:var(--ok-soft);border-color:#b9dcc8} .etat-ok .etat-ico{color:var(--ok-c)}
 .etat-warn{background:var(--warn-soft);border-color:#f0d7a8} .etat-warn .etat-ico{color:var(--warn-c)}
 .etat-info{background:var(--frost);border-color:#c5e0cf} .etat-info .etat-ico{color:var(--brand)}
 .etat-neutral .etat-ico{color:var(--muted)}
 .champ-texte{display:block;width:100%;border:1px solid var(--line);border-radius:6px;padding:9px 11px;font-size:15px;
      color:var(--ink);background-color:var(--surface);margin:4px 0 14px;resize:vertical}
 .reponse-pied{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
 .reponse-pied .btn .ico{margin-left:4px}
 label.case{display:flex;align-items:flex-start;gap:2px;font-size:14.5px;margin:0 0 18px;cursor:pointer}
 label.case input{margin-top:3px}
 /* Validation : nos messages sous le champ, jamais les bulles du navigateur */
 [aria-invalid=true]{border-color:var(--danger-c)!important;box-shadow:0 0 0 3px rgba(179,38,30,.12)!important}
 .field-error{display:flex;gap:6px;align-items:flex-start;font-size:13.5px;line-height:1.4;color:var(--danger-c);
      font-weight:500;animation:rise .18s ease both}
 .field-error::before{content:'';flex:0 0 15px;height:15px;margin-top:2px;background-color:currentColor;
      -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 8v5M12 16h.01'/></svg>") center/contain no-repeat;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 8v5M12 16h.01'/></svg>") center/contain no-repeat}
 /* Listes déroulantes et fichiers au format de la charte (plus d'aspect « navigateur ») */
 select{-webkit-appearance:none;appearance:none;background-color:var(--surface);color:var(--ink);
      background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235a665e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 10px center;
      background-size:14px;padding-right:32px!important;border:1px solid var(--line);border-radius:6px;
      font-family:inherit;cursor:pointer}
 select[multiple]{background-image:none;padding-right:11px!important}
 .filters select{background-color:var(--surface);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235a665e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-repeat:no-repeat;
      background-position:right 10px center;background-size:14px}
 input[type=file]{padding:6px;cursor:pointer;background:var(--surface)}
 input[type=file]::file-selector-button{font-family:inherit;font-weight:600;font-size:14px;color:var(--ink);
      background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:6px 12px;margin-right:12px;
      cursor:pointer;transition:background-color .12s ease}
 input[type=file]::file-selector-button:hover{background:var(--plane)}
 /* Messages : une icône dit le ton (réussite, erreur, attention) */
 .flash{display:flex;gap:10px;align-items:flex-start}
 .flash::before,.warn .i,.cal-warn::before,.todo-ok::before{content:'';flex:0 0 18px;width:18px;height:18px;
      margin-top:1px;background-color:var(--ok-c);-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='m8 12 3 3 5-6'/></svg>") center/contain no-repeat;
      mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='m8 12 3 3 5-6'/></svg>") center/contain no-repeat}
 .flash.err::before{background-color:var(--danger-c);-webkit-mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 8v5M12 16h.01'/></svg>");mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 8v5M12 16h.01'/></svg>")}
 .warn .i{font-size:0;background-color:var(--warn-c);-webkit-mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z'/><path d='M12 9v4M12 17h.01'/></svg>");mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z'/><path d='M12 9v4M12 17h.01'/></svg>")}
 .cal-warn{display:flex;gap:6px;align-items:flex-start}
 .cal-warn::before{flex-basis:14px;width:14px;height:14px;background-color:#b45309;
      -webkit-mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z'/><path d='M12 9v4M12 17h.01'/></svg>");mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z'/><path d='M12 9v4M12 17h.01'/></svg>")}
 .todo-ok::before{background-color:var(--ok-c)}
 /* ── Animations : courtes, douces, seulement opacité / transformations (fluides) ── */
 @keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
 @keyframes fade{from{opacity:0}to{opacity:1}}
 @keyframes pop{0%{opacity:0;transform:scale(.6)}70%{opacity:1;transform:scale(1.08)}100%{transform:scale(1)}}
 @keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
 @keyframes shimmer{from{background-position:100% 0}to{background-position:0 0}}
 @keyframes progress{0%{transform:translateX(-100%) scaleX(.35)}50%{transform:translateX(25%) scaleX(.6)}
      100%{transform:translateX(100%) scaleX(.35)}}
 /* Arrivée d'une page : les blocs montent l'un après l'autre */
 ::view-transition-old(root),::view-transition-new(root){animation-duration:.2s}
 .app-main>*{animation:rise .34s cubic-bezier(.2,.7,.2,1) both}
 /* Chaque bloc animé forme sa propre couche : celui dont le menu « ⋯ » est ouvert passe devant
    les blocs suivants, sinon le menu glisse dessous et ne se clique plus. */
 .app-main>*:has(.more[open]){position:relative;z-index:30}
 /* Catalogue (Sessions, Formations, Données à vérifier) : composants de la plateforme de devis IFFEN */
 .alerte{border:1px solid var(--line);border-radius:6px;padding:12px 16px;font-size:14.5px;color:var(--ink);
      background:var(--plane);margin:0 0 16px;max-width:900px}
 .alerte.alerte-info{border-color:rgba(15,123,62,.25);background:var(--frost)}
 .alerte.alerte-ok{border-color:rgba(27,116,72,.3);background:var(--ok-soft)}
 .alerte.alerte-warn{border-color:rgba(154,88,0,.3);background:var(--warn-soft)}
 .alerte.alerte-danger{border-color:rgba(179,38,30,.3);background:var(--danger-soft)}
 .alerte-t{font-weight:600;margin:0}
 .alerte-t+div{margin-top:2px}
 .alerte ul{margin:4px 0 0;padding-left:20px}
 .alerte a{font-weight:600;color:inherit;text-decoration:underline;text-underline-offset:2px}
 .ariane{margin:0 0 8px;font-size:14px}
 .ariane a{color:var(--muted);text-decoration:underline;text-underline-offset:2px}
 .ariane a:hover{color:var(--ink)}
 .vide-etat{padding:40px 20px;text-align:center}
 .vide-etat p{margin:0;font-weight:600}
 .vide-etat div{max-width:52ch;margin:4px auto 0;color:var(--muted)}
 .pill.info{background:var(--frost);color:var(--brand)}
 .form-cat{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px}
 .form-cat .c2{grid-column:span 2} .form-cat .c3{grid-column:span 3}
 .form-cat .c4{grid-column:span 4} .form-cat .c6{grid-column:span 6}
 .form-cat label.lib{display:block;font-size:14px;font-weight:600;margin:0 0 4px}
 .form-cat label.lib .muted{font-weight:400;margin-left:4px}
 .form-cat input:not([type=checkbox]),.form-cat select,.form-cat textarea{display:block;width:100%;margin:0}
 .form-cat select,.filtres-cat select{border:1px solid var(--line);border-radius:6px;padding:8px 34px 8px 11px;font-size:15px;line-height:1.4;min-height:40px}
 .form-cat textarea{border:1px solid var(--line);border-radius:6px;padding:8px 11px;font-size:15px;color:var(--ink);
      background:var(--surface);resize:vertical}
 .form-cat .aide{margin:4px 0 0;font-size:13.5px;color:var(--muted)}
 .form-cat .field-error{margin:4px 0 0}
 .form-cat fieldset{border:1px solid var(--line);border-radius:6px;padding:16px;margin:0}
 .form-cat legend{padding:0 4px;font-size:14px;font-weight:600}
 .case-aide{display:flex;align-items:flex-start;gap:10px;font-size:14.5px;cursor:pointer;margin:0 0 12px}
 .case-aide input{margin:3px 0 0;flex-shrink:0}
 .case-aide b{font-weight:500;display:block}
 .case-aide small{display:block;font-size:13.5px;color:var(--muted)}
 .form-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:20px 0 0}
 .filtres-cat{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin:0 0 16px}
 .filtres-cat label{display:block;font-size:14px;font-weight:600;margin:0 0 4px}
 .filtres-cat select{min-width:180px}
 tr.inactive td{opacity:.6}
 .sess-anomalies{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
 .sess-anomalies li{display:flex;align-items:flex-start;gap:8px;font-size:14.5px}
 .valider-session{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}
 .valider-session label{display:block;font-size:14px;font-weight:600;margin:0 0 4px}
 .valider-session input{max-width:520px;margin:0 0 12px}
 @media (max-width:760px){
   .form-cat{grid-template-columns:minmax(0,1fr)}
   .form-cat .c2,.form-cat .c3,.form-cat .c4,.form-cat .c6{grid-column:auto}
 }
 /* Nouveau devis — formulaire de la plateforme de devis IFFEN */
 .nd-grille{display:grid;gap:24px;align-items:start;grid-template-columns:minmax(0,1fr)}
 .nd-grille [hidden]{display:none!important}
 .nd-champ select{border:1px solid var(--line);border-radius:6px;padding:8px 34px 8px 11px;font-size:15px;line-height:1.4;min-height:40px}
 @media (min-width:1280px){ .nd-grille{grid-template-columns:minmax(0,1fr) 380px} .nd-recap{position:sticky;top:24px} }
 .nd-col{min-width:0;display:flex;flex-direction:column;gap:20px}
 .nd-col .alerte{margin:0;max-width:none}
 .nd-bloc{margin:0;padding:20px}
 .nd-bloc h2{font-size:18px;font-weight:600;margin:0 0 16px;padding:0;border:0}
 .nd-orgs{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 10px}
 .nd-org-card{display:inline-flex;min-width:150px;cursor:pointer;align-items:center;gap:10px;border-radius:6px;
      border:1px solid var(--line);padding:10px 16px;font-size:16px;font-weight:600;background:var(--surface);
      transition:all .15s ease}
 .nd-org-card:hover{border-color:#b9c4ce}
 .nd-org-card.choisie{border-color:var(--brand);background:var(--frost);box-shadow:0 0 0 1px var(--brand)}
 .nd-org-card input[type="radio"]{accent-color:var(--brand);width:16px;height:16px;margin:0;cursor:pointer}
 /* Champ « Formation » : l'aide sous le champ, sans le chevaucher (la règle générale .aide remonte de 8 px) */
 [data-nd-recherche] .aide{margin:6px 0 0;font-size:13.5px;line-height:1.45}
 /* Fiche devis : bloc « Envoyer au client » (choix à gauche, détail à droite) */
 .envoi{scroll-margin-top:16px}
 .envoi-grille{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:20px}
 .envoi-choix{display:flex;flex-direction:column;gap:6px}
 .envoi-carte{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:6px;
      padding:10px 12px;cursor:pointer;background:var(--surface);transition:all .15s ease}
 .envoi-carte:hover{border-color:#b9c4ce}
 .envoi-carte.choisie{border-color:var(--brand);background:var(--frost);box-shadow:0 0 0 1px var(--brand)}
 .envoi-carte input[type="radio"]{accent-color:var(--brand);margin:3px 0 0;flex:none}
 .envoi-carte b{display:block;font-size:14.5px;font-weight:600;line-height:1.3}
 .envoi-carte small{display:block;font-size:13px;color:var(--muted);margin-top:2px}
 .envoi-panneau[hidden]{display:none}
 .envoi-panneau p{margin:0 0 8px}
 .envoi-panneau .muted{font-size:13px}
 .envoi-session{border:1px solid var(--line-2);border-radius:6px;padding:12px 14px;margin:0 0 12px}
 .envoi-session p{margin:0 0 6px}
 .envoi-docs{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
 .envoi-docs label{display:flex;gap:8px;align-items:flex-start;font-size:14.5px;cursor:pointer}
 .envoi-docs input[type="checkbox"]{margin:3px 0 0;flex:none;accent-color:var(--brand)}
 .envoi-docs .avert{color:var(--warn-c);font-size:13px}
 .envoi-champs{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));margin:0 0 12px}
 .envoi-champs label{display:block;font-size:14px;font-weight:600}
 .envoi-champs .champ-texte{margin:6px 0 0;font-weight:400}
 @media (max-width:760px){ .envoi-grille,.envoi-champs{grid-template-columns:minmax(0,1fr)} }
 .nd-tete{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 16px}
 .nd-tete h2{margin:0}
 .nd-champs{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}
 .nd-champ{display:block;margin:0}
 .nd-champ .lib{display:block;font-size:14px;font-weight:600;margin:0 0 4px}
 .nd-champ .lib .muted{font-weight:400}
 .nd-champ input,.nd-champ select,.nd-texte{display:block;width:100%;margin:0}
 .nd-large{grid-column:1 / -1}
 .nd-existant{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;background:var(--frost);
      border-radius:6px;padding:12px 16px}
 .nd-existant p{margin:0} .nd-existant-nom{font-weight:600} .nd-existant .muted{font-size:14px}
 .nd-doublon{margin:16px 0 0;border:1px solid rgba(154,88,0,.3);background:var(--warn-soft);border-radius:6px;padding:12px 16px}
 .nd-doublon p{margin:0}
 .nd-doublon ul{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
 .nd-doublon li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
 .nd-lien{background:none;border:0;padding:0;margin:12px 0 0;font:inherit;font-size:14px;font-weight:500;color:var(--muted);
      text-decoration:underline;text-underline-offset:2px;cursor:pointer;box-shadow:none}
 .nd-lien:hover{color:var(--ink);background:none}
 .nd-tete .nd-lien{margin:0}
 .nd-lien.fort{font-weight:600;color:var(--ink);margin:0}
 .nd-texte{border:1px solid var(--line);border-radius:6px;padding:10px 12px;font-size:15px}
 .nd-boutons{display:flex;flex-wrap:wrap;gap:8px}
 .nd-toutes{margin:16px 0 0}
 .nd-candidats{margin:16px 0 0} .nd-candidats p{margin:0 0 8px}
 .nd-avert{margin:12px 0 0;font-size:14.5px;color:var(--warn-c)}
 .nd-titre-formation{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
 .nd-titre-formation p{margin:0;font-size:17px;font-weight:600}
 .nd-puce{display:inline-flex;align-items:center;gap:6px;border-radius:99px;background:var(--frost);padding:2px 10px;font-size:13px;font-weight:600}
 .nd-puce button{background:none;border:0;padding:0 4px;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;box-shadow:none}
 .nd-profil{border:0;margin:16px 0 0;padding:0}
 .nd-profil legend{font-size:14px;font-weight:600;margin:0 0 8px;padding:0}
 .nd-profil .btn{min-width:150px}
 .nd-resultats{margin:20px 0 0;transition:opacity .15s ease}
 .nd-resultats.charge{opacity:.6}
 .nd-resultats .alerte{margin:0;max-width:none}
 .nd-sessions{display:flex;flex-direction:column;gap:10px}
 .nd-session{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;border:1px solid var(--line);border-radius:8px;
      padding:12px 16px;background:var(--surface);cursor:pointer;transition:border-color .12s ease,background .12s ease}
 .nd-session:hover{border-color:#b9c4ce}
 .nd-session.choisie{border-color:var(--brand);background:var(--frost);box-shadow:0 0 0 1px var(--brand)}
 .nd-session.off{cursor:not-allowed;opacity:.6}
 .nd-session input{margin:0}
 .nd-session-info{flex:1;min-width:210px}
 .nd-session-dates{display:block;font-family:var(--font-display);font-size:19px;line-height:1.2;font-weight:600}
 .nd-session-detail{display:block;margin-top:2px;font-size:14px;color:var(--muted)}
 .nd-session-badges{display:flex;flex-wrap:wrap;gap:8px}
 .nd-session-prix{margin-left:auto;font-family:var(--font-display);font-size:22px;font-weight:600;white-space:nowrap}
 .nd-resultats>.nd-lien{margin-top:12px}
 .nd-recap-boite{border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow:hidden}
 .nd-recap-tete{display:flex;align-items:baseline;justify-content:space-between;gap:8px;border-bottom:2px solid var(--brand);padding:12px 20px}
 .nd-recap-tete h2{margin:0;padding:0;border:0;font-size:22px;font-weight:600;letter-spacing:.02em;color:var(--brand)}
 .nd-recap-tete span{font-size:13.5px;color:var(--muted)}
 .nd-recap-lignes{margin:0;padding:0 20px;font-size:14.5px}
 .nd-recap-lignes>div{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:10px 0;
      border-bottom:1px solid rgba(216,223,213,.7)}
 .nd-recap-lignes>div:last-child{border-bottom:0}
 .nd-recap-lignes dt{flex-shrink:0;color:var(--muted);margin:0}
 .nd-recap-lignes dd{margin:0;min-width:0;text-align:right;font-weight:600}
 .nd-recap-lignes dd.vide{font-weight:400;color:rgba(90,102,94,.7)}
 .nd-recap-options{border-top:1px solid var(--line);padding:16px 20px;display:flex;flex-direction:column;gap:12px}
 .nd-recap-options .aide{margin:0;font-size:13.5px;color:var(--muted)}
 .nd-case{display:flex;align-items:flex-start;gap:10px;font-size:14.5px;cursor:pointer}
 .nd-case input{margin:3px 0 0;flex-shrink:0}
 .nd-case-t{display:block;font-weight:500}
 .nd-case .aide{display:block}
 .nd-total{display:flex;align-items:baseline;justify-content:space-between;background:#0b5c2e;color:#fff;padding:14px 20px}
 .nd-total span:first-child{font-size:15px;font-weight:600}
 .nd-total-v{font-family:var(--font-display);font-size:30px;line-height:1;font-weight:600}
 .nd-actions{padding:16px 20px;display:flex;flex-direction:column;gap:12px}
 .nd-actions .alerte{margin:0}
 .nd-actions .nd-avert{margin:0;font-size:13.5px}
 .nd-envoyer{padding:12px 16px;font-size:16px}
 .nd-fantome{background:transparent;border:1px solid transparent;color:var(--ink);box-shadow:none}
 .nd-fantome:hover{background:var(--plane)}
 .nd-verif{border:1px solid rgba(154,88,0,.3);background:var(--warn-soft);border-radius:6px;padding:12px 14px;font-size:14px}
 .nd-verif p{margin:0} .nd-verif ul{margin:4px 0 0;padding-left:18px}
 .nd-verif label{display:flex;align-items:flex-start;gap:8px;font-weight:500;margin-top:10px;cursor:pointer}
 .nd-verif input{margin:3px 0 0}
 @media (max-width:640px){ .nd-champs{grid-template-columns:minmax(0,1fr)} }
 /* Nouveau devis : « Un stagiaire | Plusieurs stagiaires » */
 .onglets{display:inline-flex;gap:2px;padding:3px;margin:-6px 0 20px;background:var(--plane);
      border:1px solid var(--line);border-radius:10px;max-width:100%;overflow-x:auto}
 .onglets a{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:7px;font-size:14px;
      font-weight:600;color:var(--muted);text-decoration:none;white-space:nowrap;transition:background .15s ease,color .15s ease}
 .onglets a .ico{width:16px;height:16px}
 .onglets a:hover{color:var(--ink)}
 .onglets a.actif{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(17,24,39,.1)}
 /* Plusieurs stagiaires : saisie, aperçu en direct, suivi de création */
 .aide-bloc{margin:-4px 0 14px;font-size:14px;color:var(--ink-2,var(--muted));line-height:1.55}
 .lot-outils{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 14px}
 .lot-ajout{flex:1;min-width:220px}
 .nouveau-devis .lot-outils input:not([type=file]){margin:0}
 .lot-import{margin:0 0 16px}
 .lot-import .aide{margin:0 0 6px}
 .lot-import .depot{padding:10px 14px}
 .nouveau-devis textarea{display:block;width:100%;min-height:150px;border:1px solid var(--line);border-radius:6px;
      padding:10px 12px;font-size:14.5px;line-height:1.55;color:var(--ink);background:var(--surface);resize:vertical;
      margin:0 0 12px;tab-size:4}
 .nouveau-devis textarea::placeholder{color:#9aa49a}
 .lot-apercu:empty{display:none}
 .lot-apercu{transition:opacity .15s ease}
 .lot-apercu.charge{opacity:.55}
 .lot-resume{font-size:13.5px;color:var(--muted);margin:2px 0 8px}
 .lot-lignes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
 .lot-ligne{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:2px 10px;align-items:center;
      padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);animation:rise .22s ease both}
 .lot-ligne.st-invalide,.lot-ligne.st-echec{border-color:#e6b3ae;background:#fffafa}
 .lot-ligne.st-existe,.lot-ligne.st-doublon,.lot-ligne.st-deja_regle{background:var(--plane)}
 .lot-ligne.st-cree{border-color:#bfe0c9}
 .lot-n{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}
 .lot-qui{min-width:0}
 .lot-qui strong{display:block;font-weight:600;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .lot-qui span{display:block;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .lot-etat{display:flex;align-items:center;gap:8px;justify-self:end;white-space:nowrap}
 .lot-msg{grid-column:2 / -1;font-size:13px;color:var(--muted)}
 .lot-msg:empty{display:none}
 .lot-ligne.st-invalide .lot-msg,.lot-ligne.st-echec .lot-msg{color:var(--danger-c)}
 .pill.cours{background:linear-gradient(90deg,var(--warn-soft) 25%,#fff8ea 45%,var(--warn-soft) 65%);
      background-size:300% 100%;animation:shimmer 1.3s linear infinite}
 .lot-table td.lot-case,.lot-table th.lot-case{width:36px}
 .lot-table tr.lot-ecartee td{color:var(--muted)}
 .lot-total{display:flex;justify-content:flex-end;align-items:baseline;gap:10px;margin:16px 0 0;color:var(--muted)}
 .lot-tete{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
 .lot-tete strong{font-family:var(--font-display);font-size:20px;font-weight:600}
 .lot-barre{height:8px;border-radius:99px;background:var(--plane);overflow:hidden;margin:12px 0 16px}
 .lot-barre span{display:block;height:100%;background:var(--brand);border-radius:99px;transition:width .45s cubic-bezier(.2,.7,.2,1)}
 @media (max-width:640px){
   .lot-ligne{grid-template-columns:18px minmax(0,1fr)}
   .lot-etat{grid-column:2;justify-self:start}
 }
 .app-main>*:nth-child(2){animation-delay:.04s}
 .app-main>*:nth-child(3){animation-delay:.08s}
 .app-main>*:nth-child(4){animation-delay:.12s}
 .app-main>*:nth-child(5){animation-delay:.16s}
 .app-main>*:nth-child(n+6){animation-delay:.2s}
 .app-main.app-full>*{animation:fade .25s ease both}
 .login-box{animation:rise .4s cubic-bezier(.2,.7,.2,1) both}
 .app-nav .count{animation:pop .42s .18s cubic-bezier(.2,.7,.2,1) both}
 .track i,.bar-fill{transform-origin:left center;animation:grow .75s .12s cubic-bezier(.2,.7,.2,1) both}
 .flash,.warn{animation:rise .3s ease both}
 /* Micro-interactions */
 .quick,.todo-row{transition:background-color .12s ease,border-color .12s ease,transform .16s ease,box-shadow .16s ease}
 .quick:hover,.todo-row:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(28,42,34,.07)}
 .todo-go{display:inline-block;transition:transform .16s ease}
 .todo-row:hover .todo-go{transform:translateX(3px)}
 button:active:not(:disabled),.btn:active{transform:translateY(1px)}
 .conversation>:last-child{animation:rise .36s cubic-bezier(.2,.7,.2,1) both}
 .opt-cards>*{animation:rise .3s cubic-bezier(.2,.7,.2,1) both}
 .opt-cards>*:nth-child(2){animation-delay:.05s}
 .opt-cards>*:nth-child(3){animation-delay:.1s}
 .opt-cards>*:nth-child(n+4){animation-delay:.15s}
 /* Shimmer : blocs gris qui scintillent pendant un chargement */
 .skel-line{display:block;height:13px;border-radius:6px;
      background:linear-gradient(90deg,#e7ece3 25%,#f5f7f2 45%,#e7ece3 65%);background-size:300% 100%;
      animation:shimmer 1.3s linear infinite}
 .nav-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:100;overflow:hidden;pointer-events:none;
      opacity:0;transition:opacity .15s ease}
 .nav-progress i{display:block;height:100%;width:100%;background:var(--accent);border-radius:0 3px 3px 0;
      animation:progress 1.1s ease-in-out infinite}
 body.is-loading .nav-progress{opacity:1}
 .page-skel{display:none}
 body.is-nav .page-skel{display:block;position:fixed;top:0;right:0;bottom:0;left:244px;z-index:50;overflow:hidden;
      background:var(--plane);padding:86px 32px 32px;animation:fade .2s .12s ease both}
 .page-skel .sk-title{height:30px;width:280px;margin-bottom:12px}
 .page-skel .sk-sub{height:14px;width:min(460px,70%);margin-bottom:28px}
 .page-skel .sk-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:20px;
      margin-bottom:18px;max-width:1376px}
 .page-skel .sk-h{height:16px;width:180px;margin-bottom:22px}
 .page-skel .sk-row{margin:14px 0}
 .ines-wait{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--muted)}
 .skel-lines{display:grid;gap:8px;margin-top:12px;width:min(380px,62vw)}
 .skel-lines .skel-line{height:11px}
 @media (prefers-reduced-motion:reduce){
   *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 }
 /* ── Cadre d'application : colonne latérale (logo, menu, compte) + contenu ── */
 .wrap.app-wrap{max-width:none!important;padding:0!important;margin:0}
 .app{min-height:100vh;display:grid;grid-template-columns:244px minmax(0,1fr)}
 .app-side{position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;
      background:var(--surface);border-right:1px solid var(--line)}
 .app-brand{display:block;padding:20px 20px 16px;text-decoration:none}
 .app-brand img{display:block;height:78px;width:auto;max-width:100%}
 .app-brand span{display:block;margin-top:8px;font-size:13px;color:var(--muted)}
 .app-nav{flex:1;padding:0 10px 16px;display:flex;flex-direction:column;gap:14px}
 .app-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
 .app-nav a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 12px;
      border-radius:6px;border-left:3px solid transparent;color:rgba(28,42,34,.8);text-decoration:none;
      font-size:15px;font-weight:500}
 .app-nav a:hover{background:var(--plane);color:var(--ink)}
 .app-nav a.active{border-left-color:var(--accent);background:var(--frost);color:var(--brand-deep);font-weight:600}
 .app-nav .count{background:var(--accent);color:var(--ink);border-radius:99px;padding:0 6px;font-size:12.5px;
      line-height:20px;font-weight:600;min-width:20px;text-align:center}
 .app-user{border-top:1px solid var(--line);padding:16px 20px;font-size:14px}
 .app-user strong{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .app-user span{display:block;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .app-user a{display:inline-block;margin-top:8px;color:var(--ink);text-decoration:underline;text-underline-offset:2px}
 .app-user a:hover{text-decoration:none}
 .app-user-acts{display:flex;gap:16px;flex-wrap:wrap}
 .app-col{min-width:0;display:flex;flex-direction:column}
 .app-search{background:var(--surface);border-bottom:1px solid var(--line);padding:10px 32px}
 .app-search form{display:flex;gap:8px;align-items:center;max-width:560px;margin:0}
 .app-search input{margin:0}
 .app-search button{flex:0 0 auto}
 .app-main{padding:28px 32px 32px;min-width:0;max-width:1440px;width:100%}
 .app-main.app-full{padding:0;max-width:none;height:100vh;overflow:hidden}
 .m-top{display:none}
 /* Inès dans le cadre : historique clair, fil à droite. */
 .app-full .wrap.ines-wrap,.app-full .ines-page{height:100%}
 .app-full .ines-page{grid-template-columns:260px minmax(0,1fr);background:var(--plane)}
 .ines-history{background:var(--plane);color:var(--ink);border-right:1px solid var(--line);padding:14px 10px}
 .ines-history-title{color:var(--muted)}
 .ines-new{background:var(--brand);border-radius:6px;font-size:14px;font-weight:600}
 .ines-new:hover{background:var(--brand-deep)}
 .ines-thread{color:var(--ink);border-left:3px solid transparent;padding:6px 9px}
 .ines-thread:hover{background:var(--surface);color:var(--ink)}
 .ines-thread.active{background:var(--frost);border-left-color:var(--accent);color:var(--brand-deep)}
 .ines-thread strong{font-size:13.5px}
 .ines-thread span{color:var(--muted)}
 .ines-topbar{border-bottom:1px solid var(--line);height:52px}
 .ines-topbar-title{font-family:var(--font-display);font-size:17px;font-weight:600;color:var(--ink)}
 .msg.from-assistant{border-color:var(--line)}
 .assistant-compose textarea,.assistant-compose textarea:focus,.assistant-compose textarea:hover{border:0;box-shadow:none}
 @media (max-width:900px){
   .dash-shell{display:block}
   .app{display:block}
   .app-side{position:fixed;top:0;left:0;bottom:0;z-index:60;width:min(84vw,300px);height:auto;
        transform:translateX(-105%);transition:transform .2s ease;box-shadow:4px 0 24px rgba(17,24,39,.18)}
   body.nav-open .app-side{transform:none}
   .m-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;
        background:var(--surface);border-bottom:1px solid var(--line)}
   .m-top img{height:46px;width:auto;display:block}
   .m-top .menu-btn{display:inline-flex;align-items:center;gap:8px;background:var(--surface);color:var(--ink);
        border:1px solid var(--line);border-radius:6px;padding:7px 12px;font-size:15px;font-weight:600}
   .m-top .menu-btn svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round}
   .app-search{padding:10px 16px}
   .app-main{padding:20px 16px 24px}
   .app-main.app-full{height:auto;overflow:visible}
   .fiche{grid-template-columns:minmax(0,1fr)}
   .fiche-side{position:static}
   .grille-2{grid-template-columns:1fr}
   body.is-nav .page-skel{top:61px;left:0;padding:74px 16px 24px}
   .dash-side{position:fixed;top:0;left:0;bottom:0;z-index:60;width:min(84vw,300px);
        background:var(--plane);padding:16px 12px calc(16px + env(safe-area-inset-bottom));
        overflow-y:auto;transform:translateX(-105%);transition:transform .2s ease;
        box-shadow:4px 0 24px rgba(17,24,39,.18)}
   body.nav-open .dash-side{transform:none}
   body.nav-open .side-scrim{display:block;position:fixed;inset:0;z-index:55;background:rgba(17,24,39,.35)}
   body.nav-open{overflow:hidden}
   .top .nav .icon-btn.menu-btn{display:inline-flex}
   .top{padding:10px 14px}
   .top .logo{height:44px}
   .top .nav{gap:8px}
   .top .nav .user{max-width:34vw;font-size:13px}
   .wrap{padding:16px 14px 12px}
   button.mini,.btn{min-height:38px}
   .filters{grid-template-columns:1fr auto;gap:10px}
   .filters .f-more{display:none;grid-column:1 / -1}
   .filters.open .f-more{display:block}
   .filters.open .actions.f-more{display:flex}
   .filters-toggle{display:inline-flex;align-items:center;height:42px;background:#fff;color:#0b5c2e;
        border:1px solid #0f7b3e;font-weight:600;padding:0 14px}
   .export-links{justify-content:flex-start;flex-wrap:wrap}
   /* Tableaux -> cartes : une ligne = une carte, libellé de colonne devant chaque valeur */
   .tw{overflow-x:visible}
   table.stack,table.stack tbody,table.stack tr,table.stack td{display:block;width:100%}
   .tw table.stack{min-width:0}
   table.stack .cal-note{max-width:100%}
   table.stack tr.thead-row{display:none}
   table.stack tr{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 10px;background:#fff}
   table.stack td{border:0;padding:4px 0;text-align:left;position:relative;overflow-wrap:anywhere}
   table.stack td.nw{white-space:normal}
   table.stack td[data-label]:not([data-label=""]){padding-left:112px;min-height:24px}
   table.stack td[data-label]:not([data-label=""])::before{content:attr(data-label);position:absolute;left:0;top:5px;
        width:102px;color:var(--muted);font-size:11.5px;font-weight:700;text-transform:uppercase;
        letter-spacing:.03em;line-height:1.3}
   table.stack td:empty,table.stack td.vide{display:none}
   .todo-row{padding:10px 12px;gap:12px}
   .todo-go{font-size:0}
   .todo-go::after{content:'›';font-size:24px;line-height:1}
   table.stack tr.tr-section{border:0;background:transparent;padding:6px 2px 2px;margin:4px 0 6px}
   table.stack tr.tr-section td{padding:0;background:transparent}
   table.stack .cal-acts{justify-content:flex-start;flex-wrap:wrap}
   .module-head{display:block}
   .module-head .hint{text-align:left;max-width:none;margin-top:4px}
   .page-title{display:block}
   .split{grid-template-columns:1fr}
   .msg{max-width:94%}
   .ines-page{display:block;height:auto;overflow:visible}
   .ines-history{margin-bottom:12px;max-height:260px;position:static}
   .ines-chat{height:auto;min-height:calc(100vh - 380px)}
   .ines-chat .assistant-home{height:auto;min-height:calc(100vh - 420px)}
   .internal-shell{display:block}
   .internal-side{min-height:auto}
   .internal-logo{height:64px}
   .internal-recents,.internal-account{display:none}
   .internal-main{min-height:calc(100vh - 64px)}
   .assistant-home{padding:20px 0 14px;min-height:calc(100vh - 106px)}
   .assistant-welcome{margin:28px 0 44px}
 }
