.spots-app{height:100dvh;overflow:hidden}.spots-loading{font-size:var(--text-base);color:var(--text-secondary);flex:1;justify-content:center;align-items:center;display:flex}.spots-map-layout{height:calc(100dvh - var(--header-height) - var(--safe-top));padding-top:calc(var(--header-height) + var(--safe-top));display:flex;overflow:hidden}.spots-map-panel{flex:3;min-width:0;position:relative}.spots-sidebar-panel{border-left:1px solid var(--border-subtle);background:var(--bg-base);flex-direction:column;flex:2;min-width:360px;max-width:520px;display:flex;overflow:hidden}.map-container{width:100%;height:100%}.map-container canvas{outline:none}.spots-map-overlay{top:var(--space-3);left:var(--space-3);right:var(--space-3);z-index:5;pointer-events:none;position:absolute}.spots-map-overlay>*{pointer-events:auto}@media (min-width:950px){.spots-map-overlay{display:none}}.spots-panel-overlay{z-index:6;pointer-events:none;position:absolute;bottom:0;left:0;right:0}.spots-panel-overlay>*{pointer-events:auto}.spot-detail-panel{background:var(--bg-base);border-radius:var(--radius-xl)var(--radius-xl)0 0;border-top:1px solid var(--border-subtle);max-height:55vh;animation:slideUpPanel .25s var(--ease-entrance);flex-direction:column;display:flex;box-shadow:0 -4px 20px #0000001f}@keyframes slideUpPanel{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.spot-detail-panel-content{-webkit-overflow-scrolling:touch;padding:var(--space-4)var(--space-5);scrollbar-width:thin;scrollbar-color:var(--border-default)transparent;flex:1;overflow-y:auto}.spot-panel-header{padding-bottom:var(--space-3);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-3);position:relative}.spot-panel-close{background:var(--bg-surface-secondary);border-radius:var(--radius-full);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;transition:all var(--duration-fast)var(--ease-standard);border:none;justify-content:center;align-items:center;display:flex;position:absolute;top:0;right:0}.spot-panel-close:hover{background:var(--border-default);color:var(--text-primary)}.spot-popup-header{margin-bottom:var(--space-2);padding-right:var(--space-6)}.spot-popup-name{font-size:var(--text-base);font-weight:var(--font-bold);color:var(--text-primary);line-height:var(--lh-tight);margin:0 0 2px}.spot-popup-location{font-size:var(--text-xs);color:var(--text-secondary);align-items:center;gap:4px;display:flex}.spot-popup-wind-badge{border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-bold);color:#fff;margin-bottom:var(--space-2);align-items:center;padding:3px 10px;display:inline-flex}.spot-popup-stats{gap:var(--space-4);display:flex}.spot-popup-stat{font-size:var(--text-sm);color:var(--text-primary);font-weight:var(--font-medium);align-items:center;gap:4px;display:flex}.spot-popup-stat svg{color:var(--text-tertiary);flex-shrink:0}.spot-panel-annual{padding-bottom:var(--space-3);margin-bottom:var(--space-3);border-bottom:1px solid var(--border-subtle)}.spot-panel-annual-label{font-size:10px;font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary);margin-bottom:var(--space-1)}.spot-panel-monthly{padding-top:var(--space-1)}.spot-panel-monthly-title{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-primary);margin-bottom:var(--space-2);align-items:center;gap:6px;display:flex}.spot-panel-monthly-title svg{color:var(--text-tertiary)}.spot-panel-monthly-subtitle{color:var(--text-tertiary);margin-bottom:var(--space-2);font-size:10px}.spot-panel-table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}.spot-panel-table{border-collapse:collapse;width:100%;font-size:var(--text-xs)}.spot-panel-table th{text-align:left;font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid var(--border-subtle);white-space:nowrap;padding:6px 8px;font-size:10px}.spot-panel-table td{color:var(--text-primary);white-space:nowrap;padding:5px 8px}.spot-panel-table tbody tr{border-bottom:1px solid var(--border-subtle)}.spot-panel-table tbody tr:last-child{border-bottom:none}.spot-panel-table .month-cell{font-weight:var(--font-semibold);color:var(--text-secondary)}.spot-panel-table .unit{color:var(--text-tertiary);margin-left:1px;font-size:10px}.spot-panel-no-data{font-size:var(--text-sm);color:var(--text-tertiary);text-align:center;padding:var(--space-4)0}.spot-panel-skeleton{flex-direction:column;gap:4px;display:flex}.spot-panel-skeleton-row{background:var(--bg-surface-secondary);border-radius:var(--radius-sm);height:28px;animation:1.5s ease-in-out infinite shimmer}@keyframes shimmer{0%,to{opacity:.5}50%{opacity:1}}.spot-panel-skeleton-row:nth-child(2n){opacity:.7}.spot-panel-footer{padding:var(--space-3)var(--space-5);border-top:1px solid var(--border-subtle);background:var(--bg-base);flex-shrink:0}.spot-panel-cta{justify-content:center;align-items:center;gap:var(--space-1);width:100%;padding:var(--space-3);background:var(--accent);color:#fff;border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:var(--font-bold);transition:all var(--duration-fast)var(--ease-standard);text-decoration:none;display:flex}.spot-panel-cta:hover{filter:brightness(1.1);transform:translateY(-1px)}.spots-sidebar-header{padding:var(--space-3)var(--space-4)0;gap:var(--space-2);flex-direction:column;flex-shrink:0;display:flex}.spots-sidebar-text-search{align-items:center;display:flex;position:relative}.spots-text-search-icon{color:var(--text-tertiary);pointer-events:none;position:absolute;left:12px}.spots-text-search-input{width:100%;font-size:var(--text-sm);border:1.5px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-card);color:var(--text-primary);padding:10px 36px;transition:all .2s}.spots-text-search-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #00c7be1f}.spots-text-search-input::placeholder{color:var(--text-tertiary)}.spots-text-search-clear{background:var(--bg-surface-secondary);border-radius:var(--radius-full);width:24px;height:24px;color:var(--text-secondary);cursor:pointer;border:none;justify-content:center;align-items:center;display:flex;position:absolute;right:8px}.spots-sidebar-results-header{padding:var(--space-2)var(--space-4);font-size:var(--text-sm);color:var(--text-secondary);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.spots-sidebar-scroll{-webkit-overflow-scrolling:touch;padding:var(--space-3)var(--space-4)var(--space-8);scrollbar-width:thin;scrollbar-color:var(--border-default)transparent;flex:1;overflow:hidden auto}.spots-sidebar-grid{gap:var(--space-3);grid-template-columns:1fr;display:grid}.spots-load-more{padding:var(--space-4)0;text-align:center}.spots-load-more-btn{padding:var(--space-3)var(--space-6);background:var(--bg-surface-secondary);border:1.5px solid var(--border-subtle);border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-primary);cursor:pointer;transition:all .2s}.spots-load-more-btn:hover{border-color:var(--accent);color:var(--accent)}.spots-load-more-count{color:var(--text-tertiary);font-weight:var(--font-regular);margin-left:var(--space-1)}.spots-empty{padding:var(--space-10)var(--space-4);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.spots-empty-icon{color:var(--text-tertiary);margin-bottom:var(--space-3)}.spots-empty h3{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary);margin:0 0 var(--space-2)}.spots-empty p{font-size:var(--text-sm);color:var(--text-secondary);margin:0 0 var(--space-4)}.spots-empty-btn{padding:var(--space-2)var(--space-5);background:var(--accent);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-semibold);color:#fff;cursor:pointer;border:none}.spots-filter-bar{padding:var(--space-2)var(--space-4);flex-shrink:0}.spots-continent-tabs-wrapper{position:relative}.spots-continent-tabs{gap:var(--space-1);padding-bottom:var(--space-2);flex-wrap:wrap;display:flex}@media (max-width:949px){.spots-continent-tabs-wrapper:after{content:"";background:linear-gradient(to right,transparent,var(--bg-base));pointer-events:none;z-index:1;width:32px;position:absolute;top:0;bottom:0;right:0}.spots-continent-tabs{padding-right:var(--space-6);scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;overflow-x:auto}.spots-continent-tabs::-webkit-scrollbar{display:none}}.spots-continent-tab{border:1.5px solid var(--border-subtle);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-secondary);background:var(--bg-card);white-space:nowrap;cursor:pointer;align-items:center;gap:4px;padding:6px 12px;transition:all .2s;display:flex}.spots-continent-tab:hover{border-color:var(--border-default)}.spots-continent-tab.active{background:var(--text-primary);border-color:var(--text-primary);color:var(--text-inverse)}.spots-tab-count{opacity:.6;font-size:10px}.spots-filter-row{align-items:center;gap:var(--space-2);padding:var(--space-1)0;flex-wrap:wrap;display:flex}.spots-filter-toggle{background:var(--bg-card);border:1.5px solid var(--border-subtle);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-secondary);cursor:pointer;align-items:center;gap:5px;padding:5px 12px;transition:all .2s;display:flex}.spots-filter-toggle:hover,.spots-filter-toggle.active{border-color:var(--accent);color:var(--accent)}.spots-filter-badge{background:var(--accent);border-radius:var(--radius-full);min-width:16px;height:16px;font-size:10px;font-weight:var(--font-bold);color:#fff;justify-content:center;align-items:center;padding:0 4px;display:flex}.spots-clear-btn{font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:5px 10px;display:flex}.spots-clear-btn:hover{color:var(--text-secondary)}.spots-filter-panel{padding:var(--space-3);background:var(--bg-surface-secondary);border-radius:var(--radius-md);gap:var(--space-4);margin-top:var(--space-2);flex-direction:column;display:flex}.spots-filter-section{gap:var(--space-2);flex-direction:column;display:flex}.spots-filter-label{font-size:11px;font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary);align-items:center;gap:5px;display:flex}.spots-filter-chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.spots-chip{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-secondary);cursor:pointer;align-items:center;gap:4px;padding:5px 10px;transition:all .15s;display:inline-flex}.spots-chip:hover{border-color:var(--border-default)}.spots-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.spots-chip-count{opacity:.6;font-size:10px}.map-search-wrapper{position:relative}.map-search-float{pointer-events:auto}.map-search{align-items:center;display:flex;position:relative}.map-search-icon{color:var(--text-tertiary);pointer-events:none;z-index:1;position:absolute;left:12px}.map-search-input{width:100%;font-size:var(--text-sm);border:1.5px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-base);color:var(--text-primary);box-shadow:var(--shadow-sm);padding:11px 36px 11px 40px;transition:all .2s}.map-search-float .map-search-input{-webkit-backdrop-filter:saturate(180%)blur(20px);box-shadow:var(--shadow-lg);background:#fffffff2;border-color:#00000014}.map-search-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #00c7be1f}.map-search-float .map-search-input:focus{box-shadow:var(--shadow-lg),0 0 0 3px #00c7be1f}.map-search-input::placeholder{color:var(--text-tertiary)}.map-search-clear{background:var(--bg-surface-secondary);border-radius:var(--radius-full);width:24px;height:24px;color:var(--text-secondary);cursor:pointer;border:none;justify-content:center;align-items:center;display:flex;position:absolute;right:8px}.map-search-loading{background:var(--accent);border-radius:1px;height:2px;animation:1s ease-in-out infinite searchPulse;position:absolute;bottom:-2px;left:10%;right:10%}@keyframes searchPulse{0%,to{opacity:.3}50%{opacity:1}}.map-search-dropdown{background:var(--bg-base);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:10;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden}.map-search-float .map-search-dropdown{-webkit-backdrop-filter:saturate(180%)blur(20px);background:#fffffff7}.map-search-result{align-items:center;gap:var(--space-2);width:100%;padding:10px var(--space-3);text-align:left;font-size:var(--text-sm);color:var(--text-primary);cursor:pointer;background:0 0;border:none;transition:background .1s;display:flex}.map-search-result:hover{background:var(--bg-surface-secondary)}.map-search-result+.map-search-result{border-top:1px solid var(--border-subtle)}.map-search-result-icon{color:var(--text-tertiary);flex-shrink:0}.map-search-result-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.map-view-toggle{bottom:calc(var(--bottom-nav-height) + var(--safe-bottom) + var(--space-3));z-index:var(--z-sticky);align-items:center;gap:var(--space-2);background:var(--text-primary);color:var(--text-inverse);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--font-semibold);box-shadow:var(--shadow-xl);cursor:pointer;transition:all var(--duration-fast)var(--ease-standard);white-space:nowrap;border:none;padding:10px 20px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.map-view-toggle:hover{transform:translate(-50%)scale(1.05)}.map-view-toggle:active{transform:translate(-50%)scale(.97)}@media (min-width:950px){.map-view-toggle{display:none}}.panel-open .map-view-toggle{display:none}@media (max-width:949px){.spots-map-layout{padding-bottom:calc(var(--bottom-nav-height) + var(--safe-bottom));flex-direction:column}.spots-map-panel{flex:1;min-height:0}.spots-sidebar-panel{border-left:none;min-width:0;max-width:none;display:none}.spots-map-layout.list-view .spots-map-panel{display:none}.spots-map-layout.list-view .spots-sidebar-panel{flex:1;display:flex}.spots-panel-overlay{z-index:20;background:#0000004d;align-items:flex-end;display:flex;position:fixed;inset:0}.spot-detail-panel{width:100%;max-height:80vh}.spot-detail-panel-content{padding:var(--space-4)}.spot-panel-footer{padding:var(--space-3)var(--space-4)calc(var(--space-3) + var(--bottom-nav-height) + var(--safe-bottom))}}.mapboxgl-ctrl-attrib{background:#ffffffb3!important;border-radius:4px!important;font-size:10px!important}.mapboxgl-ctrl-group{overflow:hidden;border-radius:var(--radius-md)!important;box-shadow:var(--shadow-md)!important}.mapboxgl-ctrl-group button{width:36px!important;height:36px!important}.mapboxgl-ctrl-bottom-right{bottom:8px!important;right:8px!important}
