  :root{
    --purple:#AB00B0;
    --purple-dark:#7C0080;
    --purple-tint:#F6E6F7;
    --green:#0A7828;
    --green-brand:#04C905;
    --green-tint:#E4F5E6;
    --amber:#B4632B;
    --amber-tint:#F5E9DC;
    --ink:#221E23;
    --paper:#F3F1EC;
    --card:#FFFFFF;
    --line:#DFDAD1;
    --muted:#726B63;
    --danger:#A6332B;
    --radius:3px;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    background:var(--paper);
    color:var(--ink);
    font-family:'Inter',system-ui,sans-serif;
    -webkit-font-smoothing:antialiased;
    min-height:100vh;
  }
  h1,h2,h3,.brand,.nav-label,.section-title{font-family:'Archivo',system-ui,sans-serif;}
  .mono{font-family:'IBM Plex Mono',monospace;}
  button{font-family:inherit;cursor:pointer;}
  input,select,textarea{font-family:inherit;}
  :focus-visible{outline:2px solid var(--purple);outline-offset:2px;}
  @media (prefers-reduced-motion: reduce){
    *{animation-duration:0.001ms !important;transition-duration:0.001ms !important;}
  }

  #app{min-height:100vh;}

  /* ---------- Login ---------- */
  .login-screen{
    min-height:100vh;display:flex;align-items:center;justify-content:center;
    padding:24px;
  }
  .login-card{
    width:100%;max-width:400px;background:var(--card);
    border:1px solid var(--line);border-radius:var(--radius);
    padding:36px 32px 30px;
  }
  .login-mark{
    display:flex;align-items:center;gap:12px;margin-bottom:26px;
  }
  .login-mark img{height:64px;width:auto;display:block;}
  .login-mark p{margin:4px 0 0;font-size:12.5px;color:var(--muted);}
  .field{margin-bottom:16px;}
  .field label{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:6px;}
  .field input, .field select, .field textarea{
    width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:var(--radius);
    font-size:14.5px;background:#FBFAF8;color:var(--ink);min-height:44px;
  }
  .field textarea{min-height:64px;}
  .field input:focus, .field select:focus, .field textarea:focus{background:#fff;border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-tint);}
  .btn{
    border:none;border-radius:var(--radius);padding:11px 18px;font-size:14px;font-weight:600;
    transition:background 0.12s ease;
  }
  .btn-primary{background:var(--purple);color:#fff;width:100%;}
  .btn-primary:hover{background:var(--purple-dark);}
  .btn-primary:disabled{background:#C9A9CB;cursor:not-allowed;}
  .btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--line);}
  .btn-ghost:hover{border-color:var(--muted);color:var(--ink);}
  .login-note{font-size:12px;color:var(--muted);margin-top:16px;line-height:1.5;border-top:1px dashed var(--line);padding-top:14px;}
  .login-error{
    background:#FBEAE8;border:1px solid #E3C6C3;color:var(--danger);
    padding:9px 12px;border-radius:var(--radius);font-size:13px;margin-bottom:16px;
  }

  /* ---------- App shell : menu latéral façon ERP ---------- */
  .app-shell{display:flex;min-height:100vh;align-items:stretch;}
  .sidebar{
    width:246px;flex:none;background:var(--ink);color:#fff;
    display:flex;flex-direction:column;position:sticky;top:0;align-self:flex-start;height:100vh;
  }
  .sidebar-brand{display:flex;align-items:center;gap:10px;padding:18px 18px 16px;border-bottom:1px solid #38333A;flex:none;}
  .sidebar-brand img{height:34px;width:auto;border-radius:3px;display:block;}
  .sidebar-brand-text p{margin:0;font-size:12.5px;font-weight:700;color:#fff;line-height:1.25;font-family:'Archivo',system-ui,sans-serif;}
  .sidebar-brand-text span{font-size:9.5px;color:#A79FA6;text-transform:uppercase;letter-spacing:0.06em;}
  .sidebar-nav{flex:1;padding:16px 10px;overflow-y:auto;}
  .sidebar-section{margin-bottom:20px;}
  .sidebar-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:#8A8189;margin:0 10px 7px;font-family:'Archivo',system-ui,sans-serif;}
  .sidebar-link{
    display:flex;align-items:center;gap:11px;width:100%;padding:9px 11px;border-radius:8px;
    background:transparent;border:none;color:#CFC8CD;font-size:13.5px;font-weight:500;text-align:left;margin-bottom:2px;
    transition:background 0.12s, color 0.12s;
  }
  .sidebar-link svg{flex:none;width:18px;height:18px;opacity:0.8;}
  .sidebar-link:hover{background:#332E34;color:#fff;}
  .sidebar-link.active{background:var(--purple);color:#fff;}
  .sidebar-link.active svg{opacity:1;}
  .sidebar-footer{padding:14px 16px;border-top:1px solid #38333A;flex:none;}
  .sidebar-user{display:flex;align-items:center;gap:10px;}
  .sidebar-avatar{
    width:34px;height:34px;border-radius:50%;background:var(--purple);color:#fff;flex:none;
    display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12.5px;font-family:'Archivo',system-ui,sans-serif;
  }
  .sidebar-user-info{min-width:0;}
  .sidebar-user-info p{margin:0;font-size:12.5px;font-weight:600;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .sidebar-user-info button{background:none;border:none;padding:0;font-size:11.5px;color:#A79FA6;cursor:pointer;}
  .sidebar-user-info button:hover{color:#fff;text-decoration:underline;}

  .app-main{flex:1;min-width:0;display:flex;flex-direction:column;}
  .page-topbar{
    display:flex;align-items:center;gap:12px;padding:16px 28px;background:#fff;border-bottom:1px solid var(--line);flex:none;
  }
  .page-topbar h1{font-size:17px;margin:0;flex:1;font-family:'Archivo',system-ui,sans-serif;letter-spacing:-0.01em;}
  .mobile-menu-btn{display:none;background:none;border:none;color:var(--ink);padding:4px;}
  .mobile-menu-btn svg{width:22px;height:22px;display:block;}
  .sidebar-backdrop{display:none;}

  @media (max-width:900px){
    .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:200;transform:translateX(-100%);transition:transform 0.22s ease;width:250px;height:100vh;}
    .sidebar.open{transform:translateX(0);box-shadow:0 0 34px rgba(0,0,0,0.35);}
    .mobile-menu-btn{display:block;}
    .sidebar-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,0);pointer-events:none;z-index:190;transition:background 0.2s;}
    .sidebar-backdrop.open{background:rgba(0,0,0,0.42);pointer-events:auto;}
    .page-topbar{padding:12px 14px;}
  }

  /* ---------- Top bar (page héritée, conservée pour compatibilité) ---------- */
  .topbar{
    display:flex;align-items:center;justify-content:space-between;
    padding:10px 28px;background:var(--ink);color:#fff;
  }
  .topbar .brand{display:flex;align-items:center;gap:10px;}
  .topbar .brand img{height:52px;width:auto;border-radius:3px;display:block;}
  .topbar .brand p{font-size:10.5px;margin:0;color:#A79FA6;text-transform:uppercase;letter-spacing:0.04em;}
  .topbar-right{display:flex;align-items:center;gap:14px;font-size:12.5px;color:#CFC8CD;}
  .topbar-right .name{color:#fff;font-weight:600;}
  .rail-logout{background:transparent;border:1px solid #4B454B;color:#CFC8CD;padding:7px 12px;border-radius:var(--radius);font-size:12px;}
  .rail-logout:hover{border-color:#8A8189;color:#fff;}

  .main{padding:26px 28px 60px;max-width:1400px;margin:0 auto;min-width:0;width:100%;}
  .page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:18px;gap:16px;flex-wrap:wrap;}
  .page-head h2{font-size:20px;margin:0 0 3px;letter-spacing:-0.01em;}
  .page-head .sub{font-size:13px;color:var(--muted);margin:0;}
  .mode-banner{
    display:flex;align-items:center;gap:8px;padding:9px 14px;border-radius:var(--radius);
    font-size:12.5px;margin-bottom:16px;
  }
  .mode-banner.local{background:var(--amber-tint);color:var(--amber);}
  .mode-banner.shared{background:var(--green-tint);color:var(--green);}

  .kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;}
  @media (max-width:820px){.kpi-row{grid-template-columns:repeat(2,1fr);}}
  .kpi-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;}
  .kpi-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:var(--muted);margin-bottom:6px;}
  .kpi-value{font-family:'Archivo',system-ui,sans-serif;font-size:24px;font-weight:700;color:var(--purple-dark);letter-spacing:-0.01em;}
  .kpi-value-sm{font-size:18px;}
  .kpi-sub{font-size:13px;color:var(--muted);font-weight:500;}

  table.users-table{width:100%;border-collapse:collapse;}
  table.users-table th{
    text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;
    color:var(--muted);padding:0 12px 10px;border-bottom:1px solid var(--line);
  }
  table.users-table td{padding:11px 12px;font-size:13.5px;border-bottom:1px solid #F0EDE7;}
  table.users-table tr:hover td{background:#FAF8F5;}
  .site-tag{display:inline-block;padding:3px 9px;border-radius:20px;font-size:11.5px;font-weight:600;background:var(--purple-tint);color:var(--purple-dark);}
  .row-actions{display:flex;gap:12px;}

  .filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;align-items:flex-end;}
  .field-row-2{display:flex;gap:10px;}
  .field-row-2 > .field{flex:1;min-width:0;}
  .filters .field{margin-bottom:0;}
  .filters .field.search{min-width:220px;}
  .filters .field select, .filters .field input{padding:8px 10px;font-size:13px;}

  /* ---------- Spreadsheet-style table ---------- */
  .grid-wrap{
    background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
    overflow:auto;max-height:68vh;
  }
  table.opgrid{width:100%;border-collapse:collapse;min-width:1180px;}
  table.opgrid thead th{
    background:#000;color:#fff;text-align:left;font-size:11.5px;font-weight:700;
    text-transform:uppercase;letter-spacing:0.03em;padding:11px 12px;
    white-space:nowrap;user-select:none;
    position:sticky;top:0;z-index:5;
  }
  table.opgrid thead th button.sortbtn{
    background:transparent;border:none;color:#fff;font-size:11.5px;font-weight:700;
    text-transform:uppercase;letter-spacing:0.03em;display:flex;align-items:center;gap:5px;padding:0;
  }
  table.opgrid thead th button.sortbtn:hover{color:#E9C9EC;}
  table.opgrid thead th .caret{opacity:0.75;font-size:9px;}
  table.opgrid thead th.actions-col{width:70px;}

  .entry-row td{background:var(--purple-tint);padding:8px 10px;border-bottom:2px solid var(--purple);vertical-align:top;}
  .entry-row input, .entry-row select{
    width:100%;padding:7px 8px;border:1px solid #D9B7DB;border-radius:var(--radius);
    font-size:13px;background:#fff;min-width:96px;
  }
  .entry-row input:focus, .entry-row select:focus{border-color:var(--purple);}
  .entry-row .ref-preview{font-size:12px;color:var(--purple-dark);padding:7px 2px;white-space:nowrap;}
  .entry-row .save-cell{white-space:nowrap;}
  .entry-btn{background:var(--purple);color:#fff;border:none;border-radius:var(--radius);padding:8px 14px;font-size:12.5px;font-weight:700;white-space:nowrap;}
  .entry-btn:hover{background:var(--purple-dark);}
  .entry-btn:disabled{background:#C9A9CB;cursor:not-allowed;}

  table.opgrid tbody td{padding:10px 12px;font-size:13px;border-bottom:1px solid #F0EDE7;white-space:nowrap;}
  table.opgrid tbody td.wrap{white-space:normal;}
  table.opgrid tbody tr.data-row:nth-child(even){background:#FAF8F5;}
  table.opgrid tbody tr.data-row:hover{background:#F5EEF6;}
  table.opgrid tbody tr.row-alert{background:#FCEBEA;}
  table.opgrid tbody tr.row-alert:hover{background:#FADDDB;}
  tr.motif-group-header td{
    background:#EFEBE4;padding:8px 12px;font-size:12.5px;border-bottom:1px solid var(--line);border-top:1px solid var(--line);
  }
  tr.motif-group-header:first-child td{border-top:none;}
  .group-count{color:var(--muted);font-weight:600;margin-left:6px;}

  /* ---------- Checklist ---------- */
  .checklist-tabs{display:flex;gap:8px;margin-bottom:18px;}
  .checklist-tab{
    background:transparent;border:1px solid var(--line);color:var(--muted);
    padding:9px 18px;border-radius:20px;font-size:13.5px;font-weight:600;
  }
  .checklist-tab.active{background:var(--purple);color:#fff;border-color:var(--purple);}
  .checklist-tab:hover:not(.active){border-color:var(--purple);color:var(--purple-dark);}

  .check-item{
    display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border:1px solid var(--line);
    border-radius:var(--radius);margin-bottom:10px;background:#FBFAF8;
  }
  .check-item input[type="checkbox"]{width:19px;height:19px;margin-top:1px;flex-shrink:0;accent-color:var(--purple);}
  .check-item .check-body{flex:1;}
  .check-item .check-label{font-size:14px;font-weight:600;color:var(--ink);cursor:pointer;}
  .check-item .check-sub{font-size:12px;color:var(--muted);margin-top:2px;}
  .check-item.flagged{background:var(--amber-tint);border-color:#E3C9A8;}
  .check-extra{margin-top:12px;padding-top:12px;border-top:1px dashed #D9CBB0;}
  .check-extra textarea{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:var(--radius);font-size:13.5px;background:#fff;min-height:70px;}

  .photo-picker{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
  .photo-thumb{position:relative;width:72px;height:72px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);}
  .pdf-thumb{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:#FBEFEF;color:var(--danger);font-size:22px;}
  .pdf-thumb span{font-size:9px;font-weight:700;letter-spacing:0.02em;}
  .photo-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
  .photo-thumb .photo-remove{
    position:absolute;top:2px;right:2px;background:rgba(34,30,35,0.7);color:#fff;border:none;
    width:18px;height:18px;border-radius:50%;font-size:12px;line-height:1;cursor:pointer;
  }
  .photo-add-btn{
    width:72px;height:72px;border:1px dashed var(--line);border-radius:var(--radius);background:#fff;
    color:var(--muted);font-size:11px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  }
  .photo-add-btn:hover{border-color:var(--purple);color:var(--purple-dark);}
  .photo-required-note{font-size:11.5px;color:var(--danger);margin-top:6px;}

  table.checklist-table th{
    text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;
    color:var(--muted);padding:0 12px 10px;border-bottom:1px solid var(--line);
  }
  table.checklist-table td{padding:11px 12px;font-size:13.5px;border-bottom:1px solid #F0EDE7;}
  table.checklist-table tr:hover td{background:#FAF8F5;}
  .status-ok{color:var(--green);font-weight:600;}
  .status-issue{color:var(--amber);font-weight:600;}

  .detail-photos{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;}
  .detail-photos img{width:84px;height:84px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--line);}

  table.checklist-items-table{width:100%;border-collapse:collapse;margin-bottom:6px;}
  table.checklist-items-table thead th{
    background:var(--purple);color:#fff;text-align:left;font-size:11px;font-weight:700;
    text-transform:uppercase;letter-spacing:0.03em;padding:9px 10px;
  }
  table.checklist-items-table .num-col{width:32px;text-align:center;}
  table.checklist-items-table .radio-col{width:52px;text-align:center;}
  table.checklist-items-table tbody td{padding:9px 10px;border-bottom:1px solid #F0EDE7;vertical-align:top;}
  table.checklist-items-table tbody tr:nth-child(even) td{background:#FBFAF8;}
  table.checklist-items-table .item-title{font-weight:600;font-size:13px;color:var(--ink);}
  table.checklist-items-table .item-desc{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.35;}
  table.checklist-items-table input[type="radio"]{width:18px;height:18px;accent-color:var(--purple);cursor:pointer;}
  table.checklist-items-table .item-obs{
    width:100%;margin-top:7px;padding:7px 9px;border:1px solid var(--danger);border-radius:var(--radius);
    font-size:12.5px;background:#fff;min-height:44px;
  }

  .decision-row{display:flex;gap:10px;flex-wrap:wrap;}

  /* ---------- Check-list — fiches ---------- */
  .cl-cards{display:flex;flex-direction:column;gap:16px;}
  .cl-card{
    border:1px solid var(--line);border-radius:12px;padding:18px 20px;background:#fff;
    box-shadow:0 1px 3px rgba(34,30,35,0.05);transition:border-color 0.15s, box-shadow 0.15s;
  }
  .cl-card-unanswered{border-color:#E3DCCF;background:#FFFDF7;}
  .cl-card-flagged{border-color:var(--danger);background:var(--amber-tint);}
  .cl-card-top{display:flex;gap:14px;align-items:flex-start;margin-bottom:14px;}
  .cl-card-num{
    flex:none;width:30px;height:30px;border-radius:50%;background:var(--purple-tint);color:var(--purple-dark);
    font-family:'Archivo',system-ui,sans-serif;font-weight:700;font-size:14px;
    display:flex;align-items:center;justify-content:center;
  }
  .cl-card-flagged .cl-card-num{background:var(--danger);color:#fff;}
  .cl-card-text{flex:1;padding-top:2px;}
  .cl-card-title{font-family:'Archivo',system-ui,sans-serif;font-weight:700;font-size:14.5px;color:var(--ink);}
  .cl-card-desc{font-size:12.5px;color:var(--muted);margin-top:4px;line-height:1.45;}
  .cl-toggle-group{display:flex;gap:10px;}
  .cl-toggle-btn{
    flex:1;padding:11px 14px;border-radius:var(--radius);border:1.5px solid var(--line);
    background:#FBFAF8;font-weight:600;font-size:13.5px;color:var(--muted);cursor:pointer;
    transition:all 0.12s;
  }
  .cl-toggle-btn:hover{border-color:#C9C2B8;}
  .cl-toggle-oui.active{background:var(--green-tint);border-color:var(--green);color:var(--green);}
  .cl-toggle-non.active{background:var(--amber-tint);border-color:var(--danger);color:var(--danger);}
  .cl-card .item-obs{
    margin-top:12px;width:100%;padding:9px 11px;border:1px solid var(--danger);border-radius:var(--radius);
    font-size:13px;background:#fff;min-height:52px;font-family:'Inter',system-ui,sans-serif;
  }
  .cl-warning{
    background:var(--amber-tint);border:1px solid var(--danger);color:var(--danger);
    border-radius:var(--radius);padding:10px 14px;font-size:13px;font-weight:600;margin-top:16px;
  }

  .decision-opt{
    flex:1;min-width:200px;display:flex;align-items:center;gap:8px;padding:11px 14px;
    border:1px solid var(--line);border-radius:var(--radius);font-size:13.5px;font-weight:600;
    color:var(--muted);cursor:pointer;background:#fff;
  }
  .decision-opt input{width:17px;height:17px;}
  .decision-opt.decision-ok{border-color:var(--green);background:var(--green-tint);color:var(--green);}
  .decision-opt.decision-bad{border-color:var(--danger);background:var(--amber-tint);color:var(--danger);}

  /* ---------- Dashboard ---------- */
  .dash-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;}
  @media (max-width:900px){.dash-kpi-row{grid-template-columns:repeat(2,1fr);}}
  .rapport-section{margin-bottom:30px;}
  .rapport-section-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
  .rapport-section-head h3{margin:0;font-size:15px;font-family:'Archivo',system-ui,sans-serif;}
  .rapport-count{background:var(--purple-tint);color:var(--purple-dark);font-weight:700;font-size:12.5px;padding:2px 10px;border-radius:20px;}
  .rapport-empty{color:var(--muted);font-size:13px;margin:0 0 10px;}
  .op-card{
    border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:16px;
    background:#fff;box-shadow:0 1px 3px rgba(34,30,35,0.05);position:relative;
  }
  .op-card:before{
    content:'';position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:3px;background:var(--purple-tint);
  }
  .op-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid #F0EDE7;}
  .op-card-num{
    font-family:'Archivo',system-ui,sans-serif;font-weight:700;font-size:12.5px;color:var(--purple-dark);
    background:var(--purple-tint);padding:3px 11px;border-radius:20px;letter-spacing:0.02em;
  }
  .trip-header{background:var(--purple-tint);border-radius:14px;padding:18px 20px 4px;margin-bottom:18px;}
  .trip-header-title{
    font-family:'Archivo',system-ui,sans-serif;font-weight:700;font-size:12.5px;color:var(--purple-dark);
    text-transform:uppercase;letter-spacing:0.04em;margin:0 0 12px;
  }
  .trip-header .field input, .trip-header .field select{background:#fff;}
  .op-list-title{
    font-family:'Archivo',system-ui,sans-serif;font-weight:700;font-size:13px;color:var(--ink);
    margin:0 0 12px;display:flex;align-items:center;gap:8px;
  }
  .op-list-title .op-count{background:var(--green-tint);color:var(--green);font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:20px;}
  .dash-kpi-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;}
  .dash-kpi-card .dash-kpi-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:var(--muted);margin-bottom:8px;}
  .dash-kpi-card .dash-kpi-value{font-family:'Archivo',system-ui,sans-serif;font-size:26px;font-weight:700;color:var(--ink);letter-spacing:-0.01em;}
  .dash-kpi-card .dash-kpi-value.accent-purple{color:var(--purple-dark);}
  .dash-kpi-card .dash-kpi-value.accent-green{color:var(--green);}
  .dash-kpi-card .dash-kpi-value.accent-amber{color:var(--amber);}
  .dash-kpi-card .dash-kpi-sub{font-size:12px;color:var(--muted);margin-top:4px;}
  .charts-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;margin-bottom:16px;}
  .charts-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
  @media (max-width:900px){.charts-grid, .charts-grid-2{grid-template-columns:1fr;}}
  .chart-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;}
  .chart-card h3{margin:0 0 4px;font-size:14.5px;font-weight:700;color:var(--ink);}
  .chart-card .chart-sub{font-size:12px;color:var(--muted);margin:0 0 14px;}
  .chart-card .chart-wrap{position:relative;height:260px;}

  .tag{display:inline-block;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;}
  .tag-vente{background:var(--green-tint);color:var(--green);}
  .tag-transfert{background:var(--purple-tint);color:var(--purple-dark);}
  .tag-echantillon{background:#E4ECF5;color:#31567F;}
  .tag-casse{background:var(--amber-tint);color:var(--amber);}
  .tag-interne{background:#EDEBE6;color:#5A544C;}
  .tag-autre{background:#EDEBE6;color:#5A544C;}
  .link-btn{background:transparent;border:none;color:var(--purple-dark);font-weight:600;font-size:12.5px;padding:0;}
  .link-btn:hover{text-decoration:underline;}
  .empty-row td{padding:44px 20px;text-align:center;color:var(--muted);font-size:13.5px;}

  .save-msg{font-size:12.5px;color:var(--green);font-weight:600;margin-top:8px;display:block;}

  /* ---------- Detail modal ---------- */
  .overlay{
    position:fixed;inset:0;background:rgba(34,30,35,0.55);display:flex;align-items:flex-start;
    justify-content:center;padding:40px 20px;overflow-y:auto;z-index:50;
  }
  .modal{background:#fff;border-radius:var(--radius);max-width:560px;width:100%;padding:30px 32px;}
  .modal-w520{max-width:520px;} .modal-w560{max-width:560px;} .modal-w600{max-width:600px;}
  .modal-w620{max-width:620px;} .modal-w640{max-width:640px;} .modal-w700{max-width:700px;}
  .modal-w720{max-width:720px;} .modal-w760{max-width:760px;}
  .modal-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px;}
  .modal-head h3{margin:0 0 4px;font-size:18px;}
  .modal-close{background:transparent;border:none;font-size:20px;color:var(--muted);line-height:1;padding:2px;}
  .modal-close:hover{color:var(--ink);}
  .detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px;font-size:13.5px;margin-bottom:20px;}
  .detail-grid .k{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:0.03em;margin-bottom:2px;}
  .modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px;}

  .section-title{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:var(--muted);}
  table.items-form{width:100%;border-collapse:collapse;margin-top:2px;}
  table.items-form th{
    text-align:left;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;
    color:var(--muted);padding:0 6px 6px;border-bottom:1px solid var(--line);
  }
  table.items-form td{padding:5px 6px;vertical-align:middle;border-bottom:1px solid #F0EDE7;}
  table.items-form td input{width:100%;padding:7px 8px;border:1px solid var(--line);border-radius:var(--radius);font-size:13px;background:#FBFAF8;}
  table.items-form td input:focus{background:#fff;border-color:var(--purple);}

  .article-suggest-wrap{position:relative;}
  .article-suggest-list{
    position:absolute;top:100%;left:0;z-index:80;background:#fff;border:1px solid var(--line);
    border-radius:var(--radius);max-height:230px;overflow-y:auto;width:300px;
    box-shadow:0 6px 18px rgba(0,0,0,0.16);margin-top:2px;
  }
  .article-suggest-item{padding:8px 10px;cursor:pointer;border-bottom:1px solid #F0EDE7;}
  .article-suggest-item:last-child{border-bottom:none;}
  .article-suggest-item:hover, .article-suggest-item.active{background:var(--purple-tint);}
  .article-suggest-item .ref{font-weight:700;font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--purple-dark);display:block;}
  .article-suggest-item .des{font-size:12px;color:var(--ink);display:block;margin-top:2px;line-height:1.3;}
  .row-remove{background:transparent;border:none;color:var(--muted);font-size:16px;padding:4px 6px;line-height:1;}
  .row-remove:hover{color:var(--danger);}
  .add-row{
    margin-top:6px;margin-bottom:4px;background:#fff;border:1.5px dashed var(--purple);color:var(--purple-dark);
    font-size:13px;font-weight:700;padding:12px 14px;border-radius:12px;width:100%;min-height:46px;
  }
  .add-row:hover{background:var(--purple-tint);}

  .loading-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--muted);font-size:14px;}

  /* ---------- Mobile ---------- */
  .mobile-only{display:none;}
  .expiry-badge{display:inline-block;font-size:10.5px;font-weight:600;padding:2px 7px;border-radius:10px;margin:1px 2px 1px 0;white-space:nowrap;}
  .expiry-badge.expiry-ok{background:var(--green-tint);color:var(--green);}
  .expiry-badge.expiry-soon{background:var(--amber-tint);color:var(--amber);}
  .expiry-badge.expiry-expired{background:#FBEAE8;color:var(--danger);}
  .expiry-badge.expiry-none{background:#F0EDE7;color:var(--muted);}
  .fleet-thumb{width:44px;height:32px;object-fit:cover;border-radius:6px;background:#F0EDE7;display:flex;align-items:center;justify-content:center;font-size:16px;}
  .table-fleet-cell{display:flex;align-items:center;gap:7px;white-space:nowrap;}
  .table-fleet-thumb{width:26px;height:26px;border-radius:50%;object-fit:cover;flex:none;background:#F0EDE7;}
  .table-fleet-thumb-empty{display:flex;align-items:center;justify-content:center;font-size:13px;}

  /* ---------- Suivi des positions ---------- */
  .positions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;}
  .position-card{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 1px 3px rgba(34,30,35,0.06);display:flex;flex-direction:column;}
  .position-badge-row{padding:14px 16px 0;}
  .position-badge{
    display:inline-flex;align-items:center;gap:6px;font-family:'Archivo',system-ui,sans-serif;font-weight:800;
    font-size:12.5px;letter-spacing:0.01em;color:var(--ink);
  }
  .position-route{padding:2px 16px 12px;color:var(--muted);font-size:12.5px;margin:0;}
  .position-photo{width:100%;height:150px;background:#F4F1EC;display:flex;align-items:center;justify-content:center;overflow:hidden;}
  .position-photo img{width:100%;height:100%;object-fit:cover;}
  .position-photo-empty{font-size:40px;opacity:0.35;}
  .position-body{padding:14px 16px 16px;}
  .position-immat{font-family:'Archivo',system-ui,sans-serif;font-weight:800;font-size:17px;margin:0 0 2px;}
  .position-type{color:var(--muted);font-size:12.5px;margin:0 0 12px;}
  .position-chauffeur{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:13.5px;font-weight:600;}
  .position-chauffeur-photo{width:28px;height:28px;border-radius:50%;object-fit:cover;flex:none;background:var(--purple-tint);}
  .position-chauffeur-initials{display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--purple-dark);}
  .position-narrative{font-size:13px;line-height:1.5;color:var(--ink);margin:0 0 8px;padding:10px 12px;background:#FBFAF8;border-radius:10px;border:1px solid var(--line);}
  .position-duree{font-size:12.5px;color:var(--muted);margin:0 0 14px;}
  .position-duree strong{color:var(--green);}
  .position-duree-parked strong{color:var(--muted);}
  .position-card-parked{opacity:0.92;}
  .position-card-parked .position-photo{background:#EFEBE4;}
  .position-arrive-btn{width:100%;}

  .fleet-thumb-round{width:36px;height:36px;border-radius:50%;}
  .fleet-thumb-empty{color:var(--muted);}
  .fleet-preview{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12px;color:var(--muted);min-height:0;}
  .fleet-preview:empty{margin-top:0;}
  .fleet-preview span{font-weight:600;color:var(--ink);}
  .fleet-preview img{width:40px;height:40px;object-fit:cover;border-radius:6px;border:1px solid var(--line);}

  @media (max-width:760px){
    .topbar{padding:10px 14px;flex-wrap:wrap;gap:10px;}
    .topbar .brand img{height:38px;}
    .topbar .brand p{display:none;}
    .topbar-right{width:100%;flex-wrap:wrap;gap:8px;font-size:12px;}
    .topbar-right > span{width:100%;order:-1;margin-bottom:2px;}
    .rail-logout{padding:8px 10px;font-size:12.5px;}

    .main{padding:16px 14px 50px;}
    .page-head{flex-direction:column;align-items:stretch;gap:10px;}
    .page-head > div:first-child{order:-1;}
    .page-head .btn, .page-head button{width:100%;}

    .filters{flex-direction:column;align-items:stretch;gap:8px;}
    .filters .field{width:100%;min-width:0;}
    .filters .field select, .filters .field input{width:100%;padding:10px 12px;font-size:14px;}

    .detail-grid{grid-template-columns:1fr;}

    .overlay{padding:0;align-items:stretch;justify-content:stretch;}
    .modal, .modal-w520, .modal-w560, .modal-w600, .modal-w620, .modal-w640, .modal-w700, .modal-w720, .modal-w760{max-width:100%!important;flex:1 1 auto;}
    .modal{max-width:100%;width:100%;min-height:100vh;border-radius:0;padding:14px 14px 22px;}
    .modal-head{margin-bottom:12px;}
    .modal-head h3{font-size:16.5px;}

    /* Article line tables become stacked cards */
    table.items-form, table.items-form thead, table.items-form tbody, table.items-form tr, table.items-form td{
      display:block; width:100%;
    }
    table.items-form thead{display:none;}
    table.items-form tr{
      border:1px solid var(--line); border-radius:var(--radius); padding:12px; margin-bottom:12px; background:#FBFAF8;
    }
    table.items-form td{border-bottom:none; padding:6px 0;}
    table.items-form td[data-label]:before{
      content:attr(data-label); display:block; font-size:10.5px; font-weight:700;
      text-transform:uppercase; letter-spacing:0.03em; color:var(--muted); margin-bottom:4px;
    }
    table.items-form td.line-remove-cell{padding-top:8px;}
    .row-remove{
      width:100%; text-align:center; border:1px solid var(--danger); color:var(--danger);
      border-radius:var(--radius); padding:9px; font-size:13px;
    }
    .mobile-only{display:inline;}

    .trip-header{padding:14px 14px 2px;border-radius:12px;}
    .op-card{padding:14px 14px;border-radius:12px;}
    .op-card:before{display:none;}
    .op-card-head{flex-wrap:wrap;gap:8px;}
    .modal-actions{flex-direction:column-reverse;gap:8px;}
    .modal-actions .btn{width:100%;}
    .add-row{min-height:48px;font-size:13.5px;}
    .photo-add-btn, .photo-thumb{width:64px;height:64px;}

    /* Formulaires plus compacts sur mobile : moins de défilement */
    .modal .field{margin-bottom:11px;}
    .modal .field label{margin-bottom:3px;font-size:11.5px;}
    .modal .field input, .modal .field select, .modal .field textarea{padding:8px 10px;min-height:40px;font-size:14px;}
    .modal .field textarea{min-height:52px;}
    .trip-header{padding:11px 12px 1px;margin-bottom:12px;}
    .trip-header-title{margin:0 0 8px;}
    .op-card{padding:11px 12px;margin-bottom:11px;}
    .op-card-head{margin-bottom:9px;padding-bottom:7px;}
    .op-card .filters{gap:5px;}
    #df-km-parcouru-box, #df-duree-box{padding:8px 10px!important;font-size:13.5px;}
    .op-list-title{margin-bottom:9px;}

    .dash-kpi-row{grid-template-columns:1fr 1fr;}
    .charts-grid, .charts-grid-2{grid-template-columns:1fr;}

    table.opgrid{min-width:900px;}

    .checklist-tabs{flex-wrap:wrap;}
    .article-suggest-list{width:100%;}

    /* Checklist items table becomes stacked cards on mobile */
    table.checklist-items-table, table.checklist-items-table thead, table.checklist-items-table tbody,
    table.checklist-items-table tr, table.checklist-items-table td{ display:block; width:100%; }
    table.checklist-items-table thead{display:none;}
    table.checklist-items-table tr{
      border:1px solid var(--line); border-radius:var(--radius); padding:12px; margin-bottom:10px; background:#FBFAF8;
    }
    table.checklist-items-table tbody tr:nth-child(even) td{background:transparent;}
    table.checklist-items-table td{border-bottom:none; padding:3px 0;}
    table.checklist-items-table .num-col{display:none;}
    table.checklist-items-table .radio-col{
      display:inline-flex; align-items:center; gap:6px; width:auto; margin-top:8px; margin-right:16px;
    }
    table.checklist-items-table .radio-col:before{ content:attr(data-label); font-size:12px; font-weight:600; }
    .decision-row{flex-direction:column;}

    .login-screen{padding:16px;}
    .login-card{padding:24px 20px;}
  }


/* ===== Sélecteur de module ===== */
.module-select-screen{
  min-height:100vh;position:relative;overflow:hidden;display:flex;flex-direction:column;
  background:radial-gradient(ellipse 1200px 800px at 15% -10%, #7C0080 0%, transparent 55%),
             radial-gradient(ellipse 1000px 900px at 110% 15%, #04C905 0%, transparent 45%),
             linear-gradient(160deg, #221E23 0%, #2E1A30 45%, #221E23 100%);
}
.module-select-bg{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none;}
.msb-shape{position:absolute;border-radius:50%;filter:blur(60px);opacity:.35;}
.msb-shape-1{width:520px;height:520px;background:var(--purple);top:-180px;left:-140px;}
.msb-shape-2{width:420px;height:420px;background:var(--green-brand);bottom:-160px;right:-100px;opacity:.22;}
.msb-shape-3{width:300px;height:300px;background:#FFFFFF;top:38%;right:8%;opacity:.05;}

.module-select-head{
  position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;
  padding:26px 40px;
}
.ms-brand img{height:44px;display:block;filter:drop-shadow(0 4px 14px rgba(0,0,0,.35));}
.ms-user{display:flex;align-items:center;gap:12px;}
.ms-user-info p{margin:0;color:#fff;font-size:13.5px;font-weight:600;}
.ms-avatar{
  width:36px;height:36px;border-radius:50%;background:var(--green-brand);color:#1A1420;
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;flex-shrink:0;
}
.ms-logout{
  width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);
  color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s ease, transform .15s ease;
}
.ms-logout svg{width:16px;height:16px;}
.ms-logout:hover{background:rgba(255,255,255,.16);transform:scale(1.06);}

.module-select-body{
  position:relative;z-index:1;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:20px 24px 50px;text-align:center;
}
.ms-greeting{
  margin:0 0 8px;color:var(--green-brand);font-size:13px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
}
.module-select-body h1{
  font-size:30px;margin:0 0 44px;color:#fff;font-weight:800;letter-spacing:-.01em;
}
.module-cards{display:flex;gap:24px;flex-wrap:wrap;justify-content:center;max-width:940px;}
.module-cards-1 .module-card, .module-cards-2 .module-card{width:300px;}
.module-card{
  width:280px;text-align:left;background:#FFFFFF;border:1px solid transparent;border-radius:18px;
  padding:30px 26px 26px;cursor:pointer;position:relative;
  box-shadow:0 1px 3px rgba(0,0,0,.06), 0 12px 30px -14px rgba(0,0,0,.25);
  transition:transform .16s cubic-bezier(.2,.8,.3,1), box-shadow .16s ease, border-color .16s ease;
}
.module-card:hover{
  transform:translateY(-5px);
  box-shadow:0 1px 3px rgba(0,0,0,.08), 0 22px 40px -14px rgba(0,0,0,.35);
  border-color:var(--accent, var(--purple));
}
.module-card:active{transform:translateY(-2px);}
.module-card-icon{
  width:56px;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center;margin-bottom:18px;
  background:var(--purple-tint);
  background:color-mix(in srgb, var(--accent, var(--purple)) 14%, white);
  color:var(--accent, var(--purple));
}
.module-card-icon svg{width:28px;height:28px;}
.module-card h2{font-size:17px;margin:0 0 8px;color:var(--ink);font-weight:700;}
.module-card p{font-size:13px;color:var(--muted);margin:0 0 20px;line-height:1.55;min-height:40px;}
.module-card-go{
  display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--accent, var(--purple));
  opacity:0;transform:translateX(-4px);transition:opacity .16s ease, transform .16s ease;
}
.module-card-go svg{width:14px;height:14px;}
.module-card:hover .module-card-go{opacity:1;transform:translateX(0);}

.module-select-foot{
  position:relative;z-index:1;text-align:center;padding:16px;color:rgba(255,255,255,.45);font-size:11.5px;letter-spacing:.02em;
}

@media (max-width:640px){
  .module-select-head{padding:18px 20px;}
  .ms-brand img{height:36px;}
  .ms-user-info{display:none;}
  .module-select-body h1{font-size:23px;margin-bottom:32px;}
  .module-cards{flex-direction:column;align-items:center;}
  .module-card, .module-cards-1 .module-card, .module-cards-2 .module-card{width:100%;max-width:320px;}
}


.positions-map{height:380px;border-radius:12px;border:1px solid var(--line,#ddd);margin:0 0 18px;overflow:hidden;z-index:0;}
.position-gps{font-size:12px;color:var(--muted);margin:6px 14px 0;}
.position-gps-live{color:#0A7828;font-weight:600;}
.position-gps a{color:inherit;text-decoration:underline;}

.trk-wrap{display:grid;grid-template-columns:1fr 300px;gap:14px;height:calc(100vh - 190px);min-height:480px;}
.trk-map{border-radius:12px;border:1px solid var(--line,#ddd);overflow:hidden;z-index:0;min-height:400px;}
.trk-list{overflow:auto;border:1px solid var(--line,#ddd);border-radius:12px;background:#fff;}
.trk-empty{padding:18px;color:var(--muted);font-size:14px;}
.trk-item{display:flex;gap:10px;padding:12px 14px;border-bottom:1px solid #eee;cursor:pointer;align-items:center;}
.trk-item:hover{background:#f6f8f6;}
.trk-item-dot{width:11px;height:11px;border-radius:50%;flex:none;}
.trk-item-txt{display:flex;flex-direction:column;min-width:0;}
.trk-item-txt span{font-size:13px;color:#444;} .trk-item-txt small{font-size:11.5px;color:var(--muted);}
.trk-icon-wrap{background:none;border:none;}
.trk-pin{position:relative;width:48px;text-align:center;}
.trk-pin-circle{width:44px;height:44px;margin:0 auto;border-radius:50%;border:3px solid var(--c);background:#fff;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 2px 6px rgba(0,0,0,.35);}
.trk-pin-circle img{width:100%;height:100%;object-fit:cover;}
.trk-pin-tip{width:0;height:0;margin:-1px auto 0;border-left:7px solid transparent;border-right:7px solid transparent;border-top:9px solid var(--c);}
.trk-pin-label{position:absolute;top:-17px;left:50%;transform:translateX(-50%);background:var(--c);color:#fff;font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:8px;white-space:nowrap;}
.trk-pulse{animation:trkpulse 2s infinite;}
@keyframes trkpulse{0%{box-shadow:0 0 0 0 rgba(10,120,40,.55)}70%{box-shadow:0 0 0 14px rgba(10,120,40,0)}100%{box-shadow:0 0 0 0 rgba(10,120,40,0)}}
.trk-pop{width:280px;font-family:Inter,system-ui,sans-serif;}
.trk-pop-photo{width:100%;height:150px;object-fit:cover;border-radius:8px;display:block;background:#eee;}
.trk-pop-nophoto{display:flex;align-items:center;justify-content:center;font-size:48px;}
.trk-pop-body{padding-top:8px;}
.trk-pop-status{font-size:12px;font-weight:700;}
.trk-pop-immat{font-size:18px;font-weight:800;margin-top:2px;}
.trk-pop-sub{font-size:12px;color:#666;}
.trk-pop-driver{display:flex;gap:10px;align-items:center;margin:10px 0;padding:8px;background:#f5f5f5;border-radius:8px;font-size:13px;}
.trk-pop-avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;flex:none;}
.trk-pop-initials{display:flex;align-items:center;justify-content:center;background:#0A7828;color:#fff;font-weight:700;}
.trk-pop-info{display:grid;gap:4px;font-size:12.5px;}
.trk-pop-info div{display:flex;justify-content:space-between;gap:10px;} .trk-pop-info span{color:#666;} .trk-pop-info b{text-align:right;}
.trk-pop-actions{display:flex;gap:8px;margin-top:10px;} .trk-pop-actions .btn{flex:1;text-align:center;font-size:12px;padding:7px 8px;text-decoration:none;}
.trk-token{background:#f0f0f0;padding:2px 6px;border-radius:4px;font-size:13px;}
@media(max-width:800px){.trk-wrap{grid-template-columns:1fr;height:auto;}.trk-map{height:60vh;}.trk-list{max-height:260px;}}

/* ===== DAN TRACKING v2 (carte immersive) ===== */
.trk-stage{isolation:isolate;position:relative;height:calc(100vh - 92px);min-height:520px;border-radius:16px;overflow:hidden;border:1px solid #e3e5ea;background:#e9edf1;box-shadow:0 8px 30px rgba(20,24,40,.12);}
.trk-map2{position:absolute;inset:0;z-index:0;}
.trk-panel{position:absolute;top:14px;left:14px;bottom:14px;width:350px;z-index:500;display:flex;flex-direction:column;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-radius:16px;box-shadow:0 8px 28px rgba(20,24,40,.22);overflow:hidden;transition:transform .25s;}
.trk-panel.collapsed{transform:translateX(calc(-100% + 46px));}
.trk-panel.collapsed .trk-panel-head,.trk-panel.collapsed .trk-panel-body{opacity:0;pointer-events:none;}
.trk-panel-toggle{display:block;position:absolute;top:10px;right:8px;border:0;background:#eef0f3;width:30px;height:30px;border-radius:8px;cursor:pointer;z-index:3;}
.trk-panel-head{padding:14px 14px 8px;border-bottom:1px solid #eef0f3;}
.trk-brand{font-family:Archivo,Inter,sans-serif;font-weight:800;font-size:16px;letter-spacing:.4px;display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.trk-brand small{font-weight:600;color:#7b8190;font-size:12px;margin-left:auto;}
.trk-live-dot{width:10px;height:10px;border-radius:50%;background:#12a150;box-shadow:0 0 0 0 rgba(18,161,80,.6);animation:trkpulse 1.8s infinite;}
.trk-search{width:100%;padding:10px 12px;border:1px solid #dfe3ea;border-radius:10px;font-size:14px;background:#f6f8fa;outline:none;}
.trk-search:focus{border-color:#0A7828;background:#fff;}
.trk-tabs{display:flex;gap:4px;margin-top:10px;background:#eef0f3;border-radius:10px;padding:3px;}
.trk-tabs button{flex:1;border:0;background:transparent;padding:7px 4px;border-radius:8px;font-size:13px;font-weight:600;color:#566;cursor:pointer;}
.trk-tabs button.active{background:#fff;color:#111;box-shadow:0 1px 4px rgba(0,0,0,.12);}
.trk-panel-body{flex:1;overflow:auto;padding:8px;}
.trk-empty{padding:18px;color:#7b8190;font-size:13.5px;line-height:1.5;}
.trk-card{display:flex;gap:11px;align-items:center;padding:10px;border-radius:12px;cursor:pointer;border:1px solid transparent;position:relative;}
.trk-card:hover{background:#f3f6f4;} .trk-card.sel{background:#eaf5ee;border-color:#bfe0c9;}
.trk-card-av{width:52px;height:52px;border-radius:50%;border:3px solid #ccc;overflow:hidden;flex:none;display:flex;align-items:center;justify-content:center;font-size:22px;background:#fff;font-weight:700;color:#444;}
.trk-card-av img{width:100%;height:100%;object-fit:cover;}
.trk-card-mid{flex:1;min-width:0;}
.trk-card-t{font-weight:800;font-size:15px;} .trk-card-s{font-size:12.5px;color:#556;}
.trk-card-m{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 2px;}
.trk-card-d{font-size:11.5px;color:#7b8190;}
.trk-chip{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;white-space:nowrap;}
.trk-chip-place{background:#f1eafe;color:#6d28d9;}
.trk-card-sp{text-align:center;min-width:54px;} .trk-card-sp b{font-size:24px;display:block;line-height:1;font-family:Archivo,Inter,sans-serif;} .trk-card-sp small{font-size:10.5px;color:#7b8190;}
.trk-del{border:0;background:#fdecec;color:#c62828;width:28px;height:28px;border-radius:50%;font-size:18px;cursor:pointer;}
.trk-add-pt{width:100%;margin-bottom:8px;}
.trk-ev{display:flex;gap:10px;padding:10px;border-bottom:1px solid #f0f1f4;font-size:13.5px;line-height:1.4;} .trk-ev small{color:#7b8190;}
.trk-ev-ic{width:30px;height:30px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-weight:800;}
.trk-ev.arrivee .trk-ev-ic{background:#e3f6ea;color:#12a150;} .trk-ev.depart .trk-ev-ic{background:#fff1dc;color:#e08a00;}
.trk-controls{position:absolute;top:14px;right:14px;z-index:500;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;max-width:calc(100% - 400px);}
.trk-seg{display:flex;background:rgba(255,255,255,.96);border-radius:12px;padding:3px;box-shadow:0 4px 14px rgba(20,24,40,.2);}
.trk-seg button{border:0;background:transparent;padding:8px 13px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer;color:#445;}
.trk-seg button.active{background:#0A7828;color:#fff;}
.trk-chip-btn{border:0;background:rgba(255,255,255,.96);padding:9px 14px;border-radius:12px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:0 4px 14px rgba(20,24,40,.2);color:#223;}
.trk-chip-btn.active{background:#0A7828;color:#fff;}
.trk-stats{position:absolute;bottom:18px;left:380px;z-index:500;display:flex;gap:10px;}
.trk-stats div{background:rgba(255,255,255,.96);padding:9px 16px;border-radius:12px;box-shadow:0 4px 14px rgba(20,24,40,.2);text-align:center;}
.trk-stats b{display:block;font-size:20px;font-family:Archivo,Inter,sans-serif;} .trk-stats span{font-size:11px;color:#6b7280;}
.trk-banner{position:absolute;top:70px;left:50%;transform:translateX(-50%);z-index:600;background:#111827;color:#fff;padding:10px 18px;border-radius:30px;font-size:14px;box-shadow:0 6px 20px rgba(0,0,0,.35);}
.trk-legend{position:absolute;bottom:18px;right:14px;z-index:500;background:rgba(255,255,255,.96);border-radius:10px;padding:7px 12px;font-size:11.5px;box-shadow:0 4px 14px rgba(20,24,40,.2);display:flex;gap:10px;align-items:center;}
.trk-legend span{display:flex;align-items:center;gap:4px;} .trk-legend i{width:16px;height:5px;border-radius:3px;display:inline-block;}
.trk-drawer{position:absolute;top:118px;right:14px;bottom:70px;width:340px;z-index:550;background:#fff;border-radius:16px;box-shadow:0 10px 34px rgba(20,24,40,.3);overflow:auto;transform:translateX(120%);transition:transform .28s;}
.trk-drawer.open{transform:none;}
.trk-drawer-close{position:absolute;top:10px;right:10px;z-index:2;border:0;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.95);font-size:20px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.25);}
.trk-d-photo{width:100%;height:190px;object-fit:cover;display:block;background:#e5e7eb;}
.trk-d-nophoto{display:flex;align-items:center;justify-content:center;font-size:64px;}
.trk-d-body{padding:14px 16px 18px;}
.trk-d-top{display:flex;justify-content:space-between;align-items:center;} .trk-d-ago{font-size:12px;color:#7b8190;}
.trk-d-immat{margin:8px 0 0;font-family:Archivo,Inter,sans-serif;font-size:24px;font-weight:800;}
.trk-d-sub{font-size:13px;color:#6b7280;margin-bottom:10px;}
.trk-d-speed{display:flex;align-items:center;gap:12px;margin:10px 0 12px;}
.trk-d-speed-n{font-family:Archivo,Inter,sans-serif;font-size:44px;font-weight:800;line-height:1;} .trk-d-speed-n small{font-size:13px;font-weight:600;margin-left:4px;color:#6b7280;}
.trk-d-bar{flex:1;height:10px;background:#eef0f3;border-radius:6px;overflow:hidden;} .trk-d-bar i{display:block;height:100%;border-radius:6px;transition:width .5s;}
.trk-d-driver{display:flex;gap:12px;align-items:center;padding:10px;background:#f5f7f9;border-radius:12px;font-size:13.5px;}
.trk-d-av{width:52px;height:52px;border-radius:50%;object-fit:cover;flex:none;} .trk-d-av-i{display:flex;align-items:center;justify-content:center;background:#0A7828;color:#fff;font-weight:800;}
.trk-d-place,.trk-d-nav,.trk-d-mission{margin-top:10px;padding:9px 11px;border-radius:10px;font-size:13px;}
.trk-d-place{background:#f1eafe;color:#5b21b6;} .trk-d-nav{background:#e8f0fe;color:#1d4ed8;} .trk-d-mission{background:#f5f7f9;color:#333;}
.trk-d-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;}
.trk-d-grid div{background:#f5f7f9;border-radius:10px;padding:9px 11px;} .trk-d-grid span{display:block;font-size:11px;color:#6b7280;} .trk-d-grid b{font-size:15px;}
.trk-d-actions{display:flex;gap:8px;margin-top:14px;} .trk-d-actions .btn{flex:1;text-align:center;text-decoration:none;}
.trk2-icon{background:none;border:none;}
.trk2-pin{position:relative;width:64px;height:78px;text-align:center;}
.trk2-circle{width:48px;height:48px;margin:14px auto 0;border-radius:50%;border:4px solid var(--c);background:#fff;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:23px;box-shadow:0 3px 10px rgba(0,0,0,.4);}
.trk2-circle img{width:100%;height:100%;object-fit:cover;}
.trk2-tip{width:0;height:0;margin:-2px auto 0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:10px solid var(--c);}
.trk2-label{position:absolute;top:66px;left:50%;transform:translateX(-50%);background:#111827;color:#fff;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:8px;white-space:nowrap;}
.trk2-speed{position:absolute;top:-6px;left:50%;transform:translateX(-50%);color:#fff;font-weight:800;font-size:12px;padding:1px 8px;border-radius:12px;white-space:nowrap;box-shadow:0 2px 6px rgba(0,0,0,.35);z-index:2;}
.trk2-speed small{font-size:8px;margin-left:2px;font-weight:600;}
.trk2-pin.sel .trk2-circle{transform:scale(1.15);}
.trk2-pulse{animation:trkpulse 2s infinite;}
.trk2-lieu{transform:translate(-50%,-6px);white-space:nowrap;background:#7c3aed;color:#fff;font-size:11px;font-weight:700;padding:2px 9px;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.3);}
@keyframes trkpulse{0%{box-shadow:0 0 0 0 rgba(18,161,80,.55)}70%{box-shadow:0 0 0 16px rgba(18,161,80,0)}100%{box-shadow:0 0 0 0 rgba(18,161,80,0)}}
.trk-toast{position:fixed;top:20px;left:50%;transform:translate(-50%,-90px);z-index:9999;background:#111827;color:#fff;padding:12px 20px;border-radius:30px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.4);transition:transform .35s;}
.trk-toast.show{transform:translate(-50%,0);}
.trk-token{background:#f0f0f0;padding:2px 6px;border-radius:4px;font-size:13px;}
/* Journal GPS */
.gpsj-filters{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin:6px 0 16px;} .gpsj-filters label{display:flex;flex-direction:column;font-size:12px;color:#666;gap:4px;}
.gpsj-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px;}
.gpsj-tiles div{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:14px 16px;} .gpsj-tiles b{display:block;font-size:26px;font-family:Archivo,Inter,sans-serif;color:#0A7828;} .gpsj-tiles span{font-size:12px;color:#6b7280;}
/* Navigation */
.nav-top{position:absolute;top:14px;left:14px;right:14px;z-index:500;max-width:520px;}
.nav-search{display:flex;gap:8px;background:#fff;padding:8px;border-radius:14px;box-shadow:0 6px 22px rgba(20,24,40,.28);}
.nav-search input{flex:1;border:0;outline:none;font-size:15px;padding:8px;min-width:0;}
.nav-results{background:#fff;border-radius:12px;margin-top:6px;box-shadow:0 6px 22px rgba(20,24,40,.2);overflow:hidden;}
.nav-res{padding:12px 14px;border-bottom:1px solid #f0f1f4;font-size:14px;cursor:pointer;} .nav-res:hover{background:#f3f6f4;}
.nav-quick{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
.nav-chip{border:0;background:#fff;padding:7px 12px;border-radius:20px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:0 3px 10px rgba(20,24,40,.2);}
.nav-instr{position:absolute;top:14px;left:14px;right:14px;z-index:520;max-width:520px;background:#0b6b31;color:#fff;border-radius:16px;padding:14px 18px;gap:16px;align-items:center;box-shadow:0 8px 24px rgba(0,0,0,.35);font-size:16px;}
.nav-instr b{font-size:28px;font-family:Archivo,Inter,sans-serif;} .nav-ic{font-size:44px;line-height:1;}
.nav-bottom{position:absolute;left:14px;right:14px;bottom:18px;z-index:520;max-width:520px;background:#fff;border-radius:16px;padding:14px 16px;gap:12px;align-items:center;justify-content:space-between;box-shadow:0 8px 28px rgba(20,24,40,.3);}
.nav-bottom span{color:#6b7280;font-size:13px;} .nav-btns{display:flex;gap:8px;align-items:center;} .nav-btns .btn{text-decoration:none;}
.nav-me{width:20px;height:20px;border-radius:50%;background:#1a73e8;border:3px solid #fff;box-shadow:0 0 0 6px rgba(26,115,232,.25);}
@media(max-width:900px){
  .trk-stage{height:calc(100vh - 80px);}
  .trk-panel{top:auto;left:8px;right:8px;bottom:8px;width:auto;height:44%;}
  .trk-panel.collapsed{transform:translateY(calc(100% - 46px));}
  .trk-controls{left:8px;right:8px;top:8px;max-width:none;justify-content:flex-start;}
  .trk-stats{left:8px;bottom:calc(44% + 18px);} .trk-legend{display:none;}
  .trk-drawer{top:8px;left:8px;right:8px;bottom:8px;width:auto;}
}

.trk-d-actions a.btn{color:#111;background:#fff;border:1px solid #d5d9e0;padding:10px 12px;border-radius:10px;font-weight:600;}

/* ===== Fenêtres DAN TRACKING ===== */
.trk-dlg-back{position:fixed;inset:0;z-index:100000;background:rgba(15,20,30,.55);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:16px;animation:trkfade .2s;}
@keyframes trkfade{from{opacity:0}to{opacity:1}}
.trk-dlg{background:#fff;border-radius:20px;width:100%;max-width:520px;max-height:92vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.45);font-family:Inter,system-ui,sans-serif;font-size:14px;color:#1f2430;}
.trk-dlg-head{display:flex;gap:14px;align-items:center;padding:18px 20px;background:linear-gradient(135deg,#0A7828,#12a150);color:#fff;position:relative;}
.trk-dlg-head h3{margin:0;font-family:Archivo,Inter,sans-serif;font-size:18px;font-weight:800;} .trk-dlg-head p{margin:2px 0 0;font-size:12.5px;opacity:.85;}
.trk-dlg-ic{width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:22px;flex:none;}
.trk-dlg-x{position:absolute;top:12px;right:14px;border:0;background:rgba(255,255,255,.2);color:#fff;width:32px;height:32px;border-radius:50%;font-size:20px;cursor:pointer;}
.trk-dlg-x:hover{background:rgba(255,255,255,.35);}
.trk-dlg-body{padding:18px 20px;overflow:auto;display:flex;flex-direction:column;gap:14px;}
.trk-dlg-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid #eef0f3;background:#fafbfc;}
.trk-f{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13px;color:#445;}
.trk-f input[type=text],.trk-f input:not([type]),.trk-f select{padding:11px 12px;border:1px solid #d7dce4;border-radius:10px;font-size:14px;font-weight:400;outline:none;background:#fff;}
.trk-f input:focus,.trk-f select:focus{border-color:#0A7828;box-shadow:0 0 0 3px rgba(10,120,40,.15);}
.trk-hint{margin:0;color:#6b7280;font-size:12.5px;line-height:1.5;background:#f5f7f9;padding:10px 12px;border-radius:10px;}
.trk-btn{border:1px solid #d7dce4;background:#fff;color:#223;padding:10px 16px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;}
.trk-btn:hover{background:#f3f5f7;} .trk-btn.primary{background:#0A7828;border-color:#0A7828;color:#fff;} .trk-btn.primary:hover{background:#09651f;}
.trk-btn.sm{padding:6px 11px;font-size:12.5px;border-radius:8px;white-space:nowrap;}
.trk-steps{display:flex;flex-direction:column;gap:10px;}
.trk-step{display:flex;gap:12px;align-items:flex-start;background:#f5f8f6;border-radius:12px;padding:12px 14px;line-height:1.55;}
.trk-step i{flex:none;width:26px;height:26px;border-radius:50%;background:#0A7828;color:#fff;font-style:normal;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:13px;}
.trk-code{background:#eef1f4;padding:3px 8px;border-radius:6px;font-family:'IBM Plex Mono',monospace;font-size:12.5px;word-break:break-all;}
.trk-sub{margin:4px 0 0;font-family:Archivo,Inter,sans-serif;font-size:14px;text-transform:uppercase;letter-spacing:.6px;color:#6b7280;}
.trk-devs{display:flex;flex-direction:column;gap:8px;}
.trk-dev{display:flex;gap:10px;align-items:center;flex-wrap:wrap;border:1px solid #e5e8ee;border-radius:12px;padding:10px 12px;}
.trk-dev-av{width:38px;height:38px;border-radius:50%;background:#e8f3ec;color:#0A7828;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;flex:none;}
.trk-dev-mid{flex:1;min-width:140px;display:flex;flex-direction:column;} .trk-dev-st{font-size:12px;color:#8b8f98;} .trk-dev-st.on{color:#12a150;font-weight:700;}
@media(max-width:600px){.trk-dlg{border-radius:16px;} .trk-dev{flex-direction:column;align-items:stretch;}}

.nav-search input{flex:1 1 auto !important;width:auto !important;min-width:0;border:0 !important;box-shadow:none !important;background:transparent !important;padding:10px 8px !important;font-size:15px;}
.nav-go{flex:none !important;width:auto !important;border:0;background:#0A7828;color:#fff;font-weight:700;font-size:14px;padding:10px 18px;border-radius:10px;cursor:pointer;}
.nav-go:hover{background:#09651f;} .nav-base-btn{background:#eef0f3;color:#222;padding:10px 12px;}
.nav-btns .btn{white-space:nowrap;padding:10px 14px;border-radius:10px;font-weight:600;border:1px solid #d7dce4;background:#fff;color:#111;}
.nav-btns .btn-primary{background:#0A7828;border-color:#0A7828;color:#fff;}
