:root{font-family:Inter,sans-serif;color:#183052;background:#f3f6fb;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}[hidden]{display:none!important}.eyebrow{font-size:10px;letter-spacing:.15em;font-weight:800;color:#3765a7}.shell{display:flex;min-height:100vh}.sidebar{width:252px;flex:none;background:#101f39;color:#fff;display:flex;flex-direction:column;padding:22px 12px;transition:width .2s}.sidebar.collapsed{width:72px}.sidebar.collapsed .side-label,.sidebar.collapsed nav b,.sidebar.collapsed .sidebar-bottom span,.sidebar.collapsed .sidebar-bottom button{display:none}.sidebar-brand{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 10px}.sidebar-brand img{width:118px;max-height:50px;object-fit:contain}.sidebar.collapsed .sidebar-brand img{display:none}.sidebar-brand button{background:transparent;color:#dbe8ff;border:0;font-size:20px}.side-label{padding:18px 13px;color:#9eb5d7}.sidebar nav{display:grid;gap:7px}.nav{color:#aebcce;display:flex;align-items:center;gap:14px;padding:15px;border:0;border-radius:10px;background:transparent;text-align:left;white-space:nowrap}.nav b{font-size:13px;font-weight:600}.nav span{font-size:22px;min-width:23px;text-align:center}.nav:hover,.nav.active{color:#fff;background:#173f8e}.sidebar-bottom{margin-top:auto;display:flex;align-items:center;justify-content:space-between;padding:15px 10px;gap:8px;border-top:1px solid #30425f;font-size:12px}.sidebar-bottom small{display:block;color:#91a7c5;margin-top:5px}.sidebar-bottom button{color:#9fc3ff;border:0;background:transparent}.content{min-width:0;flex:1}.topbar{height:92px;background:white;border-bottom:1px solid #e3eaf4;display:flex;align-items:center;justify-content:space-between;padding:16px 32px;gap:20px}.topbar small{color:#7e93b0;font-size:10px;letter-spacing:.14em;font-weight:700}.topbar h1{font-size:21px;margin:4px 0}.top-actions,.filters,.panel-header,.section-top,.map-foot,.action-row{display:flex;align-items:center;justify-content:space-between;gap:14px}.badge{border:1px solid #d6e3f5;border-radius:20px;background:#f4f8ff;padding:8px 13px;color:#315c9e;font-size:11px;font-weight:700;white-space:nowrap}.outline,.text-button{border:1px solid #cfdcf0;border-radius:9px;background:#fff;color:#16428c;padding:10px 14px;font-weight:700;white-space:nowrap}.text-button{border:0}button.primary{background:#002fb1;border:1px solid #002fb1;color:white;padding:11px 16px;border-radius:9px;font-weight:700}main{padding:28px 32px 48px;max-width:1900px;margin:auto}.intro{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:25px}.intro h2{font-size:26px;margin:7px 0 6px}.intro p{color:#75859d;margin:0}.filters label,form label{display:grid;gap:7px;color:#52637c;font-size:12px;font-weight:700}.filters input,.filters select,form input,form select,form textarea{min-height:39px;border:1px solid #dce4ef;background:white;border-radius:8px;padding:8px 10px;color:#263c5c;max-width:100%}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.metric,.panel{background:white;border:1px solid #e1e9f3;border-radius:14px;box-shadow:0 8px 24px #10284408}.metric{padding:22px;min-height:154px;display:flex;flex-direction:column;gap:13px}.metric span{font-weight:700;font-size:12px;color:#607895}.metric strong{font-size:29px;color:#102b67}.metric small{font-size:11px;color:#8090a8;line-height:1.5}.panel{padding:20px;min-width:0}.panel-header{margin-bottom:16px}.panel-header h3{font-size:17px;margin:4px 0}.panel-header small,.section-top span{color:#8998ad;font-size:11px}.table-wrap{overflow:auto;max-height:520px}table{border-collapse:collapse;width:100%;text-align:left}th{position:sticky;top:0;background:#f6f8fc;color:#70819a;font-size:11px;text-transform:uppercase;letter-spacing:.04em}td,th{border-bottom:1px solid #edf1f7;padding:13px 11px}td{font-size:12px}td:nth-child(n+3),th:nth-child(n+3){text-align:right}td strong{color:#1f3e70}tr:hover td{background:#f8faff}.analysis-grid{display:grid;grid-template-columns:minmax(410px,1.07fr) minmax(420px,.93fr);gap:18px;align-items:start}.map-panel{padding:20px}.map-wrap{height:min(62vh,610px);min-height:400px;background:radial-gradient(circle at 46% 38%,#e7f0fb,#f4f8fc 65%);border:1px solid #e2eaf5;border-radius:12px;position:relative;overflow:hidden}.map-wrap svg{width:100%;height:100%;cursor:grab}.map-wrap svg:active{cursor:grabbing}.country{fill:#e1eaf4;stroke:#fff;stroke-width:.65;cursor:pointer}.country:hover,.country.active{fill:#98b9ed}.marker{fill:#e0632b;stroke:#fff;stroke-width:1.2;cursor:pointer}.marker.selected{fill:#002fb1;stroke-width:2}.map-tools{position:absolute;right:14px;top:14px;display:grid;gap:5px}.map-tools button{background:white;border:1px solid #d7e3f2;border-radius:6px;width:31px;height:31px}.map-tooltip{position:absolute;pointer-events:none;background:#0d2346;color:#fff;border-radius:8px;padding:9px 11px;max-width:250px;box-shadow:0 7px 18px #162e5270;font-size:11px;z-index:3}.map-foot{padding:15px 0 4px;font-size:12px;font-weight:700}.hint{font-size:11px;color:#8592a6;line-height:1.6}.insights{max-height:calc(100vh - 165px);overflow:auto}.insights .inline{margin:14px 0}.insights .inline label,.insights select{width:100%}.insight-total{padding:15px;border-radius:11px;background:#eff4ff;display:flex;justify-content:space-between;align-items:center;gap:10px;color:#536c94}.insight-total strong{font-size:20px;color:#002fb1}.insights h4{margin:24px 0 12px}.year-chart{display:flex;align-items:end;height:150px;gap:8px;border-bottom:1px solid #d5dfef;overflow:auto}.year-col{display:flex;align-items:center;flex-direction:column;justify-content:end;min-width:60px;height:100%;gap:4px}.year-col .bar{background:linear-gradient(#5e8deb,#002fb1);border-radius:5px 5px 0 0;width:31px;min-height:3px}.year-col small{font-size:10px;color:#8293ad}.year-col .value{font-size:10px;font-weight:700}.section-top{margin-top:22px}.section-top h4{margin:0 0 10px}.rank-list{display:grid;gap:5px;max-height:242px;overflow:auto}.rank-item{border:0;background:#f7f9fd;display:flex;justify-content:space-between;align-items:center;padding:10px;border-radius:7px;text-align:left;color:#233d68;gap:10px}.rank-item:hover{background:#eaf1ff}.rank-item strong{white-space:nowrap}.compact{max-height:250px}.compact td{font-size:11px}.action-row{justify-content:flex-end;margin-top:15px}.empty-state{margin:60px auto;text-align:center;background:white;border-radius:18px;padding:80px 24px;max-width:680px;border:1px solid #e2eaf4}.empty-state>span:first-child{display:block;font-size:54px;color:#0d51b8}.empty-state p{color:#8291a8}.overlay{position:fixed;inset:0;background:#0b1f3baa;display:grid;place-items:center;z-index:10;padding:15px}.modal{background:white;border-radius:16px;padding:28px;max-width:570px;width:100%;max-height:95vh;overflow:auto;display:grid;gap:14px;position:relative;box-shadow:0 20px 70px #10204077}.modal h2{margin:0}.modal p{margin:0;line-height:1.6}.modal .close{position:absolute;right:16px;top:12px;background:transparent;border:0;font-size:25px}.score-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.auth{min-height:100vh;display:grid;place-items:center;padding:25px;background:radial-gradient(circle at top right,#dce9ff,#f1f5fb 58%)}.auth-card{background:white;box-shadow:0 20px 60px #1c3b6830;border:1px solid #e1e9f2;border-radius:18px;padding:30px;width:min(100%,460px);display:grid;gap:16px}.auth-card img{width:150px;max-height:80px;object-fit:contain}.auth-card h1{margin:0;font-size:26px}.auth-card p{line-height:1.5;color:#75859c;margin:0}.auth-card .alert,.alert{padding:10px;background:#fff2ef;color:#aa4236;border-radius:8px}.auth-card input{width:100%}#mobileMenu{display:none}a{color:#002fb1}@media(max-width:1200px){.cards{grid-template-columns:repeat(2,1fr)}.analysis-grid{grid-template-columns:1fr}.insights{max-height:none}.map-wrap{height:500px}}@media(max-width:760px){.sidebar{position:fixed;z-index:6;height:100vh;transform:translateX(-100%);width:252px!important}.sidebar.open{transform:translateX(0)}.sidebar.collapsed .side-label,.sidebar.collapsed nav b,.sidebar.collapsed .sidebar-bottom span,.sidebar.collapsed .sidebar-bottom button,.sidebar.collapsed .sidebar-brand img{display:initial}.content{width:100%}#mobileMenu{display:inline-block;background:white;border:0;font-size:23px}.topbar{height:auto;min-height:72px;padding:12px 17px;flex-wrap:wrap}.topbar h1{font-size:17px}.top-actions{width:100%;justify-content:space-between}main{padding:20px 14px}.intro{align-items:stretch;flex-direction:column}.filters{flex-wrap:wrap}.cards{gap:10px}.metric{min-height:145px;padding:15px}.metric strong{font-size:23px}.panel{padding:15px}.analysis-grid{display:block}.analysis-grid>.panel{margin-bottom:15px}.map-wrap{height:410px;min-height:0}.score-grid{grid-template-columns:1fr}}
.ocean{fill:#e0eeff;stroke:#abc7e7;stroke-width:2;filter:drop-shadow(0 10px 16px #486d9e36)}.country-name{font-size:10px;fill:#1f3959;stroke:#f4f8fc;stroke-width:2px;paint-order:stroke;pointer-events:auto;text-anchor:middle;font-weight:700;cursor:pointer}.map-wrap:has(.ocean){background:radial-gradient(circle at 50% 50%,#f4f9ff,#e9f1fb 70%)}
/* SAPAG Achats — interface 1.4 */
:root{font-family:Inter,sans-serif;color:#162b4c;background:#f3f6fa;--blue:#002fb1;--blue-dark:#092b77;--orange:#e0632b;--ink:#162b4c;--muted:#74849b;--line:#e4eaf2;--shadow:0 10px 32px rgba(14,39,81,.055)}
body,button,input,select,textarea,table{font-family:Inter,sans-serif}
body{background:#f3f6fa;color:var(--ink);font-size:13px}
button{transition:background .18s,color .18s,box-shadow .18s,transform .18s}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #9cbbff;outline-offset:2px}
.shell{background:#f3f6fa}.sidebar{position:sticky;top:0;height:100vh;background:linear-gradient(160deg,#102e63 0%,#0c2149 48%,#091a38 100%);box-shadow:10px 0 32px #0d315013;z-index:5;width:258px;padding:22px 12px;overflow:hidden;transition:width .24s ease}.sidebar.collapsed{width:76px}.sidebar-brand{height:72px;padding:0 11px}.sidebar-brand img{width:120px;max-height:58px;filter:drop-shadow(0 2px 4px #03143455)}.sidebar.collapsed .sidebar-brand{justify-content:center}.sidebar-brand button{width:34px;height:34px;border-radius:8px;color:#c7d9f4}.sidebar-brand button:hover{background:#ffffff18}.side-label{font-size:9px;letter-spacing:.18em;color:#90aed5;padding:20px 14px 14px;margin:0}.sidebar nav{gap:5px}.nav{min-height:48px;border-radius:10px;color:#b3c8e8;padding:11px 13px;gap:15px}.nav span{font-size:20px;font-weight:500;width:24px}.nav b{font-size:12px;font-weight:600}.nav:hover{background:#ffffff18;color:#fff}.nav.active{background:#eef4ff;color:#123d9d;box-shadow:0 6px 18px #00144020}.sidebar.collapsed .nav{justify-content:center;padding:11px}.sidebar.collapsed .nav span{min-width:24px}.sidebar-bottom{color:#dce8fa;border-top:1px solid #ffffff27}.sidebar-bottom button{color:#c7daf7}.content{min-width:0;min-height:100vh}.topbar{height:86px;padding:16px 30px;background:#fff;box-shadow:0 1px 0 var(--line);border-bottom:0}.topbar h1{font-size:21px;letter-spacing:-.035em;font-weight:750;margin:4px 0}.topbar small{font-size:9px;color:#8796ab;letter-spacing:.16em}.top-actions{gap:9px}.badge{background:#edf3ff;color:#1c4eab;border:1px solid #d6e5ff;font-size:11px}.outline{border-color:#d9e2ef;color:#264678;background:#fff}.outline:hover{background:#f2f6fe;border-color:#a9c1eb}.text-button{border:0;background:#eef4fe;color:#1c4a9a}.text-button:hover{background:#deebff}button.primary{background:var(--blue);border-color:var(--blue);box-shadow:0 5px 15px #002fb11d}button.primary:hover{background:#00268f;box-shadow:0 7px 20px #002fb12b}main{padding:30px 32px 56px;max-width:1800px}.intro{margin-bottom:25px}.intro h2{font-size:25px;letter-spacing:-.045em;font-weight:750}.intro p{font-size:12px;line-height:1.6}.eyebrow{color:#3864ad;letter-spacing:.13em}.filters{gap:9px}.filters label{color:#72839a;font-size:11px}.filters input,.filters select,form input,form select,form textarea{border-color:#dce5f0;min-height:40px;box-shadow:0 1px 2px #13294b07}.filters input:focus,form input:focus,form select:focus,form textarea:focus{border-color:#80a7ef}.cards{gap:15px;margin-bottom:21px}.metric,.panel{border-color:#e5ebf3;border-radius:15px;box-shadow:var(--shadow)}.metric{min-height:158px;padding:21px 22px;position:relative;overflow:hidden;gap:12px}.metric:before{content:"";position:absolute;top:0;left:0;height:3px;width:100%;background:linear-gradient(90deg,#002fb1,#80a8ee)}.metric:nth-child(2):before{background:linear-gradient(90deg,#e0632b,#ffbd9d)}.metric:nth-child(3):before{background:linear-gradient(90deg,#0b8b86,#84d0c5)}.metric:nth-child(4):before{background:linear-gradient(90deg,#5177b5,#a6bee6)}.metric span{color:#60728a;font-size:11px}.metric strong{font-size:31px;letter-spacing:-.055em;font-weight:750;color:#102d66}.metric small{color:#91a0b3}.panel{padding:21px 22px}.panel-header{margin-bottom:17px;align-items:flex-start}.panel-header h3{font-size:16px;letter-spacing:-.025em;font-weight:700}.table-wrap{border:1px solid #edf1f7;border-radius:10px}.table-wrap table{min-width:570px}th{background:#f8fafd;color:#8190a5;font-weight:750;letter-spacing:.06em;padding:13px 12px;border-bottom:1px solid #e7edf5}td{padding:13px 12px;color:#3e536e}tr:hover td{background:#f7faff}td strong{color:#244472}.analysis-grid{grid-template-columns:minmax(400px,1.06fr) minmax(390px,.94fr);gap:18px}.map-panel{overflow:hidden}.map-wrap{height:min(64vh,640px);min-height:460px;background:radial-gradient(circle at 50% 43%,#f6faff 0%,#eaf3ff 65%,#dceaff 100%);border:1px solid #dce7f4;border-radius:12px}.map-wrap svg{touch-action:none;display:block}.map-wrap:has(.ocean){background:radial-gradient(circle at 50% 45%,#eef6ff 0%,#e6f0fc 70%,#daeafb 100%)}.ocean{fill:#cfe5f7;stroke:#8eafd4;stroke-width:1.4;filter:drop-shadow(0 17px 25px #2a5d9960)}.country{fill:#e4eaf2;stroke:#fff;stroke-width:.6;cursor:pointer;transition:fill .18s}.map-wrap:has(.ocean) .country{fill:#eef3f8;stroke:#b9cce3;stroke-width:.65}.country:hover,.map-wrap:has(.ocean) .country:hover{fill:#aec8ef}.country.active{fill:#d6e5f7;stroke:#9cb9de;stroke-width:1.2;cursor:grab}.supplier-cluster{cursor:pointer}.supplier-cluster circle{fill:#e0632b;stroke:#fff;stroke-width:2.5;filter:drop-shadow(0 2px 5px #6d3c2c69);transition:fill .18s}.supplier-cluster:hover circle{fill:#bd4620}.cluster-count{fill:#fff;font-size:10px;font-weight:800;text-anchor:middle;dominant-baseline:central;pointer-events:none}.marker{fill:#e0632b;stroke:#fff;stroke-width:1.1;cursor:pointer;opacity:.9}.marker:hover{fill:#b84420;stroke-width:2;r:5}.marker.selected{fill:#002fb1;stroke:#fff;stroke-width:2.2;r:6}.country-name{font-size:10px;font-weight:750;fill:#284674;stroke:#f7faff;stroke-width:2.4px;pointer-events:none}.map-tooltip{min-width:160px;max-width:250px;padding:11px 13px;background:#102951;color:#fff;line-height:1.55;box-shadow:0 10px 30px #10295135}.map-tooltip strong{font-size:12px}.map-tooltip small{color:#bacbe5}.map-tools{right:15px;top:15px;gap:5px}.map-tools button{width:36px;height:36px;background:#fff;border-color:#d6e3f3;border-radius:9px;font-size:17px;color:#28539b;box-shadow:0 4px 10px #12386212}.map-tools button:hover{background:#edf4ff}.map-foot{color:#3b597c}.hint{color:#8392a8;line-height:1.65}.insights{max-height:calc(100vh - 152px);scrollbar-color:#cbd8e9 transparent;scrollbar-width:thin}.insight-total{background:linear-gradient(115deg,#edf3ff,#f8faff);border:1px solid #dce7fb;padding:17px 16px}.insight-total strong{color:#07399d;font-size:21px}.year-chart{height:auto;min-height:210px;border:0;display:block;margin:0 0 20px}.year-chart svg{display:block;width:100%;height:auto;max-height:230px}.chart-grid line{stroke:#e9eef6;stroke-dasharray:3 5}.chart-axis text{fill:#91a1b7;font-size:10px}.chart-bar rect{fill:#315ec3}.chart-bar:nth-child(even) rect{fill:#6990de}.chart-bar rect:hover{fill:#e0632b}.chart-year{fill:#5b708c;font-size:11px;font-weight:650}.rank-list{gap:7px}.rank-item{border:1px solid transparent;color:#334d72;min-height:39px}.rank-item:hover{border-color:#cbdcf7;background:#f0f5fe}.rank-item strong{color:#15469e}.section-top span{color:#95a3b6}.compact{max-height:290px}.empty-state{box-shadow:var(--shadow);border-radius:16px}.overlay{backdrop-filter:blur(3px)}.modal{border:1px solid #dfe9f6;box-shadow:0 24px 70px #0c275159}.alert:not([hidden]){margin-bottom:20px;border:1px solid #f4ccc5}
@media(max-width:1200px){.analysis-grid{grid-template-columns:1fr}.map-wrap{height:520px}.insights{max-height:none}}
@media(max-width:760px){.sidebar{position:fixed;top:0;transform:translateX(-100%);box-shadow:15px 0 40px #0a23504f}.sidebar.open{transform:translateX(0)}.topbar{padding:13px 16px;gap:10px}.top-actions .badge{max-width:155px;overflow:hidden;text-overflow:ellipsis}.top-actions .outline{padding:8px 10px;font-size:11px}main{padding:19px 14px 48px}.intro h2{font-size:22px}.cards{gap:10px}.metric{padding:16px;min-height:143px}.metric strong{font-size:24px}.panel{padding:16px}.map-wrap{height:420px;min-height:0}.analysis-grid{display:block}.analysis-grid>.panel{margin-bottom:14px}.score-grid{grid-template-columns:1fr}}
@media(max-width:410px){.cards{grid-template-columns:1fr 1fr}.metric{padding:13px}.metric strong{font-size:21px}.topbar h1{font-size:16px}.map-wrap{height:350px}}

.nav svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;display:block}.map-instruction{position:absolute;left:13px;bottom:12px;background:#ffffffdf;border:1px solid #dae5f2;border-radius:9px;padding:7px 10px;font-size:10px;color:#567196;pointer-events:none;box-shadow:0 2px 10px #213a6813}.map-panel .hint{margin-bottom:0}
@media(max-width:760px){.sidebar.collapsed .nav{justify-content:flex-start;padding:11px 13px}.sidebar.collapsed .sidebar-brand{justify-content:space-between}.sidebar.collapsed .side-label{display:block}.sidebar.collapsed .sidebar-bottom span,.sidebar.collapsed .sidebar-bottom button{display:block}}
/* Recherche et filtres de l’analyse */
.topbar{position:relative;z-index:7}.global-search{width:clamp(260px,34vw,510px);min-width:220px;position:relative;flex:1;max-width:510px;margin:0 18px}.global-search>svg{position:absolute;left:14px;top:13px;width:17px;height:17px;fill:none;stroke:#6680a2;stroke-width:2;stroke-linecap:round;pointer-events:none}.global-search input{width:100%;height:43px;border:1px solid #d7e1ee;background:#f7f9fc;border-radius:11px;padding:0 15px 0 42px;color:#193456;font-size:12px;outline:0}.global-search input:focus{background:#fff;border-color:#85a8e7;box-shadow:0 0 0 3px #9cbfff29}.global-search input::placeholder{color:#8797ac}.search-results{position:absolute;left:0;right:0;top:calc(100% + 7px);background:#fff;border:1px solid #dce5f1;border-radius:12px;box-shadow:0 16px 46px #183c6d2c;max-height:340px;overflow-y:auto;padding:6px;z-index:30;scrollbar-color:#cbd9e8 transparent;scrollbar-width:thin}.search-group-title{font-size:9px;font-weight:800;letter-spacing:.13em;color:#93a2b7;padding:10px 11px 6px}.search-option{width:100%;border:0;background:transparent;display:flex;align-items:center;text-align:left;gap:10px;padding:9px 10px;border-radius:8px;color:#233d61}.search-option:hover,.search-option.is-active{background:#edf4ff}.search-option-icon{width:28px;height:28px;border-radius:7px;background:#eaf0fc;color:#2755aa;display:grid;place-items:center;font-size:18px;flex:none}.search-option strong{display:block;font-size:12px;font-weight:650}.search-option small{display:block;font-size:10px;color:#8293aa;margin-top:2px}.search-empty{padding:15px;color:#7b8ca3;font-size:12px}.analysis-filters{margin-bottom:18px;padding:17px 19px}.filter-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:13px}.filter-heading strong{font-size:13px;color:#233d66}.filter-heading small{font-size:10px;color:#8295ad}.filter-fields{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr)) auto auto;gap:10px;align-items:end}.filter-fields label{min-width:0;display:grid;gap:5px;color:#687c96;font-size:10px;font-weight:700}.filter-fields input,.filter-fields select{width:100%;min-width:0;height:38px;border:1px solid #dce6f2;border-radius:8px;background:#f9fbfe;color:#263e62;padding:6px 9px;font-size:11px}.filter-fields input:focus,.filter-fields select:focus{border-color:#7c9ee0;outline:2px solid #d3e1ff}.filter-fields button{min-height:38px;padding:8px 12px;font-size:11px}.supplier-focus-ring{fill:#002fb120;stroke:#2059c9;stroke-width:1.5;pointer-events:none}
@media(max-width:1280px){.topbar{height:auto;min-height:85px;flex-wrap:wrap}.global-search{order:3;max-width:none;width:100%;flex-basis:100%;margin:0}.top-actions{margin-left:auto}.filter-fields{grid-template-columns:repeat(2,minmax(150px,1fr)) auto auto}}
@media(max-width:760px){.topbar{gap:10px}.global-search{order:3;flex-basis:100%;margin:0;min-width:0}.search-results{max-height:52vh}.filter-heading{display:block}.filter-heading small{display:block;margin-top:5px}.filter-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.filter-fields label:nth-child(4){grid-column:1/-1}.filter-fields button{width:100%}}
/* Supplier cockpit 1.6 */
.ranking-controls,.map-header-actions,.reminder-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ranking-controls input,.ranking-controls select,.reminder-filters input,.reminder-filters select,.supplier-picker input{min-height:39px;border:1px solid #d9e4f2;background:#fbfcff;color:#203b61;border-radius:9px;padding:8px 11px;font:inherit;font-size:12px}.ranking-controls input,.reminder-filters input{min-width:230px}.ranking-controls select,.reminder-filters select{max-width:240px}.layer-toggle{display:flex;align-items:center;gap:6px;color:#385377;font-size:11px;font-weight:700;white-space:nowrap}.layer-toggle input{accent-color:#174cb4}.country.has-tiles{fill:#e8f1f7;stroke:#2b5f93;stroke-width:1.2;pointer-events:visiblePainted}.tile-layer{pointer-events:none}.map-attribution{position:absolute;right:12px;bottom:12px;z-index:2;background:#fffe;border-radius:5px;padding:4px 6px;color:#263b5d;text-decoration:none;font-size:9px}.city-layer{pointer-events:none}.city-layer circle{fill:#294f83;stroke:#fff;stroke-width:1}.city-layer text{font:600 9px Inter,sans-serif;fill:#243e63;paint-order:stroke;stroke:#fff;stroke-width:2.5px;stroke-linejoin:round}.supplier-picker{position:relative;width:100%;display:grid;gap:6px;color:#52637c;font-size:12px;font-weight:700}.supplier-picker input{width:100%}.supplier-options{position:absolute;left:0;right:0;top:100%;z-index:6;max-height:220px;overflow:auto;background:#fff;border:1px solid #dce5f1;box-shadow:0 15px 36px #183c6d2c;border-radius:10px;padding:5px}.picker-option{display:flex;justify-content:space-between;gap:8px;width:100%;padding:9px 11px;border:0;border-radius:7px;background:transparent;text-align:left;color:#234064;font:600 11px Inter,sans-serif}.picker-option:hover,.picker-option:focus{background:#eef4ff}.picker-option small{color:#8498b2}.reminder-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.reminder-stats .metric{min-height:118px}.reminder-filters{margin:0 0 16px}.due-pill{display:inline-block;border-radius:20px;padding:6px 9px;background:#eef5fc;color:#325a87;font-weight:700;white-space:nowrap}.due-pill.soon{background:#fff4de;color:#855511}.due-pill.late{background:#ffebe7;color:#b7392c}#remRows small{color:#8192a8}#remRows td{white-space:nowrap}#remRows td:first-child{min-width:180px}#remForm{max-width:680px}.metric:has(>strong){justify-content:space-between}
@media(max-width:900px){.reminder-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.panel-header{align-items:flex-start}.ranking-controls{width:100%}}
@media(max-width:600px){.ranking-controls input,.ranking-controls select,.reminder-filters input,.reminder-filters select{min-width:0;width:100%;max-width:none}.ranking-controls,.reminder-filters{width:100%}.map-header-actions{justify-content:flex-end}.map-attribution{bottom:48px}.reminder-stats{gap:9px}.reminder-stats .metric{min-height:110px}}
/* Version finale 1.7 */
.sidebar{width:268px;padding:18px 13px;background:linear-gradient(170deg,#0b2c64 0%,#071e49 55%,#061735 100%)}
.sidebar-brand{height:86px;margin:0 0 18px;padding:10px 12px;border:1px solid rgba(255,255,255,.8);border-radius:15px;background:#fff;box-shadow:0 12px 28px rgba(0,10,40,.28);gap:10px}
.sidebar-brand img{width:142px;max-height:62px;object-fit:contain;filter:none}
.sidebar-brand button{flex:none;color:#173d82;background:#edf3ff;border:1px solid #d8e4f7}
.sidebar-brand button:hover{background:#dfeaff}
.sidebar nav{gap:8px}.nav{min-height:52px;border:1px solid transparent;border-radius:12px;padding:12px 14px;color:#bfd0eb}.nav span{display:grid;place-items:center;width:27px;height:27px;min-width:27px}.nav:hover{border-color:#ffffff1f;background:#ffffff12}.nav.active{border-color:#fff;background:#f4f7ff;color:#123d9d;box-shadow:0 9px 22px rgba(0,14,56,.25)}
.sidebar-bottom{margin-top:auto;padding:17px 9px 4px;border-top-color:#ffffff24}.sidebar-bottom button{padding:7px 0}
.sidebar.collapsed{width:82px;padding-left:10px;padding-right:10px}.sidebar.collapsed .sidebar-brand{height:58px;margin-bottom:20px;padding:7px;justify-content:center}.sidebar.collapsed .sidebar-brand img{display:none}.sidebar.collapsed .sidebar-brand:before{content:'S';display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:#002fb1;color:#fff;font-size:18px;font-weight:800}.sidebar.collapsed .sidebar-brand button{display:none}.sidebar.collapsed .nav{padding:12px;justify-content:center}
.map-wrap{background:radial-gradient(circle at 50% 47%,#f8fbff 0 32%,#edf3fb 62%,#e5ebf4 100%)}.map-wrap:before{content:"";position:absolute;inset:0;opacity:.34;background-image:linear-gradient(rgba(0,47,177,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(0,47,177,.055) 1px,transparent 1px);background-size:42px 42px;pointer-events:none}.map-wrap svg{position:relative;z-index:1}.sphere{fill:#bdd6eb;stroke:#6e89a7;stroke-width:1.6;filter:drop-shadow(0 22px 28px rgba(0,35,110,.18))}.graticule{fill:none;stroke:#fff;stroke-width:.65;stroke-opacity:.58;pointer-events:none}.map-wrap .country{stroke:#8796aa;stroke-width:.82;vector-effect:non-scaling-stroke}.map-wrap .country:hover{stroke:#001b6d;stroke-width:1.5;filter:brightness(.94)}.map-wrap .country.selected{stroke:#00134c;stroke-width:2.4;filter:drop-shadow(0 2px 3px rgba(0,18,75,.35))}.continent-outline{fill:none;stroke:#4e6078;stroke-width:1.05;vector-effect:non-scaling-stroke;pointer-events:none}.country-labels{pointer-events:none}.country-label{text-anchor:middle;paint-order:stroke;stroke:rgba(255,255,255,.9);stroke-width:2.5;stroke-linejoin:round}.country-label-name{fill:#12233d;font-size:9px;font-weight:750}.map-tiles{pointer-events:none}.map-tiles image{opacity:.72}.country.has-tiles{fill-opacity:.05}.city-labels{pointer-events:none}.city-labels circle{fill:#111827;stroke:#fff;stroke-width:1.2}.city-labels text{fill:#475569;paint-order:stroke;stroke:rgba(255,255,255,.98);stroke-width:3px;stroke-linejoin:round;font-size:7.5px;font-weight:650}.client-point{fill:#111827;stroke:#fff;stroke-width:1.7;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}.client-point:hover{fill:#000;stroke:#f4b432;stroke-width:2.4}.client-point.selected{fill:#002fb1;stroke:#f4b432;stroke-width:2.5}.map-foot{gap:14px;flex-wrap:wrap}.map-foot #geoStatus{margin-left:auto;color:#667c98;font-size:10px;font-weight:650}.supplier-address{margin:0 0 14px;padding:13px 14px;border:1px solid #dce7f7;border-radius:10px;background:linear-gradient(120deg,#f2f6ff,#fbfdff);color:#536d92;line-height:1.45}.supplier-address span{display:block;margin-bottom:5px;color:#8293aa;font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.supplier-address strong{color:#203d68;font-size:11px;font-weight:650}
@media(max-width:760px){.sidebar{width:268px!important}.sidebar-brand{height:78px;margin-bottom:14px}.sidebar.collapsed .sidebar-brand{height:78px;padding:10px 12px;justify-content:space-between}.sidebar.collapsed .sidebar-brand:before{display:none}.sidebar.collapsed .sidebar-brand img{display:block}.sidebar.collapsed .sidebar-brand button{display:block}.map-foot #geoStatus{width:100%;margin-left:0}}
/* Globe SAPAG Market 1.8 — composant repris du module d'origine */
@media(min-width:1201px){.analysis-grid{grid-template-columns:minmax(0,1fr) 430px;gap:15px}}
.map-panel{padding:0;overflow:hidden}.map-panel>.panel-header{min-height:86px;margin:0;padding:16px 19px 14px 22px;align-items:center;border-bottom:1px solid #e8ebf1}.map-panel>.panel-header h3{margin:2px 0;color:#16253e;font-size:1.4rem;letter-spacing:-.03em}.map-panel>.panel-header .eyebrow{min-height:17px;color:#002fb1;font-size:.72rem}.map-panel .map-wrap{height:min(66vh,720px);min-height:480px;border:0;border-radius:0}.map-panel .map-foot{padding:13px 20px 5px}.map-panel>p.hint{padding:0 20px 14px}.map-tools{z-index:6;top:18px;right:18px;gap:6px}.map-tools button{width:40px;height:40px;display:grid;place-items:center;border:1px solid #d7dee9;border-radius:10px;color:#002fb1;background:rgba(255,255,255,.96);box-shadow:0 7px 20px rgba(16,24,40,.09);font-size:1.3rem;font-weight:700}.map-tools button:hover{background:#eef3ff}.map-tools button.active{color:#fff;background:#002fb1;border-color:#002fb1}.map-tools svg{width:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.map-legend{min-width:195px;position:absolute;z-index:5;left:18px;bottom:18px;padding:11px 12px;border:1px solid rgba(215,222,233,.94);border-radius:12px;background:rgba(255,255,255,.95);box-shadow:0 8px 24px rgba(16,24,40,.08)}.map-legend>strong{font-size:.7rem}.map-legend-items,#mapLegendItems{margin-top:8px;display:grid;gap:5px}.map-legend span{display:flex;align-items:center;gap:7px;color:#5d687b;font-size:.64rem}.map-legend i{width:19px;height:9px;flex:0 0 auto;border-radius:3px}.map-instruction{left:auto;right:70px;bottom:18px}.map-attribution{right:70px;bottom:4px}
@media(max-width:760px){.map-panel .map-wrap{height:450px;min-height:380px}.map-panel>.panel-header{min-height:76px;padding:13px 15px}.map-panel>.panel-header h3{font-size:1.1rem}.map-legend{left:10px;bottom:10px;min-width:165px;padding:9px}.map-tools{top:10px;right:10px}.map-tools button{width:36px;height:36px}.map-instruction{display:none}}
.map-wrap .summary-strip{position:absolute;z-index:5;left:18px;top:18px;display:flex;gap:7px}.map-wrap .summary-strip>div{min-width:126px;padding:10px 12px;border:1px solid rgba(215,222,233,.94);border-radius:11px;background:rgba(255,255,255,.94);box-shadow:0 7px 20px rgba(16,24,40,.08)}.map-wrap .summary-strip strong,.map-wrap .summary-strip span{display:block}.map-wrap .summary-strip strong{color:#0d286b;font-size:1.05rem;font-variant-numeric:tabular-nums}.map-wrap .summary-strip span{margin-top:2px;color:#748095;font-size:.65rem}
@media(max-width:760px){.map-wrap .summary-strip{left:10px;top:10px;right:56px;gap:4px}.map-wrap .summary-strip>div{min-width:0;flex:1;padding:7px 8px}.map-wrap .summary-strip strong{font-size:.78rem}.map-wrap .summary-strip span{font-size:.52rem}}

/* SAPAG Achats & Appros 2.0 — cockpit fournisseurs */
:root{--navy:#082653;--navy-deep:#051a3a;--blue:#0a4abf;--cyan:#17a6b6;--amber:#f2a93b;--coral:#e76445;--green:#2a9d78;--surface:#fff;--canvas:#f2f5fa;--line:#dfe7f1;--ink:#132a4a;--muted:#70829a;--shadow:0 12px 34px rgba(8,38,83,.075)}
body{background:linear-gradient(145deg,#f5f7fb 0%,#eef3f9 100%);color:var(--ink)}
.content{background:transparent}.topbar{position:sticky;top:0;z-index:7;border-bottom:1px solid rgba(215,225,238,.9);box-shadow:0 5px 20px rgba(15,43,82,.035);backdrop-filter:blur(14px);background:rgba(255,255,255,.94)}
main{width:100%;max-width:1980px;padding:30px 34px 64px}.intro h2{font-size:28px;color:#10294e}.intro p{max-width:720px;color:#72839a}.eyebrow{color:#2162b4}
.panel,.metric{border:1px solid rgba(218,228,240,.95);box-shadow:var(--shadow);background:rgba(255,255,255,.98)}
.metric{border-radius:18px}.metric:after{content:"";position:absolute;right:-28px;bottom:-38px;width:106px;height:106px;border-radius:50%;background:radial-gradient(circle,rgba(10,74,191,.12),transparent 68%)}
.metric:nth-child(2):after{background:radial-gradient(circle,rgba(231,100,69,.15),transparent 68%)}.metric:nth-child(3):after{background:radial-gradient(circle,rgba(42,157,120,.14),transparent 68%)}.metric:nth-child(4):after{background:radial-gradient(circle,rgba(23,166,182,.13),transparent 68%)}
.panel{border-radius:18px}.outline,.text-button,button.primary{border-radius:10px}.outline:hover,.text-button:hover{transform:translateY(-1px)}button.primary{background:linear-gradient(135deg,#0a4abf,#07368d);box-shadow:0 8px 20px rgba(10,74,191,.22)}
.analysis-filters{border-left:4px solid var(--blue);padding:16px 18px}.filter-fields input,.filter-fields select,.ranking-controls input,.ranking-controls select,.reminder-filters input,.reminder-filters select,.supplier-picker input{background:#f8fafd;border-color:#dbe5f1}.filter-fields input:focus,.filter-fields select:focus,.supplier-picker input:focus{background:#fff;box-shadow:0 0 0 3px rgba(35,102,205,.11)}

@media(min-width:1181px){.analysis-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:20px}.analysis-grid>.panel{min-width:0}.insights{height:min(72vh,780px);max-height:min(72vh,780px)}}
.map-panel{border-radius:18px!important;background:#fff}.map-panel>.panel-header{background:linear-gradient(110deg,#fff 0%,#f4f8ff 100%);border-bottom-color:#dfe8f3}.map-panel>.panel-header h3{font-size:1.25rem}.map-panel .map-wrap{height:min(72vh,780px);min-height:560px;background:radial-gradient(circle at 50% 44%,#eaf7fc 0%,#dbeaf6 46%,#c7d9ea 100%)}
.map-wrap:before{opacity:.18;background-size:48px 48px}.sphere{fill:url(#none);fill:#c3dded;stroke:#7da0bb;stroke-width:1.5;filter:drop-shadow(0 22px 30px rgba(8,45,95,.22))}.graticule{stroke:#fff;stroke-opacity:.62}.map-wrap .country{stroke:#fff;stroke-width:.75}.map-wrap .country:hover{stroke:#092b63;stroke-width:1.8;filter:saturate(1.08) brightness(.97)}.continent-outline{stroke:#627992;stroke-width:.8;opacity:.72}
.supplier-hub{cursor:pointer;outline:none}.supplier-hub .hub-halo{fill:rgba(7,44,107,.14);stroke:rgba(255,255,255,.72);stroke-width:1}.supplier-hub .hub-core{fill:#0a387e;stroke:#fff;stroke-width:2.2;filter:drop-shadow(0 4px 7px rgba(5,26,58,.36));transition:fill .15s,transform .15s}.supplier-hub text{fill:#fff;text-anchor:middle;font-size:7px;font-weight:800;pointer-events:none}.supplier-hub:hover .hub-core,.supplier-hub:focus .hub-core{fill:#e76445;transform:scale(1.16)}.supplier-hub:hover .hub-halo,.supplier-hub:focus .hub-halo{fill:rgba(231,100,69,.2);stroke:#fff}
.country-label-name{fill:#162d4b;stroke:rgba(255,255,255,.92);font-size:8px}.map-tooltip{z-index:9;border:1px solid rgba(255,255,255,.12);background:rgba(6,28,65,.96);box-shadow:0 14px 34px rgba(4,20,48,.3);border-radius:11px}.map-tools button{border-radius:11px;color:#0a4abf}.map-tools button:hover{color:#fff;background:#0a4abf}.map-legend,.map-wrap .summary-strip>div{border-color:rgba(205,218,233,.95);background:rgba(255,255,255,.94);backdrop-filter:blur(9px)}.map-wrap .summary-strip strong{color:#07357d}.map-foot{padding:13px 20px 7px!important;color:#496480}.map-panel>p.hint{padding:0 20px 17px!important;color:#71849d}
.client-point{fill:#e76445;stroke:#fff;stroke-width:2;filter:drop-shadow(0 3px 5px rgba(92,38,27,.32))}.client-point:hover{fill:#bd3d25;stroke:#fff}.client-point.selected{fill:#063c9a;stroke:#ffd166}.supplier-focus-ring{fill:rgba(10,74,191,.11);stroke:#0a4abf;stroke-width:2}

.insights{padding:22px 24px;overflow:auto;scrollbar-width:thin;scrollbar-color:#bdcce0 transparent}.insights>.panel-header{position:sticky;top:-22px;z-index:4;margin:-22px -24px 18px;padding:21px 24px 17px;background:rgba(255,255,255,.96);border-bottom:1px solid #e5ebf3;backdrop-filter:blur(10px)}.insights>.panel-header h3{font-size:20px}.supplier-address{border-left:4px solid var(--cyan);background:linear-gradient(115deg,#effafb,#f8fcff)}.insight-total{min-height:74px;border:0;background:linear-gradient(120deg,#0a4abf,#0b357d);color:#d8e7ff;box-shadow:0 10px 22px rgba(6,52,133,.2)}.insight-total strong{color:#fff;font-size:24px}.year-chart{padding:6px 0 0}.chart-bar rect{fill:#0a4abf}.chart-bar:nth-child(even) rect{fill:#17a6b6}.chart-bar rect:hover{fill:#e76445}.rank-item{border:1px solid #e8eef6;background:#f8fafc}.rank-item:hover{border-color:#aac2e5;background:#eef5ff;transform:translateX(2px)}.rank-item strong{color:#0a4abf}
.table-wrap{border-radius:12px}th{background:#f3f7fb;color:#6d7f96}tr:hover td{background:#f3f8ff}.due-pill.late{background:#feece7;color:#b13f2d}.due-pill.soon{background:#fff4db;color:#8a5b07}
.sidebar{background:linear-gradient(175deg,#0b346d 0%,#082653 50%,#051a3a 100%);box-shadow:12px 0 34px rgba(5,26,58,.1)}.nav.active{background:linear-gradient(110deg,#fff,#edf4ff);color:#0a4abf}.nav:hover{background:rgba(255,255,255,.1)}

@media(max-width:1180px){.analysis-grid{grid-template-columns:1fr!important}.insights{height:auto;max-height:none}.map-panel .map-wrap{height:620px;min-height:500px}}
@media(max-width:760px){main{padding:20px 14px 48px}.intro h2{font-size:23px}.analysis-filters{border-left-width:3px}.map-panel .map-wrap{height:470px;min-height:390px}.map-wrap .summary-strip{right:60px}.map-wrap .summary-strip>div:nth-child(2){display:none}.insights{padding:18px}.insights>.panel-header{top:-18px;margin:-18px -18px 16px;padding:18px}.cards{grid-template-columns:1fr 1fr}.metric{border-radius:14px}.global-search{order:4}}
@media(max-width:430px){.cards{grid-template-columns:1fr}.map-panel .map-wrap{height:410px}.map-wrap .summary-strip>div{padding:7px}.map-legend{max-width:170px}.top-actions{overflow-x:auto}}

/* 2.1 — carte France SAPAG Market et panneaux de hauteur identique */
@media(min-width:1181px){
 .analysis-grid{align-items:stretch!important}
 .analysis-grid>.map-panel,.analysis-grid>.insights{height:clamp(820px,86vh,1080px);max-height:clamp(820px,86vh,1080px)}
 .map-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto}
 .map-panel .map-wrap{height:auto;min-height:0}
 .insights{align-self:stretch}
}
.admin-region{fill:#eaf0f6;stroke:#002f83;stroke-width:1.05;vector-effect:non-scaling-stroke;transition:fill .15s,opacity .15s}
.admin-region:hover{fill:#d9e6f4;stroke:#001b6d;stroke-width:1.55}
.admin-region.has-tiles{fill:#e8f1f7;fill-opacity:.09;stroke:#002f83;stroke-width:1.15}
.region-outline{fill:none;stroke:#001b6d;stroke-width:1.3;vector-effect:non-scaling-stroke;pointer-events:none}
.region-labels{pointer-events:none}
.region-labels rect{fill:rgba(0,47,177,.92);stroke:#fff;stroke-width:1.2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px rgba(0,22,88,.24))}
.region-labels text{fill:#fff;text-anchor:middle;font-size:8.5px;font-weight:800;letter-spacing:.1px}
.map-tiles{pointer-events:none}.map-tiles image{opacity:.72}
.client-point{fill:#111827;stroke:#fff;stroke-width:1.7;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}
.client-point:hover{fill:#000;stroke:#f4b432;stroke-width:2.4}.client-point.selected{fill:#002fb1;stroke:#f4b432;stroke-width:2.5}
.map-attribution{right:70px;bottom:4px}
@media(max-width:1180px){.map-panel{display:block;height:auto;max-height:none}.analysis-grid>.insights{height:auto;max-height:none}.map-panel .map-wrap{height:620px;min-height:500px}}
@media(max-width:760px){.map-panel .map-wrap{height:470px;min-height:390px}.region-labels text{font-size:7px}}

/* 2.3 — rendu fluide : le menu survole la page sans redimensionner la carte. */
@media(min-width:761px){
 .shell{display:block}
 .sidebar{position:fixed;inset:0 auto 0 0;width:268px;height:100vh;z-index:20;will-change:width;contain:layout paint;transition:width .16s ease-out}
 .sidebar.collapsed{width:82px}
 .content{width:calc(100% - 82px);margin-left:82px}
}
.topbar{backdrop-filter:none}
.map-wrap{contain:layout paint;isolation:isolate}
.sphere,.country,.country.selected,.admin-region,.region-labels rect,.supplier-hub .hub-core,.client-point{filter:none!important;transition:none!important}
.map-cluster{cursor:pointer;outline:none}
.map-cluster circle{fill:#e0632b;stroke:#fff;stroke-width:2.4;vector-effect:non-scaling-stroke}
.map-cluster:hover circle,.map-cluster:focus circle{fill:#b94124}
.map-cluster text{fill:#fff;text-anchor:middle;font-size:9px;font-weight:800;pointer-events:none}
.region-labels rect{fill:rgba(255,255,255,.9);stroke:rgba(7,59,140,.35);stroke-width:1}
.region-labels text{fill:#123d73;font-size:8px;font-weight:700}
.map-tiles image{opacity:.82}
.result-limit td{text-align:center!important;color:#6f819a;background:#f7f9fd;font-size:11px;font-weight:600}
@media(max-width:760px){.content{width:100%;margin-left:0}.sidebar{contain:none;will-change:transform}}

/* 2.5 — portail, analyses et communication fournisseurs */
.topbar{background:#fff!important;backdrop-filter:none!important}
.sidebar-brand{height:76px;margin:0 0 22px;padding:8px 10px;border:0;background:transparent;box-shadow:none}
.sidebar-brand img{width:150px;max-height:58px;filter:brightness(0) invert(1);opacity:.96}
.sidebar-brand button{color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16)}
.sidebar-brand button:hover{background:rgba(255,255,255,.18)}
.sidebar.collapsed .sidebar-brand{height:55px;background:transparent;border:0;box-shadow:none}
.sidebar.collapsed .sidebar-brand:before{background:linear-gradient(135deg,#1b67df,#0a4abf);box-shadow:0 7px 18px rgba(0,0,0,.24)}

.auth-portal{min-height:100vh;display:grid;grid-template-columns:minmax(480px,1.18fr) minmax(420px,.82fr);place-items:stretch;padding:0;background:#f6f8fc}
.auth-showcase{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:52px 64px;color:#fff;background:linear-gradient(145deg,#061a3d 0%,#08377f 55%,#0a4abf 100%)}
.auth-showcase:before,.auth-showcase:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.12);border-radius:50%;pointer-events:none}
.auth-showcase:before{width:650px;height:650px;right:-285px;top:-275px;box-shadow:0 0 0 90px rgba(255,255,255,.025),0 0 0 180px rgba(255,255,255,.018)}
.auth-showcase:after{width:340px;height:340px;left:-190px;bottom:-190px;background:radial-gradient(circle,rgba(34,173,199,.18),transparent 68%)}
.auth-brand,.auth-presentation,.auth-showcase>small{position:relative;z-index:1}.auth-brand{display:flex;align-items:center;gap:22px}.auth-brand img{width:176px;filter:brightness(0) invert(1)}.auth-brand span{padding-left:21px;border-left:1px solid rgba(255,255,255,.28);font-size:10px;font-weight:700;letter-spacing:.16em;color:#c9dcfb}
.auth-presentation{max-width:670px}.auth-kicker{display:inline-flex;padding:7px 11px;border:1px solid rgba(255,255,255,.22);border-radius:20px;background:rgba(255,255,255,.08);font-size:10px;font-weight:800;letter-spacing:.16em}.auth-presentation h1{max-width:640px;margin:26px 0 18px;font-size:clamp(38px,4.2vw,64px);line-height:1.03;letter-spacing:-.055em}.auth-presentation>p{max-width:560px;margin:0;color:#cbdcf6;font-size:15px;line-height:1.75}.auth-features{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:48px}.auth-features span{display:grid;gap:14px;padding:18px;border:1px solid rgba(255,255,255,.13);border-radius:14px;background:rgba(255,255,255,.065);color:#7eb1ff;font-size:11px}.auth-features b{color:#fff;font-size:12px}.auth-showcase>small{color:#9cb9e3}
.auth-login{align-self:center;justify-self:center;width:min(82%,490px);padding:42px 44px;border:1px solid #e1e8f2;border-radius:22px;box-shadow:0 24px 70px rgba(15,42,82,.13);gap:18px}.auth-login h2{margin:0;color:#102b56;font-size:31px;letter-spacing:-.04em}.auth-login>p:not(.alert){margin:-8px 0 7px;color:#7a8ba2}.auth-login label{display:grid;gap:8px;color:#344c6d;font-size:11px;font-weight:750}.input-shell{display:flex;align-items:center;min-height:50px;border:1px solid #d9e3ef;border-radius:11px;background:#f9fbfd;overflow:hidden}.input-shell:focus-within{border-color:#75a2ed;box-shadow:0 0 0 4px rgba(10,74,191,.09);background:#fff}.input-shell>span{width:46px;text-align:center;color:#7890b0;font-weight:800}.input-shell input{width:100%;min-height:48px;border:0!important;outline:0;background:transparent;padding:10px 13px 10px 0}.auth-submit{min-height:50px;display:flex;align-items:center;justify-content:space-between;padding:12px 18px!important}.auth-submit span{font-size:20px}.auth-help{text-align:center;color:#98a5b5}.auth-mobile-logo{display:none}

.indicator-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.indicator-cards .metric{min-height:168px}.indicator-cards .metric:before{background:var(--metric-color,#0a4abf)}.indicator-cards .metric:after{background:radial-gradient(circle,color-mix(in srgb,var(--metric-color,#0a4abf) 18%,transparent),transparent 68%)}.indicator-cards .metric strong{font-size:28px}.indicator-cards .metric small{margin-top:auto}.metric-blue{--metric-color:#0a4abf}.metric-cyan{--metric-color:#17a6b6}.metric-navy{--metric-color:#082653}.metric-orange{--metric-color:#e0632b}.metric-green{--metric-color:#2a9d78}.metric-red{--metric-color:#d84a3a}.metric-purple{--metric-color:#7557c7}.metric-slate{--metric-color:#607895}

.status-legend{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.status-pill{display:inline-flex;align-items:center;justify-content:center;min-width:78px;padding:6px 9px;border:1px solid transparent;border-radius:20px;font-size:10px;font-weight:800;white-space:nowrap}.status-draft{color:#5f6d80;background:#eef1f5;border-color:#dde3ea}.status-valid{color:#157151;background:#e8f7f0;border-color:#bce8d4}.status-sent{color:#174eaf;background:#eaf1ff;border-color:#c7d9fb}.status-ready{color:#8a5a08;background:#fff3d9;border-color:#f2d99d}.status-todo{color:#924331;background:#fff0eb;border-color:#f2cabe}

.reminder-panel>.panel-header{margin-bottom:13px}.reminder-search{margin-bottom:13px}.reminder-search input{width:min(100%,520px);min-height:42px;border:1px solid #d9e4f2;border-radius:10px;background:#f8fafd;padding:9px 13px}.reminder-tabs{display:flex;gap:7px;margin:0 0 17px;padding:5px;border:1px solid #e1e8f1;border-radius:12px;background:#f5f7fb;overflow-x:auto}.rem-tab{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding:9px 13px;border:0;border-radius:8px;background:transparent;color:#60738e;font-size:11px;font-weight:750}.rem-tab span{display:grid;place-items:center;min-width:23px;height:20px;padding:0 6px;border-radius:12px;background:#e4eaf2;color:#5b6d84;font-size:9px}.rem-tab:hover{background:#fff;color:#174994}.rem-tab.active{background:#fff;color:#0a4abf;box-shadow:0 3px 12px rgba(20,58,112,.11)}.rem-tab.active span{color:#fff;background:#0a4abf}

.mail-modal{max-width:850px}.mail-composer{display:grid;gap:13px;padding:18px;border:1px solid #dbe5f1;border-radius:14px;background:#f8fafd}.composer-title{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-bottom:13px;border-bottom:1px solid #e2e9f2}.composer-title>div{display:grid;gap:4px}.composer-title strong{color:#1b365c}.composer-badge{padding:6px 9px;border-radius:16px;background:#eaf1ff;color:#2459ae;font-size:9px;font-weight:800}.rich-toolbar{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:6px;border:1px solid #d7e1ed;border-bottom:0;border-radius:10px 10px 0 0;background:#fff}.rich-toolbar button{min-width:32px;height:30px;padding:4px 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:#3b5271;font-size:11px}.rich-toolbar button:hover{border-color:#d4e0ef;background:#edf4ff;color:#0a4abf}.rich-editor{min-height:180px;max-height:320px;overflow:auto;padding:14px;border:1px solid #d7e1ed;border-radius:0 0 10px 10px;background:#fff;color:#263c5c;line-height:1.6;outline:0}.rich-editor:focus{border-color:#75a2ed;box-shadow:0 0 0 3px rgba(10,74,191,.08)}.rich-editor p{margin:0 0 10px}.rich-editor ul,.rich-editor ol{margin:8px 0;padding-left:24px}
.score-grid.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}

@media(max-width:1100px){.auth-portal{grid-template-columns:1fr 1fr}.auth-showcase{padding:42px}.auth-features{grid-template-columns:1fr}.auth-features span{display:flex}.indicator-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.sidebar-brand{height:72px!important;background:transparent!important;border:0!important;box-shadow:none!important}.sidebar-brand img{filter:brightness(0) invert(1)!important}.auth-portal{display:grid;place-items:center;padding:24px 16px;background:linear-gradient(145deg,#061a3d,#0a4abf)}.auth-showcase{display:none}.auth-login{width:min(100%,480px);padding:30px 24px}.auth-mobile-logo{display:block}.auth-mobile-logo img{width:140px;filter:none}.indicator-cards{grid-template-columns:1fr 1fr}.indicator-cards .metric{min-height:154px}.indicator-cards .metric strong{font-size:23px}.mail-composer{padding:13px}.rich-editor{min-height:210px}.reminder-tabs{margin-left:-4px;margin-right:-4px}}
@media(max-width:460px){.indicator-cards{grid-template-columns:1fr}.score-grid,.score-grid.two-col{grid-template-columns:1fr}.auth-login{padding:27px 20px}.auth-login h2{font-size:27px}}

/* Version 2.6 — finitions opérationnelles */
.auth-presentation h1{max-width:600px;font-size:clamp(34px,3.5vw,52px);line-height:1.08}.auth-presentation>p{max-width:610px}.auth-features span{min-height:78px;justify-content:center}.password-toggle{display:grid;place-items:center;flex:0 0 45px;width:45px;height:48px;padding:0;border:0;border-left:1px solid #e2e9f2;background:transparent;color:#7187a6}.password-toggle:hover,.password-toggle.active{background:#edf4ff;color:#0a4abf}.password-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.input-shell .password-toggle+*{display:none}
.year-chart{position:relative;overflow:visible}.chart-tooltip{position:absolute;z-index:8;display:grid;gap:3px;min-width:132px;padding:9px 11px;border:1px solid rgba(255,255,255,.15);border-radius:9px;background:#092650;color:#fff;box-shadow:0 10px 28px rgba(5,25,58,.28);pointer-events:none;font-size:10px}.chart-tooltip[hidden]{display:none}.chart-tooltip strong{color:#a9c8ff;font-size:10px}.chart-tooltip span{font-size:13px;font-weight:800}.chart-bar rect{cursor:help;outline:none}.chart-bar rect:focus{fill:#e0632b;stroke:#fff;stroke-width:2px}
.table-wrap,.modal,.rich-editor,.supplier-options,.search-results,.rank-list,.insights,.reminder-tabs{scrollbar-width:thin;scrollbar-color:#aebfd5 #eef3f8}.table-wrap::-webkit-scrollbar,.modal::-webkit-scrollbar,.rich-editor::-webkit-scrollbar,.supplier-options::-webkit-scrollbar,.search-results::-webkit-scrollbar,.rank-list::-webkit-scrollbar,.insights::-webkit-scrollbar,.reminder-tabs::-webkit-scrollbar{width:9px;height:9px}.table-wrap::-webkit-scrollbar-track,.modal::-webkit-scrollbar-track,.rich-editor::-webkit-scrollbar-track,.supplier-options::-webkit-scrollbar-track,.search-results::-webkit-scrollbar-track,.rank-list::-webkit-scrollbar-track,.insights::-webkit-scrollbar-track,.reminder-tabs::-webkit-scrollbar-track{background:#eef3f8;border-radius:10px}.table-wrap::-webkit-scrollbar-thumb,.modal::-webkit-scrollbar-thumb,.rich-editor::-webkit-scrollbar-thumb,.supplier-options::-webkit-scrollbar-thumb,.search-results::-webkit-scrollbar-thumb,.rank-list::-webkit-scrollbar-thumb,.insights::-webkit-scrollbar-thumb,.reminder-tabs::-webkit-scrollbar-thumb{background:#aebfd5;border:2px solid #eef3f8;border-radius:10px}.reminder-panel .table-wrap{max-height:min(62vh,680px);scrollbar-gutter:stable both-edges}.mail-modal{scrollbar-gutter:stable;padding-right:30px}
.user-modal{max-width:900px;padding:0;gap:0;overflow:hidden}.user-modal>.close{z-index:2;top:18px;right:20px}.user-modal-head{padding:28px 30px 22px;background:linear-gradient(135deg,#f7faff,#eef4ff);border-bottom:1px solid #dfe8f4}.user-modal-head h2{margin:5px 0 7px}.user-modal-head p,.section-title p{margin:0;color:#7789a1;font-size:11px}.user-list-section{padding:22px 30px 0}.section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:12px}.section-title h3{margin:0;color:#17365f;font-size:14px}.section-title>span{color:#8192a9;font-size:10px;font-weight:700}.user-table-wrap{max-height:285px;border-color:#e1e8f1}.user-table-wrap table{min-width:680px}.user-table-wrap td:last-child,.user-table-wrap th:last-child{text-align:right}.user-role,.account-current{display:inline-flex;align-items:center;border-radius:20px;padding:6px 10px;font-size:10px;font-weight:800}.role-admin{background:#eaf1ff;color:#174eaf}.role-achats,.role-buyer{background:#e8f7f0;color:#157151}.role-appros,.role-viewer{background:#fff3d9;color:#8a5a08}.account-current{background:#eef2f6;color:#53657d}.user-actions{display:flex;justify-content:flex-end;align-items:center;gap:7px}.user-actions button{padding:7px 10px;font-size:10px}.danger-link{border:1px solid #efc8c4;border-radius:8px;background:#fff7f6;color:#b43c31;font-weight:750}.danger-link:hover{background:#b43c31;color:#fff}.user-create-form{margin-top:22px;padding:22px 30px 28px;border-top:1px solid #e4ebf4;background:#fafbfd}.user-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.user-form-grid label{min-width:0}.user-form-grid input,.user-form-grid select{width:100%}.role-help{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap}.role-help span{padding:7px 10px;border-radius:8px;background:#edf3fa;color:#687d98;font-size:9px}.user-create-form .action-row{margin-top:18px}
@media(max-width:760px){.user-modal{max-height:94vh;overflow:auto}.user-list-section,.user-create-form{padding-left:18px;padding-right:18px}.user-form-grid{grid-template-columns:1fr}.role-help{grid-column:auto}.user-actions{align-items:stretch;flex-direction:column}.mail-modal{padding-right:22px}.auth-presentation h1{font-size:34px}}

.auth-presentation h1+.auth-features{margin-top:30px}.evaluation-actions{position:relative;z-index:2;display:flex;justify-content:flex-end;gap:7px}.evaluation-actions button{position:relative;z-index:3;pointer-events:auto;min-width:70px}.audit-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:20px}.audit-stats .metric{min-height:125px}.audit-filters{display:grid;grid-template-columns:minmax(240px,1fr) minmax(180px,280px);gap:10px;margin-bottom:15px}.audit-filters input,.audit-filters select{width:100%;min-height:41px;border:1px solid #d9e4f2;border-radius:9px;background:#f8fafd;padding:8px 11px;color:#203b61}.audit-filters input:focus,.audit-filters select:focus{outline:3px solid rgba(10,74,191,.1);border-color:#75a2ed;background:#fff}.audit-table-wrap{max-height:calc(100vh - 350px);min-height:330px;scrollbar-gutter:stable}.audit-table-wrap table{min-width:850px}.audit-table-wrap td:nth-child(3),.audit-table-wrap th:nth-child(3){text-align:left}.audit-action{display:inline-flex;padding:6px 9px;border-radius:18px;background:#eaf1ff;color:#174eaf;font-size:10px;font-weight:800;white-space:nowrap}.audit-detail{max-width:520px;color:#61738b;line-height:1.55;white-space:normal;word-break:break-word}.audit-panel>.panel-header{margin-bottom:13px}
@media(max-width:760px){.audit-stats{grid-template-columns:1fr 1fr}.audit-stats article:last-child{grid-column:1/-1}.audit-filters{grid-template-columns:1fr}.audit-table-wrap{max-height:58vh}}
