.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-moz-transition:-moz-transform .3s ease-out,opacity .3s ease-in;-o-transition:-o-transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in}.leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-moz-transition:-moz-stroke-dashoffset .3s ease-out,-moz-stroke-opacity .3s ease-in;-o-transition:-o-stroke-dashoffset .3s ease-out,-o-stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.marker-cluster-small{background-color:#b5e28c99}.marker-cluster-small div{background-color:#6ecc3999}.marker-cluster-medium{background-color:#f1d35799}.marker-cluster-medium div{background-color:#f0c20c99}.marker-cluster-large{background-color:#fd9c7399}.marker-cluster-large div{background-color:#f1801799}.leaflet-oldie .marker-cluster-small{background-color:#b5e28c}.leaflet-oldie .marker-cluster-small div{background-color:#6ecc39}.leaflet-oldie .marker-cluster-medium{background-color:#f1d357}.leaflet-oldie .marker-cluster-medium div{background-color:#f0c20c}.leaflet-oldie .marker-cluster-large{background-color:#fd9c73}.leaflet-oldie .marker-cluster-large div{background-color:#f18017}.marker-cluster{background-clip:padding-box;border-radius:20px}.marker-cluster div{width:30px;height:30px;margin-left:5px;margin-top:5px;text-align:center;border-radius:15px;font:12px Helvetica Neue,Arial,Helvetica,sans-serif}.marker-cluster span{line-height:30px}.map-view-page{display:flex;flex-direction:column;height:calc(100vh - 80px);background:#f5f5f5}.map-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#fff;border-bottom:1px solid #e0e0e0}.map-title{display:flex;align-items:center;gap:10px}.map-title svg{color:var(--color-gold)}.map-title h1{font-size:1.25rem;color:var(--color-text-primary);margin:0}.map-actions{display:flex;gap:8px}.list-toggle{display:flex;align-items:center;gap:6px;padding:8px 14px;background:#fff;border:1px solid #ddd;border-radius:6px;font-size:.9rem;color:#333;cursor:pointer;transition:all .2s}.list-toggle:hover{border-color:var(--color-gold)}.list-toggle.active{background:#f9f5eb;border-color:var(--color-gold);color:var(--color-gold)}.map-search{flex:1;max-width:360px;position:relative;display:flex;align-items:center;background:#f5f5f5;border-radius:8px;padding:0 12px;gap:8px;margin:0 16px}.map-search-icon{color:#999;flex-shrink:0}.map-search input{flex:1;border:none;background:transparent;padding:10px 0;font-size:.9rem;color:var(--color-text-primary);outline:none;min-width:0}.map-search input::placeholder{color:#999}.map-search-clear{background:none;border:none;color:#999;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.map-search-clear:hover{color:#333}.map-search-results{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border-radius:8px;box-shadow:0 4px 16px #00000026;max-height:320px;overflow-y:auto;z-index:1001}.map-search-result{display:flex;align-items:center;gap:10px;width:100%;padding:10px 14px;border:none;background:none;cursor:pointer;text-align:left;font-size:.9rem;color:var(--color-text-primary);transition:background .15s}.map-search-result:hover{background:#f5f5f5}.map-search-result .result-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem}.map-search-result .result-type{font-size:.75rem;color:#999;flex-shrink:0;text-transform:uppercase;letter-spacing:.3px}.map-search-empty{padding:16px 14px;font-size:.85rem;color:#999;text-align:center}.chip-bar{background:#fff;border-bottom:1px solid #e0e0e0;overflow:hidden}.chip-bar-scroll{display:flex;gap:8px;padding:10px 20px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.chip-bar-scroll::-webkit-scrollbar{display:none}.chip{display:flex;align-items:center;gap:6px;padding:7px 14px;border-radius:20px;border:1.5px solid;background:#fff;cursor:pointer;white-space:nowrap;font-size:.85rem;font-weight:500;transition:all .2s ease;flex-shrink:0}.chip:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.chip-active{box-shadow:0 2px 8px #00000026}.chip-count{font-size:.75rem;font-weight:600}.custom-cluster-icon{background:transparent!important;border:none!important}.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large,.marker-cluster div{background:transparent!important}.map-content{flex:1;display:flex;position:relative;overflow:hidden}.map-container{flex:1;position:relative}.leaflet-map{width:100%;height:100%;z-index:1}.map-loading,.map-error{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f5f5f5;gap:16px}.map-loading .spinner{width:40px;height:40px;border:3px solid #e0e0e0;border-top-color:var(--color-gold);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.map-error button{padding:10px 20px;background:var(--color-gold);color:#fff;border:none;border-radius:6px;cursor:pointer}.map-legend{position:absolute;bottom:20px;left:20px;background:#fff;padding:12px 16px;border-radius:8px;box-shadow:0 2px 8px #00000026;z-index:1000;display:flex;flex-direction:column;gap:6px}.legend-item{display:flex;align-items:center;gap:8px;font-size:.8rem;color:#555}.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.marker-count{position:absolute;top:20px;right:20px;background:#fff;padding:8px 14px;border-radius:20px;box-shadow:0 2px 8px #00000026;font-size:.85rem;color:#666;z-index:1000}.marker-popup{min-width:180px}.marker-popup h3{font-size:1rem;margin:0 0 6px;color:var(--color-text-primary)}.popup-type{display:flex;align-items:center;gap:6px;font-size:.8rem;color:#666;margin:0 0 8px;text-transform:capitalize}.popup-desc{font-size:.85rem;color:#444;margin:0 0 10px;line-height:1.4}.popup-link{display:inline-block;color:var(--color-gold);font-size:.85rem;font-weight:500;text-decoration:none}.popup-link:hover{text-decoration:underline}.list-panel{width:320px;background:#fff;border-left:1px solid #e0e0e0;display:flex;flex-direction:column;z-index:100}.list-header{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid #e0e0e0}.list-header h2{font-size:1.1rem;margin:0;color:var(--color-text-primary)}.list-header button{background:none;border:none;color:#666;cursor:pointer;padding:4px}.list-header button:hover{color:var(--color-text-primary)}.list-content{flex:1;overflow-y:auto;padding:12px}.list-section{margin-bottom:20px}.list-section h3{display:flex;align-items:center;gap:8px;font-size:.85rem;color:#666;margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid #eee}.list-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:8px;cursor:pointer;transition:background .2s}.list-item:hover{background:#f5f5f5}.list-item.selected{background:#f9f5eb}.list-item-info{flex:1;min-width:0}.list-item-name{display:block;font-size:.9rem;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-item-address{display:block;font-size:.8rem;color:#666;text-transform:capitalize}.list-item-link{padding:6px 12px;background:#f0f0f0;border-radius:4px;font-size:.8rem;color:#333;text-decoration:none;margin-left:10px;flex-shrink:0}.list-item-link:hover{background:#e0e0e0}.list-empty{text-align:center;padding:40px 20px;color:#666}.list-empty p{margin:0 0 8px;font-size:.9rem}.selected-card{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background:#fff;border-radius:12px;box-shadow:0 4px 20px #0003;z-index:1000;max-width:400px;width:calc(100% - 40px);overflow:hidden}.close-card{position:absolute;top:10px;right:10px;background:#00000080;border:none;border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;z-index:10}.close-card:hover{background:#000000b3}.selected-card-content{display:flex}.selected-card-image{width:120px;height:120px;object-fit:cover;flex-shrink:0}.selected-card-info{flex:1;padding:14px;display:flex;flex-direction:column;gap:6px}.selected-card-type{display:inline-flex;align-items:center;gap:4px;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;padding:4px 8px;border-radius:4px;width:fit-content;font-weight:600}.selected-card-info h3{font-size:1rem;margin:0;color:var(--color-text-primary)}.selected-card-info p{font-size:.85rem;color:#666;margin:0;line-height:1.4}.selected-card-actions{display:flex;gap:8px;margin-top:auto}.view-btn,.directions-btn{display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:6px;font-size:.85rem;text-decoration:none;cursor:pointer}.view-btn{background:var(--color-gold);color:#fff}.view-btn:hover{background:var(--color-gold-hover)}.directions-btn{background:#f0f0f0;color:#333;border:none}.directions-btn:hover{background:#e0e0e0}.near-me-toggle{display:flex;align-items:center;gap:6px;padding:8px 14px;background:#fff;border:1px solid #ddd;border-radius:6px;font-size:.9rem;color:#333;cursor:pointer;transition:all .2s}.near-me-toggle:hover{border-color:#3b82f6;color:#3b82f6}.near-me-toggle:disabled{opacity:.6;cursor:not-allowed}.save-parking-btn{position:absolute;bottom:100px;right:20px;width:56px;height:56px;border-radius:50%;background:var(--color-gold);color:#fff;border:none;box-shadow:0 4px 12px #00000040;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1000;transition:all .2s}.save-parking-btn:hover{background:var(--color-gold-hover);transform:scale(1.05)}.save-parking-btn:disabled{opacity:.7;cursor:not-allowed;transform:none}.save-parking-btn.has-spot{background:#1d4ed8}.save-parking-btn.has-spot:hover{background:#1e40af}.save-parking-btn .btn-spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}.location-error-toast{position:absolute;bottom:170px;right:20px;background:#dc2626;color:#fff;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;max-width:280px;box-shadow:0 4px 12px #0003;z-index:1001;font-size:.85rem}.location-error-toast button{background:none;border:none;color:#fff;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;opacity:.8}.location-error-toast button:hover{opacity:1}.parking-card{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background:#fff;border-radius:12px;box-shadow:0 4px 20px #0003;z-index:1000;max-width:360px;width:calc(100% - 40px);overflow:hidden}.parking-card-content{display:flex;align-items:center;padding:16px;gap:16px}.parking-card-icon{width:64px;height:64px;border-radius:50%;background:#1d4ed8;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.parking-card-info{flex:1;min-width:0}.parking-card-info h3{font-size:1.1rem;margin:0 0 4px;color:var(--color-text-primary)}.parking-time{font-size:.85rem;color:#666;margin:0 0 4px}.parking-distance{font-size:.85rem;color:#3b82f6;font-weight:500;margin:0 0 12px}.parking-card-actions{display:flex;gap:8px}.parking-card-actions .directions-btn{display:flex;align-items:center;gap:6px;padding:8px 14px;background:#1d4ed8;color:#fff;border-radius:6px;font-size:.85rem;text-decoration:none;white-space:nowrap}.parking-card-actions .directions-btn:hover{background:#1e40af}.clear-parking-btn{padding:8px 14px;background:#f0f0f0;border:none;border-radius:6px;font-size:.85rem;color:#666;cursor:pointer;white-space:nowrap}.clear-parking-btn:hover{background:#e0e0e0;color:#333}@media(max-width:768px){.map-view-page{height:calc(100vh - 70px)}.map-header{padding:12px 16px;flex-wrap:wrap}.map-search{order:3;max-width:100%;margin:8px 0 0;width:100%}.map-title h1{font-size:1.1rem}.list-toggle span{display:none}.list-toggle{padding:10px}.chip-bar-scroll{padding:8px 16px}.chip{padding:6px 12px;font-size:.8rem}.list-panel{position:absolute;top:0;right:0;bottom:0;width:280px;box-shadow:-4px 0 20px #00000026}.selected-card{bottom:10px;max-width:none;width:calc(100% - 20px);left:10px;transform:none}.selected-card-image{width:100px;height:100px}.selected-card-info{padding:12px}.map-legend{bottom:10px;left:10px;padding:8px 12px}.marker-count{top:10px;right:10px}.near-me-toggle span{display:none}.near-me-toggle{padding:10px}.save-parking-btn{bottom:80px;right:10px;width:50px;height:50px}.location-error-toast{bottom:140px;right:10px;left:10px;max-width:none}.parking-card{bottom:10px;width:calc(100% - 20px);left:10px;transform:none}.parking-card-content{padding:14px;gap:12px}.parking-card-icon{width:50px;height:50px}.parking-card-actions{flex-direction:column}}
