:root{--bg:#f3f1ec;--card:#fff;--fg:#1a2433;--muted:#5f6b7a;--border:#dcd8cf;--primary:#1f3a5f;--primary-fg:#fff;--red:#b42318;--red-bg:#fdecea;--amber:#a15c07;--amber-bg:#fef4e2;--green:#1e7a46;--green-bg:#e6f4ec;--grey-bg:#eef0f3;--r:6px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:IBM Plex Sans,system-ui,sans-serif;font-size:14px}.app{max-width:1400px;margin:0 auto;padding:28px 32px 40px}.top{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;border-bottom:2px solid var(--primary);padding-bottom:16px}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:500}h1{margin:6px 0 0;font-size:28px;letter-spacing:-.02em;color:var(--primary)}h2{margin:0;font-size:16px}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--r);padding:9px 14px;font:inherit;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--card);color:var(--fg);transition:background .15s,border-color .15s}.btn:hover{border-color:var(--primary)}.btn.primary{background:var(--primary);color:var(--primary-fg);border-color:var(--primary)}.btn.primary:hover{background:#16304f}.btn.danger:hover{border-color:var(--red);color:var(--red)}button:focus-visible,input:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.disclaimer{display:flex;gap:10px;align-items:flex-start;margin:16px 0;padding:12px 14px;background:var(--amber-bg);border-left:3px solid var(--amber);border-radius:var(--r);color:#5c3a07;font-size:13px}.disclaimer svg{flex-shrink:0;margin-top:1px}.summary{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:12px;margin-bottom:16px}.kpi{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;display:flex;gap:12px;align-items:flex-start}.kpi>svg{color:var(--primary);margin-top:2px}.kpi span{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.kpi strong{display:block;font-family:IBM Plex Mono,monospace;font-size:24px;margin:2px 0}.kpi em{font-style:normal;color:var(--muted);font-size:12px}.kpi.main{background:var(--primary);color:#fff;border-color:var(--primary)}.kpi.main span,.kpi.main em,.kpi.main>svg{color:#c6d3e4}.dot{width:10px;height:10px;border-radius:50%;margin-top:5px}.dot.soon{background:var(--amber)}.dot.expired{background:var(--red)}.panel{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:18px;margin-bottom:16px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.link{background:none;border:0;color:var(--primary);font:inherit;font-weight:500;cursor:pointer;display:inline-flex;gap:5px;align-items:center}.link:hover{text-decoration:underline}label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:500;color:var(--muted)}label small{font-weight:400;font-size:11px}label.disabled{opacity:.5}input{font:inherit;font-size:14px;color:var(--fg);padding:8px 10px;border:1px solid var(--border);border-radius:var(--r);background:#fff;min-height:38px;width:100%}input[type=number],input[type=date]{font-family:IBM Plex Mono,monospace}.grid-s{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;align-items:start}label.check{flex-direction:row;align-items:center;gap:8px;margin-top:24px;color:var(--fg);font-size:13px}label.check input{width:18px;min-height:18px}.help{margin-top:14px;padding:12px 16px;background:var(--grey-bg);border-radius:var(--r);font-size:13px;line-height:1.6}.help p{margin:6px 0}.rows{display:flex;flex-direction:column;gap:12px}.row{display:grid;grid-template-columns:1fr 260px;border:1px solid var(--border);border-left:4px solid var(--border);border-radius:var(--r);overflow:hidden}.row.st-ok{border-left-color:var(--green)}.row.st-soon{border-left-color:var(--amber)}.row.st-expired{border-left-color:var(--red)}.fields{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:14px}.fields .wide{grid-column:span 3}@media (min-width:1200px){.fields{grid-template-columns:1.4fr repeat(5,1fr)}.fields .wide{grid-column:auto}}.tag{font-style:normal;background:var(--amber-bg);color:var(--amber);padding:0 6px;border-radius:3px;font-size:10px;margin-left:4px}.result{background:#faf9f6;border-left:1px solid var(--border);padding:14px;position:relative;display:flex;flex-direction:column;gap:4px}.badge{align-self:flex-start;font-size:11px;font-weight:600;padding:3px 8px;border-radius:20px}.badge.ok{background:var(--green-bg);color:var(--green)}.badge.soon{background:var(--amber-bg);color:var(--amber)}.badge.expired{background:var(--red-bg);color:var(--red)}.badge.incomplete{background:var(--grey-bg);color:var(--muted)}.dl span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.dl strong{display:block;font-family:IBM Plex Mono,monospace;font-size:22px;color:var(--primary)}.left{font-size:13px;font-weight:500}.meta{font-size:11px;color:var(--muted)}.row-actions{position:absolute;top:10px;right:10px;display:flex;gap:4px}.row-actions button{background:#fff;border:1px solid var(--border);border-radius:var(--r);width:30px;height:30px;display:grid;place-items:center;cursor:pointer;color:var(--muted)}.row-actions button:hover{color:var(--primary);border-color:var(--primary)}.row-actions button[title=Supprimer]:hover{color:var(--red);border-color:var(--red)}.warns{grid-column:1/-1;padding:8px 14px;background:var(--amber-bg);color:var(--amber);font-size:12px;display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--border)}.warns div{display:flex;gap:6px;align-items:center}.warns .err{color:var(--red)}footer{color:var(--muted);font-size:12px;text-align:center;margin-top:20px}@media (max-width:900px){.app{padding:18px 14px}.summary{grid-template-columns:1fr 1fr}.kpi.main{grid-column:span 2}.grid-s{grid-template-columns:1fr 1fr}.row{grid-template-columns:1fr}.result{border-left:0;border-top:1px solid var(--border)}h1{font-size:22px}}@media (max-width:520px){.fields{grid-template-columns:1fr 1fr}.fields .wide{grid-column:span 2}.grid-s{grid-template-columns:1fr}label.check{margin-top:0}.top .btn{flex:1;justify-content:center}.actions{width:100%}}
