:root{--cream:#f7f1e9;--paper:#fff;--text:#2b211c;--muted:#796c63;--coffee:#2d190f;--green:#17492a;--line:#e8ddd3;--chip:#f2eae2;--shadow:0 18px 55px rgba(48,31,21,.17)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--text);background:var(--cream)}a{text-decoration:none;color:inherit}button,input{font:inherit}
.page{height:100%;display:flex;flex-direction:column}.topbar{height:68px;flex:0 0 68px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;padding:0 28px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);position:relative;z-index:50;backdrop-filter:blur(12px)}
.brand{font-family:Georgia,serif;font-size:25px;font-weight:700;color:var(--coffee)}.nav{display:flex;gap:28px;font-size:14px}.nav a{padding:23px 0 20px;border-bottom:3px solid transparent}.nav a.active{color:var(--green);border-color:var(--green)}.list-link{justify-self:end;background:var(--green);color:#fff;padding:10px 14px;border-radius:12px;font-weight:750;font-size:14px}
.map-shell{position:relative;flex:1;min-height:0;overflow:hidden}.map{position:absolute;inset:0;background:#e7e3dc}.map-controls{position:absolute;left:22px;top:22px;z-index:20;width:min(540px,calc(100% - 44px));display:grid;gap:9px}
.search-row{display:grid;grid-template-columns:1fr 50px;gap:8px}.search{height:50px;display:flex;align-items:center;gap:9px;padding:0 14px;background:rgba(255,255,255,.97);border:1px solid var(--line);border-radius:15px;box-shadow:0 8px 25px rgba(48,31,21,.11)}.search span{font-size:21px;color:var(--muted)}.search input{width:100%;border:0;outline:0;background:transparent;color:var(--text)}
.round-btn{width:50px;height:50px;border:1px solid var(--line);border-radius:15px;background:#fff;cursor:pointer;box-shadow:0 8px 25px rgba(48,31,21,.11);font-size:21px;color:var(--green)}
.filters{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.filter{flex:0 0 auto;border:1px solid var(--line);background:rgba(255,255,255,.97);border-radius:999px;padding:8px 11px;cursor:pointer;font-size:12px;box-shadow:0 5px 15px rgba(48,31,21,.07)}.filter.active{background:var(--green);border-color:var(--green);color:#fff}
.meta-row{display:flex;align-items:center;gap:8px}#countLabel{background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:999px;padding:7px 10px;font-size:12px;color:var(--muted)}.nearest-btn{border:0;border-radius:999px;background:var(--coffee);color:#fff;padding:8px 11px;font-size:12px;font-weight:750;cursor:pointer}
.place-card{position:absolute;z-index:30;left:22px;bottom:22px;width:380px;max-width:calc(100% - 44px);background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden;box-shadow:var(--shadow)}.close-card{position:absolute;right:10px;top:10px;z-index:4;width:34px;height:34px;border:0;border-radius:50%;background:rgba(255,255,255,.93);font-size:22px;cursor:pointer;box-shadow:0 4px 12px #0002}
.place-photo{height:160px;background:linear-gradient(135deg,#9f7e66,#dfcdbc);overflow:hidden}.place-photo img{width:100%;height:100%;object-fit:cover;display:block}.place-photo .fallback{height:100%;display:grid;place-items:center;color:#fff;font-size:42px}.place-body{padding:15px}.place-town{font-size:12px;color:var(--muted);margin-bottom:4px}.place-body h2{font-family:Georgia,serif;color:var(--coffee);font-size:27px;line-height:1.1;margin:0}.place-desc{font-size:13px;line-height:1.45;color:#67574d;margin:9px 0 0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.place-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.badge{padding:6px 8px;border-radius:999px;background:var(--chip);font-size:11px}.place-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}.btn{height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px}.btn.primary{background:var(--green);color:#fff}.btn.secondary{background:var(--chip);color:var(--coffee)}
.map-message{position:absolute;z-index:60;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 16px;box-shadow:var(--shadow);color:var(--muted);font-size:13px}.map-message[hidden]{display:none}
.cafe-marker{cursor:pointer;position:relative;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center}.cafe-pin{width:38px;height:38px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--green);border:5px solid #fff;box-shadow:0 6px 18px rgba(0,0,0,.28)}.cafe-pin::after{content:"";position:absolute;width:10px;height:10px;background:#fff;border-radius:50%;left:9px;top:9px}.cafe-marker.selected .cafe-pin{background:var(--coffee);transform:rotate(-45deg) scale(1.12)}.marker-label{margin-top:6px;max-width:155px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:9px;padding:5px 7px;box-shadow:0 4px 12px rgba(0,0,0,.12);font-size:11px;font-weight:750;color:var(--coffee)}
.user-marker{width:22px;height:22px;border-radius:50%;background:#2078d4;border:5px solid #fff;box-shadow:0 0 0 5px rgba(32,120,212,.20),0 4px 12px rgba(0,0,0,.25);transform:translate(-50%,-50%)}
@media(max-width:760px){.topbar{height:58px;flex-basis:58px;padding:0 12px;grid-template-columns:1fr auto}.brand{font-size:21px}.nav{display:none}.list-link{padding:8px 10px}.map-controls{top:10px;left:10px;width:calc(100% - 20px)}.filters{margin-right:-10px;padding-right:10px}.place-card{left:10px;right:10px;bottom:10px;width:auto;max-width:none;border-radius:20px;display:grid;grid-template-columns:118px 1fr}.place-photo{height:100%;min-height:180px}.place-body{padding:13px}.place-body h2{font-size:22px}.place-desc{-webkit-line-clamp:2}.place-actions{grid-template-columns:1fr}.btn{height:38px}.close-card{right:8px;top:8px}}
@media(max-width:430px){.place-card{grid-template-columns:96px 1fr}.place-photo{min-height:175px}.place-body h2{font-size:20px;padding-right:26px}.place-badges{display:none}}

/* OPEN_NOW_MAP_CSS_V1 */
.badge.open-state{background:#e7f3e9;color:#17492a;font-weight:850}
.badge.closed-state{background:#eee8e3;color:#725e52;font-weight:750}

/* MAP_FILTERS_LAYOUT_FIX_V1 */
@media (min-width: 761px) {
  .map-controls {
    width: min(720px, calc(100% - 44px));
  }

  .filters {
    flex-wrap: wrap;
    overflow: visible;
  }
}

@media (max-width: 760px) {
  .filters {
    flex-wrap: nowrap;
    overflow-x: auto;
  }
}

/* OSM_RU_UI_V1
   Keep APSNY UI above any Leaflet/MapLibre panes/canvases. */
.map-controls{z-index:1200!important}
.place-card{z-index:1300!important}
.map-message{z-index:1400!important}

/* MapLibre controls stay below our search/filter UI. */
.maplibregl-control-container{z-index:500}
.maplibregl-ctrl-top-left{top:8px;left:8px}

/* On desktop our search/filter panel occupies the top-left,
   so move provider zoom controls below it. */
@media(min-width:761px){
  .maplibregl-ctrl-top-left{top:165px}
}

/* Mobile: provider zoom controls are secondary to our app controls. */
@media(max-width:760px){
  .maplibregl-ctrl-top-left{top:148px}
}

/* OSM_VECTOR_FIX_V2 */
#map.map{position:absolute!important;inset:0!important;width:100%!important;height:100%!important}
#map .maplibregl-map,
#map .maplibregl-canvas-container,
#map .maplibregl-canvas{width:100%!important;height:100%!important}
.map-controls{z-index:1200!important}
.place-card{z-index:1300!important}
.map-message{z-index:1400!important}
.maplibregl-control-container{z-index:500}
@media(min-width:761px){.maplibregl-ctrl-top-left{top:165px}}
@media(max-width:760px){.maplibregl-ctrl-top-left{top:148px}}

/* FAVORITES_MAP_CSS_V1 */
@media(min-width:761px){.place-actions{grid-template-columns:1fr 1fr 1fr}}

/* LIKES_FAVORITES_MAP_V2 */
@media(min-width:761px){.place-actions{grid-template-columns:1fr 1fr!important}}

/* MAP_DISCOVERY_PARITY_V1 */
[hidden]{display:none!important}

.map-discovery-controls{display:grid;gap:9px}
.map-quick-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.map-quick-filters{display:flex;align-items:center;gap:7px;flex-wrap:wrap}

.map-filter-chip,.map-filter-control,.map-type-select select{
  min-height:36px;border:1px solid #e3d7cd;border-radius:999px;
  background:rgba(255,255,255,.94);color:#4b3d35;
  padding:7px 11px;font-size:11px;font-weight:750;white-space:nowrap
}
.map-filter-chip{display:inline-flex;align-items:center;gap:6px}
.map-filter-chip.active{background:#17492a;border-color:#17492a;color:#fff}
.map-filter-control.customize{border-style:dashed;background:rgba(255,255,255,.78)}
.map-filter-count{
  min-width:18px;height:18px;padding:0 5px;display:inline-grid;place-items:center;
  border-radius:999px;background:#17492a;color:#fff;margin-left:4px;font-size:9px
}
.map-type-select select{outline:0;max-width:170px}
.map-location-status{color:#75675e;font-size:10px}

.place-engagement{display:flex;gap:7px;margin:10px 0 0}
.map-engagement-btn{
  min-height:34px;border:1px solid #e5d9cf;border-radius:999px;background:#fff;
  color:#57483f;padding:6px 11px;font-weight:850
}
.map-engagement-btn.active:first-child{color:#a6352f}
.map-engagement-btn.active:last-child{color:#b17a12}

.map-filter-backdrop{
  position:fixed;inset:0;z-index:80;background:rgba(31,22,17,.34);
  opacity:0;transition:opacity .18s ease
}
.map-filter-backdrop.show{opacity:1}

.map-filter-panel{
  position:fixed;z-index:90;top:82px;right:18px;
  width:min(450px,calc(100vw - 36px));max-height:calc(100vh - 100px);
  display:grid;grid-template-rows:auto minmax(0,1fr) auto;
  background:#fff;border:1px solid #e7dbd1;border-radius:22px;
  box-shadow:0 26px 80px rgba(39,27,20,.24);
  opacity:0;transform:translateY(-8px) scale(.985);pointer-events:none;transition:.18s ease
}
.map-filter-panel.open{opacity:1;transform:none;pointer-events:auto}

.map-filter-panel-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:15px;
  padding:18px 19px 13px;border-bottom:1px solid #eee4dc
}
.map-filter-panel-head h2{margin:0;font-family:Georgia,serif;font-size:27px;color:#2d190f}
.map-filter-eyebrow{
  margin-bottom:4px;text-transform:uppercase;letter-spacing:.12em;
  font-size:9px;font-weight:850;color:#17492a
}
.map-filter-close{
  width:34px;height:34px;border:0;border-radius:50%;
  background:#f3ece6;font-size:23px;color:#74665d
}
.map-filter-panel-scroll{overflow:auto;padding:0 19px 18px}
.map-filter-section{padding-top:17px}
.map-filter-section h3{margin:0 0 10px;color:#2d190f;font-size:14px}

.map-filter-title-row{display:flex;justify-content:space-between;gap:12px}
.map-filter-title-row p{margin:3px 0 0;font-size:10px;color:#76685f}
.map-text-btn{border:0;background:transparent;color:#17492a;padding:0;font-size:10px;font-weight:850}

.map-quick-setup{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.map-setup-option{position:relative}
.map-setup-option input{position:absolute;opacity:0}
.map-setup-option span{
  display:inline-flex;align-items:center;min-height:31px;border:1px solid #e5d9cf;
  border-radius:999px;background:#fff;padding:5px 9px;font-size:10px;font-weight:700
}
.map-setup-option input:checked+span{border-color:#9fbba6;background:#e9f3eb;color:#17492a}
.map-setup-option input:checked+span::before{content:"✓";margin-right:4px}

.map-feature-group{padding:11px 0;border-top:1px solid #f0e8e1}
.map-feature-group:first-child{border-top:0}
.map-feature-group h4{
  margin:0 0 7px;text-transform:uppercase;letter-spacing:.08em;
  color:#75675e;font-size:9px
}
.map-check-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.map-check-option{
  display:flex;align-items:center;gap:7px;border:1px solid #e5d9cf;
  border-radius:10px;padding:8px 9px;font-size:10px
}
.map-check-option input{margin:0;accent-color:#17492a}
.map-check-option:has(input:checked){border-color:#a7c0ad;background:#eef6f0;color:#17492a}

.map-filter-panel-footer{
  display:flex;justify-content:space-between;gap:9px;
  padding:12px 19px 17px;border-top:1px solid #eee4dc
}
.map-reset-btn,.map-apply-btn{min-height:39px;border-radius:11px;padding:8px 12px;font-weight:800}
.map-reset-btn{border:1px solid #e5d9cf;background:#fff;color:#4e4038}
.map-apply-btn{border:1px solid #17492a;background:#17492a;color:#fff}

@media(max-width:720px){
  .map-quick-row{overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;scrollbar-width:none}
  .map-quick-row::-webkit-scrollbar{display:none}
  .map-quick-filters{display:contents}
  .map-filter-chip,.map-filter-control,.map-type-select{flex:0 0 auto}

  .map-filter-panel{
    top:auto;right:0;left:0;bottom:0;width:100%;max-height:min(82vh,700px);
    border-radius:22px 22px 0 0;transform:translateY(100%);opacity:1
  }
  .map-filter-panel.open{transform:none}
  .map-check-grid{grid-template-columns:1fr}
  .map-filter-panel-footer{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
  .place-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
/* MAP_EVENTS_LAYER_V1 */
.map-content-mode{
  display:inline-flex;
  width:max-content;
  max-width:100%;
  padding:3px;
  border:1px solid #ded2c7;
  border-radius:999px;
  background:rgba(255,255,255,.94);
  box-shadow:0 5px 18px rgba(48,32,21,.05);
}
.map-content-mode button{
  min-height:31px;
  border:0;
  border-radius:999px;
  background:transparent;
  color:#716259;
  padding:5px 11px;
  font-size:10px;
  font-weight:850;
}
.map-content-mode button.active{
  background:#17492a;
  color:#fff;
}

.map-cafe-controls{
  display:grid;
  gap:7px;
}

.map-event-controls{
  display:flex;
  gap:7px;
  align-items:center;
  flex-wrap:wrap;
}

.map-event-window{
  display:flex;
  gap:6px;
  align-items:center;
  flex-wrap:wrap;
}
.map-event-window button,
.map-event-type select{
  min-height:34px;
  border:1px solid #e3d7cd;
  border-radius:999px;
  background:rgba(255,255,255,.94);
  color:#574a42;
  padding:6px 10px;
  font-size:10px;
  font-weight:800;
}
.map-event-window button.active{
  background:#7a4a2d;
  border-color:#7a4a2d;
  color:#fff;
}
.map-event-type select{
  outline:0;
  max-width:175px;
}

.place-card[data-kind="event"] .place-town{
  color:#7a4a2d;
  font-weight:800;
}
.place-card[data-kind="event"] .badge.event-state{
  background:#f4e7dc;
  color:#6f3f25;
}
.place-card[data-kind="event"] .place-photo .fallback{
  font-size:42px;
}

@media(max-width:720px){
  .map-content-mode{
    width:100%;
    display:grid;
    grid-template-columns:repeat(3,1fr);
  }
  .map-content-mode button{
    width:100%;
  }

  .map-event-controls{
    overflow-x:auto;
    flex-wrap:nowrap;
    scrollbar-width:none;
  }
  .map-event-controls::-webkit-scrollbar{display:none}
  .map-event-window{
    flex-wrap:nowrap;
  }
  .map-event-window button,
  .map-event-type{
    flex:0 0 auto;
  }
}

/* APSNY NEAREST BUTTON STATE V1 */
.nearest-btn{
  border:1px solid rgba(23,73,42,.22);
  background:rgba(255,255,255,.96);
  color:var(--green);
  box-shadow:0 4px 14px rgba(23,73,42,.08);
  transition:background .16s ease,color .16s ease,border-color .16s ease,transform .12s ease;
}
.nearest-btn.active,.nearest-btn[aria-pressed="true"]{
  background:var(--green);
  border-color:var(--green);
  color:#fff;
}
.nearest-btn:active{transform:scale(.98)}
.nearest-btn:disabled{opacity:.6;cursor:wait}

/* APSNY MOBILE MAP LAYER FIX V2 */
.map-shell{isolation:isolate;z-index:0}
@media(max-width:720px){
  .map-content-mode{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* APSNY UNIFIED MAP MODULE V3 */
.map-discovery-controls{
  padding:12px;
  border:1px solid rgba(255,255,255,.13);
  border-radius:22px;
  background:linear-gradient(145deg,rgba(36,85,68,.97),rgba(23,63,50,.98));
  box-shadow:0 14px 34px rgba(23,63,50,.20);
}
.map-discovery-controls .map-location-status{color:#e6dbcc}
@media(max-width:720px){
  .map-discovery-controls{padding:9px;border-radius:18px}
}


/* APSNY MAP UI FIX 2026-08-26
   The map itself stays visually open: controls float over it without a solid green panel.
   Only selected filters/modes are green. The combined "All" content mode no longer exists. */
.map-discovery-controls{
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  pointer-events:none;
}
.map-discovery-controls > *,
.map-discovery-controls button,
.map-discovery-controls input,
.map-discovery-controls select,
.map-discovery-controls label{
  pointer-events:auto;
}
.map-discovery-controls .map-location-status{color:#173f32!important}
.map-content-mode{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  width:max-content!important;
  background:rgba(255,255,255,.88)!important;
  border-color:rgba(23,63,50,.16)!important;
  box-shadow:0 7px 22px rgba(23,63,50,.10)!important;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.map-content-mode button.active,
.map-filter-chip.active,
.map-filter-chip[aria-pressed="true"],
.map-filter-control.active,
.map-filter-control[aria-pressed="true"],
.map-event-window button.active,
.map-type-select.active select,
.map-event-type.active select{
  background:#173f32!important;
  border-color:#173f32!important;
  color:#fffaf2!important;
}
.map-filter-control.active .map-filter-count,
.map-filter-control[aria-pressed="true"] .map-filter-count{
  background:#fffaf2!important;
  color:#173f32!important;
}
.map-event-window button.active{
  box-shadow:0 4px 13px rgba(23,63,50,.16);
}
@media(max-width:720px){
  .map-content-mode{
    width:100%!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
