:root{--primary-color: #4361ee;--secondary-color: #3f37c9;--accent-color: #4895ef;--danger-color: #f72585;--success-color: #4cc9f0;--light-color: #f8f9fa;--dark-color: #212529;--gray-color: #6c757d;--border-radius: 8px;--box-shadow: 0 4px 6px rgba(0, 0, 0, .1);--transition: all .3s ease}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow:hidden}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;color:var(--dark-color);background-color:#f5f7fa}.app-container{display:flex;height:100%;position:relative}.map-container{flex:1;height:100%;position:relative}#map{width:100%;height:100%}.filter-panel{width:350px;background:#fff;box-shadow:var(--box-shadow);transition:var(--transition);z-index:1000;border-right:1px solid #e9ecef;position:absolute;left:-350px;top:0;height:100%;display:flex;flex-direction:column}.filter-panel.active{left:0}.filter-header{display:flex;justify-content:space-between;align-items:center;padding:15px;background:#fff;border-bottom:1px solid #e9ecef;flex-shrink:0}.filter-title{font-size:1.3rem;font-weight:600;color:var(--primary-color)}.filter-close{background:none;border:none;font-size:1.2rem;cursor:pointer;color:var(--gray-color);transition:var(--transition)}.filter-close:hover{color:var(--danger-color)}.filter-toggle{position:absolute;bottom:20px;left:20px;z-index:1001;background:#fff;border:none;width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:var(--box-shadow);cursor:pointer;transition:var(--transition)}.filter-toggle:hover{transform:scale(1.1);background-color:var(--primary-color)}.filter-toggle:hover i{color:#fff}.filter-panel.active+.filter-toggle{display:none}.filter-toggle i{font-size:1.5rem;color:var(--primary-color);transition:var(--transition)}.filter-group{margin-bottom:12px;background:#f8f9fa;border-radius:var(--border-radius);padding:10px}.filter-group-title{font-size:.9rem;font-weight:600;margin-bottom:8px;color:var(--dark-color);display:flex;align-items:center;cursor:pointer;padding:4px;border-radius:var(--border-radius);transition:var(--transition)}.filter-group-title:hover{background:#4361ee1a}.filter-group-title i{margin-right:8px;color:var(--primary-color);transition:var(--transition)}.filter-group-content{max-height:200px;overflow-y:auto;transition:var(--transition);padding:4px}.filter-group.collapsed .filter-group-content{max-height:0;overflow:hidden;padding:0}.filter-group.collapsed .filter-group-title i{transform:rotate(-90deg)}.search-container{position:relative;margin-bottom:20px}.search-input{width:100%;padding:12px 15px;border:1px solid #e9ecef;border-radius:var(--border-radius);font-size:.9rem;transition:var(--transition);background:#f8f9fa}.search-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #4361ee33;background:#fff}.search-button{width:100%;padding:12px;margin-top:10px;background-color:var(--primary-color);color:#fff;border:none;border-radius:var(--border-radius);font-weight:500;cursor:pointer;transition:var(--transition)}.search-button:hover{background-color:var(--secondary-color);transform:translateY(-1px)}.filter-checkbox{display:flex;align-items:center;margin-bottom:6px;padding:6px;border-radius:var(--border-radius);transition:var(--transition);position:relative}.filter-checkbox:hover{background:#4361ee1a}.filter-checkbox input[type=checkbox]{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.filter-checkbox label{cursor:pointer;font-size:.8rem;flex:1;padding-left:25px;position:relative;-webkit-user-select:none;user-select:none}.filter-checkbox label:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:12px;height:12px;border:1.5px solid var(--primary-color);border-radius:2px;background-color:#fff;transition:var(--transition)}.filter-checkbox label:after{content:"";position:absolute;left:4px;top:50%;transform:translateY(-50%) rotate(45deg);width:3px;height:7px;border:solid white;border-width:0 1.5px 1.5px 0;opacity:0;transition:var(--transition)}.filter-checkbox input[type=checkbox]:checked+label:before{background-color:var(--primary-color);border-color:var(--primary-color)}.filter-checkbox input[type=checkbox]:checked+label:after{opacity:1}.filter-checkbox input[type=checkbox]:focus+label:before{box-shadow:0 0 0 2px #4361ee33}.filter-checkbox:hover label:before{border-color:var(--secondary-color)}.filter-checkbox input[type=checkbox]:checked:hover+label:before{background-color:var(--secondary-color);border-color:var(--secondary-color)}.range-container{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}.range-input{width:100%;padding:12px;border:1px solid #e9ecef;border-radius:var(--border-radius);font-size:.9rem;background:#fff;transition:var(--transition)}.range-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #4361ee33}.filter-content{flex:1;overflow-y:auto;padding:15px}.filter-actions{display:none;gap:8px;padding:15px;background-color:#fff;border-top:1px solid #e9ecef;box-shadow:0 -2px 10px #0000001a;flex-shrink:0}.filter-panel.active .filter-actions{display:flex}.btn{padding:10px 12px;border:none;border-radius:var(--border-radius);font-weight:500;cursor:pointer;transition:var(--transition);flex:1;text-align:center;font-size:.85rem}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover{background-color:var(--secondary-color);transform:translateY(-1px)}.btn-danger{background-color:var(--danger-color);color:#fff}.btn-danger:hover{background-color:#d91a6d;transform:translateY(-1px)}.logo-link{position:fixed;top:20px;left:20px;z-index:1001;font-size:24px;font-weight:700;color:var(--primary-color);text-decoration:none;background:#ffffffe6;padding:8px 15px;border-radius:var(--border-radius);box-shadow:var(--box-shadow);transition:opacity .3s ease,visibility .3s ease}.logo-link:hover{transform:translateY(-1px);color:var(--secondary-color)}.filter-panel.active~.logo-link{opacity:0!important;visibility:hidden!important}@media (max-width: 576px){.filter-panel{width:90%;left:-90%}}@media (min-width: 768px){.filter-toggle{width:60px;height:60px;bottom:30px;left:30px}.filter-toggle i{font-size:1.8rem}}.balloon-content{padding:15px;max-width:300px}.balloon-content h3{margin-bottom:10px;font-size:1.1rem;color:var(--primary-color)}.balloon-content a{color:var(--primary-color);text-decoration:none}.balloon-content a:hover{text-decoration:underline}.balloon-content p{margin-bottom:5px;font-size:.9rem}.balloon-content strong{font-weight:600}.balloon-button{display:inline-block;margin-top:10px;padding:10px 15px;background-color:var(--primary-color);color:#fff!important;border-radius:var(--border-radius);text-decoration:none;font-size:.9rem;transition:var(--transition);width:100%;text-align:center;border:none}.balloon-button:hover{background-color:var(--secondary-color);color:#fff!important}.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#fffc;display:flex;justify-content:center;align-items:center;z-index:9999}.spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#ffffffe6;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:1000;transition:opacity .3s ease}.loading-spinner{border:5px solid #f3f3f3;border-top:5px solid #3498db;border-radius:50%;width:50px;height:50px;animation:spin 1s linear infinite;margin-bottom:20px}.loading-text{font-size:18px;color:#333;margin-top:15px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-message{color:#e74c3c;font-weight:700;margin-top:15px;text-align:center;max-width:80%}.retry-button{margin-top:20px;padding:10px 20px;background-color:#3498db;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:16px}.retry-button:hover{background-color:#2980b9}.hidden{display:none!important}.filter-group:has(.filter-group-title:contains("Площадь")){margin-bottom:40px}
