:root{--primary: #E91E63;--primary-light: #FCE4EC;--primary-dark: #C2185B;--black: #111111;--dark-gray: #2A2A2A;--gray: #8A8A8A;--light-gray: #E5E5E5;--white: #FFFFFF;--bg-dark: #0E0E0E;--surface-dark: #1A1A1A;--surface-hover: #252525;--border-color: rgba(255, 255, 255, .1);--success: #22C55E;--warning: #FBBF24;--error: #EF4444;--info: #3B82F6;--sidebar-width: 260px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--font-family: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--transition-fast: .15s ease;--transition-normal: .3s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);background:var(--bg-dark);color:var(--white);line-height:1.5;min-height:100vh}.hidden{display:none!important}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--spacing-lg)}.login-card{background:var(--surface-dark);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--spacing-2xl);width:100%;max-width:400px;text-align:center}.login-logo{width:80px;height:80px;margin-bottom:var(--spacing-lg)}.login-card h1{font-size:1.5rem;font-weight:600;margin-bottom:var(--spacing-xl);color:var(--white)}.form-group{margin-bottom:var(--spacing-md);text-align:left}.form-group label{display:block;font-size:.875rem;font-weight:500;color:var(--gray);margin-bottom:var(--spacing-xs)}.form-group input{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-dark);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--white);font-size:1rem;font-family:inherit;transition:border-color var(--transition-fast)}.form-group input:focus{outline:none;border-color:var(--primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-lg);font-size:1rem;font-weight:500;font-family:inherit;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.btn-primary{width:100%;background:var(--primary);color:var(--white);margin-top:var(--spacing-md)}.btn-primary:hover{background:var(--primary-dark)}.login-error{color:var(--error);font-size:.875rem;margin-top:var(--spacing-md);min-height:1.25rem}.app-layout{display:flex;min-height:100vh}.main-content{margin-left:var(--sidebar-width);flex:1;padding:var(--spacing-xl);background:var(--bg-dark);min-height:100vh}.page-title{font-size:1.75rem;font-weight:600;margin-bottom:var(--spacing-xl);color:var(--white)}.loading-spinner{display:flex;align-items:center;justify-content:center;height:200px;color:var(--gray);font-size:1rem}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-dark)}::-webkit-scrollbar-thumb{background:var(--dark-gray);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--gray)}.sidebar{width:var(--sidebar-width);background:var(--surface-dark);border-right:1px solid var(--border-color);position:fixed;height:100vh;display:flex;flex-direction:column;z-index:100}.sidebar-header{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-lg);border-bottom:1px solid var(--border-color)}.sidebar-logo{width:40px;height:40px}.sidebar-title{font-size:1.25rem;font-weight:600;color:var(--white)}.sidebar-nav{flex:1;padding:var(--spacing-md);overflow-y:auto}.sidebar-link{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);color:var(--gray);text-decoration:none;border-radius:var(--radius-sm);transition:all var(--transition-fast);margin-bottom:var(--spacing-xs);font-size:.9375rem;font-weight:500;background:none;border:none;width:100%;cursor:pointer;font-family:inherit}.sidebar-link:hover{background:var(--surface-hover);color:var(--white)}.sidebar-link.active{background:var(--primary);color:var(--white)}.sidebar-link svg{flex-shrink:0}.sidebar-footer{padding:var(--spacing-md);border-top:1px solid var(--border-color)}.logout-btn{color:var(--error)}.logout-btn:hover{background:#ef44441a;color:var(--error)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-xl)}.stat-card{background:var(--surface-dark);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--spacing-lg);display:flex;align-items:center;gap:var(--spacing-lg)}.stat-icon{width:48px;height:48px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon.users-icon{background:#3b82f626;color:#3b82f6}.stat-icon.horses-icon{background:#e91e6326;color:#e91e63}.stat-icon.vaccinations-icon{background:#22c55e26;color:#22c55e}.stat-content{flex:1}.stat-value{font-size:2rem;font-weight:700;color:var(--white);line-height:1;margin-bottom:var(--spacing-xs)}.stat-label{font-size:.875rem;color:var(--gray)}.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:var(--spacing-lg)}.chart-card{background:var(--surface-dark);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--spacing-lg)}.chart-title{font-size:1rem;font-weight:600;color:var(--white);margin-bottom:var(--spacing-md)}.chart-wrapper{height:250px;position:relative}.map-stats{display:flex;gap:var(--spacing-lg);margin-bottom:var(--spacing-md);color:var(--gray);font-size:.875rem}.map-wrapper{height:calc(100vh - 200px);min-height:400px;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border-color)}.horse-popup-wrapper .leaflet-popup-content-wrapper{background:var(--surface-dark);color:var(--white);border-radius:var(--radius-md);border:1px solid var(--border-color)}.horse-popup-wrapper .leaflet-popup-content{margin:0}.horse-popup-wrapper .leaflet-popup-tip{background:var(--surface-dark);border:1px solid var(--border-color)}.horse-popup{padding:var(--spacing-md);min-width:220px}.popup-photo{width:100%;height:120px;object-fit:cover;border-radius:var(--radius-sm);margin-bottom:var(--spacing-sm)}.popup-photo-placeholder{width:100%;height:80px;background:var(--primary);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;color:var(--white);margin-bottom:var(--spacing-sm)}.horse-popup h3{font-size:1.125rem;font-weight:600;margin-bottom:var(--spacing-sm);color:var(--white)}.popup-details{margin-bottom:var(--spacing-sm)}.popup-details p{font-size:.8125rem;color:var(--gray);margin-bottom:var(--spacing-xs)}.popup-details strong{color:var(--white)}.popup-vaccinations{border-top:1px solid var(--border-color);padding-top:var(--spacing-sm);font-size:.8125rem}.popup-vaccinations strong{color:var(--white);display:block;margin-bottom:var(--spacing-xs)}.popup-vaccinations ul{list-style:none;padding:0;margin:0}.popup-vaccinations li{color:var(--gray);padding:2px 0}.no-vaccinations{color:var(--gray);font-style:italic}.leaflet-control-attribution{background:var(--surface-dark)!important;color:var(--gray)!important}.leaflet-control-attribution a{color:var(--primary)!important}.leaflet-control-zoom a{background:var(--surface-dark)!important;color:var(--white)!important;border-color:var(--border-color)!important}.leaflet-control-zoom a:hover{background:var(--surface-hover)!important}.table-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-md);gap:var(--spacing-md)}.search-wrapper{display:flex;align-items:center;gap:var(--spacing-sm);background:var(--surface-dark);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);flex:1;max-width:400px}.search-wrapper svg{color:var(--gray);flex-shrink:0}.filter-input{flex:1;background:transparent;border:none;color:var(--white);font-size:.9375rem;font-family:inherit;outline:none}.filter-input::placeholder{color:var(--gray)}.result-count{color:var(--gray);font-size:.875rem;white-space:nowrap}.table-container{background:var(--surface-dark);border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:var(--spacing-sm) var(--spacing-md);text-align:left;border-bottom:1px solid var(--border-color)}.data-table th{background:var(--bg-dark);color:var(--gray);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color var(--transition-fast)}.data-table th.sortable:hover{color:var(--white)}.data-table th.sortable:after{content:"";display:inline-block;margin-left:var(--spacing-xs);opacity:.3}.data-table th.sort-asc:after{content:"▲";opacity:1;color:var(--primary)}.data-table th.sort-desc:after{content:"▼";opacity:1;color:var(--primary)}.data-table tbody tr{transition:background var(--transition-fast)}.data-table tbody tr:hover{background:var(--surface-hover)}.data-table tbody tr:last-child td{border-bottom:none}.avatar-col{width:48px}.avatar-cell{width:48px;padding:var(--spacing-xs) var(--spacing-md)!important}.table-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}.table-avatar-placeholder{width:36px;height:36px;border-radius:50%;background:var(--primary);display:flex;align-items:center;justify-content:center;font-size:.875rem;font-weight:600;color:var(--white)}.name-cell{font-weight:500;color:var(--white)}.email-cell{color:var(--gray)}.date-cell{color:var(--gray);font-size:.875rem}.loading-cell,.empty-cell{text-align:center;color:var(--gray);padding:var(--spacing-xl)!important}.vaccination-count{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 var(--spacing-sm);background:#22c55e26;color:#22c55e;border-radius:var(--radius-sm);font-size:.8125rem;font-weight:500}.vaccination-count.loading{background:#ffffff1a;color:var(--gray)}.horse-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 var(--spacing-sm);background:#ffffff1a;color:var(--gray);border-radius:var(--radius-sm);font-size:.8125rem;font-weight:500}.horse-count-badge.has-horses{background:#e91e6326;color:#e91e63}.error-message{text-align:center;color:var(--error);padding:var(--spacing-xl)}
