/* Map page */
body.map-body{height:100dvh;overflow:hidden;background:var(--bg)}
.mapapp{position:fixed;left:0;right:0;bottom:0;top:calc(var(--hdr) + var(--safe-t));display:grid;grid-template-columns:minmax(380px,440px) 1fr}
.panel{display:flex;flex-direction:column;min-height:0;background:var(--bg2);border-right:1px solid var(--hair);z-index:5;position:relative}
.side-top{padding:14px 14px 4px}
.sbar{display:flex;align-items:center;gap:4px;padding:5px;border-radius:22px;box-shadow:var(--sh2)}
.sb-home{display:none}
.sfield{position:relative;flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding-left:10px;color:var(--tx3)}
.sfield input{flex:1;min-width:0;height:46px;border:0;background:transparent;font-size:16px;color:var(--tx);outline:none;text-overflow:ellipsis;-webkit-appearance:none;appearance:none}
.sfield input::placeholder{color:var(--tx3)}.sfield input::-webkit-search-cancel-button{display:none}
.sfield .ac{left:-46px;right:-48px;top:calc(100% + 12px)}
.qx{width:36px;height:36px;border-radius:12px}
.fbtn{position:relative;background:var(--pri-soft);color:var(--pri-t)}.fbtn b{position:absolute;top:2px;right:2px;min-width:18px;height:18px;border-radius:9px;background:var(--pri-d);color:#fff;font:700 11px/18px var(--f-d);text-align:center;padding:0 4px}
.chips{display:flex;gap:8px;overflow-x:auto;padding:10px 2px 4px;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
.chips::-webkit-scrollbar{display:none}.chips .chip{scroll-snap-align:start;flex:none}
.chips.cats{padding-top:2px;padding-bottom:10px}
.chip.cat.on{background:var(--c);border-color:var(--c);color:#fff}.chip.cat.on .i{color:#fff}
.chip.soft{background:transparent;box-shadow:none;border-style:dashed;color:var(--tx2)}
@media(min-width:861px){#quick{flex-wrap:wrap;overflow:visible}.chips.cats{flex-wrap:wrap;overflow:visible}.chips.cats.closed .chip.xtra{display:none}}
.sheet{display:flex;flex-direction:column;min-height:0;flex:1}
.sheet-grab{display:none}
.p-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px 8px}
.p-head b{font:800 17px/1 var(--f-d)}.p-head #countsub{margin-left:8px;font-size:12.5px}
.sortsel select{height:34px;border-radius:11px;border:1px solid var(--hair);background:var(--sf);padding:0 26px 0 10px;font:600 12.5px/1 var(--f-b);color:var(--tx2);-webkit-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--tx3) 50%),linear-gradient(135deg,var(--tx3) 50%,transparent 50%);background-position:calc(100% - 14px) 14px,calc(100% - 9px) 14px;background-size:5px 5px;background-repeat:no-repeat}
.open-note{display:flex;gap:8px;margin:0 14px 6px;padding:9px 12px;border-radius:12px;background:var(--warn-soft);color:var(--tx2);font-size:12.5px;line-height:1.35}.open-note .i{color:var(--warn);margin-top:1px}
.p-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:6px 14px calc(18px + var(--safe-b));display:grid;gap:12px;align-content:start;grid-auto-rows:max-content}
.p-list .more{justify-self:center}
.mapwrap{position:relative;min-width:0;min-height:0;isolation:isolate;overflow:hidden}
#map{position:absolute;inset:0;isolation:isolate;background:var(--bg)}
.maplibregl-canvas{outline:none}
.maplibregl-ctrl-attrib{font:11px/1.4 var(--f-b)!important;background:var(--glass2)!important;border-radius:10px 0 0 0!important;color:var(--tx2)!important}
.maplibregl-ctrl-attrib a{color:var(--tx2)!important}
html[data-theme=dark] .maplibregl-ctrl-attrib-button{filter:invert(1)}
.mctl{position:absolute;right:14px;bottom:44px;z-index:6;display:grid;gap:10px}
.mlswitch{display:none}
.maploading{position:absolute;inset:0;z-index:7;display:grid;place-content:center;justify-items:center;gap:12px;background:var(--bg);color:var(--tx2);font:600 14px var(--f-b);transition:opacity .5s .1s,visibility .5s .1s}
.maploading.done{opacity:0;visibility:hidden;pointer-events:none}
.spin{width:34px;height:34px;border-radius:50%;border:3px solid var(--pri-soft);border-top-color:var(--pri);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.pulse{width:0;height:0;pointer-events:none}.pulse i{position:absolute;left:-17px;top:-17px;width:34px;height:34px;border-radius:50%;border:2.5px solid var(--c);background:color-mix(in srgb,var(--c) 18%,transparent);animation:ring 1.9s var(--ease) infinite}.pulse i+i{animation-delay:.95s}
@keyframes ring{0%{transform:scale(.3);opacity:.9}100%{transform:scale(2.1);opacity:0}}
/* detail glass card */
.od{position:absolute;z-index:9;top:16px;right:16px;width:min(410px,calc(100% - 32px));max-height:calc(100% - 32px);display:flex;flex-direction:column;border-radius:var(--r-xl);background:var(--glass2);box-shadow:var(--sh3);overflow:hidden;animation:odin .42s var(--ease);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2)}
@keyframes odin{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}
.od.out{animation:odout .22s var(--ease) forwards}@keyframes odout{to{opacity:0;transform:translateY(12px) scale(.98)}}
.od-grab{display:none}
.od-x{position:absolute;top:10px;right:10px;z-index:3;background:var(--glass2);border:1px solid var(--hair);width:38px;height:38px;border-radius:13px}
.od-scroll{overflow-y:auto;overscroll-behavior:contain;padding:0 0 4px;flex:1;min-height:0}
.od-head{padding:10px 10px 0}.od-ph{position:relative;display:grid;place-items:center;height:136px;border-radius:24px;overflow:hidden;background:linear-gradient(135deg,color-mix(in srgb,var(--c) 26%,var(--sf)),color-mix(in srgb,var(--c) 7%,var(--sf)));color:var(--c)}
.od-ph .ph-ic{width:44px;height:44px;opacity:.75}.od-ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .45s}.od-ph img.ld{opacity:1}.od-ph.logo img{object-fit:contain;padding:16px;background:#fff}
.od-hd{padding:14px 8px 4px;display:grid;gap:8px}.od-hd h2{font-size:23px}
.od-body{padding:6px 18px 8px;display:grid;gap:2px}
.od-row{display:grid;grid-template-columns:22px 1fr;gap:12px;padding:12px 0;border-top:1px solid var(--hair)}.od-row>.i{color:var(--tx3);margin-top:2px}
.od-k{display:block;font:700 11px/1 var(--f-b);letter-spacing:.07em;text-transform:uppercase;color:var(--tx3);margin-bottom:5px}
.od-row b{font-weight:700}.t-ok{color:var(--mint-t)}
.od-link{font-weight:700;color:var(--pri-t)}
.od-warn{display:block;font-style:normal;font-size:12.5px;color:var(--warn);margin-top:2px}
.od-w{margin-top:6px;font-size:13.5px}.od-w summary{cursor:pointer;color:var(--pri-t);font-weight:600;list-style:none}.od-w summary::-webkit-details-marker{display:none}.od-w ul{list-style:none;margin:8px 0 4px;padding:0;display:grid;gap:3px}.od-w li{display:flex;justify-content:space-between;gap:12px;padding:4px 8px;border-radius:8px;color:var(--tx2)}.od-w li.now{background:var(--pri-soft);color:var(--tx);font-weight:700}
.od-fn{font-size:12px;color:var(--tx3);margin-top:3px;line-height:1.35}
.od-pi{padding:6px 10px;border-radius:10px;background:var(--sf2);font-size:13.5px;margin-bottom:6px}
.od-sv{padding:12px 0;border-top:1px solid var(--hair)}
.od-src{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;padding:12px 0 6px;border-top:1px solid var(--hair);font-size:12.5px;color:var(--tx3)}
a.src{display:inline-flex;align-items:center;gap:2px;color:var(--tx3);text-decoration:underline;text-underline-offset:2px;font-size:12px}a.src:hover{color:var(--pri-t)}
.od-act{display:flex;gap:8px;padding:12px 14px calc(14px + var(--safe-b));border-top:1px solid var(--hair);background:var(--glass2)}.od-act .btn:first-child{flex:1}.od-act .fav{width:52px;padding:0}.od-act a.btn{padding:0 18px}
.bnav,.morepop{display:none}
/* ---------- mobile ---------- */
@media(max-width:860px){
  .mhdr{display:none}
  .mapapp{top:0;display:block}
  .panel{display:contents}
  .side-top{position:fixed;left:0;right:0;top:0;z-index:20;padding:calc(10px + var(--safe-t)) 12px 0;pointer-events:none;transition:transform .35s var(--ease)}
  .side-top>*,.side-top .sblock>*{pointer-events:auto}
  .sbar{border-radius:24px}.sb-home{display:inline-grid}
  .chips{scroll-padding:0 12px;padding:10px 0 4px;margin:0 -12px;padding-left:12px;padding-right:12px}
  .chips .chip{box-shadow:var(--sh2)}
  .sheet-full .chips{display:none}
  .mapwrap{position:fixed;inset:0;isolation:auto}
  .sheet{position:fixed;z-index:15;left:0;right:0;bottom:calc(62px + var(--safe-b));height:calc(100dvh - 146px - var(--safe-t) - var(--safe-b));background:var(--bg2);border-radius:28px 28px 0 0;box-shadow:0 -10px 40px rgba(16,29,48,.2),0 -1px 0 var(--hair);transform:translateY(var(--sheet-y,60%));transition:transform .42s var(--ease);will-change:transform;touch-action:none;overflow:hidden}
  .sheet.drag{transition:none}
  .sheet-grab{display:grid;place-items:center;height:28px;flex:none;cursor:grab;touch-action:none}.sheet-grab i{width:42px;height:5px;border-radius:3px;background:var(--hair2)}
  .p-head{touch-action:none}
  .p-list{touch-action:none;overflow-y:hidden}.sheet.is-full .p-list{overflow-y:auto;touch-action:pan-y}
  .mctl{right:12px;bottom:calc(62px + var(--safe-b) + var(--sheet-vis,96px) + 14px);transition:bottom .42s var(--ease)}
  .mctl #zin,.mctl #zout{display:none}
  .mlswitch{display:inline-flex;align-items:center;gap:8px;position:fixed;z-index:40;left:50%;transform:translateX(-50%);bottom:calc(62px + var(--safe-b) + var(--sheet-vis,96px) + 14px);height:44px;padding:0 18px;border-radius:999px;font:700 14px/1 var(--f-d);box-shadow:var(--sh2);transition:bottom .42s var(--ease),transform .18s;color:var(--tx)}
  .mlswitch:active{transform:translateX(-50%) scale(.95)}.ml-i{display:inline-grid}
  .od{position:fixed;left:8px;right:8px;top:auto;bottom:calc(62px + var(--safe-b) + 8px);width:auto;max-height:72dvh;border-radius:30px;z-index:25}
  .od-grab{display:grid;place-items:center;height:22px;flex:none;touch-action:none;position:relative;z-index:2}.od-grab i{width:40px;height:5px;border-radius:3px;background:var(--hair2)}
  .od-ph{height:112px}.od-hd h2{font-size:21px}
  .od-x{top:22px}
  .app-detail .sheet,.app-detail .mctl,.app-detail .mlswitch{display:none}
  .app-detail .side-top{transform:translateY(0)}
  .bnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(62px + var(--safe-b));padding:0 6px var(--safe-b);border-radius:0;border-width:1px 0 0;justify-content:space-around;-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);background:var(--glass2)}
  .bnav a,.bnav button{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font:600 10.5px/1 var(--f-b);color:var(--tx3);min-height:48px;border-radius:14px;transition:color .2s,transform .18s}
  .bnav .on,.bnav .on .i{color:var(--pri-t)}.bnav a:active,.bnav button:active{transform:scale(.92)}
  .bnav button.on{color:#E5484D}.bnav button.on .i{fill:#E5484D}
  .bnav b{position:absolute;top:4px;left:calc(50% + 6px);min-width:16px;height:16px;border-radius:8px;background:#E5484D;color:#fff;font:700 10px/16px var(--f-d);text-align:center}
  .morepop{display:grid;gap:10px;position:fixed;z-index:35;right:12px;bottom:calc(72px + var(--safe-b));width:min(280px,calc(100% - 24px));padding:14px;border-radius:24px;box-shadow:var(--sh3);animation:pop .25s var(--ease);background:var(--glass2)}.morepop[hidden]{display:none}
  .morepop .seg{justify-self:stretch}.morepop .seg button{flex:1}.morepop [data-theme-toggle]{width:100%;display:flex;gap:8px;justify-content:center}
  .maplibregl-ctrl-bottom-right{bottom:calc(62px + var(--safe-b) + var(--sheet-vis,96px))!important;transition:bottom .42s var(--ease)}
  .app-detail .maplibregl-ctrl-bottom-right{bottom:calc(62px + var(--safe-b))!important}
  .modal-card .chips{flex-wrap:wrap;overflow:visible;margin:0;padding:0}
}
/* filters dialog */
.fg{display:grid;gap:8px}.fg h4{font:700 12px/1 var(--f-b);letter-spacing:.07em;text-transform:uppercase;color:var(--tx3)}
.fg .chips{flex-wrap:wrap;overflow:visible;padding:0;margin:0}
.fg .chip{box-shadow:none}
.fa{display:flex;gap:10px;position:sticky;bottom:-24px;padding-top:6px}.fa .btn{flex:1}

.oc-addr{display:inline-flex;align-items:flex-start;gap:4px}.oc-addr .i{margin:2px 0 0!important;flex:none}
.od-act{flex:none}.od-scroll{flex:1 1 auto}
.od-act{position:sticky;bottom:0;z-index:2}.od-scroll{padding-bottom:0}
.od-act .fav{flex:none;width:52px}.od-act .btn{flex-shrink:0}.od-act .btn:first-child{flex:1}

/* ---- national scale additions ---- */
.p-head>div:first-child{min-width:0;display:flex;flex-direction:column;gap:3px}
.p-head #countsub{margin-left:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:12px;line-height:1.25;overflow:hidden}
.p-head #countsub:empty{display:none}
.chip.citybtn{font-weight:700;color:var(--pri-t);border-color:color-mix(in srgb,var(--pri) 35%,transparent)}
.chip.cat.zero:not(.on){opacity:.55}
.list-h{margin:18px 4px 6px;font:800 14px/1.2 var(--f-d);display:grid;gap:2px}.list-h small{font:500 12px/1.3 var(--f-b);color:var(--tx3)}
.citylist{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:4px;max-height:min(52dvh,420px);overflow:auto}
.cityrow{width:100%;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;border:1px solid var(--hair);background:var(--glass);font:600 15px/1 var(--f-b);color:var(--tx);cursor:pointer;text-align:left}
.cityrow b{font-size:12.5px;color:var(--tx3);font-weight:700}.cityrow:hover,.cityrow:focus-visible{border-color:var(--pri);outline:none}
.modal-card .field#ct-q{width:100%;margin-top:6px}
#list .empty{padding:10px 12px 20px;gap:8px}#list .empty-ic{width:48px;height:48px;border-radius:16px;animation:none}#list .empty h3{font-size:17px}#list .empty p{font-size:14px;max-width:none}
