:root{
  --teal:#0f766e; --teal-dark:#115e59; --teal-light:#0d9488;
  --ink:#1e293b; --muted:#64748b;
  --card:#ffffff; --bg:#f1f5f9; --line:#e2e8f0;
  --green:#16a34a; --blue:#2563eb; --amber:#d97706; --red:#dc2626;
  --tag-bg:#f1f5f9; --tag-ink:#334155;
}
html[data-theme="dark"]{
  --ink:#e2e8f0; --muted:#94a3b8;
  --card:#1e293b; --bg:#0f172a; --line:#334155;
  --tag-bg:#334155; --tag-ink:#cbd5e1;
  --teal:#14b8a6;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink);padding-bottom:90px;transition:background .25s,color .25s}
header{background:linear-gradient(135deg,var(--teal-dark),var(--teal));color:#fff;padding:18px 16px 14px}
.hdr-main{display:flex;align-items:center;justify-content:space-between;gap:10px}
header h1{margin:0;font-size:1.35rem}
header .tagline{margin:4px 0 0;font-size:.85rem;opacity:.9}
#btnTheme{background:rgba(255,255,255,.18);border:none;color:#fff;border-radius:999px;width:38px;height:38px;font-size:1.05rem;cursor:pointer}
main{max-width:860px;margin:0 auto;padding:12px}
#controls{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
button{cursor:pointer;border:none;border-radius:999px;padding:9px 14px;font-size:.85rem;font-weight:600}
#btnLocate{background:var(--teal);color:#fff}
#searchForm{display:flex;flex:1;gap:6px;min-width:200px}
#searchForm button{background:#e2e8f0;color:var(--ink)}
html[data-theme="dark"] #searchForm button{background:#334155;color:var(--ink)}
input[type=text]{flex:1;min-width:0;padding:9px 12px;border:1px solid #cbd5e1;border-radius:999px;font-size:.85rem;outline:none;background:var(--card);color:var(--ink)}
input[type=text]:focus{border-color:var(--teal)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{background:var(--card);border:1px solid var(--line);border-radius:999px;padding:5px 10px;font-size:.76rem;font-weight:500;color:var(--ink)}
.chip:hover{border-color:var(--teal);color:var(--teal)}
.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 12px;font-size:.82rem}
.filters label{display:flex;align-items:center;gap:4px;cursor:pointer}
.radius{margin-left:auto}
.radius input[type=range]{width:110px}
.legend{display:flex;gap:12px;font-size:.72rem;color:var(--muted);align-items:center;flex-wrap:wrap}
.legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:3px;vertical-align:middle}
#map{height:52vh;min-height:280px;border-radius:14px;overflow:hidden;box-shadow:0 2px 8px rgb(15 23 42/.12);z-index:1}
html[data-theme="dark"] .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.9)}
html[data-theme="dark"] .leaflet-container{background:#0f172a}
#status{margin:10px 2px 4px;font-size:.85rem;color:var(--muted);min-height:1.2em}
#results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer;transition:box-shadow .15s}
.card:hover{box-shadow:0 3px 10px rgb(15 23 42/.15)}
.card-head{display:flex;align-items:center;gap:8px}
.card-head .emoji{font-size:1.1rem}
.card-head .name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.star{background:none;border:none;font-size:1.05rem;padding:2px 4px;color:#cbd5e1;line-height:1}
.star.on{color:#f59e0b}
.dist{font-size:.78rem;color:var(--muted);white-space:nowrap}
.tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.tag{font-size:.72rem;background:var(--tag-bg);color:var(--tag-ink);border-radius:999px;padding:2px 8px}
.tag.badge-open{background:#dcfce7;color:#166534}
.tag.badge-closed{background:#fee2e2;color:#991b1b}
.tag.badge-24{background:#fef3c7;color:#92400e}
.tag.badge-free{background:#dcfce7;color:#166534}
.tag.badge-cust{background:#ede9fe;color:#5b21b6}
.rating-line{font-size:.75rem;color:var(--muted);margin-top:5px}
.card-actions{margin-top:8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.card-actions .linkbtn{background:var(--tag-bg);color:var(--ink);font-size:.78rem;font-weight:600;padding:6px 10px;border-radius:999px;text-decoration:none}
.card-actions .linkbtn:hover{color:var(--teal)}
.card-actions a.linkbtn{color:var(--teal)}
footer{font-size:.72rem;color:var(--muted);text-align:center;padding:18px 10px 8px;line-height:1.6}
footer a{color:var(--teal)}
#toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%) translateY(20px);background:#0f172a;color:#fff;padding:10px 16px;border-radius:999px;font-size:.85rem;opacity:0;pointer-events:none;transition:.25s;z-index:2000;max-width:90vw;text-align:center;box-shadow:0 4px 14px rgb(0 0 0/.35)}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toilet-marker .pin{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;border:2px solid #fff;box-shadow:0 2px 6px rgb(0 0 0/.3)}
.pin.free{background:var(--green)}
.pin.paid{background:var(--blue)}
.pin.unknown{background:var(--amber)}
.marker-cluster div{background:rgba(15,118,110,.75)!important;color:#fff!important;font-weight:700}
.marker-cluster-small div{background:rgba(15,118,110,.6)!important}
.marker-cluster-medium div{background:rgba(15,118,110,.7)!important}
#btnUrgent{position:fixed;right:18px;bottom:24px;z-index:1400;width:62px;height:62px;border-radius:50%;background:linear-gradient(135deg,#ef4444,#b91c1c);color:#fff;font-size:1.5rem;box-shadow:0 6px 18px rgb(185 28 28/.5);display:flex;align-items:center;justify-content:center}
#btnUrgent:active{transform:scale(.94)}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:1500;background:var(--card);border-radius:18px 18px 0 0;box-shadow:0 -8px 30px rgb(0 0 0/.3);max-height:72vh;overflow:auto;padding:14px 16px 20px;border:1px solid var(--line);border-bottom:none}
.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.sheet-head b{font-size:1rem}
.sheet-head button{background:var(--tag-bg);color:var(--ink);padding:6px 12px}
.urgent-hero{background:linear-gradient(135deg,#dc2626,#991b1b);color:#fff;border-radius:14px;padding:14px;margin-bottom:10px}
.urgent-hero .big{font-size:1.15rem;font-weight:700}
.urgent-hero .sub{font-size:.85rem;opacity:.92;margin-top:4px}
.urgent-hero .go{margin-top:10px;background:#fff;color:#991b1b;font-size:1rem;padding:12px;width:100%;border-radius:12px}
.urgent-list{display:flex;flex-direction:column;gap:6px}
.urgent-item{display:flex;align-items:center;gap:8px;background:var(--tag-bg);border-radius:10px;padding:8px 10px;font-size:.82rem}
.urgent-item .nm{flex:1;font-weight:600}
.urgent-item button{background:var(--card);color:var(--ink);font-size:.75rem;padding:5px 9px}
.rate{margin-top:8px;border-top:1px dashed var(--line);padding-top:8px}
.rate .stars{font-size:1.4rem;letter-spacing:3px;cursor:pointer;user-select:none}
.rate .stars span{color:#cbd5e1}
.rate .stars span.on{color:#f59e0b}
.rate .stars span:hover{color:#f59e0b}
.rate-chips,.rate-report{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}
.rate-chips button,.rate-report button{background:var(--tag-bg);color:var(--tag-ink);font-size:.74rem;padding:5px 10px}
.rate-chips button.sel{background:#dcfce7;color:#166534}
.rate-report button{background:#fee2e2;color:#991b1b}
.rate-msg{font-size:.74rem;color:var(--muted);margin-top:6px}
.route-chip{font-size:.75rem;color:var(--blue);font-weight:600;margin-top:6px}
