@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@500;600;700;800&family=DM+Sans:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans',sans-serif;color:#14263d;background:#f3f7fb;font-synthesis:none;--navy:#071a2a;--navy2:#0d2538;--blue:#0862f5;--cyan:#31b8ea;--text:#14263d;--muted:#63778b;--line:#dce6ee;--surface:#fff;--soft:#edf4fa;--good:#087f63;--bad:#c84548;--shadow:0 18px 42px -29px #15354d7d}
*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit}::selection{background:#b8ddff;color:#062348}:focus-visible{outline:3px solid #40a5ff;outline-offset:2px}body{overscroll-behavior-y:none}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:'Plus Jakarta Sans',sans-serif;letter-spacing:-.025em}h1{font-size:clamp(1.6rem,2vw,2.3rem)}h2{font-size:1.13rem}small,.muted{color:var(--muted)}.app-shell{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--navy);color:#b8cbda;position:sticky;top:0;height:100vh;padding:24px 14px;display:flex;flex-direction:column;gap:25px}.brand{display:flex;align-items:center;gap:11px;padding:0 13px;color:white;font-family:'Plus Jakarta Sans';font-size:1.06rem;font-weight:800}.brandmark{width:38px;height:38px;display:grid;place-items:center;flex:none}.brandmark svg{width:100%;height:100%}.side-nav{display:grid;gap:5px}.nav-btn{display:flex;gap:13px;align-items:center;width:100%;border:0;border-radius:12px;padding:13px 15px;background:transparent;color:inherit;text-align:left;font-weight:700}.nav-btn:hover,.nav-btn.active{background:#103e62;color:white}.nav-btn.active{box-shadow:inset 3px 0 #36b8ff}.nav-icon{font-size:1.05rem;line-height:1;width:22px;text-align:center}.sidebar-foot{margin-top:auto;display:grid;gap:7px}.sidebar-foot button{border:1px solid #385368;color:#d8e5ee;background:transparent;border-radius:10px;padding:10px}.main{min-width:0}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;min-height:76px;padding:14px clamp(16px,3vw,42px);background:#ffffffeb;backdrop-filter:blur(14px);border-bottom:1px solid #dfebf2}.topbar strong{display:block}.topbar small{display:block;margin-top:2px}.top-actions{display:flex;gap:9px;align-items:center}.icon-btn{border:1px solid var(--line);background:var(--surface);color:var(--text);width:40px;height:40px;border-radius:11px;display:grid;place-items:center}.avatar{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:#ddecff;color:#0858ca;font-weight:800;object-fit:cover}.content{max-width:1380px;margin:auto;padding:32px clamp(16px,3vw,42px) 92px}.page-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:23px}.page-head p{color:var(--muted);margin-top:5px}.btn{border:0;border-radius:11px;min-height:43px;padding:0 17px;background:var(--blue);color:white;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:9px;white-space:nowrap}.btn:hover{filter:brightness(.96)}.btn.secondary{background:#e8f1fd;color:#0756c7}.btn.ghost{background:var(--surface);color:var(--text);border:1px solid var(--line)}.btn.danger{background:#fff0f0;color:#a83d43}.btn.sm{min-height:35px;padding:0 12px;font-size:.87rem}.tools{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px}.tools .field{min-width:170px;max-width:280px;flex:1}.field,select,textarea{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:11px;padding:12px 13px;min-height:45px;outline:none}.field:focus,select:focus,textarea:focus{border-color:#368afa;box-shadow:0 0 0 3px #cfe4ff}.field::placeholder,textarea::placeholder{color:#718398;opacity:1}.field-label{display:grid;gap:7px;color:var(--muted);font-size:.88rem;font-weight:700}.field-label .field,.field-label select,.field-label textarea{width:100%;font-size:1rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid .wide{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:21px;box-shadow:var(--shadow)}.panel+.panel{margin-top:14px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.grid{display:grid;gap:15px}.grid.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols4{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{padding:20px;border:1px solid var(--line);background:var(--surface);border-radius:14px}.metric b{display:block;font-size:1.9rem;letter-spacing:-.05em;margin:7px 0;color:#0c3761}.metric small{font-weight:700}.metric em{font-style:normal;color:var(--muted);font-size:.82rem}.list{display:grid;gap:10px}.row{display:flex;align-items:center;gap:13px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);min-width:0}.row-body{flex:1;min-width:0}.row strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row small{display:block;margin-top:4px;line-height:1.35}.row .actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:end}.pill{display:inline-flex;align-items:center;min-height:26px;padding:3px 9px;border-radius:30px;background:#e9f3ff;color:#1255ad;font-size:.72rem;font-weight:800;white-space:nowrap}.pill.good{background:#ddf7ee;color:#087358}.pill.warn{background:#fff1d9;color:#9b6000}.pill.bad{background:#ffebeb;color:#ae3941}.empty{padding:38px 20px;border:1px dashed #c4d6e5;border-radius:13px;text-align:center;color:var(--muted);line-height:1.5}.split{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(270px,.75fr);gap:15px}.section-title{font-size:1.06rem;margin-bottom:14px}.map-panel{height:330px;position:relative;overflow:hidden;border-radius:13px;background:linear-gradient(115deg,#dfeef4,#e7f2e9)}.map-panel::before{content:'';position:absolute;inset:0;background:linear-gradient(77deg,transparent 46%,#ffffff9c 46%,#ffffff9c 49%,transparent 49%),linear-gradient(20deg,transparent 34%,#ffffffc6 34%,#ffffffc6 37%,transparent 37%),linear-gradient(-35deg,transparent 68%,#ffffffa8 68%,#ffffffa8 72%,transparent 72%)}.map-pin{position:absolute;transform:translate(-50%,-50%);border:3px solid white;background:#075ef5;color:white;box-shadow:0 6px 20px #004eaa6d;border-radius:50%;width:43px;height:43px;z-index:1}.map-caption{position:absolute;bottom:10px;left:10px;right:10px;padding:9px 12px;border-radius:9px;background:#ffffffed;font-size:.78rem;color:#496477;z-index:1}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:.88rem}.table th{text-align:left;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.table th,.table td{padding:12px 10px;border-bottom:1px solid var(--line)}.table tr:last-child td{border-bottom:0}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:var(--soft)}.dialog-backdrop{position:fixed;inset:0;background:#04111fc4;z-index:40;display:grid;place-items:center;padding:16px}.dialog{background:var(--surface);border-radius:19px;width:min(100%,620px);max-height:min(90vh,850px);overflow:auto;padding:24px;box-shadow:0 30px 75px #00122369}.dialog-head{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:19px}.dialog-head .icon-btn{flex:none}.notice{border-radius:10px;padding:12px 14px;background:#e8f5ff;color:#114b80;font-size:.88rem;line-height:1.4}.notice.error{background:#ffeded;color:#a6363b}.notice.success{background:#e0f7ed;color:#086648}.notice+*{margin-top:15px}.toast{position:fixed;right:20px;bottom:20px;z-index:60;background:#0b2437;color:white;border-radius:11px;padding:14px 18px;max-width:min(400px,calc(100vw - 40px));box-shadow:0 15px 40px #00162655}.login{min-height:100vh;display:grid;grid-template-columns:minmax(350px,1fr) minmax(400px,1fr);background:white}.login-art{background:#071a2a;color:white;display:flex;flex-direction:column;justify-content:space-between;padding:clamp(26px,5vw,70px);position:relative;overflow:hidden}.login-art::after{content:'';position:absolute;width:520px;height:520px;border-radius:50%;border:90px solid #0f3d67;opacity:.55;bottom:-240px;right:-170px}.login-art>*{position:relative;z-index:1}.login-art h1{font-size:clamp(2.3rem,5vw,4.6rem);line-height:1.06;max-width:650px}.login-art p{color:#a9c8db;max-width:460px;font-size:1.12rem;line-height:1.6;margin-top:18px}.login-card{display:flex;align-items:center;justify-content:center;padding:30px}.login-form{width:min(100%,390px);display:grid;gap:18px}.login-form h2{font-size:1.75rem}.login-form .btn{width:100%;min-height:50px}.login-form .brand{color:var(--text);padding:0;margin-bottom:20px}.login-form .muted{line-height:1.5}.login-form .link{border:0;background:none;color:#0759df;text-align:right;font-weight:700;padding:0}.loading{min-height:250px;display:grid;place-items:center;color:var(--muted)}.spinner{width:24px;height:24px;border:3px solid #d3e5f5;border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.mobile-nav{display:none}.date-strip{display:flex;gap:7px;overflow-x:auto;padding:3px 0 10px;scrollbar-width:thin}.date-btn{border:1px solid var(--line);background:white;color:var(--text);border-radius:11px;min-width:70px;padding:8px;font-weight:800}.date-btn small{display:block}.date-btn.active{background:var(--blue);color:white;border-color:var(--blue)}.date-btn.active small{color:#dfecff}body.dark{--text:#e8f4fa;--muted:#a5b8c8;--line:#284659;--surface:#0e283c;--soft:#17364c;--shadow:0 18px 42px -28px #000;color:var(--text);background:#071a2a}body.dark .topbar{background:#0b2237e8}body.dark .metric b{color:#dcefff}body.dark .field::placeholder,body.dark textarea::placeholder{color:#a0b4c2}body.dark .pill{background:#113d64;color:#a9d6ff}body.dark .pill.good{background:#0b493d;color:#b7f6df}body.dark .pill.warn{background:#644920;color:#ffe4a9}body.dark .pill.bad{background:#633139;color:#ffbfc5}body.dark .date-btn{background:#153449;color:var(--text)}body.dark .date-btn.active{background:var(--blue)}body.dark .btn.ghost{background:var(--surface);color:var(--text)}body.dark .login{background:var(--surface)}body.dark .login-form .brand{color:var(--text)}
@media(max-width:1100px){.app-shell{grid-template-columns:76px minmax(0,1fr)}.sidebar{padding:22px 9px}.brand span,.nav-btn span:last-child,.sidebar-foot button span{display:none}.brand{padding:0;justify-content:center}.nav-btn{justify-content:center;padding:13px}.sidebar-foot button{font-size:1.1rem}.grid.cols4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.app-shell{display:block}.sidebar{display:none}.topbar{min-height:64px;padding:10px 17px}.topbar small{font-size:.72rem}.top-actions .avatar{display:none}.content{padding:23px 15px 106px}.page-head{align-items:start}.page-head .btn{padding:0 11px;font-size:.82rem}.grid.cols2,.grid.cols3,.grid.cols4,.split{grid-template-columns:1fr}.metric{padding:16px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.row{align-items:flex-start}.row .actions{max-width:120px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:30;background:#fffffff0;backdrop-filter:blur(16px);border-top:1px solid var(--line);justify-content:space-around;padding:8px 4px max(8px,env(safe-area-inset-bottom))}.mobile-nav .nav-btn{width:auto;min-width:58px;display:grid;justify-items:center;gap:3px;padding:6px 3px;font-size:.67rem;border-radius:9px;color:#63778b}.mobile-nav .nav-btn span:last-child{display:block}.mobile-nav .nav-btn.active{color:var(--blue);background:#eaf3ff;box-shadow:none}.mobile-nav .nav-icon{font-size:1.16rem}.login{display:block}.login-art{min-height:170px;padding:20px 25px}.login-art h1{font-size:1.55rem}.login-art p{font-size:.83rem;margin-top:7px}.login-art .brand{display:none}.login-art::after{display:none}.login-card{padding:28px 24px}.login-form .brand{margin-bottom:4px}.dialog{padding:20px;max-height:90vh}.tools .field{min-width:130px}.table-wrap{margin:0 -8px}.table{min-width:650px}body.dark .mobile-nav{background:#0b2237ef}}
@media(max-width:380px){.topbar .top-actions{gap:4px}.topbar strong{font-size:.87rem}.page-head{display:block}.page-head .btn{margin-top:13px}.row{display:grid;grid-template-columns:auto 1fr}.row .actions{grid-column:1/-1;max-width:none;justify-content:start}.login-art{min-height:145px}}
/* Variantes de rôle : mêmes repères Arcadia, densité adaptée au travail. */
body.agent-role:not(.dark){background:#f8fbff}
body.agent-role:not(.dark) .sidebar{background:#fff;color:#496579;border-right:1px solid #e1ebf2}
body.agent-role:not(.dark) .sidebar .brand{color:#0e2a43}
body.agent-role:not(.dark) .nav-btn.active,body.agent-role:not(.dark) .nav-btn:hover{background:#e9f3ff;color:#075ce6;box-shadow:none}
body.agent-role:not(.dark) .sidebar-foot button{color:#274962;border-color:#d5e5ef}
body.it-role .sidebar{background:#0b2135}
body.it-role .nav-btn.active{background:#0b4970;box-shadow:inset 3px 0 #2cd2cf}
.top-actions .icon-btn{position:relative}
.map-panel{background-color:#e7f2ef;background-image:linear-gradient(#c9dfdd 1px,transparent 1px),linear-gradient(90deg,#c9dfdd 1px,transparent 1px);background-size:35px 35px}.map-panel::before{display:none}.map-empty{height:100%;display:grid;place-items:center;padding:20px;text-align:center;color:#496477}.map-controls{position:absolute;top:12px;right:12px;z-index:2;display:grid;gap:5px}.map-controls button{width:38px;height:38px;border:1px solid #b9cfd5;background:white;color:#173d57;border-radius:8px;font-size:1.3rem;font-weight:800}
.top-actions sup{position:absolute;top:-6px;right:-5px;background:#eb4d56;color:white;min-width:19px;height:19px;display:grid;place-items:center;border-radius:99px;font-size:.68rem;border:2px solid var(--surface)}
.field-label{line-height:1.35}
.field-label input[type=file]{padding:9px 12px;line-height:1.4}
.field-label input[type=file]::file-selector-button{border:0;background:#e6f0ff;color:#0756c7;padding:8px 11px;border-radius:8px;margin-right:10px;font-weight:700;cursor:pointer}
@media(max-width:760px){body.agent-role:not(.dark) .mobile-nav{background:#ffffffec}body.agent-role:not(.dark) .topbar{background:#fffffff0}}

/* Navigation et retours d'action */
.app-shell.collapsed{grid-template-columns:76px minmax(0,1fr)}
.sidebar-brand{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0}
.sidebar-brand .brand{min-width:0;white-space:nowrap}
.sidebar-brand .brand span{overflow:hidden;text-overflow:ellipsis}
.collapse-btn{flex:none;width:32px;height:32px;background:#ffffff14;color:#d9edff;border-color:#ffffff24}
.collapse-btn svg{width:17px;height:17px}
.app-shell.collapsed .sidebar{padding-left:9px;padding-right:9px}
.app-shell.collapsed .sidebar-brand{flex-direction:column;gap:12px}
.app-shell.collapsed .brand{padding:0}
.app-shell.collapsed .brand span,.app-shell.collapsed .nav-btn span:last-child,.app-shell.collapsed .sidebar-foot button span{display:none}
.app-shell.collapsed .nav-btn{justify-content:center;padding:13px}
.sidebar-foot button{display:flex;align-items:center;justify-content:flex-start;gap:12px;text-align:left;min-height:42px}
.app-shell.collapsed .sidebar-foot button{justify-content:center}
.sidebar-foot svg,.nav-icon svg,.top-actions svg,.mobile-menu-btn svg{width:20px;height:20px;display:block}
.nav-icon{display:grid;place-items:center;flex:none}
.nav-btn,.icon-btn,.btn,.row[data-page],.metric[data-page]{transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .15s ease}
.nav-btn:hover,.icon-btn:hover,.btn:hover:not(:disabled),.row[data-page]:hover,.metric[data-page]:hover{transform:translateY(-1px)}
.metric[data-page],.row[data-page]{cursor:pointer}
.metric[data-page]:hover{border-color:#84b8f9;box-shadow:0 14px 30px -22px #0c58a8}
.top-identity{display:flex;align-items:center;gap:12px;min-width:0}
.top-identity>div{min-width:0}.top-identity strong,.top-identity small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mobile-menu-btn,.drawer-scrim{display:none}
.topbar.refreshing::after{content:'';position:absolute;height:2px;left:0;bottom:0;width:35%;background:var(--blue);animation:loading-line 1.2s ease-in-out infinite alternate}
@keyframes loading-line{to{transform:translateX(185%)}}
.button-spinner{width:16px;height:16px;border-width:2px;border-top-color:currentColor;flex:none}
.btn:disabled,.icon-btn:disabled{opacity:.65}
.confirmation-backdrop{z-index:70}
.confirmation{width:min(100%,420px);padding:30px;text-align:center;overflow:visible}
.confirmation-mark{width:50px;height:50px;display:grid;place-items:center;margin:0 auto 16px;border-radius:15px;background:#e9f2ff;color:#075ee6;font-weight:900;font-size:1.5rem}
.confirmation h2{font-size:1.25rem}.confirmation p{color:var(--muted);line-height:1.5;margin-top:10px;overflow-wrap:anywhere}
.confirmation .form-actions{justify-content:center;flex-wrap:wrap}
.confirmation .btn{min-width:120px}
.page-head>div,.panel,.panel-head,.metric,.row-body{min-width:0}
.page-head p,.panel p,.row small,.notice{overflow-wrap:anywhere}
.row .btn{white-space:normal;text-align:center}
.btn{line-height:1.25;text-align:center}
.dialog{overscroll-behavior:contain}
.dialog .form-actions{flex-wrap:wrap}
.toast{line-height:1.4;overflow-wrap:anywhere}
.notification-count[hidden]{display:none}
.proof-media{display:grid;gap:8px;margin:10px 0 15px;padding:10px;border:1px solid var(--line);border-radius:12px}
.proof-media img,.proof-media video{display:block;width:100%;max-height:300px;object-fit:contain;border-radius:8px;background:var(--soft)}
.proof-media .btn{justify-self:start;text-decoration:none}
body.dark .collapse-btn{color:#e2f4ff}
@media(min-width:761px) and (max-width:1100px){.app-shell:not(.collapsed){grid-template-columns:244px minmax(0,1fr)}.app-shell:not(.collapsed) .sidebar{padding:24px 14px}.app-shell:not(.collapsed) .brand span,.app-shell:not(.collapsed) .nav-btn span:last-child,.app-shell:not(.collapsed) .sidebar-foot button span{display:inline}.app-shell:not(.collapsed) .brand{padding:0 13px;justify-content:flex-start}.app-shell:not(.collapsed) .nav-btn{justify-content:flex-start;padding:13px 15px}}
@media(max-width:760px){
 .sidebar{display:flex;position:fixed;z-index:52;left:0;top:0;bottom:0;width:min(82vw,300px);height:100dvh;transform:translateX(-105%);transition:transform .2s ease;padding:24px 14px;box-shadow:14px 0 40px #00132340}
 .sidebar .brand span,.sidebar .nav-btn span:last-child,.sidebar .sidebar-foot button span{display:inline}
 .sidebar .brand{padding:0 13px;justify-content:flex-start}.sidebar .nav-btn{justify-content:flex-start;padding:13px 15px}
 .app-shell.drawer-open .sidebar{transform:translateX(0)}
 .app-shell.collapsed .sidebar{width:min(82vw,300px);padding:24px 14px}
 .app-shell.collapsed .sidebar-brand{flex-direction:row}.app-shell.collapsed .brand span,.app-shell.collapsed .nav-btn span:last-child,.app-shell.collapsed .sidebar-foot button span{display:inline}
 .app-shell.collapsed .nav-btn,.app-shell.collapsed .sidebar-foot button{justify-content:flex-start}
 .mobile-menu-btn{display:grid;flex:none}
 .drawer-scrim{display:none;position:fixed;inset:0;background:#061a2a86;border:0;z-index:51}
 .app-shell.drawer-open~.drawer-scrim{display:block}
 .topbar{gap:8px}.top-actions{gap:6px}.top-actions .icon-btn{width:38px;height:38px}
 .mobile-nav .nav-btn:hover:not(.active){background:transparent;color:#63778b;box-shadow:none;transform:none}
 .page-head{flex-wrap:wrap;align-items:flex-start}.page-head .btn{white-space:normal}
 .panel-head{flex-wrap:wrap}.form-actions{flex-wrap:wrap}.form-actions .btn{flex:1 1 auto}
 .row{flex-wrap:wrap}.row .actions{max-width:none;width:100%;justify-content:flex-start}
 .row>.btn{margin-left:auto}
 .tools>*{max-width:none!important;min-width:min(100%,140px)}
 .dialog-backdrop{align-items:end;padding:8px}.dialog{border-radius:18px 18px 12px 12px;max-height:calc(100dvh - 16px);padding:22px 18px calc(20px + env(safe-area-inset-bottom))}
 .confirmation-backdrop{align-items:center;padding:16px}.confirmation{border-radius:20px;padding:26px 20px}
}
@media(max-width:420px){.top-identity small{max-width:135px}.top-actions .avatar{display:none}.row>.pill{order:3}.row>.btn{order:4}.confirmation .btn{min-width:0}}
@media(prefers-reduced-motion:reduce){.nav-btn,.icon-btn,.btn,.row[data-page],.metric[data-page],.sidebar{transition:none!important}.topbar.refreshing::after,.spinner{animation-duration:2s}}

/* Cohérence visuelle et confort des parcours web */
h1,h2,h3,.brand{font-family:'Barlow','DM Sans',sans-serif}
@media(min-width:761px){
 .app-shell,.app-shell:not(.collapsed){grid-template-columns:274px minmax(0,1fr)}
 .app-shell.collapsed{grid-template-columns:76px minmax(0,1fr)}
 .app-shell{transition:grid-template-columns .24s cubic-bezier(.2,.8,.2,1)}
 .sidebar{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#4b6578 transparent}
 .sidebar-brand .brand{padding:0 4px;gap:8px;font-size:.89rem;letter-spacing:-.025em;min-width:0;white-space:nowrap}
 .sidebar-brand .brand span{display:inline;overflow:visible;text-overflow:clip}
 .sidebar-brand .brandmark{width:34px;height:34px}
 .app-shell.collapsed .brandmark{width:29px;height:29px}
 .app-shell.collapsed .sidebar-brand .brand span{display:none}
 .collapse-btn svg{transition:transform .24s cubic-bezier(.2,.8,.2,1)}
 .app-shell.collapsed .collapse-btn svg{transform:rotate(180deg)}
}
body.modal-open{overflow:hidden;overscroll-behavior:none}
.dialog-backdrop{overscroll-behavior:contain}
.dialog{overscroll-behavior:contain;scrollbar-width:thin}
.pointage-error{margin-top:14px;border:1px solid #eaa9af;font-size:.95rem;font-weight:700}
.sidebar{border-right:1px solid #163349}
.sidebar-brand{min-height:48px}
.brand span{letter-spacing:-.025em}
.nav-btn.active{background:#124b71;box-shadow:inset 3px 0 #54bfff}
.nav-btn:hover:not(.active){background:#13354e}
.btn{border-radius:10px;font-weight:750;box-shadow:0 3px 8px #10489a14}
.btn:not(.secondary):not(.ghost):not(.danger):hover:not(:disabled){filter:none;background:#0754d8}
.btn.secondary:hover:not(:disabled){background:#d6e9ff}
.btn.ghost:hover:not(:disabled){background:var(--soft)}
.panel{box-shadow:0 8px 25px -20px #14395380}
.dialog{border:1px solid var(--line)}
.field:focus,select:focus,textarea:focus{box-shadow:0 0 0 3px #5f9bff4d}
body.dark{--blue:#3988ff;--text:#eef5fc;--muted:#b7c8d8;--line:#284257;--surface:#10293b;--soft:#18364a;--shadow:0 10px 28px -24px #000;color:var(--text);background:#081a29}
body.dark .sidebar{background:#071724;border-right-color:#193548}
body.dark .nav-btn.active{background:#124365;color:#f3faff}
body.dark .nav-btn:hover:not(.active){background:#15374e;color:#f3faff}
body.dark .topbar{background:#0a2032ec;border-bottom-color:#24445b}
body.dark .panel,body.dark .metric,body.dark .row,body.dark .dialog{background:var(--surface);border-color:var(--line)}
body.dark .btn.secondary{background:#1b466a;color:#d9edff}
body.dark .btn.secondary:hover:not(:disabled){background:#245a84}
body.dark .btn.danger{background:#5a2634;color:#ffe2e7}
body.dark .btn.ghost{background:#122d40;border-color:#37556a}
body.dark .notice{background:#153d5b;color:#d7eaff;border:1px solid #2a5a7b}
body.dark .notice.error{background:#512832;color:#ffe1e4;border-color:#86505a}
body.dark .notice.success{background:#174b3e;color:#d8faea;border-color:#3e806b}
body.dark .field,body.dark select,body.dark textarea{background:#0b2335;color:#eef5fc;border-color:#375266}
body.dark .field::placeholder,body.dark textarea::placeholder{color:#aec1d0}
body.dark .field:focus,body.dark select:focus,body.dark textarea:focus{border-color:#66a8ff;box-shadow:0 0 0 3px #3988ff47}
body.dark .map-caption{background:#0b2238ed;color:#e3f2fb}
body.dark .map-empty{color:#435d6f}
body.dark .map-controls button{background:#102e43;color:#eaf6ff;border-color:#355873}
body.dark .empty{border-color:#3a5b70}
body.dark .confirmation-mark{background:#173f65;color:#c2e1ff}
body.dark .field-label input[type=file]::file-selector-button{background:#204a70;color:#e1f2ff}
body.dark .sidebar-foot button{border-color:#345469;color:#e2f0fa}
@media(max-width:760px){
 .sidebar{overflow-y:auto;overscroll-behavior:contain}
 body.modal-open .mobile-nav{pointer-events:none}
 body.dark .mobile-nav{background:#0c2639f0}
}
@media(prefers-reduced-motion:reduce){.app-shell,.collapse-btn svg{transition:none!important}}
.password-wrap{display:flex;position:relative;align-items:center;min-width:0}.password-wrap .field{padding-right:78px}.password-toggle{position:absolute;right:5px;top:50%;transform:translateY(-50%);border:0;border-radius:8px;background:var(--soft);color:var(--text);padding:7px 9px;font-size:.78rem;font-weight:800;min-width:63px}.login-links{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.login-links .link{text-align:left}.site-map{height:260px;margin-top:10px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#dce8eb}.map-panel{background:#dce8eb}.map-panel::before{display:none!important}.map-empty-overlay{background:#fff;color:#1a3750;border-radius:8px;padding:8px 12px;font-weight:700;box-shadow:0 3px 14px #132c3d38}.leaflet-container{font:inherit;z-index:0}.dialog .leaflet-container{z-index:0}.top-identity{flex:1;min-width:0}.top-identity>div{min-width:0}.top-identity strong{max-width:100%;font-size:clamp(.88rem,1.2vw,1.04rem);text-overflow:clip;white-space:normal;overflow-wrap:anywhere;line-height:1.2}.top-actions{flex:none}.table td{vertical-align:middle}.table td:first-child{min-width:145px}.table td:last-child{white-space:nowrap}
@media(max-width:760px){.page-head{flex-wrap:wrap}.page-head .btn{white-space:normal;text-align:center}.tools>*{flex:1 1 140px}.tools .field-label{min-width:140px}.topbar{padding-inline:12px}.top-identity{gap:7px}.top-identity small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .icon-btn{width:36px;height:36px}.dialog .form-actions .btn{white-space:normal;text-align:center}.row>.row-body{flex:1 1 55%;overflow-wrap:anywhere}}
@media print{body{background:white!important;color:#172b3f!important}.sidebar,.topbar,.mobile-nav,.tools,.drawer-scrim,.dialog-backdrop,.toast{display:none!important}.app-shell,.app-shell.collapsed{display:block!important}.content{max-width:none;padding:0!important}.panel,.metric,.row{box-shadow:none!important;break-inside:avoid}.table-wrap{overflow:visible}.table{min-width:0;font-size:10pt}.table th,.table td{padding:6px 4px}.table button{display:none!important}.page-head{margin-bottom:12px}@page{size:A4 landscape;margin:16mm}}
.top-actions .avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.connection-notice{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;font-size:1rem;font-weight:700}.connection-notice .btn{flex:none}.password-hint{display:block;margin-top:13px;line-height:1.5}.site-location-note{margin-top:14px;color:var(--muted);font-size:.84rem;line-height:1.5}.detail-gps-map{height:280px;margin-top:12px;border-radius:14px;overflow:hidden;background:#dce8eb}.map-heading{margin:20px 0 0;font-size:1rem}.gps-coordinates{margin-top:9px;color:var(--muted);font-size:.82rem;overflow-wrap:anywhere}.attendance-history{margin-top:22px}.attendance-history .row{text-align:left;width:100%;color:var(--text)}.attendance-history .row small{white-space:normal}.attendance-detail .grid{margin:17px 0}.attendance-detail .grid>div{display:grid;gap:5px;padding:15px;background:var(--soft);border-radius:12px}.attendance-detail .grid strong{font-size:1.1rem}
.live-intervention{position:relative;isolation:isolate;min-height:282px;margin-bottom:19px;padding:30px 34px;display:flex;align-items:center;overflow:hidden;border-radius:18px;background:#061c35;color:#fff;box-shadow:0 19px 44px -28px #001d43}.live-intervention::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#061c35 0%,#061c35e8 42%,#061c3500 85%)}.live-content{position:relative;z-index:2;max-width:55%}.live-label{display:inline-flex;align-items:center;gap:10px;padding:8px 13px;border-radius:100px;background:#0f5445;color:#dcfff0;font-size:.77rem;font-weight:800;letter-spacing:.075em}.live-beacon{display:block;width:10px;height:10px;flex:none;border-radius:50%;background:#69f8b4;box-shadow:0 0 0 4px #69f8b42e;animation:beaconPulse 2.2s ease-in-out 6}.live-intervention h2{color:#fff;font-size:clamp(1.65rem,3vw,2.8rem);line-height:1.1;margin:20px 0 10px;overflow-wrap:anywhere}.live-intervention p{font-size:1rem;color:#d3e7f5;line-height:1.45;margin-bottom:22px}.live-intervention .btn{background:#3a8dff;min-height:48px}.live-intervention .btn svg{width:18px;height:18px}.mission-art{position:absolute;z-index:-2;right:0;top:0;width:66%;height:100%;object-fit:cover;object-position:right center;animation:missionArrive .6s cubic-bezier(.23,1,.32,1) both}.live-intervention:hover .mission-art{transform:translateY(-4px)}
@keyframes beaconPulse{50%{transform:scale(1.38);box-shadow:0 0 0 10px #69f8b40c}100%{transform:scale(1);box-shadow:0 0 0 4px #69f8b42e}}@keyframes missionArrive{from{opacity:.65;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:760px){.live-intervention{min-height:290px;padding:25px}.live-content{max-width:100%}.mission-art{width:100%;opacity:.56;object-position:right center}.live-intervention::after{background:linear-gradient(90deg,#061c35 0%,#061c35e8 47%,#061c3570 100%)}.connection-notice{align-items:flex-start;flex-wrap:wrap}.detail-gps-map{height:230px}}
@media(hover:hover) and (pointer:fine){.mission-art{transition:transform .16s ease}.live-intervention:hover .mission-art{transform:translateY(-4px)}}
@media(hover:none){.live-intervention:hover .mission-art{transform:none}}
@media(prefers-reduced-motion:reduce){.mission-art{animation:missionFade .2s ease-out both!important;transform:none!important;transition:none!important}.live-beacon{animation:none!important}@keyframes missionFade{from{opacity:.8}to{opacity:1}}}
.map-panel,.site-map,.detail-gps-map{position:relative}.maplibregl-map{width:100%;height:100%;font:inherit}.maplibregl-canvas{outline:none}.map-service-warning{position:absolute;left:10px;right:10px;bottom:10px;z-index:3;margin:0;padding:9px 12px;border-radius:9px;background:var(--surface);color:var(--text);font-size:.8rem;box-shadow:0 3px 14px #132c3d38}.map-empty-overlay{position:absolute;left:12px;bottom:12px;z-index:2}.attendance-detail .grid p{font-size:.86rem;color:var(--muted);line-height:1.4}
.profile-grid>.panel{min-width:0;overflow:hidden}.profile-grid>.panel>h2,.profile-grid>.panel>p{overflow-wrap:anywhere}.profile-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:10px;justify-content:stretch}.profile-actions>.btn{width:100%;min-width:0;min-height:48px;padding:10px 13px;white-space:normal;text-align:center;line-height:1.25}.panel .form-actions:not(.profile-actions){flex-wrap:wrap}.panel .form-actions>.btn{max-width:100%;white-space:normal;text-align:center}.page-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.page-actions>.btn{white-space:normal;text-align:center}.faq-list{margin-bottom:18px}.faq-list details{padding:16px 0;border-bottom:1px solid var(--line)}.faq-list details:last-child{border-bottom:0}.faq-list summary{cursor:pointer;font-weight:800;line-height:1.4}.faq-list p{margin:12px 0 0;color:var(--muted);line-height:1.6;max-width:68ch}
.proof-stage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:12px;margin-top:19px}.proof-stage-card{min-width:0;padding:16px;border-radius:13px;background:var(--soft)}.proof-stage-card h3{font-size:1rem}.proof-stage-card p{margin:8px 0 15px;color:var(--muted);font-size:.88rem;line-height:1.45}.proof-stage-card .btn{width:100%;white-space:normal;min-height:47px;padding:9px 12px;text-align:center}.proof-view-button{margin-top:15px}.proof-history-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}.proof-history-actions .btn{white-space:normal}.planning-site-row{width:100%;text-align:left;color:var(--text)}.planning-site-chevron{font-size:1.7rem;color:var(--muted)}.planning-agent-list{display:grid;gap:12px;margin-top:16px}.planning-agent-card{padding:15px;border-radius:13px;background:var(--soft)}.planning-agent-card .panel-head{margin-bottom:10px}.planning-agent-card p{margin:7px 0;line-height:1.4}.planning-agent-card>.btn{margin-top:12px;white-space:normal}
.gps-home-list{display:grid;gap:10px;margin-top:14px}.gps-home-list>div{display:grid;gap:4px;padding-bottom:10px;border-bottom:1px solid var(--line)}.gps-home-list>div:last-child{border-bottom:0;padding-bottom:0}.gps-filters{align-items:end}.gps-filters .field-label{flex:1 1 165px;min-width:0}.gps-filters .field-label>*{width:100%}.gps-help{margin-bottom:16px}.gps-history-panel{margin-top:16px}.gps-history-row{align-items:flex-start}.gps-history-row .actions{display:flex;gap:8px;flex-wrap:wrap}.gps-history-row .row-body strong{white-space:normal;overflow:visible}.gps-history-row small{white-space:normal}.gps-numbers{display:block;margin-top:7px;color:var(--text);font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.gps-position{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;min-width:0;padding:9px 0;font-size:.9rem}.gps-position strong{min-width:0;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.gps-event-details{display:grid;gap:2px;margin-top:12px}.gps-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;color:var(--muted);font-size:.87rem}.map-service-warning{position:absolute;z-index:600;top:9px;left:9px;right:9px;padding:9px 12px;border-radius:9px;background:#102d43e8;color:#fff;font-size:.8rem;line-height:1.4;pointer-events:none}
@media(max-width:760px){.page-actions{width:100%;justify-content:stretch}.page-actions>.btn{flex:1 1 160px}.gps-history-row{display:flex;flex-wrap:wrap}.gps-history-row .actions{width:100%;padding-left:48px}.gps-filters>.btn{flex:1 1 140px}.gps-pagination{flex-wrap:wrap}.gps-pagination span{order:-1;flex:1 1 100%;text-align:center}}
.notification-list{gap:10px}.notification-item{min-width:0;border:1px solid var(--line);border-radius:14px;background:var(--panel,#fff);overflow:hidden;transition:border-color .18s ease,background .18s ease}.notification-item.is-unread{border-color:#4895ef;background:var(--soft,#edf5ff);box-shadow:inset 4px 0 0 #1266db}.notification-open{display:flex;align-items:flex-start;gap:14px;width:100%;padding:16px 18px;border:0;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}.notification-open:hover{background:#3388ee10}.notification-open:focus-visible,.notification-copy:focus-visible{outline:3px solid #368aff;outline-offset:-3px}.notification-marker{flex:none;width:10px;height:10px;margin-top:8px;border-radius:50%;background:#b7c3ce}.is-unread .notification-marker{background:#1266db;box-shadow:0 0 0 5px #1266db22}.notification-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.notification-meta strong{overflow-wrap:anywhere}.notification-status{flex:none;border-radius:999px;padding:4px 9px;background:var(--soft);font-size:.75rem;font-weight:800;color:var(--muted)}.is-unread .notification-status{background:#1266db;color:#fff}.notification-open .row-body{display:grid;gap:5px;min-width:0}.notification-open small{white-space:normal;overflow-wrap:anywhere;line-height:1.45}.notification-open time{color:var(--muted);font-size:.76rem}.notification-copy{margin:0 18px 14px 42px;white-space:normal;text-align:center}.proof-input-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:15px}.proof-input-group{display:grid;align-content:start;gap:12px;min-width:0;margin:0;padding:15px;border:1px solid var(--line);border-radius:12px}.proof-input-group legend{padding:0 6px;font-weight:800}.proof-input-group .field-label,.proof-note{min-width:0}.proof-input-group input[type=file]{display:block;width:100%;max-width:100%;min-width:0;margin-top:7px;overflow:hidden;font-size:.83rem}.proof-note{display:block;margin-top:15px}.proof-note textarea{width:100%}.app-shell,.main,.content,.grid,.split,.panel,.row,.row-body,.page-head,.tools{min-width:0}.content{overflow-x:clip}.page-head h1,.panel h2,.row-body strong{overflow-wrap:anywhere}.form-actions{flex-wrap:wrap}.form-actions>.btn{min-width:0;white-space:normal}.dialog{width:min(100%,620px);max-height:min(90dvh,900px);overflow-y:auto;overscroll-behavior:contain}
@media(min-width:761px) and (max-width:1100px){.grid.cols3{grid-template-columns:repeat(2,minmax(0,1fr))}.split{grid-template-columns:1fr}.page-head{flex-wrap:wrap}.page-head>.btn{white-space:normal}}
@media(max-width:760px){.proof-input-grid{grid-template-columns:1fr}.notification-open{padding:14px}.notification-copy{margin:0 14px 14px 38px}.top-identity strong{font-size:clamp(.8rem,3.8vw,1rem)}.top-identity small{max-width:100%}.mobile-nav .nav-btn{flex:1 1 0;min-width:0}.dialog{width:calc(100vw - 24px);max-width:620px}.content .btn{max-width:100%}}
@media(max-width:380px){.notification-meta{align-items:flex-start}.notification-status{font-size:.7rem}.notification-copy{display:block;width:calc(100% - 52px)}.topbar{gap:5px}.top-actions{gap:3px}.topbar .icon-btn{width:34px;height:34px}}
.intervention-row{width:100%;text-align:left;color:var(--text);cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}.intervention-row:hover{transform:translateY(-1px);border-color:var(--accent);background:var(--soft)}.intervention-row:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.attendance-history>.form-actions{margin-top:14px}.attendance-history>.form-actions>.btn{width:100%}.attendance-review-list{margin-top:16px}.attendance-review-row{align-items:flex-start}.attendance-review-row .row-body{min-width:0}.attendance-review-row .row-body small{white-space:normal;line-height:1.5;overflow-wrap:anywhere}.attendance-review-row>.btn{flex:none}.payroll-rate-help{margin:0 0 14px;line-height:1.55}.attendance-detail .grid>div{display:grid;gap:7px;align-content:start}.attendance-detail .grid{margin:16px 0}.attendance-detail .grid .pill{justify-self:start}
@media(max-width:760px){.attendance-review-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px}.attendance-review-row>.row-body{grid-column:2}.attendance-review-row>.pill{grid-column:2;justify-self:start}.attendance-review-row>.btn{grid-column:2;justify-self:stretch}.intervention-row{align-items:flex-start}.intervention-row>.pill{white-space:normal}}
.stock-card{min-width:0;overflow:hidden}.stock-photo{display:block;width:100%;max-height:220px;aspect-ratio:16/9;object-fit:cover;border-radius:11px;margin:0 0 15px;background:var(--soft)}.stock-photo.wide{max-width:100%;justify-self:start}.date-strip{scroll-snap-type:x proximity;overscroll-behavior-x:contain}.date-btn{scroll-snap-align:start;flex:none}.map-panel .leaflet-container,.site-map .leaflet-container,.detail-gps-map .leaflet-container{height:100%;font:inherit}.map-panel .leaflet-maplibre-gl,.site-map .leaflet-maplibre-gl,.detail-gps-map .leaflet-maplibre-gl{position:absolute;inset:0}.maplibregl-ctrl-attrib{font-size:10px}.pointage-comment{margin-top:12px}
.row{color:var(--text)}
.btn{min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere;padding-block:9px}
.page-head,.panel-head{min-width:0}
.page-head>div,.panel-head>div{min-width:0}
.tools{min-width:0}
.tools>.field{min-width:min(100%,190px);max-width:none;flex:2 1 220px}
.tools>select,.tools>.btn{min-width:min(100%,150px);flex:1 1 150px}
.table-wrap{max-width:100%;overscroll-behavior-x:contain}
.table th,.table td{overflow-wrap:anywhere}
body.dark .row[data-page]:hover,body.dark .intervention-row:hover{background:#1b4058;border-color:#4b7ca0}
body.dark .mobile-nav .nav-btn{color:#b9ccdc}
body.dark .mobile-nav .nav-btn.active{color:#ddecff;background:#1a476a}
body.dark .notification-item{background:var(--surface)}
body.dark .notification-item.is-unread{background:#183b54}
body.dark .password-toggle{background:#21445c;color:#eff7ff}
body.agent-role:not(.dark) .sidebar,body.agent-role:not(.dark) .sidebar-brand{background:#fff;color:#29475d}
body.agent-role:not(.dark) .sidebar-brand .brand{color:#0e2a43}
body.agent-role:not(.dark) .collapse-btn,body.agent-role:not(.dark) .drawer-close-btn{background:#edf4fa;color:#214963;border-color:#d7e5ef}
body.agent-role:not(.dark) .sidebar-info h2{color:#6a8191}
body.agent-role:not(.dark) .sidebar-foot button[data-action="logout"]{color:#af3241;border-color:#edcad0;background:#fff6f7}
body.dark .sidebar-foot button[data-action="logout"]{color:#ffb9c1;border-color:#80505c;background:#3c2430}
@media(max-width:760px){
 .manager-overview{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px}
 .manager-overview .metric{padding:14px;min-width:0}
 .manager-overview .metric b{font-size:clamp(1.35rem,7vw,1.8rem);margin:5px 0}
 .manager-overview .metric small,.manager-overview .metric em{font-size:.76rem;line-height:1.25;overflow-wrap:anywhere}
 .tools>.field{flex:1 1 100%;width:100%;min-width:100%;max-width:100%!important}
 .tools>select{flex:1 1 calc(50% - 5px);width:calc(50% - 5px);min-width:0}
 .tools>.btn{flex:1 1 100%;width:100%;min-width:0}
 .page-head .page-actions{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
 .page-head .page-actions>.btn{width:100%;min-width:0;padding:10px;line-height:1.25}
 .panel-head>.btn{flex:0 1 auto}
 .row strong{white-space:normal;overflow:visible;text-overflow:clip}
 .content{padding-inline:clamp(12px,3.7vw,20px)}
}
@media(max-width:380px){
 .manager-overview .metric{padding:11px}
 .manager-overview .metric em{display:block}
 .page-head .page-actions{grid-template-columns:1fr}
 .topbar{padding-inline:9px}
}
