: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;--color-primary: var(--text-accent);--color-primary-hover: #3a8ce6;--color-success: var(--status-online);--color-danger: var(--status-offline);--color-danger-hover: #c82333;--color-gold: #ffd700;--color-warning: var(--status-warning);--color-info: var(--status-info);--status-online: #28a745;--status-offline: #dc3545;--status-warning: #ffc107;--status-info: #17a2b8;--border-primary: #404040;--border-secondary: #555555;--border-accent: #4a9eff;--surface-nav: #2c3e50;--surface-panel: var(--bg-panel);--surface-elevated: #1e2a35;--surface-border: #34495e;--nav-item-hover: rgba(255, 255, 255, .1);--nav-item-active: rgba(255, 255, 255, .2);--nav-divider: rgba(255, 255, 255, .15);--nav-select-bg: rgba(255, 255, 255, .08);--nav-select-border: rgba(255, 255, 255, .18);--shadow-light: rgba(0, 0, 0, .1);--shadow-medium: rgba(0, 0, 0, .2);--shadow-heavy: rgba(0, 0, 0, .3);--focus-ring: 0 0 0 1.5px rgba(74, 158, 255, .2)}:root{--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}:root{--font-size-xs: .703125rem;--font-size-sm: .8203125rem;--font-size-base: .9375rem;--font-size-lg: 1.171875rem;--font-size-xl: 1.40625rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--line-height-tight: 1.2;--line-height-normal: 1.4;--line-height-relaxed: 1.5;--font-family-base: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif}:root{--layout-nav-height: 38px;--layout-sidebar-width: 360px;--breakpoint-sm: 480px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--base-font-size: .9375rem;--scrollbar-size: 6px}:root{--transition-fast: .15s ease;--transition-normal: .3s ease;--transition-slow: .5s ease;--duration-spin: 1s;--duration-dialog-in: .3s;--duration-fade: .3s}:root{--z-dropdown: 100;--z-sticky: 200;--z-sidebar: 900;--z-nav: 1000;--z-overlay: 1000;--z-modal: 2000;--z-toast: 3000;--z-max: 9999}*{box-sizing:border-box;margin:0;padding:0}html{font-size:var(--base-font-size, .9375rem)}html,body{height:133.333vh;min-height:133.333vh;margin:0;padding:0;font-family:var(--font-family-base);background-color:var(--bg-primary);color:var(--text-primary);overflow:hidden}app-root{display:block;width:100%;min-height:100vh}::-webkit-scrollbar{width:var(--scrollbar-size, 6px);height:var(--scrollbar-size, 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)}@keyframes dialogSlideIn{0%{opacity:0;transform:scale(.9) translateY(-15px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInLeft{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.gps-btn-ghost,.gps-btn-icon,.gps-btn-danger,.gps-btn-secondary,.btn-secondary,.gps-btn-primary,.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);border-radius:var(--radius-sm);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);padding:var(--spacing-sm) var(--spacing-md)}.gps-btn-ghost:disabled,.gps-btn-icon:disabled,.gps-btn-danger:disabled,.gps-btn-secondary:disabled,.btn-secondary:disabled,.gps-btn-primary:disabled,.btn-primary:disabled,.gps-btn--disabled.gps-btn-ghost,.gps-btn--disabled.gps-btn-icon,.gps-btn--disabled.gps-btn-danger,.gps-btn--disabled.gps-btn-secondary,.gps-btn--disabled.btn-secondary,.gps-btn--disabled.gps-btn-primary,.gps-btn--disabled.btn-primary{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.gps-btn-primary,.btn-primary{background:var(--text-accent);color:#fff;border:none}.gps-btn-primary:hover:not(:disabled):not(.gps-btn--disabled),.btn-primary:hover:not(:disabled):not(.gps-btn--disabled){background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:0 3px 6px var(--shadow-medium)}.gps-btn-primary:active:not(:disabled):not(.gps-btn--disabled),.btn-primary:active:not(:disabled):not(.gps-btn--disabled){transform:translateY(0);box-shadow:0 1.5px 3px var(--shadow-light)}.gps-btn-primary:disabled,.btn-primary:disabled,.gps-btn-primary.gps-btn--disabled,.gps-btn--disabled.btn-primary{background:var(--bg-tertiary);color:var(--text-muted)}.gps-btn-secondary,.btn-secondary{background:transparent;border:1px solid var(--border-primary);color:var(--text-primary)}.gps-btn-secondary:hover:not(:disabled):not(.gps-btn--disabled),.btn-secondary:hover:not(:disabled):not(.gps-btn--disabled){background:var(--bg-hover);border-color:var(--border-secondary);transform:translateY(-1px)}.gps-btn-secondary:active:not(:disabled):not(.gps-btn--disabled),.btn-secondary:active:not(:disabled):not(.gps-btn--disabled){transform:translateY(0)}.gps-btn-secondary:disabled,.btn-secondary:disabled,.gps-btn-secondary.gps-btn--disabled,.gps-btn--disabled.btn-secondary{background:var(--bg-secondary);color:var(--text-muted);border-color:var(--bg-secondary)}.gps-btn-danger{background:var(--color-danger);border:1px solid var(--color-danger);color:#fff}.gps-btn-danger:hover:not(:disabled):not(.gps-btn--disabled){background:var(--color-danger-hover);border-color:var(--color-danger-hover);transform:translateY(-1px);box-shadow:0 3px 6px var(--shadow-medium)}.gps-btn-danger:active:not(:disabled):not(.gps-btn--disabled){transform:translateY(0)}.gps-btn-sm,.btn-small{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs)}.gps-btn-lg{padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-base)}.gps-btn--loading{position:relative}.gps-btn--loading .gps-btn-spinner{width:16px;height:16px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:spin var(--duration-spin) linear infinite}.gps-btn-icon{padding:var(--spacing-sm);min-width:28px;min-height:28px;background:transparent;border:1px solid var(--border-primary);color:var(--text-secondary)}.gps-btn-icon:hover:not(:disabled):not(.gps-btn--disabled){background:var(--bg-hover);color:var(--text-primary)}.gps-btn-icon img{width:16px;height:16px}.gps-btn-ghost{padding:var(--spacing-sm);background:transparent;border:none;color:var(--text-secondary)}.gps-btn-ghost:hover:not(:disabled):not(.gps-btn--disabled){background:var(--bg-hover);color:var(--text-primary)}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:var(--font-size-sm);transition:all var(--transition-fast)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--text-accent);box-shadow:var(--focus-ring)}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)}.gps-panel,.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}.gps-panel__header,.panel-header{background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);padding:var(--spacing-md);font-weight:var(--font-weight-semibold);font-size:var(--font-size-base);display:flex;align-items:center;justify-content:space-between}.gps-panel__content,.panel-content{padding:var(--spacing-md)}.gps-panel__footer,.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}.gps-dialog-overlay,.dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.gps-dialog-container,.dialog-container{background:var(--surface-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 var(--duration-dialog-in) ease}.gps-dialog-header,.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}.gps-dialog-header h3,.dialog-header h3{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.gps-dialog-body,.dialog-content{padding:var(--spacing-lg);overflow-y:auto;flex:1}.gps-dialog-footer,.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}.gps-dialog-close,.close-btn{background:none;border:none;color:var(--text-secondary);font-size:var(--font-size-xl);cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.gps-dialog-close:hover,.close-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.gps-dialog--minimal,.gps-dialog--confirmation{max-width:400px;width:90%;background:var(--bg-primary);border-radius:var(--radius-md);box-shadow:0 4px 20px var(--shadow-heavy)}.gps-dialog--minimal .gps-dialog-header,.gps-dialog--minimal .dialog-header,.gps-dialog--confirmation .gps-dialog-header,.gps-dialog--confirmation .dialog-header{background:transparent;border-bottom:none;padding:var(--spacing-lg) var(--spacing-lg) 0}.gps-dialog--minimal .gps-dialog-body,.gps-dialog--minimal .dialog-content,.gps-dialog--confirmation .gps-dialog-body,.gps-dialog--confirmation .dialog-content{padding:var(--spacing-lg)}.gps-dialog--minimal .gps-dialog-footer,.gps-dialog--minimal .dialog-footer,.gps-dialog--confirmation .gps-dialog-footer,.gps-dialog--confirmation .dialog-footer{background:transparent;border-top:none;padding:0 var(--spacing-lg) var(--spacing-lg);gap:var(--spacing-md)}.gps-dialog--sm{max-width:360px;width:90%}.gps-dialog--lg{max-width:600px;width:95%}.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 var(--duration-spin) linear infinite}.leaflet-div-icon{background:transparent;border:none}.leaflet-popup-content{margin:0;font-family:inherit}.marker-popup{min-width:150px;font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.marker-popup h4{color:var(--text-primary);margin-bottom:var(--spacing-sm);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}.marker-popup p{margin:var(--spacing-xs) 0;color:var(--text-secondary)}.marker-popup p strong{font-weight:var(--font-weight-semibold);color:var(--text-primary)}.gps-nav-bar{position:fixed;top:0;left:0;right:0;height:var(--layout-nav-height);min-height:var(--layout-nav-height);background:var(--surface-nav);border-bottom:1px solid var(--surface-border);z-index:var(--z-nav);display:flex;justify-content:space-between;align-items:center;padding:0 var(--spacing-md);box-shadow:0 1.5px 3px var(--shadow-heavy)}.gps-nav-item{display:flex;align-items:center;justify-content:center;padding:var(--spacing-sm) var(--spacing-md);text-decoration:none;color:var(--text-primary);border-radius:var(--radius-sm);transition:background-color var(--transition-fast);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);line-height:1}.gps-nav-item:hover{background-color:var(--nav-item-hover)}.gps-nav-item.active{background-color:var(--nav-item-active)}.gps-nav-item.disabled{opacity:.5;cursor:not-allowed}.gps-nav-item img{width:15px;height:15px;filter:brightness(0) invert(1)}.gps-nav-item span{margin-left:var(--spacing-sm)}.gps-nav-menu{display:flex;align-items:center;align-self:center;gap:var(--spacing-sm)}.gps-nav-menu.gps-nav-menu--left{flex:1}.gps-nav-menu.gps-nav-menu--right{flex-shrink:0;justify-content:flex-end;gap:var(--spacing-md)}.gps-nav-dropdown{position:relative}.gps-nav-dropdown .gps-nav-item{cursor:pointer}.gps-user-menu .gps-nav-item{min-height:28px;align-items:center;justify-content:center}.gps-user-name{margin-left:var(--spacing-sm);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--text-primary);white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}.gps-user-name.impersonated{font-size:var(--font-size-sm);color:#ffffffe6}.gps-user-name.super-admin-direct,.gps-user-name .super-admin-name{font-weight:var(--font-weight-semibold);color:var(--color-gold)}.gps-user-name .separator{color:#fff9;font-size:var(--font-size-xs);margin:0 var(--spacing-xs)}.gps-nav-select{display:flex;align-items:center;align-self:center}.gps-nav-select select{height:22px;min-width:64px;background:var(--nav-select-bg);color:#ffffffe6;border:1px solid var(--nav-select-border);border-radius:var(--radius-sm);padding:0 var(--spacing-lg) 0 var(--spacing-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);cursor:pointer;outline:none;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 12 12'%3E%3Cpath fill='%23aaa' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--spacing-sm) center;padding-right:20px}.gps-nav-select select:hover{background-color:#ffffff1f;border-color:#ffffff40}.gps-nav-select select:focus{border-color:#ffffff59}.gps-nav-select select option{background:var(--surface-nav);color:var(--text-primary)}@media (max-width: 768px){.gps-dialog-container,.dialog-container{margin:var(--spacing-md);max-width:calc(100vw - 2rem);max-height:calc(100vh - 2rem)}.gps-panel__header,.gps-panel__content,.gps-panel__footer,.panel-header,.panel-content,.panel-footer{padding:var(--spacing-sm)}.gps-dialog-header,.gps-dialog-body,.gps-dialog-footer,.dialog-header,.dialog-content,.dialog-footer{padding:var(--spacing-md)}}.d-flex,.u-flex{display:flex}.d-block,.u-block{display:block}.d-none,.u-none{display:none}.d-inline-flex,.u-inline-flex{display:inline-flex}.d-grid{display:grid}.w-100,.u-w-full{width:100%}.h-100,.u-h-full{height:100%}.min-h-0{min-height:0}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.position-relative,.u-relative{position:relative}.position-absolute,.u-absolute{position:absolute}.position-fixed,.u-fixed{position:fixed}.flex-column,.u-flex-col{flex-direction:column}.flex-row,.u-flex-row{flex-direction:row}.align-items-center,.u-items-center{align-items:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.justify-content-center,.u-justify-center{justify-content:center}.justify-content-between,.u-justify-between{justify-content:space-between}.justify-content-end,.u-justify-end{justify-content:flex-end}.justify-content-start{justify-content:flex-start}.gap-1{gap:var(--spacing-xs)}.gap-2{gap:var(--spacing-sm)}.gap-3{gap:var(--spacing-md)}.gap-4{gap:var(--spacing-lg)}.u-gap-xs{gap:var(--spacing-xs)}.u-gap-sm{gap:var(--spacing-sm)}.u-gap-md{gap:var(--spacing-md)}.u-gap-lg{gap:var(--spacing-lg)}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-y-auto{overflow-y:auto}.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)}.ml-1{margin-left:var(--spacing-xs)}.mr-1{margin-right:var(--spacing-xs)}.p-0{padding:0}.p-1{padding:var(--spacing-xs)}.p-2{padding:var(--spacing-sm)}.p-3{padding:var(--spacing-md)}.p-4{padding:var(--spacing-lg)}.text-center,.u-text-center{text-align:center}.text-left,.u-text-left{text-align:left}.text-right,.u-text-right{text-align:right}.u-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.u-font-medium{font-weight:var(--font-weight-medium)}.u-font-semibold{font-weight:var(--font-weight-semibold)}.u-text-xs{font-size:var(--font-size-xs)}.u-text-sm{font-size:var(--font-size-sm)}.u-text-base{font-size:var(--font-size-base)}.fade-in{animation:fadeIn var(--duration-fade) ease}.slide-in-left{animation:slideInLeft var(--duration-fade) ease}.slide-in-right{animation:slideInRight var(--duration-fade) ease}.slide-up{animation:slideUp var(--duration-fade) ease}
