@import url('https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap');
:root{--navy:#18364d;--blue:#287f91;--teal:#6ba99e;--bg:#f6f8fa;--surface:#fff;--ink:#263746;--muted:#7b8994;--line:#e5ebef;--soft:#edf5f5;--success:#287b59;--danger:#bd514c;--shadow:0 2px 12px rgba(25,48,70,.035);--radius:11px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 Candara,"Segoe UI",Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{width:230px;background:#fff;border-right:1px solid var(--line);padding:20px 13px 15px;display:flex;flex-direction:column;flex-shrink:0;min-height:100vh}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:19px;padding:2px 9px 23px;color:var(--navy)}.brand small{display:block;font-size:11px;color:var(--muted);font-weight:400}.brand-mark{width:48px;height:48px;border-radius:13px;background:var(--navy);color:white;display:grid;place-items:center;font-weight:800;font-size:19px}.brand-mark.small{width:39px;height:39px;border-radius:11px;font-size:16px}.sidebar nav{display:grid;gap:3px}.sidebar nav a,.logout{display:flex;align-items:center;padding:9px 12px;border-radius:7px;color:#5d6d79;font-size:14px;transition:background .15s,color .15s}.sidebar nav a:hover{background:#f3f7f8;color:var(--navy)}.sidebar nav a.active{background:#eaf3f4;color:#1d6878;font-weight:700}.logout{margin-top:auto;background:#f5f7f8;color:#64737e}.logout:hover{background:#edf2f4;color:var(--navy)}.main{flex:1;min-width:0}.topbar{height:62px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;gap:13px;padding:0 30px;position:sticky;top:0;z-index:5}.topbar>div{display:grid;text-align:right;line-height:1.25;gap:3px}.topbar strong{font-size:14px}.role-pill{background:#f0f5f5;color:#327b78;border-radius:20px;padding:5px 10px;font-size:11px;font-weight:700}.content{padding:27px 30px 40px;max-width:1500px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:19px}.page-heading h1{margin:2px 0;font-size:28px;line-height:1.2;font-weight:700;color:var(--navy)}.eyebrow{color:var(--blue);font-weight:700;font-size:10px;letter-spacing:1px;margin:0}.muted{color:var(--muted);font-size:13px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:12px;margin-bottom:18px}.stat-card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-card{padding:16px 17px;display:grid;gap:5px;min-height:100px}.stat-card span{color:var(--muted);font-size:13px}.stat-card strong{font-size:27px;line-height:1.1;color:var(--navy)}.stat-card small{color:#9aa5ad;font-size:11px}.panel{padding:19px;margin-bottom:16px}.panel h2{font-size:17px;margin:0 0 14px;font-weight:700;color:#2b4152}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-title h2{margin:0}.quick-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:9px}.quick-link{border:1px solid var(--line);border-radius:8px;padding:12px 14px;font-weight:700;color:#344c5e;background:#fff}.quick-link:hover{border-color:#bdd5d7;background:#f9fcfc}.quick-link span{float:right;color:var(--blue);font-size:12px}.btn{border:1px solid transparent;border-radius:7px;padding:8px 13px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-weight:700;font-size:13px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.btn.primary{background:var(--blue);color:white}.btn.primary:hover{background:#206b7a}.btn.light{background:#f4f6f7;color:#465967;border-color:#e6ecef}.btn.light:hover{background:#eaf0f2}.btn.info{background:#edf5f5;color:#286f7c;border-color:#dcebed}.btn.danger{background:#fff4f3;color:var(--danger);border-color:#f3e2e0}.btn.small{padding:6px 9px;font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 15px}.form-grid>label{display:grid;gap:5px;font-size:13px;font-weight:700;color:#4c5d69;min-width:0}.form-grid input,.form-grid select,.form-grid textarea,.login-card input{width:100%;border:1px solid #dfe6ea;border-radius:7px;padding:9px 11px;font:inherit;background:#fff;color:var(--ink);min-width:0;transition:border-color .15s,box-shadow .15s}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.login-card input:focus{outline:0;border-color:#76aeb3;box-shadow:0 0 0 3px #287f9110}.form-grid textarea{resize:vertical}.form-grid .span-2{grid-column:1/-1}.form-actions,.permissions{grid-column:1/-1}.form-actions{display:flex;gap:8px;flex-wrap:wrap;padding-top:3px}.permissions{border-top:1px solid var(--line);padding-top:13px}.permission-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:10px}.permission-grid label{font-size:13px;color:#526475}.table-wrap{width:100%;overflow:auto;border:1px solid var(--line);border-radius:8px}table{border-collapse:collapse;width:100%;font-size:13px;white-space:nowrap;background:#fff}th,td{text-align:left;border-bottom:1px solid var(--line);padding:10px 11px}th{background:#f7f9fa;color:#687783;font-size:10.5px;text-transform:uppercase;letter-spacing:.35px;font-weight:700}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfcfd}.actions{display:flex;gap:5px;align-items:center}.actions form{margin:0}.empty{text-align:center;color:var(--muted);padding:28px!important}.alert{padding:10px 13px;border-radius:8px;margin-bottom:14px;font-size:13px;border:1px solid transparent}.alert.success{background:#eef8f2;color:#28734e;border-color:#dcefe3}.alert.error{background:#fff3f2;color:#a63c36;border-color:#f3dfdc}.wrap-cell{white-space:normal;min-width:220px;max-width:350px}.low-stock{color:#bd514c}.readonly-field{background:#f4f7f8!important;color:#687783!important}.items-heading{display:flex;justify-content:space-between;align-items:center;margin:18px 0 10px}.items-heading h3{font-size:15px;margin:0;color:var(--navy)}.items-table input,.items-table select{min-width:95px;width:100%;border:1px solid #e0e7eb;border-radius:6px;padding:7px 8px;background:white}.items-table td:first-child{min-width:230px}.items-table td{vertical-align:middle}.line-total{font-weight:700;color:var(--navy)}.remove-item{border:0;background:#f8eeee;color:#b64c48;border-radius:6px;width:28px;height:28px;font-size:19px;cursor:pointer}.totals-grid{margin-top:15px}.totals-grid input[readonly]{background:#f5f8f9;color:#314a5a;font-weight:700}.totals-grid label:nth-child(4) input{color:#1c7580}.login-body{min-height:100vh;display:grid;place-items:center;padding:22px;background:#f3f6f8}.login-card{background:#fff;width:min(410px,100%);padding:34px;border:1px solid var(--line);border-radius:15px;box-shadow:0 12px 40px #18354a0d;display:grid;gap:11px}.login-card .brand-mark{margin:0 auto 5px}.login-card h1{text-align:center;margin:0;font-size:28px;color:var(--navy)}.login-card p{text-align:center;margin:0 0 10px}.login-card label{font-size:13px;font-weight:700;color:#4b5d6d}.login-card .alert{margin:0}
@media(max-width:900px){.sidebar{width:205px}.content{padding:23px}.topbar{padding:0 22px}}
@media(max-width:680px){.app-shell{display:block}.sidebar{width:100%;min-height:0;padding:10px 12px 8px;border-right:0;border-bottom:1px solid var(--line)}.brand{padding:0 4px 9px;font-size:17px}.brand-mark.small{width:34px;height:34px}.sidebar nav{display:flex;overflow-x:auto;gap:4px;padding-bottom:2px}.sidebar nav a{white-space:nowrap;padding:7px 10px;font-size:12px}.logout{position:absolute;right:12px;top:11px;margin:0;padding:6px 8px;font-size:11px}.topbar{height:50px;padding:0 14px}.content{padding:16px 13px 25px}.page-heading{align-items:flex-start}.page-heading h1{font-size:24px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.stat-card{padding:13px;min-height:90px}.stat-card strong{font-size:24px}.panel{padding:14px;margin-bottom:13px}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.permission-grid{grid-template-columns:repeat(2,1fr)}.actions{flex-wrap:wrap}.items-heading{gap:8px}.items-table td:first-child{min-width:190px}}
@media(max-width:390px){.page-heading{flex-direction:column}.page-heading>.btn{width:100%}.login-card{padding:26px 21px}}
/* Identité visuelle OK PARTS : jaune chantier, noir et blanc */
:root{--navy:#171717;--blue:#e0a900;--teal:#f2bd16;--soft:#fff5cf}
.btn.primary{background:#e9b300;color:#171717}.btn.primary:hover{background:#f4c52b;color:#111}
.sidebar-logo{width:48px;height:48px;object-fit:contain;flex:none}.brand{color:#171717}.sidebar nav a.active{background:#fff4c7;color:#171717}.sidebar nav a:hover{background:#fff9e6;color:#171717}
.login-body{background:linear-gradient(135deg,#f2b900 0%,#ffd84d 55%,#f7f7f7 100%)}
.login-card{border:1px solid #e5c34f;box-shadow:0 18px 55px rgba(30,25,0,.16);border-radius:18px}
.login-logo{display:block;width:170px;height:170px;object-fit:contain;margin:0 auto 2px}
.login-card h1{color:#111;letter-spacing:.5px}.login-card .btn.primary{background:#f2b900;color:#111}.login-card .btn.primary:hover{background:#ffca28}
.dashboard-filter{display:flex;align-items:end;gap:8px}.dashboard-filter label{display:grid;gap:4px;font-size:12px;font-weight:700;color:#596875}.dashboard-filter input{border:1px solid var(--line);border-radius:7px;padding:8px;background:#fff;font:inherit}
.positive{color:#24834f!important}.negative{color:#c0392b!important}
.chart-legend{display:flex;gap:16px;flex-wrap:wrap;margin:-2px 0 14px;font-size:12px;color:#66737d}.chart-legend span{display:flex;align-items:center;gap:6px}.chart-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.legend-sales{background:#e9b300}.legend-purchases{background:#333}.legend-profit{background:#4a9b68}
.monthly-chart{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.month-group{border:1px solid #edf0f1;border-radius:9px;padding:10px;min-width:0}.month-group>strong{display:block;font-size:13px;margin-bottom:8px;color:#222}.bar-track{height:7px;background:#f0f1f2;border-radius:20px;overflow:hidden;margin:5px 0}.bar-track span{height:100%;display:block;border-radius:20px;min-width:0}.bar-sales{background:#e9b300}.bar-purchases{background:#333}.bar-profit{background:#4a9b68}.month-group small{display:block;color:#7b8790;font-size:10px;line-height:1.5;margin-top:7px;white-space:normal}
.city-chart{display:grid;gap:12px}.city-row{display:grid;grid-template-columns:minmax(90px,180px) 1fr 32px;align-items:center;gap:12px;font-size:13px}.city-row>span{overflow-wrap:anywhere}.city-row>strong{text-align:right}.city-track{height:12px;background:#f1f2f3;border-radius:20px;overflow:hidden}.city-track i{height:100%;display:block;background:#e9b300;border-radius:20px}
@media(max-width:900px){.monthly-chart{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.sidebar-logo{width:35px;height:35px}.dashboard-filter{width:100%;align-items:end}.dashboard-filter label{flex:1}.dashboard-filter input{width:100%}.monthly-chart{grid-template-columns:repeat(2,minmax(0,1fr))}.city-row{grid-template-columns:90px 1fr 25px;gap:8px}.login-logo{width:145px;height:145px}}
@media(max-width:390px){.monthly-chart{grid-template-columns:1fr}.page-heading .dashboard-filter{flex-direction:column;align-items:stretch}}

/* FIX v1.2.6 : dimensions verrouillees pour eviter le debordement du logo */
.app-shell{width:100%;overflow-x:hidden}.sidebar{width:230px;min-width:230px;max-width:230px;overflow:hidden;align-items:stretch}.sidebar>a.brand{width:100%;min-width:0;overflow:hidden;display:flex;align-items:center}.sidebar>a.brand>img.sidebar-logo{display:block!important;width:48px!important;height:48px!important;min-width:48px!important;max-width:48px!important;min-height:48px!important;max-height:48px!important;object-fit:contain!important;flex:0 0 48px!important}.sidebar>a.brand>span{min-width:0;white-space:nowrap}.login-card>img.login-logo{width:120px!important;height:120px!important;max-width:100%!important;max-height:120px!important;object-fit:contain!important}
@media(max-width:680px){.sidebar{width:100%;min-width:0;max-width:none}.sidebar>a.brand>img.sidebar-logo{width:38px!important;height:38px!important;min-width:38px!important;max-width:38px!important;min-height:38px!important;max-height:38px!important;flex-basis:38px!important}}

/* OK PARTS v1.2.7 — dashboard, actions et images produits */
.user-top{display:grid;justify-items:end;gap:2px;line-height:1.15}.logout-top{display:inline-flex;align-items:center;justify-content:center;background:#f59e0b;color:#171717;border-radius:6px;padding:4px 10px;font-size:11px;font-weight:800;margin-top:2px}.logout-top:hover{background:#e58a00;color:#111}.topbar{gap:14px}.current-month-pill{display:inline-flex;background:#fff4c7;color:#6b4b00;border:1px solid #f2d46d;padding:7px 12px;border-radius:20px;font-weight:700;font-size:12px}.current-month-bars{height:230px;display:flex;align-items:stretch;justify-content:center;gap:clamp(22px,8vw,100px);padding:12px 20px 0}.current-bar-item{width:min(160px,28%);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:8px;min-width:0}.current-bar-value{font-size:12px;font-weight:700;color:#3e4d58;text-align:center;white-space:nowrap}.current-bar-track{height:155px;width:58px;background:#f1f3f4;border-radius:9px 9px 3px 3px;display:flex;align-items:flex-end;overflow:hidden}.current-bar-track i{display:block;width:100%;border-radius:8px 8px 2px 2px}.current-bar-item>strong{font-size:13px;color:#344653}.city-columns{height:245px;display:flex;align-items:stretch;gap:14px;overflow-x:auto;padding:10px 4px 0}.city-column{flex:1 0 76px;max-width:130px;min-width:65px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:7px}.city-column>strong{font-size:12px;color:#334653}.city-column-track{height:155px;width:35px;background:#f2f3f4;border-radius:7px 7px 2px 2px;display:flex;align-items:flex-end;overflow:hidden}.city-column-track i{display:block;width:100%;background:#f0b900;border-radius:7px 7px 2px 2px}.city-column>span{font-size:11px;text-align:center;white-space:normal;overflow-wrap:anywhere;line-height:1.2;min-height:28px;color:#53616c}.product-thumb,.product-preview{width:64px;height:64px;object-fit:contain;background:#fff;border:1px solid #e5e9ec;border-radius:8px;padding:3px}.product-preview{width:100px;height:100px;margin-top:7px}.product-thumb-placeholder{width:64px;height:64px;display:grid;place-items:center;background:#f5f6f7;border-radius:8px;color:#aab3ba}.freight-option{grid-column:1/-1!important;background:#fffbeb;border:1px solid #f5e2a1;border-radius:8px;padding:10px 12px}.freight-option>span{display:flex;align-items:center;gap:8px}.freight-option input{width:auto!important}.freight-option small{display:block;font-weight:400;margin-left:24px;line-height:1.4}
@media(max-width:680px){.current-month-bars{gap:18px;padding-inline:4px}.current-bar-track{height:130px;width:46px}.current-bar-item{width:30%}.city-columns{gap:9px}.city-column{flex-basis:68px}.topbar{justify-content:flex-end}.user-top{font-size:12px}}

.inline-status{display:flex;gap:6px;align-items:center;min-width:230px}.inline-status select{max-width:150px;padding:7px;border:1px solid #d8e0e6;border-radius:6px}

/* OK PARTS v1.4.3 — Tableau de bord réorganisé */
.content:has(>.page-heading .eyebrow) .page-heading:has(+ .dashboard-kpis){padding:22px 24px;margin:0 0 18px;border-radius:16px;background:linear-gradient(115deg,#171717 0%,#34302a 68%,#594500 100%);color:#fff;box-shadow:0 10px 28px rgba(24,24,24,.12)}
.page-heading:has(+ .dashboard-kpis) h1{color:#fff;font-size:30px;letter-spacing:-.5px}.page-heading:has(+ .dashboard-kpis) .eyebrow{color:#f5c323}.page-heading:has(+ .dashboard-kpis) .muted{color:#e3e0d8}.page-heading:has(+ .dashboard-kpis) .current-month-pill{background:#f4c21a;border-color:#f4c21a;color:#171717}
.dashboard-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:14px}.dashboard-kpis .stat-card{position:relative;min-height:124px;padding:18px 19px 16px 22px;border:1px solid #e9e5d9;border-radius:14px;box-shadow:0 5px 18px rgba(25,35,45,.045);overflow:hidden}.dashboard-kpis .stat-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:#e9b300}.dashboard-kpis .stat-card:nth-child(2):before{background:#4b91bd}.dashboard-kpis .stat-card:nth-child(3):before{background:#48a47a}.dashboard-kpis .stat-card:nth-child(4):before{background:#8b75bd}.dashboard-kpis .stat-card span,.dashboard-finance .stat-card span{font-size:12px;font-weight:700;color:#737d85;text-transform:uppercase;letter-spacing:.45px}.dashboard-kpis .stat-card strong{font-size:32px;color:#1d2933;letter-spacing:-.7px}.dashboard-kpis .stat-card small,.dashboard-finance .stat-card small{font-size:11px;color:#98a1a8}
.dashboard-finance{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}.dashboard-finance .stat-card{min-height:112px;border:0;border-radius:14px;padding:16px 19px;background:#fff;box-shadow:0 5px 18px rgba(25,35,45,.055)}.dashboard-finance .stat-card strong{font-size:25px;color:#222}.dashboard-finance .finance-purchase{background:linear-gradient(135deg,#fff 0%,#f3f5f6 100%);border-bottom:4px solid #343a40}.dashboard-finance .finance-sales{background:linear-gradient(135deg,#fff 0%,#fff9e4 100%);border-bottom:4px solid #e9b300}.dashboard-finance .finance-profit{background:linear-gradient(135deg,#fff 0%,#edf8f1 100%);border-bottom:4px solid #48a47a}
.dashboard-visuals{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:16px;align-items:stretch}.dashboard-visuals .panel{margin-bottom:16px;padding:20px;border-radius:14px;box-shadow:0 5px 18px rgba(25,35,45,.045)}.dashboard-visuals .panel-title{padding-bottom:12px;border-bottom:1px solid #edf0f1}.dashboard-visuals .panel-title h2{font-size:16px}.dashboard-chart-panel .current-month-bars{height:260px;gap:clamp(20px,4vw,65px);padding-top:15px}.dashboard-chart-panel .current-bar-track{height:175px;width:58px;background:#f0f1f2;border-radius:10px 10px 4px 4px}.dashboard-chart-panel .current-bar-value{font-size:11px;white-space:normal;max-width:110px}.dashboard-chart-panel .bar-sales{background:#e9b300}.dashboard-chart-panel .bar-purchases{background:#30343a}.dashboard-chart-panel .bar-profit{background:#48a47a}.dashboard-city-panel .city-columns{height:260px;gap:10px;justify-content:flex-start}.dashboard-city-panel .city-column{flex:1 0 54px;max-width:95px}.dashboard-city-panel .city-column-track{height:165px;width:30px;background:#f1f2f3}.dashboard-city-panel .city-column-track i{background:linear-gradient(180deg,#f5cc43,#e3a900)}.dashboard-shortcuts{border-radius:14px;padding:19px 20px}.dashboard-shortcuts .quick-link{border-radius:10px;padding:13px 15px;background:#fafbfc}.dashboard-shortcuts .quick-link:hover{background:#fff9e5;border-color:#efd36b;transform:translateY(-1px)}
@media(max-width:1050px){.dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-visuals{grid-template-columns:1fr}}
@media(max-width:680px){.page-heading:has(+ .dashboard-kpis){padding:17px 16px;gap:10px}.page-heading:has(+ .dashboard-kpis) h1{font-size:24px}.dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.dashboard-kpis .stat-card{min-height:105px;padding:13px 12px 12px 16px}.dashboard-kpis .stat-card strong{font-size:25px}.dashboard-finance{grid-template-columns:1fr;gap:9px}.dashboard-finance .stat-card{min-height:88px}.dashboard-visuals .panel{padding:14px}.dashboard-chart-panel .current-month-bars{height:220px;gap:20px}.dashboard-chart-panel .current-bar-track{height:145px;width:45px}.dashboard-city-panel .city-columns{height:220px}.dashboard-city-panel .city-column-track{height:135px}.dashboard-shortcuts{padding:15px}.dashboard-shortcuts .quick-links{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:390px){.dashboard-kpis{grid-template-columns:1fr 1fr}.dashboard-shortcuts .quick-links{grid-template-columns:1fr}}
/* v1.4.4 layout and workflow refinements */
@media(min-width:1051px){.dashboard-visuals{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}.dashboard-visuals>.panel{min-width:0}.dashboard-chart-panel .current-month-bars{gap:clamp(14px,2.5vw,42px)}}
.topbar{display:flex;align-items:center;justify-content:flex-end;gap:14px;min-height:66px;height:auto;padding-top:9px;padding-bottom:9px}.topbar .user-top{display:flex;flex-direction:row;align-items:center;justify-items:unset;gap:10px;line-height:1.2;white-space:nowrap}.topbar .user-top .muted{display:none}.topbar .user-top strong{font-size:13px}.topbar .logout-top{margin:0;padding:7px 12px;font-size:12px}.topbar .role-pill{white-space:nowrap;flex:0 0 auto}.order-status{display:inline-flex;padding:5px 9px;border-radius:20px;background:#fff5cf;color:#765600;font-weight:700;font-size:12px;white-space:nowrap}.status-editor{max-width:680px}
@media(max-width:1050px){.dashboard-visuals{grid-template-columns:1fr}}
@media(max-width:680px){.topbar{min-height:48px;padding:7px 12px;gap:8px}.topbar .user-top{gap:7px}.topbar .user-top strong{max-width:130px;overflow:hidden;text-overflow:ellipsis}.topbar .logout-top{padding:6px 8px;font-size:11px}.topbar .role-pill{font-size:10px;padding:4px 7px}.dashboard-visuals{grid-template-columns:1fr}}
