/* Raised map sheet and a persistent, evenly sized right-hand control rail. */
body:not(.view-list)>main{display:block;height:calc(100dvh - var(--boat-header-height,88px));min-height:0}
body:not(.view-list) #places-panel,body:not(.view-list)>.boat-weather{display:none}
body:not(.view-list) .map-wrap{height:100%}
body.boating-embedded:not(.view-list)>main{height:100dvh}
.boat-map-dock{position:absolute;z-index:1200;left:12px;right:80px;bottom:calc(20px + env(safe-area-inset-bottom,0px));max-width:760px;max-height:min(70dvh,calc(100% - 24px));margin:0 auto;display:flex;flex-direction:column;overflow:hidden;background:rgba(245,251,253,.7);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid #ffffffb3;border-radius:14px;box-shadow:0 3px 18px #123b5026;color:#123b50}
.boat-map-dock .boat-sheet-handle{display:block;width:100%;min-height:52px;padding:15px 10px 9px;border:0;border-radius:0;background:transparent;color:#123b50;font-size:13px;font-weight:750;touch-action:none;flex-shrink:0}
.boat-sheet-handle::before{content:'';display:block;position:absolute;top:6px;left:calc(50% - 18px);width:36px;height:3px;border-radius:4px;background:#537687}
.boat-sheet-body{padding:0 10px 10px;display:grid;gap:8px;overflow:auto;overscroll-behavior:contain;min-height:0}
.boat-map-dock.is-open .boat-sheet-body{animation:boat-sheet-rise .18s ease-out}
@keyframes boat-sheet-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.boat-map-dock.is-open .boat-sheet-body{animation:none}}
.boat-map-dock .view-toolbar{display:flex;flex-wrap:wrap;position:static;height:auto;min-height:44px;width:100%;padding:0;margin:0;gap:8px;background:transparent;border:0}
.boat-map-dock .view-toolbar .map-heading{min-width:0;width:100%;margin:0;flex:1 0 100%;order:-1}
.boat-map-dock .view-toolbar .lake-info{min-width:0;text-shadow:none}
.boat-map-dock .lake-info strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.boat-map-dock .lake-info small,.boat-map-dock #view-location{display:none}
.boat-map-dock .view-switch{display:flex;flex:1;background:transparent;padding:0;gap:8px}
.boat-map-dock .view-switch button{flex:1;min-width:0;min-height:44px;padding:8px;font-size:12px}
.boat-map-dock .mobile-view-select{display:none}
.boat-map-dock .boat-dock-toggles,.boat-map-dock .boat-dock-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.boat-map-dock .boat-depth-toggle,.boat-map-dock .boat-map-wind,.boat-map-dock .map-buttons{position:static;inset:auto;margin:0;max-width:100%;width:100%;box-shadow:none;grid-column:1/-1}
.boat-map-dock .boat-depth-toggle{border-radius:9px}
.boat-map-dock .boat-depth-toggle label{display:flex;align-items:center;justify-content:center;padding:8px 10px;font-size:12px;min-height:44px}
.boat-map-dock .boat-map-wind{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;min-height:52px;padding:6px 10px;font-size:11px;text-align:left}
.boat-map-dock .boat-map-wind small{max-width:100%;font-size:10px}
.boat-map-dock .boat-map-wind strong{grid-column:1;grid-row:2}
.boat-map-dock .boat-map-wind>.boat-wind{grid-column:2;grid-row:1/3;align-self:center;font-size:12px}
.boat-map-dock .map-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.boat-map-dock .map-buttons button{width:100%;height:44px;min-height:44px;padding:5px;font-size:23px;box-shadow:none}
.boat-map-dock :is(button,select,input:not([type=checkbox]),.boat-depth-toggle){background:rgba(255,255,255,.65);color:#123b50;border:1px solid #a7c1cc;border-radius:9px}
.boat-map-dock .boat-sheet-handle{background:transparent;border:0;border-radius:0}
.boat-map-dock button:disabled,.boat-map-dock select:disabled{opacity:.65}
.boat-map-dock .view-switch button[aria-pressed=true]{background:rgba(8,47,73,.8);color:white}
.boat-map-dock .boat-dock-search{display:grid;gap:8px;min-width:0}
.boat-map-dock .boat-dock-search>.waterbody-search,.boat-map-dock .map-service-search{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-width:none;width:100%;gap:8px;margin:0;align-items:center;min-width:0;grid-column:1/-1;grid-row:auto}
.boat-map-dock .water-area-select,.boat-map-dock .waterbody-search>input,.boat-map-dock .map-service-search>input{grid-column:1/-1;grid-row:auto;width:100%;min-width:0}
.boat-map-dock :is(input:not([type=checkbox]),select){width:100%;min-width:0;height:44px;min-height:44px;padding:8px;font-size:14px}
.boat-map-dock :is(.waterbody-search,.map-service-search)>button{width:100%;min-height:44px;padding:8px;font-size:12px;grid-column:auto;grid-row:auto}
.boat-map-dock #map-service-category{grid-column:1;grid-row:auto}
.boat-map-dock #map-service-filter{grid-column:2;grid-row:auto}
.boat-map-dock .map-service-search>button{grid-column:1/-1}
.boat-map-dock .boat-dock-search details{margin:0;padding:10px;border:1px solid #a7c1cc;border-radius:9px;background:#ffffff40}
.boat-map-dock .boat-dock-search details>summary{min-height:24px;font-size:12px}
.boat-map-dock #mark-legend{grid-template-columns:repeat(2,minmax(0,1fr))}
.boat-map-rail{position:absolute;z-index:1400;right:12px;top:calc(12px + env(safe-area-inset-top,0px));display:grid;gap:8px;width:56px}
.boat-map-rail .leaflet-control-zoom{position:static;float:none;display:grid;gap:8px;border:0;background:transparent;margin:0;box-shadow:none}
.boat-map-rail :is(button,.leaflet-control-zoom a){display:flex;align-items:center;justify-content:center;width:56px;height:48px;min-height:48px;margin:0;padding:3px;border:1px solid #a7c1cc;border-radius:9px;background:rgba(255,255,255,.74);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#123b50;font:700 24px/1.2 system-ui,sans-serif;text-decoration:none;box-shadow:0 2px 8px #153d4320}
.boat-map-rail #toggle-lake-focus{font-size:10px;white-space:normal;overflow-wrap:normal}
.boat-map-rail .leaflet-control-zoom a.leaflet-disabled{color:#7c919a;cursor:default}
body:not(.view-list) #lake-results{position:fixed;z-index:11000;left:12px;top:auto;bottom:calc(var(--boat-dock-height,52px) + 28px + env(safe-area-inset-bottom,0px));width:calc(100% - 92px);max-width:760px;max-height:25dvh;background:#ffffffdc;backdrop-filter:blur(8px)}
body.map-expanded #lake-results:not([hidden]){display:block!important}
body:not(.view-list) #location-status{bottom:calc(var(--boat-dock-height,52px) + 28px + env(safe-area-inset-bottom,0px));background:#ffffffa6}
@media(max-width:760px){body:not(.view-list)>header{min-height:72px;height:auto;padding:8px 14px}.boat-map-dock{left:8px;right:76px}.boat-sheet-body{padding:0 8px 8px}.boat-map-dock :is(input:not([type=checkbox]),select){font-size:16px}.boat-map-rail{right:8px}.boating-embedded .boat-map-dock .view-toolbar .view-switch{display:flex;flex:1}}
/* Pitched map plane. Controls and map-source credits stay upright outside it. */
.map-wrap{overflow:hidden}
.map-wrap.boat-pitched>#boat-map{position:absolute;left:-40%;top:-40%;width:180%;height:180%;transform-origin:50% 50%;transform:perspective(var(--boat-perspective,1400px)) rotateX(38deg);touch-action:none;cursor:grab;will-change:transform}
.boat-map-rail{top:12px;bottom:calc(26px + env(safe-area-inset-bottom,0px));right:12px;width:56px;display:flex;flex-direction:column;justify-content:space-between;gap:12px;pointer-events:none}
.boat-rail-top,.boat-rail-middle,.boat-rail-bottom{display:grid;gap:8px;pointer-events:auto}
.boat-map-rail :is(button,.leaflet-control-zoom a){width:56px;height:56px;min-height:56px;border-radius:17px;border:1px solid #d6e0db;background:rgba(255,255,255,.93);box-shadow:0 4px 14px #123b5026}
.boat-map-rail svg{display:block;width:28px;height:28px;flex-shrink:0}
.boat-map-rail #map-location{position:relative}
#map-location.has-location::after{content:'';position:absolute;right:7px;top:7px;width:8px;height:8px;border:2px solid white;border-radius:50%;background:#16875e}
.boat-location-symbol{display:inline-flex;width:24px;height:24px;flex-shrink:0;vertical-align:middle}
.boat-location-symbol svg{width:100%;height:100%}
.boat-location-text{margin-left:6px}
.boat-tilt-toggle{position:absolute;z-index:1400;left:12px;bottom:calc(26px + env(safe-area-inset-bottom,0px));width:60px;height:56px;min-height:56px;padding:8px;border:1px solid #d6e0db;border-radius:17px;background:rgba(255,255,255,.93);color:#123b50;font-size:13px;font-weight:800;box-shadow:0 4px 14px #123b5026}
.boat-tilt-toggle[aria-pressed=true]{background:#176781;color:white;border-color:#fff}
.boat-map-dock{left:12px;right:12px;bottom:calc(22px + env(safe-area-inset-bottom,0px))}
.boat-map-dock:not(.is-open){left:50%;right:auto;width:72px;transform:translateX(-50%);max-height:72px;background:transparent;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;overflow:visible}
.boat-map-dock button.boat-sheet-handle{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;width:60px;height:60px;min-height:60px;margin:4px auto;padding:12px;border:2px solid #fff;border-radius:50%;background:#e5a344;color:#123b50;box-shadow:0 3px 12px #123b5033}
.boat-sheet-handle::before{display:none}
.boat-sheet-handle svg{display:block;width:28px;height:28px;pointer-events:none}
.boat-map-dock.is-open .boat-sheet-handle{width:48px;height:48px;min-height:48px;margin:6px auto}
.boat-map-readouts{position:absolute;left:12px;bottom:calc(90px + env(safe-area-inset-bottom,0px));max-width:calc(100% - 100px);display:flex;flex-direction:column;align-items:flex-start;gap:7px;z-index:1000;pointer-events:none}
.boat-map-notes .boat-map-readouts .leaflet-control-scale{position:static;left:auto;bottom:auto;float:none;margin:0}
body:not(.view-list) .boat-map-readouts>#location-status{position:static;left:auto;bottom:auto;max-width:100%;margin:0;overflow-wrap:anywhere;line-height:1.5;background:#fffffff0}
.boat-map-notes .leaflet-control-attribution{position:absolute;bottom:0;right:0;max-width:100%;margin:0;z-index:1000;background:#ffffffb8;line-height:1.3}
@media(max-width:840px){.boat-sheet-body{padding-right:76px}.boat-map-rail{right:8px}.boat-tilt-toggle{left:8px}}
@media(max-width:760px){.view-list #view-location{display:flex;align-items:center;justify-content:center}.view-list #view-location::before{content:none}.view-list #view-location .boat-location-text{display:none}}
@media(max-height:600px){.boat-map-rail :is(button,.leaflet-control-zoom a){width:48px;height:48px;min-height:48px;border-radius:14px}.boat-map-rail{width:48px}.boat-rail-top,.boat-rail-middle,.boat-rail-bottom,.boat-map-rail .leaflet-control-zoom{gap:6px}}
@media(max-height:500px){.boat-map-rail{width:104px;gap:8px}.boat-rail-top,.boat-rail-middle,.boat-rail-bottom{display:grid;grid-template-columns:repeat(2,48px);gap:6px}.boat-rail-top .leaflet-control-zoom{display:contents}.boat-rail-bottom #map-location{grid-column:2}.boat-map-dock.is-open{right:124px;left:8px}.boat-sheet-body{padding-right:10px}.boat-map-dock .boat-sheet-handle{width:48px;height:48px;min-height:48px}.boat-tilt-toggle{height:48px;min-height:48px}}

/* The two view-independent actions remain in one viewport anchor, without DOM moves. */
:root{--boat-action-size:56px;--boat-action-gap:8px;--boat-action-edge:12px;--boat-actions-top:50dvh}
.boat-view-actions{position:fixed;z-index:1250;right:var(--boat-action-edge);top:var(--boat-actions-top);display:grid;gap:var(--boat-action-gap);width:var(--boat-action-size);margin:0;padding:0}
body.map-expanded>.boat-view-actions{z-index:10500}
.boat-view-actions>button{display:flex;align-items:center;justify-content:center;width:var(--boat-action-size);height:var(--boat-action-size);min-height:var(--boat-action-size);margin:0;padding:3px;border:1px solid #d6e0db;border-radius:17px;background:rgba(255,255,255,.93);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#123b50;box-shadow:0 4px 14px #123b5026}
.boat-view-actions svg{display:block;width:28px;height:28px;flex-shrink:0}
body.view-list .boat-view-actions>#boat-quick-view{background:#176781;color:#fff}
body .boat-map-rail .boat-rail-middle{position:fixed;right:var(--boat-action-edge);top:calc(var(--boat-actions-top) - var(--boat-action-size) - var(--boat-action-gap));display:grid;grid-template-columns:var(--boat-action-size);width:var(--boat-action-size)}
@media(max-width:840px){:root{--boat-action-edge:8px}}
@media(max-height:600px){:root{--boat-action-size:48px;--boat-action-gap:6px}.boat-view-actions>button{border-radius:14px}}
@media(max-height:500px){:root{--boat-actions-top:calc(50dvh - 24px)}body .boat-map-rail .boat-rail-middle{top:var(--boat-actions-top);right:calc(var(--boat-action-edge) + var(--boat-action-size) + var(--boat-action-gap))}}
@media(max-height:350px){:root{--boat-action-size:44px;--boat-action-gap:4px;--boat-actions-top:calc(100dvh - 166px)}.boat-map-rail{width:92px}.boat-map-rail :is(button,.leaflet-control-zoom a){width:44px;height:44px;min-height:44px}.boat-rail-top,.boat-rail-bottom{grid-template-columns:repeat(2,44px);gap:4px}}

/* Dedicated service search and a two-choice layer panel share the accessible map sheet. */
.map-wrap .boat-search-toggle{position:absolute;z-index:1400;left:var(--boat-action-edge);top:12px;display:flex;align-items:center;justify-content:center;width:var(--boat-action-size);height:var(--boat-action-size);min-height:var(--boat-action-size);padding:3px;border:1px solid #d6e0db;border-radius:17px;background:rgba(255,255,255,.93);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#123b50;box-shadow:0 4px 14px #123b5026}
.boat-search-toggle svg{width:28px;height:28px}
.boat-search-toggle[aria-expanded=true],#boat-layers-toggle[aria-expanded=true]{background:#176781;color:white}
.boat-sheet-title{margin:0;font:700 16px/1.4 system-ui,sans-serif;color:#123b50}
.boat-map-dock[data-panel=layers] .boat-sheet-body>:not(.boat-sheet-title):not(.boat-dock-toggles),.boat-map-dock[data-panel=search] .boat-sheet-body>:not(.boat-sheet-title):not(.boat-dock-services){display:none}
.boat-map-dock .boat-dock-toggles>.boat-depth-toggle{grid-column:auto;margin:0;min-width:0}
.boat-map-dock .boat-dock-toggles>label,.boat-map-dock .boat-dock-toggles .boat-depth-toggle label{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:56px;margin:0;padding:8px;font-size:13px;font-weight:650;line-height:1.35;background:rgba(255,255,255,.65);color:#123b50;border:1px solid #a7c1cc;border-radius:9px;cursor:pointer}
.boat-map-dock .boat-dock-toggles .boat-depth-toggle label{height:100%;border:0}
.boat-dock-toggles input[type=checkbox]{width:20px;height:20px;flex-shrink:0;margin:0;accent-color:#176781}
.boat-map-dock .boat-dock-services{display:grid;gap:8px;min-width:0}
.boat-map-dock .boat-dock-services .map-service-search{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;max-width:none;margin:0;min-width:0}
.boat-map-dock .boat-dock-services .map-service-search>input{grid-column:1/-1;min-width:0}
.boat-map-dock .boat-dock-services #place-count{margin:0;font-size:13px}
.boat-map-dock .boat-dock-services #place-list{display:grid;gap:6px;margin:0}
.boat-map-dock .boat-dock-services .place-tile{min-width:0;width:100%;text-align:left;padding:10px;min-height:56px}
.boat-map-dock .boat-dock-services .place-tile>span:last-child{min-width:0;overflow-wrap:anywhere}
.boat-map-dock .boat-dock-services .place-tile small{white-space:normal}
.boat-map-dock[data-panel=layers].is-open{max-width:560px}
.boat-map-dock[data-panel=search].is-open{max-width:680px}

.boat-map-dock.is-open{bottom:calc(90px + env(safe-area-inset-bottom,0px));max-height:min(70dvh,calc(100% - 104px))}

/* The search sheet already exposes its result count as a live status. */
body:not(.view-list) #service-search-status{display:none}

/* Search matches stay distinct while the lake's other service markers remain available. */
.service-icon.service-search-highlight{border-color:#ffcf57;box-shadow:0 0 0 4px rgba(255,207,87,.65),0 3px 12px #123b5080}
