:root{--paper:#f7f2e9;--ink:#211e1a;--muted:#766d63;--rule:#d8cfc2;--cafe:#a76344;--restaurant:#69775b;--shop:#8b6a8c;--hotel:#4d6b82;--sans:"DM Sans",Arial,sans-serif;--serif:"Italiana",Georgia,serif}*{box-sizing:border-box}html,body{height:100%;margin:0}body{overflow:hidden;background:var(--paper);color:var(--ink);font-family:var(--sans)}a{color:inherit;text-decoration:none}.map-header{height:72px;padding:0 clamp(18px,4vw,52px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--rule);background:rgba(247,242,233,.96);position:relative;z-index:20}.map-brand{font-size:10px;font-weight:500;line-height:1.05;letter-spacing:.1em;text-transform:uppercase}.map-title{text-align:center;display:flex;align-items:baseline;gap:12px}.map-title span{font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.map-title strong{font:400 28px/1 var(--serif)}.map-close{justify-self:end;font:300 31px/1 var(--sans)}.map-shell{height:calc(100% - 72px);position:relative}.map-shell:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(33,30,26,.08);z-index:1}#paris-map{position:absolute;inset:0}.map-top-panel{position:absolute;top:18px;left:18px;right:64px;z-index:5;display:flex;gap:10px;align-items:flex-start}.map-filters{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none}.map-filters::-webkit-scrollbar{display:none}.map-filters button,.locate-button{appearance:none;border:1px solid rgba(33,30,26,.18);background:rgba(250,247,241,.96);color:var(--ink);border-radius:999px;padding:11px 15px;white-space:nowrap;font:500 9px/1 var(--sans);letter-spacing:.09em;text-transform:uppercase;box-shadow:0 3px 14px rgba(33,30,26,.08);cursor:pointer}.map-filters button{display:flex;align-items:center;gap:7px}.map-filters button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.map-filters button span{opacity:.65}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.cafe{background:var(--cafe)}.dot.restaurant{background:var(--restaurant)}.dot.shop{background:var(--shop)}.dot.hotel{background:var(--hotel)}.locate-button{margin-left:auto;display:flex;gap:7px;align-items:center}.locate-button span{font-size:15px;line-height:0}.map-results{position:absolute;z-index:6;left:0;right:0;bottom:0;padding:0 0 max(18px,env(safe-area-inset-bottom));pointer-events:none}.map-results-head{width:min(1180px,calc(100% - 36px));margin:0 auto 9px;display:flex;justify-content:space-between;align-items:end;pointer-events:none;text-shadow:0 1px 8px #fff}.map-results-head p,.map-results-head>span{margin:0;font-size:8px;text-transform:uppercase;letter-spacing:.13em}.map-results-head p{font-weight:500}.map-results-head>span{color:var(--muted)}.place-rail{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:calc((100vw - min(420px,calc(100vw - 38px)))/2);padding:0 max(19px,calc((100vw - 1180px)/2));scrollbar-width:none;pointer-events:auto}.place-rail::-webkit-scrollbar{display:none}.map-card{flex:0 0 min(420px,calc(100vw - 38px));height:160px;background:rgba(250,247,241,.97);border:1px solid var(--rule);display:grid;grid-template-columns:145px 1fr;scroll-snap-align:center;box-shadow:0 10px 30px rgba(33,30,26,.13);cursor:pointer;transition:transform .2s,border-color .2s}.map-card.active{border-color:var(--ink);transform:translateY(-4px)}.map-card-image{width:100%;height:100%;object-fit:cover}.map-card-copy{padding:16px 17px 13px;min-width:0;display:flex;flex-direction:column}.map-card-kicker{display:flex;align-items:center;gap:7px;margin:0 0 6px;font-size:7px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}.map-card h2{font:400 23px/1.05 var(--serif);margin:0 0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-card-meta{margin:0;font-size:9px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-card-hours{font-size:8px;line-height:1.35;margin:7px 0 0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.map-card-actions{display:flex;gap:7px;margin-top:auto}.map-card-actions a{border:1px solid var(--ink);padding:8px 10px;font-size:7px;letter-spacing:.1em;text-transform:uppercase;text-align:center}.map-card-actions .primary{background:var(--ink);color:#fff}.map-marker{width:31px;height:31px;border:2px solid #fff;border-radius:50% 50% 50% 8px;transform:rotate(-45deg);box-shadow:0 2px 8px rgba(33,30,26,.35);display:grid;place-items:center;cursor:pointer;transition:width .2s,height .2s,box-shadow .2s}.map-marker span{color:#fff;font:500 12px/1 var(--sans);transform:rotate(45deg)}.map-marker[data-category="cafe"]{background:var(--cafe)}.map-marker[data-category="restaurant"]{background:var(--restaurant)}.map-marker[data-category="shop"]{background:var(--shop)}.map-marker[data-category="hotel"]{background:var(--hotel)}.map-marker.active{width:40px;height:40px;border-width:3px;box-shadow:0 4px 16px rgba(33,30,26,.45);z-index:2}.map-status{position:absolute;z-index:10;left:50%;top:72px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 14px;font-size:9px;letter-spacing:.06em;opacity:0;pointer-events:none;transition:opacity .2s}.map-status.show{opacity:1}.maplibregl-ctrl-top-right{top:61px;right:12px}.maplibregl-ctrl-group{border-radius:0!important;box-shadow:0 3px 14px rgba(33,30,26,.12)!important}.maplibregl-ctrl button{width:38px;height:38px}.maplibregl-user-location-dot:before{background-color:var(--ink)}.maplibregl-user-location-dot:after{border-color:var(--ink)}.maplibregl-ctrl-attrib{font-size:8px}.maplibregl-popup-content{font:400 12px var(--sans);border-radius:0;padding:10px 12px}.maplibregl-popup-close-button{display:none}@media(max-width:700px){.map-header{height:62px;padding:0 18px}.map-title span{display:none}.map-title strong{font-size:24px}.map-shell{height:calc(100% - 62px)}.map-top-panel{top:12px;left:10px;right:10px;display:block}.map-filters{padding-right:4px}.map-filters button{padding:10px 12px}.locate-button{position:absolute;right:0;top:50px}.maplibregl-ctrl-top-right{top:96px;right:10px}.map-results-head{width:calc(100% - 24px)}.map-card{height:148px;grid-template-columns:120px 1fr}.map-card-copy{padding:13px 13px 11px}.map-card h2{font-size:21px}.map-card-hours{margin-top:5px}.map-card-actions a{padding:7px 8px}.place-rail{gap:9px}.maplibregl-ctrl-attrib{max-width:120px}}@media(max-width:380px){.map-card{height:142px;grid-template-columns:105px 1fr}.map-card-hours{display:none}.map-title{display:none}}

/* Selected place state - deliberately high contrast so the card and pin read as one pair. */
.place-rail.has-selection .map-card:not(.active){opacity:.62;filter:saturate(.72)}
.map-card{position:relative;transition:transform .22s,border-color .22s,box-shadow .22s,opacity .22s,filter .22s}
.map-card.active{border:3px solid var(--ink);transform:translateY(-7px);box-shadow:0 18px 42px rgba(33,30,26,.3)}
.map-card.active:after{content:"Selected on map";position:absolute;right:10px;top:9px;background:var(--ink);color:#fff;padding:6px 8px;font:500 7px/1 var(--sans);letter-spacing:.11em;text-transform:uppercase}
.map-card.active[data-category="cafe"]{border-color:var(--cafe)}
.map-card.active[data-category="restaurant"]{border-color:var(--restaurant)}
.map-card.active[data-category="shop"]{border-color:var(--shop)}
.map-card.active[data-category="hotel"]{border-color:var(--hotel)}
.map-marker{overflow:visible;transition:width .22s,height .22s,box-shadow .22s,opacity .22s,filter .22s,transform .22s}
.map-marker.is-muted{opacity:.32;filter:saturate(.45);transform:rotate(-45deg) scale(.82)}
.map-marker.active{width:48px;height:48px;border-width:4px;opacity:1;filter:none;box-shadow:0 0 0 8px rgba(247,242,233,.92),0 0 0 11px var(--ink),0 9px 22px rgba(33,30,26,.48)}
.map-marker.active:after{content:attr(data-name);position:absolute;left:34px;bottom:39px;min-width:max-content;background:var(--ink);color:#fff;padding:8px 10px;transform:rotate(45deg);transform-origin:left bottom;font:500 9px/1 var(--sans);letter-spacing:.06em;white-space:nowrap;box-shadow:0 5px 16px rgba(33,30,26,.28);pointer-events:none}
.map-marker.active span{font-size:15px}
@media(max-width:700px){.place-rail.has-selection .map-card:not(.active){opacity:.48}.map-card.active{transform:translateY(-5px)}.map-card.active:after{right:7px;top:7px;padding:5px 6px;font-size:6px}.map-marker.active{width:44px;height:44px}.map-marker.active:after{left:31px;bottom:35px;font-size:8px;padding:7px 9px}}

/* Keep the venue label horizontal while retaining the guide's pin silhouette. */
.map-marker,.map-marker[data-category]{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;transform:none;display:block}
.map-marker.is-muted{transform:scale(.82)}
.map-marker .marker-shape{width:31px;height:31px;border:2px solid #fff;border-radius:50% 50% 50% 8px;display:grid;place-items:center;transform:rotate(-45deg);box-shadow:0 2px 8px rgba(33,30,26,.35);transition:width .22s,height .22s,box-shadow .22s}
.map-marker[data-category="cafe"] .marker-shape{background:var(--cafe)}
.map-marker[data-category="restaurant"] .marker-shape{background:var(--restaurant)}
.map-marker[data-category="shop"] .marker-shape{background:var(--shop)}
.map-marker[data-category="hotel"] .marker-shape{background:var(--hotel)}
.map-marker .marker-shape>span{color:#fff;font:500 12px/1 var(--sans);transform:rotate(45deg)}
.map-marker.active{border:0;box-shadow:none}
.map-marker.active .marker-shape{width:48px;height:48px;border-width:4px;box-shadow:0 0 0 8px rgba(247,242,233,.92),0 0 0 11px var(--ink),0 9px 22px rgba(33,30,26,.48)}
.map-marker.active .marker-shape>span{font-size:15px}
.map-marker .marker-shape>span{width:17px;height:17px;display:grid;place-items:center}
.map-marker .marker-shape svg{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.map-marker .marker-shape svg.paw-icon{fill:currentColor;stroke:none}
.map-marker.active .marker-shape>span,.map-marker.active .marker-shape svg{width:21px;height:21px}
.map-marker.active:after{left:42px;bottom:37px;transform:none;transform-origin:center}
@media(max-width:700px){.map-marker.active .marker-shape{width:44px;height:44px}.map-marker.active:after{left:38px;bottom:33px}}
.embed-mode{height:100%;overflow:hidden}
.embed-mode .map-header{display:none}
.embed-mode .map-shell{height:100%}

/* Two-tier filtering and a calmer, fully legible card carousel. */
.map-filter-stack{display:flex;flex-direction:column;gap:8px;min-width:0;max-width:calc(100% - 125px)}
.district-filters button{padding:9px 13px;background:rgba(247,242,233,.94);color:var(--muted);box-shadow:0 2px 10px rgba(33,30,26,.06)}
.district-filters button.active{background:var(--cafe);border-color:var(--cafe);color:#fff}
.map-results{padding-top:48px;background:linear-gradient(to bottom,transparent 0,rgba(247,242,233,.66) 43%,rgba(247,242,233,.92) 100%)}
.place-rail{padding-top:12px;padding-bottom:6px}
.place-rail.has-selection .map-card:not(.active){opacity:1;filter:none}
.map-card{height:174px;background:#fbf8f2;border-color:#cfc4b5;box-shadow:0 8px 22px rgba(33,30,26,.14);grid-template-columns:142px 1fr}
.map-card.active{border-width:2px;transform:translateY(-5px);box-shadow:0 16px 36px rgba(33,30,26,.25)}
.map-card.active:after{top:10px;right:10px}
.map-card-copy{padding:17px 18px 14px;background:#fbf8f2}
.map-card-kicker{padding-right:108px}
.map-card-actions{gap:8px;padding-top:9px}
.map-card-actions a{min-width:86px;padding:9px 11px;background:#fbf8f2}
.map-card-actions .primary{background:var(--ink)}
.map-empty{pointer-events:auto;flex:0 0 min(420px,calc(100vw - 38px));padding:28px;background:#fbf8f2;border:1px solid var(--rule);font:400 16px/1.45 var(--serif)}
@media(max-width:700px){.map-filter-stack{max-width:100%;gap:7px}.map-top-panel{right:10px}.district-filters button{padding:9px 11px}.locate-button{top:91px}.maplibregl-ctrl-top-right{top:135px}.map-results{padding-top:40px}.map-card{height:164px;grid-template-columns:116px 1fr}.map-card-copy{padding:14px 13px 12px}.map-card-kicker{padding-right:92px}.map-card-actions{padding-top:7px}.map-card-actions a{min-width:0;padding:8px}.map-card.active:after{top:8px;right:8px}}
.district-map-badge{display:flex;align-items:baseline;gap:7px;padding:9px 12px;background:var(--cafe);color:#fff;border:3px solid var(--paper);box-shadow:0 5px 18px rgba(33,30,26,.28);white-space:nowrap;pointer-events:none}.district-map-badge strong{font:400 20px/1 var(--serif)}.district-map-badge span{font:500 8px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase}@media(max-width:700px){.district-map-badge{padding:7px 9px}.district-map-badge strong{font-size:17px}.district-map-badge span{font-size:7px}}

/* Cleaner map treatment inspired by travel-search maps while retaining the guide's palette. */
.map-header{height:64px;background:rgba(250,248,244,.98);box-shadow:0 1px 0 rgba(33,30,26,.1)}
.map-shell{height:calc(100% - 64px)}
.map-top-panel{top:14px;left:14px;right:58px}
.map-filter-stack{gap:7px}
.map-filters{gap:6px}
.map-filters button,.locate-button{border-color:rgba(33,30,26,.14);background:#fff;padding:10px 14px;box-shadow:0 2px 9px rgba(33,30,26,.09);font-size:8px}
.map-filters button.active{background:var(--ink);border-color:var(--ink)}
.district-filters button{background:rgba(255,255,255,.94);box-shadow:0 2px 8px rgba(33,30,26,.07)}
.district-filters button.active{background:#fff;color:var(--ink);border:1.5px solid var(--ink);box-shadow:0 2px 10px rgba(33,30,26,.13)}
.maplibregl-ctrl-top-right{top:57px;right:10px}
.maplibregl-ctrl-group{border-radius:12px!important;overflow:hidden;background:#fff!important;box-shadow:0 2px 12px rgba(33,30,26,.14)!important}
.map-results{padding-top:40px;background:linear-gradient(to bottom,transparent,rgba(247,242,233,.4) 55%,rgba(247,242,233,.8))}
.map-results-head{margin-bottom:7px;text-shadow:0 1px 6px #fff}
.place-rail{gap:10px;padding-top:9px;padding-bottom:5px}
.place-rail.has-selection .map-card:not(.active){opacity:.8;filter:saturate(.82)}
.map-card{flex-basis:min(376px,calc(100vw - 38px));height:148px;grid-template-columns:128px 1fr;border:1px solid rgba(33,30,26,.13);border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 5px 18px rgba(33,30,26,.14);scroll-snap-align:center}
.map-card-copy{padding:14px 15px 12px;background:#fff}
.map-card h2{font-size:21px;margin-bottom:4px}
.map-card-kicker{margin-bottom:5px;padding-right:0}
.map-card-hours{margin-top:5px}
.map-card-actions{padding-top:6px}
.map-card-actions a{border-radius:7px;padding:7px 9px;background:#fff}
.map-card.active{border:2px solid var(--ink);transform:translateY(-4px);box-shadow:0 12px 27px rgba(33,30,26,.22)}
.map-card.active:before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--ink);z-index:2}
.map-card.active:after{display:none}
.map-card.active[data-category="cafe"]:before{background:var(--cafe)}
.map-card.active[data-category="restaurant"]:before{background:var(--restaurant)}
.map-card.active[data-category="shop"]:before{background:var(--shop)}
.map-card.active[data-category="hotel"]:before{background:var(--hotel)}
.map-marker,.map-marker[data-category]{width:36px;height:36px;border-radius:50%;background:#fff;box-shadow:0 2px 9px rgba(33,30,26,.28);display:grid;place-items:center;transition:transform .18s,opacity .18s,box-shadow .18s}
.map-marker .marker-shape{width:36px;height:36px;border:2px solid #fff;border-radius:50%;background:#fff!important;box-shadow:inset 0 0 0 1px rgba(33,30,26,.12);transform:none}
.map-marker .marker-shape>span{transform:none}
.map-marker[data-category="cafe"] .marker-shape>span{color:var(--cafe)}
.map-marker[data-category="restaurant"] .marker-shape>span{color:var(--restaurant)}
.map-marker[data-category="shop"] .marker-shape>span{color:var(--shop)}
.map-marker[data-category="hotel"] .marker-shape>span{color:var(--hotel)}
.map-marker.is-muted{transform:scale(.9);opacity:.58;filter:none}
.map-marker.active{width:48px;height:48px;border-radius:50%;transform:none;box-shadow:0 0 0 3px #fff,0 0 0 6px var(--ink),0 7px 18px rgba(33,30,26,.35)}
.map-marker.active .marker-shape{width:48px;height:48px;border-radius:50%;border:0;box-shadow:none;background:var(--ink)!important}
.map-marker.active .marker-shape>span{color:#fff}
.map-marker.active[data-category="cafe"]{box-shadow:0 0 0 3px #fff,0 0 0 6px var(--cafe),0 7px 18px rgba(33,30,26,.35)}
.map-marker.active[data-category="restaurant"]{box-shadow:0 0 0 3px #fff,0 0 0 6px var(--restaurant),0 7px 18px rgba(33,30,26,.35)}
.map-marker.active[data-category="shop"]{box-shadow:0 0 0 3px #fff,0 0 0 6px var(--shop),0 7px 18px rgba(33,30,26,.35)}
.map-marker.active[data-category="hotel"]{box-shadow:0 0 0 3px #fff,0 0 0 6px var(--hotel),0 7px 18px rgba(33,30,26,.35)}
.map-marker.active[data-category="cafe"] .marker-shape{background:var(--cafe)!important}
.map-marker.active[data-category="restaurant"] .marker-shape{background:var(--restaurant)!important}
.map-marker.active[data-category="shop"] .marker-shape{background:var(--shop)!important}
.map-marker.active[data-category="hotel"] .marker-shape{background:var(--hotel)!important}
.map-marker.active:after{left:54px;bottom:14px;border-radius:8px;padding:7px 9px;background:#fff;color:var(--ink);box-shadow:0 2px 10px rgba(33,30,26,.2)}
@media(max-width:700px){.map-header{height:58px}.map-shell{height:calc(100% - 58px)}.map-top-panel{top:10px}.maplibregl-ctrl-top-right{top:128px}.map-card{height:146px;grid-template-columns:112px 1fr;border-radius:12px}.map-card-copy{padding:12px}.map-marker.active:after{display:none}}
