﻿*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg-primary:#0d1117;--bg-secondary:#161b22;--bg-card:#1c2128;
  --bg-glass:rgba(22,27,34,0.92);--accent-green:#2ea043;--accent-green-hover:#3fb950;
  --accent-amber:#d29922;--accent-red:#da3633;--accent-blue:#58a6ff;
  --text-primary:#e6edf3;--text-secondary:#8b949e;--text-muted:#484f58;
  --border:rgba(139,148,158,0.15);--border-hover:rgba(139,148,158,0.35);
  --shadow-lg:0 8px 32px rgba(0,0,0,.6);
  --radius-sm:6px;--radius-md:12px;--transition:.2s cubic-bezier(.4,0,.2,1);
  --header-h:64px;--panel-w:340px;
}
html,body{height:100%;font-family:'Inter',system-ui,sans-serif;background:var(--bg-primary);color:var(--text-primary);overflow:hidden}
#app{display:flex;flex-direction:column;height:100vh}
#header{height:var(--header-h);background:var(--bg-glass);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:16px;z-index:1000;position:relative;flex-shrink:0}
.logo{display:flex;align-items:center;gap:10px;flex-shrink:0}
.logo-icon{width:38px;height:38px;background:linear-gradient(135deg,#2ea043 0%,#1a6b2d 100%);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 2px 8px rgba(46,160,67,.35)}
.logo-text{display:flex;flex-direction:column}
.logo-name{font-family:'Outfit',sans-serif;font-weight:800;font-size:17px;color:var(--text-primary);line-height:1}
.logo-sub{font-size:10px;color:var(--text-secondary);letter-spacing:.5px;text-transform:uppercase;font-weight:500}
.header-divider{width:1px;height:28px;background:var(--border)}
.search-wrap{flex:1;max-width:420px;position:relative}
#search-input{width:100%;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:8px 16px 8px 40px;font-size:14px;color:var(--text-primary);outline:none;transition:border-color var(--transition),box-shadow var(--transition);font-family:inherit}
#search-input::placeholder{color:var(--text-muted)}
#search-input:focus{border-color:var(--accent-green);box-shadow:0 0 0 3px rgba(46,160,67,.15)}
.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:16px;pointer-events:none}
.header-stats{display:flex;gap:6px;margin-left:auto}
.stat-badge{display:flex;align-items:center;gap:6px;background:var(--bg-card);border:1px solid var(--border);border-radius:20px;padding:4px 12px;font-size:12px;font-weight:500;white-space:nowrap}
.stat-badge .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.dot-green{background:var(--accent-green)}.dot-red{background:var(--accent-red)}.dot-blue{background:var(--accent-blue)}
#toggle-panel-btn{display:none;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);padding:7px 12px;cursor:pointer;font-size:14px;font-family:inherit;flex-shrink:0;transition:border-color var(--transition)}
#toggle-panel-btn:hover{border-color:var(--border-hover)}
#body{display:flex;flex:1;overflow:hidden}
#panel{width:var(--panel-w);background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;flex-shrink:0;z-index:500}
.panel-section{padding:16px;border-bottom:1px solid var(--border)}
.panel-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);margin-bottom:10px}
.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.filter-btn{display:flex;align-items:center;gap:8px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;cursor:pointer;font-size:12px;font-weight:500;color:var(--text-secondary);font-family:inherit;transition:all var(--transition);user-select:none}
.filter-btn:hover{border-color:var(--border-hover);color:var(--text-primary)}
.filter-btn.f-camping.active{border-color:var(--accent-green);color:var(--accent-green);background:rgba(46,160,67,.1)}
.filter-btn.f-fechado.active{border-color:var(--accent-red);color:var(--accent-red);background:rgba(218,54,51,.1)}
.filter-btn.f-rv.active{border-color:var(--accent-blue);color:var(--accent-blue);background:rgba(88,166,255,.1)}
.filter-btn.f-incerto.active{border-color:var(--accent-amber);color:var(--accent-amber);background:rgba(210,153,34,.1)}
.filter-btn .badge{margin-left:auto;font-size:10px;background:var(--bg-secondary);border-radius:10px;padding:1px 6px;font-weight:600}
#estado-select{width:100%;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;font-size:13px;color:var(--text-primary);font-family:inherit;outline:none;cursor:pointer;transition:border-color var(--transition)}
#estado-select:focus{border-color:var(--accent-green)}
#estado-select option{background:var(--bg-card)}
#results-header{padding:12px 16px 8px;display:flex;align-items:center;justify-content:space-between}
#results-count{font-size:12px;color:var(--text-secondary)}
#clear-filters-btn{background:none;border:none;font-size:11px;color:var(--accent-blue);cursor:pointer;font-family:inherit;padding:2px 6px;border-radius:4px;transition:background var(--transition)}
#clear-filters-btn:hover{background:rgba(88,166,255,.1)}
#results-list{flex:1;overflow-y:auto;padding:0 8px 8px}
#results-list::-webkit-scrollbar{width:4px}
#results-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
.result-item{display:flex;align-items:flex-start;gap:10px;padding:10px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition);border:1px solid transparent;margin-bottom:4px}
.result-item:hover{background:var(--bg-card);border-color:var(--border)}
.result-item.selected{background:var(--bg-card);border-color:var(--accent-green)}
.result-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;margin-top:2px}
.ri-camping{background:rgba(46,160,67,.15)}.ri-fechado{background:rgba(218,54,51,.15)}.ri-rv{background:rgba(88,166,255,.15)}.ri-incerto{background:rgba(210,153,34,.15)}
.result-info{flex:1;min-width:0}
.result-name{font-size:12px;font-weight:600;color:var(--text-primary);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.result-loc{font-size:11px;color:var(--text-muted);margin-top:2px}
.result-tag{font-size:10px;padding:2px 6px;border-radius:4px;font-weight:600;flex-shrink:0;margin-top:3px}
.tag-camping{background:rgba(46,160,67,.15);color:var(--accent-green)}
.tag-fechado{background:rgba(218,54,51,.15);color:var(--accent-red)}
.tag-rv{background:rgba(88,166,255,.15);color:var(--accent-blue)}
.tag-incerto{background:rgba(210,153,34,.15);color:var(--accent-amber)}
#empty-state{display:none;text-align:center;padding:40px 20px;color:var(--text-muted)}
#empty-state .empty-icon{font-size:40px;margin-bottom:12px}
#empty-state p{font-size:13px;line-height:1.5}
.skeleton{background:linear-gradient(90deg,var(--bg-card) 25%,var(--bg-secondary) 50%,var(--bg-card) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:4px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
#map-wrap{flex:1;position:relative;overflow:hidden}
#map{width:100%;height:100%}
.leaflet-tile{filter:brightness(.85) saturate(.9)}
#map-controls{position:absolute;top:14px;right:14px;z-index:400;display:flex;flex-direction:column;gap:6px}
.map-btn{background:var(--bg-glass);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;font-size:16px;line-height:1;transition:all var(--transition);display:flex;align-items:center;justify-content:center;width:36px;height:36px}
.map-btn:hover{border-color:var(--border-hover);background:var(--bg-card)}
#loading-overlay{position:absolute;inset:0;background:var(--bg-primary);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:2000;transition:opacity .5s ease}
#loading-overlay.hidden{opacity:0;pointer-events:none}
.loader-icon{font-size:52px;margin-bottom:20px;animation:pulse 1.5s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.7}}
.loader-text{font-family:'Outfit',sans-serif;font-size:22px;font-weight:700;margin-bottom:8px}
.loader-sub{font-size:13px;color:var(--text-muted)}
.loader-bar{width:200px;height:3px;background:var(--bg-card);border-radius:3px;margin-top:20px;overflow:hidden}
.loader-bar-inner{height:100%;background:linear-gradient(90deg,var(--accent-green),var(--accent-blue));border-radius:3px;animation:loading-bar 2s ease-in-out infinite}
@keyframes loading-bar{0%{width:0%;margin-left:0}50%{width:80%;margin-left:0}100%{width:0%;margin-left:100%}}
.leaflet-popup-content-wrapper{background:var(--bg-card)!important;border:1px solid var(--border)!important;border-radius:var(--radius-md)!important;box-shadow:var(--shadow-lg)!important;padding:0!important;overflow:hidden}
.leaflet-popup-content{margin:0!important;width:260px!important}
.leaflet-popup-tip-container{display:none}
.leaflet-popup-close-button{color:var(--text-secondary)!important;font-size:20px!important;top:8px!important;right:8px!important;z-index:10;background:var(--bg-secondary)!important;border-radius:50%!important;width:24px!important;height:24px!important;display:flex!important;align-items:center!important;justify-content:center!important;text-decoration:none!important;line-height:1!important;padding:0!important}
.popup-inner{padding:16px}
.popup-badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:3px 8px;border-radius:20px;margin-bottom:8px}
.popup-name{font-size:14px;font-weight:700;color:var(--text-primary);line-height:1.3;margin-bottom:4px}
.popup-loc{font-size:12px;color:var(--text-muted);margin-bottom:12px}
.popup-loc span{color:var(--text-secondary)}
.popup-actions{display:flex;gap:8px}
.popup-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;text-decoration:none;cursor:pointer;transition:all var(--transition);border:1px solid transparent;font-family:inherit}
.popup-btn-primary{background:var(--accent-green);color:#fff}
.popup-btn-primary:hover{background:var(--accent-green-hover);transform:translateY(-1px)}
.popup-btn-secondary{background:var(--bg-secondary);border-color:var(--border);color:var(--text-secondary)}
.popup-btn-secondary:hover{border-color:var(--border-hover);color:var(--text-primary)}
.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{background:rgba(46,160,67,.25)!important}
.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:rgba(46,160,67,.8)!important;color:#fff!important;font-weight:700;font-family:'Outfit',sans-serif}
#toast{position:absolute;bottom:24px;left:50%;transform:translateX(-50%) translateY(100px);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 20px;font-size:13px;font-weight:500;z-index:1500;transition:transform .3s ease;white-space:nowrap;pointer-events:none}
#toast.show{transform:translateX(-50%) translateY(0)}
.leaflet-control-attribution{background:var(--bg-glass)!important;color:var(--text-muted)!important;border-radius:var(--radius-sm) 0 0 0!important;backdrop-filter:blur(8px)}
.leaflet-control-attribution a{color:var(--text-secondary)!important}
.leaflet-bar{border:1px solid var(--border)!important;border-radius:var(--radius-sm)!important}
.leaflet-bar a{background:var(--bg-glass)!important;backdrop-filter:blur(12px);color:var(--text-primary)!important;border-bottom-color:var(--border)!important}
.leaflet-bar a:hover{background:var(--bg-card)!important}
@media(max-width:768px){
  #panel{position:absolute;top:0;left:0;height:100%;transform:translateX(-100%);transition:transform .3s ease;z-index:600;width:300px!important}
  #panel.mobile-open{transform:translateX(0)}
  #toggle-panel-btn{display:flex}
  .header-stats{display:none}
  .search-wrap{max-width:none}
}
