:root{
  --obsidian:#050A13;
  --night:#081B33;
  --panel:#0B1628;
  --panel-2:#0E2038;
  --panel-3:#102642;
  --azure:#009CFF;
  --electric:#00B8FF;
  --cold:#F4F8FB;
  --metal:#8A96A8;
  --muted:#5E6E82;
  --red:#FF2E2E;
  --green:#00D084;
  --orange:#FF9F1C;
  --border:rgba(244,248,251,.11);
  --border-strong:rgba(0,184,255,.28);
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%;background:var(--obsidian);color:var(--cold);font-family:Montserrat,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px}
body{overflow-x:hidden;background:radial-gradient(circle at top right, rgba(0,156,255,.12), transparent 34rem), var(--obsidian)}
button,input,textarea,select{font:inherit;color:inherit}
button{border:0;cursor:pointer}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.app-loading{min-height:100vh;display:grid;place-items:center;padding:24px}
.boot-card{width:min(420px,100%);border:1px solid var(--border);background:linear-gradient(180deg,rgba(8,27,51,.96),rgba(5,10,19,.96));border-radius:28px;padding:36px;text-align:center}
.boot-logo{width:96px;height:96px;object-fit:contain;margin:0 auto 18px}
.boot-title{font-size:28px;font-weight:800;letter-spacing:.3px}.boot-subtitle{color:var(--metal);font-size:13px;text-transform:uppercase;letter-spacing:.15em}.loader-line{height:3px;background:rgba(244,248,251,.08);border-radius:999px;margin-top:28px;overflow:hidden}.loader-line span{display:block;height:100%;width:42%;background:var(--electric);animation:load 1.2s infinite ease-in-out}@keyframes load{0%{transform:translateX(-105%)}100%{transform:translateX(245%)}}
.layout{min-height:100vh;display:grid;grid-template-columns:280px 1fr;background:var(--obsidian)}
.sidebar{position:sticky;top:0;height:100vh;background:rgba(5,10,19,.95);border-right:1px solid var(--border);padding:22px 16px;display:flex;flex-direction:column;gap:20px;z-index:20}.brand{display:flex;align-items:center;gap:12px;padding:8px 8px 18px;border-bottom:1px solid var(--border)}.brand img{width:46px;height:46px;object-fit:contain}.brand-name{font-weight:800;font-size:18px}.brand-kicker{color:var(--metal);font-size:10px;text-transform:uppercase;letter-spacing:.15em}.nav{display:grid;gap:8px}.nav-btn{height:48px;border-radius:15px;background:transparent;color:var(--metal);display:flex;align-items:center;gap:12px;padding:0 14px;font-weight:700;text-align:left}.nav-btn.active,.nav-btn:hover{background:rgba(0,156,255,.12);color:var(--cold);outline:1px solid rgba(0,184,255,.16)}.nav-icon{width:22px;text-align:center}.side-footer{margin-top:auto;border-top:1px solid var(--border);padding-top:16px;color:var(--metal);font-size:12px}.main{min-width:0;padding:24px 28px 92px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px}.page-title h1{margin:0;font-size:28px;line-height:1.1}.page-title p{margin:7px 0 0;color:var(--metal)}.top-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pill{border:1px solid var(--border);background:rgba(244,248,251,.04);border-radius:999px;padding:9px 12px;color:var(--metal);font-weight:700;font-size:12px}.pill.green{color:var(--green);border-color:rgba(0,208,132,.32);background:rgba(0,208,132,.08)}.pill.red{color:var(--red);border-color:rgba(255,46,46,.32);background:rgba(255,46,46,.08)}.pill.orange{color:var(--orange);border-color:rgba(255,159,28,.32);background:rgba(255,159,28,.08)}.pill.blue{color:var(--electric);border-color:rgba(0,184,255,.32);background:rgba(0,184,255,.08)}
.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:linear-gradient(180deg,rgba(14,32,56,.96),rgba(9,20,36,.96));border:1px solid var(--border);border-radius:24px;padding:20px;min-width:0}.card.compact{padding:14px}.card-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.card-title h2,.card-title h3{margin:0;font-size:18px}.card-title p{margin:5px 0 0;color:var(--metal);font-size:13px}.stat{display:flex;flex-direction:column;gap:8px}.stat-value{font-size:36px;font-weight:800;line-height:1}.stat-label{color:var(--metal);font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.08em}.stat.green .stat-value{color:var(--green)}.stat.red .stat-value{color:var(--red)}.stat.orange .stat-value{color:var(--orange)}.stat.blue .stat-value{color:var(--electric)}
.btn{min-height:48px;border-radius:16px;padding:0 16px;background:rgba(244,248,251,.08);border:1px solid var(--border);font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:.18s}.btn:hover{background:rgba(244,248,251,.12)}.btn.primary{background:var(--azure);border-color:var(--azure);color:#00101D}.btn.primary:hover{background:var(--electric)}.btn.success{background:rgba(0,208,132,.14);border-color:rgba(0,208,132,.34);color:var(--green)}.btn.danger{background:rgba(255,46,46,.14);border-color:rgba(255,46,46,.34);color:var(--red)}.btn.warning{background:rgba(255,159,28,.14);border-color:rgba(255,159,28,.34);color:var(--orange)}.btn.ghost{background:transparent}.btn.full{width:100%}.btn.small{min-height:38px;border-radius:12px;font-size:12px;padding:0 12px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-row{display:flex;gap:10px;flex-wrap:wrap}.field{display:grid;gap:7px;margin-bottom:14px}.field label{font-size:12px;color:var(--metal);font-weight:800;text-transform:uppercase;letter-spacing:.08em}.input,.select,.textarea{width:100%;border:1px solid var(--border);background:rgba(5,10,19,.62);border-radius:16px;padding:14px 14px;outline:none;color:var(--cold)}.textarea{min-height:132px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--electric);box-shadow:0 0 0 3px rgba(0,184,255,.12)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.muted{color:var(--metal)}.danger-copy{color:var(--red);font-weight:800}.success-copy{color:var(--green);font-weight:800}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.divider{height:1px;background:var(--border);margin:16px 0}.empty{border:1px dashed var(--border);border-radius:20px;padding:24px;text-align:center;color:var(--metal);background:rgba(244,248,251,.03)}
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 75% 20%, rgba(0,156,255,.14), transparent 34rem),var(--obsidian)}.login-card{width:min(460px,100%);background:rgba(8,27,51,.96);border:1px solid var(--border);border-radius:30px;padding:30px}.login-logo{width:92px;height:92px;margin:0 auto 18px;object-fit:contain}.login-card h1{text-align:center;margin:0 0 8px;font-size:28px}.login-card .subtitle{text-align:center;color:var(--metal);margin:0 0 22px;text-transform:uppercase;letter-spacing:.13em;font-size:11px}.setup-box{background:rgba(255,159,28,.08);border:1px solid rgba(255,159,28,.22);border-radius:18px;padding:14px;color:#ffd9a0;margin-bottom:18px;font-size:13px;line-height:1.5}
.mobile-tabbar{display:none}.sos-fixed{position:fixed;right:22px;bottom:calc(22px + var(--safe-bottom));z-index:50}.sos-btn{width:82px;height:82px;border-radius:28px;background:var(--red);color:white;font-weight:900;border:2px solid rgba(255,255,255,.16);display:grid;place-items:center;text-align:center;line-height:1;letter-spacing:.05em}.sos-btn.arming{animation:pulse .6s infinite alternate}.sos-help{position:fixed;right:18px;bottom:calc(112px + var(--safe-bottom));max-width:270px;background:rgba(5,10,19,.96);border:1px solid rgba(255,46,46,.38);border-radius:18px;padding:12px;color:var(--cold);font-size:12px;z-index:49}@keyframes pulse{from{transform:scale(1)}to{transform:scale(1.06)}}
.list{display:grid;gap:10px}.item{border:1px solid var(--border);border-radius:18px;padding:14px;background:rgba(244,248,251,.04);display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.item-main{min-width:0}.item-title{font-weight:800;margin-bottom:5px}.item-meta{color:var(--metal);font-size:12px;line-height:1.5}.item-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.timeline{display:grid;gap:10px}.timeline-entry{border-left:3px solid var(--azure);padding:10px 0 10px 14px;background:linear-gradient(90deg,rgba(0,156,255,.07),transparent);border-radius:0 14px 14px 0}.timeline-entry.critique{border-color:var(--red);background:linear-gradient(90deg,rgba(255,46,46,.08),transparent)}.timeline-entry.important{border-color:var(--orange);background:linear-gradient(90deg,rgba(255,159,28,.08),transparent)}.category-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.cat-btn{min-height:54px;border-radius:16px;background:rgba(244,248,251,.06);border:1px solid var(--border);font-weight:800}.cat-btn.active{background:rgba(0,184,255,.14);border-color:var(--electric)}.progress-shell{height:12px;background:rgba(244,248,251,.08);border-radius:999px;overflow:hidden}.progress-bar{height:100%;background:var(--green);border-radius:999px;transition:.25s}.qr-zone{border:1px dashed rgba(0,184,255,.45);border-radius:22px;padding:22px;text-align:center;background:rgba(0,184,255,.06)}.doc-viewer{border:1px solid var(--border);border-radius:18px;overflow:hidden;background:rgba(5,10,19,.6);min-height:360px}.doc-viewer iframe,.doc-viewer img{width:100%;height:360px;object-fit:contain;border:0}.map{height:420px;border-radius:22px;overflow:hidden;border:1px solid var(--border);background:rgba(244,248,251,.04)}.leaflet-container{background:#07111e;color:#111}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:18px}.table{width:100%;border-collapse:collapse;min-width:760px}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);padding:13px 14px;vertical-align:top}.table th{color:var(--metal);font-size:11px;text-transform:uppercase;letter-spacing:.08em;background:rgba(244,248,251,.04)}.table tr:last-child td{border-bottom:0}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.72);display:grid;place-items:center;z-index:80;padding:18px}.modal{width:min(620px,100%);max-height:92vh;overflow:auto;background:var(--night);border:1px solid var(--border);border-radius:26px;padding:20px}.modal.wide{width:min(960px,100%)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.modal-head h2{margin:0}.flash-overlay{position:fixed;inset:0;background:rgba(5,10,19,.94);z-index:90;display:grid;place-items:center;padding:20px}.flash-card{width:min(560px,100%);border:1px solid rgba(255,159,28,.38);background:linear-gradient(180deg,rgba(16,38,66,.98),rgba(8,27,51,.98));border-radius:30px;padding:28px;text-align:center}.flash-card.critique{border-color:rgba(255,46,46,.56)}.flash-priority{font-size:12px;font-weight:900;color:var(--orange);text-transform:uppercase;letter-spacing:.2em}.flash-card.critique .flash-priority{color:var(--red)}.flash-card h2{font-size:28px;margin:12px 0}.flash-card p{color:var(--cold);line-height:1.6}.toast-root{position:fixed;right:18px;top:18px;z-index:100;display:grid;gap:10px}.toast{background:rgba(5,10,19,.96);border:1px solid var(--border);border-left:4px solid var(--electric);border-radius:16px;padding:13px 14px;min-width:260px;max-width:360px;color:var(--cold)}.toast.success{border-left-color:var(--green)}.toast.error{border-left-color:var(--red)}.toast.warning{border-left-color:var(--orange)}
.mobile-brand{display:none;align-items:center;gap:10px;margin-bottom:14px;padding:12px 14px;border:1px solid var(--border);background:rgba(8,27,51,.72);border-radius:20px}.mobile-brand img{width:38px;height:38px;object-fit:contain}.mobile-brand strong{display:block;font-weight:900;letter-spacing:.08em}.mobile-brand span{display:block;color:var(--metal);font-size:11px;text-transform:uppercase;letter-spacing:.12em}.mission-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:4px 0 16px}.mini-kpi{border:1px solid var(--border);background:rgba(244,248,251,.04);border-radius:16px;padding:12px}.mini-kpi strong{display:block;font-size:24px;line-height:1;font-weight:900;color:var(--electric)}.mini-kpi span{display:block;margin-top:6px;color:var(--metal);font-size:11px;text-transform:uppercase;font-weight:800;letter-spacing:.06em}.mini-kpi.green strong{color:var(--green)}.mini-kpi.orange strong{color:var(--orange)}.mini-kpi.red strong{color:var(--red)}.mission-list{display:grid;gap:12px}.mission-card{border:1px solid var(--border);background:rgba(244,248,251,.04);border-radius:20px;padding:16px}.mission-card.green{border-color:rgba(0,208,132,.22)}.mission-card.orange{border-color:rgba(255,159,28,.32)}.mission-card.red{border-color:rgba(255,46,46,.38)}.mission-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.mission-title{font-weight:900;font-size:16px}.mission-meta{color:var(--metal);font-size:12px;margin-top:6px}.mission-stats{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.mission-stats span,.mission-badge{border:1px solid var(--border);background:rgba(5,10,19,.45);border-radius:999px;padding:6px 9px;color:var(--metal);font-size:11px;font-weight:800}.mission-last{color:var(--cold);line-height:1.45;margin-bottom:12px}
.offline-body{display:grid;place-items:center;min-height:100vh;padding:22px}.offline-card{width:min(460px,100%);border:1px solid var(--border);background:var(--night);border-radius:28px;padding:28px;text-align:center}.offline-logo{width:90px;margin:0 auto 14px}.hidden{display:none!important}
@media (max-width:1000px){.mobile-brand{display:flex}.mission-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.mission-head{flex-direction:column}.layout{grid-template-columns:1fr}.sidebar{display:none}.main{padding:calc(18px + var(--safe-top)) 14px calc(104px + var(--safe-bottom))}.topbar{align-items:flex-start;flex-direction:column}.grid.cols-4,.grid.cols-3,.grid.cols-2{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mobile-tabbar{position:fixed;left:0;right:0;bottom:0;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;background:rgba(5,10,19,.96);border-top:1px solid var(--border);padding:8px 8px calc(8px + var(--safe-bottom));z-index:40}.mobile-tabbar .nav-btn{height:54px;padding:0 6px;justify-content:center;flex-direction:column;font-size:10px;gap:3px;border-radius:14px}.mobile-tabbar .nav-icon{font-size:18px}.sos-fixed{right:16px;bottom:calc(88px + var(--safe-bottom))}.sos-btn{width:76px;height:76px;border-radius:25px}.sos-help{right:14px;bottom:calc(174px + var(--safe-bottom))}.page-title h1{font-size:24px}.stat-value{font-size:32px}.item{flex-direction:column}.item-actions{justify-content:flex-start}.toast-root{left:12px;right:12px;top:12px}.toast{max-width:none}.map{height:330px}}


/* V4 Mission Control */
.handover-box{margin:12px 0 16px}
.checkline{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--border);background:rgba(244,248,251,.04);border-radius:16px;padding:12px;margin:12px 0;color:var(--cold);line-height:1.45}
.checkline input{margin-top:3px;accent-color:var(--electric)}
.notification.red{border-color:rgba(255,46,46,.45);background:rgba(255,46,46,.06)}
.notification.orange{border-color:rgba(255,159,28,.42);background:rgba(255,159,28,.06)}
.notification.blue{border-color:rgba(0,184,255,.36);background:rgba(0,184,255,.06)}
.mission-row.late{border-color:rgba(255,46,46,.45);background:rgba(255,46,46,.05)}
.mobile-tabbar{overflow-x:auto;scrollbar-width:none}
.mobile-tabbar::-webkit-scrollbar{display:none}
@media (max-width:1000px){.mobile-tabbar{grid-auto-columns:minmax(72px,1fr)}}
@media print{.sidebar,.mobile-tabbar,.topbar,.sos-fixed,.sos-help,.toast-root{display:none!important}.layout{display:block}.main{padding:0}.card{break-inside:avoid}}


/* V4.1 — correctifs mobile, PDF et administration */
.table-wrap{max-width:100%;-webkit-overflow-scrolling:touch}
.table-wrap::after{content:'Glisser horizontalement';display:none;color:var(--muted);font-size:11px;padding:8px 12px;border-top:1px solid var(--border)}
.print-root{display:none}
.report-doc{font-family:Montserrat,Arial,sans-serif;color:#0b1628;background:white;padding:34px;max-width:980px;margin:0 auto}
.report-doc header{display:flex;align-items:center;gap:16px;border-bottom:3px solid #009CFF;padding-bottom:18px;margin-bottom:24px}
.report-doc header img{width:70px;height:70px;object-fit:contain}.report-doc h1{margin:0;font-size:26px}.report-doc header p,.report-meta{color:#5E6E82;font-size:13px;line-height:1.55}.report-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}.report-grid div{border:1px solid #d9e2ec;border-radius:12px;padding:12px}.report-grid strong{display:block;font-size:22px}.report-doc table{width:100%;border-collapse:collapse;margin-top:18px}.report-doc th,.report-doc td{border-bottom:1px solid #d9e2ec;text-align:left;padding:10px;vertical-align:top}.report-doc th{background:#f4f8fb;font-size:11px;text-transform:uppercase}.report-signature{margin-top:20px;border:1px solid #d9e2ec;border-radius:12px;padding:14px}.report-doc footer{margin-top:28px;color:#5E6E82;font-size:12px}
@media (max-width:760px){
  html,body{font-size:14px}.main{padding-left:10px!important;padding-right:10px!important}.card{border-radius:20px;padding:15px}.card-title{flex-direction:column}.card-title .btn{width:100%}.top-actions{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}.top-actions .btn{grid-column:1/-1}.pill{width:100%;text-align:center;padding:8px 9px}.mobile-brand{border-radius:18px;position:sticky;top:calc(8px + var(--safe-top));z-index:15;backdrop-filter:saturate(140%) blur(8px)}.page-title h1{font-size:22px}.page-title p{font-size:13px}.stat-value{font-size:28px}.btn{min-height:46px;border-radius:14px}.btn-row{display:grid;grid-template-columns:1fr}.btn-row .btn{width:100%}.item{padding:12px;border-radius:16px}.item-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.item-actions .btn,.item-actions a{width:100%}.form-grid{gap:0}.modal-backdrop{padding:8px;align-items:end}.modal{max-height:88vh;border-radius:24px 24px 0 0;padding:16px}.table-wrap{border-radius:16px;margin-left:-2px;margin-right:-2px}.table-wrap::after{display:block}.table{min-width:860px}.mission-kpis{grid-template-columns:1fr 1fr}.mission-card{padding:13px}.mission-stats{gap:6px}.category-grid{grid-template-columns:1fr 1fr}.doc-viewer,.doc-viewer iframe,.doc-viewer img{min-height:260px;height:260px}.map{height:280px}.mobile-tabbar{gap:6px;padding-left:10px;padding-right:10px;box-shadow:0 -12px 30px rgba(0,0,0,.32)}.mobile-tabbar .nav-btn{min-width:70px}.sos-fixed{right:10px}.sos-btn{width:72px;height:72px;border-radius:23px}.toast-root{left:8px;right:8px;top:calc(8px + var(--safe-top))}.login-card{padding:22px;border-radius:24px}.login-logo{width:78px;height:78px}}
@media (max-width:420px){.top-actions{grid-template-columns:1fr}.item-actions{grid-template-columns:1fr}.mission-kpis{grid-template-columns:1fr}.category-grid{grid-template-columns:1fr}.mobile-tabbar .nav-btn{min-width:66px;font-size:9px}.mobile-tabbar .nav-icon{font-size:16px}}
@media print{body{background:white!important}.layout,#app,.modal-backdrop,.flash-overlay,.toast-root{display:none!important}.print-root{display:block!important}.report-doc{box-shadow:none;padding:0}.report-grid{grid-template-columns:repeat(4,1fr)}@page{size:A4;margin:14mm}}

/* V4.2 — verrouillage responsive mobile, filtres MCI complets et téléchargement stable */
html, body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden !important;
  overscroll-behavior-x: none;
  -webkit-text-size-adjust: 100%;
}
body {
  position: relative;
}
#app, .layout, .main, .card, .topbar, .mobile-brand, .mobile-tabbar, .modal, .flash-overlay, .toast-root {
  max-width: 100vw;
}
.main, .card, .item, .mission-card, .modal, .login-card, .topbar, .mobile-brand {
  min-width: 0;
}
.input, .select, .textarea {
  max-width: 100%;
}
.mci-filters {
  align-items: end;
}
.download-panel .textarea {
  min-height: 160px;
  white-space: pre;
  overflow: auto;
}
@media (max-width:1000px){
  .layout {
    width: 100vw;
    overflow-x: hidden;
  }
  .main {
    width: 100%;
    overflow-x: hidden;
    padding-bottom: calc(150px + var(--safe-bottom)) !important;
  }
  .mobile-tabbar {
    overflow: hidden !important;
    grid-auto-flow: row !important;
    grid-auto-columns: unset !important;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    grid-template-rows: auto;
    max-width: 100vw;
  }
  .mobile-tabbar .nav-btn {
    min-width: 0 !important;
    width: 100%;
    height: 48px;
    padding: 0 2px;
    font-size: 9px;
    white-space: nowrap;
  }
  .mobile-tabbar .nav-icon {
    font-size: 15px;
  }
  .topbar, .card, .item, .mission-card, .modal, .form-grid, .grid, .mission-list, .list, .timeline {
    width: 100%;
    max-width: 100%;
    overflow-wrap: anywhere;
  }
  .input, .select, .textarea {
    font-size: 16px !important;
  }
  .table-wrap {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    contain: layout paint;
  }
  .table {
    min-width: 720px;
  }
  .btn-row {
    width: 100%;
  }
  .btn-row .btn, .card-title .btn, #export-reports {
    min-width: 0;
  }
}
@media (max-width:760px){
  .main {
    padding-left: max(10px, env(safe-area-inset-left, 0px)) !important;
    padding-right: max(10px, env(safe-area-inset-right, 0px)) !important;
  }
  .mobile-tabbar {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 4px;
    padding: 7px 6px calc(7px + var(--safe-bottom));
  }
  .mobile-tabbar .nav-btn {
    height: 45px;
    border-radius: 12px;
  }
  .qg .mobile-tabbar .nav-btn,
  .mobile-tabbar .nav-btn span:last-child {
    text-overflow: ellipsis;
    overflow: hidden;
    max-width: 100%;
  }
  .modal-backdrop {
    overflow-x: hidden;
  }
  .modal {
    width: 100%;
    max-width: calc(100vw - 16px);
  }
  .sos-fixed {
    bottom: calc(128px + var(--safe-bottom));
  }
  .sos-help {
    bottom: calc(212px + var(--safe-bottom));
  }
}
@media (max-width:420px){
  .mobile-tabbar .nav-btn {
    font-size: 8px;
    height: 43px;
  }
  .mobile-tabbar .nav-icon {
    font-size: 14px;
  }
  .table {
    min-width: 680px;
  }
}

/* V4.3 — planning exploitation PC, exports renforcés et stabilité mobile */
.mission-admin-grid{align-items:start}
.planning-card{overflow:hidden}
.planning-title{align-items:center}
.planning-date{width:160px;min-height:38px;padding:8px 12px;border-radius:12px}
.planning-toolbar{display:grid;grid-template-columns:auto 180px minmax(220px,1fr);gap:12px;align-items:end;margin-bottom:14px}
.segmented{display:inline-grid;grid-template-columns:1fr 1fr;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:rgba(5,10,19,.45)}
.segmented button{min-height:42px;padding:0 16px;background:transparent;color:var(--metal);font-weight:900;border-right:1px solid var(--border)}
.segmented button:last-child{border-right:0}.segmented button.active{background:rgba(0,184,255,.15);color:var(--cold)}
.compact-field{margin-bottom:0}.compact-field .input,.compact-field .select{min-height:42px;padding:9px 12px;border-radius:13px}
.planning-board{border:1px solid var(--border);border-radius:20px;background:rgba(5,10,19,.35);overflow:hidden}
.planning-scroll{overflow:auto;max-width:100%;max-height:68vh;-webkit-overflow-scrolling:touch}
.planning-grid{display:grid;grid-template-columns:250px repeat(var(--days), minmax(76px,1fr));min-width:calc(250px + (var(--days) * 76px))}
.planning-header{position:sticky;top:0;z-index:5;background:rgba(8,27,51,.98);border-bottom:1px solid var(--border)}
.planning-resource-head,.planning-day-head{padding:10px;border-right:1px solid var(--border);font-size:12px;color:var(--metal);font-weight:900;text-transform:uppercase;letter-spacing:.06em}
.planning-day-head{text-align:center}.planning-day-head strong{display:block;color:var(--cold);font-size:13px}.planning-day-head span{display:block;margin-top:4px;color:var(--metal);font-size:10px}
.planning-row{border-bottom:1px solid var(--border);min-height:76px}.planning-row:last-child{border-bottom:0}
.planning-resource{position:sticky;left:0;z-index:4;background:rgba(8,27,51,.96);border-right:1px solid var(--border);padding:12px;display:flex;flex-direction:column;justify-content:center;gap:5px}
.planning-resource strong{font-size:13px;line-height:1.25}.planning-resource span{font-size:11px;color:var(--metal);line-height:1.25}
.planning-cell{min-height:76px;border-right:1px solid rgba(244,248,251,.07);padding:5px;display:grid;gap:5px;align-content:start;background:linear-gradient(180deg,rgba(244,248,251,.025),transparent)}
.planning-mission{width:100%;border-radius:11px;padding:7px 8px;min-height:46px;text-align:left;color:white;font-weight:800;overflow:hidden;border:1px solid rgba(255,255,255,.14)}
.planning-mission strong{display:block;font-size:11px;line-height:1.1}.planning-mission span{display:block;font-size:10px;opacity:.95;line-height:1.2;margin-top:3px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.planning-mission.azure{background:#009CFF;color:#00101D}.planning-mission.blue{background:#0073FF}.planning-mission.green{background:#00A86B;color:#001B11}.planning-mission.orange{background:#FF9F1C;color:#271200}.planning-mission.violet{background:#5B2CFF}.planning-mission.pink{background:#E800D8}
.download-panel .grid{margin-bottom:10px}.download-panel .btn{word-break:break-word}

@media (min-width:1001px){
  .planning-card{min-height:520px}.planning-scroll{max-height:70vh}.qg .main{max-width:calc(100vw - 280px)}
}
@media (max-width:1000px){
  .planning-toolbar{grid-template-columns:1fr;gap:8px}.planning-title{align-items:flex-start}.planning-title .btn-row{width:100%;display:grid;grid-template-columns:46px 1fr 46px}.planning-date{width:100%}.planning-grid{grid-template-columns:150px repeat(var(--days), minmax(70px,70px));min-width:calc(150px + (var(--days) * 70px))}.planning-resource-head,.planning-day-head{padding:8px}.planning-resource{padding:9px}.planning-resource strong{font-size:11px}.planning-cell{min-height:66px}.planning-row{min-height:66px}.planning-mission{min-height:42px;padding:6px}.planning-scroll{max-height:58vh}
}
@media (max-width:760px){
  .qg .mobile-tabbar{grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(2,auto)}
  .qg .mobile-tabbar .nav-btn{height:42px;font-size:8px;line-height:1.05}.qg .mobile-tabbar .nav-icon{font-size:13px}
  .agent .mobile-tabbar{grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:1fr}
  .planning-board{border-radius:16px}.planning-scroll{max-height:54vh}.planning-grid{grid-template-columns:124px repeat(var(--days), minmax(64px,64px));min-width:calc(124px + (var(--days) * 64px))}.planning-resource span{display:none}
}

/* V4.5 — GitHub Edition : responsive verrouillé, planning PC renforcé, export stable */
html, body {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: hidden !important;
  overscroll-behavior-x: none;
}
body {
  position: relative;
  touch-action: pan-y;
}
*, *::before, *::after {
  box-sizing: border-box;
  min-width: 0;
}
#app, .layout, .main, .sidebar, .topbar, .mobile-brand, .mobile-tabbar, .card, .grid, .form-grid, .list, .timeline, .mission-list, .modal-backdrop {
  max-width: 100vw;
  overflow-x: clip;
}
.main {
  width: 100%;
  min-width: 0;
}
.card, .item, .mission-card, .stat, .setup-box, .field, .btn, .input, .select, .textarea {
  overflow-wrap: anywhere;
}
.table-wrap, .planning-board, .planning-scroll {
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
}
.table-wrap {
  overflow-x: auto !important;
  overflow-y: hidden;
  border-radius: 16px;
}
.table {
  width: max-content;
  max-width: none;
}
.export-safe-panel .export-actions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.export-safe-panel .btn,
.export-safe-panel a.btn {
  white-space: normal;
  line-height: 1.2;
  min-height: 48px;
}
.planning-card .card-title {
  gap: 14px;
}
.planning-board {
  isolation: isolate;
}
.planning-scroll {
  position: relative;
  background:
    linear-gradient(90deg, rgba(8,27,51,.98), rgba(8,27,51,.98)) left/250px 100% no-repeat,
    rgba(5,10,19,.35);
}
.planning-header .planning-resource-head,
.planning-resource {
  box-shadow: 8px 0 18px rgba(0,0,0,.20);
}
.planning-mission {
  cursor: pointer;
  transition: transform .12s ease, filter .12s ease;
}
.planning-mission:hover {
  transform: translateY(-1px);
  filter: brightness(1.05);
}
.item-actions {
  flex-wrap: wrap;
}
@media (min-width: 1200px) {
  .planning-grid{grid-template-columns:280px repeat(var(--days), minmax(90px,1fr));min-width:calc(280px + (var(--days) * 90px))}
  .planning-scroll{background:linear-gradient(90deg, rgba(8,27,51,.98), rgba(8,27,51,.98)) left/280px 100% no-repeat, rgba(5,10,19,.35)}
}
@media (max-width: 900px) {
  .topbar {
    display: grid;
    gap: 12px;
  }
  .card-title {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .card-title > .btn,
  .card-title .btn-row,
  .card-title button {
    width: 100%;
  }
  .export-safe-panel .export-actions {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 760px) {
  body {
    width: 100vw;
  }
  .layout {
    width: 100vw;
    overflow-x: hidden !important;
  }
  .main {
    width: 100vw;
    max-width: 100vw;
    padding-left: max(10px, env(safe-area-inset-left, 0px)) !important;
    padding-right: max(10px, env(safe-area-inset-right, 0px)) !important;
  }
  .grid.cols-2,
  .grid.cols-3,
  .grid.cols-4,
  .form-grid,
  .mission-admin-grid {
    grid-template-columns: 1fr !important;
  }
  .btn-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .mission-card .btn-row,
  .item-actions {
    display: grid;
    grid-template-columns: 1fr;
    width: 100%;
  }
  .modal {
    max-height: calc(100dvh - 18px);
    overflow-y: auto;
    overflow-x: hidden;
  }
  .table {
    min-width: 640px;
  }
  .planning-toolbar {
    grid-template-columns: 1fr !important;
  }
  .planning-scroll {
    max-width: 100%;
    overflow-x: auto;
    overflow-y: auto;
    background: rgba(5,10,19,.35);
  }
  .planning-grid {
    grid-template-columns: 128px repeat(var(--days), minmax(64px,64px)) !important;
    min-width: calc(128px + (var(--days) * 64px)) !important;
  }
  .planning-resource-head,
  .planning-resource {
    position: sticky;
    left: 0;
    z-index: 6;
  }
  .planning-header {
    z-index: 7;
  }
  .planning-resource-head {
    background: rgba(8,27,51,.99);
  }
}
@media print {
  body { background: #fff !important; overflow: visible !important; }
  .layout, .sidebar, .topbar, .mobile-tabbar, .mobile-brand, .sos-fixed, .sos-help, .toast-root, .modal-backdrop { display: none !important; }
  .print-root { display: block !important; }
}

/* V4.6 — Planning exploitation avancé */
.planning-admin-zone{align-items:start}
.planning-title-actions{display:grid;grid-template-columns:auto 46px minmax(145px,170px) 46px;gap:8px;align-items:center}
.planning-toolbar-v46{grid-template-columns:auto 150px 150px minmax(220px,1fr) auto;align-items:end}
.planning-helpbar{margin:0 0 12px;padding:10px 12px;border:1px solid rgba(0,184,255,.18);border-radius:14px;background:rgba(0,184,255,.07);color:var(--metal);font-size:12px;font-weight:700}
.planning-card-v46 .planning-board{overflow:hidden;border-radius:22px}
.planning-scroll-v46{overflow:auto;max-height:72vh;max-width:100%;background:rgba(5,10,19,.42)}
.planning-scroll-v46 .planning-header{min-width:calc(280px + (var(--days) * 92px));grid-template-columns:280px repeat(var(--days), minmax(92px,1fr))}
.planning-row-v46{display:grid;grid-template-columns:280px minmax(calc(var(--days) * 92px),1fr);min-width:calc(280px + (var(--days) * 92px));border-bottom:1px solid var(--border);background:rgba(5,10,19,.18)}
.planning-resource-v46{min-height:calc((var(--tracks) * 42px) + 18px);align-items:flex-start;justify-content:flex-start;padding-top:14px}
.planning-resource-v46 em{font-size:10px;font-style:normal;color:var(--azure);font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.planning-lane{display:grid;grid-template-columns:repeat(var(--days), minmax(92px,1fr));grid-template-rows:repeat(var(--tracks), 38px);gap:6px;padding:8px;position:relative;min-height:calc((var(--tracks) * 44px) + 16px);background:linear-gradient(180deg,rgba(244,248,251,.025),transparent)}
.planning-bg-cell{border:0;border-right:1px solid rgba(244,248,251,.055);border-radius:10px;background:rgba(244,248,251,.018);min-height:38px;cursor:pointer;color:transparent;display:flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease,outline .12s ease}
.planning-bg-cell:hover{background:rgba(0,184,255,.08);color:var(--azure);outline:1px solid rgba(0,184,255,.22)}
.planning-bg-cell.today,.planning-day-head.today{background:rgba(0,184,255,.08)}
.planning-mission-bar{z-index:2;min-height:38px;height:38px;border-radius:12px;padding:6px 10px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;box-shadow:0 0 0 1px rgba(255,255,255,.10) inset;text-align:left;white-space:nowrap}
.planning-mission-bar strong{font-size:11px;margin:0;line-height:1;color:inherit}
.planning-mission-bar span{font-size:11px;font-weight:900;line-height:1.1;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.96}
.planning-mission-bar small{font-size:9px;font-weight:1000;text-transform:uppercase;letter-spacing:.04em;opacity:.95;line-height:1;white-space:nowrap}
.planning-mission-bar.late{outline:2px solid rgba(255,46,46,.65);filter:saturate(1.12)}
.planning-mission-bar.status-completed{filter:saturate(.72) brightness(.86)}
.planning-mission-bar.status-cancelled{opacity:.55;text-decoration:line-through}
.mission-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}
.mission-detail-head h3{margin:0;font-size:20px}.mission-detail-head p{margin:4px 0 0;color:var(--metal);font-weight:800}
.mission-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.mission-detail-grid div{border:1px solid var(--border);border-radius:16px;background:rgba(5,10,19,.38);padding:12px;display:grid;gap:6px}
.mission-detail-grid strong{font-size:11px;color:var(--metal);text-transform:uppercase;letter-spacing:.05em}.mission-detail-grid span{font-weight:900;color:var(--cold);font-size:13px}
.planning-quick-form .setup-box{margin-bottom:12px}
@media (min-width:1200px){
  .planning-card-v46{min-height:620px}
  .planning-scroll-v46{max-height:76vh}
}
@media (max-width:1100px){
  .planning-toolbar-v46{grid-template-columns:1fr 1fr;align-items:end}
  .planning-toolbar-v46 #planning-quick-create{grid-column:1 / -1}
  .planning-title-actions{grid-template-columns:1fr 44px 1fr 44px;width:100%}
  .planning-scroll-v46 .planning-header{grid-template-columns:180px repeat(var(--days), minmax(78px,78px));min-width:calc(180px + (var(--days) * 78px))}
  .planning-row-v46{grid-template-columns:180px minmax(calc(var(--days) * 78px),1fr);min-width:calc(180px + (var(--days) * 78px))}
  .planning-lane{grid-template-columns:repeat(var(--days), minmax(78px,78px))}
}
@media (max-width:760px){
  .planning-title-actions{grid-template-columns:1fr;gap:8px}
  .planning-toolbar-v46{grid-template-columns:1fr!important}
  .planning-helpbar{font-size:11px;line-height:1.35}
  .planning-scroll-v46{max-height:58vh;overflow-x:auto!important;overflow-y:auto!important}
  .planning-scroll-v46 .planning-header{grid-template-columns:132px repeat(var(--days), minmax(68px,68px));min-width:calc(132px + (var(--days) * 68px))}
  .planning-row-v46{grid-template-columns:132px minmax(calc(var(--days) * 68px),1fr);min-width:calc(132px + (var(--days) * 68px))}
  .planning-lane{grid-template-columns:repeat(var(--days), minmax(68px,68px));grid-template-rows:repeat(var(--tracks), 36px);gap:5px;padding:6px;min-height:calc((var(--tracks) * 40px) + 12px)}
  .planning-resource-v46{min-height:calc((var(--tracks) * 40px) + 12px);padding:10px 8px}.planning-resource-v46 em{display:none}
  .planning-mission-bar{height:36px;min-height:36px;grid-template-columns:1fr;gap:2px;padding:6px}.planning-mission-bar strong{font-size:10px}.planning-mission-bar span{font-size:10px}.planning-mission-bar small{display:none}
  .mission-detail-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:430px){
  .planning-scroll-v46 .planning-header{grid-template-columns:118px repeat(var(--days), minmax(62px,62px));min-width:calc(118px + (var(--days) * 62px))}
  .planning-row-v46{grid-template-columns:118px minmax(calc(var(--days) * 62px),1fr);min-width:calc(118px + (var(--days) * 62px))}
  .planning-lane{grid-template-columns:repeat(var(--days), minmax(62px,62px))}
  .mission-detail-grid{grid-template-columns:1fr}
}

/* V4.8 — Veille Sécurité IA */
.intel-layout { align-items: stretch; }
.intel-result { display:flex; flex-direction:column; gap:14px; }
.intel-score-card { border:1px solid rgba(255,255,255,.12); border-radius:22px; padding:18px; display:flex; align-items:center; justify-content:space-between; background:#07182d; }
.intel-score-card.green { border-color:rgba(0,208,132,.35); }
.intel-score-card.warning { border-color:rgba(255,159,28,.45); }
.intel-score-card.orange { border-color:rgba(255,159,28,.65); background:rgba(255,159,28,.08); }
.intel-score-card.red { border-color:rgba(255,46,46,.7); background:rgba(255,46,46,.08); }
.intel-score-card h2 { margin:4px 0; font-size:24px; }
.intel-score { width:72px; height:72px; border-radius:20px; display:grid; place-items:center; font-size:26px; font-weight:900; background:#081b33; border:1px solid rgba(255,255,255,.14); }
.intel-grid .card.inner, .card.inner { background:rgba(255,255,255,.035); border-radius:18px; }
.intel-signal { display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:center; padding:10px 0; border-bottom:1px solid rgba(255,255,255,.08); }
.intel-signal:last-child { border-bottom:0; }
.intel-list { margin:0; padding-left:18px; display:grid; gap:8px; }
.link { color:#00b8ff; font-weight:800; text-decoration:none; }
.empty.error { color:#ff9f1c; }
@media (max-width: 760px){
  .intel-score-card { border-radius:18px; padding:14px; }
  .intel-score { width:58px; height:58px; font-size:22px; }
  .intel-signal { grid-template-columns:1fr; gap:6px; }
}

/* =========================================================
   V4.9 — Command Center : menu tiroir, carte premium, documents
   ========================================================= */
body.menu-open{overflow:hidden}
.layout{display:block;min-height:100dvh;width:100%;overflow-x:hidden}
.main{width:min(1680px,100%);margin:0 auto;padding:20px 28px 56px;min-width:0}
.sidebar,.mobile-tabbar,.mobile-brand{display:none!important}
.topbar{position:sticky;top:0;z-index:25;margin:-20px -12px 22px;padding:calc(12px + var(--safe-top)) 12px 12px;background:rgba(5,10,19,.88);backdrop-filter:blur(16px) saturate(150%);border-bottom:1px solid rgba(244,248,251,.08)}
.topbar-leading{display:flex;align-items:center;gap:13px;min-width:0;flex:1}
.topbar-logo{width:42px;height:42px;object-fit:contain;flex:0 0 auto}
.page-title{min-width:0}.page-title h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.menu-toggle,.icon-btn{width:46px;height:46px;border-radius:15px;border:1px solid var(--border);background:rgba(244,248,251,.06);display:grid;place-items:center;color:var(--cold);flex:0 0 auto}
.menu-toggle{gap:4px;padding:12px}
.menu-toggle span{display:block;width:21px;height:2px;border-radius:999px;background:var(--cold)}
.icon-btn{font-size:28px;line-height:1}
.drawer-backdrop{position:fixed;inset:0;z-index:69;background:rgba(0,0,0,.66);opacity:0;pointer-events:none;transition:opacity .22s ease}
.nav-drawer{position:fixed;left:0;top:0;bottom:0;z-index:70;width:min(340px,88vw);padding:18px 16px calc(18px + var(--safe-bottom));background:linear-gradient(180deg,#071428,#050a13);border-right:1px solid var(--border);transform:translateX(-104%);transition:transform .24s ease;display:flex;flex-direction:column;box-shadow:24px 0 60px rgba(0,0,0,.48);overflow-y:auto}
.layout.drawer-open .nav-drawer{transform:translateX(0)}
.layout.drawer-open .drawer-backdrop{opacity:1;pointer-events:auto}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.drawer-brand{padding:0;border:0;min-width:0}.drawer-brand img{width:48px;height:48px}.drawer-brand .brand-name{font-size:17px}
.drawer-nav{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:16px 0}
.drawer-nav .nav-btn{height:58px;border:1px solid rgba(244,248,251,.07);background:rgba(244,248,251,.035);padding:0 12px}
.drawer-nav .nav-btn.active{background:rgba(0,156,255,.16);border-color:rgba(0,184,255,.32)}
.drawer-footer{margin-top:auto}

.map-card{overflow:hidden}
.map-actions{justify-content:flex-end}.map-legend{display:flex;gap:16px;flex-wrap:wrap;margin:-2px 0 12px;color:var(--metal);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.map-legend span{display:flex;align-items:center;gap:7px}.legend-dot{width:10px;height:10px;border-radius:999px;display:inline-block}.legend-dot.agent{background:var(--green);box-shadow:0 0 0 4px rgba(0,208,132,.13)}.legend-dot.site{background:var(--electric);box-shadow:0 0 0 4px rgba(0,184,255,.13)}
.premium-map{height:520px;border-color:rgba(0,184,255,.22);box-shadow:inset 0 0 0 1px rgba(255,255,255,.025)}
.premium-map .leaflet-control-layers,.premium-map .leaflet-bar a{background:#081b33;color:#f4f8fb;border-color:rgba(244,248,251,.14)}
.premium-map .leaflet-control-layers-expanded{border-radius:14px;padding:10px 12px}.premium-map .leaflet-control-layers label{color:#f4f8fb}
.sp-map-icon-shell{background:transparent!important;border:0!important}
.sp-map-marker{width:40px;height:40px;border-radius:15px;display:grid;place-items:center;font-weight:900;font-size:12px;color:#03111d;border:3px solid rgba(255,255,255,.9);box-shadow:0 8px 22px rgba(0,0,0,.48)}
.sp-map-marker.agent{background:var(--green)}.sp-map-marker.site{background:var(--electric);border-radius:12px 12px 12px 3px;transform:rotate(-45deg)}.sp-map-marker.site span{transform:rotate(45deg)}
.map-popup{display:grid;gap:5px;min-width:190px;font-family:Montserrat,sans-serif}.map-popup strong{font-size:14px}.map-popup span{color:#506070;font-size:11px}.map-popup a{color:#0078cc;font-weight:800;margin-top:4px}

.table-actions{display:flex;gap:7px;flex-wrap:wrap;min-width:max-content}
.documents-layout{align-items:start}.documents-layout>.card{min-height:420px}
.document-item{align-items:center}.document-preview{max-height:58vh;overflow:auto;background:#fff;border-radius:18px;padding:18px;color:#111}.document-preview .report-doc{display:block!important}
.hidden{display:none!important}

@media (min-width:1200px){
  .drawer-nav{grid-template-columns:1fr 1fr}.main{padding-left:34px;padding-right:34px}.premium-map{height:560px}
}
@media (max-width:900px){
  .main{padding:12px 12px calc(34px + var(--safe-bottom))}.topbar{margin:-12px -4px 18px;padding-left:4px;padding-right:4px;align-items:flex-start;flex-direction:column}.topbar-leading{width:100%}.top-actions{width:100%;display:flex;gap:7px}.top-actions .pill{width:auto;flex:1;text-align:center}.page-title h1{font-size:22px}.page-title p{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-logo{display:none}.premium-map{height:430px}.documents-layout{grid-template-columns:1fr!important}.sos-fixed{bottom:calc(18px + var(--safe-bottom))}
}
@media (max-width:560px){
  .drawer-nav{grid-template-columns:1fr}.drawer-nav .nav-btn{height:52px}.main{padding-left:9px;padding-right:9px}.topbar{margin-left:0;margin-right:0}.menu-toggle{width:43px;height:43px}.top-actions{display:grid;grid-template-columns:1fr 1fr}.top-actions .pill{width:100%}.card{padding:14px;border-radius:20px}.premium-map{height:365px}.map-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.map-actions .btn{width:100%}.document-item .item-actions{grid-template-columns:1fr}.table-actions{display:grid;grid-template-columns:1fr;min-width:130px}.table-actions .btn{width:100%}
}
@media print{
  .nav-drawer,.drawer-backdrop,.menu-toggle,.topbar,.sos-fixed,.sos-help{display:none!important}
  .main{padding:0;width:100%;max-width:none}
}

/* =========================================================
   V5.0 — Facturation admin et code couleur des sites
   ========================================================= */
.planning-site-legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px;padding:10px 12px;border:1px solid rgba(244,248,251,.08);border-radius:15px;background:rgba(244,248,251,.025)}
.planning-legend-title{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--metal);margin-right:4px}
.planning-site-legend-item{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:999px;background:rgba(244,248,251,.05);font-size:10px;font-weight:800;color:var(--cold)}
.planning-site-legend-item i,.site-color-swatch{display:inline-block;width:13px;height:13px;border-radius:5px;border:2px solid rgba(255,255,255,.76);box-shadow:0 0 0 1px rgba(0,0,0,.24)}
.site-color-swatch{width:24px;height:24px;border-radius:8px;vertical-align:middle}
.planning-resource-v46{position:relative}
.planning-resource-color{position:absolute;left:0;top:0;bottom:0;width:5px;border-radius:0 6px 6px 0}
.planning-resource-v46:has(.planning-resource-color){padding-left:16px}
.planning-mission-bar.site-color{background:var(--site-color)!important;color:var(--site-text)!important;border-color:color-mix(in srgb,var(--site-color),white 30%)!important;box-shadow:0 7px 18px color-mix(in srgb,var(--site-color),transparent 72%)}
.planning-mission-bar.site-color.late{outline:3px solid rgba(255,46,46,.72);outline-offset:-2px}
.planning-mission-bar.status-cancelled{filter:saturate(.25);opacity:.58;text-decoration:line-through}
.color-field{display:flex;align-items:center;gap:12px;min-height:48px;padding:7px 10px;border:1px solid var(--border);border-radius:14px;background:rgba(244,248,251,.035)}
.color-input{width:54px;height:34px;padding:0;border:0;border-radius:9px;background:transparent;overflow:hidden;flex:0 0 auto}
.color-input::-webkit-color-swatch-wrapper{padding:0}.color-input::-webkit-color-swatch{border:0;border-radius:8px}.color-field span{font-size:11px;line-height:1.35;color:var(--metal)}

.billing-money{font-size:clamp(22px,2.6vw,36px)!important;white-space:nowrap}
.billing-filters{grid-template-columns:minmax(220px,1.6fr) minmax(180px,1fr) minmax(160px,.8fr);align-items:end}
.invoice-item{position:relative;display:grid;grid-template-columns:6px minmax(0,1fr) auto minmax(270px,auto);gap:14px;align-items:center;overflow:hidden;padding-left:0}
.invoice-site-strip{align-self:stretch;background:var(--invoice-site-color);border-radius:12px 0 0 12px;min-height:74px}
.invoice-total{display:flex;flex-direction:column;align-items:flex-end;min-width:125px}.invoice-total strong{font-size:20px}.invoice-total span{font-size:10px;text-transform:uppercase;color:var(--metal);font-weight:900;letter-spacing:.08em}
.invoice-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;min-width:270px}
.billing-client-preview{margin:2px 0 14px;padding:13px 14px;border-radius:15px;background:rgba(0,156,255,.08);border:1px solid rgba(0,184,255,.16);line-height:1.55}
.invoice-lines-table{min-width:720px}
.invoice-detail{display:grid;gap:16px}
.invoice-doc{font-size:12px}.invoice-doc header h1{font-size:25px;letter-spacing:.04em}
.invoice-parties{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:22px 0}.invoice-parties>div{border:1px solid #dce5ef;border-radius:14px;padding:16px}.invoice-parties h3{margin:0 0 10px;text-transform:uppercase;font-size:11px;letter-spacing:.08em;color:#5e6e82}.invoice-parties p{line-height:1.55;margin:8px 0 0}
.invoice-print-table{width:100%;border-collapse:collapse;margin-top:14px}.invoice-print-table th,.invoice-print-table td{padding:10px 8px;border-bottom:1px solid #dce5ef;text-align:left;vertical-align:top}.invoice-print-table th{font-size:10px;text-transform:uppercase;color:#5e6e82}.invoice-print-table th:nth-child(n+2),.invoice-print-table td:nth-child(n+2){text-align:right}
.invoice-totals{width:min(360px,100%);margin:20px 0 20px auto;border:1px solid #dce5ef;border-radius:14px;overflow:hidden}.invoice-totals div{display:flex;justify-content:space-between;gap:18px;padding:10px 14px;border-bottom:1px solid #dce5ef}.invoice-totals div:last-child{border-bottom:0}.invoice-totals .grand-total{background:#081b33;color:#f4f8fb;font-size:16px}
.invoice-payment{border:1px solid #dce5ef;border-radius:14px;padding:14px;line-height:1.5}

@media (max-width:1050px){
  .billing-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .billing-filters{grid-template-columns:1fr 1fr}.billing-filters .field:first-child{grid-column:1/-1}
  .invoice-item{grid-template-columns:6px minmax(0,1fr) auto}.invoice-actions{grid-column:2/-1;justify-content:flex-start;min-width:0}.invoice-total{min-width:110px}
}
@media (max-width:620px){
  .planning-site-legend{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}.planning-site-legend-item{flex:0 0 auto}
  .billing-kpis{grid-template-columns:1fr!important}.billing-filters{grid-template-columns:1fr}.billing-filters .field:first-child{grid-column:auto}
  .invoice-item{grid-template-columns:5px minmax(0,1fr);gap:10px}.invoice-total{grid-column:2;align-items:flex-start}.invoice-actions{grid-column:2;display:grid;grid-template-columns:1fr 1fr;width:100%}.invoice-actions .btn{width:100%}.invoice-parties{grid-template-columns:1fr}.billing-money{font-size:26px!important}
}
@media print{
  .invoice-doc{padding:0!important}.invoice-parties{grid-template-columns:1fr 1fr}.invoice-doc footer{break-inside:avoid}.invoice-print-table tr{break-inside:avoid}
}

/* V5.1 — Dashboard allégé, carte lisible, documents PDF */
.map-card-xl{grid-column:1/-1;position:relative;background:linear-gradient(180deg,rgba(8,27,51,.98),rgba(5,10,19,.98))}.map-card-title{align-items:center}.premium-map-xl{height:620px;border:1px solid rgba(0,156,255,.35);box-shadow:inset 0 0 0 1px rgba(244,248,251,.04),0 18px 40px rgba(0,0,0,.24)}.map-legend-premium{background:rgba(244,248,251,.055);border:1px solid rgba(244,248,251,.09);border-radius:15px;padding:10px 12px}.map-empty-help{position:absolute;left:28px;right:28px;bottom:28px;z-index:410;background:rgba(5,10,19,.92);border:1px solid rgba(255,159,28,.35);border-radius:16px;padding:12px 14px;color:var(--cold);font-weight:800}.map-empty-help.hidden{display:none}.premium-map .leaflet-control-layers,.premium-map .leaflet-bar a{background:#fff;color:#081b33;border-color:rgba(8,27,51,.18);box-shadow:0 8px 22px rgba(0,0,0,.16)}.premium-map .leaflet-control-layers label{color:#081b33}.premium-map .leaflet-popup-content-wrapper{border-radius:18px;box-shadow:0 14px 34px rgba(0,0,0,.26)}.sp-map-marker{width:46px;height:46px;border-radius:18px;font-size:13px}.sp-map-marker.site{background:var(--marker-color,var(--electric));}.sp-map-marker.agent{box-shadow:0 0 0 6px rgba(0,208,132,.18),0 10px 24px rgba(0,0,0,.42)}.pdf-document{border-left:4px solid var(--electric)}.pdf-document .pill{display:inline-flex;width:auto;margin-left:8px}.document-preview{border:1px solid rgba(8,27,51,.12)}
@media(max-width:1000px){.premium-map-xl{height:500px}.map-card-title{align-items:flex-start}.map-legend-premium{font-size:10px}.map-empty-help{left:20px;right:20px;bottom:20px}}
@media(max-width:560px){.premium-map-xl{height:390px}.map-legend-premium .muted{display:none}.sp-map-marker{width:42px;height:42px}.map-empty-help{font-size:12px}}

/* V5.1.1 — Correctif carte Leaflet lisible
   Le CSS global de l'application peut perturber les tuiles Leaflet si le CDN CSS se charge mal.
   Ces règles verrouillent la structure Leaflet pour éviter les tuiles géantes/décalées. */
.leaflet-container,
.leaflet-container * {
  box-sizing: content-box;
}
.leaflet-container {
  width: 100% !important;
  min-height: 560px;
  position: relative !important;
  overflow: hidden !important;
  font-family: Montserrat, Arial, sans-serif;
  isolation: isolate;
}
.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
  position: absolute !important;
  left: 0;
  top: 0;
}
.leaflet-tile,
.leaflet-container img.leaflet-tile {
  width: 256px !important;
  height: 256px !important;
  max-width: none !important;
  max-height: none !important;
  min-width: 256px !important;
  min-height: 256px !important;
  display: block !important;
  object-fit: initial !important;
  border: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
}
.leaflet-container .leaflet-marker-icon,
.leaflet-container .leaflet-marker-shadow {
  max-width: none !important;
  display: block !important;
}
.leaflet-map-pane,
.leaflet-tile-pane,
.leaflet-overlay-pane,
.leaflet-shadow-pane,
.leaflet-marker-pane,
.leaflet-tooltip-pane,
.leaflet-popup-pane {
  position: absolute !important;
  left: 0;
  top: 0;
}
.leaflet-control-container .leaflet-top,
.leaflet-control-container .leaflet-bottom {
  position: absolute;
  z-index: 1000;
  pointer-events: none;
}
.leaflet-control-container .leaflet-top { top: 0; }
.leaflet-control-container .leaflet-right { right: 0; }
.leaflet-control-container .leaflet-bottom { bottom: 0; }
.leaflet-control-container .leaflet-left { left: 0; }
.leaflet-control { pointer-events: auto; }
.leaflet-control-attribution { font-size: 10px; }
.premium-map-xl,
.premium-map {
  width: 100% !important;
  min-height: 560px;
  background: #d7e7ed !important;
}
.map-card-xl {
  overflow: hidden !important;
}
.map-empty-help {
  pointer-events: none;
}
@media (max-width: 768px) {
  .leaflet-container,
  .premium-map-xl,
  .premium-map { min-height: 420px; }
}


/* V5.2 — Documents premium AZZERA PROTECT */
.report-doc.azzera-doc{font-family:Montserrat,Arial,sans-serif;color:#141c25;background:#fff;padding:0;overflow:hidden;border-radius:0;max-width:980px;box-shadow:none}
.azzera-doc .azza-header{background:#141c25;color:#fff;border:0;margin:0;padding:26px 34px;display:flex;justify-content:space-between;align-items:center;gap:24px;border-bottom:5px solid #64d0ff}
.azzera-doc .azza-brand{display:flex;align-items:center;gap:16px}.azzera-doc .azza-brand img{width:56px;height:56px;object-fit:contain}.azzera-doc .azza-brand strong{display:block;font-size:22px;font-weight:800;letter-spacing:.04em}.azzera-doc .azza-brand span{display:block;color:#d9e5ee;font-weight:800;font-size:11px;letter-spacing:.16em;margin-top:2px}.azzera-doc .azza-doc-type{text-align:right;font-size:12px;font-weight:800;color:#64d0ff;letter-spacing:.1em;text-transform:uppercase}.azzera-doc .azza-doc-type small{color:#d9e5ee;font-size:10px;letter-spacing:0;text-transform:none;font-weight:500}.azzera-doc .azza-hero{padding:28px 34px 18px;background:#f7fafc}.azzera-doc .azza-hero p{margin:0 0 8px;color:#4c4c4c;font-size:13px;font-weight:600}.azzera-doc .azza-hero h1{margin:0;color:#141c25;font-size:26px;line-height:1.15;font-weight:800}.azzera-doc .azza-accent{width:90px;height:4px;background:#64d0ff;margin-top:16px}.azzera-doc .azza-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:24px 34px;border:1px solid #dce5ee;border-radius:16px;overflow:hidden}.azzera-doc .azza-meta div{padding:14px 16px;border-right:1px solid #dce5ee}.azzera-doc .azza-meta div:last-child{border-right:0}.azzera-doc .azza-meta span{display:block;color:#4c4c4c;text-transform:uppercase;font-size:10px;letter-spacing:.1em;font-weight:800;margin-bottom:5px}.azzera-doc .azza-meta strong{font-size:14px;color:#141c25}.azzera-doc .azza-text{margin:0 34px 18px;color:#4c4c4c;line-height:1.6}.azzera-doc .azza-grid{margin:20px 34px}.azzera-doc .azza-grid div{background:#141c25;border:0;border-top:4px solid #64d0ff;color:#fff}.azzera-doc .azza-grid span{color:#d9e5ee;text-transform:uppercase;font-size:10px;letter-spacing:.08em}.azzera-doc section{margin:0 34px 24px}.azzera-doc h3{font-size:14px;text-transform:uppercase;letter-spacing:.08em;color:#141c25;margin:0 0 12px;padding-left:12px;border-left:4px solid #64d0ff}.azzera-doc table{border-collapse:separate;border-spacing:0;width:100%;border:1px solid #dce5ee;border-radius:14px;overflow:hidden;margin-top:0}.azzera-doc th{background:#141c25!important;color:#fff;font-size:10px;text-transform:uppercase;letter-spacing:.06em;border:0!important;padding:11px 10px}.azzera-doc td{border:0!important;border-bottom:1px solid #e8eef5!important;padding:10px;vertical-align:top;font-size:12px;line-height:1.45;color:#141c25}.azzera-doc tbody tr:nth-child(even) td{background:#f7fafc}.azzera-doc .azza-signature{border:1px solid #dce5ee;border-left:5px solid #64d0ff;border-radius:14px;background:#f7fafc;color:#141c25}.azzera-doc .azza-warning{border:1px solid rgba(255,159,28,.35);background:#fff8ed;border-radius:14px;padding:14px;color:#7a4b00;font-weight:700}.azzera-doc footer{background:#141c25;color:#d9e5ee;margin:30px 0 0;padding:14px 34px;font-size:11px;letter-spacing:.02em}.document-preview{background:#f4f8fb}.document-preview .azzera-doc{box-shadow:0 18px 50px rgba(20,28,37,.16)}
@media print{.report-doc.azzera-doc{padding:0!important}.azzera-doc .azza-header{background:#141c25!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.azzera-doc th,.azzera-doc footer,.azzera-doc .azza-grid div{background:#141c25!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.azzera-doc .azza-hero,.azzera-doc tbody tr:nth-child(even) td{background:#f7fafc!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}


/* =========================================================
   V5.4 — Prise de poste photo, consignes renforcées, carte QG
   ========================================================= */
.take-shift-flow{display:grid;gap:14px}.shift-step{border:1px solid rgba(100,208,255,.16);border-radius:22px;background:linear-gradient(180deg,rgba(8,27,51,.76),rgba(5,10,19,.62));padding:16px}.shift-step-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}.shift-step-head h3{margin:0 0 3px;font-size:17px}.shift-step-head p{margin:0;color:var(--metal);font-size:12px;line-height:1.45}.shift-step-number{width:34px;height:34px;border-radius:12px;background:var(--electric);color:#03111d;display:grid;place-items:center;font-weight:1000;flex:0 0 auto}.site-brief{border:1px solid rgba(100,208,255,.32);border-radius:22px;background:linear-gradient(145deg,rgba(0,184,255,.10),rgba(8,27,51,.88));overflow:hidden}.site-brief-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 18px 14px;border-bottom:1px solid rgba(100,208,255,.16)}.site-brief-label{color:var(--azure);font-size:10px;font-weight:1000;letter-spacing:.13em}.site-brief h3{font-size:22px;margin:4px 0 2px;color:var(--cold)}.site-brief-head p{margin:0;color:var(--metal);font-weight:800}.site-facts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(100,208,255,.12)}.site-facts>div{display:grid;gap:5px;padding:13px 15px;background:#081b33}.site-facts span{font-size:10px;color:var(--metal);text-transform:uppercase;letter-spacing:.06em;font-weight:900}.site-facts strong{font-size:13px;line-height:1.4;color:var(--cold)}.site-instructions{margin:15px;border:2px solid var(--azure);border-radius:18px;background:rgba(100,208,255,.10);padding:16px}.site-instructions>span{display:block;color:var(--azure);font-size:11px;font-weight:1000;letter-spacing:.12em;margin-bottom:8px}.site-instructions p{margin:0;color:#fff;font-size:17px;line-height:1.6;font-weight:750}.camera-checkin{border-color:rgba(0,208,132,.28)}.camera-trigger{min-height:82px;border:2px dashed rgba(100,208,255,.42);border-radius:18px;background:rgba(0,184,255,.07);display:grid;place-items:center;text-align:center;padding:14px;cursor:pointer}.camera-trigger span{font-size:17px;font-weight:1000;color:var(--cold)}.camera-trigger small{color:var(--metal);font-weight:800;margin-top:4px}.camera-preview{min-height:88px;margin-top:12px;border:1px solid rgba(244,248,251,.10);border-radius:18px;background:rgba(5,10,19,.48);display:flex;align-items:center;gap:12px;padding:10px;color:var(--metal);font-weight:800}.camera-preview img{width:92px;height:72px;object-fit:cover;border-radius:13px;border:1px solid rgba(100,208,255,.32)}.camera-preview div{display:grid;gap:4px}.camera-preview strong{color:var(--green)}.camera-preview div span{font-size:11px}.camera-consent{margin-top:12px}.camera-consent input:disabled+span{opacity:.5}.shift-start-cta{min-height:58px;font-size:16px}.shift-start-cta:disabled{opacity:.45;cursor:not-allowed}.shift-live-card{border:1px solid rgba(0,208,132,.30);border-radius:22px;background:linear-gradient(145deg,rgba(0,208,132,.09),rgba(8,27,51,.92));padding:17px;margin-bottom:16px}.shift-live-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.shift-eyebrow{font-size:10px;font-weight:1000;color:var(--green);letter-spacing:.12em}.shift-live-head h3{margin:4px 0 0;font-size:22px}.shift-live-badges{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.shift-live-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px}.shift-live-grid>div{display:grid;gap:5px;padding:11px;border-radius:14px;background:rgba(5,10,19,.48);border:1px solid rgba(244,248,251,.07)}.shift-live-grid span{font-size:10px;color:var(--metal);font-weight:900;text-transform:uppercase}.shift-live-grid strong{font-size:13px;color:var(--cold);line-height:1.35}.end-shift-main-btn{min-height:56px;font-size:16px}.end-shift-flow{display:grid;gap:14px}.end-shift-hero{text-align:center;border:1px solid rgba(255,46,46,.25);border-radius:20px;padding:18px;background:rgba(255,46,46,.06)}.end-shift-hero span{font-size:10px;color:#ff9b9b;font-weight:1000;letter-spacing:.1em}.end-shift-hero strong{display:block;font-size:30px;margin:5px 0;color:#fff}.end-shift-hero p{margin:0;color:var(--metal)}.end-shift-cta{min-height:58px;font-size:16px}.end-shift-note{text-align:center;font-size:11px;line-height:1.45}.agent-map-popup{min-width:260px}.agent-popup-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.agent-popup-head>div{display:grid;gap:3px}.map-popup-kpis{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:8px 0}.map-popup-kpis>div{display:grid;gap:3px;padding:8px;border-radius:10px;background:#eef5f8}.map-popup-kpis span{font-size:9px!important;text-transform:uppercase;font-weight:900}.map-popup-kpis strong{font-size:11px!important;color:#081b33}.map-checkin-photo{width:100%;height:138px;object-fit:cover;border-radius:12px;margin:4px 0 7px;border:1px solid rgba(8,27,51,.14)}.map-photo-loading{font-size:10px;color:#6f7f8d;background:#eef5f8;border-radius:10px;padding:9px;text-align:center;margin:5px 0}.field-wide{grid-column:1/-1}.address-geocode-row{display:grid;grid-template-columns:1fr auto;gap:8px}.geocode-status{margin-top:7px;font-size:11px;color:var(--metal);font-weight:800}.geocode-status.loading{color:var(--azure)}.geocode-status.success{color:var(--green)}.geocode-status.error{color:#ff7f7f}.advanced-coordinates{border:1px solid rgba(244,248,251,.08);border-radius:16px;padding:11px 13px;margin:12px 0;background:rgba(5,10,19,.30)}.advanced-coordinates summary{cursor:pointer;color:var(--metal);font-weight:900;font-size:12px}.advanced-coordinates .form-grid{margin-top:12px}.site-instructions-input{min-height:150px;font-size:15px;line-height:1.55}
@media(max-width:760px){.site-facts,.shift-live-grid{grid-template-columns:1fr}.site-instructions p{font-size:16px}.site-brief h3{font-size:20px}.address-geocode-row{grid-template-columns:1fr}.address-geocode-row .btn{width:100%}.shift-step{padding:13px}.camera-preview{align-items:flex-start}.camera-preview img{width:84px;height:68px}.agent-map-popup{min-width:220px}.map-popup-kpis{grid-template-columns:1fr}}

/* V5.4.7 — Dashboard interactif & fiche agent carte */
.dashboard-stat{cursor:pointer;position:relative;overflow:hidden;min-height:150px;transition:transform .16s ease,border-color .16s ease,background .16s ease;user-select:none;-webkit-tap-highlight-color:transparent}
.dashboard-stat::after{content:'›';position:absolute;right:18px;bottom:16px;font-size:30px;line-height:1;color:rgba(244,248,251,.35);font-weight:500}
.dashboard-stat:hover,.dashboard-stat:focus-visible{transform:translateY(-2px);border-color:rgba(100,208,255,.45);outline:none;background:linear-gradient(180deg,rgba(18,42,72,.98),rgba(9,22,40,.98))}
.dashboard-stat:active{transform:scale(.985)}
.stat-hint{margin-top:auto;padding-right:34px;color:var(--metal);font-size:11px;font-weight:750;line-height:1.35}
.dashboard-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-4px 0 14px;padding-bottom:12px;border-bottom:1px solid rgba(244,248,251,.08)}
.dashboard-detail-head p{margin:0;color:var(--metal);font-size:13px}.dashboard-detail-live{font-size:10px;color:var(--azure);font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.dashboard-detail-list{display:grid;gap:10px}.dashboard-detail-summary{display:flex;align-items:baseline;gap:10px;padding:14px 16px;border-radius:17px;background:rgba(0,184,255,.08);border:1px solid rgba(100,208,255,.20)}
.dashboard-detail-summary strong{font-size:30px;color:var(--electric)}.dashboard-detail-summary span{color:var(--metal);font-weight:800}.dashboard-detail-summary.danger{background:rgba(255,46,46,.07);border-color:rgba(255,46,46,.22)}.dashboard-detail-summary.danger strong{color:var(--red)}.dashboard-detail-summary.warning{background:rgba(255,159,28,.07);border-color:rgba(255,159,28,.24)}.dashboard-detail-summary.warning strong{color:var(--orange)}
.dashboard-detail-item{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:15px;border-radius:18px;background:rgba(244,248,251,.045);border:1px solid rgba(244,248,251,.08)}
.dashboard-detail-main{min-width:0;display:grid;gap:6px}.dashboard-detail-title{font-size:15px;font-weight:950;color:var(--cold)}.dashboard-detail-meta{font-size:12px;color:var(--metal);line-height:1.55}.dashboard-detail-meta strong{color:var(--cold)}
.dashboard-detail-side{display:flex;align-items:flex-end;justify-content:flex-start;gap:7px;flex-wrap:wrap;flex:0 0 auto}.dashboard-detail-empty{padding:28px 18px;text-align:center;border-radius:18px;border:1px dashed rgba(244,248,251,.14);color:var(--metal);font-weight:800}
.agent-live-sheet{display:grid;gap:14px}.agent-live-status{display:flex;align-items:center;gap:9px;border:1px solid rgba(0,208,132,.25);background:rgba(0,208,132,.07);border-radius:16px;padding:12px 14px;color:var(--green)}.agent-live-status>span:last-child{margin-left:auto;color:var(--cold);font-weight:900}.live-dot{width:11px;height:11px;border-radius:50%;background:var(--green);box-shadow:0 0 0 6px rgba(0,208,132,.14)}
.agent-live-content{display:grid;gap:14px}.agent-live-identity{display:flex;align-items:center;gap:13px;padding:2px 0}.agent-live-avatar{width:58px;height:58px;border-radius:20px;display:grid;place-items:center;background:var(--green);color:#03111d;font-size:20px;font-weight:1000;border:3px solid rgba(255,255,255,.85)}.agent-live-identity h3{margin:0 0 4px;font-size:22px}.agent-live-identity p{margin:0;color:var(--metal);font-weight:800}
.agent-live-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.agent-live-grid>div{display:grid;gap:5px;padding:12px;border-radius:15px;background:rgba(244,248,251,.05);border:1px solid rgba(244,248,251,.08)}.agent-live-grid span{color:var(--metal);font-size:9px;font-weight:950;text-transform:uppercase;letter-spacing:.07em}.agent-live-grid strong{color:var(--cold);font-size:12px;line-height:1.4}
.agent-live-instructions{border:2px solid var(--azure);border-radius:18px;background:rgba(100,208,255,.08);padding:14px}.agent-live-instructions span{display:block;color:var(--azure);font-size:10px;font-weight:1000;letter-spacing:.11em;margin-bottom:7px}.agent-live-instructions p{margin:0;color:#fff;line-height:1.55;font-size:14px;font-weight:750}
.agent-live-photo{margin:0;display:grid;gap:7px}.agent-live-photo img{width:100%;max-height:310px;object-fit:cover;border-radius:18px;border:1px solid rgba(100,208,255,.25)}.agent-live-photo figcaption{color:var(--metal);font-size:10px;text-align:center}.agent-live-no-photo{padding:18px;text-align:center;border:1px dashed rgba(244,248,251,.14);border-radius:16px;color:var(--metal)}.agent-live-actions{display:flex;flex-wrap:wrap;gap:8px}.agent-live-actions .btn{flex:1 1 180px}
.premium-map .leaflet-marker-icon{cursor:pointer!important}.premium-map .leaflet-tooltip{font-family:Montserrat,sans-serif;font-weight:850;border:0;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.24)}
@media(max-width:760px){.dashboard-stat{min-height:138px}.stat-hint{font-size:10px}.dashboard-detail-head{align-items:flex-start;flex-direction:column}.dashboard-detail-item{flex-direction:column}.dashboard-detail-side{width:100%}.dashboard-detail-side .btn,.dashboard-detail-side a{flex:1 1 120px}.agent-live-grid{grid-template-columns:1fr 1fr}.agent-live-actions{display:grid;grid-template-columns:1fr}.agent-live-actions .btn{width:100%}.modal.wide .agent-live-photo img{max-height:240px}}
@media(max-width:430px){.agent-live-grid{grid-template-columns:1fr}.dashboard-detail-summary strong{font-size:26px}}

/* V5.7.0 — Planning collaborateurs */
.agent-planning-card{min-height:560px}
.agent-planning-toolbar{display:grid;grid-template-columns:auto minmax(180px,240px);gap:14px;align-items:end;margin-bottom:16px}
.agent-plan-day{display:grid;gap:10px;margin:0 0 20px}.agent-plan-day h3{margin:0;color:var(--cold);font-size:13px;text-transform:capitalize;letter-spacing:.02em}
.agent-plan-mission{position:relative;display:grid;grid-template-columns:5px minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px;border:1px solid var(--border);border-radius:18px;background:linear-gradient(135deg,rgba(8,27,51,.92),rgba(5,10,19,.82));overflow:hidden}
.agent-plan-mission.unread{box-shadow:0 0 0 1px rgba(255,159,28,.24) inset}.agent-plan-mission.cancelled{opacity:.58}
.agent-plan-color{align-self:stretch;border-radius:99px;background:var(--mission-color,#64d0ff)}
.agent-plan-main{min-width:0}.agent-plan-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.agent-plan-title strong{font-size:15px;color:var(--cold)}
.agent-plan-time{margin-top:5px;font-size:12px;color:var(--cold);font-weight:800}.agent-plan-meta{margin-top:4px;color:var(--metal);font-size:11px;font-weight:650;line-height:1.4}
.agent-plan-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end;max-width:280px}
.agent-month-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin-bottom:7px}.agent-month-weekdays span{text-align:center;color:var(--metal);font-size:10px;font-weight:900;text-transform:uppercase}
.agent-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}
.agent-month-cell{min-height:118px;border:1px solid var(--border);border-radius:15px;padding:8px;background:rgba(5,10,19,.38);display:flex;flex-direction:column;gap:6px;overflow:hidden}.agent-month-cell.today{outline:2px solid rgba(100,208,255,.42);background:rgba(100,208,255,.07)}.agent-month-cell.empty-cell{opacity:.25}
.agent-month-day{display:flex;justify-content:space-between;align-items:center}.agent-month-day strong{font-size:13px}.agent-month-day span{font-size:9px;text-transform:uppercase;color:var(--metal);font-weight:900}
.agent-month-chip{border:0;border-left:4px solid var(--mission-color,#64d0ff);border-radius:9px;background:rgba(244,248,251,.06);padding:5px 6px;text-align:left;color:var(--cold);display:grid;gap:2px;cursor:pointer}.agent-month-chip strong{font-size:9px}.agent-month-chip span{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agent-month-more{border:0;background:transparent;color:var(--azure);font-size:9px;font-weight:900;text-align:left;cursor:pointer}
.agent-mission-detail .setup-box{margin-bottom:12px}

.collaborator-planning-card{overflow:hidden}.collaborator-toolbar{display:grid;grid-template-columns:minmax(240px,1fr) 180px auto;gap:12px;align-items:end;margin-bottom:14px}
.collaborator-board{border:1px solid var(--border);border-radius:20px;overflow:hidden;background:rgba(5,10,19,.34)}
.collaborator-scroll{overflow:auto;max-height:68vh;-webkit-overflow-scrolling:touch}
.collaborator-grid{display:grid;grid-template-columns:190px repeat(var(--month-days),minmax(58px,1fr));min-width:calc(190px + (var(--month-days) * 58px))}
.collaborator-grid-head{position:sticky;top:0;z-index:6;background:rgba(8,27,51,.98);border-bottom:1px solid var(--border)}
.collaborator-site-head,.collaborator-day-head{padding:8px;border-right:1px solid var(--border);text-align:center}.collaborator-site-head{text-align:left;font-weight:900;text-transform:uppercase;color:var(--cold)}
.collaborator-day-head strong{display:block;font-size:11px;color:var(--cold)}.collaborator-day-head span{display:block;margin-top:2px;font-size:8px;color:var(--metal);font-weight:900;text-transform:uppercase}.collaborator-day-head.today{background:rgba(100,208,255,.09)}
.collaborator-grid-row{border-bottom:1px solid var(--border);background:rgba(5,10,19,.14)}
.collaborator-site{position:sticky;left:0;z-index:4;min-height:76px;padding:10px;background:rgba(8,27,51,.97);border-right:1px solid var(--border);display:flex;flex-direction:column;justify-content:center;gap:3px}.collaborator-site i{width:26px;height:4px;border-radius:99px;margin-bottom:3px}.collaborator-site strong{font-size:11px;line-height:1.25}.collaborator-site span{font-size:9px;color:var(--metal)}
.collaborator-cell{position:relative;min-height:76px;border-right:1px solid rgba(244,248,251,.065);padding:4px;display:flex;flex-direction:column;gap:4px;background:linear-gradient(180deg,rgba(244,248,251,.025),transparent)}.collaborator-cell.today{background:rgba(100,208,255,.055)}
.collaborator-cell-add{position:absolute;inset:0;border:0;background:transparent;color:transparent;cursor:pointer}.collaborator-cell:hover .collaborator-cell-add{color:rgba(100,208,255,.9);background:rgba(100,208,255,.04)}
.collaborator-shift{position:relative;z-index:2;border:0;border-top:4px solid var(--mission-color,#64d0ff);border-radius:9px;background:rgba(244,248,251,.08);padding:4px 3px;color:var(--cold);display:grid;text-align:center;cursor:pointer;box-shadow:0 0 0 1px rgba(255,255,255,.07) inset}.collaborator-shift strong,.collaborator-shift span{font-size:8px;line-height:1.15}.collaborator-shift i{position:absolute;right:2px;top:2px;width:6px;height:6px;border-radius:50%;background:#ff9f1c}.collaborator-shift.cancelled{opacity:.45;text-decoration:line-through}
.collaborator-grid-total{position:sticky;bottom:0;z-index:5;background:rgba(20,28,37,.98);border-top:2px solid rgba(100,208,255,.35)}.collaborator-grid-total>div{min-height:40px;padding:8px;border-right:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--cold);font-size:9px;font-weight:900}.collaborator-grid-total .collaborator-site{align-items:flex-start;justify-content:center}
.collaborator-details{display:grid;grid-template-columns:1.3fr 1fr;gap:14px;padding:14px;border-top:1px solid var(--border);background:rgba(8,27,51,.55)}.collaborator-breakdown h3{margin:0 0 9px;font-size:12px;color:var(--cold);text-transform:uppercase;letter-spacing:.05em}.collaborator-breakdown .table{font-size:10px}.collaborator-breakdown .table th,.collaborator-breakdown .table td{padding:7px}
.weekly-total-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:8px}.weekly-total-list div{border:1px solid var(--border);border-radius:12px;padding:9px;background:rgba(5,10,19,.35);display:grid;gap:4px}.weekly-total-list span{font-size:9px;color:var(--metal);font-weight:800;text-transform:uppercase}.weekly-total-list strong{font-size:13px;color:var(--cold)}

@media(max-width:900px){
  .agent-planning-toolbar{grid-template-columns:1fr}.agent-plan-mission{grid-template-columns:5px minmax(0,1fr)}.agent-plan-actions{grid-column:2;justify-content:flex-start;max-width:none}.agent-month-grid{min-width:700px}.agent-month-weekdays{min-width:700px}.agent-planning-card #agent-planning-content{overflow-x:auto}
  .collaborator-toolbar{grid-template-columns:1fr 1fr}.collaborator-toolbar .btn{grid-column:1/-1}.collaborator-details{grid-template-columns:1fr}.collaborator-grid{grid-template-columns:140px repeat(var(--month-days),58px);min-width:calc(140px + (var(--month-days) * 58px))}.collaborator-site{padding:8px}
}
@media(max-width:560px){
  .agent-plan-mission{padding:10px;gap:8px}.agent-plan-title strong{font-size:13px}.agent-plan-actions{display:grid;grid-template-columns:1fr}.agent-plan-actions .btn{width:100%}.agent-month-cell{min-height:105px}
  .collaborator-toolbar{grid-template-columns:1fr}.collaborator-toolbar .btn{grid-column:auto}.collaborator-scroll{max-height:58vh}.collaborator-grid{grid-template-columns:116px repeat(var(--month-days),54px);min-width:calc(116px + (var(--month-days) * 54px))}.collaborator-cell{min-height:70px}.collaborator-site{min-height:70px}.collaborator-site strong{font-size:10px}.collaborator-details{padding:10px}
}

/* =========================================================
   V5.7.1 — Conformité facturation, PTI tactile et hors ligne
   ========================================================= */
.sos-btn,.sos-btn *{
  -webkit-user-select:none!important;
  user-select:none!important;
  -webkit-touch-callout:none!important;
  -webkit-user-drag:none!important;
  touch-action:none!important;
  -webkit-tap-highlight-color:transparent;
}
.sos-btn{cursor:pointer;overscroll-behavior:contain;will-change:transform,box-shadow}
.sos-btn.arming{animation:sos-arming-pulse .72s ease-in-out infinite alternate;box-shadow:0 0 0 8px rgba(255,46,46,.13),0 0 42px rgba(255,46,46,.52)}
@keyframes sos-arming-pulse{from{transform:scale(1)}to{transform:scale(1.055)}}
.offline-ready-card{border-color:rgba(100,208,255,.27);background:linear-gradient(145deg,rgba(100,208,255,.08),rgba(8,27,51,.9))}
.offline-ready-card.offline-active{border-color:rgba(255,159,28,.36);background:linear-gradient(145deg,rgba(255,159,28,.08),rgba(8,27,51,.92))}
.invoice-form-section{margin:0 0 18px;padding:16px;border:1px solid var(--border);border-radius:18px;background:rgba(5,10,19,.28)}
.invoice-form-section h3{margin:0 0 14px;color:var(--azure);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.form-grid .span-2{grid-column:1/-1}
.invoice-security-doc .invoice-operation{border:1px solid #dce5ee;border-left:5px solid #64d0ff;border-radius:12px;background:#f7fafc;padding:12px 14px}
.invoice-legal-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:stretch}
.invoice-legal-box{border:1px solid #dce5ee;border-radius:14px;padding:15px;background:#f7fafc;break-inside:avoid;page-break-inside:avoid}
.invoice-legal-box.security{border-left:5px solid #64d0ff}
.invoice-legal-box h3{margin:0 0 9px;color:#141c25;font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.invoice-legal-box p{margin:0 0 8px;color:#4c4c4c;font-size:11px;line-height:1.55}.invoice-legal-box p:last-child{margin-bottom:0}
.invoice-additional-legal{border-top:1px solid #dce5ee;padding-top:12px;color:#4c4c4c;font-size:10px;line-height:1.5}
@media(max-width:700px){.invoice-legal-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}}
@media print{
  .invoice-legal-grid{grid-template-columns:1fr 1fr!important}
  .invoice-legal-box,.invoice-security-doc .invoice-operation{break-inside:avoid!important;page-break-inside:avoid!important}
}

/* =========================================================
   V5.7.2 — Badge professionnel employeur dématérialisé
   ========================================================= */
.agent-badge-page .setup-box{margin-bottom:14px}.agent-badge-shell{display:grid;gap:16px;max-width:980px;margin:0 auto}.agent-badge-card{position:relative;border:2px solid #141c25;border-radius:4px;background:#fff;color:#141c25;overflow:hidden;min-height:292px;box-shadow:0 16px 35px rgba(0,0,0,.16)}.agent-badge-card.recto,.agent-badge-card.verso{display:flex;flex-direction:column}.agent-badge-top{display:grid;grid-template-columns:110px minmax(0,1fr);align-items:center;gap:16px;min-height:98px;padding:18px 28px;background:#fff}.agent-badge-top img{width:76px;height:62px;object-fit:contain;justify-self:center}.agent-badge-top strong{display:block;font-size:22px;font-weight:1000;letter-spacing:.02em}.agent-badge-top span{display:block;font-size:15px;line-height:1.3;font-weight:750}.agent-badge-middle{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:16px;background:#cfcfcf;padding:22px 28px 18px;flex:1}.agent-badge-data{display:grid;gap:9px;align-content:start}.agent-badge-data p,.agent-badge-verso-grid p{margin:0;font-size:17px;line-height:1.32}.agent-badge-data strong,.agent-badge-verso-grid strong{font-weight:1000}.agent-badge-photo{margin:0;justify-self:end;align-self:start;width:152px;height:185px;border:1px solid rgba(20,28,37,.28);background:#f8fafc;display:grid;place-items:center;overflow:hidden}.agent-badge-photo img{width:100%;height:100%;object-fit:cover;display:block}.agent-badge-photo-placeholder{width:100%;height:100%;display:grid;place-items:center;font-size:34px;font-weight:1000;color:#141c25;background:linear-gradient(145deg,#e9eef4,#ffffff)}.agent-badge-legal{background:#cfcfcf;padding:12px 28px 18px;font-size:12px;line-height:1.45;font-weight:800}.agent-badge-verso-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;background:#cfcfcf;padding:24px 28px 10px;flex:1}.agent-badge-verso-grid ul,.agent-badge-specialties ul{margin:7px 0 0;padding-left:18px}.agent-badge-verso-grid li,.agent-badge-specialties li{font-size:16px;font-weight:750;margin:5px 0}.agent-badge-specialties{background:#cfcfcf;padding:0 28px 22px;min-height:78px}.agent-badge-specialties strong{display:block;font-size:16px;margin-bottom:3px}.agent-badge-footer{display:grid;gap:5px;background:#cfcfcf;padding:16px 28px 20px;font-size:16px;font-weight:900}.agent-badge-footer strong{font-size:17px}.agent-badge-modal .agent-badge-shell{max-width:860px}.agent-photo-editor{display:grid;grid-template-columns:150px minmax(0,1fr);gap:18px;align-items:start;margin-bottom:16px}.agent-photo-preview{width:142px;height:176px;border:1px solid rgba(100,208,255,.28);border-radius:18px;background:rgba(5,10,19,.38);display:grid;place-items:center;overflow:hidden}.agent-photo-preview img{width:100%;height:100%;object-fit:cover}.agent-photo-preview span{font-size:32px;font-weight:1000;color:var(--azure)}.agent-photo-controls{display:grid;gap:10px}.agent-card-form-section .textarea{min-height:88px}.agent-badge-print-root{display:none}.agent-badge-print-page{background:#fff;color:#141c25;padding:16mm}.agent-badge-print-page .agent-badge-shell{max-width:180mm;gap:8mm}.agent-badge-print-page .agent-badge-card{box-shadow:none;break-inside:avoid;page-break-inside:avoid}.table-actions{gap:6px;flex-wrap:wrap}
@media(max-width:760px){.agent-badge-top{grid-template-columns:80px 1fr;padding:14px}.agent-badge-top img{width:58px}.agent-badge-top strong{font-size:17px}.agent-badge-top span{font-size:12px}.agent-badge-middle{grid-template-columns:1fr 112px;padding:16px 14px}.agent-badge-data p,.agent-badge-verso-grid p{font-size:13px}.agent-badge-photo{width:106px;height:136px}.agent-badge-legal{padding:10px 14px 14px;font-size:10px}.agent-badge-verso-grid{grid-template-columns:1fr;padding:16px 14px 8px}.agent-badge-verso-grid li,.agent-badge-specialties li{font-size:13px}.agent-badge-specialties,.agent-badge-footer{padding-left:14px;padding-right:14px}.agent-photo-editor{grid-template-columns:1fr}.agent-photo-preview{width:132px;height:164px}}
@media print{body>*:not(#print-root){display:none!important}#print-root.agent-badge-print-root{display:block!important;position:static!important;background:#fff!important}.agent-badge-print-page{padding:8mm!important}.agent-badge-print-page .agent-badge-card{box-shadow:none!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.agent-badge-card .agent-badge-middle,.agent-badge-card .agent-badge-verso-grid,.agent-badge-card .agent-badge-specialties,.agent-badge-card .agent-badge-footer,.agent-badge-card .agent-badge-legal{background:#cfcfcf!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* =========================================================
   V5.7.4 — Annexes photographiques des rapports PDF
   ========================================================= */
.azza-photo-annexes{margin-top:22px}.azza-photo-annexes>h3{margin-bottom:14px}.azza-photo-proof{display:grid;grid-template-columns:minmax(220px,46%) 1fr;gap:18px;align-items:start;margin:0 0 18px;padding:14px;border:1px solid #dce5ee;border-radius:14px;background:#f7fafc;break-inside:avoid;page-break-inside:avoid}.azza-photo-proof img{display:block;width:100%;max-height:390px;object-fit:contain;border-radius:10px;background:#eef3f7}.azza-photo-proof strong{display:block;color:#141c25;font-size:12px;margin-bottom:8px}.azza-photo-proof p{margin:0;color:#4c5966;font-size:10px;line-height:1.55}@media(max-width:700px){.azza-photo-proof{grid-template-columns:1fr}}@media print{.azza-photo-proof{break-inside:avoid!important;page-break-inside:avoid!important}.azza-photo-proof img{max-height:150mm}}


/* =========================================================
   V5.7.4.1 — Correctif mobile de la fin de poste
   La fenêtre occupe réellement tout l'écran et bloque l'arrière-plan.
   ========================================================= */
html.modal-open,
body.modal-open{
  height:100%;
  overflow:hidden!important;
  overscroll-behavior:none;
}
.modal-backdrop{
  width:100vw;
  height:100vh;
  height:100dvh;
  max-height:100dvh;
  overflow:hidden;
  overscroll-behavior:contain;
}
.end-shift-actions{display:grid;gap:8px}
@media(max-width:760px){
  .modal-backdrop.end-shift-backdrop{
    inset:0!important;
    width:100vw!important;
    height:100vh!important;
    height:100dvh!important;
    min-height:100svh;
    max-height:100dvh!important;
    padding:0!important;
    align-items:stretch!important;
    justify-items:stretch!important;
    background:var(--obsidian);
    overflow:hidden!important;
  }
  .end-shift-backdrop .modal.end-shift-modal{
    align-self:stretch;
    width:100%!important;
    max-width:none!important;
    height:100%!important;
    max-height:none!important;
    margin:0!important;
    border:0!important;
    border-radius:0!important;
    padding:calc(10px + var(--safe-top)) 14px calc(16px + var(--safe-bottom))!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }
  .end-shift-modal .modal-head{
    position:sticky;
    top:0;
    z-index:6;
    margin:calc(-10px - var(--safe-top)) -14px 14px;
    padding:calc(10px + var(--safe-top)) 14px 12px;
    background:rgba(8,27,51,.98);
    border-bottom:1px solid var(--border);
    box-shadow:0 10px 24px rgba(5,10,19,.38);
  }
  .end-shift-modal .modal-head h2{font-size:20px}
  .end-shift-modal .checkline{
    align-items:flex-start;
    gap:12px;
  }
  .end-shift-modal .checkline input{
    width:22px;
    height:22px;
    min-width:22px;
    flex:0 0 22px;
    margin-top:0;
  }
  .end-shift-modal .end-shift-actions{
    padding-bottom:max(4px,var(--safe-bottom));
  }
}

/* V5.7.5 — Brouillon et publication du planning mensuel */
.monthly-publication-panel{
  margin:16px 0;
  padding:18px;
  display:flex;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
  border:1px solid rgba(100,208,255,.22);
  border-radius:18px;
  background:linear-gradient(135deg,rgba(8,22,38,.96),rgba(6,15,28,.92));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.monthly-publication-copy{display:flex;align-items:flex-start;gap:12px;flex:1 1 360px;min-width:0}
.monthly-publication-copy strong{display:block;color:#f5f9ff;font-size:15px;margin-bottom:4px}
.monthly-publication-copy p{margin:0;color:#9cb1c5;font-size:12px;line-height:1.55}
.planning-publication-badge{display:inline-flex;align-items:center;justify-content:center;min-width:86px;padding:8px 10px;border-radius:999px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.planning-publication-badge.draft{color:#ffbf69;background:rgba(255,159,28,.14);border:1px solid rgba(255,159,28,.42)}
.planning-publication-badge.published{color:#65e7ac;background:rgba(0,208,132,.13);border:1px solid rgba(0,208,132,.38)}
.planning-publication-badge.individual{color:#79d8ff;background:rgba(0,156,255,.13);border:1px solid rgba(0,156,255,.38)}
.monthly-publication-stats{display:flex;gap:8px;flex-wrap:wrap}
.monthly-publication-stats span{display:flex;flex-direction:column;min-width:92px;padding:9px 11px;border-radius:12px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07);color:#8fa6bb;font-size:10px;text-transform:uppercase;letter-spacing:.04em}
.monthly-publication-stats strong{color:#f4f8fc;font-size:16px;line-height:1.1}
.planning-mission.planning-draft{opacity:.72;border-style:dashed!important;filter:saturate(.7)}
.planning-mission.planning-draft::after{content:'BROUILLON';position:absolute;right:6px;top:5px;font-size:7px;font-weight:900;letter-spacing:.08em;color:#ffbf69;background:rgba(4,12,22,.82);border:1px solid rgba(255,159,28,.45);border-radius:999px;padding:2px 5px}
.collaborator-shift.planning-draft{opacity:.72;border-style:dashed}
@media(max-width:760px){
  .monthly-publication-panel{align-items:stretch;padding:14px}
  .monthly-publication-copy{flex-basis:100%}
  .planning-publication-badge{min-width:78px;font-size:9px}
  .monthly-publication-stats{width:100%}
  .monthly-publication-stats span{flex:1}
  .monthly-publication-panel>.btn{width:100%}
}
.agent-monthly-ack{margin:14px 0}
.agent-monthly-ack:empty{display:none}
.agent-monthly-ack{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:14px 16px;border-radius:16px;border:1px solid rgba(100,208,255,.18);background:rgba(6,18,32,.72)}
.agent-monthly-ack-copy{display:flex;align-items:flex-start;gap:10px;flex:1;min-width:240px}
.agent-monthly-ack-copy strong{display:block;color:#f4f8fc;font-size:14px;margin-bottom:3px}
.agent-monthly-ack-copy p{margin:0;color:#91a8bd;font-size:11px;line-height:1.5}
@media(max-width:680px){.agent-monthly-ack>.btn{width:100%}}

/* V5.8.0 — Actions rapides en bulles, positionnées avant le contenu de mission */
.quick-actions-card{overflow:hidden}
.quick-action-bubbles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.quick-action-bubble{min-height:112px;border:1px solid rgba(148,163,184,.24);border-radius:24px;background:linear-gradient(180deg,rgba(20,34,54,.96),rgba(10,22,38,.96));color:#f8fafc;padding:16px 12px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px;text-align:left;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.quick-action-bubble:hover,.quick-action-bubble:focus-visible{transform:translateY(-2px);border-color:rgba(0,156,255,.65);outline:none}
.quick-action-bubble.primary{background:linear-gradient(180deg,rgba(0,156,255,.25),rgba(8,35,60,.98));border-color:rgba(0,156,255,.58)}
.quick-action-bubble.warning{background:linear-gradient(180deg,rgba(245,158,11,.2),rgba(45,30,10,.96));border-color:rgba(245,158,11,.45)}
.quick-action-icon{width:38px;height:38px;border-radius:14px;display:grid;place-items:center;background:rgba(0,156,255,.14);color:#38bdf8;font-size:21px;font-weight:800;margin-bottom:4px}
.quick-action-bubble.warning .quick-action-icon{background:rgba(245,158,11,.15);color:#fbbf24}
.quick-action-bubble strong{font-size:14px;line-height:1.2}
.quick-action-bubble small{font-size:11px;line-height:1.25;color:#94a3b8;font-weight:500}
.quick-actions-footer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;margin-top:14px;padding-top:14px;border-top:1px solid rgba(148,163,184,.16)}
.quick-actions-footer p{margin:0;font-size:11px}
@media(max-width:720px){.quick-action-bubbles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.quick-action-bubble{min-height:104px;border-radius:21px;padding:14px 12px}.quick-actions-footer{grid-template-columns:1fr}.quick-actions-footer p{text-align:center}}
@media(max-width:390px){.quick-action-bubble{min-height:98px}.quick-action-bubble strong{font-size:13px}.quick-action-bubble small{font-size:10px}}


/* V5.8.1 — listes QG compactes et commandes non destructives */
.card-title .btn-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.notification.blue{border-color:rgba(0,156,255,.42);background:rgba(0,156,255,.07)}
@media(max-width:560px){.card-title .btn-row{width:100%;justify-content:stretch}.card-title .btn-row .btn{flex:1}}


/* V5.8.2 — Planning QG compact par journée, sans modification des données */
.planning-row-summary{--tracks:1}
.planning-resource-summary{min-height:72px!important;padding-top:11px!important}
.planning-lane-summary{
  grid-template-rows:56px!important;
  min-height:72px!important;
  column-gap:0!important;
  row-gap:0!important;
  padding:8px 0!important;
}
.planning-summary-empty{
  width:calc(100% - 8px);
  max-width:calc(100% - 8px);
  height:56px;
  min-height:56px;
  justify-self:center;
  box-sizing:border-box;
}
.planning-day-summary{
  position:relative;
  z-index:3;
  width:calc(100% - 8px);
  max-width:calc(100% - 8px);
  min-width:0;
  justify-self:center;
  height:56px;
  min-height:56px;
  box-sizing:border-box;
  border:1px solid color-mix(in srgb,var(--site-color),white 28%);
  border-radius:12px;
  background:var(--site-color);
  color:var(--site-text);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:1px;
  padding:5px 4px;
  cursor:pointer;
  text-align:center;
  overflow:hidden;
  box-shadow:0 0 0 1px rgba(255,255,255,.10) inset,0 7px 16px color-mix(in srgb,var(--site-color),transparent 76%);
  transition:filter .14s ease,transform .14s ease,outline-color .14s ease;
}
.planning-day-summary:hover,.planning-day-summary:focus-visible{filter:brightness(1.12) saturate(1.06);transform:translateY(-1px);outline:2px solid color-mix(in srgb,var(--site-color),white 48%);outline-offset:-2px}
.planning-day-summary strong{font-size:18px;line-height:1;font-weight:1000;color:inherit}
.planning-day-summary span{font-size:9px;line-height:1.15;font-weight:1000;text-transform:uppercase;letter-spacing:.045em;color:inherit;opacity:.96;white-space:nowrap}
.planning-day-summary.today{box-shadow:0 0 0 3px rgba(255,255,255,.34) inset,0 7px 16px color-mix(in srgb,var(--site-color),transparent 70%)}
.planning-day-summary.late{outline:3px solid rgba(255,46,46,.78);outline-offset:-3px}
.planning-day-summary.has-draft{border-style:dashed;opacity:.78}
.planning-day-summary.status-completed{filter:saturate(.70) brightness(.88)}
.planning-hover-card{
  position:fixed;
  z-index:10020;
  display:none;
  width:min(340px,calc(100vw - 24px));
  max-height:min(420px,calc(100vh - 24px));
  overflow:auto;
  padding:12px;
  border:1px solid rgba(100,208,255,.28);
  border-radius:16px;
  background:rgba(5,14,27,.985);
  color:var(--cold);
  box-shadow:0 18px 48px rgba(0,0,0,.58),inset 0 1px 0 rgba(255,255,255,.05);
  pointer-events:none;
  backdrop-filter:blur(16px);
}
.planning-hover-card.visible{display:block}
.planning-hover-head{padding:2px 2px 10px;border-bottom:1px solid var(--border)}
.planning-hover-head strong{display:block;font-size:14px;color:var(--cold)}
.planning-hover-head span{display:block;margin-top:3px;font-size:10px;color:var(--azure);font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.planning-hover-list{display:grid;gap:0;margin:5px 0}
.planning-hover-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:9px 2px;border-bottom:1px solid rgba(244,248,251,.07)}
.planning-hover-row:last-child{border-bottom:0}
.planning-hover-row div{min-width:0}
.planning-hover-row strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--cold)}
.planning-hover-row span{display:block;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px;color:var(--metal);font-weight:800}
.planning-hover-row time{font-size:11px;color:var(--azure);font-weight:1000;white-space:nowrap}
.planning-hover-card>small{display:block;padding-top:7px;border-top:1px solid var(--border);color:var(--metal);font-size:9px;font-weight:700}
.planning-day-modal-list{margin:12px 0}
.planning-day-modal-item{width:100%;cursor:pointer;text-align:left;color:inherit}
@media(max-width:760px){
  .planning-resource-summary{min-height:62px!important}
  .planning-lane-summary{grid-template-rows:48px!important;min-height:62px!important;padding:6px 0!important;column-gap:0!important;row-gap:0!important}
  .planning-summary-empty,.planning-day-summary{width:calc(100% - 6px);max-width:calc(100% - 6px);height:48px;min-height:48px;border-radius:10px}
  .planning-day-summary strong{font-size:16px}
  .planning-day-summary span{font-size:8px}
  .planning-hover-card{display:none!important}
}
@media print{.planning-hover-card{display:none!important}}


/* V5.8.3 — alignement strict des cases du planning et vue Mois au 1er du mois courant */


/* V5.8.6 STAGING — repère visuel anti-confusion avec la production */
.staging-v587-banner{
  position:fixed;top:0;left:0;right:0;z-index:99999;height:28px;
  display:flex;align-items:center;justify-content:center;padding:0 12px;
  background:#8a4d00;color:#fff;font:800 11px/1 Montserrat,system-ui,sans-serif;
  letter-spacing:.08em;text-transform:uppercase;box-shadow:0 1px 8px rgba(0,0,0,.28);
}
body{padding-top:28px}
@media(max-width:700px){.staging-v587-banner{font-size:9px;letter-spacing:.04em}}
