:root{--bg-primary: #1a1a1a;--bg-secondary: #2d2d2d;--bg-tertiary: #3a3a3a;--bg-panel: #2a2a2a;--bg-hover: #404040;--bg-active: #4a4a4a;--text-primary: #ffffff;--text-secondary: #b0b0b0;--text-muted: #808080;--text-accent: #4a9eff;--status-online: #28a745;--status-offline: #dc3545;--status-warning: #ffc107;--status-info: #17a2b8;--border-primary: #404040;--border-secondary: #555555;--border-accent: #4a9eff;--shadow-light: rgba(0, 0, 0, .1);--shadow-medium: rgba(0, 0, 0, .2);--shadow-heavy: rgba(0, 0, 0, .3);--spacing-xs: .1875rem;--spacing-sm: .375rem;--spacing-md: .75rem;--spacing-lg: 1.125rem;--spacing-xl: 1.5rem;--radius-sm: 3px;--radius-md: 6px;--radius-lg: 9px;--transition-fast: .15s ease;--transition-normal: .3s ease;--transition-slow: .5s ease}*{box-sizing:border-box;margin:0;padding:0}html{font-size:.9375rem}html,body{height:133.333vh;min-height:133.333vh;margin:0;padding:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);overflow:hidden}app-root{display:block;width:100%;min-height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:var(--radius-sm);-webkit-transition:background var(--transition-fast);transition:background var(--transition-fast)}::-webkit-scrollbar-thumb:hover{background:var(--bg-hover)}::-webkit-scrollbar-corner{background:var(--bg-secondary)}.btn-primary{background:var(--text-accent);color:#fff;border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);cursor:pointer;font-size:.8203125rem;font-weight:500;transition:all var(--transition-fast);display:inline-flex;align-items:center;gap:var(--spacing-xs)}.btn-primary:hover{background:#3a8ce6;transform:translateY(-1px);box-shadow:0 3px 6px var(--shadow-medium)}.btn-primary:active{transform:translateY(0);box-shadow:0 1.5px 3px var(--shadow-light)}.btn-primary:disabled{background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-primary);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);cursor:pointer;font-size:.8203125rem;font-weight:500;transition:all var(--transition-fast);display:inline-flex;align-items:center;gap:var(--spacing-xs)}.btn-secondary:hover{background:var(--bg-hover);border-color:var(--border-secondary);transform:translateY(-1px)}.btn-secondary:active{transform:translateY(0)}.btn-secondary:disabled{background:var(--bg-secondary);color:var(--text-muted);border-color:var(--bg-secondary);cursor:not-allowed;transform:none}.btn-small{padding:var(--spacing-xs) var(--spacing-sm);font-size:.703125rem;border-radius:var(--radius-sm)}input,select,textarea{background:var(--bg-panel);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);padding:var(--spacing-sm);font-size:.8203125rem;transition:all var(--transition-fast)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--text-accent);box-shadow:0 0 0 1.5px #4a9eff33}input:disabled,select:disabled,textarea:disabled{background:var(--bg-secondary);color:var(--text-muted);cursor:not-allowed}input::placeholder,select::placeholder,textarea::placeholder{color:var(--text-muted)}select{cursor:pointer}select option{background:var(--bg-panel);color:var(--text-primary)}.panel{background:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-md);box-shadow:0 3px 9px var(--shadow-medium);overflow:hidden}.panel-header{background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);padding:var(--spacing-md);font-weight:600;font-size:.9375rem;display:flex;align-items:center;justify-content:space-between}.panel-content{padding:var(--spacing-md)}.panel-footer{background:var(--bg-secondary);border-top:1px solid var(--border-primary);padding:var(--spacing-md);display:flex;gap:var(--spacing-sm);justify-content:flex-end}.dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog-container{background:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-lg);box-shadow:0 15px 30px var(--shadow-heavy);max-width:90vw;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;animation:dialogSlideIn .3s ease}@keyframes dialogSlideIn{0%{opacity:0;transform:scale(.9) translateY(-15px)}to{opacity:1;transform:scale(1) translateY(0)}}.dialog-header{background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);padding:var(--spacing-lg);display:flex;align-items:center;justify-content:space-between}.dialog-header h3{margin:0;font-size:1.171875rem;font-weight:600}.dialog-content{padding:var(--spacing-lg);overflow-y:auto;flex:1}.dialog-footer{background:var(--bg-secondary);border-top:1px solid var(--border-primary);padding:var(--spacing-lg);display:flex;gap:var(--spacing-sm);justify-content:flex-end}.close-btn{background:none;border:none;color:var(--text-secondary);font-size:1.40625rem;cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.close-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.status-indicator{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:var(--spacing-xs)}.status-indicator.online{background:var(--status-online);box-shadow:0 0 4.5px var(--status-online)}.status-indicator.offline{background:var(--status-offline)}.status-indicator.warning{background:var(--status-warning)}.status-indicator.info{background:var(--status-info)}.loading-spinner{width:15px;height:15px;border:1.5px solid var(--border-primary);border-top:1.5px solid var(--text-accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.mt-0{margin-top:0}.mt-1{margin-top:var(--spacing-xs)}.mt-2{margin-top:var(--spacing-sm)}.mt-3{margin-top:var(--spacing-md)}.mt-4{margin-top:var(--spacing-lg)}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--spacing-xs)}.mb-2{margin-bottom:var(--spacing-sm)}.mb-3{margin-bottom:var(--spacing-md)}.mb-4{margin-bottom:var(--spacing-lg)}.d-flex{display:flex}.d-block{display:block}.d-none{display:none}.d-inline-flex{display:inline-flex}.w-100{width:100%}.h-100{height:100%}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.align-items-center{align-items:center}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-end{justify-content:flex-end}.gap-1{gap:var(--spacing-xs)}.gap-2{gap:var(--spacing-sm)}.gap-3{gap:var(--spacing-md)}.leaflet-div-icon{background:transparent;border:none}.leaflet-popup-content{margin:0;font-family:inherit}.marker-popup{min-width:150px;font-size:.8203125rem;line-height:1.4}.marker-popup h4{color:var(--text-primary);margin-bottom:var(--spacing-sm);font-size:.9375rem;font-weight:600}.marker-popup p{margin:var(--spacing-xs) 0;color:var(--text-secondary)}.marker-popup p strong{font-weight:600;color:var(--text-primary)}@media (max-width: 768px){.dialog-container{margin:var(--spacing-md);max-width:calc(100vw - 2rem);max-height:calc(100vh - 2rem)}.panel-header,.panel-content,.panel-footer{padding:var(--spacing-sm)}.dialog-header,.dialog-content,.dialog-footer{padding:var(--spacing-md)}}.fade-in{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.slide-in-left{animation:slideInLeft .3s ease}@keyframes slideInLeft{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}.slide-in-right{animation:slideInRight .3s ease}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.slide-up{animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}
