:root{--bg:#f4f6f8;--surface:#fff;--text:#17202a;--muted:#6b7280;--line:#e5e7eb;--primary:#17202a;--primary-2:#263544;--accent:#d98d24;--success:#178a55;--danger:#c43d3d;--warning:#a96a00;--radius:16px;--shadow:0 8px 30px rgba(23,32,42,.07);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color-scheme:light}
*{box-sizing:border-box}html{background:var(--bg);color:var(--text);font-size:16px}body{margin:0;min-width:320px;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}img{max-width:100%}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px max(14px,env(safe-area-inset-left)) 10px max(14px,env(safe-area-inset-right));background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-mark,.login-logo{display:grid;place-items:center;background:var(--primary);color:white;font-weight:800;letter-spacing:.04em}.brand-mark{width:38px;height:38px;border-radius:11px}.brand strong,.brand small{display:block}.brand strong{font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand small{font-size:.72rem;color:var(--muted)}.userbox{display:flex;align-items:center;gap:8px}.user-name{font-size:.88rem;font-weight:650}.role-pill{font-size:.7rem;padding:5px 8px;border-radius:999px;background:#eef1f4;color:#46515d}.icon-btn{border:0;background:#eef1f4;border-radius:10px;min-width:40px;min-height:40px;font-weight:800}
.mainnav{display:flex;gap:4px;overflow-x:auto;padding:8px 12px;background:var(--surface);border-bottom:1px solid var(--line);scrollbar-width:none}.mainnav::-webkit-scrollbar{display:none}.mainnav a{white-space:nowrap;padding:9px 12px;border-radius:10px;font-size:.82rem;font-weight:700;color:#505b66}.mainnav a:hover,.mainnav a:focus-visible{background:#eef1f4;color:var(--text)}
.page-shell{width:min(1180px,100%);margin:0 auto;padding:18px 14px calc(30px + env(safe-area-inset-bottom))}.page-shell.auth-shell{min-height:100dvh;display:grid;place-items:center;padding:22px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:5px 0 16px}.page-head h1,.hero h1{margin:2px 0 0;font-size:clamp(1.65rem,4vw,2.35rem);line-height:1.08}.page-head p{margin:4px 0 0;color:var(--muted)}.eyebrow{font-size:.74rem!important;text-transform:uppercase;letter-spacing:.13em;font-weight:800;color:var(--accent)!important}.back-link{display:inline-block;margin-bottom:8px;color:var(--muted);font-weight:700;font-size:.86rem}
.card,.state-card,.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card{padding:16px;margin-bottom:14px}.state-card{max-width:600px;margin:10vh auto;padding:28px;text-align:center}.login-card{width:min(440px,100%);padding:28px}.login-logo{width:58px;height:58px;border-radius:16px;margin-bottom:18px}.login-card h1{margin:0 0 6px}.login-card>p{margin:0 0 22px;color:var(--muted)}
.hero{padding:12px 0 18px}.hero>p{margin-bottom:5px}.action-grid{display:grid;gap:12px;margin-top:18px}.big-action{display:flex;align-items:center;gap:15px;min-height:118px;padding:20px;border-radius:20px;color:#fff;box-shadow:0 12px 30px rgba(23,32,42,.16);transition:transform .15s ease}.big-action:hover{transform:translateY(-1px)}.big-action.out{background:linear-gradient(135deg,#17202a,#2f4255)}.big-action.ret{background:linear-gradient(135deg,#8d5a13,#d98d24)}.action-icon{display:grid;place-items:center;width:50px;height:50px;border-radius:15px;background:rgba(255,255,255,.14);font-size:1.7rem}.big-action strong,.big-action small{display:block}.big-action strong{font-size:1rem;line-height:1.2}.big-action small{margin-top:5px;opacity:.78}.dashboard-grid{display:grid;gap:14px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.section-head h2,.card h2{margin:0;font-size:1.05rem}.section-head a,.text-link{font-size:.84rem;font-weight:800;color:#516273}.responsive-list{display:grid}.list-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:0}.list-row strong,.list-row small{display:block}.list-row small{margin-top:4px;color:var(--muted)}.row-meta{font-size:.82rem;color:var(--muted);white-space:nowrap}.empty{color:var(--muted);margin:12px 0}
.form-stack{display:grid;gap:14px}.form-section{display:flex;align-items:flex-start;gap:13px}.step{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border-radius:11px;background:#eef1f4;font-weight:900;color:#3c4955}.field-grow{min-width:0;flex:1}label{display:grid;gap:7px;font-weight:750;font-size:.85rem;color:#3b4550}input,select,textarea,.readonly-field{width:100%;min-height:48px;border:1px solid #cfd5db;border-radius:12px;background:#fff;color:var(--text);padding:10px 12px;outline:none}textarea{resize:vertical;min-height:86px}input:focus,select:focus,textarea:focus{border-color:#7b8792;box-shadow:0 0 0 3px rgba(23,32,42,.08)}.readonly-field{display:flex;align-items:center;background:#f7f8fa}.select-filter{min-height:43px;margin-bottom:7px;background:#fafbfc}.search-wrap{position:relative}.search-loader{position:absolute;right:12px;top:14px;font-size:.74rem;color:var(--muted)}.search-results{display:grid;gap:7px;margin-top:8px}.search-result{display:flex;justify-content:space-between;align-items:center;text-align:left;gap:10px;width:100%;border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px}.search-result:hover{background:#f8fafb}.search-result strong,.search-result small{display:block}.search-result small,.result-stock{font-size:.75rem;color:var(--muted)}.search-empty{font-size:.84rem;color:var(--muted);padding:8px 2px}.cart{display:grid;gap:9px;margin:12px 0}.cart-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fbfcfd}.cart-main{min-width:0}.cart-main strong,.cart-main small,.cart-main span{display:block}.cart-main small,.cart-main span{font-size:.75rem;color:var(--muted);margin-top:3px}.qty-control{display:flex;align-items:center;justify-content:flex-end}.qty-control button{width:38px;height:40px;border:1px solid var(--line);background:#fff;font-size:1.25rem}.qty-control button:first-child{border-radius:10px 0 0 10px}.qty-control button:last-child{border-radius:0 10px 10px 0}.qty-control input{width:64px;min-height:40px;border-radius:0;text-align:center;padding:4px;border-left:0;border-right:0}.unit-label{grid-column:1;font-size:.74rem;color:var(--muted)}.remove-item{grid-column:2;border:0;background:none;color:var(--danger);font-size:.78rem;font-weight:800}.sticky-submit{position:sticky;bottom:calc(10px + env(safe-area-inset-bottom));z-index:10;margin-top:14px;padding:8px;background:rgba(244,246,248,.92);backdrop-filter:blur(10px);border-radius:16px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 15px;border-radius:12px;border:1px solid transparent;font-weight:850;font-size:.84rem}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-2)}.btn-secondary{background:#fff;color:var(--text);border-color:#cfd5db}.btn-danger{background:var(--danger);color:#fff}.btn-lg{min-height:50px;padding:12px 18px}.btn-xl{min-height:58px;width:100%;font-size:.95rem}.confirm-actions{display:grid;grid-template-columns:1fr 2fr;gap:10px}.confirm-actions form,.confirm-actions button{width:100%}
.review-grid,.detail-grid{display:grid;grid-template-columns:1fr;gap:14px}.review-grid small,.review-grid strong,.review-grid span,.detail-grid small,.detail-grid strong{display:block}.review-grid small,.detail-grid small,.comment-box small{color:var(--muted);font-size:.75rem}.review-grid strong,.detail-grid strong{margin-top:4px}.review-card hr{border:0;border-top:1px solid var(--line);margin:18px 0}.review-items{display:grid}.review-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--line)}.review-item:last-child{border-bottom:0}.review-item strong,.review-item small{display:block}.review-item small{color:var(--muted);margin-top:3px}.review-item b{white-space:nowrap}.comment-box{margin-top:14px;padding:12px;border-radius:12px;background:#f6f7f9}.comment-box p{margin:5px 0 0}.danger-zone{border-color:#efcccc}.danger-zone form{display:grid;gap:12px}
.filters{display:grid;grid-template-columns:1fr;gap:10px}.filters label{font-size:.76rem}.filters input,.filters select{min-height:42px}.table-card{padding:0;overflow:hidden}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.84rem}th,td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top}th{background:#f7f8fa;color:#52606c;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}td small{display:block;color:var(--muted);margin-top:3px}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:.7rem;font-weight:850;white-space:nowrap}.badge.success{background:#e9f7ef;color:var(--success)}.badge.warning{background:#fff3dd;color:var(--warning)}.badge.danger{background:#fdeaea;color:var(--danger)}.badge.muted{background:#edf0f2;color:#5f6973}.pagination{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin:18px 0}.pagination a{display:grid;place-items:center;min-width:38px;height:38px;background:#fff;border:1px solid var(--line);border-radius:10px}.pagination a.active{background:var(--primary);color:#fff}.flash{margin-bottom:12px;padding:12px 14px;border-radius:12px;border:1px solid}.flash-success{background:#ecf9f1;border-color:#bde7cd;color:#17663f}.flash-error{background:#fff0f0;border-color:#f1c3c3;color:#8d2b2b}.flash-warning{background:#fff8e8;border-color:#f2d89e;color:#7d570d}.offline-banner{position:fixed;z-index:100;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));padding:11px 14px;border-radius:12px;background:#7f1d1d;color:#fff;text-align:center;font-size:.82rem;font-weight:800;box-shadow:0 10px 28px rgba(0,0,0,.2)}.offline-banner[hidden]{display:none}
@media(max-width:760px){.user-name,.role-pill{display:none}.page-head{align-items:flex-start;flex-direction:column}.page-head>.btn{width:100%}.table-wrap{overflow:visible}table,thead,tbody,tr,th,td{display:block}thead{display:none}tbody{display:grid;gap:10px;padding:10px}tr{border:1px solid var(--line);border-radius:13px;padding:10px;background:#fff}td{display:grid;grid-template-columns:94px minmax(0,1fr);gap:8px;border:0;padding:6px 4px}td::before{content:attr(data-label);font-size:.7rem;text-transform:uppercase;color:var(--muted);font-weight:800;letter-spacing:.03em}.table-card{background:transparent;border:0;box-shadow:none}.row-details{grid-column:1/-1}.cart-item{grid-template-columns:1fr}.qty-control{justify-content:flex-start}.unit-label,.remove-item{grid-column:1}.remove-item{text-align:left;padding:0}.confirm-actions{grid-template-columns:1fr}.mainnav{position:sticky;top:59px;z-index:25}}
@media(min-width:640px){.action-grid{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr 1fr}.review-grid,.detail-grid{grid-template-columns:repeat(2,1fr)}.filters{grid-template-columns:repeat(3,1fr);align-items:end}}
@media(min-width:900px){.page-shell{padding:28px 22px 50px}.filters{grid-template-columns:repeat(4,minmax(0,1fr))}.detail-grid{grid-template-columns:repeat(5,1fr)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
.brand-logo{width:38px;height:38px;object-fit:contain;border-radius:10px;background:#fff;border:1px solid var(--line);padding:3px}
/* V2 mobile chantier */
.optional{font-weight:600;color:var(--muted);font-size:.72rem}.worker-context{font-size:.86rem}.worker-context strong{color:var(--text)}.compact-section{padding:14px}.section-head.compact{margin-bottom:10px}.section-head.compact small{display:block;margin-top:3px;color:var(--muted);font-size:.77rem}.scan-actions{display:grid;gap:9px;margin-bottom:12px}.btn-scan{min-height:58px;background:#17202a;color:#fff;border:0;font-size:.9rem;letter-spacing:.02em}.btn-scan span{font-size:1.25rem}.barcode-manual{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.barcode-manual input{min-width:0}.scan-help{display:block;color:var(--muted);font-size:.73rem;line-height:1.4}.or-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:.72rem;text-transform:uppercase;font-weight:800;margin:12px 0}.or-divider::before,.or-divider::after{content:"";height:1px;background:var(--line);flex:1}.btn-add-more{width:100%}.optional-details{padding:14px}.optional-details summary{cursor:pointer;font-weight:800}.optional-details summary span{font-weight:600;color:var(--muted);font-size:.75rem}.optional-details[open] summary{margin-bottom:12px}.location-line,.cart-location{color:#8a5a13!important;font-weight:700}.scanner-modal{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:rgba(8,14,20,.78);padding:12px}.scanner-modal[hidden]{display:none}.scanner-panel{width:min(560px,100%);background:#fff;border-radius:20px;padding:14px;box-shadow:0 20px 60px rgba(0,0,0,.28)}.scanner-titlebar{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}.scanner-titlebar strong,.scanner-titlebar small{display:block}.scanner-titlebar small{color:var(--muted);margin-top:3px}.scanner-video-wrap{position:relative;overflow:hidden;border-radius:15px;background:#0b1117;aspect-ratio:4/3}.scanner-video-wrap video{width:100%;height:100%;object-fit:cover}.scanner-frame{position:absolute;left:9%;right:9%;top:34%;height:32%;border:3px solid #fff;border-radius:13px;box-shadow:0 0 0 999px rgba(0,0,0,.18)}.scanner-status{min-height:22px;margin:10px 0;color:var(--muted);font-size:.83rem}.scanner-status[data-kind="success"]{color:var(--success);font-weight:800}.scanner-status[data-kind="error"]{color:var(--danger);font-weight:800}.scanner-status[data-kind="warning"]{color:var(--warning);font-weight:800}.scanner-open{overflow:hidden}.install-banner{position:fixed;z-index:120;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:calc(12px + env(safe-area-inset-bottom));max-width:620px;margin:auto;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 18px 55px rgba(23,32,42,.2);padding:14px;display:flex;align-items:center;justify-content:space-between;gap:14px}.install-banner[hidden]{display:none}.install-banner strong,.install-banner span{display:block}.install-banner span{font-size:.78rem;color:var(--muted);margin-top:3px}.install-actions{display:flex;gap:7px;flex:0 0 auto}.install-dialog{border:0;border-radius:20px;padding:0;max-width:min(480px,calc(100% - 28px));box-shadow:0 20px 70px rgba(0,0,0,.28)}.install-dialog::backdrop{background:rgba(10,15,20,.6)}.install-dialog form{position:relative;padding:24px}.install-dialog h2{margin:0 35px 10px 0}.install-dialog p{line-height:1.55;color:var(--muted)}.install-close{position:absolute;right:12px;top:12px}.nav-icon{display:none}.ticket-mail-state{align-self:center}
@media(max-width:760px){
  body{padding-bottom:calc(70px + env(safe-area-inset-bottom))}.topbar{padding-top:max(8px,env(safe-area-inset-top));padding-bottom:8px}.brand strong{font-size:.82rem}.brand small{font-size:.66rem}.brand-mark,.brand-logo{width:34px;height:34px}.page-shell{padding:13px 11px calc(84px + env(safe-area-inset-bottom))}.page-head{margin-bottom:11px}.movement-head h1{font-size:1.55rem}.movement-head .eyebrow{margin-top:0}.card{border-radius:14px}.worker-nav{position:fixed!important;left:0;right:0;bottom:0;top:auto!important;z-index:90;display:grid;grid-template-columns:repeat(3,1fr);gap:0;padding:5px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left));border-top:1px solid var(--line);border-bottom:0;box-shadow:0 -7px 28px rgba(23,32,42,.08)}.worker-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:50px;padding:4px 8px;font-size:.7rem}.worker-nav .nav-icon{display:block;font-size:1.2rem;line-height:1}.worker-shell{padding-bottom:calc(90px + env(safe-area-inset-bottom))}.worker-hero{padding-top:2px}.worker-hero h1{font-size:1.55rem}.worker-hero .action-grid{margin-top:12px}.big-action{min-height:104px;padding:16px;border-radius:17px}.action-icon{width:44px;height:44px}.big-action strong{font-size:.92rem}.big-action small{font-size:.75rem}.worker-dashboard{grid-template-columns:1fr}.form-section{gap:9px}.step{width:30px;height:30px;flex-basis:30px;border-radius:9px;font-size:.82rem}.select-filter{display:none}.movement-form select{min-height:54px;font-size:1rem}.quick-items{padding-bottom:10px}.btn-scan{min-height:62px}.barcode-manual{grid-template-columns:1fr}.barcode-manual .btn{min-height:48px}.cart-item{padding:11px}.qty-control button{width:44px;height:44px}.qty-control input{width:70px;min-height:44px}.sticky-submit{bottom:calc(68px + env(safe-area-inset-bottom));margin-left:-3px;margin-right:-3px;padding:6px}.sticky-submit .btn-xl{min-height:58px}.optional-details{margin-bottom:8px}.install-banner{bottom:calc(74px + env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr}.install-actions{display:grid;grid-template-columns:1fr 1fr}.scanner-panel{padding:10px;border-radius:16px}.scanner-video-wrap{aspect-ratio:3/4;max-height:66dvh}.scanner-frame{top:38%;height:24%}
}

/* V2.3 scan chantier */
.site-scan-hint{display:block;color:var(--muted);font-size:.74rem;margin:3px 0 7px}.site-scanned{outline:3px solid rgba(23,138,85,.18);border-color:var(--success)!important}.scanner-site-ok{color:var(--success)!important;font-weight:850}.page-actions{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:760px){.page-actions{width:100%;display:grid;grid-template-columns:1fr}.page-actions .btn{width:100%}}

/* V2.5.0 — recherche stock temps réel depuis le Dashboard */
.dashboard-inventory{margin:0 0 14px}.inventory-head small{display:block;margin-top:4px;color:var(--muted);font-size:.78rem}.inventory-search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.inventory-search-row .btn-scan{min-height:48px}.inventory-results{display:grid;gap:9px;margin-top:12px}.inventory-result{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,.65fr);gap:14px;border:1px solid var(--line);background:#fbfcfd;border-radius:14px;padding:13px}.inventory-result-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.inventory-result-main>small{display:block;margin-top:4px;color:var(--muted);font-size:.76rem}.inventory-result-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px}.inventory-result-facts>div{background:#fff;border:1px solid var(--line);border-radius:11px;padding:9px}.inventory-result-facts span,.inventory-result-facts b{display:block}.inventory-result-facts span{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:800}.inventory-result-facts b{margin-top:4px;font-size:.88rem}.badge.danger{background:#fee7e7;color:#a22626}.badge.warning{background:#fff0d5;color:#9a5c00}.badge.success{background:#e7f6ee;color:#0f7e4d}
@media(max-width:700px){.inventory-search-row{grid-template-columns:1fr}.inventory-result{grid-template-columns:1fr}.inventory-result-facts{grid-template-columns:1fr 1fr}.dashboard-inventory{margin-top:0}}
@media(max-width:390px){.inventory-result-facts{grid-template-columns:1fr}}

/* V2.6 — parcours mouvements : scan dédié chantier / salarié */
.movement-field-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:8px}.movement-field-head>div{min-width:0}.movement-field-head .site-scan-hint{margin-bottom:0}.btn-scan-inline{flex:0 0 auto;min-height:42px;padding:8px 12px;background:#eef4f8;border-color:#cbd6df;color:#17202a;font-size:.78rem}.btn-scan-inline span{font-size:1rem}.movement-filter-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.movement-empty{display:grid;place-items:center;text-align:center;gap:8px;min-height:180px;padding:28px}.movement-empty-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:#eef1f4;font-size:1.25rem}.movement-empty h2{margin:0;font-size:1.05rem}.movement-empty p{margin:0;color:var(--muted);max-width:520px}.movement-result-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px}.movement-result-summary p{margin:0;color:var(--muted);font-size:.82rem}
@media(max-width:760px){.movement-field-head{align-items:stretch;flex-direction:column}.btn-scan-inline{width:100%;min-height:52px}.movement-filter-actions{display:grid;grid-template-columns:1fr 1fr}.movement-filter-actions .btn{width:100%}.movement-result-summary{align-items:flex-start;flex-direction:column}}

/* V2.7 — finitions traçabilité / scanner / états vides */
.equipment-empty-state{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;padding:24px}.equipment-empty-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:#eef4f8;color:#17202a;font-size:1.55rem;font-weight:900}.equipment-empty-state h2{margin:0 0 5px;font-size:1.05rem}.equipment-empty-state p{margin:0;color:var(--muted);max-width:680px}.btn-scan-inline{display:inline-flex!important;align-items:center!important;gap:9px!important;min-height:48px!important;padding:7px 13px 7px 8px!important;border:1px solid #cbd8e3!important;background:linear-gradient(180deg,#f8fbfd,#eaf2f7)!important;box-shadow:0 3px 10px rgba(23,32,42,.05);border-radius:13px!important}.btn-scan-inline:hover{transform:translateY(-1px);border-color:#9fb5c6!important;background:#fff!important}.scan-action-icon{display:grid!important;place-items:center;width:34px;height:34px;border-radius:10px;background:#17202a;color:#fff;font-size:1.05rem!important;line-height:1}.scan-action-copy{display:grid;gap:0;text-align:left;line-height:1.05}.scan-action-copy strong{font-size:.78rem}.scan-action-copy small{font-size:.64rem;color:var(--muted);font-weight:700}.movement-history-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}.history-count{display:grid;justify-items:end}.history-count strong{font-size:1.65rem;line-height:1}.history-count span{font-size:.72rem;color:var(--muted);font-weight:700}.movement-filters{align-items:end}.movement-type-chip{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:.72rem;font-weight:850;background:#edf1f4}.movement-type-chip.out{background:#e8f0f7;color:#23445f}.movement-type-chip.return{background:#e7f6ee;color:#0f7e4d}.recent-fallback .section-head{padding:16px 16px 0}.admin-empty{display:grid;justify-items:center;text-align:center;gap:4px;padding:28px;color:var(--muted)}.admin-empty>span{font-size:1.7rem}.admin-empty strong{color:var(--text)}.smtp-recommended{border-color:#bdd8c9;background:#f1faf5}.mail-fallback-title{font-size:.88rem;color:var(--muted);border-top:1px dashed var(--line);padding-top:12px}.mail-diagnostic-card .detail-grid{margin-top:8px}
@media(max-width:760px){.equipment-empty-state{grid-template-columns:1fr;text-align:center;justify-items:center}.equipment-empty-state .btn{width:100%}.movement-history-head{align-items:flex-start;flex-direction:column}.history-count{justify-items:start}.btn-scan-inline{width:100%;justify-content:center!important;min-height:58px!important}.scan-action-icon{width:38px;height:38px}.scan-action-copy strong{font-size:.86rem}.scan-action-copy small{font-size:.7rem}}

/* Base v2.7 — robustesse historique et finition mobile */
.history-count small{margin-top:4px;font-size:.68rem;color:var(--muted);font-weight:700}.legacy-trace-card{border-color:#eed7a8;background:linear-gradient(180deg,#fffdf8,#fff)}.legacy-trace-card .section-head{padding:18px 18px 4px}.legacy-trace-card .section-head p{margin:4px 0 0;color:var(--muted);font-size:.8rem;max-width:760px}.btn-scan-inline{border-color:#b8c8d5!important;background:linear-gradient(135deg,#f8fbfd 0%,#e6f0f7 100%)!important}.btn-scan-inline .scan-action-icon{box-shadow:0 5px 12px rgba(23,32,42,.18)}.btn-scan-inline:focus-visible{outline:3px solid rgba(31,111,235,.24);outline-offset:2px}.mail-diagnostic-card{border-color:#c9d8e3}.smtp-recommended{display:grid;gap:4px;border:1px solid #b9dcc8;border-radius:12px;padding:12px}.setting-help small{color:var(--muted)}
@media(max-width:760px){.legacy-trace-card .table-wrap{margin:0}.history-count small{text-align:left}.equipment-empty-state{padding:20px 16px}.btn-scan-inline{box-shadow:0 7px 18px rgba(23,32,42,.08)!important}}

.smtp-dashboard-warning{display:flex;align-items:center;justify-content:space-between;gap:16px;border-color:#efd29b;background:linear-gradient(135deg,#fffaf0,#fff)}.smtp-dashboard-warning strong{display:block;color:#8a5a13}.smtp-dashboard-warning p{margin:4px 0 0;color:var(--muted);font-size:.8rem}.smtp-dashboard-warning .btn{flex:0 0 auto}@media(max-width:760px){.smtp-dashboard-warning{display:grid}.smtp-dashboard-warning .btn{width:100%}}

.return-products-btn{margin:8px 0 4px;width:100%;border-style:dashed!important}.return-products-btn:hover{border-style:solid!important}

/* V2.9.0 — ergonomie, fluidité, accessibilité et responsive */
:root{--shadow-hover:0 16px 42px rgba(23,32,42,.11);--ease-out:cubic-bezier(.2,.7,.2,1);--focus:0 0 0 4px rgba(31,111,235,.16)}
html{scroll-behavior:smooth}.skip-link{position:fixed;z-index:9999;left:12px;top:10px;transform:translateY(-150%);background:#17202a;color:#fff;padding:10px 14px;border-radius:10px;font-weight:850;box-shadow:var(--shadow);transition:transform .18s var(--ease-out)}.skip-link:focus{transform:translateY(0)}
.topbar{box-shadow:0 1px 0 rgba(23,32,42,.02)}.brand-mark,.brand-logo{transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out)}.brand:hover .brand-mark,.brand:hover .brand-logo{transform:scale(1.03);box-shadow:0 7px 18px rgba(23,32,42,.16)}
.mainnav a,.adminnav a{position:relative;transition:background .18s var(--ease-out),color .18s var(--ease-out),transform .18s var(--ease-out),border-color .18s var(--ease-out)}.mainnav a.active{background:#17202a;color:#fff;box-shadow:0 5px 14px rgba(23,32,42,.14)}.mainnav a.active .nav-icon{color:#fff}.mainnav a:active,.adminnav a:active{transform:scale(.98)}
.nav-icon{display:inline-block;min-width:1.1em;text-align:center}.role-pill.role-admin{background:#e8eefb;color:#284b8d}.role-pill.role-responsable{background:#eef7f2;color:#17663f}.role-pill.role-ouvrier{background:#f2f3f5;color:#56616d}
.page-shell{width:min(1280px,100%)}.page-shell>section,.page-shell>div:not(.route-progress),.page-shell>nav{animation:page-enter .28s var(--ease-out) both}@keyframes page-enter{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.card{transition:box-shadow .2s var(--ease-out),border-color .2s var(--ease-out),transform .2s var(--ease-out)}.big-action{transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out),filter .2s var(--ease-out)}.big-action:hover{transform:translateY(-3px);box-shadow:0 18px 38px rgba(23,32,42,.2);filter:saturate(1.04)}.big-action:active{transform:translateY(-1px) scale(.995)}
.btn,.icon-btn{transition:transform .16s var(--ease-out),box-shadow .16s var(--ease-out),background .16s var(--ease-out),border-color .16s var(--ease-out),opacity .16s}.btn:hover:not(:disabled),.icon-btn:hover:not(:disabled){box-shadow:0 7px 18px rgba(23,32,42,.1)}.btn:active:not(:disabled),.icon-btn:active:not(:disabled){transform:scale(.98)}.btn:focus-visible,.icon-btn:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid rgba(31,111,235,.3);outline-offset:2px}
input,select,textarea,.readonly-field{transition:border-color .16s,box-shadow .16s,background .16s}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:#aeb8c1}input:focus,select:focus,textarea:focus{border-color:#607485;box-shadow:var(--focus)}
.form-section{border-color:#dfe4e8}.form-section:focus-within{border-color:#bdc9d3;box-shadow:0 10px 32px rgba(23,32,42,.08)}.step{transition:background .18s,color .18s,transform .18s}.form-section:focus-within>.step{background:#17202a;color:#fff;transform:scale(1.04)}
.flash{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;box-shadow:0 8px 24px rgba(23,32,42,.07);animation:flash-in .25s var(--ease-out) both}.flash>span{min-width:0;line-height:1.45}.flash-close{flex:0 0 auto;width:30px;height:30px;border:0;border-radius:8px;background:rgba(255,255,255,.55);color:currentColor;font-size:1.1rem;line-height:1;font-weight:900}.flash.is-leaving{animation:flash-out .18s ease forwards}@keyframes flash-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@keyframes flash-out{to{opacity:0;transform:translateY(-5px)}}
.route-progress{position:fixed;z-index:500;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,#17202a,#d98d24);box-shadow:0 1px 8px rgba(23,32,42,.2);opacity:0;pointer-events:none;transition:width .28s var(--ease-out),opacity .15s}.route-progress.active{width:76%;opacity:1}.route-progress.done{width:100%;opacity:0}
details>summary{list-style:none;user-select:none}details>summary::-webkit-details-marker{display:none}.admin-editor>summary::before,.row-details>summary::before,.optional-details>summary::before{content:'›';display:inline-block;margin-right:7px;transition:transform .18s var(--ease-out)}details[open]>summary::before{transform:rotate(90deg)}
.table-wrap{scrollbar-width:thin;scrollbar-color:#b9c2ca transparent}tbody tr{transition:background .15s var(--ease-out)}
@media(min-width:761px){tbody tr:hover{background:#fbfcfd}.table-card td{vertical-align:middle}.mainnav a:hover:not(.active){transform:translateY(-1px)}}
@media(max-width:760px){
  .topbar{padding-top:max(8px,env(safe-area-inset-top))}.brand>span:last-child{max-width:58vw}.mainnav:not(.worker-nav){top:54px;padding:7px 9px}.mainnav:not(.worker-nav) a{min-height:44px;display:inline-flex;align-items:center;gap:6px}.page-shell{padding-left:10px;padding-right:10px}.card{padding:14px}.page-head h1,.hero h1{letter-spacing:-.025em}.filters{gap:8px}.filters .btn{min-height:50px}.table-card tbody{padding:8px}.table-card tr{box-shadow:0 5px 18px rgba(23,32,42,.04)}td{grid-template-columns:minmax(86px,34%) minmax(0,1fr)}.btn{min-height:48px}.icon-btn{min-width:44px;min-height:44px}.form-section{padding:14px}.movement-field-head{gap:9px}.search-result{min-height:54px}.flash{position:relative}.adminnav{padding-left:9px;padding-right:9px}
}
@media(max-width:380px){.brand strong{font-size:.76rem}.brand small{display:none}.page-shell{padding-left:8px;padding-right:8px}.card{padding:12px}.step{display:none}.form-section{gap:0}td{grid-template-columns:1fr}td::before{margin-bottom:2px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.page-shell>section,.page-shell>div,.page-shell>nav,.flash{animation:none!important}.route-progress{display:none!important}.brand-mark,.brand-logo,.btn,.icon-btn,.mainnav a,.adminnav a,.card,.big-action,.step,details>summary::before{transition:none!important}}
body.drawer-open{overflow:hidden}

/* V2.9.1 — identité visuelle robuste sur mobile */
.brand-visual{position:relative;display:grid;place-items:center;flex:0 0 auto;width:38px;height:38px}
.brand-visual .brand-logo,.brand-visual .brand-logo-fallback{grid-area:1/1}
.brand-logo[hidden],.brand-logo-fallback[hidden]{display:none!important}
.field-warning{margin:8px 0 0;padding:10px 12px;border:1px solid #e7c77e;border-radius:10px;background:#fff8e8;color:#795414;font-size:.82rem;line-height:1.4}
@media(max-width:760px){.brand-visual{width:34px;height:34px}}
