:root{color-scheme:dark;font-family:system-ui,Segoe UI,sans-serif;background:#061711;color:#edfdf3}
*{box-sizing:border-box}
body{margin:0;background:linear-gradient(180deg,#04120d 0%,#072016 100%)}
header{background:#0b2a1d;border-bottom:1px solid #2f6d50;padding:18px 5vw;display:flex;justify-content:space-between;align-items:center}
header b{color:#b9f5ce}
main{max-width:1100px;margin:auto;padding:22px 18px}
h1{font-size:1.9rem;margin:0 0 10px} h2{font-size:1.25rem;margin:0 0 10px} p,small{color:#c7decc}
section,.panel{background:#0c251b;border:1px solid #2a684c;border-radius:14px;padding:18px;margin:16px 0;box-shadow:0 8px 30px rgba(0,0,0,.18)}
label{display:block;font-size:.92rem;margin:12px 0 5px;color:#d9f1e1;font-weight:600}
input,select{background:#071a13;border:1px solid #4d8768;color:#fff;border-radius:10px;padding:11px 12px;width:100%;font:inherit}
button{background:#29c67d;color:#052117;border:0;border-radius:10px;padding:11px 14px;font-weight:700;cursor:pointer;margin:8px 8px 8px 0}
button.secondary{background:#244d39;color:#f2fff5} button.danger{background:#d85555;color:#fff} button:disabled{opacity:.5;cursor:not-allowed}
a{color:#8af4c0}.muted{color:#a8c6b5}.help{background:#193527;padding:12px;border-radius:10px}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}.stop{padding:10px;border-bottom:1px solid #234a37}.stop:last-child{border-bottom:0}.stop-title{font-size:12px;color:#97baa7;margin-bottom:8px}
#map,.bingo-mini-map,.bingo-route-fullmap{height:420px;border-radius:12px;background:#10222a;border:1px solid #2b5667;overflow:hidden}
.bingo-mini-map{height:235px;cursor:pointer}.bingo-route-fullmap{height:min(68vh,680px);min-height:340px}
#status{white-space:pre-wrap}.pill{border-radius:20px;padding:6px 10px;background:#174c34;display:inline-block}
.leaflet-container{background:#10222a;color:#fff}.leaflet-control-attribution{background:rgba(8,22,28,.78)!important;color:#e2efea!important}.leaflet-control-attribution a{color:#8ef0c8!important}
.leaflet-pane .bingo-dark-filter, .bingo-dark-filter{} .leaflet-tile-pane.bingo-dark-filter{filter:invert(1) hue-rotate(180deg) brightness(.78) contrast(1.18) saturate(.78)}
.bingo-stop-wrap,.bingo-van-wrap{background:none;border:0}
.bingo-stop-stack{display:flex;flex-direction:column;align-items:center;gap:4px}
.bingo-stop-name{display:inline-block;max-width:150px;padding:2px 8px;border-radius:999px;background:rgba(4,16,13,.90);border:1px solid #3eeab1;color:#f5fff9;font-size:11px;line-height:1.2;text-align:center;box-shadow:0 2px 10px rgba(0,0,0,.32);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bingo-van-name{border-color:#ffd166;color:#fff8e3}
.bingo-passenger,.bingo-van{display:grid;place-items:center;background:#0d2b30;border-radius:50%;box-shadow:0 4px 14px rgba(0,0,0,.45)}
.bingo-passenger{width:32px;height:32px;border:2px solid #53f3bb;font-size:21px}
.bingo-van{width:42px;height:42px;border:3px solid #ffd166;font-size:25px;background:#114145}
.bingo-route-head{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:10px}.bingo-route-head strong{color:#c9ffe3;font-size:1.05rem}
.bingo-route-open{background:#1fbf80;color:#072117}.bingo-route-stops,.bingo-stop-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.bingo-route-stops span,.bingo-stop-chips span{border:1px solid #366f57;background:#12392c;border-radius:999px;padding:6px 9px;font-size:12px;color:#ebfff4}
.bingo-route-card{margin-top:14px}.bingo-route-overlay{position:fixed;inset:0;background:rgba(0,0,0,.88);display:flex;align-items:center;justify-content:center;padding:14px;z-index:100000}.bingo-route-dialog{width:min(1100px,100%);max-height:96vh;overflow:auto;background:#082119;border:1px solid #388667;border-radius:14px;padding:14px}
code{word-break:break-all}
@media(max-width:700px){.cols{grid-template-columns:1fr}#map,.bingo-route-fullmap{height:320px}.bingo-mini-map{height:200px}.bingo-route-dialog{padding:10px}.bingo-stop-name{max-width:120px}}

/* V2.3: bairros bem legíveis; nome por cima do boneco */
.bingo-stop-wrap,.bingo-van-wrap{overflow:visible!important;z-index:300}
.bingo-stop-stack{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:max-content;overflow:visible;pointer-events:none}
.bingo-stop-name{overflow:visible;max-width:200px;white-space:nowrap;text-overflow:clip;font-size:12px;font-weight:800;line-height:1.3;color:#ffffff;background:#071f20;border:1.5px solid #6bf2bd;text-shadow:0 1px 2px #000;box-shadow:0 2px 14px #000b;padding:4px 9px;}
.bingo-van-wrap .bingo-stop-stack{z-index:999}
#mapWarn{color:#ffd39d;font-size:13px;font-weight:600;min-height:20px;margin-top:8px}
.leaflet-tile-pane.bingo-dark-filter{filter:invert(1) hue-rotate(180deg) brightness(.95) contrast(1.08) saturate(.85)!important}
.bingo-route-fullmap,.bingo-mini-map,#map{isolation:isolate;background:#122b36}
.bingo-route-fullmap .leaflet-container,.bingo-mini-map .leaflet-container,#map.leaflet-container{background:#122b36}

/* Google Maps V2.4 · identidade Bingo da Sorte */
:root{--bingo-green:#22dc8d;--bingo-gold:#d6ae46;--bingo-deep:#061711}
header{border-bottom-color:var(--bingo-gold)}header b{color:var(--bingo-gold)}
section,.panel{border-color:#365d42}button,.bingo-route-open{background:var(--bingo-green);color:#062419}
button:focus-visible,input:focus-visible{outline:2px solid var(--bingo-gold);outline-offset:2px}
#map,.bingo-mini-map,.bingo-route-fullmap{background:#12241d;border:1px solid #9a7c34}
.gm-marker-wrap{position:absolute;transform:translate(-50%,-100%);pointer-events:none;z-index:50}
.gm-pin{display:flex;flex-direction:column;align-items:center;gap:2px;width:max-content;max-width:180px;filter:drop-shadow(0 3px 8px #0009)}
.gm-label{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#071e16;border:1px solid var(--bingo-gold);border-radius:999px;color:#ffedb5;padding:4px 10px;font-size:12px;font-weight:800;text-align:center}
.gm-symbol{width:35px;height:35px;border-radius:50%;border:2px solid var(--bingo-gold);background:#06432b;display:grid;place-items:center;font-size:22px}
.bingo-stop-stack{position:static;transform:none;left:auto;bottom:auto}
.bingo-passenger{background:#06432b;border-color:var(--bingo-gold)}
.bingo-van{background:#0a6040;border-color:var(--bingo-gold)}
.bingo-stop-name{color:#fff0bb;border-color:var(--bingo-gold)}
.gm-pin .bingo-stop-name{font-size:12px}
@media(max-width:700px){.gm-label{max-width:128px;font-size:11px}}
