:root{color-scheme:dark;--bg:#101924;--panel:#192531;--panel2:#1e2c39;--edge:#2b3a46;--text:#f3f8fb;--muted:#91a1af;--lime:#c5fb87;--lime2:#9dea71;--danger:#ff8e89;--r:19px;--font:'DM Sans',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font);margin:0;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}a{color:var(--lime)}.hidden{display:none!important}.lime{color:var(--lime)}.muted,.hint{color:var(--muted)}.eyebrow,.overline{font-size:10px;letter-spacing:2.4px;color:var(--lime);font-weight:800}.btn{border:none;border-radius:13px;min-height:48px;padding:12px 19px;font-weight:800;display:inline-flex;justify-content:center;align-items:center;gap:12px;transition:.18s}.btn.primary{background:var(--lime);color:#13221f;box-shadow:0 7px 25px #8be76c15}.btn.primary:hover{background:#dcffa9;transform:translateY(-1px)}.btn.ghost{border:1px solid var(--edge);background:var(--panel2);color:var(--text)}.btn.danger{background:#422e36;color:#ffb8a9}.btn.full{width:100%}.toast{position:fixed;bottom:100px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;background:#dbffad;color:#17221c;padding:12px 18px;max-width:min(92vw,520px);border-radius:12px;box-shadow:0 14px 50px #0007;font-weight:700;z-index:2000;text-align:center;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:#ffb6ac;color:#3b1916}
/* Connexion */
.auth-layout{min-height:100dvh;display:grid;grid-template-columns:1.12fr 1fr}.auth-art{background:radial-gradient(ellipse at 20% 84%,#274b37 0,transparent 44%),linear-gradient(140deg,#1a2a33,#111b24);position:relative;padding:48px 6.5vw;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.auth-mark{position:relative;z-index:2;display:flex;align-items:center;gap:14px;font-size:24px;font-weight:800;letter-spacing:-1px}.auth-hero{z-index:2;max-width:680px;position:relative;margin-bottom:10vh}.auth-hero h1{font:800 clamp(46px,5vw,84px)/1.07 Manrope,sans-serif;letter-spacing:-5px;margin:24px 0}.auth-hero h1 em{color:var(--lime);font-style:normal}.auth-hero p:not(.overline){font-size:18px;color:#b5c5c7;line-height:1.65;max-width:470px}.auth-highlights{display:flex;gap:15px;flex-wrap:wrap;margin-top:36px}.auth-highlights span{font-size:12px;color:#d9e5db;border:1px solid #3d5950;border-radius:50px;padding:9px 12px}.orb{position:absolute;border:1px solid #678b7840;border-radius:50%;height:550px;width:550px;right:-150px;top:22%;box-shadow:0 0 0 70px #7aeb6d09,0 0 0 150px #7aeb6d06}.orb-two{width:300px;height:300px;right:-20px;top:43%;background:radial-gradient(circle,#c7f89414,transparent)}.auth-panel{display:grid;place-items:center;padding:36px}.auth-mobile-logo{display:none}.auth-card{width:min(100%,425px)}.auth-card h2{font:800 32px/1.2 Manrope,sans-serif;letter-spacing:-1px;margin:14px 0 9px}.auth-card>p.muted{line-height:1.55;font-size:14px}.auth-tabs{display:flex;background:#1a2733;padding:5px;border-radius:12px;margin:30px 0 22px}.auth-tabs button{flex:1;padding:11px 7px;background:transparent;border:0;border-radius:9px;color:var(--muted);font-size:13px;font-weight:800}.auth-tabs button.active{color:var(--lime);background:#2d403e}.form-grid{display:grid;gap:19px}.field{display:flex;flex-direction:column;gap:9px;min-width:0}.field label{font-size:12px;font-weight:800;color:#dee9eb}.field input:not([type=range]),.field select,.modal input,.modal select,.results-title select{width:100%;border:1px solid var(--edge);border-radius:11px;background:#111e28;color:var(--text);min-height:47px;padding:12px 13px;outline:0;transition:border .2s}.field input:focus,.field select:focus,.modal input:focus,.modal select:focus{border-color:var(--lime)}.field input::placeholder,.modal input::placeholder{color:#647784}.auth-note{margin-top:20px;color:#7e919c;font-size:11px;line-height:1.7}
/* App */
.app-shell{min-height:100dvh;display:grid;grid-template-columns:244px minmax(0,1fr)}.sidebar{height:100dvh;position:sticky;top:0;background:#111c26;border-right:1px solid #24313b;padding:31px 16px;display:flex;flex-direction:column}.logo-line{display:flex;align-items:center;gap:11px;font:800 19px Manrope,sans-serif;letter-spacing:-.8px;padding:0 8px}.sidebar-caption{margin:13px 7px 44px;color:#627582;letter-spacing:1.9px;font-size:9px;font-weight:800}.side-nav{display:grid;gap:9px}.nav-item{background:transparent;border:0;color:#9aacb5;display:flex;align-items:center;gap:16px;text-align:left;min-height:50px;padding:0 16px;border-radius:12px;font-weight:700;font-size:13px}.nav-item:hover{background:#21323d;color:#f2fff5}.nav-item.active{background:#2d433e;color:var(--lime)}.nav-icon{font-size:26px;width:26px;text-align:center;font-weight:400;line-height:1}.sidebar-info{background:#1b2b34;border-radius:16px;padding:17px 14px;font-size:11px;line-height:1.6;color:#d5e0df;margin-top:auto}.sidebar-info small{display:block;color:#8699a4;margin-top:7px}.live-dot,.pill-online i{display:inline-block;background:var(--lime2);border-radius:50%;height:7px;width:7px;margin-right:7px;box-shadow:0 0 0 3px #bdf58c20}.sidebar-bottom{display:flex;align-items:center;gap:11px;padding:25px 8px 0;font-size:12px;font-weight:800}.mini-avatar,.avatar-large{display:grid;place-items:center;background:#334d3f;color:var(--lime);border-radius:13px;font-weight:900}.mini-avatar{width:34px;height:34px}.main-area{min-width:0}.topbar{height:77px;border-bottom:1px solid #25343e;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:0 36px}.topbar-brand{display:none}.breadcrumb{font-weight:800;font-size:13px}.topbar-desc{color:#687f8c;margin-left:9px;font-size:12px;font-weight:500}.top-actions{display:flex;align-items:center;gap:15px}.pill-online{background:#23372f;color:#a6e5a6;border:1px solid #335240;border-radius:90px;padding:8px 12px;font-size:11px;font-weight:800}.circle-btn{background:#21303d;color:var(--lime);border:1px solid #394851;border-radius:50%;width:40px;height:40px;font-size:25px}.screen{display:none;padding:31px clamp(20px,3vw,46px) 110px;max-width:1550px;margin:auto}.screen.active{display:block}.intro{display:flex;align-items:center;justify-content:space-between;margin:0 0 31px}.intro h1,.section-hero h1{font:800 clamp(29px,3vw,47px)/1.12 Manrope,sans-serif;letter-spacing:-2.2px;margin:12px 0}.intro p,.section-hero p{font-size:13px;color:var(--muted);line-height:1.65}.intro-icon{height:91px;width:91px;display:grid;place-items:center;border-radius:23px;background:linear-gradient(160deg,#314b3d,#182b34);border:1px solid #435b4c;color:var(--lime);font-size:53px;transform:rotate(-7deg)}.explore-grid{display:grid;grid-template-columns:minmax(290px,370px) minmax(0,1fr);align-items:start;gap:21px}.panel,.controls-panel,.map-card,.statbox{background:var(--panel);border:1px solid var(--edge);border-radius:var(--r)}.controls-panel{padding:22px;display:grid;gap:20px}.panel-heading{display:flex;align-items:center;justify-content:space-between}.panel-heading h2,.results-title h2{font:800 19px Manrope,sans-serif;letter-spacing:-.6px;margin:7px 0 0}.steps-bubble{border-radius:12px;background:#2c4435;color:var(--lime);padding:11px;font-size:19px}.input-action{display:flex;align-items:center;position:relative}.input-action input{padding-right:89px!important}.input-icon{background:#243542;color:var(--lime);border:1px solid #405047;font-size:22px;border-radius:9px;width:37px;height:36px;position:absolute;right:7px;display:grid;place-items:center}.input-icon:last-child{right:47px}.hint{font-size:10.5px;line-height:1.55}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.label-between{display:flex;justify-content:space-between;align-items:center;gap:8px}.label-between b{font-size:12px;color:var(--lime)}.field input[type=range]{width:100%;accent-color:var(--lime);cursor:pointer;height:16px;background:none;margin:6px 0}.range-label{display:flex;justify-content:space-between;color:#7d909b;font-size:10px}.tabs{display:flex;border:1px solid #2b3a46;background:#12202b;padding:4px;border-radius:11px}.tabs button{background:none;color:#8499a5;border:0;flex:1;min-height:36px;border-radius:8px;font-size:11px;line-height:1.2;font-weight:800;padding:7px}.tabs button.active{background:#30463d;color:var(--lime)}.divider{height:1px;background:var(--edge);margin:2px 0}.source-note{font-size:10px;color:#81939e;line-height:1.6}.search-btn{min-height:52px;justify-content:space-between}.stats-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.statbox{padding:17px 15px;display:grid;gap:6px}.statbox span{font-size:9px;letter-spacing:1.5px;font-weight:900;color:#859ca9}.statbox b{font:800 clamp(17px,2.6vw,26px) Manrope,sans-serif;letter-spacing:-1.3px}.statbox small{font-size:10px;color:#7d919c}.map-card{height:335px;margin-top:15px;overflow:hidden;position:relative}.map-badge{position:absolute;z-index:450;top:16px;left:16px;background:#172630ec;color:var(--lime);border-radius:9px;padding:9px 12px;font-size:11px;font-weight:800;box-shadow:0 4px 20px #0004}.map-card #map{height:290px;background:#263943}.map-footer{height:45px;display:flex;justify-content:space-between;align-items:center;padding:0 16px;color:#8fa0aa;font-size:10px}.legend-pin{display:inline-block;width:8px;height:8px;background:var(--lime);border-radius:50%;margin-right:5px}.leaflet-control-attribution{font-size:9px!important}.leaflet-container{font-family:var(--font)}.map-pin{background:#c2ff83;border:3px solid #24372e;box-shadow:0 2px 14px #0006;width:19px;height:19px;border-radius:100%}.map-pin.unknown{background:#d6e0e5}.map-pin.origin{background:#77baff;border:3px solid white}.results-title{display:flex;justify-content:space-between;align-items:end;gap:15px;margin:27px 0 13px}.results-title select{font-size:11px;width:auto;min-height:40px;max-width:170px;padding:8px}.empty-state{min-height:220px;text-align:center;border:1px dashed #354951;border-radius:17px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px 16px}.empty-illustration{font-size:40px;color:var(--lime);border:1px solid #335144;border-radius:100%;height:67px;width:67px;display:grid;place-items:center}.empty-state h3{margin:13px 0 4px;font-size:15px}.empty-state p{font-size:12px;line-height:1.6;color:var(--muted);max-width:340px}.station-card{background:#192631;border:1px solid #2d3e4b;border-radius:16px;padding:17px;margin:12px 0;transition:.2s}.station-card:hover{border-color:#587759}.station-card.recommended{border-color:#9ac981;box-shadow:0 0 0 1px #8eeb781c}.station-top,.station-bottom,.card-main,.station-metrics{display:flex;align-items:center;gap:12px}.station-top,.station-bottom{justify-content:space-between}.station-top{align-items:flex-start}.station-title{font-size:14px;font-weight:900;line-height:1.3;margin:3px 0 5px}.station-address{color:#8da0aa;font-size:11px;line-height:1.55}.station-power{background:#2a4435;color:var(--lime);border-radius:10px;padding:8px 10px;font-size:12px;font-weight:900;white-space:nowrap}.station-badges{display:flex;flex-wrap:wrap;gap:6px;margin:13px 0}.tag{font-size:10px;border-radius:100px;padding:5px 8px;color:#b5c9d1;background:#293b49;font-weight:700}.tag.best{background:#294f38;color:var(--lime)}.tag.unknown{background:#4a3738;color:#f8c4b6}.station-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;background:#12202b;padding:12px;border-radius:11px;margin-bottom:13px}.metric{display:grid;gap:5px}.metric span{font-size:9px;color:#879ba5}.metric b{font-size:13px;white-space:nowrap}.station-bottom{gap:10px;flex-wrap:wrap}.station-price{display:flex;align-items:baseline;gap:9px}.station-price b{font:800 23px Manrope,sans-serif;letter-spacing:-1px;color:var(--lime)}.station-price small{color:#8ca1ad;font-size:10px}.station-actions{display:flex;gap:7px;flex-wrap:wrap}.btn-mini{background:#293b45;border:1px solid #3a4b56;border-radius:9px;color:#e8f4ef;padding:9px 12px;font-size:11px;font-weight:800}.btn-mini.featured{background:#d4fca4;color:#1c3025;border-color:transparent}.station-note{font-size:10px;color:#8d9eaa;margin-top:12px;line-height:1.6}.section-hero{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:27px}.vehicle-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px}.vehicle-card{background:linear-gradient(145deg,#243b3a,#192733);border:1px solid #3c5b4a;border-radius:18px;padding:24px;min-height:250px}.vehicle-card .icon-car{font-size:34px;color:var(--lime)}.vehicle-card h3{font:800 21px Manrope,sans-serif;margin:15px 0 7px}.vehicle-card p{color:#95a6b3;font-size:12px;line-height:1.5}.vehicle-specs{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:12px 0;border-top:1px solid #426057;border-bottom:1px solid #426057;margin:18px 0}.vehicle-specs b{display:block;margin-bottom:3px;font-size:12px}.vehicle-specs span{font-size:9px;color:#9cadb6}.vehicle-footer{display:flex;gap:8px;flex-wrap:wrap}.vehicle-empty{padding:45px;border:1px dashed var(--edge);border-radius:15px;color:#9cacb5;text-align:center}.history-list{display:grid;gap:12px}.history-card{border:1px solid var(--edge);border-radius:15px;background:var(--panel);padding:18px;display:flex;justify-content:space-between;gap:15px;align-items:center}.history-card h3{margin:0 0 8px;font-size:14px}.history-card p,.history-card small{font-size:11px;color:var(--muted);line-height:1.6}.history-card b{color:var(--lime);white-space:nowrap}.account-card{display:flex;align-items:center;gap:20px;padding:24px;border-radius:17px;background:var(--panel);border:1px solid var(--edge);max-width:600px;margin-bottom:16px}.avatar-large{width:70px;height:70px;font-size:27px}.account-card h2{margin:0;font-size:20px}.account-card p{margin:7px 0 0}.account-details{padding:24px;max-width:600px}.account-details p{font-size:12px;color:var(--muted);line-height:1.8}.account-details .btn{margin-top:12px}.bottom-nav{display:none}
/* Modales */
.modal-backdrop{position:fixed;inset:0;background:#030b12d9;display:grid;place-items:center;z-index:1400;padding:12px;overflow-y:auto}.modal{background:#1b2a35;border:1px solid #456050;box-shadow:0 25px 100px #0009;border-radius:21px;width:min(100%,540px);max-height:calc(100dvh - 30px);overflow:auto;padding:25px}.modal-head{display:flex;align-items:start;justify-content:space-between;margin-bottom:22px}.modal-head h2{font:800 22px Manrope,sans-serif;letter-spacing:-.7px;margin:6px 0}.modal-close{background:#2b3e47;border:0;border-radius:11px;color:#dae9e7;width:37px;height:37px;font-size:25px}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.modal .field{margin-bottom:15px}.modal .field input,.modal .field select{min-height:45px}.modal-footer{display:flex;gap:10px;justify-content:flex-end;margin-top:17px}.modal-footer .btn{min-width:125px}.modal-description{font-size:12px;line-height:1.7;color:var(--muted);margin:0 0 16px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.detail-item{background:#13232c;padding:14px;border-radius:11px}.detail-item span{display:block;color:#8b9faa;font-size:10px;margin-bottom:7px}.detail-item b{font-size:15px}.detail-timeline{border-left:2px solid #94c77b;margin:18px 0 18px 11px;padding-left:16px;display:grid;gap:14px}.detail-timeline p{margin:4px 0 0;color:#859ba5;font-size:11px}.detail-timeline b{font-size:12px}.warn{background:#463b32;color:#ffd2a2;font-size:11px;border-radius:10px;padding:12px;margin:10px 0;line-height:1.6}.source-small{color:#86a0ad;font-size:10px;line-height:1.55}.user-tariff-badge{background:#31483e;color:#c4fcaa;border-radius:20px;padding:4px 7px;font-size:9px}
@media(max-width:1240px){.app-shell{grid-template-columns:205px minmax(0,1fr)}.sidebar{padding-left:9px;padding-right:9px}.explore-grid{grid-template-columns:minmax(280px,345px) minmax(0,1fr)}.topbar{padding:0 24px}.screen{padding:24px 22px 95px}.auth-art{padding-left:5vw}}
@media(max-width:950px){.app-shell{display:block}.sidebar{display:none}.topbar{height:64px;padding:0 20px}.topbar-brand{display:flex;align-items:center;gap:9px;font-weight:900;font-size:16px;letter-spacing:-.5px}.breadcrumb{display:none}.topbar-desc{display:none}.screen{padding:22px 18px 115px}.explore-grid{grid-template-columns:1fr}.controls-panel{grid-template-columns:1fr 1fr;align-items:center}.panel-heading,.search-btn,.controls-panel .source-note{grid-column:1/-1}.controls-panel>.divider{grid-column:1/-1}.results-column{display:grid;grid-template-columns:1fr}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:700;background:#101d28f8;border-top:1px solid #364751;padding:9px 10px calc(8px + env(safe-area-inset-bottom));box-shadow:0 -8px 24px #030a1070}.bottom-nav button{flex:1;display:grid;gap:3px;place-items:center;min-width:0;color:#8aa0a8;background:none;border:0;font-size:23px}.bottom-nav button.active{color:var(--lime)}.bottom-nav small{font-size:10px;font-weight:800}.auth-layout{grid-template-columns:1fr}.auth-art{display:none}.auth-panel{min-height:100dvh;padding:45px 23px}.auth-mobile-logo{display:flex;align-items:center;gap:10px;margin-bottom:45px;font-size:22px}.auth-panel{display:flex;flex-direction:column;justify-content:center;align-items:center}}
@media(max-width:600px){.screen{padding:19px 14px 110px}.intro{margin-bottom:18px}.intro h1{font-size:33px;letter-spacing:-1.8px;margin:7px 0}.intro p{font-size:12px;max-width:270px}.intro-icon{width:66px;height:66px;font-size:38px;border-radius:18px}.controls-panel{display:grid;grid-template-columns:1fr;padding:18px;gap:17px}.controls-panel>.divider{grid-column:1}.controls-panel .search-btn,.panel-heading,.controls-panel .source-note{grid-column:1}.stats-strip{gap:8px}.statbox{padding:14px 10px}.statbox span{font-size:8px;letter-spacing:.8px}.statbox b{font-size:19px}.statbox small{font-size:9px}.map-card{height:304px}.map-card #map{height:260px}.map-footer{height:44px;font-size:9px}.results-title h2{font-size:17px}.results-title select{font-size:10px;max-width:142px}.station-card{padding:14px}.station-metrics{padding:10px 7px}.metric b{font-size:12px}.section-hero{align-items:start;flex-direction:column}.section-hero h1{font-size:32px}.modal-backdrop{padding:0;place-items:end center}.modal{border-radius:22px 22px 0 0;width:100%;max-height:92dvh;padding:22px 18px calc(20px + env(safe-area-inset-bottom))}.topbar{padding:0 15px}.top-actions{gap:8px}.pill-online{font-size:9px;padding:7px 8px}.auth-card h2{font-size:30px}}
/* Carte de secours locale : fonctionne même si le CDN Leaflet est indisponible. */
.rr-native-map{position:relative;overflow:hidden;background:#213540;background-image:linear-gradient(0deg,transparent 49%,#3a586055 50%,transparent 51%),linear-gradient(90deg,transparent 49%,#3a586055 50%,transparent 51%);background-size:64px 64px;touch-action:none;user-select:none}
.rr-native-tiles,.rr-native-points{position:absolute;inset:0;pointer-events:none}.rr-native-tiles img{position:absolute;width:256px;height:256px;max-width:none}.rr-native-pin{position:absolute;z-index:3;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50%;background:#c4fd93;border:3px solid #20362a;box-shadow:0 2px 9px #122b3aaa;pointer-events:auto;padding:0;cursor:pointer}.rr-native-pin.origin{background:#59aff3;border-color:white}.rr-native-pin.unknown{background:#e2e6e8}.rr-map-tools{position:absolute;right:12px;top:55px;z-index:4;display:grid;gap:5px}.rr-map-tools button{background:#172833;color:#e1f5e3;border:1px solid #54666c;border-radius:7px;width:34px;height:34px;font-size:23px}.rr-map-credits{position:absolute;right:0;bottom:0;padding:2px 6px;background:#ffffffdd;color:#283b40;font-size:9px;z-index:4}.data-health{margin-top:14px;border:1px solid #455959;background:#172c32;border-radius:12px;padding:13px 16px;color:#c8dbdb;font-size:12px;line-height:1.6}.data-health.alert{background:#3b3025;border-color:#755f32;color:#ffe1a9}.tariff-raw{display:block;margin-top:9px;border-left:3px solid #779f74;padding:7px 10px;color:#c2d5c0;font-size:11px;line-height:1.5;overflow-wrap:anywhere}.tariff-raw a{color:#ccfda8}

/* RechargeRadar 1.2 : bloc de traçabilité des tarifs */
.source-tariff{padding:15px;border:1px solid var(--edge);border-radius:13px;background:var(--panel2);margin:10px 0;overflow-wrap:anywhere}
.source-tariff p{font-size:12px;color:var(--muted);line-height:1.65;margin:6px 0}
.source-tariff b{color:#f3f8fb;font-size:14px}
.source-tariff a{font-weight:700}
#source-report h3{margin:20px 0 10px;font-size:16px}
#view-sources .section-hero{align-items:center}
