    :root {
      /* ===== DARK THEME (default) ===== */
      /* Backgrounds */
      --obs: #0b0d0d;
      --s0: #0f1313;
      --s1: #141919;
      --s2: #191f1f;
      --s3: #1e2626;
      --s4: #232d2d;

      /* Teal (Primary) */
      --teal: #227666;
      --tl: #2a9980;
      --tll: #3ab896;
      --teal-ghost: rgba(34, 118, 102, 0.10);
      --teal-bold: rgba(34, 118, 102, 0.20);

      /* Gold (Secondary) */
      --gold: #c9a84c;
      --gl: #d4b86a;
      --gold-ghost: rgba(201, 168, 76, 0.12);

      /* Semantic Colors */
      --red: #c0392b;
      --grn: #27ae60;
      --amb: #e08c1a;
      --blue: #2474a8;
      --vio: #7d5ea8;
      --rose: #f43f5e;

      /* Text */
      --txt: #ddeaea;
      --txm: #6e8a8a;
      --txd: #3d5252;

      /* Borders */
      --bdr: rgba(34, 118, 102, 0.14);

      /* Shadows (theme-aware) */
      --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.25);
      --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.35);
      --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.45);

      /* Dimensions */
      --sidebar-width: 240px;
      --topbar-height: 54px;
    }

    /* ===== LIGHT THEME ===== */
    /* Applique quand <html data-theme="light">. Palette calibree pour */
    /* contrastes AA sur fond clair (teal/gold legerement fonces). */
    [data-theme="light"] {
      /* Backgrounds : du plus clair au plus marque */
      --obs: #f4f7f6;
      --s0: #ffffff;
      --s1: #f7faf9;
      --s2: #eef3f2;
      --s3: #e1e8e6;
      --s4: #d2dcd9;

      /* Teal : plus fonce pour contraster sur fond clair */
      --teal: #1a5d51;
      --tl: #227666;
      --tll: #2a9980;
      --teal-ghost: rgba(26, 93, 81, 0.08);
      --teal-bold: rgba(26, 93, 81, 0.16);

      /* Gold : ton plus chaud/fonce, plus lisible sur blanc */
      --gold: #a88a3a;
      --gl: #c9a84c;
      --gold-ghost: rgba(168, 138, 58, 0.10);

      /* Semantic Colors : ajustes pour contraste */
      --red: #b02a1a;
      --grn: #1f8f4d;
      --amb: #c67514;
      --blue: #1e5e8a;
      --vio: #6a4b91;
      --rose: #d9304a;

      /* Text : inverse */
      --txt: #0b1515;
      --txm: #4a6060;
      --txd: #8aa0a0;

      /* Borders : plus visibles sur fond clair */
      --bdr: rgba(26, 93, 81, 0.18);

      /* Shadows : plus douces sur fond clair */
      --shadow-sm: 0 1px 3px rgba(11, 21, 21, 0.08);
      --shadow-md: 0 4px 12px rgba(11, 21, 21, 0.10);
      --shadow-lg: 0 8px 32px rgba(11, 21, 21, 0.14);
    }

    /* ===== AUTO THEME ===== */
    /* Suit la preference OS via prefers-color-scheme. */
    @media (prefers-color-scheme: light) {
      [data-theme="auto"] {
        --obs: #f4f7f6;
        --s0: #ffffff;
        --s1: #f7faf9;
        --s2: #eef3f2;
        --s3: #e1e8e6;
        --s4: #d2dcd9;
        --teal: #1a5d51;
        --tl: #227666;
        --tll: #2a9980;
        --teal-ghost: rgba(26, 93, 81, 0.08);
        --teal-bold: rgba(26, 93, 81, 0.16);
        --gold: #a88a3a;
        --gl: #c9a84c;
        --gold-ghost: rgba(168, 138, 58, 0.10);
        --red: #b02a1a;
        --grn: #1f8f4d;
        --amb: #c67514;
        --blue: #1e5e8a;
        --vio: #6a4b91;
        --rose: #d9304a;
        --txt: #0b1515;
        --txm: #4a6060;
        --txd: #8aa0a0;
        --bdr: rgba(26, 93, 81, 0.18);
        --shadow-sm: 0 1px 3px rgba(11, 21, 21, 0.08);
        --shadow-md: 0 4px 12px rgba(11, 21, 21, 0.10);
        --shadow-lg: 0 8px 32px rgba(11, 21, 21, 0.14);
      }
    }

    /* Transition douce lors du switch de theme */
    html {
      transition: background-color 0.25s ease, color 0.25s ease;
    }
    body, .card, .panel, .topbar, #sidebar, .modal, .chip, .btn {
      transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease;
    }

    /* ===== THEME TOGGLE (topbar) ===== */
    .theme-toggle {
      display: inline-flex;
      align-items: center;
      background: var(--s1);
      border: 1px solid var(--s3);
      border-radius: 20px;
      padding: 2px;
      margin-right: 12px;
      gap: 2px;
    }
    .theme-toggle-btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 26px;
      height: 22px;
      border: none;
      background: transparent;
      color: var(--txm);
      cursor: pointer;
      border-radius: 16px;
      padding: 0;
      transition: background 0.15s ease, color 0.15s ease;
    }
    .theme-toggle-btn:hover {
      color: var(--txt);
    }
    .theme-toggle-btn.active {
      background: var(--teal);
      color: #fff;
    }
    .theme-toggle-btn.active:hover {
      color: #fff;
    }

    * {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }

    html, body {
      height: 100%;
    }

    body {
      font-family: 'Montserrat', sans-serif;
      background: var(--obs);
      color: var(--txt);
      font-size: 13px;
      line-height: 1.55;
    }

    #app {
      display: flex;
      flex-direction: column;
      height: 100%;
    }

    /* ===== LOGIN PAGE ===== */
    /* Login force en dark meme si l'utilisateur a theme=light (branding fort). */
    /* Les variables dark sont re-declarees localement ici. */
    .login-container {
      /* Force dark palette (ignore [data-theme=light|auto]) */
      --obs: #0b0d0d;
      --s0: #0f1313;
      --s1: #141919;
      --s2: #191f1f;
      --s3: #1e2626;
      --s4: #232d2d;
      --teal: #227666;
      --tl: #2a9980;
      --tll: #3ab896;
      --teal-ghost: rgba(34, 118, 102, 0.10);
      --teal-bold: rgba(34, 118, 102, 0.20);
      --gold: #c9a84c;
      --gl: #d4b86a;
      --gold-ghost: rgba(201, 168, 76, 0.12);
      --txt: #ddeaea;
      --txm: #6e8a8a;
      --txd: #3d5252;
      --bdr: rgba(34, 118, 102, 0.14);

      display: flex;
      align-items: center;
      justify-content: center;
      min-height: 100vh;
      background: var(--obs);
      color: var(--txt);
      flex-direction: column;
      gap: 30px;
      padding: 20px;
      overflow-y: auto;
    }

    .login-card {
      width: 100%;
      max-width: 420px;
      background: var(--s1);
      border: 1px solid var(--bdr);
      border-radius: 8px;
      padding: 40px;
      box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
    }

    .login-logo {
      text-align: center;
      margin-bottom: 30px;
    }

    /* ── Profile Selector ── */
    .profile-selector {
      width: 100%;
      max-width: 780px;
    }
    .profile-selector-title {
      text-align: center;
      font-size: 10px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: .12em;
      color: var(--txm);
      margin-bottom: 16px;
    }
    .profile-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 10px;
    }
    @media (max-width: 700px) {
      .profile-grid { grid-template-columns: repeat(2, 1fr); }
    }
    .profile-card {
      background: var(--s1);
      border: 1px solid var(--bdr);
      border-radius: 8px;
      padding: 16px 14px;
      cursor: pointer;
      transition: all .2s;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 8px;
      text-align: center;
      position: relative;
    }
    .profile-card:hover {
      border-color: var(--teal);
      background: var(--s2);
      transform: translateY(-2px);
      box-shadow: 0 6px 20px rgba(34,118,102,.15);
    }
    .profile-card.active {
      border-color: var(--teal);
      background: rgba(34,118,102,.08);
      box-shadow: 0 0 0 2px rgba(34,118,102,.25);
    }
    .profile-avatar {
      width: 44px;
      height: 44px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 16px;
      font-weight: 700;
      color: #fff;
      flex-shrink: 0;
    }
    .profile-name {
      font-size: 12px;
      font-weight: 600;
      color: var(--txt);
      line-height: 1.2;
    }
    .profile-role {
      font-size: 9px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: .06em;
      padding: 2px 8px;
      border-radius: 10px;
      color: #fff;
    }
    .profile-email {
      font-size: 9px;
      color: var(--txd);
      font-family: 'Montserrat', sans-serif;
    }
    .profile-card .profile-check {
      position: absolute;
      top: 8px;
      right: 8px;
      width: 18px;
      height: 18px;
      border-radius: 50%;
      background: var(--teal);
      color: #fff;
      font-size: 10px;
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0;
      transition: opacity .2s;
    }
    .profile-card.active .profile-check { opacity: 1; }

    .logo-text {
      font-family: 'Cormorant Garamond', serif;
      font-size: 28px;
      font-weight: 500;
      color: var(--gold);
      letter-spacing: 0.07em;
      margin-bottom: 4px;
    }

    .logo-subtitle {
      font-size: 8.5px;
      font-weight: 700;
      color: var(--txm);
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    .form-group {
      margin-bottom: 16px;
    }

    .form-label {
      display: block;
      font-size: 8.5px;
      font-weight: 700;
      color: var(--txm);
      letter-spacing: 0.10em;
      text-transform: uppercase;
      margin-bottom: 6px;
    }

    .form-input {
      width: 100%;
      padding: 10px 12px;
      background: var(--s2);
      border: 1px solid var(--bdr);
      border-radius: 4px;
      color: var(--txt);
      font-family: 'Montserrat', sans-serif;
      font-size: 12px;
      transition: border-color 0.2s;
    }

    .form-input:focus {
      outline: none;
      border-color: var(--teal);
      box-shadow: 0 0 8px rgba(34, 118, 102, 0.2);
    }

    .form-button {
      width: 100%;
      padding: 11px 16px;
      background: var(--gold);
      border: none;
      border-radius: 4px;
      color: #000;
      font-weight: 600;
      font-size: 11px;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      cursor: pointer;
      transition: all 0.2s;
      margin-top: 8px;
    }

    .form-button:hover {
      background: var(--gl);
      box-shadow: 0 4px 12px rgba(201, 168, 76, 0.3);
    }

    .form-button:disabled {
      opacity: 0.5;
      cursor: not-allowed;
    }

    .error-message {
      color: var(--red);
      font-size: 11px;
      margin-top: 6px;
    }

    /* ===== MAIN LAYOUT ===== */
    .main-layout {
      display: flex;
      flex: 1;
      overflow: hidden;
    }

    #topbar {
      height: var(--topbar-height);
      background: var(--s1);
      border-bottom: 1px solid var(--bdr);
      display: flex;
      align-items: center;
      padding: 0 24px;
      gap: 24px;
      flex-shrink: 0;
      width: 100%;
      order: -1;
    }

    .topbar-left {
      display: flex;
      align-items: center;
      gap: 16px;
      flex: 1;
    }

    .topbar-logo {
      font-family: 'Cormorant Garamond', serif;
      font-size: 20px;
      font-weight: 500;
      color: var(--gold);
      letter-spacing: 0.07em;
      white-space: nowrap;
    }

    .topbar-subtitle {
      font-size: 8px;
      color: var(--txm);
      letter-spacing: 0.08em;
    }

    .topbar-search {
      flex: 1;
      max-width: 280px;
    }

    .search-input {
      width: 100%;
      padding: 8px 12px;
      background: var(--s2);
      border: 1px solid var(--bdr);
      border-radius: 4px;
      color: var(--txt);
      font-size: 11px;
    }
    .search-input--trigger {
      display:flex; align-items:center; gap:8px; cursor:pointer; user-select:none;
    }
    .search-input--trigger:hover { border-color:var(--teal); }
    .search-kbd {
      margin-left:auto; font-size:9px; font-family:'Montserrat',sans-serif; font-weight:600;
      background:var(--s3); color:var(--txm); padding:2px 6px; border-radius:4px;
      border:1px solid var(--bdr); line-height:1;
    }

    .topbar-right {
      display: flex;
      align-items: center;
      gap: 16px;
    }

    .icon-button {
      background: none;
      border: none;
      color: var(--txm);
      font-size: 18px;
      cursor: pointer;
      transition: color 0.2s;
    }

    .icon-button:hover {
      color: var(--txt);
    }

    .user-avatar {
      width: 32px;
      height: 32px;
      border-radius: 50%;
      background: var(--teal);
      color: var(--s0);
      display: flex;
      align-items: center;
      justify-content: center;
      font-weight: 600;
      font-size: 12px;
      cursor: pointer;
    }

    #sidebar {
      width: var(--sidebar-width);
      background: var(--s1);
      border-right: 1px solid var(--bdr);
      overflow-y: auto;
      flex-shrink: 0;
      padding: 16px 0;
      transition: left .3s cubic-bezier(.4,0,.2,1);
    }

    #sidebar::-webkit-scrollbar {
      width: 6px;
    }

    #sidebar::-webkit-scrollbar-thumb {
      background: var(--s3);
      border-radius: 3px;
    }

    .sidebar-section {
      margin-bottom: 20px;
      padding: 0 12px;
    }

    .sidebar-section-title {
      font-size: 8px;
      font-weight: 700;
      color: var(--txm);
      letter-spacing: 0.10em;
      text-transform: uppercase;
      padding: 8px 12px;
      margin-bottom: 6px;
      opacity: 0.7;
    }

    .sidebar-item {
      display: flex;
      align-items: center;
      padding: 10px 12px;
      margin: 4px 0;
      border-radius: 4px;
      cursor: pointer;
      font-size: 12px;
      transition: all 0.2s;
      user-select: none;
      gap: 8px;
    }

    .sidebar-item:hover {
      background: var(--teal-ghost);
      color: var(--tl);
    }

    .sidebar-item.active {
      background: var(--teal-ghost);
      color: var(--tl);
      border-left: 3px solid var(--teal);
      padding-left: 9px;
    }

    .sidebar-icon {
      font-size: 16px;
      width: 16px;
      height: 16px;
      opacity: .6;
    }
    .sidebar-item.active .sidebar-icon,
    .sidebar-item:hover .sidebar-icon { opacity: 1; }

    /* nx-icon global */
    .nx-icon { flex-shrink: 0; }

    .sidebar-badge {
      margin-left: auto;
      background: var(--rose);
      color: white;
      padding: 2px 6px;
      border-radius: 10px;
      font-size: 9px;
      font-weight: 600;
    }

    #main {
      flex: 1;
      overflow-y: auto;
      background: var(--obs);
    }

    #main::-webkit-scrollbar {
      width: 6px;
    }

    #main::-webkit-scrollbar-thumb {
      background: var(--s3);
      border-radius: 3px;
    }

    /* ===== VIEWS ===== */
    /* Système de vues — chaque module MESH est un .view
       Modifiers:
         .view--flush    → padding:0 (layouts full-bleed: messagerie, email, pipeline…)
         .view--flex     → display:flex quand actif (layouts 3-panels, split…)
       Attribut data-view="nom-module" pour scope CSS par module */
    .view {
      display: none;
      padding: 24px;
      min-height: 100%;
    }

    .view.active {
      display: block;
    }

    /* Flush: supprime le padding global pour les vues full-bleed */
    .view.view--flush {
      padding: 0;
    }

    /* Flex: pour les layouts multi-panneaux (messagerie, email, pipeline…) */
    .view.view--flex.active {
      display: flex;
      flex-direction: column;
    }

    /* data-view: marqueur de scope pour les media queries et le ciblage CSS.
       Pas de contain:layout car ça casse les calculs de hauteur (vh) des enfants. */

    .page-header {
      margin-bottom: 24px;
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
    }

    .page-title {
      font-size: 25px;
      font-weight: 400;
      letter-spacing: 0.03em;
      margin-bottom: 4px;
    }

    .page-subtitle {
      font-size: 11px;
      color: var(--txm);
      font-weight: 400;
    }

    .page-actions {
      display: flex;
      gap: 8px;
    }

    /* ===== DASHBOARD VIEW ===== */
    .greeting-row {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      margin-bottom: 24px;
    }

    .greeting-left {
      display: flex;
      flex-direction: column;
      gap: 4px;
    }

    .greeting-text {
      font-size: 18px;
      font-weight: 500;
    }

    .greeting-date {
      font-size: 11px;
      color: var(--txm);
    }

    .greeting-actions {
      display: flex;
      gap: 8px;
    }

    .btn {
      padding: 9px 14px;
      border: 1px solid var(--bdr);
      border-radius: 4px;
      background: transparent;
      color: var(--txt);
      font-size: 10.5px;
      font-weight: 600;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      cursor: pointer;
      transition: all 0.2s;
      font-family: 'Montserrat', sans-serif;
    }

    .btn:hover {
      border-color: var(--txm);
    }

    .btn-primary {
      background: var(--blue);
      color: white;
      border-color: var(--blue);
    }

    .btn-primary:hover {
      background: #1e5a8e;
    }

    .grid-4 {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 14px;
      margin-bottom: 24px;
    }

    .kpi-card {
      background: var(--s1);
      border: 1px solid var(--bdr);
      border-radius: 6px;
      padding: 16px;
      cursor: pointer;
      transition: all 0.2s;
    }

    .kpi-card:hover {
      border-color: var(--teal);
      box-shadow: 0 4px 12px rgba(34, 118, 102, 0.15);
    }

    .kpi-title {
      font-size: 10px;
      font-weight: 600;
      color: var(--txm);
      letter-spacing: 0.05em;
      text-transform: uppercase;
      margin-bottom: 12px;
    }

    .kpi-value {
      font-family: 'Cormorant Garamond', serif;
      font-size: 28px;
      font-weight: 500;
      margin-bottom: 8px;
      display: flex;
      align-items: baseline;
      gap: 4px;
    }

    .kpi-unit {
      font-size: 14px;
      color: var(--txm);
    }

    .kpi-delta {
      font-size: 10px;
      margin-bottom: 8px;
      display: flex;
      align-items: center;
      gap: 4px;
    }

    .kpi-delta.up { color: var(--grn); }
    .kpi-delta.down { color: var(--red); }
    .kpi-delta.neutral { color: var(--txm); }

    .kpi-pbar {
      width: 100%;
      height: 4px;
      background: var(--s2);
      border-radius: 2px;
      overflow: hidden;
      margin-top: 8px;
    }

    .kpi-pfill {
      height: 100%;
      background: var(--teal);
      border-radius: 2px;
      transition: width 0.3s;
    }

    .kpi-card.teal { --accent: var(--teal); border-color: rgba(34, 118, 102, 0.3); }
    .kpi-card.gold { --accent: var(--gold); border-color: rgba(201, 168, 76, 0.2); }
    .kpi-card.amber { --accent: var(--amb); border-color: rgba(224, 140, 26, 0.2); }
    .kpi-card.rose { --accent: var(--rose); border-color: rgba(244, 63, 94, 0.2); }
    .kpi-card.blue { --accent: #3498db; border-color: rgba(52, 152, 219, 0.3); }
    .kpi-card.green { --accent: #27ae60; border-color: rgba(39, 174, 96, 0.3); }
    .kpi-card.white { --accent: #ecf0f1; border-color: rgba(236, 240, 241, 0.2); }

    .kpi-card.teal .kpi-value { color: var(--tl); }
    .kpi-card.gold .kpi-value { color: var(--gold); }
    .kpi-card.amber .kpi-value { color: var(--amb); }
    .kpi-card.rose .kpi-value { color: var(--rose); }
    .kpi-card.blue .kpi-value { color: #3498db; }
    .kpi-card.green .kpi-value { color: #27ae60; }
    .kpi-card.white .kpi-value { color: #ecf0f1; }

    /* ═══ Phase 2: Pipeline Kanban ═══ */
    .kanban-board { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 12px; min-height: 60vh; }
    .kanban-column { min-width: 280px; max-width: 280px; flex-shrink: 0; background: var(--s0); border: 1px solid var(--bdr); border-radius: 8px; display: flex; flex-direction: column; }
    .kanban-column-header { padding: 12px; border-bottom: 1px solid var(--bdr); display: flex; align-items: center; justify-content: space-between; }
    .kanban-column-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--txm); }
    .kanban-column-count { background: var(--s2); padding: 2px 8px; border-radius: 10px; font-size: 10px; color: var(--txm); }
    .kanban-column-body { flex: 1; padding: 8px; display: flex; flex-direction: column; gap: 8px; overflow-y: auto; }
    .kanban-column.drag-over { background: rgba(34, 118, 102, 0.08); border-color: var(--teal); }

    .deal-card { background: var(--s1); border: 1px solid var(--bdr); border-radius: 8px; padding: 12px; cursor: grab; transition: all .2s; }
    .deal-card:hover { border-color: var(--teal); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,.3); }
    .deal-card.dragging { opacity: 0.5; transform: rotate(2deg); }
    .deal-card-title { font-size: 13px; font-weight: 600; color: var(--txp); margin-bottom: 4px; }
    .deal-card-client { font-size: 11px; color: var(--txm); margin-bottom: 8px; }
    .deal-card-meta { display: flex; justify-content: space-between; align-items: center; }
    .deal-card-amount { font-family: 'Cormorant Garamond', serif; font-size: 16px; font-weight: 700; color: var(--gold); }
    .deal-card-priority { padding: 2px 8px; border-radius: 20px; font-size: 10px; font-weight: 600; }
    .deal-card-priority.haute { background: rgba(239, 68, 68, 0.15); color: #ef4444; }
    .deal-card-priority.normale { background: rgba(34, 118, 102, 0.15); color: var(--teal); }
    .deal-card-priority.basse { background: rgba(107, 114, 128, 0.15); color: #9ca3af; }

    /* ═══ Phase 2: Commissions Workflow ═══ */
    .workflow-steps { display: flex; gap: 0; margin-bottom: 24px; }
    .workflow-step { flex: 1; text-align: center; padding: 16px 8px; position: relative; background: var(--s1); border: 1px solid var(--bdr); }
    .workflow-step:first-child { border-radius: 8px 0 0 8px; }
    .workflow-step:last-child { border-radius: 0 8px 8px 0; }
    .workflow-step.active { background: rgba(34, 118, 102, 0.15); border-color: var(--teal); }
    .workflow-step.done { background: rgba(39, 174, 96, 0.1); border-color: #27ae60; }
    .workflow-step-number { width: 28px; height: 28px; border-radius: 50%; background: var(--s2); display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: var(--txm); margin-bottom: 4px; }
    .workflow-step.active .workflow-step-number { background: var(--teal); color: #fff; }
    .workflow-step.done .workflow-step-number { background: #27ae60; color: #fff; }
    .workflow-step-label { font-size: 11px; color: var(--txm); }

    /* ═══ Phase 2: CV Vivier ═══ */
    .vivier-card { background: var(--s1); border: 1px solid var(--bdr); border-radius: 8px; padding: 16px; transition: all .2s; cursor: pointer; }
    .vivier-card:hover { border-color: var(--teal); transform: translateY(-2px); box-shadow: 0 4px 16px rgba(0,0,0,.3); }
    .vivier-avatar { width: 48px; height: 48px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; color: #fff; }
    .vivier-status { padding: 2px 10px; border-radius: 20px; font-size: 10px; font-weight: 600; }
    .vivier-status.en_mission { background: rgba(34, 118, 102, 0.15); color: var(--teal); }
    .vivier-status.disponible { background: rgba(39, 174, 96, 0.15); color: #27ae60; }
    .vivier-status.intercontrat { background: rgba(245, 158, 11, 0.15); color: #f59e0b; }

    .drop-zone { border: 2px dashed var(--bdr); border-radius: 12px; padding: 48px 24px; text-align: center; transition: all .2s; cursor: pointer; }
    .drop-zone:hover, .drop-zone.drag-active { border-color: var(--teal); background: rgba(34, 118, 102, 0.05); }

    .entretien-card { background: var(--s1); border: 1px solid var(--bdr); border-radius: 8px; padding: 16px; margin-bottom: 8px; }
    .entretien-score { display: flex; gap: 4px; }
    .entretien-score-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--s2); }
    .entretien-score-dot.filled { background: var(--gold); }

    .dc-template-card { background: var(--s1); border: 1px solid var(--bdr); border-radius: 8px; padding: 20px; cursor: pointer; transition: all .2s; }
    .dc-template-card:hover { border-color: var(--teal); }
    .dc-template-card.selected { border-color: var(--teal); background: rgba(34, 118, 102, 0.08); }

    .grid-2-1 {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 18px;
      margin-bottom: 24px;
    }

    .card {
      background: var(--s1);
      border: 1px solid var(--bdr);
      border-radius: 6px;
      padding: 18px;
    }

    .card-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 14px;
      padding-bottom: 12px;
      border-bottom: 1px solid var(--bdr);
    }

    .card-title {
      font-size: 12px;
      font-weight: 600;
      letter-spacing: 0.05em;
    }

    .card-button {
      font-size: 10px;
      color: var(--tl);
      cursor: pointer;
      background: none;
      border: none;
      font-weight: 500;
    }

    .card-button:hover {
      color: var(--teal);
    }

    .chart-container {
      position: relative;
      height: 300px;
      margin-bottom: 12px;
    }

    .stats-row {
      display: flex;
      justify-content: space-around;
      margin-top: 12px;
      padding-top: 12px;
      border-top: 1px solid var(--bdr);
      font-size: 11px;
    }

    .stat-item {
      text-align: center;
    }

    .stat-label {
      color: var(--txm);
      margin-bottom: 4px;
    }

    .stat-value {
      font-weight: 600;
      font-family: 'Cormorant Garamond', serif;
      font-size: 14px;
    }

    .stat-value.teal { color: var(--teal); }
    .stat-value.amber { color: var(--amb); }
    .stat-value.gold { color: var(--gold); }

    .donut-wrapper {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 16px;
    }

    .donut-chart {
      width: 120px;
      height: 120px;
    }

    .donut-legend {
      width: 100%;
      display: flex;
      flex-direction: column;
      gap: 8px;
      font-size: 11px;
    }

    .legend-item {
      display: flex;
      align-items: center;
      gap: 8px;
    }

    .legend-dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
    }

    .legend-label {
      flex: 1;
      color: var(--txm);
    }

    .legend-value {
      font-weight: 600;
      font-family: 'Montserrat', sans-serif;
    }

    .alerts-section {
      display: flex;
      flex-direction: column;
      gap: 10px;
    }

    .alert {
      background: var(--s2);
      border: 1px solid var(--bdr);
      border-radius: 6px;
      padding: 12px;
      display: flex;
      gap: 12px;
      cursor: pointer;
      transition: all 0.2s;
    }

    .alert:hover {
      border-color: var(--teal);
    }

    .alert.rose {
      border-color: rgba(244, 63, 94, 0.3);
      background: rgba(244, 63, 94, 0.08);
    }

    .alert.amber {
      border-color: rgba(224, 140, 26, 0.3);
      background: rgba(224, 140, 26, 0.08);
    }

    .alert.blue {
      border-color: rgba(36, 116, 168, 0.3);
      background: rgba(36, 116, 168, 0.08);
    }

    .alert.teal {
      border-color: rgba(34, 118, 102, 0.3);
      background: rgba(34, 118, 102, 0.08);
    }

    .alert-icon {
      font-size: 18px;
      flex-shrink: 0;
    }

    .alert-body {
      flex: 1;
      display: flex;
      flex-direction: column;
      gap: 4px;
    }

    .alert-title {
      font-size: 11px;
      font-weight: 600;
      color: var(--txt);
    }

    .alert-sub {
      font-size: 10px;
      color: var(--txm);
      line-height: 1.4;
    }

    .alert-tag {
      padding: 3px 8px;
      border-radius: 12px;
      font-size: 8px;
      font-weight: 600;
      letter-spacing: 0.05em;
      text-transform: uppercase;
      white-space: nowrap;
    }

    .alert-tag.rose { background: rgba(244, 63, 94, 0.2); color: var(--rose); }
    .alert-tag.amber { background: rgba(224, 140, 26, 0.2); color: var(--amb); }
    .alert-tag.blue { background: rgba(36, 116, 168, 0.2); color: var(--blue); }
    .alert-tag.teal { background: rgba(34, 118, 102, 0.2); color: var(--teal); }

    .timeline {
      display: flex;
      flex-direction: column;
      gap: 12px;
    }

    .timeline-item {
      display: flex;
      gap: 12px;
      cursor: pointer;
      transition: all 0.2s;
      padding: 8px;
      border-radius: 4px;
    }

    .timeline-item:hover {
      background: var(--teal-ghost);
    }

    .timeline-dot {
      font-size: 18px;
      flex-shrink: 0;
      width: 24px;
      height: 24px;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .timeline-body {
      flex: 1;
      display: flex;
      flex-direction: column;
      gap: 3px;
      min-width: 0;
    }

    .timeline-title {
      font-size: 11px;
      font-weight: 600;
      color: var(--txt);
    }

    .timeline-sub {
      font-size: 10px;
      color: var(--txm);
    }

    .timeline-time {
      font-size: 9px;
      color: var(--txd);
    }

    /* ===== STUB COMPONENTS ===== */
    .stub-content {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      min-height: 400px;
      gap: 16px;
      text-align: center;
    }

    .stub-icon {
      font-size: 48px;
      opacity: 0.6;
    }

    .stub-message {
      font-size: 13px;
      color: var(--txm);
      max-width: 300px;
    }

    /* ===== RESPONSIVE — MOBILE FIRST ===== */

    /* ─── Sidebar Collapse Toggle ─── */
    .sidebar-toggle {
      display: none;
      position: fixed;
      top: 10px;
      left: 10px;
      z-index: 1001;
      background: var(--s1);
      border: 1px solid var(--bdr);
      border-radius: 8px;
      width: 40px;
      height: 40px;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      color: var(--teal);
      font-size: 18px;
      transition: all .2s;
      box-shadow: 0 4px 12px rgba(0,0,0,.3);
    }
    .sidebar-toggle:hover { background: var(--s2); color: var(--tl); }

    /* ─── Mobile Bottom Navigation ─── */
    .mobile-bottom-nav {
      display: none;
      position: fixed;
      bottom: 0;
      left: 0;
      right: 0;
      height: 64px;
      background: var(--s0);
      border-top: 1px solid var(--bdr);
      z-index: 900;
      padding: 0 8px;
      padding-bottom: env(safe-area-inset-bottom, 0);
    }
    .mobile-bottom-nav-inner {
      display: flex;
      align-items: center;
      justify-content: space-around;
      height: 100%;
      max-width: 500px;
      margin: 0 auto;
    }
    .mobile-nav-item {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 2px;
      padding: 6px 12px;
      border-radius: 8px;
      cursor: pointer;
      transition: all .15s;
      background: none;
      border: none;
      color: var(--txm);
      font-family: 'Montserrat', sans-serif;
      font-size: 9px;
      font-weight: 500;
      min-width: 56px;
    }
    .mobile-nav-item svg { width: 22px; height: 22px; }
    .mobile-nav-item.active { color: var(--teal); background: var(--teal-ghost); }
    .mobile-nav-item:hover { color: var(--tl); }

    /* ─── Sidebar Overlay (mobile) ─── */
    .sidebar-overlay {
      display: none;
      position: fixed;
      inset: 0;
      background: rgba(0,0,0,.6);
      z-index: 998;
      backdrop-filter: blur(2px);
    }
    .sidebar-overlay.show { display: block; }

    /* ─── Responsive Cards Grid ─── */
    .responsive-grid {
      display: grid;
      gap: 14px;
    }
    .responsive-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
    .responsive-grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
    .responsive-grid.cols-2 { grid-template-columns: repeat(2, 1fr); }

    /* ─── KPI Cards responsive ─── */
    .kpi-row {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
      gap: 12px;
      margin-bottom: 20px;
    }

    /* ─── Scrollable table on mobile ─── */
    .table-responsive {
      overflow-x: auto;
      -webkit-overflow-scrolling: touch;
      border-radius: 6px;
    }
    .table-responsive table {
      min-width: 600px;
    }

    /* ─── Page header responsive ─── */
    .page-header-responsive {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 20px;
      flex-wrap: wrap;
    }

    /* ─── Detail drawer (slide-in panel) ─── */
    .detail-drawer {
      position: fixed;
      top: 0;
      right: -100%;
      width: 480px;
      max-width: 100vw;
      height: 100vh;
      background: var(--s1);
      border-left: 1px solid var(--bdr);
      z-index: 950;
      transition: right .3s cubic-bezier(.4,0,.2,1);
      overflow-y: auto;
      box-shadow: -8px 0 24px rgba(0,0,0,.4);
    }
    .detail-drawer.open { right: 0; }
    .detail-drawer-overlay {
      position: fixed;
      inset: 0;
      background: rgba(0,0,0,.5);
      z-index: 949;
      display: none;
      backdrop-filter: blur(2px);
    }
    .detail-drawer-overlay.open { display: block; }

    /* ─── Toast notifications ─── */
    .toast-container {
      position: fixed;
      top: 70px;
      right: 16px;
      z-index: 2000;
      display: flex;
      flex-direction: column;
      gap: 8px;
      max-width: 360px;
      width: calc(100% - 32px);
    }
    .toast {
      padding: 12px 16px;
      border-radius: 8px;
      font-size: 12px;
      font-weight: 500;
      display: flex;
      align-items: center;
      gap: 10px;
      animation: toastSlide .3s ease-out;
      box-shadow: 0 8px 24px rgba(0,0,0,.4);
      border: 1px solid var(--bdr);
    }
    .toast.success { background: rgba(39,174,96,.15); color: var(--grn); border-color: rgba(39,174,96,.3); }
    .toast.error { background: rgba(192,57,43,.15); color: var(--red); border-color: rgba(192,57,43,.3); }
    .toast.warning { background: rgba(224,140,26,.15); color: var(--amb); border-color: rgba(224,140,26,.3); }
    .toast.info { background: rgba(36,116,168,.15); color: var(--blue); border-color: rgba(36,116,168,.3); }
    @keyframes toastSlide { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }

    /* ─── Skeleton loader ─── */
    .skeleton {
      background: linear-gradient(90deg, var(--s2) 25%, var(--s3) 50%, var(--s2) 75%);
      background-size: 200% 100%;
      animation: skeleton-pulse 1.5s infinite;
      border-radius: 4px;
    }
    @keyframes skeleton-pulse { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
    .skeleton-text { height: 12px; margin-bottom: 8px; }
    .skeleton-title { height: 20px; width: 60%; margin-bottom: 12px; }
    .skeleton-card { height: 120px; border-radius: 8px; }

    /* ─── Empty state ─── */
    .empty-state {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 48px 24px;
      text-align: center;
      gap: 12px;
    }
    .empty-state svg { width: 48px; height: 48px; color: var(--txd); }
    .empty-state-title { font-family: 'Cormorant Garamond', serif; font-size: 18px; color: var(--txm); }
    .empty-state-desc { font-size: 12px; color: var(--txd); max-width: 300px; }

    /* ═════════════════════════════════════════════════
       BREAKPOINT: DESKTOP LARGE (> 1400px)
       ═════════════════════════════════════════════════ */
    @media (min-width: 1400px) {
      .responsive-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
    }

    /* ═════════════════════════════════════════════════
       BREAKPOINT: LAPTOP / SMALL DESKTOP (< 1200px)
       ═════════════════════════════════════════════════ */
    @media (max-width: 1200px) {
      .responsive-grid.cols-4 { grid-template-columns: repeat(3, 1fr); }
      .responsive-grid.cols-3 { grid-template-columns: repeat(2, 1fr); }
      .detail-grid { grid-template-columns: 1fr 1fr; }
      .grid-2-1 { grid-template-columns: 1fr; }
    }

    /* ═════════════════════════════════════════════════
       BREAKPOINT: TABLETTE (768px – 1024px)
       ═════════════════════════════════════════════════ */
    @media (max-width: 1024px) {
      :root { --sidebar-width: 64px; }

      .sidebar {
        width: 64px !important;
        overflow: hidden;
      }
      .sidebar .sidebar-header span,
      .sidebar .sidebar-header small,
      .sidebar .sidebar-section-title,
      .sidebar-item span,
      .sidebar-item .sidebar-badge {
        display: none !important;
      }
      .sidebar-item {
        justify-content: center !important;
        padding: 10px !important;
      }
      .sidebar-item svg { margin: 0 !important; }

      .responsive-grid.cols-4 { grid-template-columns: repeat(2, 1fr); }
      .responsive-grid.cols-3 { grid-template-columns: repeat(2, 1fr); }
      .responsive-grid.cols-2 { grid-template-columns: 1fr 1fr; }
      .kpi-row { grid-template-columns: repeat(2, 1fr); }
      .detail-grid { grid-template-columns: 1fr; }

      .modal { width: 90vw; max-width: 90vw; }
      .modal.modal-lg { width: 95vw; }

      .detail-drawer { width: 400px; }
    }

    /* ═════════════════════════════════════════════════
       BREAKPOINT: MOBILE / SMARTPHONE (< 768px)
       ═════════════════════════════════════════════════ */
    @media (max-width: 768px) {
      :root {
        --sidebar-width: 0px;
        --topbar-height: 54px;
      }

      /* Sidebar : hidden by default, slide-in overlay */
      .sidebar {
        position: fixed !important;
        left: -280px !important;
        top: 0 !important;
        width: 280px !important;
        height: 100vh !important;
        z-index: 999 !important;
        transition: left .3s cubic-bezier(.4,0,.2,1) !important;
        overflow-y: auto !important;
      }
      .sidebar.mobile-open {
        left: 0 !important;
      }
      .sidebar.mobile-open .sidebar-header span,
      .sidebar.mobile-open .sidebar-header small,
      .sidebar.mobile-open .sidebar-section-title,
      .sidebar.mobile-open .sidebar-item span,
      .sidebar.mobile-open .sidebar-item .sidebar-badge {
        display: inline !important;
      }
      .sidebar.mobile-open .sidebar-item {
        justify-content: flex-start !important;
        padding: 8px 14px !important;
      }

      .sidebar-toggle { display: flex; }
      .mobile-bottom-nav { display: block; }

      .main-content {
        margin-left: 0 !important;
        padding-bottom: 80px !important;  /* Space for bottom nav */
      }

      .topbar {
        padding-left: 52px !important;  /* Space for hamburger */
      }

      /* Grids : 1 colonne */
      .responsive-grid.cols-4,
      .responsive-grid.cols-3,
      .responsive-grid.cols-2 {
        grid-template-columns: 1fr !important;
      }
      .kpi-row { grid-template-columns: repeat(2, 1fr); gap: 8px; }

      /* Page header : stack vertical */
      .page-header, .page-header-responsive {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 8px !important;
      }
      .page-actions { width: 100%; }
      .page-actions .btn { width: 100%; text-align: center; }

      /* Filter bar : wrap */
      .filter-bar {
        flex-wrap: wrap !important;
      }
      .filter-input {
        max-width: 100% !important;
        min-width: 0 !important;
        width: 100% !important;
        order: -1 !important;
      }

      /* Tabs : scroll horizontal */
      .tabs-row, .tabs-nav, .fdt-tabs {
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch;
        flex-wrap: nowrap !important;
        padding-bottom: 4px;
      }
      .tabs-row::-webkit-scrollbar,
      .tabs-nav::-webkit-scrollbar,
      .fdt-tabs::-webkit-scrollbar {
        height: 0;
        display: none;
      }

      /* Modals : fullscreen */
      .modal, .modal.modal-lg {
        width: 100vw !important;
        max-width: 100vw !important;
        max-height: 100vh !important;
        border-radius: 0 !important;
        margin: 0 !important;
      }

      /* Drawer : fullscreen */
      .detail-drawer {
        width: 100vw !important;
      }

      /* Tables */
      th, td { padding: 7px 8px !important; font-size: 10px !important; }

      /* Detail grid : 1 col */
      .detail-grid { grid-template-columns: 1fr !important; }

      /* KPI strip */
      .kpi-strip { flex-wrap: wrap !important; }
      .kpi-strip-item { flex: 1 1 calc(50% - 8px) !important; min-width: 0 !important; }

      /* Clients grid - 1 col on phone */
      .clients-grid { grid-template-columns: 1fr !important; }

      /* Font sizes down on mobile */
      .page-title { font-size: 20px !important; }
      .page-subtitle { font-size: 11px !important; }

      /* Toast */
      .toast-container { left: 16px; right: 16px; max-width: none; }
    }

    /* ═════════════════════════════════════════════════
       BREAKPOINT: TRÈS PETIT ÉCRAN (< 480px)
       ═════════════════════════════════════════════════ */
    @media (max-width: 480px) {
      .kpi-row { grid-template-columns: 1fr !important; }
      .login-card { padding: 24px 20px !important; }
      .profile-grid { grid-template-columns: repeat(2, 1fr) !important; }
      .modal-body { padding: 14px !important; }
      .modal-header { padding: 12px 14px !important; }

      /* Collaborateur tabs - smaller */
      .collab-tab { font-size: 10px !important; padding: 6px 10px !important; }
    }

    /* ═════════════════════════════════════════════════
       PRINT STYLES
       ═════════════════════════════════════════════════ */
    @media print {
      .sidebar, .topbar, .mobile-bottom-nav, .sidebar-toggle, .toast-container { display: none !important; }
      .main-content { margin-left: 0 !important; margin-top: 0 !important; }
      body { background: #fff; color: #000; }
      .card { box-shadow: none; border: 1px solid #ddd; }
    }

    /* ─── Filter Bar ─── */
    .filter-bar { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; flex-wrap: wrap; }
    .filter-input { flex: 1; min-width: 200px; max-width: 360px; background: var(--s2); border: 1px solid var(--bdr); border-radius: 4px; padding: 7px 12px; color: var(--txt); font-family: 'Montserrat', sans-serif; font-size: 12px; outline: none; transition: border-color .2s; }
    .filter-input:focus { border-color: var(--teal); }
    .filter-input::placeholder { color: var(--txd); }
    .filter-chip { padding: 5px 14px; border-radius: 20px; font-size: 11px; font-weight: 500; color: var(--txm); background: var(--s2); border: 1px solid var(--bdr); cursor: pointer; transition: all .15s; }
    .filter-chip:hover { background: var(--s3); color: var(--txt); }
    .filter-chip.active { background: var(--teal-ghost); color: var(--tl); border-color: var(--teal-bold); }

    /* ─── Tables ─── */
    .table-wrap { background: var(--s1); border: 1px solid var(--bdr); border-radius: 6px; overflow: hidden; }
    table { width: 100%; border-collapse: collapse; }
    thead tr { background: var(--s2); border-bottom: 1px solid var(--bdr); }
    th { padding: 9px 14px; font-size: 8.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .10em; color: var(--txm); text-align: left; }
    td { padding: 9px 14px; font-size: 11.5px; border-bottom: 1px solid rgba(34,118,102,.08); vertical-align: middle; color: var(--txm); }
    tbody tr { transition: background .12s; cursor: pointer; }
    tbody tr:hover { background: var(--teal-ghost); }
    .td-main { color: var(--txt); font-weight: 500; }
    .td-sub { font-size: 10px; color: var(--txd); margin-top: 1px; }

    /* ─── Status Tags ─── */
    .status-tag { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 3px; font-size: 10px; font-weight: 600; letter-spacing: .04em; }
    .status-tag.teal { background: var(--teal-ghost); color: var(--tl); }
    .status-tag.green { background: rgba(39,174,96,.10); color: var(--grn); }
    .status-tag.blue { background: rgba(36,116,168,.10); color: var(--blue); }
    .status-tag.amber { background: rgba(224,140,26,.10); color: var(--amb); }
    .status-tag.rose { background: rgba(244,63,94,.10); color: var(--rose); }
    .status-tag.gold { background: var(--gold-ghost); color: var(--gold); }
    .status-tag.gray { background: var(--s3); color: var(--txm); }

    /* ═══ FDT Module ═══ */
    .fdt-cell-w { background:rgba(255,255,255,.01); cursor:default; }
    .collab-day-w { background:var(--s2); border:1px solid var(--bdr); opacity:.5; cursor:pointer; }
    .collab-day-w:hover { border-color:var(--gold); opacity:.8; }
    .collab-day-P { background:rgba(42,153,128,.1); border:1px solid rgba(42,153,128,.3); }
    .collab-day-D { background:rgba(224,140,26,.08); border:1px solid rgba(224,140,26,.25); }
    .collab-day-TT { background:rgba(36,116,168,.1); border:1px solid rgba(36,116,168,.3); }
    .collab-day-CP { background:rgba(125,94,168,.08); border:1px solid rgba(125,94,168,.25); }
    .collab-day-RTT { background:rgba(125,94,168,.08); border:1px solid rgba(125,94,168,.25); }
    .collab-day-FORM { background:rgba(224,140,26,.06); border:1px solid rgba(224,140,26,.2); }
    .collab-day-MAL { background:rgba(244,63,94,.06); border:1px solid rgba(244,63,94,.25); }
    .collab-day-A { background:rgba(244,63,94,.06); border:1px solid rgba(244,63,94,.25); }
    .collab-day-V { background:rgba(39,174,96,.1); border:1px solid rgba(39,174,96,.3); }
    .collab-day-empty { background:var(--s2); border:1px solid var(--bdr); }
    .collab-day-empty:hover { border-color:var(--tl); }

    /* ─── Skill Tags ─── */
    .skill-tag { display: inline-flex; padding: 1px 7px; border-radius: 3px; font-size: 9px; font-weight: 600; background: rgba(36,116,168,.10); color: var(--blue); }

    /* ─── Avatar Small ─── */
    .avatar-sm { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700; color: #fff; flex-shrink: 0; }

    /* ─── Modals ─── */
    .modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.7); z-index: 900; display: flex; align-items: center; justify-content: center; backdrop-filter: blur(3px); }
    .modal { background: var(--s1); border: 1px solid var(--bdr); border-radius: 8px; width: 480px; max-width: 95vw; max-height: 85vh; overflow-y: auto; box-shadow: 0 16px 48px rgba(0,0,0,.5); }
    .modal.modal-lg { width: 680px; }
    .modal-header { padding: 16px 20px; border-bottom: 1px solid var(--bdr); display: flex; align-items: center; justify-content: space-between; }
    .modal-title { font-family: 'Cormorant Garamond', serif; font-size: 18px; font-weight: 500; color: var(--txt); }
    .modal-close { background: none; border: none; color: var(--txm); cursor: pointer; font-size: 18px; padding: 2px 6px; border-radius: 4px; transition: all .15s; }
    .modal-close:hover { background: var(--s3); color: var(--txt); }
    .modal-body { padding: 20px; }
    .modal-footer { padding: 14px 20px; border-top: 1px solid var(--bdr); display: flex; gap: 8px; justify-content: flex-end; }

    /* ─── Detail Grid ─── */
    .detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
    .detail-item { }
    .detail-label { font-size: 8.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .10em; color: var(--txm); margin-bottom: 4px; }
    .detail-value { font-size: 13px; color: var(--txt); }

    /* ─── Forms ─── */
    .form-group { margin-bottom: 14px; }

    /* ─── Pagination ─── */
    .pagination { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; border-top: 1px solid var(--bdr); }
    .page-btns { display: flex; gap: 4px; }
    .page-btns button { padding: 4px 10px; border-radius: 3px; background: var(--s2); border: 1px solid var(--bdr); color: var(--txm); font-size: 11px; cursor: pointer; transition: all .15s; }
    .page-btns button:hover { background: var(--s3); }
    .page-btns button.active { background: var(--teal-ghost); color: var(--tl); border-color: var(--teal-bold); }
    .page-btns button:disabled { opacity: .3; cursor: not-allowed; }

    /* ─── KPI Strip (Finance) ─── */
    .kpi-strip { display: grid; grid-template-columns: repeat(6, 1fr); border: 1px solid var(--bdr); border-radius: 6px; overflow: hidden; margin-bottom: 16px; background: var(--s1); }
    .kpi-strip-item { padding: 14px 16px; border-right: 1px solid var(--bdr); position: relative; }
    .kpi-strip-item:last-child { border-right: none; }
    .kpi-strip-item::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; }
    .kpi-strip-item.teal::after { background: var(--teal); }
    .kpi-strip-item.gold::after { background: var(--gold); }
    .kpi-strip-item.green::after { background: var(--grn); }
    .kpi-strip-item.amber::after { background: var(--amb); }
    .kpi-strip-item.rose::after { background: var(--rose); }
    .kpi-strip-item.blue::after { background: var(--blue); }
    .ksi-label { font-size: 8.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--txm); margin-bottom: 4px; }
    .ksi-value { font-family: 'Cormorant Garamond', serif; font-size: 20px; font-weight: 500; line-height: 1; }
    .ksi-sub { font-size: 10px; color: var(--txm); margin-top: 2px; }

    /* ─── Cards clickable ─── */
    .card.clickable { cursor: pointer; transition: all .2s; }
    .card.clickable:hover { border-color: var(--teal-bold); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,0,0,.4); }

    /* ─── Page actions ─── */
    .page-actions { display: flex; gap: 8px; align-items: center; }

    /* ─── Btn Small ─── */
    .btn.btn-small { padding: 3px 10px; font-size: 10px; }

    /* Toast */
    #toast {
      position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);
      background: var(--s2); border: 1px solid var(--teal-bold); border-radius: 6px;
      padding: 10px 20px; font-size: 12px; color: var(--txt);
      box-shadow: 0 8px 32px rgba(0,0,0,.5); z-index: 3000;
      opacity: 0; pointer-events: none; transition: opacity .25s, transform .25s;
    }
    #toast.show {
      opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(-6px);
    }

    /* ─── ASTORM Logo Mark ─── */
    .astorm-logo { display: flex; align-items: center; gap: 10px; }
    .astorm-mark { width: 32px; height: 32px; background: linear-gradient(135deg, var(--gold), #a8873c); border-radius: 8px; display: flex; align-items: center; justify-content: center; font-family: 'Cormorant Garamond', serif; font-weight: 700; font-size: 17px; color: var(--obs); flex-shrink: 0; box-shadow: 0 0 16px rgba(201,168,76,.25); }
    .astorm-mark-lg { width: 52px; height: 52px; font-size: 26px; border-radius: 12px; box-shadow: 0 0 24px rgba(201,168,76,.3); }
    .astorm-logo-text { font-family: 'Cormorant Garamond', serif; font-size: 20px; font-weight: 500; color: var(--gold); letter-spacing: .07em; line-height: 1; }
    .astorm-logo-sub { font-size: 8px; color: var(--txm); letter-spacing: .08em; margin-top: 2px; }

    /* ─── FDP (Fiches de paie) — 2026 Design ─── */
    .fdp-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; flex-wrap: wrap; gap: 10px; }
    .fdp-new-banner { background: rgba(34,118,102,.06); border: 1px solid rgba(34,118,102,.2); border-radius: 6px; padding: 10px 14px; display: flex; align-items: center; gap: 10px; margin-bottom: 16px; font-size: 12px; }
    .fdp-new-banner .fdp-new-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--teal); animation: fdpPulse 2s infinite; }
    @keyframes fdpPulse { 0%,100% { opacity: 1; } 50% { opacity: .4; } }
    @keyframes pulse { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: .7; transform: scale(1.1); } }

    /* Batch panel */
    .fdp-batch { background: var(--s1); border: 1px solid var(--bdr); border-radius: 6px; overflow: hidden; margin-bottom: 18px; }
    .fdp-batch-head { padding: 11px 16px; background: var(--s2); border-bottom: 1px solid var(--bdr); display: flex; align-items: center; gap: 10px; }
    .fdp-batch-body { padding: 14px 16px; }
    .fdp-quick-btns { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 14px; }
    .fdp-quick-btn { padding: 5px 12px; border-radius: 4px; background: var(--s2); border: 1px solid var(--bdr); color: var(--txm); font-size: 10.5px; font-weight: 600; cursor: pointer; transition: all .15s; font-family: 'Montserrat', sans-serif; }
    .fdp-quick-btn:hover { background: var(--s3); color: var(--txt); }
    .fdp-quick-btn.active { background: var(--teal-ghost); color: var(--tl); border-color: var(--teal-bold); }
    .fdp-period { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
    .fdp-date-input { background: var(--s2); border: 1px solid var(--bdr); border-radius: 4px; padding: 6px 10px; color: var(--txt); font-family: 'Montserrat', sans-serif; font-size: 11px; outline: none; transition: border-color .2s; }
    .fdp-date-input:focus { border-color: var(--teal); }
    .fdp-formats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 14px; }
    .fdp-fmt { background: var(--s2); border: 1px solid var(--bdr); border-radius: 4px; padding: 9px 10px; cursor: pointer; display: flex; align-items: center; gap: 8px; transition: .15s; }
    .fdp-fmt:hover { border-color: var(--txm); }
    .fdp-fmt.active { border-color: var(--teal); background: var(--teal-ghost); }
    .fdp-fmt-icon { font-size: 16px; }
    .fdp-fmt-label { font-size: 10.5px; font-weight: 700; color: var(--txt); }
    .fdp-dl-bar { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
    .fdp-dl-btn { padding: 8px 18px; border-radius: 4px; background: linear-gradient(135deg, var(--gold), #a8873c); color: var(--obs); font-weight: 700; font-size: 11px; border: none; cursor: pointer; transition: all .2s; font-family: 'Montserrat', sans-serif; letter-spacing: .04em; }
    .fdp-dl-btn:hover { box-shadow: 0 4px 16px rgba(201,168,76,.35); transform: translateY(-1px); }
    .fdp-dl-btn:disabled { opacity: .4; cursor: not-allowed; transform: none; box-shadow: none; }

    /* FDP card grid */
    .fdp-year-section { margin-bottom: 20px; }
    .fdp-year-title { font-family: 'Cormorant Garamond', serif; font-size: 16px; font-weight: 500; color: var(--gold); margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
    .fdp-year-count { font-size: 10px; color: var(--txm); font-family: 'Montserrat', sans-serif; }
    .fdp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
    .fdp-card { background: var(--s2); border: 1px solid var(--bdr); border-radius: 6px; padding: 12px 10px; text-align: center; cursor: pointer; transition: all .2s; position: relative; }
    .fdp-card:hover { border-color: var(--teal); transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0,0,0,.3); }
    .fdp-card.selected { border-color: var(--teal); background: var(--teal-ghost); }
    .fdp-card.new { border-color: rgba(34,118,102,.35); }
    .fdp-card-check { position: absolute; top: 6px; right: 6px; width: 18px; height: 18px; border-radius: 50%; border: 1.5px solid var(--bdr); display: flex; align-items: center; justify-content: center; font-size: 10px; color: transparent; transition: all .15s; }
    .fdp-card.selected .fdp-card-check { background: var(--teal); border-color: var(--teal); color: #fff; }
    .fdp-card-icon { font-size: 26px; margin-bottom: 4px; }
    .fdp-card-mois { font-size: 11px; font-weight: 700; color: var(--txt); }
    .fdp-card-date { font-size: 9px; color: var(--txm); margin-top: 2px; }
    .fdp-new-badge { display: inline-block; background: var(--teal); color: var(--obs); font-size: 7.5px; font-weight: 700; padding: 2px 7px; border-radius: 8px; margin-top: 4px; letter-spacing: .03em; }
    .fdp-card-actions { display: flex; gap: 4px; justify-content: center; margin-top: 6px; }
    .fdp-abtn { padding: 2px 7px; border-radius: 3px; background: var(--s3); border: 1px solid var(--bdr); color: var(--txm); font-size: 9px; cursor: pointer; transition: all .15s; }
    .fdp-abtn:hover { background: var(--teal-ghost); color: var(--tl); }

    /* ─── Bulletins de Paie (bp-) ─── */
    .bp-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
    .bp-kpi { background: var(--s1); border: 1px solid var(--bdr); border-radius: 8px; padding: 14px 16px; text-align: center; }
    .bp-kpi-label { font-size: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--txm); margin-bottom: 6px; }
    .bp-kpi-val { font-family: 'Cormorant Garamond', serif; font-size: 20px; color: var(--txt); }
    .bp-actions-bar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; padding: 8px 0; }
    .bp-year-selector { display: flex; gap: 4px; }
    .bp-year-btn { padding: 5px 14px; border-radius: 4px; background: var(--s2); border: 1px solid var(--bdr); color: var(--txm); font-size: 11px; font-weight: 600; cursor: pointer; transition: all .15s; font-family: 'Montserrat', sans-serif; }
    .bp-year-btn:hover { background: var(--s3); color: var(--txt); }
    .bp-year-btn.active { background: var(--teal); color: #fff; border-color: var(--teal); }
    .bp-month-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; margin-bottom: 16px; }
    .bp-month-card { background: var(--s1); border: 1px solid var(--bdr); border-radius: 8px; padding: 12px 8px; text-align: center; cursor: pointer; transition: all .15s; position: relative; min-height: 88px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; }
    .bp-month-card:hover { border-color: var(--teal-bold); background: var(--s2); }
    .bp-month-card.bp-present { border-color: rgba(34,118,102,.3); background: rgba(34,118,102,.04); }
    .bp-month-card.bp-current { border-color: var(--teal); box-shadow: 0 0 0 1px var(--teal); }
    .bp-month-card.bp-empty { opacity: .45; cursor: default; }
    .bp-month-card.bp-empty:hover { border-color: var(--bdr); background: var(--s1); }
    .bp-month-name { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--txm); }
    .bp-month-amount { font-family: 'Cormorant Garamond', serif; font-size: 15px; color: var(--tl); }
    .bp-month-empty { font-size: 12px; color: var(--txd); }
    .bp-month-pdf { position: absolute; top: 6px; right: 6px; color: var(--teal); opacity: .6; }
    .bp-month-current { position: absolute; bottom: 4px; left: 50%; transform: translateX(-50%); width: 16px; height: 2px; border-radius: 1px; background: var(--teal); }
    .bp-modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: 1100; display: flex; align-items: center; justify-content: center; backdrop-filter: blur(2px); }
    .bp-modal { background: var(--s0); border: 1px solid var(--bdr); border-radius: 12px; width: 560px; max-height: 85vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(0,0,0,.4); }
    .bp-modal-header { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; border-bottom: 1px solid var(--bdr); background: var(--s1); border-radius: 12px 12px 0 0; }
    .bp-modal-title { font-family: 'Cormorant Garamond', serif; font-size: 18px; color: var(--tl); font-weight: 600; }
    .bp-modal-sub { font-size: 10px; color: var(--txm); margin-top: 2px; }
    .bp-modal-body { padding: 16px 20px; }
    .bp-section { margin-bottom: 16px; }
    .bp-section-title { font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--txm); margin-bottom: 8px; padding-bottom: 4px; border-bottom: 1px solid var(--bdr); }
    .bp-line { display: flex; justify-content: space-between; padding: 4px 0; font-size: 12px; color: var(--txt); }
    .bp-line-label { color: var(--txm); }
    .bp-line-val { font-weight: 600; font-variant-numeric: tabular-nums; }
    .bp-line-total { font-weight: 700; padding: 6px 0; border-top: 1px solid var(--bdr); margin-top: 4px; }
    .bp-line-total .bp-line-label { color: var(--txt); }
    .bp-cot-header { display: flex; padding: 4px 0 6px; font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--txd); border-bottom: 1px solid var(--bdr); margin-bottom: 4px; }
    .bp-cot-line { display: flex; padding: 3px 0; font-size: 11px; color: var(--txt); }
    .bp-pdf-btn { display: flex; align-items: center; gap: 4px; padding: 5px 12px; border-radius: 4px; background: var(--teal); color: #fff; border: none; font-size: 11px; font-weight: 600; cursor: pointer; font-family: 'Montserrat', sans-serif; }
    .bp-pdf-btn:hover { background: var(--teal-bold); }
    .bp-close-btn { background: none; border: 1px solid var(--bdr); border-radius: 4px; padding: 4px; cursor: pointer; color: var(--txm); display: flex; }
    .bp-close-btn:hover { color: var(--txt); background: var(--s2); }
    .bp-mini-stat { background: var(--s1); border: 1px solid var(--bdr); border-radius: 6px; padding: 8px; text-align: center; }
    .bp-mini-label { font-size: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--txm); margin-bottom: 3px; }
    .bp-mini-val { font-family: 'Cormorant Garamond', serif; font-size: 16px; color: var(--tl); }
    .bp-month-net { line-height: 1.2; }
    .bp-month-cout { line-height: 1.2; margin-top: 2px; }
    .bp-pdf-viewer { background: var(--s0); border: 1px solid var(--bdr); border-radius: 12px; width: 800px; height: 90vh; box-shadow: 0 20px 60px rgba(0,0,0,.5); display: flex; flex-direction: column; overflow: hidden; }
    .bp-pdf-viewer-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-bottom: 1px solid var(--bdr); background: var(--s1); border-radius: 12px 12px 0 0; flex-shrink: 0; }
    .bp-pdf-viewer-body { flex: 1; min-height: 0; }

    /* ─── Bouton ZIP Bulletins ─── */
    .bp-zip-btn { background: none; border: 1px solid var(--teal); border-radius: 4px; padding: 3px 10px; color: var(--teal); font-size: 10px; font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 4px; transition: all .15s; }
    .bp-zip-btn:hover { background: rgba(34,118,102,.1); }
    .bp-zip-btn:disabled { opacity: .5; cursor: wait; }

    /* ─── Analyse Salaires (Augmentations / Primes) ─── */
    .bp-analyse-section { margin-top: 20px; border: 1px solid var(--bdr); border-radius: 8px; background: var(--s1); overflow: hidden; }
    .bp-analyse-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--bdr); }
    .bp-analyse-toggle { background: none; border: 1px solid var(--bdr); border-radius: 4px; padding: 4px 10px; color: var(--txm); font-size: 10px; cursor: pointer; display: flex; align-items: center; gap: 4px; transition: all .15s; }
    .bp-analyse-toggle:hover { color: var(--tx); border-color: var(--teal); }
    .bp-analyse-timeline { padding: 12px 16px; display: flex; flex-direction: column; gap: 8px; }
    .bp-evt-card { display: flex; align-items: flex-start; gap: 12px; padding: 10px 12px; border-radius: 6px; border: 1px solid var(--bdr); background: var(--s0); transition: all .15s; }
    .bp-evt-card:hover { border-color: var(--teal); }
    .bp-evt--augmentation { border-left: 3px solid var(--teal); }
    .bp-evt--prime { border-left: 3px solid var(--gold); }
    .bp-evt--baisse { border-left: 3px solid var(--rose); }
    .bp-evt--prime_et_augmentation { border-left: 3px solid var(--amber); }
    .bp-evt--variation { border-left: 3px solid var(--txm); }
    .bp-evt-icon { flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; background: var(--s1); display: flex; align-items: center; justify-content: center; }
    .bp-evt-content { flex: 1; min-width: 0; }
    .bp-evt-type { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
    .bp-evt-tag { font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; padding: 2px 8px; border-radius: 20px; }
    .bp-evt-tag--aug { background: rgba(34,118,102,.15); color: var(--teal); }
    .bp-evt-tag--prime { background: rgba(201,168,76,.15); color: var(--gold); }
    .bp-evt-tag--baisse { background: rgba(220,70,70,.15); color: var(--rose); }
    .bp-evt-tag--mixed { background: rgba(201,168,76,.1); color: var(--amber); }
    .bp-evt-tag--var { background: rgba(150,150,150,.15); color: var(--txm); }
    .bp-evt-date { font-size: 10px; color: var(--txm); }
    .bp-evt-detail { font-size: 11px; color: var(--txl); line-height: 1.5; }
    .bp-evt-pct { font-weight: 700; font-size: 10px; margin-left: 4px; }
    .bp-evt-diff { font-size: 10px; color: var(--txm); margin-left: 4px; }

    /* ─── KPI Mini Strip (Collab) ─── */
    .kpi-mini-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 18px; }
    .kpi-mini { background: var(--s1); border: 1px solid var(--bdr); border-radius: 6px; padding: 14px 16px; position: relative; overflow: hidden; }
    .kpi-mini::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; }
    .kpi-mini.teal::after { background: var(--teal); }
    .kpi-mini.rose::after { background: var(--rose); }
    .kpi-mini.amber::after { background: var(--amb); }
    .kpi-mini.blue::after { background: var(--blue); }
    .kpi-mini-label { font-size: 8.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--txm); margin-bottom: 6px; }
    .kpi-mini-value { font-family: 'Cormorant Garamond', serif; font-size: 24px; font-weight: 500; line-height: 1; }
    .kpi-mini-sub { font-size: 10px; color: var(--txm); margin-top: 3px; }
    .kpi-mini.teal .kpi-mini-value { color: var(--tl); }
    .kpi-mini.rose .kpi-mini-value { color: var(--rose); }
    .kpi-mini.amber .kpi-mini-value { color: var(--amb); }
    .kpi-mini.blue .kpi-mini-value { color: var(--blue); }
    /* Section wrapper + chevron collapse/expand discret */
    .kpi-section { position: relative; margin-bottom: 18px; }
    .kpi-section-header { display: flex; align-items: center; gap: 8px; padding: 4px 8px 10px; cursor: pointer; user-select: none; transition: all .2s; }
    .kpi-section-header:hover .kpi-section-title { color: var(--tl); }
    .kpi-section-title { font-family: var(--ff-heading); font-size: 13px; font-weight: 600; color: var(--txm); text-transform: uppercase; letter-spacing: 0.08em; }
    /* Quand replie : devient une card encadree pour matcher le widget augmentations */
    .kpi-section-header--collapsed { background: var(--s1); border: 1px solid var(--bdr); border-radius: 6px; padding: 14px 16px; margin-bottom: 4px; }
    .kpi-section-header--collapsed .kpi-section-title { font-family: var(--ff-heading); font-size: 16px; font-weight: 700; color: var(--tx); text-transform: none; letter-spacing: 0; }
    .kpi-collapse { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; background: var(--s0); border: 1px solid var(--bdr); border-radius: 50%; color: var(--txm); cursor: pointer; padding: 0; transition: all .15s; }
    .kpi-collapse:hover { border-color: var(--teal); color: var(--teal); }
    /* Dans un header : chevron a droite, pas en absolute */
    .kpi-section-header .kpi-collapse { margin-left: auto; }
    /* Dans la card augmentations : absolute top-right */
    .kpi-collapse--aug { position: absolute; top: 14px; right: 14px; z-index: 4; }

    /* ─── Drawer (Collaborateur Detail) ─── */
    .drawer-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 900; backdrop-filter: blur(2px); }
    .drawer { position: fixed; top: 0; right: 0; bottom: 0; width: 720px; max-width: 95vw; background: var(--s0); border-left: 1px solid var(--bdr); z-index: 910; display: flex; flex-direction: column; box-shadow: -8px 0 32px rgba(0,0,0,.5); animation: slideIn .25s ease-out; overflow: hidden; }
    @keyframes slideIn { from { transform: translateX(100%); } to { transform: translateX(0); } }
    @keyframes slideInRight { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }

    .drawer-hero { padding: 24px; background: var(--s1); border-bottom: 1px solid var(--bdr); }
    .drawer-hero-top { display: flex; align-items: flex-start; gap: 16px; margin-bottom: 16px; }
    .drawer-avatar { width: 56px; height: 56px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 700; color: #fff; flex-shrink: 0; }
    .drawer-hero-top [style*="position:relative"]:hover .avatar-hover-overlay { opacity: 1 !important; }
    .drawer-hero-info { flex: 1; }
    .drawer-name { font-family: 'Cormorant Garamond', serif; font-size: 22px; font-weight: 500; color: var(--txt); line-height: 1.2; }
    .drawer-role { font-size: 11px; color: var(--txm); margin-top: 2px; }
    .drawer-hero-close { background: none; border: none; color: var(--txm); cursor: pointer; font-size: 20px; padding: 4px 8px; border-radius: 4px; transition: all .15s; }
    .drawer-hero-close:hover { background: var(--s3); color: var(--txt); }

    .drawer-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--bdr); border-radius: 6px; overflow: hidden; }
    .drawer-stat { background: var(--s2); padding: 10px 12px; text-align: center; }
    .drawer-stat-label { font-size: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--txm); margin-bottom: 4px; }
    .drawer-stat-value { font-family: 'Cormorant Garamond', serif; font-size: 18px; font-weight: 500; }
    .drawer-stat-value.teal { color: var(--tl); }
    .drawer-stat-value.gold { color: var(--gold); }
    .drawer-stat-value.amber { color: var(--amb); }
    .drawer-stat-value.vio { color: var(--vio); }

    /* Drawer Tabs */
    .drawer-tabs { display: flex; border-bottom: 1px solid var(--bdr); background: var(--s1); padding: 0 24px; overflow-x: auto; flex-shrink: 0; }
    .drawer-tab { padding: 10px 14px; font-size: 11px; font-weight: 600; color: var(--txm); cursor: pointer; border-bottom: 2px solid transparent; transition: all .15s; white-space: nowrap; }
    .drawer-tab:hover { color: var(--txt); background: var(--teal-ghost); }
    .drawer-tab.active { color: var(--tl); border-bottom-color: var(--teal); }

    .drawer-body { flex: 1; overflow-y: auto; padding: 20px 24px; }
    .drawer-body::-webkit-scrollbar { width: 6px; }
    .drawer-body::-webkit-scrollbar-thumb { background: var(--s3); border-radius: 3px; }

    /* Detail Sections inside drawer */
    .dsection { margin-bottom: 20px; }
    .dsection-title { font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .10em; color: var(--txm); padding-bottom: 8px; border-bottom: 1px solid var(--bdr); margin-bottom: 12px; display: flex; align-items: center; gap: 6px; }
    .dfield-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
    .dfield { }
    .dfield-label { font-size: 8.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--txm); margin-bottom: 3px; }
    .dfield-value { font-size: 12.5px; color: var(--txt); }
    .dfield-value.masked { color: var(--txd); font-family: monospace; letter-spacing: .05em; }
    .dfield-value.nx-blur-field { filter: blur(5px); transition: filter .25s ease; cursor: default; user-select: none; }
    .dfield-value.nx-blur-field:hover { filter: blur(0); user-select: text; }

    /* Phone input with prefix */
    .nx-phone-input { display: flex; gap: 4px; align-items: center; }
    .nx-phone-prefix {
      width: 72px; flex: none; padding: 6px 4px; font-size: 12px;
      background: var(--s2); color: var(--txm); border: 1px solid var(--bdr);
      border-radius: 4px; appearance: auto; cursor: pointer;
    }
    .nx-phone-prefix:focus { border-color: var(--teal); outline: none; }

    /* Avatar ring (photo + statut) */
    .avatar-ring {
      width: 36px; height: 36px; border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      background: var(--ring-color, var(--teal));
      padding: 2px; flex-shrink: 0;
    }
    .avatar-ring-lg { width: 68px; height: 68px; padding: 3px; }
    .avatar-img-sm {
      width: 100%; height: 100%; border-radius: 50%;
      object-fit: cover; display: block;
      border: 2px solid var(--obs);
    }
    .avatar-img-lg {
      width: 100%; height: 100%; border-radius: 50%;
      object-fit: cover; display: block;
      border: 2px solid var(--obs);
    }

    /* Pending Changes Banner */
    .nx-pending-banner { margin: 0 16px 12px; padding: 12px; background: rgba(201,168,76,.06); border: 1px solid rgba(201,168,76,.25); border-radius: 8px; }
    .nx-pending-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
    .nx-pending-card { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--s1); border: 1px solid rgba(201,168,76,.2); border-radius: 6px; margin-top: 6px; }
    .nx-pending-info { flex: 1; min-width: 0; }
    .dfield-value a { color: var(--tl); text-decoration: none; }
    .dfield-value a:hover { text-decoration: underline; }

    /* Mission Card (in drawer) */
    .mission-card { background: var(--s2); border: 1px solid var(--bdr); border-radius: 6px; padding: 16px; }
    .mission-card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
    .mission-card-title { font-size: 13px; font-weight: 600; color: var(--txt); }
    .mission-frais { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--bdr); }

    /* Doc cards */
    .doc-card { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--s2); border: 1px solid var(--bdr); border-radius: 4px; cursor: pointer; transition: all .15s; }
    .doc-card:hover { border-color: var(--teal); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,.3); }
    .doc-icon { font-size: 20px; }
    .doc-info { flex: 1; }
    .doc-name { font-size: 11px; font-weight: 600; color: var(--txt); }
    .doc-date { font-size: 9px; color: var(--txm); }

    /* Timeline (drawer) */
    .dtimeline { display: flex; flex-direction: column; gap: 0; position: relative; padding-left: 20px; }
    .dtimeline::before { content: ''; position: absolute; left: 7px; top: 4px; bottom: 4px; width: 2px; background: var(--bdr); }
    .dtimeline-item { position: relative; padding: 8px 0 8px 8px; }
    .dtimeline-item::before { content: ''; position: absolute; left: -17px; top: 14px; width: 10px; height: 10px; border-radius: 50%; background: var(--s3); border: 2px solid var(--teal); }
    .dtimeline-item.active::before { background: var(--teal); }
    .dtimeline-title { font-size: 12px; font-weight: 600; color: var(--txt); }
    .dtimeline-sub { font-size: 10px; color: var(--txm); margin-top: 2px; }
    .dtimeline-date { font-size: 9px; color: var(--txd); margin-top: 1px; }

    /* Alert pills (drawer) */
    .dalert { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 6px; margin-bottom: 8px; }
    .dalert.danger { background: rgba(244,63,94,.08); border: 1px solid rgba(244,63,94,.2); }
    .dalert.warn { background: rgba(224,140,26,.08); border: 1px solid rgba(224,140,26,.2); }
    .dalert.ok { background: rgba(39,174,96,.08); border: 1px solid rgba(39,174,96,.2); }
    .dalert.info { background: rgba(36,116,168,.08); border: 1px solid rgba(36,116,168,.2); }
    .dalert-icon { font-size: 16px; }
    .dalert-body { flex: 1; }
    .dalert-title { font-size: 11px; font-weight: 600; color: var(--txt); }
    .dalert-sub { font-size: 10px; color: var(--txm); }

    /* Upload area */
    .upload-area { border: 2px dashed var(--bdr); border-radius: 6px; padding: 24px; text-align: center; cursor: pointer; transition: all .2s; }
    .upload-area:hover { border-color: var(--teal); background: var(--teal-ghost); }
    .upload-area-icon { font-size: 28px; margin-bottom: 6px; }
    .upload-area-text { font-size: 11px; color: var(--txm); }

    /* Salary bar */
    .salary-bar { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
    .salary-bar-fill { height: 6px; border-radius: 3px; background: var(--teal); }
    .salary-bar-label { font-size: 10px; color: var(--txm); min-width: 40px; }
    .salary-bar-value { font-size: 11px; font-weight: 600; color: var(--txt); min-width: 60px; text-align: right; }
    /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
       RESPONSIVE — Mobile-first overrides
       ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

    /* Hamburger button hidden on desktop */
    .mobile-menu-btn { display: none; }

    /* ── TABLET ≤ 768px ── */
    @media (max-width: 768px) {

      /* Topbar */
      #topbar { padding: 0 12px; gap: 8px; }
      .topbar-search { display: none; }
      .mobile-menu-btn {
        display: flex !important;
        align-items: center;
        justify-content: center;
        background: none;
        border: none;
        color: var(--txt);
        cursor: pointer;
        padding: 6px;
        border-radius: 6px;
        transition: background .2s;
      }
      .mobile-menu-btn:active { background: var(--s3); }

      /* Topbar compact */
      .topbar-left { gap: 8px !important; }
      .topbar-right { gap: 8px !important; }

      /* Sidebar overlay */
      #sidebar-overlay {
        position: fixed; inset: 0;
        background: rgba(0,0,0,.5);
        z-index: 998;
        display: none;
        opacity: 0;
        transition: opacity .3s ease;
      }
      #sidebar-overlay.open {
        display: block;
        opacity: 1;
      }

      /* Sidebar as slide-in drawer */
      #sidebar {
        display: block !important;
        position: fixed;
        top: 0; left: 0; bottom: 0;
        width: 280px !important;
        max-width: 85vw;
        transform: translateX(-100%);
        transition: transform .3s cubic-bezier(.4,0,.2,1);
        z-index: 999;
        box-shadow: none;
        background: var(--s0);
        padding-top: 16px !important;
      }
      #sidebar.open {
        transform: translateX(0);
        box-shadow: 4px 0 24px rgba(0,0,0,.4);
      }

      /* Main content full width */
      .main-layout { flex-direction: column; }
      #main { width: 100% !important; }

      /* Page containers */
      .page-container, .page-wrapper { padding: 16px !important; }

      /* Grids */
      .grid-2-1, .grid-3, .grid-4, .stat-grid, .kpi-grid {
        grid-template-columns: 1fr !important;
      }

      /* KPI row in dashboard — scopé au dashboard pour ne pas casser d'autres vues */
      [data-view="dashboard"] [style*="grid-template-columns: repeat(4"] {
        grid-template-columns: repeat(2, 1fr) !important;
      }
      [data-view="dashboard"] [style*="grid-template-columns: repeat(5"] {
        grid-template-columns: repeat(2, 1fr) !important;
      }

      /* Tables — uniquement HORS des vues scopées qui gèrent leurs propres tables */
      :not([data-view="messagerie"]):not([data-view="messagerie-email"]):not([data-view="pipeline"]):not([data-view="meetings"]) > table,
      .view:not(.view--flush) table {
        display: block; overflow-x: auto; -webkit-overflow-scrolling: touch;
      }
      .view:not(.view--flush) thead { white-space: nowrap; }

      /* Modals — DEPRECATED: utiliser .nx-modal-sm/md/lg/xl à la place de inline styles
         Conservé pour rétrocompatibilité mais scopé hors des vues MESH */
      #main > :not([data-view]) [style*="width:700px"],
      #main > :not([data-view]) [style*="width:440px"],
      #main > :not([data-view]) [style*="width:480px"],
      #main > :not([data-view]) [style*="width: 700px"],
      #main > :not([data-view]) [style*="width: 440px"],
      #main > :not([data-view]) [style*="width: 480px"],
      .modal-overlay [style*="width:700px"],
      .modal-overlay [style*="width:440px"],
      .modal-overlay [style*="width:480px"],
      .modal-overlay [style*="width: 700px"],
      .modal-overlay [style*="width: 440px"],
      .modal-overlay [style*="width: 480px"] {
        width: 95vw !important;
        max-width: 95vw !important;
        margin: 8px;
      }

      /* FDT calendar — scopé au module FDT */
      [data-view="fdt"] [style*="grid-template-columns:repeat(7"],
      .fdt-grid [style*="grid-template-columns:repeat(7"] {
        gap: 2px !important;
      }
      [data-view="fdt"] [style*="grid-template-columns:repeat(7"] > div,
      .fdt-grid [style*="grid-template-columns:repeat(7"] > div {
        padding: 4px 2px !important;
        font-size: 10px !important;
      }

      /* Side panels — scopé via classes explicites */
      .nx-panel-side, .detail-drawer {
        width: 100vw !important;
        max-width: 100vw !important;
      }

      /* Login */
      .login-container { padding: 24px 16px !important; }
      .login-card { width: 100% !important; max-width: 100% !important; }
      .profile-grid {
        grid-template-columns: repeat(2, 1fr) !important;
      }

      /* Drawer */
      .detail-drawer, .nx-panel-detail {
        width: 100vw !important;
        max-width: 100vw !important;
      }

      /* Validation list cards — scopé collaborateurs */
      [data-view="collaborateurs"] [style*="display:flex;align-items:center;gap:14px"] {
        flex-wrap: wrap !important;
      }

      /* Stats row compact — scopé hors vues MESH */
      [data-view="dashboard"] [style*="display:grid;grid-template-columns:repeat(5"],
      [data-view="collaborateurs"] [style*="display:grid;grid-template-columns:repeat(5"] {
        grid-template-columns: repeat(3, 1fr) !important;
        gap: 6px !important;
      }

      /* Quick fill buttons — scopé FDT */
      [data-view="fdt"] [style*="REMPLISSAGE RAPIDE"] { font-size: 10px; }
    }

    /* ── PHONE ≤ 480px ── */
    @media (max-width: 480px) {

      /* Topbar even more compact */
      #topbar { height: 48px; padding: 0 8px; }
      .astorm-logo .logo-text { font-size: 14px; }
      .astorm-logo .logo-subtitle { display: none; }

      /* Page titles — h1/h2 uniquement, retiré les [style*] font-size */
      h1 { font-size: 18px !important; }
      h2 { font-size: 15px !important; }

      /* KPI cards single column — scopé au dashboard et vues standard */
      [data-view="dashboard"] [style*="grid-template-columns: repeat(4"],
      [data-view="dashboard"] [style*="grid-template-columns: repeat(5"],
      [data-view="dashboard"] [style*="grid-template-columns:repeat(4"],
      [data-view="dashboard"] [style*="grid-template-columns:repeat(5"],
      .kpi-row, .kpi-mini-strip {
        grid-template-columns: 1fr 1fr !important;
      }

      /* Login */
      .profile-grid {
        grid-template-columns: 1fr !important;
      }
      .profile-card { padding: 10px !important; }

      /* FDT calendar cells — scopé */
      [data-view="fdt"] [style*="grid-template-columns:repeat(7"] > div {
        min-height: 40px !important;
        font-size: 9px !important;
      }

      /* Notification dropdown — utiliser .nx-notif-drop */
      .nx-notif-drop {
        width: calc(100vw - 16px) !important;
        right: -50px !important;
      }

      /* Sub-filter tabs scroll — scopé FDT */
      [data-view="fdt"] [style*="display:flex;gap:0;margin-bottom:16px;border-bottom"] {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
      }

      /* Buttons in validation list - scopé FDT */
      [data-view="fdt"] [style*="display:flex;flex-direction:column;gap:6px;flex-shrink:0"] {
        flex-direction: row !important;
        gap: 4px !important;
      }

      /* Suivi table compact */
      th, td { padding: 6px 4px !important; font-size: 11px !important; }
    }

    /* ── TINY PHONE ≤ 360px ── */
    @media (max-width: 360px) {
      .astorm-logo .logo-text { font-size: 12px; letter-spacing: 2px; }
      #topbar { gap: 4px; }
      .profile-role { display: none !important; }
      [data-view="fdt"] [style*="grid-template-columns:repeat(7"] > div {
        font-size: 8px !important;
        padding: 2px 1px !important;
      }
    }

    /* ===== TAB BUTTONS ===== */
    .tab-button {
      padding: 12px 16px;
      background: none;
      border: none;
      border-bottom: 2px solid transparent;
      color: var(--txm);
      font-size: 12px;
      font-weight: 600;
      cursor: pointer;
      transition: all .2s;
      font-family: 'Montserrat', sans-serif;
    }
    .tab-button:hover {
      color: var(--txt);
      border-bottom-color: var(--teal);
    }
    .tab-button.active {
      color: var(--teal);
      border-bottom-color: var(--teal);
    }

    /* ===== STATUS TAG VARIANTS ===== */
    .status-tag.draft { background: rgba(110,138,138,.10); color: var(--txm); }
    .status-tag.submitted { background: rgba(36,116,168,.10); color: var(--blue); }
    .status-tag.validated { background: rgba(39,174,96,.10); color: var(--grn); }
    .status-tag.paid { background: var(--teal-ghost); color: var(--teal); }
    .status-tag.rejected { background: rgba(192,57,43,.10); color: var(--red); }
    .status-tag.pending { background: rgba(224,140,26,.10); color: var(--amb); }
    .status-tag.ok { background: rgba(39,174,96,.10); color: var(--grn); }
    .status-tag.error { background: rgba(192,57,43,.10); color: var(--red); }

    /* ===== PARAMETRAGE MODULE ===== */
    .parametrage-container { display: flex; height: 100%; min-height: calc(100vh - 64px); background: var(--obs); color: var(--txt); }
    .settings-sidebar { width: 200px; background: var(--s0); border-right: 1px solid var(--bdr); overflow-y: auto; transition: width .3s ease; padding: 16px 0; flex-shrink: 0; }
    .settings-sidebar.collapsed { width: 64px; }
    .sidebar-header { display: flex; justify-content: space-between; align-items: center; padding: 0 16px 16px; border-bottom: 1px solid var(--bdr); }
    .sidebar-header h3 { font-size: 16px; font-weight: 600; margin: 0; font-family: 'Cormorant Garamond', serif; color: var(--teal); }
    .toggle-sidebar-btn { background: none; border: none; color: var(--txm); cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 4px; }
    .sidebar-nav { display: flex; flex-direction: column; gap: 4px; padding: 8px; }
    .nav-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: transparent; border: none; border-left: 2px solid transparent; color: var(--txm); cursor: pointer; transition: all .2s; white-space: nowrap; font-size: 14px; font-family: 'Montserrat', sans-serif; text-align: left; width: 100%; }
    .nav-item:hover { background: var(--s1); color: var(--txt); }
    .nav-item.active { background: var(--s2); border-left-color: var(--teal); color: var(--teal); font-weight: 600; }
    .settings-sidebar.collapsed .nav-item { justify-content: center; padding: 12px; }
    .settings-sidebar.collapsed .nav-label { display: none; }
    .nav-icon { width: 20px; height: 20px; flex-shrink: 0; }
    .settings-content { flex: 1; overflow-y: auto; padding: 32px; }
    .loading-state { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; gap: 16px; color: var(--txm); }
    .spinner { width: 40px; height: 40px; border: 3px solid var(--s1); border-top-color: var(--teal); border-radius: 50%; animation: param-spin .8s linear infinite; }
    @keyframes param-spin { to { transform: rotate(360deg); } }
    .error-banner { background: rgba(255,68,68,.1); border: 1px solid rgba(255,68,68,.3); border-radius: 8px; padding: 20px; display: flex; gap: 16px; align-items: center; margin-bottom: 24px; }
    .error-icon { color: var(--red); flex-shrink: 0; }
    .btn-retry { background: var(--teal); color: #fff; border: none; padding: 8px 16px; border-radius: 4px; cursor: pointer; font-weight: 600; font-family: 'Montserrat', sans-serif; }
    .sections-container { max-width: 1000px; margin: 0 auto; }
    .settings-section { background: var(--s0); border-radius: 12px; padding: 28px; border: 1px solid var(--bdr); margin-bottom: 24px; }
    .section-header { margin-bottom: 32px; padding-bottom: 16px; border-bottom: 1px solid var(--bdr); }
    .section-header h2 { font-family: 'Cormorant Garamond', serif; font-size: 28px; font-weight: 600; margin: 0 0 8px; color: var(--teal); }
    .section-desc { margin: 0; font-size: 14px; color: var(--txm); }
    .settings-form { display: flex; flex-direction: column; gap: 24px; }
    .form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 16px; }
    .form-group { display: flex; flex-direction: column; gap: 8px; }
    .form-group label { font-size: 13px; font-weight: 600; color: var(--txt); text-transform: uppercase; letter-spacing: .5px; }
    .form-group.full-width { grid-column: 1 / -1; }
    .settings-form .input-field { background: var(--s1); border: 1px solid var(--bdr); border-radius: 4px; padding: 10px 12px; color: var(--txt); font-family: 'Montserrat', sans-serif; font-size: 14px; transition: all .2s; width: 100%; box-sizing: border-box; }
    .settings-form .input-field:focus { outline: none; border-color: var(--teal); background: var(--s2); }
    .input-field-sm { background: var(--s1); border: 1px solid var(--bdr); border-radius: 4px; font-size: 13px; padding: 6px 8px; color: var(--txt); font-family: 'Montserrat', sans-serif; width: 100%; box-sizing: border-box; }
    .input-field-sm:focus { outline: none; border-color: var(--teal); }
    .form-section-title { font-size: 14px; font-weight: 600; color: var(--gold); text-transform: uppercase; margin-top: 24px; margin-bottom: 16px; padding-bottom: 8px; border-bottom: 1px solid var(--bdr); }
    .settings-form .btn-primary { background: var(--teal); color: #fff; border: none; padding: 10px 24px; border-radius: 4px; font-weight: 600; cursor: pointer; transition: all .2s; display: inline-flex; align-items: center; gap: 8px; font-family: 'Montserrat', sans-serif; }
    .settings-form .btn-primary:hover:not(:disabled) { filter: brightness(1.1); transform: translateY(-1px); }
    .settings-form .btn-primary:disabled { opacity: .5; cursor: not-allowed; }
    .settings-form .btn-secondary { background: var(--s1); color: var(--txt); border: 1px solid var(--bdr); padding: 10px 16px; border-radius: 4px; font-weight: 600; cursor: pointer; transition: all .2s; display: inline-flex; align-items: center; gap: 8px; font-family: 'Montserrat', sans-serif; }
    .settings-form .btn-secondary:hover { background: var(--s2); border-color: var(--teal); }
    .btn-ghost-sm { background: transparent; color: var(--teal); border: 1px solid var(--teal); padding: 6px 12px; border-radius: 4px; font-size: 12px; font-weight: 600; cursor: pointer; transition: all .2s; font-family: 'Montserrat', sans-serif; }
    .btn-ghost-sm:hover:not(:disabled) { background: rgba(34,118,102,.1); }
    .btn-ghost-sm:disabled { opacity: .5; cursor: not-allowed; }
    .btn-danger-sm { background: transparent; color: var(--red); border: none; padding: 6px 8px; cursor: pointer; display: flex; align-items: center; justify-content: center; }
    .btn-danger-sm:hover { background: rgba(192,57,43,.1); border-radius: 4px; }
    .btn-icon { background: transparent; border: none; color: var(--txm); cursor: pointer; padding: 6px; display: flex; align-items: center; justify-content: center; }
    .btn-icon:hover { color: var(--txt); }
    /* Settings cards (taches, etc.) */
    .settings-card { border-bottom: 1px solid var(--bdr); padding-bottom: 20px; margin-bottom: 20px; }
    .settings-card:last-of-type { border-bottom: none; margin-bottom: 8px; }
    .settings-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
    .settings-card-left { display: flex; align-items: center; gap: 10px; }
    .settings-card-name { font-weight: 600; font-size: 13px; color: var(--txt); }
    .input-inline { border: none !important; background: transparent !important; font-weight: 600; font-size: 13px; color: var(--txt); padding: 0 !important; width: auto; }
    .input-inline:focus { border-bottom: 1px solid var(--teal) !important; }
    .btn-icon-delete { background: none; border: none; color: var(--txm); cursor: pointer; font-size: 18px; padding: 4px 8px; border-radius: 4px; transition: all .15s; }
    .btn-icon-delete:hover { color: var(--red, #ef4444); background: rgba(239,68,68,.08); }

    .integration-card { background: var(--s1); border: 1px solid var(--bdr); border-radius: 8px; overflow: hidden; }
    .integration-header { background: rgba(34,118,102,.08); padding: 16px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--bdr); }
    .integration-title { display: flex; align-items: center; gap: 12px; }
    .integration-title h3 { margin: 0; font-size: 16px; font-weight: 600; color: var(--txt); }
    .integration-icon { color: var(--teal); width: 24px; height: 24px; }
    .integration-body { padding: 16px; display: flex; flex-direction: column; gap: 16px; }
    .api-key-input-group { display: flex; gap: 8px; align-items: center; }
    .api-key-input-group .input-field { flex: 1; }
    .integration-status { display: flex; align-items: center; gap: 8px; font-size: 13px; }
    .status-badge { padding: 4px 8px; border-radius: 4px; font-size: 12px; font-weight: 600; }
    .status-badge.success { background: rgba(39,174,96,.2); color: var(--grn); }
    .status-badge.error { background: rgba(192,57,43,.2); color: var(--red); }
    .status-badge.default { background: var(--s2); color: var(--txm); }
    .toggle-switch { width: 44px; height: 24px; background: var(--s2); border: none; border-radius: 12px; position: relative; cursor: pointer; transition: all .2s; flex-shrink: 0; }
    .toggle-switch.active { background: var(--teal); }
    .toggle-switch::before { content: ''; position: absolute; width: 20px; height: 20px; background: #fff; border-radius: 50%; top: 2px; left: 2px; transition: all .2s; }
    .toggle-switch.active::before { left: 22px; }
    .table-responsive { overflow-x: auto; margin-bottom: 16px; }
    .settings-section .data-table { width: 100%; border-collapse: collapse; font-size: 13px; }
    .settings-section .data-table thead { background: var(--s1); border-bottom: 2px solid var(--bdr); }
    .settings-section .data-table th { padding: 12px; text-align: left; font-weight: 600; color: var(--teal); text-transform: uppercase; letter-spacing: .5px; font-size: 12px; }
    .settings-section .data-table td { padding: 8px 12px; border-bottom: 1px solid var(--bdr); }
    .settings-section .data-table tr:hover { background: rgba(34,118,102,.03); }
    .col-actions { width: 60px; text-align: center; }
    .logo-uploader { position: relative; width: 120px; height: 120px; background: var(--s1); border: 2px dashed var(--bdr); border-radius: 8px; display: flex; align-items: center; justify-content: center; overflow: hidden; cursor: pointer; transition: all .2s; }
    .logo-uploader:hover { border-color: var(--teal); background: rgba(34,118,102,.08); }
    .logo-preview { max-width: 100%; max-height: 100%; object-fit: contain; }
    .logo-placeholder { color: var(--txm); font-size: 32px; display: flex; align-items: center; justify-content: center; }
    .logo-input { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
    .bureaux-table { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }
    .bureau-row { display: grid; grid-template-columns: 1fr 2fr 1fr 100px 40px; gap: 8px; align-items: center; }
    .checkbox-label { display: flex; align-items: center; gap: 8px; font-size: 13px; cursor: pointer; white-space: nowrap; }
    .form-actions { display: flex; gap: 12px; margin-top: 32px; padding-top: 16px; border-top: 1px solid var(--bdr); }
    .notif-types-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
    .notif-type-item { padding: 8px 12px; background: var(--s1); border-radius: 4px; }
    .poids-total { padding: 8px 16px; border-radius: 4px; font-weight: 600; font-size: 14px; display: inline-block; }
    .poids-ok { background: rgba(39,174,96,.1); color: var(--grn); }
    .poids-ko { background: rgba(192,57,43,.1); color: var(--red); }
    .export-import-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
    .ei-card { background: var(--s1); border: 1px solid var(--bdr); border-radius: 8px; padding: 32px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 12px; }
    .ei-card h3 { margin: 0; font-size: 18px; color: var(--txt); }
    .ei-card p { margin: 0; font-size: 14px; color: var(--txm); }
    .ei-icon { width: 48px; height: 48px; color: var(--teal); }
    @media (max-width: 1024px) {
      .settings-sidebar { width: 64px; }
      .settings-sidebar .nav-label { display: none !important; }
      .settings-sidebar .sidebar-header h3 { display: none; }
      .form-row { grid-template-columns: 1fr; }
      .bureau-row { grid-template-columns: 1fr 1fr; }
      .export-import-cards { grid-template-columns: 1fr; }
    }
    @media (max-width: 768px) {
      .parametrage-container { flex-direction: column; }
      .settings-sidebar { width: 100% !important; max-height: 60px; display: flex; align-items: center; padding: 0; border-right: none; border-bottom: 1px solid var(--bdr); overflow-x: auto; }
      .sidebar-header { display: none; }
      .sidebar-nav { flex-direction: row; overflow-x: auto; width: 100%; padding: 8px; }
      .nav-item { padding: 8px 16px; white-space: nowrap; border-left: none; border-bottom: 2px solid transparent; }
      .nav-item.active { border-left: none; border-bottom-color: var(--teal); }
      .settings-content { padding: 16px; }
    }

    /* ═══════════════════════════════════════════════════════════════ */
    /* BESOINS & MATCHING IA — Styles                                  */
    /* ═══════════════════════════════════════════════════════════════ */
    .bm-root { padding: 24px; background: var(--obs); min-height: calc(100vh - 60px); color: var(--txt); }
    .bm-kpi-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin-bottom: 28px; }
    .bm-kpi-card { background: var(--s1); border: 1px solid var(--s2); border-radius: 8px; padding: 20px; display: flex; align-items: center; gap: 16px; transition: all 0.3s ease; }
    .bm-kpi-card:hover { border-color: var(--teal); box-shadow: 0 4px 12px rgba(34,118,102,0.12); }
    .bm-kpi-icon { width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; border-radius: 8px; flex-shrink: 0; }
    .bm-kpi-icon .nx-icon { width: 24px; height: 24px; }
    .bm-kpi-teal .bm-kpi-icon { background: rgba(34,118,102,0.12); color: var(--teal); }
    .bm-kpi-red .bm-kpi-icon { background: rgba(239,68,68,0.12); color: #ef4444; }
    .bm-kpi-green .bm-kpi-icon { background: rgba(16,185,129,0.12); color: #10b981; }
    .bm-kpi-gold .bm-kpi-icon { background: rgba(201,168,76,0.12); color: var(--gold); }
    .bm-kpi-body { display: flex; flex-direction: column; }
    .bm-kpi-value { font-family: 'Cormorant Garamond', serif; font-size: 40px; font-weight: 700; line-height: 1; }
    .bm-kpi-value--teal { color: var(--teal); }
    .bm-kpi-value--red { color: #ef4444; }
    .bm-kpi-value--green { color: #10b981; }
    .bm-kpi-value--gold { color: var(--gold); }
    .bm-kpi-label { font-size: 13px; font-weight: 600; color: var(--txt); margin-top: 4px; }
    .bm-kpi-sub { font-size: 11px; color: var(--txm); }
    .bm-pulse { animation: bm-pulse 2s infinite; }
    @keyframes bm-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.5; } }

    /* Besoins Filters */
    .bm-filters { background: var(--s1); border: 1px solid var(--s2); border-radius: 8px; padding: 16px; margin-bottom: 24px; position: sticky; top: 60px; z-index: 10; }
    .bm-filters-row { display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-end; }
    .bm-filter-group { display: flex; flex-direction: column; gap: 6px; }
    .bm-filter-group label { font-size: 11px; font-weight: 600; color: var(--txm); text-transform: uppercase; letter-spacing: 0.5px; }
    .bm-chips { display: flex; flex-wrap: wrap; gap: 6px; }
    .bm-chip { padding: 5px 12px; border: 1px solid var(--s2); border-radius: 20px; background: transparent; color: var(--txm); font-size: 12px; cursor: pointer; transition: all 0.2s ease; font-family: 'Montserrat', sans-serif; }
    .bm-chip:hover { border-color: var(--teal); color: var(--teal); }
    .bm-chip.active { border-color: var(--teal); background: var(--teal); color: white; }
    .bm-chip.active-red { border-color: #ef4444; background: rgba(239,68,68,0.2); color: #ef4444; }
    .bm-chip.active-green { border-color: #10b981; background: rgba(16,185,129,0.2); color: #10b981; }
    .bm-chip.active-amber { border-color: #f59e0b; background: rgba(245,158,11,0.2); color: #f59e0b; }
    .bm-chip.active-grey { border-color: #6b7280; background: rgba(107,114,128,0.2); color: #6b7280; }
    .bm-tags-input { display: flex; flex-wrap: wrap; gap: 6px; padding: 6px; border: 1px solid var(--s2); border-radius: 4px; background: var(--s0); min-width: 180px; }
    .bm-tags-input input { border: none; background: transparent; color: var(--txt); font-size: 12px; outline: none; min-width: 80px; flex: 1; font-family: 'Montserrat', sans-serif; }
    .bm-tag { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; background: var(--teal); color: white; border-radius: 16px; font-size: 11px; }
    .bm-tag button { background: none; border: none; color: white; cursor: pointer; font-size: 14px; padding: 0; line-height: 1; }

    /* Besoins Table */
    .bm-table-wrap { background: var(--s1); border: 1px solid var(--s2); border-radius: 8px; overflow: hidden; margin-bottom: 24px; }
    .bm-table { width: 100%; border-collapse: collapse; font-size: 13px; }
    .bm-table thead { background: var(--s2); }
    .bm-table th { padding: 12px 12px; text-align: left; font-size: 11px; font-weight: 600; color: var(--txm); text-transform: uppercase; letter-spacing: 0.5px; cursor: pointer; user-select: none; white-space: nowrap; border-bottom: 1px solid var(--bdr); }
    .bm-table th:hover { background: rgba(34,118,102,0.08); }
    .bm-table tbody tr { border-bottom: 1px solid var(--bdr); transition: background 0.2s ease; cursor: pointer; }
    .bm-table tbody tr:hover { background: var(--s2); }
    .bm-table td { padding: 12px 12px; vertical-align: middle; }
    .bm-col-ref { font-family: 'Cormorant Garamond', serif; font-weight: 600; color: var(--teal); font-size: 14px; }
    .bm-col-titre { font-weight: 500; max-width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .bm-col-tjm { font-family: 'Cormorant Garamond', serif; font-size: 14px; font-weight: 600; color: var(--gold); }
    .bm-tag-small { display: inline-block; padding: 2px 8px; background: rgba(34,118,102,0.12); color: var(--teal); border-radius: 12px; font-size: 11px; margin-right: 4px; margin-bottom: 2px; }
    .bm-tag-more { font-size: 11px; color: var(--txm); font-weight: 500; }
    .bm-dots { display: flex; gap: 3px; }
    .bm-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--s2); transition: all 0.3s ease; }
    .bm-dot.done { background: var(--teal); }
    .bm-dot.current { background: var(--teal); animation: bm-pulse 1.5s infinite; }
    .bm-match-count { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: var(--teal); color: white; border-radius: 50%; font-size: 11px; font-weight: 600; }
    .bm-actions-rel { position: relative; }
    .bm-actions-menu { position: absolute; top: 100%; right: 0; background: var(--s1); border: 1px solid var(--s2); border-radius: 8px; min-width: 140px; box-shadow: 0 4px 12px rgba(0,0,0,0.3); z-index: 20; overflow: hidden; }
    .bm-actions-menu a { display: block; padding: 10px 12px; color: var(--txt); text-decoration: none; font-size: 12px; transition: background 0.2s ease; }
    .bm-actions-menu a:hover { background: var(--s2); color: var(--teal); }

    /* Badge variants */
    .bm-badge { display: inline-block; padding: 4px 10px; border-radius: 12px; font-size: 11px; font-weight: 600; text-transform: uppercase; }
    .bm-badge-basse { background: rgba(107,114,128,0.2); color: #9ca3af; }
    .bm-badge-normale { background: rgba(34,118,102,0.2); color: var(--teal); }
    .bm-badge-haute { background: rgba(245,158,11,0.2); color: #f59e0b; }
    .bm-badge-critique { background: rgba(239,68,68,0.2); color: #ef4444; }
    .bm-badge-ouvert { background: rgba(34,118,102,0.2); color: var(--teal); }
    .bm-badge-urgent { background: rgba(239,68,68,0.2); color: #ef4444; }
    .bm-badge-pourvu { background: rgba(16,185,129,0.2); color: #10b981; }
    .bm-badge-en_pause { background: rgba(245,158,11,0.2); color: #f59e0b; }
    .bm-badge-annule { background: rgba(107,114,128,0.2); color: #9ca3af; }
    .bm-badge-clos { background: rgba(75,85,99,0.2); color: #6b7280; }

    /* Besoins Detail View */
    .bm-breadcrumb { font-size: 13px; color: var(--txm); margin-bottom: 16px; display: flex; gap: 8px; align-items: center; }
    .bm-breadcrumb a { color: var(--teal); text-decoration: none; }
    .bm-breadcrumb a:hover { text-decoration: underline; }
    .bm-detail-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 24px; flex-wrap: wrap; gap: 12px; }
    .bm-detail-header h1 { font-family: 'Cormorant Garamond', serif; font-size: 28px; font-weight: 600; color: var(--txt); margin: 0; }
    .bm-header-meta { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 8px; }
    .bm-ref { font-family: 'Cormorant Garamond', serif; font-weight: 600; color: var(--teal); font-size: 14px; }
    .bm-3col { display: grid; grid-template-columns: 380px 1fr 280px; gap: 24px; }
    .bm-col { display: flex; flex-direction: column; gap: 16px; }
    .bm-col-panel { background: var(--s1); border: 1px solid var(--s2); border-radius: 8px; padding: 20px; }
    .bm-section { padding-bottom: 16px; border-bottom: 1px solid var(--s2); }
    .bm-section:last-child { border-bottom: none; }
    .bm-section-title { font-size: 12px; font-weight: 600; text-transform: uppercase; color: var(--txt); margin-bottom: 12px; letter-spacing: 0.5px; }
    .bm-info-row { display: flex; justify-content: space-between; align-items: center; padding: 6px 0; font-size: 13px; }
    .bm-info-row .label { color: var(--txm); font-weight: 500; }
    .bm-info-row .value { color: var(--txt); font-weight: 500; }
    .bm-rich-text { font-size: 13px; line-height: 1.6; color: var(--txt); }
    .bm-comp-group { margin-bottom: 12px; }
    .bm-comp-group h4 { font-size: 11px; font-weight: 600; text-transform: uppercase; color: var(--txm); margin: 0 0 8px 0; }
    .bm-comp-tags { display: flex; flex-wrap: wrap; gap: 6px; }
    .bm-comp-tag { display: inline-block; padding: 5px 10px; border-radius: 4px; font-size: 12px; font-weight: 500; }
    .bm-comp-required { background: rgba(239,68,68,0.12); color: #ef4444; border-left: 3px solid #ef4444; }
    .bm-comp-important { background: rgba(245,158,11,0.12); color: #f59e0b; border-left: 3px solid #f59e0b; }
    .bm-comp-optional { background: rgba(107,114,128,0.12); color: #9ca3af; border-left: 3px solid #6b7280; }
    .bm-tjm-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
    .bm-tjm-item { padding: 12px; background: var(--s2); border-radius: 4px; border-left: 3px solid var(--s2); }
    .bm-tjm-item.highlight { background: rgba(201,168,76,0.08); border-left-color: var(--gold); grid-column: 1 / -1; }
    .bm-tjm-label { display: block; font-size: 11px; font-weight: 600; color: var(--txm); text-transform: uppercase; margin-bottom: 4px; }
    .bm-tjm-value { display: block; font-family: 'Cormorant Garamond', serif; font-size: 28px; font-weight: 700; color: var(--gold); }
    .bm-tjm-item.highlight .bm-tjm-value { font-size: 32px; }

    /* Matching IA */
    .bm-matching { background: var(--s1); border: 1px solid var(--s2); border-radius: 8px; padding: 20px; }
    .bm-btn-match { width: 100%; height: 48px; display: flex; align-items: center; justify-content: center; gap: 10px; font-size: 14px; font-weight: 600; background: var(--teal); color: white; border: none; border-radius: 8px; cursor: pointer; transition: all 0.3s ease; font-family: 'Montserrat', sans-serif; }
    .bm-btn-match:hover { background: var(--tl, #1a5e52); box-shadow: 0 4px 16px rgba(34,118,102,0.3); }
    .bm-loading { text-align: center; padding: 40px 20px; }
    .bm-spinner { width: 40px; height: 40px; margin: 0 auto 16px; border: 3px solid var(--s2); border-top-color: var(--teal); border-radius: 50%; animation: spin 0.8s linear infinite; }
    .bm-progress-bar { width: 100%; height: 4px; background: var(--s2); border-radius: 2px; margin-top: 12px; overflow: hidden; }
    .bm-progress-fill { height: 100%; background: var(--teal); border-radius: 2px; transition: width 0.5s ease; }
    .bm-error { background: rgba(239,68,68,0.08); border: 1px solid rgba(239,68,68,0.3); border-radius: 4px; padding: 12px; color: #ef4444; font-size: 13px; }

    /* Candidate Cards */
    .bm-candidate { background: var(--s0); border: 1px solid var(--s2); border-left: 4px solid transparent; border-radius: 8px; padding: 16px; margin-bottom: 12px; transition: all 0.3s ease; }
    .bm-candidate:hover { border-left-color: var(--teal); box-shadow: 0 4px 12px rgba(0,0,0,0.2); }
    .bm-cand-header { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; }
    .bm-cand-avatar { width: 48px; height: 48px; border-radius: 50%; background: var(--teal); display: flex; align-items: center; justify-content: center; color: white; font-weight: 600; font-size: 16px; flex-shrink: 0; }
    .bm-cand-meta { flex: 1; }
    .bm-cand-meta h4 { margin: 0 0 2px 0; font-size: 14px; font-weight: 600; color: var(--txt); }
    .bm-cand-meta .poste { margin: 0; font-size: 12px; color: var(--txm); }
    .bm-score-circle { width: 52px; height: 52px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: 'Cormorant Garamond', serif; font-size: 20px; font-weight: 700; flex-shrink: 0; }
    .bm-score-green { background: rgba(16,185,129,0.15); color: #10b981; border: 2px solid #10b981; }
    .bm-score-teal { background: rgba(34,118,102,0.15); color: var(--teal); border: 2px solid var(--teal); }
    .bm-score-amber { background: rgba(245,158,11,0.15); color: #f59e0b; border: 2px solid #f59e0b; }
    .bm-score-red { background: rgba(239,68,68,0.15); color: #ef4444; border: 2px solid #ef4444; }
    .bm-score-bar { display: flex; height: 8px; border-radius: 4px; overflow: hidden; margin-bottom: 6px; background: var(--s2); }
    .bm-seg-algo { background: var(--teal); }
    .bm-seg-sem { background: #3b82f6; }
    .bm-seg-ia { background: #8b5cf6; }
    .bm-score-legend { display: flex; gap: 12px; font-size: 10px; color: var(--txm); }
    .bm-score-legend span::before { content: ''; display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 4px; vertical-align: middle; }
    .bm-score-legend .algo::before { background: var(--teal); }
    .bm-score-legend .sem::before { background: #3b82f6; }
    .bm-score-legend .ia::before { background: #8b5cf6; }
    .bm-rec { margin: 8px 0; }
    .bm-rec-badge { padding: 4px 10px; border-radius: 4px; font-size: 11px; font-weight: 600; }
    .bm-rec-fortement_recommande { background: rgba(16,185,129,0.15); color: #10b981; }
    .bm-rec-recommande { background: rgba(34,118,102,0.15); color: var(--teal); }
    .bm-rec-reserve { background: rgba(245,158,11,0.15); color: #f59e0b; }
    .bm-rec-non_recommande { background: rgba(239,68,68,0.15); color: #ef4444; }
    .bm-comp-match { margin: 8px 0; }
    .bm-comp-match h5 { font-size: 11px; font-weight: 600; color: var(--txm); text-transform: uppercase; margin: 0 0 6px 0; }
    .bm-matched { display: inline-block; padding: 3px 8px; background: rgba(16,185,129,0.12); color: #10b981; border-radius: 12px; font-size: 11px; margin: 2px; }
    .bm-missing { display: inline-block; padding: 3px 8px; background: rgba(239,68,68,0.12); color: #ef4444; border-radius: 12px; font-size: 11px; margin: 2px; text-decoration: line-through; }
    .bm-justify { font-size: 12px; line-height: 1.5; color: var(--txm); margin: 8px 0; padding: 8px; background: var(--s1); border-radius: 4px; border-left: 3px solid var(--teal); }
    .bm-alertes { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
    .bm-alerte { padding: 4px 8px; border-radius: 4px; font-size: 11px; }
    .bm-alerte-warning { background: rgba(245,158,11,0.12); color: #f59e0b; }
    .bm-alerte-danger { background: rgba(239,68,68,0.12); color: #ef4444; }
    .bm-alerte-info { background: rgba(59,130,246,0.12); color: #3b82f6; }
    .bm-cand-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
    .bm-cand-actions .btn { padding: 6px 12px; font-size: 12px; border-radius: 4px; cursor: pointer; font-family: 'Montserrat', sans-serif; font-weight: 600; border: 1px solid transparent; transition: all 0.2s ease; }
    .bm-btn-primary { background: var(--teal); color: white; }
    .bm-btn-primary:hover { opacity: 0.9; }
    .bm-btn-secondary { background: transparent; color: var(--txt); border-color: var(--bdr); }
    .bm-btn-secondary:hover { border-color: var(--teal); color: var(--teal); }
    .bm-btn-outline { background: transparent; color: var(--teal); border-color: var(--teal); }
    .bm-btn-outline:hover { background: rgba(34,118,102,0.08); }
    .bm-btn-danger { background: transparent; color: #ef4444; border-color: rgba(239,68,68,0.3); }
    .bm-btn-danger:hover { background: rgba(239,68,68,0.08); }

    /* Pipeline steps */
    .bm-pipeline-steps { list-style: none; padding: 0; margin: 0; }
    .bm-pipeline-step { display: flex; align-items: center; gap: 8px; padding: 8px 0; font-size: 12px; color: var(--txm); border-bottom: 1px solid var(--s2); }
    .bm-pipeline-step:last-child { border-bottom: none; }
    .bm-step-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--s2); flex-shrink: 0; }
    .bm-step-dot.done { background: var(--teal); }
    .bm-step-dot.current { background: var(--teal); box-shadow: 0 0 0 3px rgba(34,118,102,0.3); }
    .bm-step-label.done { color: var(--teal); font-weight: 500; }
    .bm-step-label.current { color: var(--txt); font-weight: 600; }

    /* Notes */
    .bm-notes { margin-top: 12px; }
    .bm-note { padding: 8px; background: var(--s0); border-radius: 4px; margin-bottom: 8px; font-size: 12px; }
    .bm-note-meta { font-size: 10px; color: var(--txm); margin-top: 4px; }
    .bm-note-form { display: flex; gap: 8px; margin-top: 8px; }
    .bm-note-form textarea { flex: 1; padding: 8px; background: var(--s0); border: 1px solid var(--s2); border-radius: 4px; color: var(--txt); font-size: 12px; resize: vertical; min-height: 60px; font-family: 'Montserrat', sans-serif; }

    /* Responsive */
    @media (max-width: 1280px) { .bm-3col { grid-template-columns: 1fr; } }
    @media (max-width: 900px) { .bm-kpi-strip { grid-template-columns: 1fr 1fr; } .bm-filters-row { flex-direction: column; } }

    /* ═══════════════════════════════════════════════════════════════ */
    /* CLIENTS 360 — Additional Styles                                 */
    /* ═══════════════════════════════════════════════════════════════ */
    .cl-drawer-kpi { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--bdr); }
    .cl-kpi-item { text-align: center; }
    .cl-kpi-label { font-size: 11px; color: var(--txm); display: block; margin-bottom: 4px; }
    .cl-kpi-value { font-family: 'Cormorant Garamond', serif; font-size: 22px; font-weight: 700; display: block; }
    .cl-info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
    .cl-info-item { padding: 8px 0; }
    .cl-info-label { font-size: 11px; color: var(--txm); text-transform: uppercase; display: block; margin-bottom: 4px; }
    .cl-info-value { font-size: 13px; color: var(--txt); font-weight: 500; }
    .cl-dept-accordion { border: 1px solid var(--s2); border-radius: 8px; margin-bottom: 8px; overflow: hidden; }
    .cl-dept-header { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: var(--s1); cursor: pointer; transition: background 0.2s ease; width: 100%; border: none; color: var(--txt); font-family: 'Montserrat', sans-serif; font-size: 13px; font-weight: 600; }
    .cl-dept-header:hover { background: var(--s2); }
    .cl-dept-header .nx-icon { transition: transform 0.2s ease; }
    .cl-dept-header .nx-icon.rotated { transform: rotate(90deg); }
    .cl-contact-card { padding: 12px 16px; border-bottom: 1px solid var(--s2); }
    .cl-contact-card:last-child { border-bottom: none; }
    .cl-contact-header { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; }
    .cl-contact-avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--teal); display: flex; align-items: center; justify-content: center; color: white; font-weight: 600; font-size: 13px; flex-shrink: 0; }
    .cl-contact-name { font-weight: 600; font-size: 13px; color: var(--txt); }
    .cl-badge-key { display: inline-block; padding: 2px 6px; background: var(--gold); color: var(--obs); border-radius: 4px; font-size: 9px; font-weight: 700; margin-left: 6px; text-transform: uppercase; }
    .cl-contact-poste { font-size: 12px; color: var(--txm); }
    .cl-contact-meta { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
    .cl-role-badge { padding: 3px 8px; border-radius: 4px; font-size: 10px; font-weight: 600; text-transform: uppercase; }
    .cl-role-decideur { background: rgba(239,68,68,0.15); color: #ef4444; }
    .cl-role-prescripteur { background: rgba(245,158,11,0.15); color: #f59e0b; }
    .cl-role-utilisateur { background: rgba(34,118,102,0.15); color: var(--teal); }
    .cl-role-acheteur { background: rgba(59,130,246,0.15); color: #3b82f6; }
    .cl-role-influenceur { background: rgba(139,92,246,0.15); color: #8b5cf6; }
    .cl-stars { display: inline-flex; gap: 2px; }
    .cl-stars span { color: var(--s2); font-size: 12px; }
    .cl-stars span.filled { color: var(--gold); }
    .cl-contact-links { display: flex; gap: 6px; }
    .cl-link-icon { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; background: var(--s1); border: 1px solid var(--s2); border-radius: 4px; color: var(--txm); text-decoration: none; transition: all 0.2s ease; }
    .cl-link-icon:hover { border-color: var(--teal); color: var(--teal); }
    .cl-link-icon .nx-icon { width: 14px; height: 14px; }
    .cl-timeline { margin-top: 12px; }
    .cl-timeline-item { display: flex; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--s2); }
    .cl-timeline-item:last-child { border-bottom: none; }
    .cl-timeline-marker { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
    .cl-timeline-marker .nx-icon { width: 14px; height: 14px; color: white; }
    .cl-timeline-content { flex: 1; }
    .cl-timeline-date { font-size: 11px; color: var(--txm); display: block; }
    .cl-timeline-title { font-size: 13px; font-weight: 600; color: var(--txt); display: block; margin: 2px 0; }
    .cl-timeline-desc { font-size: 12px; color: var(--txm); }
    .cl-signals-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
    .cl-signal-card { background: var(--s0); border: 1px solid var(--s2); border-radius: 8px; padding: 16px; transition: all 0.3s ease; border-left: 4px solid transparent; }
    .cl-signal-card:hover { border-left-color: var(--teal); }
    .cl-signal-card.treated { opacity: 0.6; }
    .cl-signal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
    .cl-signal-type { padding: 3px 8px; border-radius: 4px; font-size: 10px; font-weight: 700; color: white; text-transform: uppercase; }
    .cl-signal-score { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-size: 18px; color: var(--txt); }
    .cl-signal-body { margin-bottom: 12px; }
    .cl-signal-body p { font-size: 13px; color: var(--txt); margin: 0 0 6px 0; }
    .cl-signal-source { font-size: 11px; color: var(--txm); }
    .cl-signal-date { font-size: 11px; color: var(--txm); margin-left: 8px; }
    .cl-signal-footer { display: flex; gap: 8px; }
    .cl-commercial-card { display: flex; gap: 12px; align-items: center; padding: 16px; background: var(--s0); border: 1px solid var(--s2); border-radius: 8px; }
    .cl-avatar-md { width: 48px; height: 48px; border-radius: 50%; background: var(--teal); display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; font-size: 18px; flex-shrink: 0; }
    .cl-commercial-info { flex: 1; font-size: 13px; }
    .cl-commercial-info .name { font-weight: 600; color: var(--txt); margin: 0 0 4px 0; }
    .cl-commercial-info .email, .cl-commercial-info .phone { color: var(--txm); font-size: 12px; margin: 0; }
    .cl-commercial-item { display: flex; align-items: center; gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--s2); font-size: 13px; }
    .cl-avatar-sm { width: 28px; height: 28px; border-radius: 50%; background: var(--teal); display: flex; align-items: center; justify-content: center; color: white; font-weight: 600; font-size: 11px; flex-shrink: 0; }


    /* ════════════════════════════════════════════════════════════════════════
       PHASE 3 — FINANCE & OPERATIONS MODULES
       Module 10: Facturation ERP  |  Module 11: NDF  |  Module 12: Intercontrat
       ════════════════════════════════════════════════════════════════════════ */

    /* ━━━ FACTURATION — Shared Finance Styles ━━━ */
    .facturation-tabs-nav {
      display: flex; align-items: center; justify-content: space-between;
      background: var(--s1); border-bottom: 2px solid var(--bdr);
      padding: 0 24px; position: sticky; top: 0; z-index: 100;
    }
    .facturation-tabs-nav .tabs-container { display: flex; gap: 0; }
    .facturation-tabs-nav .tab-btn {
      display: flex; align-items: center; gap: 8px; padding: 14px 20px;
      background: transparent; border: none; border-bottom: 3px solid transparent;
      color: var(--txm); font-family: 'Montserrat', sans-serif; font-size: 13px;
      font-weight: 600; cursor: pointer; transition: all .2s; white-space: nowrap;
    }
    .facturation-tabs-nav .tab-btn:hover { color: var(--teal); }
    .facturation-tabs-nav .tab-btn.active { border-bottom-color: var(--teal); color: var(--teal); }

    /* Finance KPI cards */
    .fin-kpi-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-bottom: 24px; }
    .fin-kpi-card {
      background: var(--s1); border: 1px solid var(--bdr); border-top: 3px solid var(--gold);
      border-radius: 8px; padding: 20px; transition: all .3s; position: relative;
    }
    .fin-kpi-card:hover { border-color: var(--gold); box-shadow: 0 4px 16px rgba(201,168,76,.15); transform: translateY(-2px); }
    .fin-kpi-card.alert { border-top-color: var(--rose); background: rgba(244,63,94,.04); }

    /* DSO badges */
    .dso-badge { display: inline-block; padding: 3px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; }
    .dso-badge.good { background: rgba(39,174,96,.15); color: var(--grn); }
    .dso-badge.warn { background: rgba(224,140,26,.15); color: var(--amb); }
    .dso-badge.bad { background: rgba(244,63,94,.15); color: var(--rose); }

    /* Finance status badges */
    .fin-status { display: inline-block; padding: 4px 12px; border-radius: 20px; font-size: 11px; font-weight: 600; white-space: nowrap; }
    .fin-status.brouillon { background: var(--s3); color: var(--txm); }
    .fin-status.envoyee { background: rgba(36,116,168,.15); color: var(--blue); }
    .fin-status.payee { background: rgba(39,174,96,.15); color: var(--grn); }
    .fin-status.partiellement_payee { background: rgba(224,140,26,.15); color: var(--amb); }
    .fin-status.impayee { background: rgba(244,63,94,.15); color: var(--rose); animation: fin-pulse 2s infinite; }
    .fin-status.contentieux { background: rgba(10,10,10,.5); color: var(--txt); border: 1px solid var(--rose); }
    @keyframes fin-pulse { 0%,100%{opacity:1} 50%{opacity:.7} }

    /* Finance table */
    .fin-table { width: 100%; border-collapse: collapse; font-size: 13px; }
    .fin-table thead { background: var(--s1); }
    .fin-table th { padding: 10px 14px; text-align: left; font-weight: 600; color: var(--txt); font-size: 11px; text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; border-bottom: 1px solid var(--bdr); }
    .fin-table td { padding: 10px 14px; color: var(--txt); border-bottom: 1px solid rgba(30,38,38,.5); }
    .fin-table tbody tr { cursor: pointer; transition: background .15s; }
    .fin-table tbody tr:hover { background: var(--s1); }
    .fin-table tbody tr.row-alert { background: rgba(244,63,94,.04); }
    .fin-table tbody tr.row-alert:hover { background: rgba(244,63,94,.08); }

    /* Finance filters bar */
    .fin-filters { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; padding: 14px 16px; background: var(--s0); border: 1px solid var(--bdr); border-radius: 8px; align-items: center; }
    .fin-filters select, .fin-filters input[type="month"], .fin-filters input[type="number"] {
      padding: 8px 12px; background: var(--s1); border: 1px solid var(--bdr); border-radius: 4px;
      color: var(--txt); font-size: 12px; font-family: 'Montserrat', sans-serif; cursor: pointer;
    }
    .fin-filters select:focus, .fin-filters input:focus { border-color: var(--teal); outline: none; }

    /* Btn icon actions */
    .btn-icon { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; background: transparent; border: 1px solid var(--bdr); border-radius: 4px; color: var(--txm); cursor: pointer; transition: all .15s; padding: 0; }
    .btn-icon:hover { background: var(--s1); border-color: var(--teal); color: var(--teal); }

    /* Modals */
    .fin-modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.7); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 20px; }
    .fin-modal { background: var(--s0); border: 1px solid var(--bdr); border-radius: 12px; max-height: 90vh; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 12px 32px rgba(0,0,0,.5); }
    .fin-modal-header { display: flex; justify-content: space-between; align-items: center; padding: 18px 24px; border-bottom: 1px solid var(--bdr); background: var(--s1); }
    .fin-modal-body { flex: 1; overflow-y: auto; padding: 24px; }
    .fin-modal-footer { display: flex; justify-content: flex-end; gap: 10px; padding: 14px 24px; border-top: 1px solid var(--bdr); background: var(--s0); }

    /* Money typography */
    .money-lg { font-family: 'Cormorant Garamond', serif; font-size: 24px; font-weight: 700; color: var(--gold); }
    .money-md { font-family: 'Cormorant Garamond', serif; font-size: 16px; font-weight: 700; }
    .money-sm { font-family: 'Cormorant Garamond', serif; font-size: 14px; font-weight: 600; }

    /* Pagination */
    .fin-pagination { display: flex; justify-content: center; align-items: center; gap: 14px; padding: 14px; margin-top: 16px; }

    /* ━━━ NDF — Notes de Frais Specific ━━━ */
    .ndf-upload-zone {
      border: 2px dashed var(--bdr); border-radius: 12px; padding: 40px 24px;
      text-align: center; cursor: pointer; transition: all .25s; background: transparent;
    }
    .ndf-upload-zone:hover, .ndf-upload-zone.active {
      border-color: var(--teal); background: rgba(34,118,102,.04);
    }
    .ndf-upload-zone .upload-hint { font-size: 11px; color: var(--txm); margin-top: 4px; }

    .ndf-ocr-bar { display: flex; align-items: center; gap: 8px; height: 6px; border-radius: 3px; background: var(--s2); overflow: hidden; }
    .ndf-ocr-bar-fill { height: 100%; border-radius: 3px; transition: width .4s; }
    .ndf-ocr-bar-fill.high { background: var(--grn); }
    .ndf-ocr-bar-fill.medium { background: var(--amb); }
    .ndf-ocr-bar-fill.low { background: var(--rose); }

    /* NDF validation stepper */
    .ndf-stepper { display: flex; align-items: center; gap: 0; }
    .ndf-step { display: flex; align-items: center; gap: 0; }
    .ndf-step-circle { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; border: 2px solid var(--bdr); color: var(--txm); background: transparent; flex-shrink: 0; transition: all .2s; }
    .ndf-step-circle.done { background: var(--teal); border-color: var(--teal); color: #fff; }
    .ndf-step-circle.active { border-color: var(--amb); color: var(--amb); }
    .ndf-step-circle.rejected { background: var(--rose); border-color: var(--rose); color: #fff; }
    .ndf-step-line { width: 48px; height: 2px; background: var(--bdr); }
    .ndf-step-line.done { background: var(--teal); }
    .ndf-step-label { font-size: 10px; color: var(--txm); text-align: center; margin-top: 4px; white-space: nowrap; }

    /* NDF status badges */
    .ndf-status { display: inline-block; padding: 4px 12px; border-radius: 20px; font-size: 11px; font-weight: 600; }
    .ndf-status.brouillon { background: var(--s3); color: var(--txm); }
    .ndf-status.soumise { background: rgba(36,116,168,.15); color: var(--blue); }
    .ndf-status.validee_manager { background: rgba(224,140,26,.15); color: var(--amb); }
    .ndf-status.validee_compta { background: rgba(34,118,102,.15); color: var(--teal); }
    .ndf-status.remboursee { background: rgba(39,174,96,.15); color: var(--grn); }
    .ndf-status.rejetee { background: rgba(244,63,94,.15); color: var(--rose); }

    /* ━━━ INTERCONTRAT — IC Module Styles ━━━ */
    /* (Note: intercontrat.js injects its own scoped styles via <style id="ic-styles"> at runtime) */
    /* These are shared utility classes used by the IC module */
    .ic-duration-badge { display: inline-block; padding: 3px 10px; border-radius: 4px; font-size: 11px; font-weight: 700; }
    .ic-duration-badge.safe { background: rgba(39,174,96,.12); color: var(--grn); }
    .ic-duration-badge.warning { background: rgba(224,140,26,.12); color: var(--amb); }
    .ic-duration-badge.danger { background: rgba(244,63,94,.12); color: var(--rose); }
    .ic-duration-badge.critical { background: rgba(244,63,94,.2); color: var(--rose); animation: ic-pulse 1.5s infinite; }
    @keyframes ic-pulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.85;transform:scale(1.03)} }

    .ic-risk-badge { display: inline-block; padding: 3px 10px; border-radius: 20px; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
    .ic-risk-badge.faible { background: rgba(39,174,96,.12); color: var(--grn); }
    .ic-risk-badge.modere { background: rgba(224,140,26,.12); color: var(--amb); }
    .ic-risk-badge.eleve { background: rgba(244,63,94,.12); color: var(--rose); }
    .ic-risk-badge.critique { background: rgba(244,63,94,.2); color: var(--rose); animation: ic-pulse 1.5s infinite; }

    /* Macron simulator card */
    .macron-result-card {
      background: var(--s0); border: 1px solid var(--bdr); border-radius: 8px; padding: 20px;
      border-left: 4px solid var(--gold);
    }
    .macron-formula { font-family: 'Cormorant Garamond', serif; font-size: 13px; color: var(--txm); padding: 10px 14px; background: var(--s1); border-radius: 4px; margin: 8px 0; font-style: italic; }

    /* Comparatif scenario columns */
    .comparatif-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
    .comparatif-col { background: var(--s0); border: 1px solid var(--bdr); border-radius: 8px; padding: 20px; position: relative; }
    .comparatif-col.recommended { border-color: var(--grn); box-shadow: 0 0 0 1px var(--grn); }
    .comparatif-col .recommended-badge {
      position: absolute; top: -10px; right: 12px;
      background: var(--grn); color: #fff; font-size: 10px; font-weight: 700;
      padding: 2px 12px; border-radius: 20px; text-transform: uppercase; letter-spacing: .04em;
    }

    @media (max-width: 900px) {
      .comparatif-grid { grid-template-columns: 1fr; }
      .fin-kpi-strip, .fin-filters { flex-wrap: wrap; }
    }
    @media (max-width: 640px) {
      .fin-kpi-strip { grid-template-columns: repeat(2, 1fr); }
    }

    /* ═══════════════════════════════════════════════════════
       GENERATEUR DOCUMENTS — Templates & Editor
       ═══════════════════════════════════════════════════════ */
    .tpl-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
      gap: 12px;
    }
    .tpl-card {
      background: var(--s1);
      border: 1px solid var(--bdr);
      border-radius: 8px;
      cursor: pointer;
      transition: border-color .2s, box-shadow .2s;
      overflow: hidden;
    }
    .tpl-card:hover {
      border-color: var(--teal);
      box-shadow: 0 2px 12px rgba(34, 118, 102, .15);
    }
    .tpl-card-head {
      display: flex;
      align-items: center;
      gap: 12px;
      padding: 16px;
    }
    .tpl-card-icon {
      width: 40px;
      height: 40px;
      border-radius: 8px;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
    }
    .tpl-card-body {
      padding: 0 16px 12px;
    }
    .tpl-card-foot {
      display: flex;
      justify-content: space-between;
      padding: 8px 16px;
      border-top: 1px solid var(--bdr);
      font-size: 10px;
      color: var(--txm);
    }
    .tpl-editor {
      display: grid;
      grid-template-columns: 260px 1fr 300px;
      gap: 16px;
      min-height: 600px;
    }
    .tpl-editor > div {
      background: var(--s1);
      border: 1px solid var(--bdr);
      border-radius: 8px;
      overflow: hidden;
    }
    .tpl-sidebar {
      padding: 16px;
      overflow-y: auto;
      max-height: 700px;
    }
    .tpl-var-cat {
      font-size: 10px;
      font-weight: 600;
      color: var(--teal);
      text-transform: uppercase;
      letter-spacing: .5px;
      padding: 8px 0 4px;
      border-bottom: 1px solid var(--bdr);
      margin-bottom: 4px;
    }
    .tpl-var {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 6px 8px;
      cursor: pointer;
      border-radius: 4px;
      transition: background .15s;
    }
    .tpl-var:hover {
      background: rgba(34, 118, 102, .1);
    }
    .tpl-tag {
      background: rgba(34, 118, 102, .15);
      color: var(--teal);
      font-size: 9px;
      padding: 2px 6px;
      border-radius: 3px;
      font-family: monospace;
    }
    .tpl-toolbar {
      display: flex;
      gap: 4px;
      padding: 8px 12px;
      background: var(--s2);
      border-bottom: 1px solid var(--bdr);
      flex-wrap: wrap;
    }
    .tpl-toolbar-btn {
      border: 1px solid var(--bdr);
      background: transparent;
      color: var(--txt);
      border-radius: 4px;
      padding: 4px 8px;
      font-size: 11px;
      cursor: pointer;
      transition: background .15s;
    }
    .tpl-toolbar-btn:hover {
      background: var(--s2);
    }
    .tpl-preview-doc {
      background: #fff;
      color: #1a1a1a;
      padding: 32px;
      border-radius: 6px;
      font-size: 10px;
      line-height: 1.6;
      box-shadow: 0 2px 12px rgba(0, 0, 0, .2);
      max-height: 600px;
      overflow-y: auto;
    }
    .tpl-preview-doc h1 {
      font-family: 'Cormorant Garamond', serif;
      font-size: 18px;
      color: #227666;
      text-align: center;
      border-bottom: 2px solid #c9a84c;
      padding-bottom: 8px;
    }
    .tpl-preview-doc h2 {
      font-family: 'Cormorant Garamond', serif;
      font-size: 13px;
      color: #227666;
      margin-top: 16px;
      border-left: 3px solid #227666;
      padding-left: 8px;
    }
    .tpl-preview-doc table { width: 100%; border-collapse: collapse; margin: 8px 0; }
    .tpl-preview-doc th, .tpl-preview-doc td { border: 1px solid #ddd; padding: 6px 8px; text-align: left; font-size: 9px; }
    .tpl-preview-doc th { background: #227666; color: #fff; }
    .var-highlight {
      background: rgba(34, 118, 102, .15);
      padding: 1px 4px;
      border-radius: 2px;
      color: #227666;
      font-weight: 600;
    }
    .tpl-editor-body:focus {
      border-color: var(--teal) !important;
    }
    @media (max-width: 1100px) {
      .tpl-editor { grid-template-columns: 1fr; }
      .tpl-sidebar { max-height: 200px; }
    }

    /* ═══════════════════════════════════════════════════════════════════
       CSS SCOPE PROTECTION — Architecture MESH
       ═══════════════════════════════════════════════════════════════════
       Problème : les styles globaux (.card, .modal, table, etc.) cascadent
       dans les composants scopés (msg-, em-, pl-, mtg-, etc.) et cassent
       leurs layouts quand nexus.css est mis à jour.

       Solution : chaque composant MESH avec son propre namespace est protégé.
       Les styles globaux ne pénètrent pas dans les conteneurs scopés.
       ═══════════════════════════════════════════════════════════════════ */

    /* ── Protection des conteneurs scopés MESH ──
       Chaque module scopé (msg-, em-, pl-, mtg-, ic-, dc-) utilise ses propres
       classes. On neutralise ici les styles globaux qui cascadent indûment
       DANS ces conteneurs via des resets ciblés sur les propriétés problématiques. */

    /* Neutraliser le padding/display du .view pour les vues full-bleed */
    [data-view="messagerie"].view,
    [data-view="messagerie-email"].view,
    [data-view="pipeline"].view,
    [data-view="meetings"].view,
    [data-view="intercontrat"].view,
    [data-view="dossier-dc"].view {
      padding: 0;
    }

    /* Empêcher les styles globaux de table de cascader dans les modules scopés */
    [data-view] table:not(.fin-table):not(.bm-table):not(.data-table) {
      /* Ne pas hériter des styles globaux de table dans les vues scopées
         sauf si la table utilise explicitement une classe globale */
    }

    /* Protéger les layouts internes des modules scopés.
       Les composants msg-container, em-container, pl-root, mtg-wrap
       gèrent leur propre display/overflow/height — les media queries
       globales ne doivent PAS écraser ces propriétés. */
    .msg-container { display: flex !important; }
    .em-container { display: flex !important; }

    /* ── Isolation CSS : chaque module MESH garde son scope ──
       Les styles injectés par les composants (via <style> ou createElement)
       ont naturellement la même spécificité que nexus.css.
       En ajoutant [data-view] au sélecteur, les styles du composant gagnent. */

    /* ── Responsive safe — classes utilitaires pour remplacer [style*=] ──
       Les sélecteurs [style*="width:700px"] sont dangereux car ils matchent
       des inline styles dans N'IMPORTE quel module.
       Utiliser ces classes utilitaires à la place. */
    .nx-modal-sm { width: 440px; max-width: 95vw; }
    .nx-modal-md { width: 480px; max-width: 95vw; }
    .nx-modal-lg { width: 700px; max-width: 95vw; }
    .nx-modal-xl { width: 900px; max-width: 95vw; }
    .nx-panel-side { width: 380px; max-width: 100vw; }
    .nx-panel-detail { width: 420px; max-width: 100vw; }
    .nx-notif-drop { width: 360px; }

    @media (max-width: 768px) {
      .nx-modal-sm, .nx-modal-md, .nx-modal-lg, .nx-modal-xl {
        width: 95vw !important;
        max-width: 95vw !important;
        margin: 8px;
      }
      .nx-panel-side, .nx-panel-detail {
        width: 100vw !important;
        max-width: 100vw !important;
      }
      .nx-notif-drop {
        width: calc(100vw - 16px) !important;
      }
    }

/* ═══ EDIT INPUT (drawer) ═══ */
.nx-edit-input { font-size:12px; background:var(--s1, #111313); border:1px solid var(--bdr, #2a2d2d); border-radius:4px; padding:8px 10px; color:var(--txt, #fff); font-family:'Montserrat',sans-serif; width:100%; box-sizing:border-box; outline:none; transition:border-color .2s; }
.nx-edit-input:focus { border-color:var(--teal, #227666); }

/* ═══ CREATE MODAL PREMIUM ═══ */
.nx-clabel { font-size:10px; font-weight:600; color:var(--txm, #808080); display:block; margin-bottom:4px; letter-spacing:.02em; }
.nx-cinput { width:100%; padding:9px 12px; background:var(--s1, #111313); border:1px solid var(--bdr, #2a2d2d); border-radius:6px; color:var(--txt, #fff); font-size:12px; font-family:'Montserrat',sans-serif; outline:none; box-sizing:border-box; transition:border-color .2s, box-shadow .2s; }
.nx-cinput:focus { border-color:var(--teal, #227666); box-shadow:0 0 0 3px rgba(34,118,102,.1); }
.nx-cinput::placeholder { color:var(--txd, #555); }
.nx-creadonly { padding:9px 12px; background:var(--s2, #151717); border-radius:6px; font-family:'Cormorant Garamond',serif; font-size:14px; font-weight:600; }

/* ═══ PREMIUM CHECKBOXES ═══ */
.nx-checkbox { display:inline-flex; align-items:center; cursor:pointer; position:relative; user-select:none; }
.nx-checkbox input { position:absolute; opacity:0; width:0; height:0; }
.nx-checkmark { width:18px; height:18px; border:1.5px solid var(--bdr, #2a2d2d); border-radius:4px; background:var(--s1, #111313); display:flex; align-items:center; justify-content:center; transition:all .2s ease; flex-shrink:0; }
.nx-checkbox input:checked + .nx-checkmark { background:var(--teal, #227666); border-color:var(--teal, #227666); }
.nx-checkbox input:checked + .nx-checkmark::after { content:''; display:block; width:5px; height:9px; border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg) translateY(-1px); }
.nx-checkbox:hover .nx-checkmark { border-color:var(--teal, #227666); }
.row-selected { background:rgba(34,118,102,.08) !important; }

/* ═══ BULK ACTION BAR ═══ */
.bulk-bar { display:flex; align-items:center; justify-content:space-between; padding:10px 16px; background:linear-gradient(135deg, rgba(34,118,102,.12), rgba(34,118,102,.06)); border:1px solid rgba(34,118,102,.25); border-radius:8px; margin-bottom:12px; }
.bulk-bar-left { display:flex; align-items:center; gap:10px; }
.bulk-count { font-size:12px; font-weight:600; color:var(--teal, #227666); font-family:'Montserrat',sans-serif; }
.bulk-bar-right { display:flex; align-items:center; gap:8px; }
.bulk-btn { font-size:11px; padding:6px 14px; border-radius:4px; border:none; cursor:pointer; font-family:'Montserrat',sans-serif; font-weight:600; display:flex; align-items:center; gap:5px; transition:all .2s; }
.bulk-btn--clear { background:transparent; color:var(--txm, #888); border:1px solid var(--bdr, #2a2d2d); }
.bulk-btn--clear:hover { color:var(--txt, #fff); border-color:var(--txt, #fff); }
.bulk-btn--danger { background:var(--rose, #c44569); color:#fff; }
.bulk-btn--danger:hover { background:#a83855; }

/* ═══ CONFIRM MODAL ═══ */
.nx-modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,.65); backdrop-filter:blur(4px); z-index:9999; display:flex; align-items:center; justify-content:center; animation:fadeIn .2s ease; }
.nx-confirm-modal { background:var(--s1, #111313); border:1px solid var(--bdr, #2a2d2d); border-radius:12px; padding:32px; width:420px; max-width:90vw; text-align:center; box-shadow:0 20px 60px rgba(0,0,0,.5); }
.nx-confirm-icon { margin-bottom:16px; }
.nx-confirm-title { font-family:'Cormorant Garamond',serif; font-size:20px; font-weight:600; color:var(--txt, #fff); margin:0 0 8px; }
.nx-confirm-text { font-size:12px; color:var(--txm, #888); line-height:1.6; margin:0 0 16px; font-family:'Montserrat',sans-serif; }
.nx-confirm-list { background:var(--obs, #0b0d0d); border:1px solid var(--bdr, #2a2d2d); border-radius:6px; padding:8px 12px; margin-bottom:20px; max-height:120px; overflow-y:auto; text-align:left; }
.nx-confirm-item { font-size:11px; color:var(--txt, #fff); padding:4px 0; border-bottom:1px solid rgba(255,255,255,.04); font-family:'Montserrat',sans-serif; }
.nx-confirm-item:last-child { border-bottom:none; }
.nx-confirm-more { font-size:10px; color:var(--txm, #888); padding:4px 0; font-style:italic; font-family:'Montserrat',sans-serif; }
.nx-confirm-actions { display:flex; gap:10px; justify-content:center; }
.nx-confirm-btn { padding:10px 24px; border-radius:6px; font-size:12px; font-weight:600; cursor:pointer; font-family:'Montserrat',sans-serif; border:none; transition:all .2s; }
.nx-confirm-btn--cancel { background:transparent; color:var(--txm, #888); border:1px solid var(--bdr, #2a2d2d); }
.nx-confirm-btn--cancel:hover { color:var(--txt, #fff); border-color:var(--txt, #fff); }
.nx-confirm-btn--danger { background:var(--rose, #c44569); color:#fff; }
.nx-confirm-btn--danger:hover { background:#a83855; }
.nx-confirm-btn:disabled { opacity:.5; cursor:not-allowed; }

/* ═══ SPOTLIGHT SEARCH (Cmd+K) ═══ */
.nx-spotlight-overlay {
  position:fixed; inset:0; z-index:99999;
  background:rgba(0,0,0,.65); backdrop-filter:blur(4px);
  display:flex; align-items:flex-start; justify-content:center;
  padding-top:min(120px, 15vh);
  animation:fadeIn .15s ease;
}
.nx-spotlight-modal {
  width:min(640px, 90vw); background:var(--s1);
  border:1px solid var(--s3); border-radius:12px;
  box-shadow:0 16px 64px rgba(0,0,0,.5), 0 0 0 1px rgba(34,118,102,.1);
  overflow:hidden; display:flex; flex-direction:column;
  max-height:min(520px, 70vh);
}
.nx-spotlight-header {
  display:flex; align-items:center; gap:10px;
  padding:14px 16px; border-bottom:1px solid var(--s3);
}
.nx-spotlight-input {
  flex:1; background:none; border:none; outline:none;
  color:var(--txt); font-size:15px; font-family:'Montserrat',sans-serif;
  font-weight:500;
}
.nx-spotlight-input::placeholder { color:var(--txm); font-weight:400; }
.nx-spotlight-spinner {
  width:18px; height:18px; border:2px solid var(--s4); border-top-color:var(--teal);
  border-radius:50%; animation:spin .6s linear infinite;
}
@keyframes spin { to { transform:rotate(360deg); } }
.nx-spotlight-clear {
  background:none; border:none; cursor:pointer; color:var(--txm);
  padding:4px; border-radius:4px; display:flex;
}
.nx-spotlight-clear:hover { background:var(--s3); color:var(--txt); }

.nx-spotlight-modes {
  display:flex; gap:4px; padding:8px 16px; border-bottom:1px solid var(--s3);
}
.nx-spotlight-mode {
  display:flex; align-items:center; gap:5px;
  padding:4px 12px; border-radius:20px; font-size:11px; font-weight:600;
  font-family:'Montserrat',sans-serif; cursor:pointer;
  background:var(--s2); border:1px solid transparent; color:var(--txm);
  transition:all .15s;
}
.nx-spotlight-mode:hover { border-color:var(--s4); color:var(--txt); }
.nx-spotlight-mode.active { background:rgba(34,118,102,.15); border-color:var(--teal); color:var(--teal); }

.nx-spotlight-results {
  flex:1; overflow-y:auto; padding:8px 0;
  scrollbar-width:thin; scrollbar-color:var(--s3) transparent;
}
.nx-spotlight-empty {
  display:flex; flex-direction:column; align-items:center; gap:8px;
  padding:32px 16px; color:var(--txm); font-size:13px;
}
.nx-spotlight-try-ia {
  margin-top:8px; padding:6px 16px; border-radius:20px;
  background:rgba(34,118,102,.15); border:1px solid var(--teal);
  color:var(--teal); font-size:11px; font-weight:600; cursor:pointer;
  font-family:'Montserrat',sans-serif;
}
.nx-spotlight-try-ia:hover { background:var(--teal); color:#fff; }

.nx-spotlight-vivier-btn { padding:8px 16px; border-top:1px solid rgba(255,255,255,.06); }
.nx-spotlight-goto-vivier {
  display:flex; align-items:center; gap:8px; width:100%;
  padding:10px 16px; border-radius:8px; cursor:pointer;
  background:rgba(34,118,102,.1); border:1px solid rgba(34,118,102,.3);
  color:var(--teal); font-size:12px; font-weight:600;
  font-family:'Montserrat',sans-serif; transition:all .2s;
}
.nx-spotlight-goto-vivier:hover { background:rgba(34,118,102,.2); border-color:var(--teal); }
.nx-spotlight-goto-vivier svg:last-child { margin-left:auto; }

.nx-spotlight-group { margin-bottom:4px; }
.nx-spotlight-group-label {
  display:flex; align-items:center; gap:6px;
  padding:6px 16px 4px; font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.8px;
  color:var(--txm); font-family:'Montserrat',sans-serif;
}
.nx-spotlight-item {
  display:flex; align-items:center; gap:10px;
  padding:8px 16px; cursor:pointer; transition:background .1s;
}
.nx-spotlight-item:hover, .nx-spotlight-item.active {
  background:rgba(34,118,102,.08);
}
.nx-spotlight-item-avatar {
  width:32px; height:32px; border-radius:8px; overflow:hidden; flex-shrink:0;
}
.nx-spotlight-item-avatar img { width:100%; height:100%; object-fit:cover; }
.nx-spotlight-item-initials {
  display:flex; align-items:center; justify-content:center;
  background:var(--s3); color:var(--teal); font-weight:700; font-size:13px;
  font-family:'Cormorant Garamond',serif;
}
.nx-spotlight-item-icon {
  width:32px; height:32px; border-radius:8px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
}
.nx-spotlight-item-content { flex:1; min-width:0; }
.nx-spotlight-item-title {
  font-size:13px; font-weight:600; color:var(--txt);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.nx-spotlight-item-sub {
  font-size:11px; color:var(--txm); margin-top:1px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.nx-spotlight-item-tags { display:flex; gap:4px; flex-shrink:0; }
.nx-spotlight-tag {
  font-size:9px; font-weight:600; padding:2px 6px; border-radius:4px;
  background:var(--s3); color:var(--txm); white-space:nowrap;
  font-family:'Montserrat',sans-serif;
}
.nx-spotlight-badge {
  font-size:9px; font-weight:700; padding:2px 8px; border-radius:4px;
  white-space:nowrap; font-family:'Montserrat',sans-serif;
}
.nx-spotlight-badge--en_mission { background:rgba(34,118,102,.15); color:var(--teal); }
.nx-spotlight-badge--intercontrat { background:rgba(201,168,76,.15); color:var(--gold); }
.nx-spotlight-badge--disponible { background:rgba(46,213,115,.15); color:#2ed573; }
.nx-spotlight-badge--ouvert { background:rgba(34,118,102,.15); color:var(--teal); }
.nx-spotlight-badge--urgent { background:rgba(239,68,68,.15); color:#ef4444; }
.nx-spotlight-badge--pourvu { background:rgba(46,213,115,.15); color:#2ed573; }
.nx-spotlight-badge--en_cours { background:rgba(34,118,102,.15); color:var(--teal); }
.nx-spotlight-badge--terminee { background:var(--s3); color:var(--txm); }
.nx-spotlight-score {
  font-size:10px; font-weight:700; color:var(--teal);
  background:rgba(34,118,102,.1); padding:2px 6px; border-radius:4px;
}
.nx-spotlight-footer {
  display:flex; justify-content:space-between; align-items:center;
  padding:8px 16px; border-top:1px solid var(--s3);
  font-size:10px; color:var(--txm); font-family:'Montserrat',sans-serif;
}

/* ═══ TRANSITIONS ═══ */
.fade-enter-active, .fade-leave-active { transition:opacity .2s ease; }
.fade-enter-from, .fade-leave-to { opacity:0; }
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }

