/* Shared information cards, readable on mouse and touch screens. */
.mapFeatureInfo{max-width:270px;min-width:180px;font:13px/1.6 system-ui,sans-serif;color:#334155;overflow-wrap:anywhere;padding:2px 0}
.mapFeatureInfo>strong{display:block;font-size:15px;color:#173247;line-height:1.4}
.mapFeatureInfo>small{display:block;color:#64748b;margin-top:4px}
.mapDirectionsActions{margin-top:10px}
.mapDirectionsButton{display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;box-sizing:border-box;padding:9px 10px;border:1px solid #247f78;border-radius:9px;background:#247f78;color:#fff!important;text-decoration:none;font-size:12px;font-weight:650;line-height:1.4}
.mapDirectionsButton svg{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mapDirectionsButton:hover{background:#1c6b65}.mapDirectionsButton:focus-visible{outline:2px solid #173247;outline-offset:2px}
.mapFeatureInfo .mapDirectionsNote{font-size:11px;line-height:1.5;color:#64748b;margin-top:6px}
.mapFeatureInfo p{margin:8px 0 0}.mapInfoAddress{border-top:1px solid #e2e8f0;padding-top:8px}.mapInfoRange{font-size:12px;color:#64748b}.mapInfoBenefit{color:#087f5b}
.area-label{pointer-events:auto!important;cursor:pointer;max-width:260px;white-space:normal!important}
.area-label:focus-visible{outline:2px solid #087f8c;outline-offset:3px}
@media(max-width:900px){
 .app{grid-template-rows:114px 32px minmax(0,1fr)!important;height:100dvh!important}
 .top{display:grid!important;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:52px 44px;height:114px!important;min-height:0!important;padding:5px 8px 8px!important;gap:5px 6px!important;overflow:visible!important}
 .top .brand{grid-column:1;grid-row:1;min-width:0!important}.brandTitle{font-size:17px!important;white-space:normal;line-height:1.15}.brandMark{width:20px;height:25px;display:inline-flex}
 .top .brand .cafeLink{display:block!important;font-size:10px!important;margin-top:3px}
 .top .actions{grid-column:2;grid-row:1;gap:4px!important}.actions .btn{min-width:40px!important;min-height:44px!important;height:44px!important;padding:4px 6px!important}
 .top .search{grid-column:1/-1;grid-row:2;display:flex!important;min-width:0!important;width:100%!important;margin:0!important;height:44px}
 .search input{min-width:0!important;font-size:16px!important;padding:8px 12px!important}.search button{min-width:56px;min-height:44px;font-size:13px}
 .communityStats{min-height:32px;font-size:10px}.communityStats>span+span{margin-left:7px;padding-left:7px}.statsReviewButton{min-height:32px}
 .side.mobileOpen{height:80%!important;max-height:calc(100% - 14px)!important}
 .side .filters{flex-shrink:0}.side .list{min-height:0;flex:1;overscroll-behavior:contain}
 .filters #cats{gap:5px}.filters #cats button,.filters #subs button,.benefitTabs button{min-height:40px;font-size:12px}
 .mobileSideHead button,.detailClose,.travellerDialogHead>button{min-width:44px!important;min-height:44px!important}
 .mobileListBtn{min-height:44px!important;font-size:12px!important}
 .areaLegend{max-height:58%!important;padding:8px!important;overscroll-behavior:contain}
 .areaLegend button{min-height:38px!important;font-size:12px!important;padding:6px 9px!important}
 .areaLegend .areaTitle{min-height:36px;display:flex;align-items:center;gap:5px}
 .areaLegend.mobileCollapsed{max-height:52px!important}
 .detail{max-height:76%!important;padding:14px!important;overscroll-behavior:contain}
 .detail .copyBtn,.detail .btn{min-height:44px;font-size:12px}.copyRow{flex-wrap:wrap}
 .modalback{padding:max(6px,env(safe-area-inset-top)) 6px max(6px,env(safe-area-inset-bottom))!important}
 .modal{max-height:calc(100dvh - 20px)!important;overscroll-behavior:contain;scroll-padding-bottom:70px}
 .modal input:not([type="checkbox"]):not([type="radio"]),.modal textarea,.modal select,.travellerDialog select{font-size:16px!important;min-height:44px}
 .modal button,.travellerDialog .btn{min-height:44px}
 .travellerDialog{width:calc(100% - 16px);max-height:calc(100dvh - 24px);padding:16px;overscroll-behavior:contain}
 .travellerDialogHead h2{font-size:19px}.communityReviewText{font-size:14px}
 .mapFeatureInfo{max-width:min(260px,calc(100vw - 100px));min-width:150px}
 .gm-style-iw-c{max-width:calc(100vw - 32px)!important}
}
@media(max-width:360px){.brandTitle{font-size:15px!important}.brandMark{display:none}.top .brand .cafeLink{margin-left:0!important}.browseHeading span{display:none}}
@media(max-width:900px) and (max-height:500px){
 .app{grid-template-rows:64px 28px minmax(0,1fr)!important}
 .top{height:64px!important;grid-template-columns:minmax(130px,1fr) minmax(150px,1fr) auto;grid-template-rows:52px}
 .top .brand{grid-column:1}.top .search{grid-column:2;grid-row:1}.top .actions{grid-column:3}
 .side.mobileOpen{height:94%!important}.areaLegend{max-height:82%!important}.detail{max-height:90%!important}
}
@media(prefers-reduced-motion:reduce){.side{transition:none!important}}

@media(max-width:900px){.modal input[type="checkbox"],.modal input[type="radio"]{width:18px!important;height:18px!important;min-height:18px!important;flex:0 0 18px}.modal label:has(input[type="checkbox"]),.modal label:has(input[type="radio"]){min-height:44px;display:inline-flex;align-items:center;gap:6px}}
/* The map frame must never scroll when focus moves into a sheet or the screen rotates. */
@media(max-width:900px){.content,.mapwrap{overflow:clip!important}.side:not(.mobileOpen){visibility:hidden}.side.mobileOpen{visibility:visible}}
@media(max-width:900px){.areaLegend .quickLabel{flex:0 0 auto;min-width:34px;white-space:nowrap!important;font-size:10px!important}.areaLegend .ratingLegend,.areaLegend .benefitLegend{gap:4px}}
@media(max-width:900px) and (max-height:500px){.communityStats{min-height:28px}.statsReviewButton{min-height:28px}}

/* A passive hover preview never overlaps the marker's hit-testing area. */
.mapHoverCard,.mapHoverCard *{pointer-events:none!important}
.mapHoverCard{position:absolute;box-sizing:border-box;width:270px;max-width:calc(100vw - 32px);max-height:300px;overflow:hidden;background:#fff;padding:13px 15px;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 18px #17324726;z-index:1000}
.mapHoverCard .mapFeatureInfo{min-width:0;max-width:100%}
@media(hover:none),(pointer:coarse){.mapHoverCard{display:none!important}}
@media(max-width:900px){
 .side.mobileOpen{height:calc(100% - 14px)!important;max-height:calc(100% - 14px)!important;border-radius:16px!important}
 .mobileSideHead{flex:0 0 44px;padding:2px 9px!important;gap:8px}
 .mobileSideHead strong{font-size:14px;white-space:nowrap}
 #mobileFilterToggle{margin-left:auto;width:auto!important;height:36px!important;min-height:36px!important;padding:5px 10px!important;font-size:12px!important;border:1px solid #dbe3eb;background:white;border-radius:8px}
 #mobileListClose{width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important}
 .side .browseHeading{display:none}.side .filters{padding:0 8px 5px!important}
 .side:not(.mobileFiltersOpen) #cats,.side:not(.mobileFiltersOpen) #subs{display:none!important}
 .side #subs:empty{display:none!important}.side #cats,.side #subs{padding:3px 0!important;margin:0!important}
 .side .benefitTabs{padding:3px;margin:2px 0 3px;border-radius:9px}
 .side .benefitTabs button{min-height:34px;padding:5px;font-size:12px}
 .side .sort{min-height:34px;margin:0!important;padding:0!important;gap:6px}
 .side .sort select{height:34px;min-height:34px;padding:3px 6px!important;font-size:12px}
 .side .list{padding:0 8px 8px!important;gap:5px!important}
 .side .card{border-width:1px!important;border-radius:10px!important;padding:8px 9px!important;margin:0 0 5px!important}
 .side .cardtop{gap:8px}.side .cardtop>div:first-child{min-width:0;flex:1}
 .side .name{font-size:14px;line-height:1.35;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
 .side .reviewNameHint{display:none}.side .badges{margin-top:4px;gap:3px;flex-wrap:nowrap;overflow:hidden}
 .side .badge{padding:2px 5px;font-size:10px;white-space:nowrap}.side .restaurantTagBadge{display:none}
 .side .rating{font-size:18px;line-height:1.3}.side .rating small{font-size:9px}
 .side .meta{display:block;font-size:11px;line-height:1.3;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .side .meta>span:first-child{display:none}.side .meta>span:last-child{display:inline}
}
