:root{color-scheme:dark;--navy:#0b1425;--navy2:#101d31;--panel:#101d30;--line:#263955;--line2:#334b69;--text:#f4f7fd;--muted:#9cadc5;--mint:#b7f377;--mint2:#8cebbb;--blue:#82b8fc;--red:#fb7975;--amber:#ffc279;--r:16px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--navy);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text)}button,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}button:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid var(--mint);outline-offset:3px}button:active:not(:disabled){transform:translateY(1px)}[hidden]{display:none!important}
#app{height:100dvh;min-height:600px;display:flex;flex-direction:column}.header{height:76px;min-height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 25px 0 23px;background:#0e192c;border-bottom:1px solid #223148;position:relative;z-index:7}.brand-group{display:flex;align-items:center;gap:12px}.brandmark{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;background:var(--mint);position:relative;transform:rotate(-7deg);box-shadow:0 0 23px #b7f37715}.brandmark:before{content:'';position:absolute;inset:9px;border:5px solid #112335;border-radius:50%}.brandmark:after{content:'';height:16px;width:6px;background:#112335;border-radius:8px;position:absolute;top:21px;right:4px;transform:rotate(42deg)}.brandcopy{display:grid;gap:0}.brandcopy strong{font-size:25px;letter-spacing:-1.5px;font-weight:850;line-height:1}.brandcopy strong span{color:var(--mint)}.brandcopy small{font-size:10px;color:#a4b8d0;letter-spacing:.1px;margin-top:5px}.beta-chip{font-size:10px;font-weight:850;letter-spacing:.8px;color:#b5f789;padding:7px 9px;border:1px solid #426348;border-radius:7px;background:#213329;margin-left:5px}.header-right{display:flex;align-items:center;gap:19px}.connection{display:flex;align-items:center;gap:8px;font-size:12px;color:#d9e6f6}.connection i,.live-note i{display:block;width:8px;height:8px;border-radius:50%;background:#ffc477;box-shadow:0 0 0 4px #ffc47715}.connection.online i,.live-note i{background:#9ff3b3;box-shadow:0 0 0 4px #9ff3b325}.connection.offline i{background:#fb7c7c;box-shadow:0 0 0 4px #fb7c7c26}.quiet-button{background:none;color:#afc2dc;border:0;padding:12px 0;font-size:12px;font-weight:700}.quiet-button:hover{color:white}
.layout{display:grid;grid-template-columns:370px minmax(0,1fr);flex:1;min-height:0}.left-panel{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#3e5771 transparent}.intro{padding:27px 23px 0}.overline{display:flex;gap:8px;align-items:center;font-weight:800;font-size:9px;letter-spacing:1.45px;color:#96dfb6;white-space:nowrap}.overline-dot{width:7px;height:7px;border-radius:50%;background:#b7f377}.intro h1{font-size:29px;letter-spacing:-1.1px;line-height:1.1;margin:16px 0 10px;font-weight:820}.intro h1 em{font-style:normal;color:var(--mint)}.intro p{font-size:12.5px;line-height:1.6;color:#adbcd0;margin:0}.city-box{padding:23px 23px 0}.field-label,.dialog-label{font-size:11px;text-transform:uppercase;letter-spacing:1px;font-weight:850;color:#d2e2f5;display:block;margin-bottom:10px}.select-row{display:flex;gap:8px}.select-row select,.dialog-select{appearance:none;background:#192b44 url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23a8bed4" stroke-width="2"%3E%3Cpath d="m6 9 6 6 6-6"/%3E%3C/svg%3E') no-repeat right 12px center;background-size:17px;color:#f8faff;border:1px solid #354a64;padding:12px 36px 12px 14px;border-radius:10px;height:45px;min-width:0;flex:1;font-size:13px;font-weight:700}.square-button{min-width:45px;border:1px solid #405471;background:#1c2d44;color:#e3f1ff;border-radius:10px;font-size:22px}.square-button:hover{background:#2b4360}.report-panel{padding:18px 23px 12px}.report-button{width:100%;display:flex;align-items:center;text-align:left;gap:10px;background:var(--mint);color:#12251a;border:0;border-radius:12px;padding:15px 14px;box-shadow:0 7px 25px #b7f37714}.report-button:hover{background:#cdffa0}.report-button .plus{font-size:26px;font-weight:450}.report-button strong{display:block;font-size:14px;letter-spacing:-.25px}.report-button small{display:block;font-size:10px;font-weight:600;opacity:.75;margin-top:4px}.chevron{margin-left:auto;font-size:25px}.report-panel p{color:#8399b3;font-size:10.5px;line-height:1.45;margin:10px 2px 0}.list-intro{border-top:1px solid var(--line);padding:18px 23px 9px;margin-top:7px}.list-title{display:flex;align-items:center;gap:9px}.list-title h2{font-size:16px;margin:0;letter-spacing:-.3px}.report-count{font-size:11px;background:#2b4160;border-radius:99px;padding:3px 8px;color:white;font-weight:850}.sync-text{font-size:11px;color:#8fa4bc;display:block;margin-top:6px}.filterbar{display:flex;flex-wrap:wrap;gap:6px;margin-top:13px}.filter{background:#1c2c44;border:1px solid #324865;border-radius:8px;padding:7px 9px;color:#b6c8dc;font-weight:750;font-size:10px}.filter:hover{border-color:#6d86a5}.filter.active{background:#29483b;border-color:#9adb89;color:#d1fbb9}.feed{display:grid;align-content:start;gap:8px;padding:5px 23px 20px;flex:1}.empty{border:1px dashed #3a506d;border-radius:12px;padding:22px 15px;color:#8da2bc;line-height:1.5;font-size:12px;text-align:center}.report-card{border:1px solid #314765;background:#172840;border-radius:12px;padding:12px 12px 10px;text-align:left;transition:border-color .15s}.report-card:focus-within,.report-card:hover{border-color:#6885a3}.report-card-head{display:flex;align-items:center;gap:9px}.report-icon{display:grid;place-items:center;min-width:31px;height:31px;border-radius:9px;background:#3e2935;font-size:17px}.report-card[data-type="restricted"] .report-icon{background:#3d3526}.report-card[data-type="crowd"] .report-icon{background:#203d58}.report-card[data-type="hazard"] .report-icon{background:#3b2d52}.report-card h3{margin:0;font-size:12px;font-weight:820;flex:1}.report-card .timeleft{font-size:10px;white-space:nowrap;color:#8fa9c2}.report-card p{font-size:11px;color:#a2b6cc;line-height:1.4;margin:8px 0 9px}.report-meta{display:flex;align-items:center;justify-content:space-between;gap:6px;border-top:1px solid #2d405b;padding-top:9px}.report-meta strong{font-size:9.5px;font-weight:720;color:#9fb9d0}.report-buttons{display:flex;gap:5px}.vote-btn,.jump-btn{background:#243953;color:#d8e9fc;border:1px solid #3e5672;border-radius:7px;padding:6px 8px;font-size:10px;font-weight:800;white-space:nowrap}.vote-btn:hover,.jump-btn:hover{background:#37506e}.vote-btn.flag{color:#f4c4a8}.report-card.contested{border-color:#ad7c61}.report-card.sample{border-style:dashed}.sample-label{background:#74552f;color:#ffdc91;border-radius:5px;font-size:8px;font-weight:800;padding:3px 5px;margin-left:3px}.aside-footer{padding:15px 23px 20px;border-top:1px solid var(--line);background:#0e192b}.legend-heading{font-size:11px;color:#c3d6eb;font-weight:800}.aside-footer p{color:#8fa4bf;font-size:10.5px;line-height:1.45;margin:5px 0 8px}.link-button{border:0;background:transparent;color:#b8eb8f;text-decoration:underline;padding:6px 0;font-size:10px;text-align:left}
.map-region{min-width:0;position:relative;background:#d8e5df;overflow:hidden}.map{position:absolute;inset:0;overflow:hidden;touch-action:none;cursor:grab;background:#d9e6df}.map:active{cursor:grabbing}.map-grid{position:absolute;inset:-100%;opacity:.6;background-color:#d9e6df;background-image:linear-gradient(#bfcbc9 1px,transparent 1px),linear-gradient(90deg,#bfcbc9 1px,transparent 1px);background-size:64px 64px}.map-tiles,.map-markers{position:absolute;inset:0;pointer-events:none}.map-tiles img{position:absolute;height:256px;width:256px;user-select:none;-webkit-user-drag:none;pointer-events:none}.map-marker{position:absolute;pointer-events:auto;transform:translate(-50%,-90%);background:#fff;color:#1b2d45;border:3px solid white;box-shadow:0 6px 18px #0b233945;border-radius:13px;display:grid;place-items:center;width:40px;height:40px;font-size:19px;cursor:pointer}.map-marker[data-type="blocked"]{background:#ffc4c4}.map-marker[data-type="restricted"]{background:#ffe2a4}.map-marker[data-type="crowd"]{background:#c2e7ff}.map-marker[data-type="hazard"]{background:#dfd0ff}.map-marker.sample{opacity:.75;outline:2px dashed #735b32}.map-marker.draft{background:#c3ffaa;outline:3px solid #213a24}.map-marker.you{width:22px;height:22px;border-radius:99px;background:#2b93f1;border:4px solid #fff;transform:translate(-50%,-50%);box-shadow:0 0 0 9px #2f9dff38}.map-popup{position:absolute;pointer-events:auto;min-width:180px;max-width:250px;background:#12223a;border:1px solid #3e5976;color:#edf6ff;border-radius:12px;padding:11px 12px;box-shadow:0 9px 24px #152b3666;z-index:3;transform:translate(-50%,calc(-100% - 50px))}.map-popup b{font-size:12px}.map-popup p{font-size:11px;color:#adbed5;line-height:1.4;margin:7px 0}.map-popup small{font-size:10px;color:#97b2ce}.map-attribution{position:absolute;bottom:2px;right:5px;background:#ffffffc9;border-radius:3px;padding:2px 5px;z-index:2}.map-attribution a{font-size:9px;color:#203b53}.map-topline{position:absolute;top:17px;left:18px;right:18px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;pointer-events:none}.map-location{display:flex;align-items:center;gap:7px;background:#fff;border-radius:11px;color:#1a3046;padding:11px 14px;font-size:13px;font-weight:800;box-shadow:0 4px 22px #2c4d4c29}.location-icon{color:#2380a3;font-size:20px}.map-location small{color:#718799;font-size:10px;font-weight:600}.live-note{background:#11243ce8;color:#eff5ff;border-radius:999px;padding:11px 12px;display:flex;align-items:center;gap:8px;font-size:10px;font-weight:800}.map-status{position:absolute;left:18px;bottom:72px;z-index:2;background:#15273feb;color:#e6f5fb;border:1px solid #456078;border-radius:12px;box-shadow:0 7px 24px #20384444;padding:12px 14px;max-width:min(345px,calc(100% - 150px));display:flex;gap:9px;font-size:11px;line-height:1.4}.pin-emoji{font-size:16px}.map-controls{position:absolute;right:18px;bottom:73px;display:grid;gap:9px}.map-control{background:#fff;border:0;border-radius:10px;color:#20364c;box-shadow:0 4px 18px #1b3d4540;min-height:47px;min-width:47px;font-size:23px;font-weight:730}.map-control:hover{background:#f2faff}.location-control{display:flex;align-items:center;justify-content:center;gap:7px;padding:0 14px;font-size:12px}.location-control span{font-size:22px}.location-control.enabled{background:#baf09c}.zoom-controls{display:flex;gap:7px;justify-content:flex-end}.zoom-controls .map-control{font-size:25px}.map-bottom-hint{position:absolute;bottom:16px;left:18px;color:#233c4a;font-size:9.5px;font-weight:750;background:#ffffffd9;padding:8px 9px;border-radius:7px;max-width:calc(100% - 170px)}.mobile-report{display:none}
.dialog-backdrop{position:fixed;inset:0;background:#061020c7;z-index:50;display:flex;justify-content:center;align-items:center;padding:20px}.dialog{width:min(515px,100%);max-height:95dvh;overflow:auto;background:#14233a;border:1px solid #48617e;border-radius:20px;padding:23px;box-shadow:0 25px 75px #0008}.dialog-top{display:flex;justify-content:space-between;align-items:start;gap:10px}.dialog-eyebrow{font-size:10px;color:#adf191;letter-spacing:1.3px;font-weight:850}.dialog h2{font-size:22px;letter-spacing:-.7px;line-height:1.1;margin:8px 0 0}.close-dialog{background:#263a55;border:1px solid #3b5270;border-radius:9px;color:#c2d5e9;width:35px;height:35px;font-size:23px}.dialog-description,.privacy-dialog p{font-size:12px;color:#b4c7d8;line-height:1.55;margin:13px 0}.location-picked{font-size:11px;font-weight:740;border:1px solid #3d644e;background:#203b36;border-radius:9px;padding:11px;color:#c9f6d6}.location-picked.not-set{border-color:#72563c;background:#3b2f25;color:#ffdbad}.choose-place{background:transparent;border:none;color:#b5ea87;padding:12px 0 10px;font-size:11px;font-weight:800;text-decoration:underline}.type-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:17px}.type-option{border-radius:11px;min-height:94px;display:flex;flex-direction:column;gap:6px;text-align:left;color:#e2edfb;background:#1e304b;border:1px solid #3d526e;padding:12px}.type-option.selected{border:2px solid #aff286;background:#29443b;padding:11px}.type-option>span{font-size:19px}.type-option strong{font-size:12px}.type-option small{font-size:10px;color:#a9bacb}.dialog-select{width:100%;margin-bottom:12px}.dialog-info{font-size:11px;color:#abbdd2;background:#1b2f48;border-radius:9px;padding:10px 12px;line-height:1.5}.dialog-actions{display:flex;gap:9px;margin-top:18px}.cancel-button,.send-button{border:0;padding:13px 15px;border-radius:10px;font-size:12px;font-weight:850}.cancel-button{background:#2b3d56;color:#e2edf8}.send-button{background:var(--mint);color:#14291c;flex:1}.full-width{width:100%;margin-top:7px}.toast{position:fixed;left:50%;bottom:27px;transform:translate(-50%,22px);opacity:0;pointer-events:none;z-index:90;border:1px solid #496580;border-radius:12px;background:#162c48;color:#f8ffff;padding:12px 19px;box-shadow:0 10px 40px #05121db5;font-size:12px;font-weight:760;max-width:calc(100% - 25px);transition:opacity .2s,transform .2s}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:940px){.layout{grid-template-columns:315px minmax(0,1fr)}.intro,.city-box,.report-panel,.list-intro,.aside-footer{padding-left:16px;padding-right:16px}.feed{padding-left:16px;padding-right:16px}.header{padding:0 16px}.map-location small{display:none}.map-status{max-width:255px}}
@media(max-width:900px){#app{height:auto;min-height:100dvh}.header{height:67px;min-height:67px;padding:0 13px}.brandmark{width:36px;height:36px;border-radius:11px}.brandmark:before{inset:7px;border-width:4px}.brandmark:after{top:17px;right:3px}.brandcopy strong{font-size:22px}.brandcopy small{font-size:9px}.beta-chip{font-size:8px;padding:5px 6px;margin-left:0}.header-right{gap:5px}.privacy-trigger{font-size:0;padding:10px}.privacy-trigger:first-letter{font-size:17px}.connection{font-size:10px}.layout{display:flex;flex-direction:column}.map-region{order:0;height:57dvh;min-height:370px;flex:none}.left-panel{order:1;min-height:calc(43dvh - 67px);overflow:visible;border-right:0;border-top:1px solid var(--line)}.intro{padding:21px 17px 0}.intro h1{font-size:27px;margin-top:11px}.intro p{max-width:440px}.city-box{padding:17px 17px 0}.report-panel{display:none}.list-intro{margin-top:15px;padding:16px 17px 8px}.feed{padding:5px 17px 16px;grid-template-columns:1fr}.aside-footer{padding:15px 17px}.map-topline{left:11px;right:11px;top:11px}.map-location{padding:8px 10px;font-size:12px}.live-note{padding:9px;font-size:9px}.map-controls{right:11px;bottom:74px}.map-status{left:11px;bottom:74px;max-width:calc(100% - 130px);font-size:10px;padding:10px}.map-control{min-height:42px;min-width:42px}.map-bottom-hint{left:11px;bottom:15px;max-width:calc(100% - 25px);font-size:8px;padding:6px}.mobile-report{display:block;position:absolute;left:50%;bottom:122px;transform:translateX(-50%);background:var(--mint);border:0;color:#183020;border-radius:999px;padding:12px 15px;white-space:nowrap;box-shadow:0 6px 25px #244d3d55;font-size:11px;font-weight:900;z-index:3}.map-status{display:none}.map-controls{bottom:13px}.map-bottom-hint{right:126px;bottom:20px;max-width:unset}.location-control strong{display:none}.location-control{padding:0 9px}.dialog-backdrop{padding:10px}.dialog{padding:19px;max-height:calc(100dvh - 20px)}.type-option{min-height:89px}.toast{bottom:22px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
/* V0.3 — pedestrian route preview */
.route-panel{padding:17px 23px;border-bottom:1px solid var(--line);background:#172c3b}
.route-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.route-heading h2{font-size:15px;line-height:1.2;margin:0;font-weight:850;color:#f5fffc}
.route-beta{font-size:8px;letter-spacing:.8px;font-weight:850;background:#2a443e;color:#c0f2a0;border:1px solid #4b7b63;border-radius:99px;padding:5px 7px}
.route-panel>p{font-size:11px;line-height:1.5;color:#aabcce;margin:8px 0 13px}
.route-point{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid #35526a;background:#12253a;padding:9px 10px;margin:7px 0;border-radius:9px}
.route-point span{font-size:10px;color:#adc9de}.route-point strong{font-size:11px;color:#e5f7ed;font-weight:750}
.route-choices,.route-actions{display:flex;gap:7px;margin:10px 0 5px}
.route-choices button{flex:1;border:1px solid #47657d;background:#294258;color:#e6f4ff;border-radius:9px;padding:10px 5px;font-size:10px;font-weight:800}
.route-choices button:hover{background:#3d617a}
.route-consent{display:flex;align-items:flex-start;gap:7px;font-size:10px;line-height:1.5;color:#b7cadc;margin:13px 0 10px}
.route-consent input{accent-color:#b7f377;flex:none;width:16px;height:16px;margin:0}
.route-actions button{border:0;border-radius:9px;padding:11px 10px;font-size:11px;font-weight:820}
#routeComputeBtn{background:#b7f377;color:#153125;flex:1}#routeClearBtn{background:#2c455c;color:#d9e7f5}
.route-result{background:#12253a;border:1px dashed #416276;padding:11px;border-radius:10px;font-size:10.5px;color:#c1d9ed;line-height:1.55;margin-top:12px}
.map-route{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden;z-index:1}
.map-route path{fill:none;stroke-linejoin:round;stroke-linecap:round}
#mapRouteShadow{stroke:#173152;stroke-width:11;opacity:.66}
#mapRouteLine{stroke:#3987e9;stroke-width:7;stroke-dasharray:10 5}
.map-markers{z-index:2}.map-route+.map-markers{pointer-events:none}
.map-marker.route-pin{font-size:14px;font-weight:900;background:#133e74;border:3px solid #fff;color:#fff;width:31px;height:31px;transform:translate(-50%,-50%);border-radius:99px;pointer-events:none}
.mobile-route{display:none}
@media(max-width:940px){.route-panel{padding:16px}}
@media(max-width:900px){
  .route-panel{padding:17px}
  .mobile-route{display:block;position:absolute;left:50%;bottom:166px;transform:translateX(-50%);z-index:3;background:#fff;border:1px solid #aed6ea;color:#244762;font-size:10px;font-weight:850;white-space:nowrap;border-radius:999px;padding:10px 15px;box-shadow:0 4px 15px #244b5a55}
  .mobile-report{bottom:121px}
  .route-choices button{min-height:41px}
}

/* V0.3.2 — editable route endpoints and proximity-aware suggestions */
.route-location-field{position:relative;margin:10px 0;min-width:0;z-index:4}
.route-location-field:focus-within{z-index:12}
.route-location-field>label{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:11px;font-weight:800;color:#deefff}
.route-letter{background:#3684d6;color:white;font-size:10px;font-weight:900;width:20px;height:20px;border-radius:50%;display:inline-grid;place-items:center}
.route-letter-end{background:#30799c}
.route-input-box{display:flex;align-items:center;background:#102438;border:1px solid #486782;border-radius:10px;min-width:0;transition:border-color .15s,box-shadow .15s}
.route-input-box:focus-within{border-color:#b4ee82;box-shadow:0 0 0 2px #b4ee8225}
.route-input-box input{width:100%;min-width:0;background:transparent;color:#eafff9;font-size:12px;font-family:inherit;font-weight:600;border:none;outline:0;padding:12px 10px;min-height:42px;letter-spacing:0}
.route-input-box input::placeholder{color:#a9bed3;font-weight:500}
.route-caret{padding:0 10px;color:#adcbdc;pointer-events:none;font-size:16px}
.route-suggestions{position:absolute;left:0;right:0;top:100%;margin-top:3px;padding:6px;background:#eaf3f7;color:#163047;border:1px solid #9abac6;border-radius:12px;z-index:20;box-shadow:0 15px 32px #081d2fd0;max-height:285px;overflow-y:auto;overscroll-behavior:contain}
.route-suggestions[hidden]{display:none!important}
.route-suggestion{width:100%;display:flex;align-items:center;text-align:left;gap:9px;border:0;border-radius:8px;background:transparent;color:#173850;padding:10px 9px;min-height:42px;cursor:pointer}
.route-suggestion:hover,.route-suggestion:focus-visible{background:#cde9e5;outline:2px solid transparent}
.route-suggestion .s-icon{font-size:18px;flex:0 0 22px;text-align:center}
.route-suggestion .s-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.route-suggestion .s-copy strong{font-size:11px;line-height:1.3;overflow-wrap:anywhere}
.route-suggestion .s-copy small{font-size:10px;color:#547087;line-height:1.35}
.route-suggestion .s-dist{font-size:10px;color:#195d69;font-weight:800;white-space:nowrap}
.route-suggestion-hint{color:#516c7f;font-size:10px;line-height:1.4;padding:8px 9px}
.route-suggestion-rule{border:0;border-top:1px solid #ccdce3;margin:5px 2px}
.route-panel .route-search-note{font-size:9px;color:#91b9c9;line-height:1.45;margin:6px 0 10px}
@media(max-width:900px){.route-location-field{margin:11px 0}.route-suggestions{max-height:235px}.route-input-box input{font-size:16px}}


/* Balise 0.4.3 : nav mobile hors carte pour navigateurs iOS, Android et tablettes. */
.mobile-actions{display:none}
@media(max-width:900px){
  html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
  #app{height:auto;min-height:100vh;min-height:100dvh}
  .layout{display:flex;flex-direction:column;min-width:0}
  .layout>.map-region{
    order:0;position:relative;flex:0 0 auto;
    height:57vh;height:57dvh;min-height:330px;
  }
  .layout>.mobile-actions{
    order:1;position:static;display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    padding:12px max(14px,env(safe-area-inset-right,0px)) 12px max(14px,env(safe-area-inset-left,0px));
    background:#11253a;border-top:1px solid #354960;border-bottom:1px solid #354960;
    width:100%;max-width:100%;min-width:0;flex:0 0 auto;
  }
  .layout>.left-panel{order:2;min-width:0;width:100%;overflow:visible}
  .mobile-actions .mobile-route,
  .mobile-actions .mobile-report{
    display:flex;position:static;inset:auto;left:auto;bottom:auto;
    transform:none;width:100%;height:auto;min-height:60px;
    margin:0;border-radius:13px;padding:12px 10px;
    align-items:center;justify-content:center;text-align:center;
    white-space:normal;overflow-wrap:anywhere;line-height:1.3;font-size:12px;font-weight:850;
    box-shadow:none;z-index:auto;touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
  }
  .mobile-actions .mobile-route{background:#e7f3fc;color:#19344b;border:1px solid #a8c8dc}
  .mobile-actions .mobile-report{background:var(--mint);color:#122d22;border:1px solid #99d46b}
  .mobile-actions button:focus-visible{outline:3px solid #fff;outline-offset:2px}
  .route-input-box input{font-size:16px}
  .map-region button{touch-action:manipulation}
  .route-panel,.intro,.city-box,.list-intro,.feed,.aside-footer{min-width:0}
  .map-location,.live-note{max-width:100%}
}
@media(max-width:370px){
  .layout>.mobile-actions{gap:8px;padding-left:10px;padding-right:10px}
  .mobile-actions .mobile-route,.mobile-actions .mobile-report{font-size:11px;padding:9px 7px;min-height:64px}
}
@media (max-width:900px) and (orientation:landscape) and (max-height:480px){
  .layout>.map-region{height:70vh;height:70dvh;min-height:270px}
}

/* Balise 0.5 : commandes distinctes de la carte et guidage multiplateforme. */
@media (min-width:901px){
 .layout{grid-template-rows:minmax(0,1fr) auto}
 .layout>.left-panel{grid-column:1;grid-row:1 / span 2}
 .layout>.map-region{grid-column:2;grid-row:1;min-height:0}
 .layout>.map-extras{grid-column:2;grid-row:2}
}
.map-extras{background:#132539;color:#e9f7ff;min-width:0}
.map-route-actions{display:flex;gap:10px;padding:12px 15px;border-top:1px solid #32465e}
.map-route-actions button,.guide-actions button{min-height:52px;border:1px solid #344e6a;border-radius:12px;padding:12px 15px;font-size:13px;font-weight:800;touch-action:manipulation}
.map-route-actions .guide-start{flex:2;background:var(--mint);color:#172b22}
.map-route-actions .map-clear{flex:1;background:#283a52;color:#f0f5fc}
.guide-panel{padding:14px 17px 18px;border-top:1px solid #42627b}
.guide-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.guide-head h2{margin:0;font-size:17px}
.guide-live{font-size:10px;font-weight:900;letter-spacing:1px;color:#bbfb82}
.guide-instruction{font-size:clamp(19px,4vw,28px);font-weight:850;line-height:1.25;letter-spacing:-.4px;margin-top:12px}
.guide-metrics{display:flex;gap:20px;margin-top:12px}
.guide-metrics span{display:flex;flex:1;min-width:0;flex-direction:column;gap:3px}
.guide-metrics strong{font-size:21px;color:#d4f9a6}
.guide-metrics small{font-size:11px;color:#aabed1}
.guide-warning{color:#cdd9e7;font-size:11px;line-height:1.45;margin:12px 0}
.guide-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.guide-actions button{padding:10px 5px;min-width:0}
.guide-report{background:var(--mint);color:#1a2c21}
.guide-reroute{background:#2a425a;color:#e7f5fe}
.guide-stop{background:#743b42;color:#fff3f3;border-color:#a05256!important}
.guide-options{display:grid;gap:8px;margin-top:12px;font-size:11px;color:#b7cbe0;line-height:1.45}
.guide-options label{display:flex;align-items:flex-start;gap:9px}
.guide-options input{accent-color:#b7f377;min-width:18px;height:18px;margin:0}
.report-here{margin-top:8px;background:#233f59;color:#e8f8ff}
@media(max-width:900px){
 .layout>.map-extras{order:1;width:100%;position:static}
 .layout>.mobile-actions{order:2}
 .layout>.left-panel{order:3}
 .map-route-actions{padding:11px max(12px,env(safe-area-inset-right,0px)) 11px max(12px,env(safe-area-inset-left,0px))}
 .map-route-actions button{min-height:55px;font-size:12px}
 .guide-panel{padding:14px max(14px,env(safe-area-inset-right,0px)) 18px max(14px,env(safe-area-inset-left,0px))}
 .guide-actions button{min-height:55px;font-size:12px}
}
@media(max-width:370px){.guide-actions{grid-template-columns:1fr 1fr}.guide-stop{grid-column:1 / -1}.guide-instruction{font-size:20px}}

@media(max-width:900px){body.guiding .layout>.map-region{height:48vh;height:48dvh;min-height:290px}body.guiding .layout>.mobile-actions{display:none}}


/* Balise 0.5.1 — navigation plein écran, sans aller-retour dans la page.
   Le trajet planifié garde la carte dégagée ; les formulaires sont dans un panneau haut. */
.route-panel-close{display:none;border:1px solid #486782;background:#263c53;color:white;border-radius:10px;min-width:42px;min-height:42px;font-size:17px}
.map-route-actions .route-edit{flex:1;background:#294259;color:#e6f5fe}
.guide-main-instruction{display:flex;align-items:center;gap:12px}
.guide-direction-icon{font-size:40px;line-height:1;color:#b7f377;font-weight:900;min-width:40px;text-align:center}
.guide-top-card,.guide-bottom-sheet{min-width:0}
.guide-recenter{margin-left:auto;width:42px;height:42px;border-radius:12px;border:1px solid #46617c;color:#e9ffdc;background:#294159;font-size:25px}
.guide-settings{margin-top:10px;border-top:1px solid #385067;padding-top:7px}
.guide-settings summary{cursor:pointer;min-height:32px;padding:7px 0;font-size:12px;color:#b8cbe0;font-weight:700;list-style-position:inside}
.guide-settings[open] summary{color:#d9f6d4}
/* Guided view is a single full-viewport interaction on every screen size. */
body.guiding{overflow:hidden;overscroll-behavior:none}
body.guiding #app{height:100dvh;min-height:0;overflow:hidden}
body.guiding .header{display:none}
body.guiding .layout{position:fixed;inset:0;display:block;width:100%;height:100dvh;overflow:hidden}
body.guiding .layout>.left-panel,body.guiding .layout>.mobile-actions{display:none!important}
body.guiding .layout>.map-region{position:absolute!important;inset:0!important;display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:none!important;z-index:1}
body.guiding .map-topline,body.guiding .map-bottom-hint,body.guiding .map-controls,body.guiding .map-status{display:none!important}
body.guiding .layout>.map-extras{position:static!important;display:block!important;order:initial!important;width:auto!important;z-index:auto}
body.guiding #guidePanel{position:fixed!important;inset:0!important;display:flex!important;flex-direction:column;justify-content:space-between;z-index:30;padding:0!important;border:0!important;background:transparent!important;pointer-events:none;gap:10px;overflow:hidden}
body.guiding #guidePanel>.guide-top-card,body.guiding #guidePanel>.guide-bottom-sheet{pointer-events:auto;box-shadow:0 9px 28px #07101ec9}
body.guiding .guide-top-card{margin:0 10px; margin-top:max(10px,env(safe-area-inset-top,0px));background:#11263bee;border:1px solid #496d87;border-radius:18px;padding:12px 14px}
body.guiding .guide-head{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}
body.guiding .guide-head h2{font-size:13px;font-weight:760;color:#d6e8f5;margin:0}
body.guiding .guide-live{font-size:9px;flex-shrink:0;letter-spacing:.5px}
body.guiding .guide-main-instruction{margin-top:8px}
body.guiding .guide-instruction{font-size:clamp(18px,4.8vw,25px);line-height:1.2;min-width:0;overflow-wrap:anywhere;margin:0}
body.guiding .guide-bottom-sheet{background:#112437f7;border:1px solid #46667a;border-bottom:0;border-radius:22px 22px 0 0;padding:12px 14px max(14px,env(safe-area-inset-bottom,0px));max-height:58dvh;overflow-y:auto;overscroll-behavior:contain}
body.guiding .guide-metrics{margin:0 0 10px;gap:12px}
body.guiding .guide-metrics strong{font-size:22px}
body.guiding .guide-actions{gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}
body.guiding .guide-actions button{min-width:0;min-height:53px;padding:9px 4px;font-size:12px}
body.guiding .guide-stop{grid-column:auto}
body.guiding .guide-warning{margin:10px 0 0;font-size:10px;line-height:1.4}
body.guiding .guide-options{font-size:12px}
@media (max-width:900px){
 .route-panel{display:none}
 body.planning{overflow:hidden}
 body.planning::before{content:'';position:fixed;inset:0;background:#06101dbb;z-index:37}
 body.planning .route-panel{display:block!important;position:fixed!important;top:max(8px,env(safe-area-inset-top,0px));left:8px;right:8px;z-index:40;border:1px solid #527189;border-radius:18px;box-shadow:0 16px 56px #020912ed;max-height:calc(95dvh - env(safe-area-inset-top,0px));overflow-y:auto;overscroll-behavior:contain;padding:15px!important}
 body.planning .route-panel-close{display:block;margin-left:auto;flex-shrink:0}
 body.planning .route-beta{display:none}
 body.planning .route-heading h2{font-size:18px}
 body.planning .route-suggestions{position:relative;top:auto;left:auto;right:auto;max-height:180px;margin-top:2px;box-shadow:none}
 body.planning .route-location-field{z-index:auto}
 body.planning .route-location-field:focus-within{z-index:auto}
 body.planning .route-input-box input{min-height:46px}
 body.guiding .guide-top-card{margin-top:max(8px,env(safe-area-inset-top,0px))}
}
@media(max-width:380px){body.guiding .guide-head h2{display:none}body.guiding .guide-top-card{padding:10px}body.guiding .guide-instruction{font-size:18px}body.guiding .guide-bottom-sheet{padding-left:10px;padding-right:10px}}
@media (max-height:570px) and (orientation:landscape){body.guiding .guide-top-card{max-width:48vw}body.guiding .guide-bottom-sheet{position:absolute;bottom:0;right:0;width:min(52vw,450px);border-radius:18px 0 0 0;max-height:92dvh}body.guiding .guide-instruction{font-size:18px}}

/* Balise 0.6.0 RC : lisibilité du guidage, touche large, statuts GPS/réseau. */
.guide-quality{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:9px}
.guide-quality span{border:1px solid #547188;border-radius:99px;background:#203950;color:#daeaf4;font-size:10px;font-weight:740;letter-spacing:.1px;padding:5px 9px}
.guide-quality .quality-warning{color:#ffe6be;border-color:#ae855a;background:#533b34}
.guide-quality .quality-ok{color:#d4fac7;border-color:#567d59;background:#294635}
.guide-quality .quality-danger{color:#ffded6;border-color:#a75d58;background:#512e35}
#guideAwake{accent-color:#b7f377}
@media(max-width:380px){.guide-quality{gap:4px}.guide-quality span{font-size:9px;padding:4px 6px}}
@media(max-height:560px) and (orientation:landscape){.guide-quality{display:none}}

/* Balise 0.7 private street map (same origin, no remote raster map images) */
.map,.map-region{background:#142435}.map-grid{opacity:.15;background-color:#142435;background-image:linear-gradient(#31506b 1px,transparent 1px),linear-gradient(90deg,#31506b 1px,transparent 1px)}
.map-tiles canvas.private-road-canvas{position:absolute;inset:0;display:block;pointer-events:none;max-width:100%;max-height:100%;}
.beta-legal-notice{border:1px solid #536a46;background:#203224;color:#d3f3cc;border-radius:8px;padding:9px}

.voice-test-button{min-height:44px;border:1px solid #6c8b62;border-radius:9px;background:#203d35;color:#e5ffd7;font:inherit;font-size:12px;font-weight:700;padding:10px 12px;cursor:pointer;touch-action:manipulation}.route-panel>.voice-test-button{margin-top:10px;width:100%}.voice-test-button:focus-visible{outline:3px solid #b7f377;outline-offset:2px}.voice-status{font-size:11px;line-height:1.4;color:#d0dfe9;margin:6px 0 10px}

/* BALIZZ V1 : emplacement d'annonce directe, hors carte, jamais pendant le guidage */
.ad-slot{margin:14px 0;padding:12px 14px;border:1px dashed #3d5470;border-radius:14px;background:#13233a;color:#d6e0ec;font-size:14px}
.ad-slot[hidden]{display:none}
.ad-slot .ad-label{display:block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#93a7bf;margin-bottom:4px}
.ad-slot strong{display:block;color:#fff}
.ad-slot p{margin:4px 0 8px;color:#c3cfdd}
.ad-slot .ad-link{color:#b7f377}
body.guiding .ad-slot{display:none!important}
