:root{
  --green-950:#123c2b;--green-900:#174a35;--green-800:#1b6546;--green-700:#23825a;--green-600:#2f9b6a;
  --green-100:#e6f4ec;--green-050:#f6faf7;--text:#1e2b24;--muted:#718079;--border:#dfe9e2;--panel:#fff;
  --warn:#d79a24;--bad:#c94d4d;--blue:#286c8e;
}
*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--green-050);color:var(--text)}button,input,select{font:inherit}button{cursor:pointer}
.loading-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#f8fcf9,#eaf5ee)}.loading-card{text-align:center;color:var(--muted)}.spinner{width:34px;height:34px;border:3px solid #dcebe1;border-top-color:var(--green-700);border-radius:50%;animation:spin .75s linear infinite;margin:0 auto 14px}@keyframes spin{to{transform:rotate(360deg)}}
.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(320px,520px) 1fr;background:#fff}.login-panel{display:flex;align-items:center;justify-content:center;padding:38px}.login-box{width:100%;max-width:390px}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:34px}.login-brand img{width:48px;height:48px;object-fit:contain;background:white;border:1px solid var(--border);padding:7px;border-radius:12px}.login-brand strong{display:block;font-size:20px}.login-brand small{color:var(--muted)}.login-box h1{font-size:29px;margin:0 0 8px}.login-box>p{color:var(--muted);margin:0 0 28px;line-height:1.5}.field{margin-bottom:15px}.field label{display:block;font-size:12px;font-weight:700;margin-bottom:6px}.field input{width:100%;border:1px solid var(--border);border-radius:9px;padding:12px 13px;outline:none;background:#fff}.field input:focus{border-color:#9fc9ae;box-shadow:0 0 0 3px rgba(35,130,90,.08)}.login-button{width:100%;border:0;background:var(--green-700);color:#fff;border-radius:9px;padding:12px 14px;font-weight:750;margin-top:4px}.login-button:disabled{opacity:.65;cursor:wait}.login-error{background:#fdeaea;color:#9c3030;border:1px solid #f4cccc;padding:10px 12px;border-radius:8px;font-size:12px;margin:12px 0}.login-note{font-size:11px;color:var(--muted);margin-top:18px;line-height:1.5}.login-visual{background:linear-gradient(145deg,var(--green-900),var(--green-950));position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:64px;color:#fff}.login-visual:before,.login-visual:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.06)}.login-visual:before{width:520px;height:520px;right:-100px;top:-140px}.login-visual:after{width:320px;height:320px;left:50px;bottom:-100px}.login-visual-content{position:relative;z-index:1;max-width:560px}.login-visual h2{font-size:40px;line-height:1.08;margin:0 0 16px}.login-visual p{font-size:16px;line-height:1.6;opacity:.82;max-width:480px}
.app{display:grid;grid-template-columns:218px minmax(0,1fr);min-height:100vh}aside{background:linear-gradient(180deg,var(--green-900),var(--green-950));padding:18px 12px;color:white;position:relative}.brand{display:flex;align-items:center;gap:10px;padding:3px 8px 18px;margin-bottom:10px;border-bottom:1px solid rgba(255,255,255,.12)}.brand-logo{width:36px!important;height:36px!important;max-width:36px!important;max-height:36px!important;object-fit:contain!important;display:block;background:#fff;padding:5px;border-radius:9px;flex:0 0 36px}.brand-text{min-width:0}.brand-title{font-size:17px;font-weight:800;line-height:1.05}.brand-sub{font-size:10.5px;opacity:.75;margin-top:4px;white-space:nowrap}aside button{width:100%;border:0;background:transparent;color:#dcece3;padding:10px 11px;border-radius:9px;display:flex;gap:10px;align-items:center;margin:3px 0;font-size:13px;text-align:left}aside button i{font-style:normal;width:18px;text-align:center;font-size:15px;opacity:.9}aside button.active,aside button:hover{background:rgba(255,255,255,.12);color:white}main{min-width:0}header{height:64px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 26px;position:sticky;top:0;z-index:3;backdrop-filter:blur(8px)}.header-title{font-size:15px;font-weight:750}.header-domain{font-size:11px;color:var(--muted);margin-top:2px}.user-menu{display:flex;align-items:center;gap:8px}.user-meta{text-align:right}.user-name{font-size:12px;font-weight:700}.user-role{font-size:10px;color:var(--muted);text-transform:capitalize}.user{width:34px;height:34px;border-radius:50%;background:var(--green-100);display:grid;place-items:center;font-weight:750;color:var(--green-800);font-size:12px}.logout{border:1px solid var(--border);background:#fff;border-radius:8px;padding:7px 10px;color:var(--muted);font-size:11px}.header-right{display:flex;align-items:center;gap:10px}.offline{font-size:11px;color:#a73535;background:#fde8e8;padding:6px 9px;border-radius:20px}
section{padding:28px 30px 36px;max-width:1220px;margin:auto}.title{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;gap:14px}.title h1{margin:0;font-size:26px;letter-spacing:-.02em}.title p{margin:5px 0 0;color:var(--muted);font-size:14px}.primary{background:var(--green-700)!important;color:white!important;border-color:var(--green-700)!important;box-shadow:0 8px 18px rgba(35,130,90,.15)}.title button,.actions button{border:1px solid var(--border);background:white;border-radius:9px;padding:9px 13px;display:flex;gap:8px;align-items:center;color:var(--text)}.title button:hover,.actions button:hover{border-color:#bad6c5;background:#fbfefc}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0 28px}.cards.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--border);border-top:3px solid var(--green-700);border-radius:12px;padding:16px 17px;box-shadow:0 4px 16px rgba(25,70,49,.035)}.card strong{font-size:25px;display:block;line-height:1.1}.card span{color:var(--muted);font-size:12px;margin-top:5px;display:block}.card.warn{border-top-color:var(--warn)}.card.bad{border-top-color:var(--bad)}.actions{display:flex;gap:9px;margin:11px 0 25px;flex-wrap:wrap}.panel{background:white;border:1px solid var(--border);border-radius:12px;padding:18px;margin-top:14px;box-shadow:0 4px 16px rgba(25,70,49,.035)}.panelhead{display:flex;justify-content:space-between;align-items:center;gap:10px}.panel h2,h2{font-size:16px;margin:0}.link,.back{border:0;background:transparent;color:var(--green-700);font-weight:650;padding:4px 0}.status-line{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--green-600)}.status-dot.bad{background:var(--bad)}
.toolbar{background:white;border:1px solid var(--border);border-radius:11px;padding:11px 12px;display:flex;gap:9px;align-items:center}.toolbar input{flex:1;border:0;outline:0;font-size:14px;background:transparent;color:var(--text)}.toolbar select{border:1px solid var(--border);padding:8px;border-radius:7px;background:white;color:var(--text)}.table{margin-top:14px;background:white;border:1px solid var(--border);border-radius:11px;overflow:hidden}.tr{display:grid;grid-template-columns:125px 2fr 105px 1.35fr 110px;gap:12px;align-items:center;width:100%;padding:13px 15px;border:0;border-top:1px solid #eef3ef;background:white;text-align:left;color:inherit}.tr:not(.th):hover{background:#fafdfb}.th{background:#f3f8f5!important;font-size:11px;color:var(--muted);font-weight:750;border-top:0}.tr span:nth-child(4){display:flex;align-items:center;gap:4px}.pill{display:inline-flex!important;width:max-content!important;padding:5px 9px;border-radius:20px;font-size:10.5px;font-weight:750}.pill.ok{background:#e6f4ec;color:#27764a}.pill.warn{background:#fff3d9;color:#986810}.pill.bad{background:#fde8e8;color:#a73535}.grid{display:grid;grid-template-columns:1fr 1.2fr;gap:15px}.info{display:flex;justify-content:space-between;gap:18px;padding:11px 0;border-top:1px solid #eef3ef;font-size:13px}.info span{color:var(--muted)}.empty{text-align:center;padding:62px 20px;color:var(--muted)}.empty strong{display:block;color:var(--text);font-size:17px;margin-bottom:7px}.empty .bigicon{font-size:38px;margin-bottom:8px}.notice{background:#eef7f2;border:1px solid #d4eadd;color:#285e43;padding:12px 14px;border-radius:9px;font-size:12px;line-height:1.5}.error-box{background:#fdeaea;border:1px solid #f3cccc;color:#9c3030;padding:12px 14px;border-radius:9px;font-size:12px}.muted{color:var(--muted)}
@media(max-width:760px){.login-page{grid-template-columns:1fr}.login-visual{display:none}.login-panel{padding:24px}.app{grid-template-columns:1fr}aside{position:fixed;z-index:5;bottom:0;left:0;right:0;height:66px;padding:5px;display:flex;justify-content:space-around;align-items:center;background:var(--green-950)}.brand{display:none}aside button{width:auto;display:grid;justify-items:center;gap:1px;font-size:9px;padding:5px 8px;margin:0}aside button:nth-of-type(n+5){display:none}aside button i{font-size:16px}header{padding:0 12px;height:60px}.user-meta{display:none}.logout{padding:6px 8px}section{padding:18px 14px 82px}.title{align-items:flex-start;gap:10px;flex-direction:column}.title h1{font-size:22px}.cards,.cards.three{grid-template-columns:1fr 1fr}.card{padding:14px}.card strong{font-size:22px}.actions{display:grid;grid-template-columns:1fr 1fr}.actions button{justify-content:center}.grid{grid-template-columns:1fr}.toolbar select{display:none}.table{overflow-x:auto}.tr{min-width:730px}.header-right .offline{display:none}}
.form-panel{max-width:900px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}
.field select,.field textarea{width:100%;border:1px solid var(--border);border-radius:9px;padding:11px 12px;outline:none;background:#fff;color:var(--text)}
.field select:focus,.field textarea:focus{border-color:#9fc9ae;box-shadow:0 0 0 3px rgba(35,130,90,.08)}
.field textarea{resize:vertical;min-height:88px}
.check-row{display:flex;gap:24px;flex-wrap:wrap;margin:4px 0 16px;padding:12px 0;border-top:1px solid #eef3ef;border-bottom:1px solid #eef3ef}
.check-row label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:650}
.check-row input{width:16px;height:16px;accent-color:var(--green-700)}
.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.form-actions button{border:1px solid var(--border);background:#fff;border-radius:9px;padding:10px 14px;color:var(--text)}
.form-actions .primary{border-color:var(--green-700)}
@media(max-width:760px){.form-grid{grid-template-columns:1fr}.form-actions{display:grid;grid-template-columns:1fr 1fr}.form-actions button{justify-content:center}.check-row{display:grid;gap:10px}}
.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.field-label-row label{margin:0}.mini-action{border:0;background:transparent;color:var(--green-700);font-size:11px;font-weight:750;padding:2px 0}.inline-creator{grid-template-columns:1.4fr .7fr auto auto;gap:7px;margin-top:8px;padding:10px;background:#f5faf7;border:1px solid var(--border);border-radius:9px}.inline-creator input{min-width:0}.compact{padding:8px 10px!important;border:1px solid var(--border);border-radius:8px;background:#fff}.field-help{font-size:11px;color:var(--muted);margin-top:7px;line-height:1.4}.warning-help{color:#8a6110}@media(max-width:760px){.inline-creator{grid-template-columns:1fr 1fr}.inline-creator input:first-child{grid-column:1/-1}}
/* V7 — Paramètres et documents */
.settings-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.settings-tabs button{border:1px solid var(--border);background:#fff;border-radius:9px;padding:9px 12px;color:var(--text);font-weight:650}.settings-tabs button.active{background:var(--green-700);border-color:var(--green-700);color:#fff}.settings-layout{display:grid;grid-template-columns:minmax(300px,.85fr) minmax(420px,1.4fr);gap:15px}.settings-form{display:grid;gap:12px;margin-top:16px}.settings-form-actions{display:flex;gap:8px;justify-content:flex-end}.settings-form-actions button{border:1px solid var(--border);background:#fff;border-radius:8px;padding:9px 12px}.setting-list{margin-top:12px}.setting-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:8px;align-items:center;padding:11px 0;border-top:1px solid #eef3ef}.setting-row small{display:block;color:var(--muted);margin-top:3px}.setting-state{font-size:10.5px;background:#e6f4ec;color:#27764a;padding:5px 8px;border-radius:20px;font-weight:700}.setting-state.archived{background:#f0f1f0;color:#777}.small-empty{padding:30px 12px}.doc-grid{display:grid;gap:10px;margin-top:14px}.doc-card{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--border);border-radius:10px;padding:12px;background:#fbfefc}.doc-card strong{display:block}.doc-card small{display:block;color:var(--muted);margin-top:4px}.doc-actions{display:flex;gap:7px;align-items:center}.upload-label{cursor:pointer;display:inline-flex;align-items:center}.compact{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:8px;padding:8px 10px;font-size:11px;font-weight:650}.compact:hover{border-color:#bad6c5}.field input[type=file]{padding:9px;background:#fbfefc}.field select{min-height:42px}
@media(max-width:900px){.settings-layout{grid-template-columns:1fr}.setting-row{grid-template-columns:minmax(0,1fr) auto auto}.setting-state{grid-column:2}.setting-row .toggle-setting{grid-column:3}.setting-row .edit-setting{grid-column:2}}
@media(max-width:760px){.doc-card{align-items:flex-start;flex-direction:column}.doc-actions{width:100%}.doc-actions .compact{flex:1;justify-content:center;text-align:center}.settings-tabs{display:grid;grid-template-columns:1fr 1fr}.setting-row{grid-template-columns:1fr auto}.setting-state{grid-column:auto}.setting-row .edit-setting,.setting-row .toggle-setting{grid-column:auto}.setting-row button{font-size:10px}}
/* V8 — Modification des références */
.title-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.title-actions .primary{border:1px solid var(--green-700);border-radius:9px;padding:9px 13px;font-weight:700}
.info-notes{align-items:flex-start}.info-notes b{max-width:65%;white-space:pre-wrap;text-align:right;font-weight:600}
@media(max-width:760px){.title-actions{width:100%;justify-content:space-between}.title-actions .primary{margin-left:auto}.info-notes b{max-width:60%}}
.location-notice{margin-top:12px}.location-setting-row .setting-main{padding-left:calc(var(--location-level,0) * 18px);position:relative}.location-setting-row .setting-main:before{content:'↳';position:absolute;left:calc(var(--location-level,0) * 18px - 14px);color:var(--green-600);opacity:calc(var(--location-level,0) * 1)}.location-setting-row .setting-main small{line-height:1.35}.location-setting-row[style*="--location-level:0"] .setting-main:before{display:none}
@media(max-width:760px){.location-setting-row .setting-main{padding-left:calc(var(--location-level,0) * 12px)}.location-setting-row .setting-main:before{left:calc(var(--location-level,0) * 12px - 11px)}}
/* V10 — Entrées en stock */
.entry-button{border:1px solid #9fc9ae;background:#eef8f2;color:var(--green-800);border-radius:9px;padding:9px 13px;font-weight:750}.entry-button:hover{background:#e4f4ea;border-color:#83ba98}.success-box{background:#e7f5ec;border:1px solid #bfe2cc;color:#236843;padding:12px 14px;border-radius:9px;font-size:13px;margin-bottom:16px}.entry-summary{display:grid;grid-template-columns:1.4fr .8fr 1fr;gap:12px;margin-bottom:14px}.entry-summary>div{background:#fff;border:1px solid var(--border);border-radius:11px;padding:13px 15px}.entry-summary span{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.entry-summary strong{font-size:14px}.form-section-title{grid-column:1/-1;font-size:13px;font-weight:800;color:var(--green-800);padding:14px 0 2px;border-top:1px solid #e7efe9;margin-top:4px}.entry-comment{margin-top:14px}.entry-notice{margin-top:14px}.stock-entry-grid input[type=date]{min-height:42px}
@media(max-width:760px){.entry-summary{grid-template-columns:1fr}.title-actions{gap:7px}.entry-button{padding:8px 10px;font-size:12px}.form-section-title{margin-top:0}}
/* V11 — Sorties, transferts, mises au rebut et historique */
.stock-action-button{border:1px solid var(--border);background:#fff;border-radius:9px;padding:9px 12px;font-weight:750;color:var(--text)}
.stock-action-button.exit{border-color:#e1c27e;background:#fffaf0;color:#825b0f}
.stock-action-button.transfer{border-color:#abcdb8;background:#f2faf5;color:#276b46}
.stock-action-button.discard{border-color:#e7baba;background:#fff5f5;color:#9b3535}
.stock-action-button:hover{transform:translateY(-1px)}
.danger-button{border:1px solid #c95353;background:#c95353;color:#fff;border-radius:9px;padding:10px 14px;font-weight:750}
.danger-button:hover{background:#af4040}
.fefo-help{color:#7a5a12;background:#fff8e6;border:1px solid #f1dfad;border-radius:7px;padding:7px 8px;margin-top:7px}
.entry-summary small{display:block;color:var(--muted);font-size:10px;margin-top:3px}
.movement-list{padding:0;overflow:hidden}
.movement-row{display:grid;grid-template-columns:38px minmax(0,1fr) 120px 135px;gap:12px;align-items:center;padding:13px 16px;border-top:1px solid #eef3ef}
.movement-row:first-child{border-top:0}
.movement-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-weight:900;background:#eef7f2;color:#2a7650}
.movement-icon.out{background:#fff5e6;color:#93600d}.movement-icon.discard{background:#fdeaea;color:#a23838}
.movement-main{min-width:0}.movement-main strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.movement-main small{display:block;color:var(--muted);font-size:11px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.movement-qty{text-align:right;font-weight:800;font-size:13px}.movement-qty.positive{color:#27764a}.movement-qty.negative{color:#a44932}.movement-date{text-align:right;color:var(--muted);font-size:11px}
@media(max-width:900px){.title-actions{justify-content:flex-start}.movement-row{grid-template-columns:34px minmax(0,1fr) 95px}.movement-date{grid-column:2/-1;text-align:left;padding-left:0}.stock-action-button{font-size:11px;padding:8px 9px}}
@media(max-width:760px){.title-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.title-actions .pill{grid-column:1/-1}.title-actions button{justify-content:center;text-align:center}.movement-row{grid-template-columns:32px minmax(0,1fr) 80px;padding:11px 10px;gap:8px}.movement-main small{white-space:normal}.movement-date{font-size:10px}.movement-qty{font-size:12px}}
/* V12 — Codes-barres et scanner */
.barcode-panel{grid-column:1/-1}.barcode-wrap{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-top:14px;padding:14px;background:#fff;border:1px solid #edf2ee;border-radius:10px}.barcode-svg{max-width:100%;height:auto}.barcode-caption strong,.barcode-caption small{display:block}.barcode-caption small{color:var(--muted);margin-top:4px}.equipment-tr{grid-template-columns:130px 2fr 1.2fr 1.4fr 110px}.scanner-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:15px}.scanner-panel{padding:14px}.scanner-panel video{width:100%;max-height:520px;background:#111;border-radius:12px;object-fit:cover;display:block}.scanner-status{padding:12px 4px 2px;color:var(--muted);font-size:13px}.print-barcode{white-space:nowrap}@media(max-width:900px){.scanner-layout{grid-template-columns:1fr}.equipment-tr{min-width:760px}}@media(max-width:760px){.barcode-wrap{gap:10px}.barcode-caption{width:100%;text-align:center}.barcode-panel .panelhead{align-items:flex-start;gap:10px;flex-direction:column}.print-barcode{width:100%}.scanner-panel video{min-height:280px}}
/* V13 — Impression d'étiquettes */
.label-selection-panel{padding:0;overflow:hidden}.label-selection-head{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:14px 16px;background:#f7faf8;border-bottom:1px solid var(--border);font-size:12px}.label-select-row{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 16px;border-top:1px solid #eef3ef;cursor:pointer;background:#fff}.label-select-row:first-child{border-top:0}.label-select-row:hover{background:#fbfefc}.label-select-row input{width:17px;height:17px;accent-color:var(--green-700)}.label-select-row span{min-width:0}.label-select-row strong{display:block;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.label-select-row small{display:block;color:var(--muted);font-size:10.5px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.label-select-row>b{font-size:11px;color:var(--muted);white-space:nowrap}.label-selection-actions{display:flex;justify-content:flex-end;margin-top:14px}.label-selection-actions .primary{padding:10px 14px;border-radius:9px}.label-selection-actions .primary:disabled{opacity:.45;cursor:not-allowed}
.label-print-controls{display:grid;grid-template-columns:220px minmax(180px,.7fr) minmax(260px,1.3fr);gap:16px;align-items:end;margin-bottom:15px}.label-print-controls .field{margin:0}.label-format-summary{min-height:58px;padding:8px 0}.label-format-summary span,.label-format-summary strong{display:block}.label-format-summary span{font-size:10.5px;color:var(--muted);margin-bottom:6px}.label-format-summary strong{font-size:12px;line-height:1.35}.label-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(285px,1fr));gap:15px}.label-preview-card{background:#e9eeeb;border:1px solid #dce5df;border-radius:12px;padding:18px;display:grid;place-items:center;min-height:170px;overflow:auto}
.label-sheet{width:var(--label-w);height:var(--label-h);box-sizing:border-box;background:#fff;color:#111;border:1px solid #bfc7c1;padding:2.2mm;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;font-family:Arial,sans-serif;box-shadow:0 3px 12px rgba(32,62,45,.08)}.label-top{display:flex;align-items:flex-start;gap:2mm;min-height:6mm}.label-logo{width:auto;max-width:14mm;max-height:6mm;object-fit:contain}.label-head-text{min-width:0;flex:1}.label-head-text strong{display:block;font-size:8.5pt;line-height:1.05;max-height:7mm;overflow:hidden}.label-head-text small{display:block;font-size:6.5pt;color:#444;margin-top:.5mm;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.label-barcode{height:12mm;display:flex;align-items:center;justify-content:center;margin:.4mm 0}.label-barcode-svg{width:100%;height:100%;display:block}.label-bottom{display:flex;justify-content:space-between;gap:2mm;align-items:flex-end;font-size:6.8pt;line-height:1.05;min-height:3mm}.label-bottom b{font-size:7.2pt}.label-bottom span{max-width:65%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.label-settings-preview{display:flex;justify-content:center;align-items:center;padding:22px 12px;background:#edf2ef;border-radius:10px;margin:14px 0}.label-dimensions{grid-template-columns:1fr 1fr}.label-options{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}.barcode-svg{width:min(420px,100%);height:auto}
@media(max-width:900px){.label-print-controls{grid-template-columns:1fr 1fr}.label-print-controls .field{grid-column:1/-1}.label-preview-grid{grid-template-columns:1fr}.label-options{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.label-select-row{grid-template-columns:20px minmax(0,1fr);padding:11px 10px}.label-select-row>b{grid-column:2}.label-print-controls{grid-template-columns:1fr}.label-print-controls .field{grid-column:auto}.label-preview-card{padding:12px;min-height:150px}.label-sheet{max-width:100%}.label-dimensions{grid-template-columns:1fr}.label-options{grid-template-columns:1fr}.label-selection-actions .primary{width:100%}}


/* V14 — Inventaires et réapprovisionnement */
.inventory-new{margin-bottom:18px}.check-inline{display:flex;align-items:center;gap:9px;min-height:44px;font-weight:600}.check-inline input{width:auto}.inventory-session-list{display:flex;flex-direction:column}.inventory-session-row{display:grid;grid-template-columns:minmax(0,1fr) 100px 110px;gap:18px;align-items:center;padding:15px 4px;border-bottom:1px solid var(--border,#e6e9e7);cursor:pointer}.inventory-session-row:last-child{border-bottom:0}.inventory-session-row:hover{background:#f7faf8}.inventory-session-row strong,.inventory-session-row small{display:block}.inventory-session-row small{margin-top:4px;color:#6b746f}.inventory-progress{text-align:center}.inventory-progress b,.inventory-progress small{display:block}.inventory-progress small{color:#6b746f}.inventory-lines-panel{overflow-x:auto}.inventory-line-head,.inventory-line{display:grid;grid-template-columns:minmax(270px,2fr) 140px 150px 90px minmax(180px,1fr);gap:14px;align-items:center;min-width:930px}.inventory-line-head{padding:0 10px 10px;font-size:12px;font-weight:700;color:#6b746f;border-bottom:1px solid #e4e9e6}.inventory-line{padding:12px 10px;border-bottom:1px solid #edf0ee}.inventory-line:last-child{border-bottom:0}.inventory-ref strong,.inventory-ref small,.inventory-theoretical span,.inventory-theoretical b{display:block}.inventory-ref small,.inventory-theoretical span{color:#6b746f;font-size:12px;margin-top:3px}.inventory-count label,.inventory-comment label{display:none}.inventory-count input,.inventory-comment input{margin:0}.inventory-delta{font-weight:800;text-align:center}.inventory-delta.ok{color:#267a4d}.inventory-delta.positive{color:#267a4d}.inventory-delta.negative{color:#b3453e}.inventory-actions{display:flex;justify-content:space-between;align-items:center;margin-top:18px;gap:12px}.inventory-actions>div{display:flex;gap:10px}.danger-outline{border-color:#d7a7a3!important;color:#a93e37!important;background:#fff!important}.success-note{border-color:#b9dbc7;background:#f1faf5}.reorder-filters{display:grid;grid-template-columns:repeat(2,minmax(0,280px));gap:16px;margin-bottom:18px}.reorder-list{overflow-x:auto}.reorder-head,.reorder-row{display:grid;grid-template-columns:minmax(260px,2fr) 120px 120px 150px minmax(170px,1fr);gap:16px;align-items:center;min-width:850px}.reorder-head{padding:0 8px 10px;font-size:12px;font-weight:700;color:#6b746f;border-bottom:1px solid #e4e9e6}.reorder-row{padding:14px 8px;border-bottom:1px solid #edf0ee}.reorder-row:last-child{border-bottom:0}.reorder-row strong,.reorder-row small,.reorder-row b{display:block}.reorder-row small{color:#6b746f;margin-top:3px;font-size:12px}
@media(max-width:800px){.inventory-session-row{grid-template-columns:minmax(0,1fr) 75px 88px;gap:8px}.inventory-actions{align-items:stretch;flex-direction:column}.inventory-actions>div{display:grid;grid-template-columns:1fr 1fr}.reorder-filters{grid-template-columns:1fr}.inventory-line-head,.inventory-line{min-width:850px}}

/* V15 — Matériel & métrologie */
.archived-row{opacity:.58}.metro-rule-list{display:grid;gap:10px;margin-top:14px}.metro-rule-row{display:grid;grid-template-columns:minmax(220px,1.6fr) minmax(130px,.8fr) minmax(140px,.8fr) auto auto;gap:12px;align-items:center;border:1px solid var(--border);border-radius:10px;padding:12px;background:#fbfefc}.metro-rule-row strong,.metro-rule-row small,.metro-rule-row span,.metro-rule-row b{display:block}.metro-rule-row small,.metro-rule-row>div>span{color:var(--muted);font-size:11px;margin-top:3px}.metro-history{margin-top:12px;overflow:auto}.metro-history-head,.metro-history-row{display:grid;grid-template-columns:110px minmax(180px,1.4fr) 170px 150px 100px;gap:12px;align-items:center;min-width:800px;padding:10px 6px}.metro-history-head{font-size:11px;font-weight:750;color:var(--muted);border-bottom:1px solid var(--border)}.metro-history-row{border-bottom:1px solid #eef3ef;font-size:12px}.metro-history-row small{display:block;color:var(--muted);margin-top:3px}.metro-overview{margin-top:12px;overflow:auto}.metro-overview-head,.metro-overview-row{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(170px,1.1fr) 130px 130px 150px 110px;gap:12px;align-items:center;min-width:940px;padding:11px 6px}.metro-overview-head{font-size:11px;font-weight:750;color:var(--muted);border-bottom:1px solid var(--border)}.metro-overview-row{border-bottom:1px solid #eef3ef;cursor:pointer}.metro-overview-row:hover{background:#f7fbf8}.metro-overview-row b,.metro-overview-row small{display:block}.metro-overview-row small{color:var(--muted);margin-top:3px;font-size:11px}.danger-note{border-color:#f2c1c1;background:#fff7f7}.warning-help{border-color:#ead69a;background:#fffaf0}.equipment-tr .pill{white-space:nowrap}.form-panel .check-row{margin-top:12px}
@media(max-width:980px){.metro-rule-row{grid-template-columns:1fr 1fr}.metro-rule-row>span,.metro-rule-row>button{justify-self:start}.metro-rule-row>div:first-child{grid-column:1/-1}}
@media(max-width:760px){.metro-rule-row{grid-template-columns:1fr}.metro-rule-row>div:first-child{grid-column:auto}.metro-rule-row .compact{width:100%}.title-actions{flex-wrap:wrap}.title-actions .primary,.title-actions .compact{flex:1 1 auto}}

/* V16 — Incidents & quarantaine */
.incident-filters{display:grid;grid-template-columns:180px 180px minmax(240px,1fr);gap:16px;align-items:end}.incident-filters .field{margin:0}.incident-table{padding:0;overflow-x:auto}.incident-list-head,.incident-list-row{display:grid;grid-template-columns:minmax(260px,1.8fr) 110px 110px minmax(150px,1fr) 145px;gap:14px;align-items:center;min-width:900px;padding:12px 16px}.incident-list-head{font-size:11px;font-weight:750;color:var(--muted);background:#f7faf8;border-bottom:1px solid var(--border)}.incident-list-row{width:100%;border:0;border-bottom:1px solid #eef3ef;background:#fff;text-align:left;color:inherit}.incident-list-row:hover{background:#fbfefc}.incident-list-row strong,.incident-list-row small{display:block}.incident-list-row small{color:var(--muted);font-size:11px;margin-top:3px}.incident-mini-list{display:grid;margin-top:12px}.incident-mini-row{display:flex;justify-content:space-between;align-items:center;gap:14px;border:0;border-top:1px solid #eef3ef;background:#fff;padding:12px 4px;text-align:left;color:inherit}.incident-mini-row:hover{background:#fbfefc}.incident-mini-row strong,.incident-mini-row small{display:block}.incident-mini-row small{color:var(--muted);font-size:11px;margin-top:3px}.incident-timeline{display:grid;margin-top:12px}.incident-event{position:relative;display:grid;grid-template-columns:18px 1fr;gap:10px;padding:10px 0}.incident-event:not(:last-child):before{content:"";position:absolute;left:7px;top:28px;bottom:-8px;width:2px;background:#dfe9e2}.incident-event-dot{width:10px;height:10px;border-radius:50%;background:var(--green-700);margin-top:5px;position:relative;z-index:1}.incident-event strong,.incident-event small{display:block}.incident-event small{color:var(--muted);font-size:11px;margin-top:3px}.incident-event p{margin:6px 0 0;font-size:12px;line-height:1.45;color:#4d5a53}.small-empty{padding:28px 14px}
@media(max-width:900px){.incident-filters{grid-template-columns:1fr 1fr}.incident-search-field{grid-column:1/-1}}
@media(max-width:760px){.incident-filters{grid-template-columns:1fr}.incident-search-field{grid-column:auto}aside{overflow-x:auto;justify-content:flex-start;gap:2px}aside button:nth-of-type(n+5){display:grid}aside button{flex:0 0 64px;min-width:64px}.cards{grid-template-columns:1fr 1fr}}


/* V17 — consommation financière */
.finance-panel{margin:0 0 26px}.finance-panel .panelhead>div{min-width:0}.finance-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:15px}.finance-card{border:1px solid var(--border);border-radius:11px;padding:14px;background:linear-gradient(180deg,#fff,#fbfefc);min-width:0}.finance-card>span{display:block;color:var(--muted);font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.02em}.finance-card>strong{display:block;font-size:23px;margin-top:7px;line-height:1.1;color:var(--green-900)}.finance-card.unavailable>strong{color:var(--muted)}.finance-breakdown{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px;padding-top:10px;border-top:1px solid #edf2ee}.finance-breakdown small{display:block;color:var(--muted);font-size:10px;line-height:1.35}.finance-breakdown b{display:block;color:var(--text);font-size:10px;margin-bottom:2px}.finance-note{margin-top:12px;color:var(--muted);font-size:10.5px;line-height:1.45}.finance-error{margin:12px 0 0}.finance-panel .compact{white-space:nowrap}
@media(max-width:1000px){.finance-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.finance-grid{grid-template-columns:1fr}.finance-card>strong{font-size:21px}.finance-panel .panelhead{align-items:flex-start}.finance-panel .panelhead .compact{padding:7px 9px}}

/* V18 - photos du matériel */
.equipment-name-cell{display:flex;align-items:center;gap:10px;min-width:0}.equipment-name-cell>span:last-child{min-width:0}.equipment-thumb{width:46px;height:46px;border-radius:9px;object-fit:cover;flex:0 0 46px;border:1px solid var(--border);background:#f4f8f5}.equipment-thumb-empty{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:19px}.equipment-photo-panel{align-self:start}.equipment-photo-frame{margin-top:14px;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#f6faf7;min-height:250px;display:flex;align-items:center;justify-content:center}.equipment-photo-frame img{width:100%;height:330px;display:block;object-fit:contain;background:#fff}.equipment-photo-empty{padding:34px;text-align:center;color:var(--muted);display:grid;gap:6px;justify-items:center}.equipment-photo-empty>span{font-size:40px;color:#9bb0a2}.equipment-photo-empty strong{color:var(--text)}.equipment-photo-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.danger-outline{border-color:#e0b2b2!important;color:#9c3434!important;background:#fff!important}@media(max-width:760px){.equipment-photo-frame{min-height:210px}.equipment-photo-frame img{height:280px}.equipment-photo-actions>*{flex:1;text-align:center;justify-content:center}}

/* V19 — Utilisateurs & sécurité */
.access-notice{margin:0 0 18px}.users-settings-layout{align-items:start}.user-counts{margin:0 0 18px}.user-list{display:flex;flex-direction:column;gap:10px}.user-row{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border,#dfe8e2)}.user-row:last-child{border-bottom:0}.user-row-main{min-width:0}.user-row-main strong,.user-row-main small{display:block}.user-row-main small{margin-top:3px;color:var(--muted,#6d7f75);overflow:hidden;text-overflow:ellipsis}.user-role-pill{display:inline-flex;align-items:center;justify-content:center;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:700;background:#eef4f0;color:#315944;white-space:nowrap}.user-role-pill.role-admin{background:#e8f3ec;color:#174a35}.user-role-pill.role-manager{background:#eef3f8;color:#31566f}.user-role-pill.role-viewer{background:#f2f2f2;color:#666}.access-create-help{padding:4px 0 14px}.access-create-help p{line-height:1.55;color:var(--muted,#6d7f75)}.access-matrix{margin-top:18px;padding-top:14px;border-top:1px solid var(--border,#dfe8e2)}.access-matrix h3{margin:0 0 10px}.access-matrix-row{display:grid;grid-template-columns:135px 1fr;gap:10px;padding:9px 0;border-bottom:1px solid var(--border,#dfe8e2)}.access-matrix-row span{color:var(--muted,#6d7f75);line-height:1.4}.security-notice{margin-top:14px}
@media(max-width:760px){.user-row{grid-template-columns:1fr auto}.user-role-pill,.user-row .setting-state{justify-self:start}.user-row .edit-user{justify-self:end;grid-column:2;grid-row:1/3}.access-matrix-row{grid-template-columns:1fr;gap:3px}}


/* V21 - Fiches stock A4 */
.stock-sheet-controls{display:grid;grid-template-columns:1fr 1.3fr 1.4fr;gap:14px;align-items:end;margin-bottom:16px}.stock-sheet-search{min-width:0}.stock-sheet-list{display:flex;flex-direction:column;gap:0;margin-top:12px}.stock-sheet-row{display:grid;grid-template-columns:28px minmax(0,1fr) 180px 110px;gap:14px;align-items:center;padding:13px 8px;border-bottom:1px solid var(--line);cursor:pointer}.stock-sheet-row:hover{background:#f7fbf9}.stock-sheet-row input{width:18px;height:18px}.stock-sheet-row span{min-width:0}.stock-sheet-row b{display:block}.stock-sheet-row small{display:block;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stock-sheet-row .pill{justify-self:end;text-align:center}.stock-sheet-row:last-child{border-bottom:0}@media(max-width:850px){.stock-sheet-controls{grid-template-columns:1fr}.stock-sheet-row{grid-template-columns:26px minmax(0,1fr) 110px}.stock-sheet-row>.pill{display:none}.stock-sheet-row small{white-space:normal}.title-actions{flex-wrap:wrap}}
