:root{--navy: #1b2f74;--navy-2: #24409a;--navy-d: #152860;--bg: #eef1f6;--card: #ffffff;--line: #e4e9f1;--txt: #1f2a3d;--muted: #7b8699;--vert: #16a34a;--vert-bg: #dcfce7;--vert-tx: #166534;--orange: #d97706;--orange-bg: #fef3c7;--orange-tx: #92400e;--rouge: #dc2626;--rouge-bg: #fee2e2;--rouge-tx: #991b1b;--gris: #64748b;--gris-bg: #e6eaf0;--gris-tx: #475569}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--txt);-webkit-font-smoothing:antialiased}.wm{display:flex;align-items:center;gap:10px}.wm .wm-ico{display:inline-flex}.wm .wm-txt{display:flex;flex-direction:column;line-height:1.05}.wm .wm-txt b{font-weight:800;letter-spacing:.6px;font-size:18px}.wm .wm-txt small{font-size:11px;opacity:.8}.wm.light{color:#fff}.wm.dark{color:var(--navy)}.app{display:flex;height:100vh;overflow:hidden}.side{width:230px;background:linear-gradient(180deg,var(--navy),var(--navy-d));color:#fff;display:flex;flex-direction:column;padding:18px 14px;flex-shrink:0}.side-logo{padding:2px 6px 18px;border-bottom:1px solid rgba(255,255,255,.12)}.side nav{display:flex;flex-direction:column;gap:4px;margin-top:14px;flex:1}.side nav button{display:flex;align-items:center;gap:10px;background:none;border:none;color:#c7d2ea;font:inherit;font-weight:600;text-align:left;padding:11px 12px;border-radius:10px;cursor:pointer}.side nav button:hover{background:#ffffff14;color:#fff}.side nav button.on{background:var(--navy-2);color:#fff}.side nav button.off{opacity:.4;cursor:default}.nav-badge{margin-left:auto;background:var(--orange);color:#fff;font-size:11px;font-weight:800;min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center}.nav-badge.crit{background:var(--rouge)}.alert-ok{display:flex;align-items:center;gap:10px;background:var(--vert-bg);color:var(--vert-tx);border:1px solid #bbf0cb;border-radius:14px;padding:16px 18px;font-weight:600}.alert-ok span{width:26px;height:26px;border-radius:50%;background:var(--vert);color:#fff;display:grid;place-items:center;font-weight:800;flex:none}.esc{color:var(--orange-tx);background:var(--orange-bg);padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.tbl tbody tr.sub-row{background:#f6f8fc}.tbl tbody tr.sub-row>td{padding:10px 14px}.tbl.inner{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden}.tbl.inner thead th{background:#eef3fb;font-size:11px;padding:8px 12px}.tbl.inner td{padding:7px 12px}.side-user{display:flex;align-items:center;gap:10px;padding:12px 8px;border-top:1px solid rgba(255,255,255,.12)}.side-user .av{width:38px;height:38px;border-radius:50%;background:var(--navy-2);display:grid;place-items:center;font-weight:800}.side-user b{display:block;font-size:14px}.side-user small{color:#9fb0d6;font-size:12px}.side-out{margin-top:10px;background:#dc262626;color:#ffb3ab;border:1px solid rgba(220,38,38,.4);border-radius:10px;padding:9px;font-weight:700;cursor:pointer}.main{flex:1;overflow:auto;display:flex;flex-direction:column}.top{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:4}.top-title h1{margin:0;font-size:22px;color:var(--navy)}.top-title h1 span{color:var(--muted);font-weight:600;font-size:15px}.top-title p{margin:2px 0 0;color:var(--muted);font-size:12px;letter-spacing:1px;text-transform:uppercase}.top-right{display:flex;align-items:center;gap:16px}.clock{text-align:right}.clock b{font-size:18px}.clock small{display:block;color:var(--muted);font-size:12px;text-transform:capitalize}.live{font-weight:700;font-size:13px;padding:5px 10px;border-radius:999px}.live.on{background:var(--vert-bg);color:var(--vert-tx)}.live.off{background:var(--gris-bg);color:var(--gris-tx)}.top-right select{padding:9px 12px;border-radius:10px;border:1px solid var(--line);font:inherit;font-weight:600;background:#fff}.kpibar{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;padding:18px 24px 4px}.kcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px;display:flex;align-items:center;gap:14px}.kc-badge{width:48px;height:48px;border-radius:13px;display:grid;place-items:center;flex:none}.kc-badge svg{width:26px;height:26px;fill:#fff}.kc-body{min-width:0}.kcard .kc-big{font-size:30px;font-weight:800;line-height:1.05}.kcard .kc-txt b{display:block;font-size:13.5px;font-weight:700}.kcard .kc-txt small{color:var(--muted);font-size:12px}.kcard.ok{background:var(--vert-bg);border-color:#bbf0cb}.kcard.ok .kc-badge{background:var(--vert)}.kcard.ok .kc-big,.kcard.ok .kc-txt b{color:var(--vert-tx)}.kcard.retard{background:var(--orange-bg);border-color:#f6dca0}.kcard.retard .kc-badge{background:var(--orange)}.kcard.retard .kc-big,.kcard.retard .kc-txt b{color:var(--orange-tx)}.kcard.crit{background:var(--rouge-bg);border-color:#f6c0c0}.kcard.crit .kc-badge{background:var(--rouge)}.kcard.crit .kc-big,.kcard.crit .kc-txt b{color:var(--rouge-tx)}.kcard.arret{background:var(--gris-bg);border-color:#cfd6e0}.kcard.arret .kc-badge{background:var(--gris)}.kcard.arret .kc-big,.kcard.arret .kc-txt b{color:var(--gris-tx)}.kcard.navy{background:#e9eefb;border-color:#cdd8f3}.kcard.navy .kc-badge{background:var(--navy)}.kcard.navy .kc-big,.kcard.navy .kc-txt b{color:var(--navy)}.statrow{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.content{padding:14px 24px 28px}.vide{color:var(--muted);padding:16px}.tblwrap{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.tbl{width:100%;border-collapse:collapse;font-size:14px}.sectabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.sectabs button{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;color:var(--txt);font-weight:600;font-size:13.5px;padding:7px 14px;border-radius:999px;cursor:pointer;transition:all .15s}.sectabs button span{background:#eef2f7;color:var(--muted);font-size:11.5px;font-weight:700;padding:1px 8px;border-radius:999px}.sectabs button:hover{border-color:var(--navy2)}.sectabs button.on{background:var(--navy);color:#fff;border-color:var(--navy)}.sectabs button.on span{background:#ffffff38;color:#fff}.tbl thead th{background:#eef3fb;color:var(--navy);text-align:left;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:12px 14px;border-bottom:1px solid var(--line)}.tbl th.n,.tbl td.n{text-align:right}.tbl tbody tr{border-bottom:1px solid var(--line);cursor:pointer}.tbl tbody tr:hover{background:#f8faff}.tbl td{padding:12px 14px}.tbl td.b{font-weight:800;color:var(--navy)}.tbl td.muted{color:var(--muted)}.tbl td.perf{font-weight:800;border-radius:0}.tbl td.perf.ok{background:var(--vert-bg);color:var(--vert-tx)}.tbl td.perf.retard{background:var(--orange-bg);color:var(--orange-tx)}.tbl td.perf.crit{background:var(--rouge-bg);color:var(--rouge-tx)}.tbl td.perf.arret,.tbl td.perf.inactif{color:var(--muted)}.retard-v{color:var(--rouge);font-weight:700}.pill{display:inline-flex;align-items:center;gap:7px;padding:4px 11px;border-radius:999px;font-weight:700;font-size:13px}.pill i{width:9px;height:9px;border-radius:50%;background:currentColor}.pill.ok{background:var(--vert-bg);color:var(--vert-tx)}.pill.retard{background:var(--orange-bg);color:var(--orange-tx)}.pill.crit{background:var(--rouge-bg);color:var(--rouge-tx)}.pill.arret{background:var(--gris-bg);color:var(--gris-tx)}.pill.inactif{background:#eef2f7;color:var(--muted)}.panel.fiche{width:880px;padding:0;overflow:hidden}.fh{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;border-bottom:1px solid var(--line);background:var(--surface2, #f6f8fc)}.fh-bc{font-size:15px}.fh-bc b{color:var(--navy);font-size:18px;font-family:inherit}.fh-right{display:flex;align-items:center;gap:12px}.ftop{display:grid;grid-template-columns:1.2fr auto 1.3fr;gap:22px;align-items:center;padding:20px 22px;border-bottom:1px solid var(--line)}.fprod{display:flex;gap:14px;align-items:flex-start;min-width:0}.fprod-ico{width:54px;height:54px;border-radius:14px;background:#e9eefb;color:var(--navy);display:grid;place-items:center;flex:none}.fprod-ico svg{width:30px;height:30px}.fprod-img{width:54px;height:54px;border-radius:14px;object-fit:cover;border:1px solid var(--line);flex:none}.fprod h2{margin:0 0 8px;color:var(--navy);font-size:18px}.fprod-meta{margin:0;display:flex;flex-direction:column;gap:4px}.fprod-meta div{display:flex;gap:8px;font-size:13px}.fprod-meta dt{color:var(--muted);min-width:92px}.fprod-meta dd{margin:0;font-weight:600}.ftiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ft{background:var(--surface2, #f6f8fc);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.ft b{display:block;font-size:20px;font-weight:800;color:var(--navy)}.ft small{color:var(--muted);font-size:12px}.ft.crit b{color:var(--rouge)}.ftabs{display:flex;gap:4px;padding:10px 22px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.ftabs button{border:none;background:transparent;color:var(--muted);font-weight:700;font-size:14px;padding:9px 14px;border-radius:10px 10px 0 0;cursor:pointer;display:inline-flex;align-items:center;gap:7px;border-bottom:2px solid transparent;margin-bottom:-1px}.ftabs button span{background:#eef2f7;color:var(--muted);font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px}.ftabs button.on{color:var(--navy);border-bottom-color:var(--navy)}.ftabs button.on span{background:var(--navy);color:#fff}.ftab-body{padding:18px 22px 22px;max-height:46vh;overflow:auto}.grille{display:flex;flex-direction:column;gap:22px}.sect h2{margin:0 0 10px;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.tile{text-align:left;border:none;border-radius:14px;padding:14px;cursor:pointer;color:#fff;display:flex;flex-direction:column;gap:6px;min-height:134px;box-shadow:0 2px 6px #14285014}.tile .t-top{display:flex;justify-content:space-between;align-items:center}.tile .t-code{font-size:22px;font-weight:800}.tile .t-alert{background:#00000038;padding:2px 8px;border-radius:999px;font-size:12px}.tile .t-prod{font-size:13px;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile .t-perf{font-size:36px;font-weight:800;line-height:1;margin-top:auto}.tile .t-foot{display:flex;justify-content:space-between;font-size:12px;opacity:.92}.tile.s-vert{background:var(--vert)}.tile.s-orange{background:var(--orange)}.tile.s-rouge{background:var(--rouge)}.tile.s-gris{background:var(--gris)}.tile.s-inactif{background:#fff;color:var(--muted);border:1px solid var(--line);box-shadow:none}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c142d8c;display:flex;align-items:center;justify-content:center;padding:20px;z-index:20}.panel{background:#fff;color:var(--txt);border-radius:16px;width:820px;max-width:100%;max-height:92vh;overflow:auto;padding:22px}.panel header{display:flex;justify-content:space-between;align-items:center}.panel h2{color:var(--navy);margin:0}.panel h2 small{color:var(--muted);font-weight:500;font-size:14px;margin-left:8px}.panel .x{background:#f1f4f9;border:none;width:34px;height:34px;border-radius:10px;font-size:18px;cursor:pointer}.dtop{display:flex;gap:22px;align-items:center;margin:16px 0}.gauge{width:130px;height:130px;flex-shrink:0}.g-val{font-size:26px;font-weight:800;fill:var(--navy)}.g-lbl{font-size:11px;fill:var(--muted)}.dstats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;flex:1}.ds{background:#f6f8fc;border-radius:12px;padding:12px}.ds b{font-size:20px}.ds small{color:var(--muted);display:block}.ds.crit b{color:var(--rouge)}.cols{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:8px}.cols h3{color:var(--muted);font-size:12px;text-transform:uppercase;margin:12px 0 4px}.li{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line)}.muted{color:var(--muted)}.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--navy-d),#0d1836);padding:20px}.login-card{background:#fff;border-radius:18px;padding:30px;width:400px;max-width:92%;box-shadow:0 24px 70px #00000073}.login-logo{display:flex;align-items:center;gap:14px;color:var(--navy);margin-bottom:22px}.login-logo .li-ico{background:var(--navy);color:#fff;width:64px;height:64px;border-radius:16px;display:grid;place-items:center}.login-logo b{display:block;font-size:24px;font-weight:800;letter-spacing:.5px}.login-logo small{color:var(--muted)}.login-card label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-top:10px}.login-card input{width:100%;font-size:16px;padding:13px;margin-top:5px;border:2px solid var(--line);border-radius:11px}.login-card input:focus{outline:none;border-color:var(--navy-2)}.login-card button{width:100%;font-size:17px;font-weight:700;padding:14px;border:none;border-radius:11px;background:var(--navy);color:#fff;cursor:pointer;margin-top:18px}.login-card button:hover{background:var(--navy-2)}.login-card button:disabled{opacity:.5}.login-card .hint{text-align:center;color:var(--muted);font-size:13px;margin:12px 0 0}.err{background:var(--rouge-bg);color:var(--rouge-tx);padding:10px 12px;border-radius:9px;margin-top:12px;font-size:14px}.tag-corr{background:var(--orange-bg);color:var(--orange-tx);font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;margin-left:8px}.btn-corr{background:var(--navy);color:#fff;border:none;border-radius:8px;padding:4px 10px;font-size:12px;font-weight:700;margin-left:10px;cursor:pointer}.corr{background:#f6f8fc;border:1px solid var(--line);border-radius:10px;padding:12px;margin:4px 0 10px}.corr-row{display:flex;gap:8px;margin-bottom:8px}.corr select,.corr input{font-size:14px;padding:9px 10px;border:1px solid var(--line);border-radius:8px}.corr input{flex:1;width:100%}.corr-act{display:flex;gap:8px;margin-top:8px}.corr-ok{background:var(--vert);color:#fff;border:none;border-radius:8px;padding:9px 14px;font-weight:700;cursor:pointer}.corr-ok:disabled{opacity:.5}.corr-no{background:#eef2f7;color:var(--txt);border:none;border-radius:8px;padding:9px 14px;font-weight:600;cursor:pointer}.err-s{background:var(--rouge-bg);color:var(--rouge-tx);padding:8px;border-radius:8px;font-size:13px;margin-bottom:6px}.rap-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 16px}.rap-bar label{font-size:13px;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:6px}.rap-bar input{border:1px solid var(--line);border-radius:8px;padding:7px 9px;font:inherit}.rap-btn{background:#eef2f7;color:var(--navy);border:none;border-radius:8px;padding:9px 14px;font-weight:700;cursor:pointer}.rap-btn.exp{background:var(--navy);color:#fff}.rap-btn.exp:hover{background:var(--navy-2)}.pertes{display:flex;flex-direction:column;gap:14px}.trsbar{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(90deg,var(--navy),var(--navy-2));color:#fff;border-radius:14px;padding:18px 24px}.trs-main{display:flex;flex-direction:column}.trs-v{font-size:46px;font-weight:800;line-height:1}.trs-l{font-size:13px;opacity:.85}.trs-sub{display:flex;gap:26px}.trs-sub div{text-align:center}.trs-sub b{font-size:24px}.trs-sub small{display:block;opacity:.85;font-size:12px}.trs-note{color:var(--muted);font-size:12px;margin:-6px 0 0}.perte-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.pk{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}.pk b{font-size:24px;display:block;color:var(--navy)}.pk small{color:var(--muted)}.perte-cols{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:14px;align-items:start}.pt-ttl{padding:12px 14px;font-weight:700;color:var(--navy);border-bottom:1px solid var(--line);background:#f6f8fc}@media(max-width:1100px){.kpibar{grid-template-columns:repeat(3,1fr)}.statrow{grid-template-columns:repeat(2,1fr)}.perte-cols{grid-template-columns:1fr}.perte-kpis{grid-template-columns:repeat(2,1fr)}.trsbar{flex-direction:column;align-items:flex-start;gap:12px}}@media(max-width:760px){.kpibar{grid-template-columns:repeat(2,1fr)}.statrow{grid-template-columns:1fr}.cols,.dstats{grid-template-columns:1fr 1fr}.ftop{grid-template-columns:1fr;gap:16px}}.adm{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.adm-tabs,.adm-subtabs{display:flex;gap:4px;flex-wrap:wrap;padding:10px 12px;background:#f6f8fc;border-bottom:1px solid var(--line)}.adm-subtabs{background:transparent;border:none;padding:0 0 12px}.adm-tabs button,.adm-subtabs button{border:1px solid transparent;background:transparent;color:var(--muted);font-weight:700;font-size:14px;padding:8px 14px;border-radius:9px;cursor:pointer}.adm-tabs button.on{background:var(--navy);color:#fff}.adm-subtabs button{background:#eef1f6;color:var(--navy)}.adm-subtabs button.on{background:var(--navy);color:#fff}.adm-body{padding:18px}.adm-sec{display:flex;flex-direction:column;gap:14px}.adm-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.adm-form select,.adm-form input{padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-size:14px;background:#fff;color:var(--txt)}.adm-form label{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--muted)}.adm-btn{background:var(--navy);color:#fff;border:none;border-radius:9px;padding:9px 16px;font-weight:700;font-size:14px;cursor:pointer}.adm-btn:disabled{opacity:.5;cursor:default}.btn-del{background:var(--rouge-bg);color:var(--rouge-tx);border:none;border-radius:8px;padding:4px 10px;font-size:12px;font-weight:700;margin-left:8px;cursor:pointer}.btn-qr{background:var(--vert-bg);color:var(--vert-tx);border:none;border-radius:8px;padding:4px 12px;font-size:12px;font-weight:800;letter-spacing:.5px;cursor:pointer}.qr-view{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 0}.qr-svg{width:220px;height:220px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px}.qr-svg svg{width:100%;height:100%}.qr-code{font-family:inherit;font-size:30px;font-weight:800;color:var(--navy);letter-spacing:1px}.adm-actions{white-space:nowrap;text-align:right}.adm-err{margin:0;padding-left:18px;color:var(--rouge-tx);font-size:13px}.panel.sm{width:460px}.adm-fields{display:flex;flex-direction:column;gap:12px;margin:16px 0}.adm-field{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted);font-weight:600}.adm-field input[type=text],.adm-field input[type=number],.adm-field select{padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-size:14px}.adm-field input[type=checkbox]{width:20px;height:20px;align-self:flex-start}.adm-field input[type=color]{width:56px;height:34px;padding:2px;border:1px solid var(--line);border-radius:8px}.adm-days{display:flex;gap:6px}.adm-days button{width:34px;height:34px;border:1px solid var(--line);background:#fff;color:var(--navy);border-radius:8px;font-weight:700;cursor:pointer}.adm-days button.on{background:var(--navy);color:#fff;border-color:var(--navy)}.adm-pval{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:14px}.imgfield{display:flex;flex-direction:column;gap:8px}.imgfield img{width:120px;height:120px;object-fit:cover;border-radius:12px;border:1px solid var(--line);background:#fff}.imgfield-ph{width:120px;height:120px;border-radius:12px;border:1px dashed var(--line);display:grid;place-items:center;color:var(--muted);font-size:12px;background:var(--surface2, #f6f8fc)}.thumb{width:38px;height:38px;object-fit:cover;border-radius:8px;border:1px solid var(--line);vertical-align:middle}.s2fa-state{display:flex;gap:10px;align-items:center}.s2fa-reco{background:var(--orange-bg);color:var(--orange-tx);font-size:12px;font-weight:700;padding:3px 9px;border-radius:20px}.s2fa-codes{background:#f6f8fc;border:1px solid var(--line);border-radius:12px;padding:14px}.s2fa-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}.s2fa-grid code{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px;text-align:center;font-weight:700;letter-spacing:1px}.s2fa-setup{display:flex;flex-direction:column;gap:8px}.s2fa-qr{width:220px;height:220px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px}.s2fa-qr svg{width:100%;height:100%}
