:root{--s-bg:#020d1b;--s-panel:#06192b;--s-panel2:#092139;--s-line:#17415e;--s-text:#eef7ff;--s-muted:#91afc9;--s-blue:#109cff;--s-green:#17d991;--s-orange:#ff9d23;--s-red:#ff4858;--s-purple:#a06cff;--s-teal:#37dbc8}body{background:radial-gradient(circle at 70% 0,#08233b 0,#020d1b 42%);color:var(--s-text);font:14px Inter,Segoe UI,sans-serif}.sentinel-shell{min-height:100vh;display:grid;grid-template-columns:240px 1fr}.sentinel-shell>aside{position:sticky;top:0;height:100vh;overflow:auto;background:linear-gradient(180deg,#031426,#051d31);border-right:1px solid #16374f;padding:14px 9px;display:flex;flex-direction:column}.sentinel-logo{display:flex;align-items:center;gap:12px;padding:0 15px 17px;border-bottom:1px solid #18384e}.sentinel-logo img{width:58px;height:58px}.sentinel-logo b{font-size:20px;white-space:nowrap}.sentinel-logo em{color:var(--s-blue);font-style:normal}.sentinel-logo span{display:block;margin-top:4px;color:#91b4d4;font-size:8px;letter-spacing:1.25px}.sentinel-shell nav{display:grid;gap:3px;margin-top:14px}.sentinel-shell nav button{position:relative;display:grid;grid-template-columns:38px 1fr auto;align-items:center;text-align:left;gap:5px;padding:10px 12px;border:1px solid transparent;border-radius:6px;background:transparent;color:#c4daf0}.sentinel-shell nav button:hover,.sentinel-shell nav button.active{background:linear-gradient(100deg,#0874d2,#0752ad);border-color:#188feb;color:white;box-shadow:0 6px 18px #0064c344}.sentinel-shell nav button span b,.sentinel-shell nav button span small{display:block}.sentinel-shell nav button span b{font-size:12px}.sentinel-shell nav button span small{margin-top:3px;font-size:9px;color:#83a5c4;font-weight:400}.sentinel-shell nav button.active span small{color:#a9d5fa}.sentinel-shell nav button>i{font-style:normal;background:var(--s-red);border-radius:9px;padding:2px 6px;font-size:9px}.brand-foot{margin-top:auto;text-align:center;padding:18px 5px 5px;color:#c6dcf2}.brand-foot .mountains{font-size:35px;line-height:25px;color:#77bfff;letter-spacing:-8px}.brand-foot>b{font-size:13px;letter-spacing:5px}.brand-foot small,.brand-foot em{display:block}.brand-foot small{font-size:6px;letter-spacing:1px;margin:6px 0 16px}.brand-foot em{font:italic 11px Georgia;line-height:1.5;color:#9abbd8}.sentinel-shell>main{min-width:0;display:flex;flex-direction:column}.topbar{height:80px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid #173349;background:#031426aa}.global-search{width:min(460px,40vw);height:40px;border:1px solid #1c4968;background:#071d31;border-radius:6px;display:flex;align-items:center;padding:0 13px;color:#8caeca}.global-search input{margin:0;padding:0 10px;border:0;background:transparent;color:white}.global-search kbd{font-size:8px;white-space:nowrap}.top-actions{display:flex;align-items:center;gap:12px}.top-actions button{position:relative;background:transparent;color:#cfe4f7;padding:7px}.top-actions button i{position:absolute;right:0;top:0;background:var(--s-red);font-size:8px;border-radius:10px;padding:2px 5px;font-style:normal}.top-actions .avatar,.avatar{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#1386ed,#1946aa);font-weight:700}.top-actions div b,.top-actions div small{display:block}.top-actions div small{font-size:10px;color:var(--s-muted);margin-top:4px}#view{padding:16px;min-height:calc(100vh - 124px)}.sentinel-shell footer{height:44px;border-top:1px solid #16374f;padding:14px 25px;font-size:9px;color:#83a7c5}.sentinel-shell footer span{float:right;color:#9dc0dd}.hero{height:92px;border:1px solid #15425f;border-left:4px solid var(--s-blue);border-radius:7px;padding:17px 20px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(90deg,#07192b 0,#092440bb 50%,#07192b 100%),radial-gradient(circle at 65%,#1b5375,#061627 55%);overflow:hidden}.hero h1{font-size:25px;margin:0 0 6px}.hero h1 span{color:white}.hero h1 em{font-style:normal;color:#00aaff}.hero p{margin:0;color:#b2c9dd}.hero-status{align-self:flex-start;display:flex;align-items:center;gap:20px;color:#b8d0e6;font-size:11px}.hero-status b{font-size:18px}.hero-status span{color:var(--s-green);font-weight:700}.kpi-grid{display:grid;gap:9px;margin-bottom:10px}.kpi-grid.six{grid-template-columns:repeat(6,1fr)}.kpi-grid.five{grid-template-columns:repeat(5,1fr)}.kpi-grid.four{grid-template-columns:repeat(4,1fr)}.ops-kpi{min-height:104px;display:flex;align-items:center;gap:14px;padding:14px;border:1px solid #17415e;border-radius:7px;background:linear-gradient(135deg,#072037,#071827);box-shadow:inset 0 0 30px #0876c00d}.ops-kpi .kpi-icon{color:var(--s-blue)}.ops-kpi b,.ops-kpi span,.ops-kpi small{display:block}.ops-kpi b{font-size:23px;color:var(--s-blue)}.ops-kpi span{font-size:11px;margin:2px 0 8px}.ops-kpi small{font-size:10px;color:var(--s-muted)}.ops-kpi.red{background:linear-gradient(135deg,#2a1825,#091827)}.ops-kpi.red .kpi-icon,.ops-kpi.red b{color:var(--s-red)}.ops-kpi.orange{background:linear-gradient(135deg,#292117,#091827)}.ops-kpi.orange .kpi-icon,.ops-kpi.orange b{color:var(--s-orange)}.ops-kpi.green{background:linear-gradient(135deg,#092a27,#091827)}.ops-kpi.green .kpi-icon,.ops-kpi.green b{color:var(--s-green)}.ops-kpi.purple .kpi-icon,.ops-kpi.purple b{color:var(--s-purple)}.ops-kpi.teal .kpi-icon,.ops-kpi.teal b{color:var(--s-teal)}.ops-kpi.muted .kpi-icon,.ops-kpi.muted b{color:#8ca7c4}.ops-panel{min-width:0;background:linear-gradient(180deg,#071d31,#051626);border:1px solid #17415e;border-radius:7px;padding:10px;margin-bottom:10px}.ops-panel>header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #16415e;padding:1px 3px 9px;margin-bottom:9px;background:none}.ops-panel>header h2{font-size:14px;margin:0;color:#eef8ff}.ops-panel>header button,.ops-panel>button{background:#0879dd;border:1px solid #199af5;border-radius:5px;color:#fff;padding:8px 12px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,2.1fr) minmax(300px,.9fr);gap:10px}.home-map{height:300px;border-radius:5px;background:#08213a}.sites-map{height:660px;border-radius:5px}.leaflet-container{font:12px Inter;background:#071827}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#071d31;color:white}.leaflet-control-attribution{font-size:8px!important}.map-note{font-size:9px;color:var(--s-muted);margin-top:7px}.service-list>div{display:grid;grid-template-columns:12px 1fr auto;align-items:center;border-bottom:1px solid #12344b;padding:9px 3px;font-size:10px}.service-list em{font-style:normal;color:var(--s-green)}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;background:#7696b7}.dot.ok{background:var(--s-green);box-shadow:0 0 8px #17d99166}.dot.warn{background:var(--s-orange)}.dot.bad{background:var(--s-red)}.dot.blue{background:var(--s-blue)}.activity-list>div{display:flex;gap:10px;border-bottom:1px solid #12344b;padding:9px 3px;color:var(--s-green)}.activity-list b,.activity-list small{display:block;color:#d8eafa}.activity-list b{font-size:10px;text-transform:capitalize}.activity-list small{font-size:8px;color:var(--s-muted);margin-top:3px}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.quick-grid button{min-height:65px;background:#092139;border:1px solid #1a4665;color:white;display:flex;align-items:center;justify-content:center;gap:7px}.ops-table>div{display:grid;grid-template-columns:10px 100px 1fr 1fr 1.5fr 110px;gap:8px;align-items:center;padding:9px 4px;border-bottom:1px solid #12364e;font-size:9px;cursor:pointer}.ops-table>div:hover{background:#0a2944}.ops-table time,.ops-table span{color:#9fbbd3}.ops-table em{font-style:normal}.status-badge{display:inline-block;border-radius:5px;padding:5px 7px;background:#0b4b36;color:var(--s-green);font-size:8px;white-space:nowrap}.status-badge.bad{background:#4a1822;color:#ff6b78}.status-badge.warn{background:#493315;color:#ffb147}.status-badge.blue{background:#0a3c6a;color:#42b4ff}.filterbar{display:flex;gap:7px;margin-bottom:8px}.filterbar button{background:#0a2944;border:1px solid #1c5274}.filterbar button.active{background:#0879dd}.filterbar input{margin:0;background:#061a2d;border-color:#1c4d6c;color:white}.split-layout{display:grid;grid-template-columns:1.05fr 1.45fr;gap:10px}.client-list{display:grid}.client-list button{display:grid;grid-template-columns:42px 1fr 95px 110px;align-items:center;gap:10px;text-align:left;background:transparent;border-bottom:1px solid #12364e;border-radius:0;color:white}.client-list button:hover{background:#0a2944}.client-avatar{width:32px;height:32px;border-radius:5px;background:#143759;display:grid;place-items:center}.client-list small{color:var(--s-muted)}.client-summary{display:grid;grid-template-columns:1.4fr 1fr;gap:10px}.client-summary dl,.detail-grid dl{display:grid;grid-template-columns:100px 1fr;gap:8px;margin:0}.client-summary dt,.detail-grid dt{color:var(--s-muted);font-size:9px}.client-summary dd,.detail-grid dd{margin:0;font-size:10px}.mini-kpis{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mini-kpis>b{font-size:24px;text-align:center;padding:18px 8px;background:#092139;border:1px solid #164765;color:var(--s-blue)}.mini-kpis small{display:block;font-size:8px;color:var(--s-muted)}.device-mini-list>div,.user-list>div{display:grid;grid-template-columns:12px 1fr 2fr;gap:8px;padding:8px 2px;border-bottom:1px solid #12364e}.device-mini-list small{color:var(--s-muted)}.map-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr);gap:10px}.site-list{max-height:660px;overflow:auto}.site-list button{width:100%;display:grid;grid-template-columns:12px 1fr 1.2fr auto;text-align:left;gap:9px;align-items:center;background:transparent;border-bottom:1px solid #12364e;border-radius:0;color:white}.site-list button:hover{background:#0a2944}.site-list small{color:var(--s-muted)}.site-list em{font-style:normal;color:var(--s-blue);font-size:9px}.device-table{display:grid}.device-table button{display:grid;grid-template-columns:12px 1fr .5fr 1.4fr 1fr 155px;gap:9px;align-items:center;text-align:left;background:transparent;border-bottom:1px solid #12364e;border-radius:0;color:white}.device-table button:hover{background:#0b3151}.mail-grid{display:grid;grid-template-columns:330px 1fr;gap:10px}.push-control{text-align:center;padding:20px}.push-control button{display:block;width:100%;margin-top:8px}.charts-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.bar-chart{height:230px;display:flex;align-items:flex-end;gap:6px;padding:25px 5px 32px;border-left:1px solid #16415e;border-bottom:1px solid #16415e}.bar-chart>div{height:100%;flex:1;display:flex;justify-content:flex-end;flex-direction:column;align-items:center;position:relative}.bar-chart span{width:60%;min-width:9px;max-width:28px;background:linear-gradient(#1dacff,#0879dd);border-radius:3px 3px 0 0}.bar-chart small{position:absolute;top:calc(100% + 6px);font-size:7px;color:var(--s-muted);max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-chart b{font-size:8px;margin-bottom:3px}.user-list>div{grid-template-columns:50px 1fr 1fr 130px;align-items:center}.info-box,.error-box{padding:14px;border:1px solid #17608a;background:#082940;color:#a8d6f3;border-radius:5px}.error-box{border-color:#8a2430;background:#32131c;color:#ffadb6}.empty{text-align:center;color:var(--s-muted);padding:30px}.modal-backdrop{position:fixed;inset:0;background:#000b;display:grid;place-items:center;z-index:10000;padding:20px}.modal-backdrop>section{position:relative;width:min(720px,95vw);max-height:90vh;overflow:auto;background:#071d31;border:1px solid #1e5e84;border-radius:8px;padding:24px;box-shadow:0 30px 90px #000}.modal-close{position:absolute;right:12px;top:8px;background:transparent;font-size:24px}.modal-backdrop h2{margin-top:0}.modal-backdrop label{color:#aac4dc;margin:10px 0}.modal-backdrop input,.modal-backdrop select,.modal-backdrop textarea{background:#041526;border:1px solid #1c4f70;color:white;width:100%;border-radius:5px;padding:10px;margin-top:5px}.modal-backdrop textarea{min-height:90px}.modal-backdrop dl{display:grid;grid-template-columns:120px 1fr;gap:8px}.modal-backdrop dt{color:var(--s-muted)}.modal-backdrop dd{margin:0}.modal-actions{display:flex;gap:8px;margin-top:18px}.modal-actions button,.modal-backdrop form>button{background:#0879dd}.form-row,.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}body .settings-grid .card{background:linear-gradient(180deg,#071d31,#051626);border-color:#17415e;color:white;box-shadow:none}body .settings-form input,body .settings-form select{background:#041526;border-color:#1c4f70;color:white}body .supervision-status{background:#2b2515;border-color:#715421;color:#ffe1a3}body #toast{background:#0977d1;color:white;z-index:20000}
@media(max-width:1250px){.kpi-grid.six{grid-template-columns:repeat(3,1fr)}.charts-grid{grid-template-columns:1fr}.dashboard-grid,.map-layout{grid-template-columns:1fr}.sites-map{height:500px}}@media(max-width:900px){.sentinel-shell{grid-template-columns:75px 1fr}.sentinel-logo div,.sentinel-shell nav button span,.sentinel-shell nav button>i,.brand-foot{display:none}.sentinel-logo{padding:4px}.sentinel-logo img{width:50px}.sentinel-shell nav button{display:grid;place-items:center;padding:12px}.kpi-grid.six,.kpi-grid.five,.kpi-grid.four{grid-template-columns:repeat(2,1fr)}.split-layout,.mail-grid{grid-template-columns:1fr}.hero-status{display:none}.top-actions>div{display:none}.ops-table>div{grid-template-columns:8px 80px 1fr 1fr}.ops-table>div span:nth-of-type(2),.ops-table>div em{display:none}}@media(max-width:600px){.sentinel-shell{display:block}.sentinel-shell>aside{position:fixed;left:0;right:0;bottom:0;top:auto;height:62px;z-index:100;overflow-x:auto;padding:4px;display:block}.sentinel-logo,.brand-foot{display:none}.sentinel-shell nav{display:flex;margin:0}.sentinel-shell nav button{min-width:52px}.sentinel-shell nav button:nth-child(n+7){display:none}.topbar{height:58px;padding:0 10px}.global-search{width:65vw}.global-search kbd{display:none}#view{padding:8px;padding-bottom:75px}.hero{height:auto;min-height:76px}.hero h1{font-size:20px}.hero p{font-size:10px}.kpi-grid.six,.kpi-grid.five,.kpi-grid.four{grid-template-columns:1fr 1fr}.ops-kpi{min-height:82px;padding:9px}.ops-kpi b{font-size:17px}.ops-kpi .kpi-icon{display:none}.quick-grid{grid-template-columns:1fr}.client-summary,.form-row,.detail-grid{grid-template-columns:1fr}.device-table button{grid-template-columns:10px 1fr 1fr}.device-table button span:nth-of-type(n+2){display:none}.sentinel-shell footer{display:none}}

/* Structure commune fidèle aux onze maquettes Sentinel. */
@media(min-width:901px){
  .sentinel-shell>aside{overflow:visible;z-index:4}
  .sentinel-logo{position:relative;width:430px;height:66px;padding:0 18px 17px;gap:14px;z-index:5;background:linear-gradient(90deg,#031426 0,#031426 55%,#03142600 100%)}
  .sentinel-logo img{width:62px;height:62px;flex:0 0 62px}
  .sentinel-logo b{font-size:28px;line-height:1;font-weight:750;letter-spacing:-.7px}
  .sentinel-logo span{font-size:10px;letter-spacing:1.35px;margin-top:7px}
  .topbar{padding-left:340px}
  .global-search{width:430px}
  .sentinel-shell nav button span b{font-size:14px;font-weight:500}
  .sentinel-shell nav button span small{font-size:10px}
}
.brand-foot .mountains{display:block;width:210px;height:62px;margin:0 auto -2px;fill:none;stroke:#8fc7ff;stroke-width:1.15}
.hero{background:linear-gradient(90deg,#07192b 0,#07192bea 34%,#07192b22 62%,#07192bea 100%),url('/assets/banner-camera.jpg') center/cover no-repeat}
.high-contrast{--s-bg:#000;--s-panel:#00182b;--s-panel2:#002441;--s-line:#3faeea;--s-text:#fff;--s-muted:#c5def1}.high-contrast .ops-panel,.high-contrast .ops-kpi{border-color:#3faeea}.high-contrast .sentinel-shell>aside{border-color:#3faeea}

/* Figma V4 — grille native 1536 × 1024 et assets officiels. */
@media(min-width:901px){
  html,body,#app{height:100%;margin:0;overflow:hidden}
  body{font-family:"IBM Plex Sans","Segoe UI",sans-serif;background:linear-gradient(180deg,#071321 0%,#04101d 50%,#06121f 100%)}
  .sentinel-shell{height:100vh;min-height:0;grid-template-columns:238px minmax(0,1fr)}
  .sentinel-shell>aside{position:relative;width:238px;height:100vh;box-sizing:border-box;padding:0 8px;background:linear-gradient(90deg,#0e1c2e 0%,#0a1828 100%);border-right:1px solid rgba(23,59,85,.25);overflow:visible}
  .sentinel-logo{height:81px;width:410px;box-sizing:border-box;padding:0;border-bottom:1px solid #18384e;background:linear-gradient(90deg,#081727 0 58%,rgba(8,23,39,0) 100%);display:block}
  .sentinel-logo img{position:absolute;left:12px;top:4px;width:390px;height:73px;object-fit:contain;object-position:left center}
  .sentinel-shell nav{gap:0;margin-top:22px}
  .sentinel-shell nav button{height:52px;margin-bottom:10px;grid-template-columns:42px 1fr auto;gap:10px;padding:5px 9px 5px 10px;border-radius:7px;color:#d1e4f8}
  .sentinel-shell nav button .figma-icon{width:34px;height:34px;object-fit:contain}
  .sentinel-shell nav button:hover,.sentinel-shell nav button.active{background:linear-gradient(90deg,#0f5da7 0%,#07468a 100%);border-color:rgba(32,175,255,.55);box-shadow:0 0 10px rgba(7,140,255,.25)}
  .sentinel-shell nav button span b{font-size:14px;font-weight:500;letter-spacing:-.25px;line-height:17px}
  .sentinel-shell nav button span small{font-size:11px;line-height:14px;margin-top:4px;color:#82a4c2}
  .sentinel-shell nav button.active span small{color:#a9d4ff}
  .sentinel-shell nav button>i{min-width:28px;text-align:center;border-radius:10px;padding:3px 5px;font-size:11px}
  .brand-foot{position:absolute;left:13px;right:13px;bottom:16px;height:184px;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
  .brand-foot>img{width:214px;height:95px;object-fit:contain;margin-bottom:7px}
  .brand-foot em{font-family:Georgia,serif;font-size:13px;line-height:20px;color:#b6d4ed;margin-bottom:22px}
  .brand-foot small{align-self:flex-start;margin:0;color:#82a4c2;font-size:9px;letter-spacing:0}
  .sentinel-shell>main{height:100vh;min-height:0;overflow:hidden;background:linear-gradient(180deg,#071321 0%,#04101d 50%,#06121f 100%)}
  .topbar{height:80px;min-height:80px;box-sizing:border-box;padding:0 21px 0 343px;background:rgba(4,15,27,.82);border-bottom:1px solid rgba(29,73,104,.35)}
  .global-search{width:430px;height:38px;box-sizing:border-box;border-color:#234966;background:#0a1b2c;padding:0 12px}
  .global-search>img{width:18px;height:18px}
  .global-search input{font-size:12px;color:#b8cee2;padding-left:12px}
  .global-search kbd{margin-left:auto;color:#9db8d1;font-size:8px}
  .top-actions{gap:13px;height:100%}
  .top-actions>img,.top-actions button>img{display:block;width:22px;height:22px;object-fit:contain}
  .top-actions .moon-icon{width:19px;height:19px}
  .top-actions button{padding:7px;border:0;background:transparent}
  .top-actions button i{right:-2px;top:0;min-width:17px;text-align:center;border-radius:9px;padding:2px 4px;font-size:8px}
  .top-actions .avatar{width:42px;height:42px;background:#0759b5;font-size:13px}
  .top-actions div b{font-size:13px;font-weight:600}
  .top-actions div small{font-size:10px;margin-top:3px;color:#a3bad0}
  #logout img{width:13px;height:13px}
  #view{height:calc(100vh - 122px);min-height:0;box-sizing:border-box;margin-top:0;padding:17px;overflow:auto;scrollbar-width:thin;scrollbar-color:#24516e transparent}
  .sentinel-shell footer{height:42px;min-height:42px;box-sizing:border-box;padding:13px 26px;background:#091625;border-top:1px solid #1d4968;font-size:9px}
  .hero{height:91px;box-sizing:border-box;margin:0 0 10px;padding:15px 20px;border:1px solid rgba(29,73,104,.7);border-left:3px solid #00a8ff;border-radius:8px;background:linear-gradient(90deg,#07192b 0%,rgba(7,25,43,.87) 31%,rgba(7,25,43,.05) 64%,#07192b 100%),url('/assets/figma/hero-camera.png') center/cover no-repeat}
  .hero h1{font-family:"Roboto Condensed","Arial Narrow",sans-serif;font-size:28px;line-height:34px;margin:0 0 1px;font-weight:700;letter-spacing:-.35px}
  .hero p{font-size:14px;color:#b2c9dd}
  .hero-status{gap:20px;margin-top:-6px;font-size:11px;align-self:flex-start}
  .hero-status b{font-size:18px}
  .kpi-grid{gap:8px;margin-bottom:12px}
  .ops-kpi{height:105px;min-height:105px;box-sizing:border-box;padding:13px 14px;gap:12px;border-color:#173b55;border-radius:8px;background:linear-gradient(135deg,#0b1c2c,#071827)}
  .ops-kpi .kpi-icon{width:43px;min-width:43px;height:46px;display:grid;place-items:center}
  .ops-kpi .kpi-icon img{max-width:43px;max-height:46px;object-fit:contain}
  .ops-kpi span{font-size:10px;line-height:14px;margin:0 0 2px;color:#eef7ff}
  .ops-kpi b{font-family:"Roboto Condensed","Arial Narrow",sans-serif;font-size:27px;line-height:30px}
  .ops-kpi small{font-size:10px;line-height:14px;margin-top:2px}
  .ops-kpi.red{background:linear-gradient(135deg,#291824,#0b1725)}
  .ops-kpi.orange{background:linear-gradient(135deg,#282116,#0b1826)}
  .ops-kpi.green{background:linear-gradient(135deg,#082723,#0a1926)}
  .ops-panel{box-sizing:border-box;margin:0;padding:10px;border-color:rgba(29,73,104,.72);border-radius:8px;background:linear-gradient(180deg,#0b1c2c,#061320)}
  .ops-panel>header{height:33px;box-sizing:border-box;margin:0 0 9px;padding:0 2px 8px;border-color:#1d4968}
  .ops-panel>header h2{font-family:"Roboto Condensed","Arial Narrow",sans-serif;font-size:14px;letter-spacing:.2px}
  .ops-panel>header button{border:0;background:transparent;color:#20b7ff;padding:3px;font-size:10px}
  .home-operations{height:652px;display:grid;grid-template-columns:minmax(0,1.82fr) minmax(0,1fr) minmax(0,.69fr);gap:14px}
  .home-primary,.home-secondary,.home-tertiary{min-width:0;display:grid;gap:10px}
  .home-primary{grid-template-rows:434px 204px}
  .home-secondary{grid-template-rows:261px 377px}
  .home-tertiary{grid-template-rows:261px 253px 116px}
  .home-map-panel{position:relative}
  .home-map-panel .map-tools{position:absolute;z-index:500;right:56px;top:43px;display:flex;background:#07192b;border:1px solid #1e5273;border-radius:5px;overflow:hidden}
  .home-map-panel .map-tools button{height:29px;min-width:58px;border:0;border-right:1px solid #1e5273;border-radius:0;background:#07192b;color:#cbe1f4;font-size:9px;padding:0 9px}
  .home-map-panel .map-tools button:first-child{background:#0874cf;color:white}
  .home-map{height:379px;border-radius:5px;overflow:hidden}
  .home-map-panel .map-note{position:absolute;left:20px;bottom:12px;z-index:500;margin:0;padding:5px 8px;background:rgba(3,15,26,.82);border-radius:4px}
  .home-alerts .ops-table>div{grid-template-columns:9px 53px 1fr .8fr 1.05fr 10px;gap:5px;height:40px;box-sizing:border-box;padding:4px 2px}
  .home-alerts .status-badge{width:8px;height:8px;overflow:hidden;padding:0;border-radius:50%;font-size:0;background:var(--s-red)}
  .home-activity .activity-list>div{height:49px;box-sizing:border-box;padding:6px 2px;align-items:center}
  .home-activity .activity-list .svg-icon{width:29px;height:29px;object-fit:contain}
  .home-services .service-list>div{height:32px;box-sizing:border-box;padding:4px 3px;font-size:9px}
  .home-actions .quick-grid{gap:8px}
  .home-actions .quick-grid button{height:63px;min-height:63px;padding:5px 3px;flex-direction:column;gap:1px;border-color:#182d42;border-radius:7px;background:linear-gradient(180deg,#122335,#122133);font-size:9px}
  .home-actions .quick-grid button img{width:34px;height:32px;object-fit:contain}
  .camera-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
  .camera-preview{min-width:0;padding:0!important;border:0!important;background:transparent!important;color:#eef7ff!important;text-align:left!important}
  .camera-preview .camera-image{position:relative;display:block;height:103px;background-size:cover;background-position:center;border-radius:5px;border:1px solid #1d4968}
  .camera-preview .camera-image i{position:absolute;right:5px;top:5px;padding:3px 6px;border-radius:4px;background:#076a4a;color:#a6ffe0;font-size:8px;font-style:normal}
  .camera-preview .camera-image i.warn{background:#5a3d13;color:#ffc875}
  .camera-preview b,.camera-preview small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .camera-preview b{font-size:10px;margin-top:6px;font-weight:500}
  .camera-preview small{font-size:9px;color:#91aac2;margin-top:3px}
  .home-promo{position:relative;overflow:hidden;border:1px solid rgba(29,73,104,.65);border-radius:8px;background:linear-gradient(90deg,#0b3151,#082139);padding:9px 14px}
  .home-promo .promo-camera{position:absolute;right:0;top:0;width:95px;height:116px;object-fit:cover}
  .home-promo .promo-logo{position:relative;z-index:2;width:92px;height:34px;object-fit:contain}
  .home-promo p{position:relative;z-index:2;margin:1px 0 7px;font-size:9px;line-height:12px}
  .home-promo button{position:relative;z-index:2;height:24px;padding:0 7px;border:1px solid #209dff;border-radius:5px;background:#0867ba;color:white;font-size:8px}
  .figma-icon{object-fit:contain}
}

@media(min-width:901px) and (max-height:900px){
  #view{overflow:auto}
  .home-operations{height:652px}
  .sentinel-shell>aside{overflow-y:auto;overflow-x:hidden}
  .brand-foot{display:none}
}

@font-face{font-family:"IBM Plex Sans";src:url('/assets/fonts/ibm-plex-sans-400.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url('/assets/fonts/ibm-plex-sans-500.ttf') format('truetype');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url('/assets/fonts/ibm-plex-sans-600.ttf') format('truetype');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url('/assets/fonts/ibm-plex-sans-700.ttf') format('truetype');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Roboto Condensed";src:url('/assets/fonts/roboto-condensed-400.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Roboto Condensed";src:url('/assets/fonts/roboto-condensed-500.ttf') format('truetype');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Roboto Condensed";src:url('/assets/fonts/roboto-condensed-600.ttf') format('truetype');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Roboto Condensed";src:url('/assets/fonts/roboto-condensed-700.ttf') format('truetype');font-weight:700;font-style:normal;font-display:swap}

/* Figma V4 — vues métier : composants natifs, redimensionnables et alimentés par l'API. */
.view-tabs{display:flex;min-height:39px;gap:4px;margin:0 0 10px;border-bottom:1px solid #17415e}.view-tabs button{min-width:120px;padding:9px 14px;border:1px solid #17415e;border-bottom:0;border-radius:6px 6px 0 0;background:#091c2e;color:#c2d8eb;font-size:10px}.view-tabs button.active{background:linear-gradient(180deg,#087de3,#0757ae);border-color:#139cff;color:#fff}.workspace-card,.map-workspace{box-sizing:border-box;margin-bottom:10px;border:1px solid #17415e;border-radius:8px;background:linear-gradient(180deg,#081c2e,#051522);overflow:hidden}.workspace-card{padding:8px}.workspace-filters,.workspace-title{display:flex;align-items:center;gap:8px;margin-bottom:8px}.workspace-filters input,.workspace-title input,.reports-side select{height:36px;margin:0;padding:0 12px;border:1px solid #20506f;border-radius:5px;background:#06192a;color:#d9ecfc}.workspace-filters input,.workspace-title input{flex:1}.workspace-filters button,.workspace-title button,.detail-actions button,.reports-side button,.settings-workspace button{height:36px;padding:0 14px;border:1px solid #178ce8;border-radius:5px;background:#0877d5;color:#fff}.workspace-title h2{font:600 15px "Roboto Condensed",sans-serif;margin:0 auto 0 4px}.incidents-columns,.device-columns,.clients-columns,.users-columns{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(360px,.75fr);gap:10px}.figma-table,.device-table-figma,.user-table{min-width:0;border:1px solid #123a55;border-radius:6px;overflow:hidden}.figma-row,.device-table-figma>button,.user-table>button{width:100%;min-height:39px;display:grid;align-items:center;gap:7px;padding:5px 8px;border:0;border-bottom:1px solid #123a55;border-radius:0;background:#07192a;color:#d9eaf7;text-align:left;font-size:9px}.figma-row{grid-template-columns:10px 86px 1fr .75fr 1.1fr 88px 20px}.device-table-figma>button{grid-template-columns:10px .75fr .55fr 1.15fr .85fr .8fr 20px}.user-table>button{grid-template-columns:38px 1.2fr .8fr 1fr 95px 22px}.figma-row:hover,.figma-row.selected,.device-table-figma>button:hover,.device-table-figma>button.selected,.client-list button.selected,.site-list button.selected,.user-table>button.selected{background:linear-gradient(90deg,#084e91,#0861b8);color:#fff}.figma-row small,.device-table-figma small{display:block;color:#8cabc5}.figma-row i,.device-table-figma i,.user-table i{font-style:normal;text-align:center}.incidents-columns>aside,.device-columns>aside,.clients-columns>aside,.users-columns>aside,.map-side{min-width:0;border:1px solid #17415e;border-radius:7px;background:#071b2c;padding:10px}.detail-hero{display:flex;align-items:center;gap:10px;min-height:48px;margin-bottom:8px}.detail-hero>div{min-width:0;flex:1}.detail-hero h2{margin:0;font:600 18px "Roboto Condensed",sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-hero small{display:block;margin-top:3px;color:#97b5ce;font-size:9px}.detail-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#0a4877;color:#35baff;font:bold 22px sans-serif}.detail-icon.red{background:#581923;color:#ff5260}.incident-visual,.device-overview,.client-overview{display:grid;grid-template-columns:42% 1fr;gap:10px}.incident-visual img,.device-overview img{width:100%;height:145px;object-fit:cover;border:1px solid #1b4865;border-radius:5px}.incident-visual dl,.device-overview dl,.client-overview dl,.map-client-dl{display:grid;grid-template-columns:90px 1fr;gap:6px;margin:0;font-size:9px}.incident-visual dt,.device-overview dt,.client-overview dt,.map-client-dl dt{color:#86a8c5}.incident-visual dd,.device-overview dd,.client-overview dd,.map-client-dl dd{margin:0;color:#e1f1fc}.detail-copy{min-height:40px;margin:10px 0;padding:8px;border:1px solid #123a55;border-radius:5px;color:#a9c3d9}.detail-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.detail-actions button{flex:1;min-width:110px;height:32px;font-size:9px}.detail-actions button:nth-last-child(1){background:#102a40;border-color:#28536e}.camera-mini-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:9px}.camera-mini-grid div{font-size:8px;color:#a9c2d8}.camera-mini-grid img{display:block;width:100%;height:58px;object-fit:cover;border-radius:4px;border:1px solid #17415e}.analytics-grid{display:grid;gap:10px;margin-bottom:10px}.analytics-grid.two{grid-template-columns:repeat(2,1fr)}.analytics-grid.three{grid-template-columns:repeat(3,1fr)}.analytics-grid.four{grid-template-columns:repeat(4,1fr)}.analytics-grid>section>.ops-panel{height:100%}.analytics-grid.compact .bar-chart,.reports-charts .bar-chart{height:120px}.donut-wrap{min-height:118px;display:flex;align-items:center;justify-content:center;gap:20px}.donut{--a:33%;--b:66%;width:92px;height:92px;display:grid;place-items:center;position:relative;border-radius:50%;background:conic-gradient(#ff4858 0 var(--a),#ff9d23 var(--a) var(--b),#17d991 var(--b) 100%)}.donut:after{content:"";position:absolute;inset:15px;border-radius:50%;background:#071827}.donut b,.donut small{position:absolute;z-index:1}.donut b{font:600 20px "Roboto Condensed",sans-serif}.donut small{margin-top:28px;color:#8eabc3;font-size:8px}.donut-legend{display:grid;gap:7px;font-size:9px}.donut-legend span{display:flex;align-items:center;gap:6px}.donut-legend i{width:8px;height:8px;border-radius:50%;background:#17d991}.donut-legend i.red{background:#ff4858}.donut-legend i.orange{background:#ff9d23}.rank-list{display:grid;gap:7px;padding:5px}.rank-list>div{display:grid;grid-template-columns:20px minmax(80px,1fr) 1.5fr 25px;align-items:center;gap:7px;font-size:9px}.rank-list>div>b{width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:#15344d}.rank-list>div>i{height:7px;border-radius:4px;background:#102c42;overflow:hidden}.rank-list>div>i em{display:block;height:100%;background:linear-gradient(90deg,#109cff,#17d991)}.pagination{display:flex;justify-content:space-between;padding:9px;color:#8baac3;font-size:8px}.authorization-flow{margin-top:9px;padding:10px;border:1px solid #176349;border-radius:6px;background:#082a24}.authorization-flow>div{display:flex;align-items:center;margin:8px 0}.authorization-flow span{width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:#17d991;color:#03241a;font-weight:bold}.authorization-flow i{height:2px;flex:1;background:#17d991}.authorization-flow small{color:#9fd8c4}.client-list button{grid-template-columns:38px 1.2fr .75fr .75fr 88px;min-height:43px;padding:5px 8px}.client-list .client-avatar,.user-table .avatar{width:30px;height:30px}.client-photo{min-height:118px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #17415e;border-radius:5px;background:linear-gradient(135deg,#0a2741,#071522);color:#31b6ff}.client-photo b{font-size:24px}.client-photo small{color:#9ab7cd}.mini-kpis.four{grid-template-columns:repeat(4,1fr);margin-top:9px}.mini-kpis.four>b{font-size:18px;padding:10px 5px}.client-lower{display:grid;grid-template-columns:1.5fr .7fr;gap:8px;margin-top:9px}.client-lower section{border:1px solid #17415e;border-radius:6px;padding:8px}.client-lower h3{margin:0 0 6px;font-size:11px}.client-actions button{display:block;width:100%;margin-top:6px;padding:7px;background:#0b3150;border:1px solid #245674;color:#fff}.map-workspace{height:666px;display:grid;grid-template-columns:minmax(0,1.75fr) minmax(340px,.92fr);gap:8px;padding:0}.map-main{position:relative;min-width:0}.map-workspace .sites-map{height:664px}.map-switch{position:absolute;left:12px;top:12px;z-index:500;display:flex}.map-switch button{height:32px;padding:0 20px;background:#091a2b;border:1px solid #1e587a;color:#d0e5f5}.map-switch button.active{background:#0876d1}.map-legend{position:absolute;left:12px;bottom:12px;z-index:500;display:grid;gap:4px;padding:8px;background:#061626e8;border:1px solid #17415e;border-radius:5px}.map-side{border:0;border-left:1px solid #17415e;border-radius:0;overflow:hidden}.map-side .site-list{height:410px;max-height:none}.map-side .site-list button{min-height:47px;grid-template-columns:10px 1fr 1.5fr auto}.map-side #mapClientDetail{margin-top:9px;padding-top:9px;border-top:1px solid #17415e}.map-kpis{margin-top:0}.mail-overview{display:grid;grid-template-columns:.9fr .75fr 1.4fr;gap:10px;margin-bottom:10px}.config-lines>div,.user-permissions>div{min-height:31px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #12364e;font-size:9px}.config-lines span,.user-permissions span{color:#a5bfd5}.config-lines b{font-weight:500}.big-state{min-height:90px;display:grid;grid-template-columns:45px 1fr;align-content:center;color:#ffae37}.big-state .svg-icon{grid-row:1/3}.big-state b{font:600 24px "Roboto Condensed"}.big-state span{color:#aec5d9}.big-state.green{color:#17d991}.notifications-layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:10px}.notifications-side .ops-panel{margin-bottom:10px}.phone-preview{height:240px;display:flex;align-items:flex-start;justify-content:center;padding:22px 16px;border:7px solid #1a2c40;border-radius:28px;background:linear-gradient(#285082,#111b2b)}.phone-preview>div{width:100%;display:grid;gap:6px;margin-top:45px;padding:12px;border:1px solid #6f8ca8;border-radius:12px;background:#243b58dd}.phone-preview time{font-size:25px;text-align:center}.reports-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:10px}.reports-side .ops-panel{margin-bottom:10px}.reports-side label{display:grid;gap:5px;margin:10px 0;color:#a7c1d7;font-size:9px}.reports-side select{width:100%}.reports-side button{width:100%}.report-table>div{min-height:38px;display:grid;grid-template-columns:25px 1.5fr .7fr 1fr 80px 28px;gap:8px;align-items:center;padding:4px 6px;border-bottom:1px solid #12364e;font-size:9px}.report-table button{background:transparent;color:#63bfff}.users-columns{grid-template-columns:minmax(0,1fr) 285px}.users-workspace .analytics-grid{margin-top:10px}.user-permissions b{width:18px;height:18px;display:grid;place-items:center;border-radius:4px;background:#087cdd;color:#fff}.settings-workspace>.settings-intro{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}.brand-setting img,.about-setting img{display:block;max-width:250px;height:58px;object-fit:contain;object-position:left}.brand-setting>div{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #12364e}.legacy-settings .settings-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.legacy-settings .settings-grid .card{margin:0;min-width:0;border-radius:7px}.settings-intro.bottom{margin-top:10px}.about-setting p{color:#a6c0d5;line-height:1.5}

@media(min-width:901px){.page-kpis .ops-kpi{height:90px;min-height:90px}.page-kpis .ops-kpi .kpi-icon{height:39px}.page-kpis .ops-kpi .kpi-icon img{max-height:39px}.page-kpis .ops-kpi b{font-size:24px}.clients-workspace,.users-workspace{min-height:550px}.incidents-workspace,.device-workspace,.dolynk-workspace{min-height:450px}}
@media(max-width:1200px){.incidents-columns,.device-columns,.clients-columns,.users-columns,.notifications-layout,.reports-layout,.map-workspace{grid-template-columns:1fr}.mail-overview,.settings-workspace>.settings-intro,.legacy-settings .settings-grid{grid-template-columns:1fr}.analytics-grid.three,.analytics-grid.four{grid-template-columns:repeat(2,1fr)}.map-workspace{height:auto}.map-workspace .sites-map{height:500px}}
