*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#f4f7fb;color:#152137;display:flex;min-height:100vh}aside{width:275px;background:linear-gradient(180deg,#07162a,#102744);color:#fff;padding:22px 14px;flex:none}.brand{display:flex;gap:12px;align-items:center;padding:0 10px 22px}.homeIcon{font-size:42px;color:#49d17c}.brand b{font-size:20px}.brand small{display:block;font-size:11px;opacity:.8;margin-top:3px}.brand i{display:inline-block;background:#2fb358;border-radius:5px;padding:3px 7px;font-size:10px;margin-top:6px}nav{display:grid;gap:4px}nav button{border:0;background:transparent;color:#eef5ff;text-align:left;padding:11px 13px;border-radius:8px;font-size:14px;cursor:pointer}nav button.active,nav button:hover{background:#2568d4}.sideCard{background:#173556;border-radius:10px;padding:13px;margin:16px 7px 0;font-size:11px}.sideCard p{margin:9px 0;color:#e0eafa}.sideCard .ok{color:#45d879}main{flex:1;padding:20px 24px;overflow:auto}header{display:flex;align-items:center;justify-content:space-between;gap:18px}h1{margin:0 0 4px;font-size:21px}header span{font-size:12px;color:#647184}.search{display:flex;flex:1;max-width:500px}.search input{width:100%;padding:14px;border:1px solid #d9dfe8;border-radius:10px 0 0 10px;font-size:14px}.search button{width:50px;border:1px solid #d9dfe8;background:#fff;border-radius:0 10px 10px 0}.topActions{display:flex;gap:8px}.topActions button{background:#fff;border:0;padding:8px 11px;border-radius:9px;font-size:18px;cursor:pointer}.topActions small{display:block;font-size:9px;color:#667286}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:22px 0}.cards.five{grid-template-columns:repeat(5,1fr)}.card{background:white;border-radius:12px;padding:17px;border:1px solid #dce4ef;border-top:3px solid #2876d9;box-shadow:0 1px 3px #00000008;cursor:pointer}.card b{font-size:29px;display:block}.card span{display:block;font-weight:700;margin-top:5px}.card small{display:block;color:#758091;margin-top:13px;border-top:1px solid #edf0f4;padding-top:11px}.green{border-color:#68c487}.orange{border-color:#f0a34c}.red{border-color:#eb6b6b}.purple{border-color:#9673d0}.grid3{display:grid;grid-template-columns:1.15fr 1.05fr 1.05fr;gap:15px}.grid4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:15px}.panel{background:#fff;border-radius:12px;padding:16px;box-shadow:0 1px 4px #0000000a;margin-top:15px}.panel h2{font-size:16px;margin:0 0 13px}.panel h3{font-size:13px;margin-top:18px}.categories{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.categories button{border:1px solid #e1e6ed;background:#fafbfd;border-radius:9px;padding:12px 4px;font-size:22px;cursor:pointer}.categories b,.categories small{display:block}.categories b{font-size:10px;margin-top:5px}.categories small{font-size:9px;color:#7b8591;margin-top:3px}.item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #edf0f4;font-size:12px}.item button,.stockrow button,.button{border:1px solid #dce2e9;background:#fff;border-radius:7px;padding:7px 9px;cursor:pointer;text-decoration:none;color:#1e3555}.thumb{width:43px;height:43px;background:#f1f4f7;border-radius:7px;display:flex;align-items:center;justify-content:center;overflow:hidden}.thumb img{width:100%;height:100%;object-fit:contain}.grow{flex:1}.item small,.prod small{display:block;color:#778393;margin-top:3px}.badge{padding:4px 7px;border-radius:7px;background:#eef3f8;font-size:10px}.dangerBadge{background:#e53935;color:#fff}.shopline{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid #edf0f4;font-size:12px}.shopline small{display:block;color:#768192;margin-left:17px}.shopline em{font-style:normal;background:#eaf7ef;color:#2b8550;border-radius:6px;padding:4px 7px;font-size:10px}.statline{display:flex;justify-content:space-between;align-items:center;font-size:11px;padding:6px 0}.bar{height:10px;background:#e7ecf2;border-radius:8px;overflow:hidden;margin-bottom:8px}.bar i{height:100%;display:block;background:#3977d4}.scanHome{text-align:center}.fakeScan{height:120px;background:#e6ebf1;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:50px;position:relative}.fakeScan div{position:absolute;left:15%;right:15%;top:50%;height:2px;background:#35be57}.scanHome p{font-size:10px}.tip{background:#eaf4ff;border:1px solid #d5e7fb;border-radius:10px;padding:12px;margin-top:15px;font-size:11px}.tip span{float:right}.toolbar{display:flex;justify-content:space-between;align-items:center;margin:20px 0 10px}.stockrow{display:grid;grid-template-columns:2fr 1fr 1fr .4fr 1fr;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #edf0f4;font-size:12px}.prod{display:flex;align-items:center;gap:10px}.primary,.secondary,.danger{padding:10px 14px;border-radius:8px;border:0;cursor:pointer;display:inline-block}.primary{background:#286bd7;color:#fff}.secondary{background:#edf3fb;color:#245fae}.danger{background:#fff0f0;color:#bd3434;border:1px solid #efcaca}.modal{position:fixed;inset:0;background:#0008;display:flex;align-items:center;justify-content:center;padding:20px;z-index:20}.hidden{display:none!important}.dialog{background:#fff;width:min(820px,96vw);max-height:94vh;overflow:auto;border-radius:16px;padding:24px;position:relative}.dialog.small{width:min(440px,94vw)}.close{position:absolute;right:13px;top:9px;border:0;background:none;font-size:28px}.photoRow{display:flex;align-items:center;gap:15px;background:#f5f7fa;padding:12px;border-radius:10px}.preview{width:100px;height:100px;background:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:35px;overflow:hidden}.preview img{width:100%;height:100%;object-fit:contain}.tabs{display:flex;gap:6px;margin:14px 0}.tab{border:0;background:#edf1f6;padding:9px 13px;border-radius:7px}.tab.active{background:#2876d9;color:#fff}.form{display:grid;grid-template-columns:1fr 1fr;gap:11px}.form label,.dialog>label,.panel label{font-size:11px;color:#5d6877}.form input,.form select,.form textarea,.dialog>label input,.dialog>label select,.panel input{display:block;width:100%;padding:10px;border:1px solid #d8dee6;border-radius:8px;margin-top:4px}.wide{grid-column:1/-1}.dialogActions{display:flex;justify-content:space-between;margin-top:16px}.msg{font-size:12px;color:#286bd7;margin:8px 0}.hint{font-size:11px;color:#6f7a89;line-height:1.45}.empty{font-size:12px;color:#8a94a0;padding:12px 0}.movement{font-size:9px;font-weight:700;padding:5px 7px;border-radius:7px}.movement.in{background:#e6f7eb;color:#28824a}.movement.out{background:#fff0f0;color:#c13939}.settingsGrid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.settingsGrid .panel{margin-top:15px}.scanner{width:min(760px,96vw)}.cameraBox{position:relative;background:#111;border-radius:10px;overflow:hidden}.cameraBox video{display:block;width:100%;max-height:55vh;min-height:260px;object-fit:cover}.scanFrame{position:absolute;left:12%;right:12%;top:35%;height:30%;border:3px solid #43d066;border-radius:8px;box-shadow:0 0 0 999px #0003}.scannerButtons{margin:10px 0}.scanManual{display:flex;gap:8px}.scanManual input{flex:1;padding:10px;border:1px solid #d8dee6;border-radius:8px}@media(max-width:1150px){aside{width:215px}.cards.five{grid-template-columns:repeat(3,1fr)}.grid3,.grid4{grid-template-columns:1fr 1fr}.topActions{display:none}}@media(max-width:800px){aside{display:none}main{padding:12px}.grid3,.grid4,.settingsGrid{grid-template-columns:1fr}.cards,.cards.five{grid-template-columns:repeat(2,1fr)}.form{grid-template-columns:1fr}.stockrow{grid-template-columns:1fr .5fr 1fr}.stockrow>span{display:none}}
.locationAdd{display:flex;gap:8px;margin:10px 0 14px}.locationAdd input{flex:1}.locationRow{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid #edf0f4;font-size:12px}.locationRow small{display:block;color:#7b8592;margin-top:3px}.locationRow button{border:1px solid #dce2e9;background:#fff;border-radius:7px;padding:7px 9px;cursor:pointer}.locationRow .dangerIcon{color:#bd3434;background:#fff6f6}

.shoppingItem{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #edf0f4;font-size:12px}.shoppingItem .thumb{flex:none}.shoppingItem button{border:1px solid #dce2e9;background:#fff;border-radius:7px;padding:7px 9px;cursor:pointer}.shoppingItem .dangerIcon{color:#bd3434;background:#fff6f6}.shoppingDone{opacity:.58}.shoppingDone .grow b{text-decoration:line-through}.shoppingCheck{display:flex!important;align-items:center!important}.shoppingCheck input{width:auto!important;margin:0!important}.photoUploadBtn{margin-top:7px!important}.form select{background:#fff}.locationAdd input{min-width:0}

/* V4.3 — Lisibilité : polices légèrement agrandies */
body{font-size:16px}
nav button{font-size:15px}
.brand b{font-size:21px}
.brand small{font-size:12px}
.sideCard{font-size:12px}
h1{font-size:23px}
header span{font-size:13px}
.search input{font-size:15px}
.topActions small{font-size:10px}
.card span{font-size:14px}
.card small{font-size:12px}
.panel h2{font-size:17px}
.panel h3{font-size:14px}
.categories b{font-size:11px}
.categories small{font-size:10px}
.item,.stockrow,.shoppingItem{font-size:13px}
.item small,.prod small,.shoppingItem small{font-size:11px}
.shopline{font-size:13px}
.shopline small,.statline,.tip,.hint,.msg,.empty{font-size:12px}
.form label,.dialog>label,.panel label{font-size:12px}
.form input,.form select,.form textarea,.dialog>label input,.dialog>label select,.panel input{font-size:14px}
button,.button{font-size:13px}

/* V4.5 — tris par colonnes */
.tablePanel{padding:0;overflow:hidden}
.listHead{display:grid;gap:10px;align-items:center;background:#f5f8fc;border-bottom:1px solid #dfe5ed;padding:10px 12px;font-size:12px;font-weight:700;color:#556275}
.sortHead{border:0;background:transparent;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left}.sortHead:hover{color:#286bd7}.sortHead span{font-size:11px;margin-left:3px;color:#7a8798}
.stockHead{grid-template-columns:2fr 1fr 1fr .4fr 1fr}
.movementHead,.movementRow{grid-template-columns:1.1fr .6fr 2fr .45fr}
.movementRow{display:grid;gap:10px;align-items:center;border-bottom:1px solid #edf0f4;padding:10px 12px;font-size:12px}.movementRow small{display:block;color:#778393;margin-top:3px}
.shoppingHead,.shoppingItem{grid-template-columns:.2fr 2fr .65fr 1fr 1fr}
.shoppingItem{display:grid!important;align-items:center!important}.shoppingProduct{display:flex;align-items:center;gap:10px}.shoppingProduct small{display:block;color:#778393;margin-top:3px}.shoppingActions{display:flex;gap:5px;justify-content:flex-end}
.expiryHead,.expiryTableRow{grid-template-columns:2fr 1fr .6fr 1.2fr .5fr}
.expiryTableRow{display:grid;gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid #edf0f4;font-size:12px}.expiryTableRow button{border:1px solid #dce2e9;background:#fff;border-radius:7px;padding:7px 9px;cursor:pointer}
.warrantyHead,.warrantyRow{grid-template-columns:1.6fr .9fr .9fr 1fr .7fr 1.2fr}
.warrantyRow{display:grid;gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid #edf0f4;font-size:12px}.warrantyRow button{border:1px solid #dce2e9;background:#fff;border-radius:7px;padding:7px 9px;cursor:pointer}
.locationsHead,.locationSummary{grid-template-columns:2fr .6fr .6fr}.locationSummary{display:grid;gap:10px;padding:10px 12px;border-bottom:1px solid #edf0f4;font-size:12px}
@media(max-width:900px){.listHead{display:none}.stockrow,.shoppingItem,.movementRow,.expiryTableRow,.warrantyRow,.locationSummary{grid-template-columns:1fr auto}.stockrow>span,.shoppingItem>div:nth-child(3),.shoppingItem>div:nth-child(4),.movementRow>span:first-child,.expiryTableRow>span:nth-child(2),.expiryTableRow>span:nth-child(4),.warrantyRow>span{display:none}}

/* V4.6 — Accueil avec tuiles colorées */
.cards.five .card{
 position:relative;overflow:hidden;border:0;min-height:125px;
 box-shadow:0 5px 16px rgba(31,48,75,.10);
 transition:transform .15s ease,box-shadow .15s ease
}
.cards.five .card:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(31,48,75,.16)}
.cards.five .card::after{
 content:"";position:absolute;width:75px;height:75px;border-radius:50%;
 right:-22px;top:-22px;background:rgba(255,255,255,.34)
}
.cards.five .card.blue{background:linear-gradient(135deg,#e7f1ff,#f8fbff);border-left:5px solid #2876d9}
.cards.five .card.green{background:linear-gradient(135deg,#e5f8ec,#fbfffc);border-left:5px solid #36a967}
.cards.five .card.orange{background:linear-gradient(135deg,#fff0dd,#fffaf4);border-left:5px solid #e68b2c}
.cards.five .card.red{background:linear-gradient(135deg,#ffe7e7,#fffafa);border-left:5px solid #df5353}
.cards.five .card.purple{background:linear-gradient(135deg,#eee8ff,#fbf9ff);border-left:5px solid #7957c5}

.grid3>.panel,.grid4>.panel{
 border:1px solid #e1e8f0;overflow:hidden;
 box-shadow:0 4px 14px rgba(31,48,75,.07)
}
.grid3>.panel h2,.grid4>.panel h2{
 margin:-16px -16px 14px;padding:13px 16px;
 border-bottom:1px solid rgba(0,0,0,.05)
}
.grid3>.panel:nth-child(1){background:linear-gradient(180deg,#f2f7ff,#fff 42%)}
.grid3>.panel:nth-child(1) h2{background:#dceaff;color:#205da9}
.grid3>.panel:nth-child(2){background:linear-gradient(180deg,#fff5e9,#fff 42%)}
.grid3>.panel:nth-child(2) h2{background:#ffe5c4;color:#a55a0d}
.grid3>.panel:nth-child(3){background:linear-gradient(180deg,#f3efff,#fff 42%)}
.grid3>.panel:nth-child(3) h2{background:#e5dcff;color:#6444aa}

.grid4>.panel:nth-child(1){background:linear-gradient(180deg,#ecf8ff,#fff 42%)}
.grid4>.panel:nth-child(1) h2{background:#d8f0ff;color:#17658e}
.grid4>.panel:nth-child(2){background:linear-gradient(180deg,#ecfbf1,#fff 42%)}
.grid4>.panel:nth-child(2) h2{background:#d9f5e3;color:#257547}
.grid4>.panel:nth-child(3){background:linear-gradient(180deg,#fff4e8,#fff 42%)}
.grid4>.panel:nth-child(3) h2{background:#ffe4c6;color:#995a17}
.grid4>.panel:nth-child(4){background:linear-gradient(180deg,#f5efff,#fff 42%)}
.grid4>.panel:nth-child(4) h2{background:#e9ddff;color:#6544a4}

.categories button{
 border:0;box-shadow:0 2px 7px rgba(32,48,70,.08);
 transition:transform .12s ease,box-shadow .12s ease
}
.categories button:hover{transform:translateY(-2px);box-shadow:0 5px 12px rgba(32,48,70,.14)}
.categories button:nth-child(1){background:#e8f3ff}
.categories button:nth-child(2){background:#e9f8ef}
.categories button:nth-child(3){background:#fff2df}
.categories button:nth-child(4){background:#f0ebff}
.categories button:nth-child(5){background:#e8f8e5}
.categories button:nth-child(6){background:#f1f3f6}

.tip{
 background:linear-gradient(90deg,#e7f3ff,#f4f0ff);
 border:1px solid #cfdef3;box-shadow:0 3px 10px rgba(31,48,75,.06)
}

/* V4.7 — scan mobile par photo */
.photoScanBox{margin:14px 0;padding:14px;border:1px solid #d9e3ef;border-radius:10px;background:linear-gradient(180deg,#f6fbff,#fff)}
.photoScanBox h3{margin:0 0 5px;font-size:14px;color:#245fae}.photoScanBox p{font-size:12px;color:#687587;margin:0 0 10px}
.photoScanBox input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.photoScanButton{display:inline-block;background:#2c8a52;color:#fff;padding:12px 16px;border-radius:9px;font-size:13px;font-weight:700;cursor:pointer}
#photoScanPreview{margin-top:10px}#photoScanPreview img{display:block;max-width:100%;max-height:180px;object-fit:contain;border-radius:8px;border:1px solid #dce3eb;background:#fff}
