:root{--color-brand: #ec8d0e;--color-brand-dark: #c97a08;--color-brand-light: #fdf0d9;--color-sidebar-bg: #1f2937;--color-sidebar-text: #f9fafb;--color-sidebar-active: #ec8d0e;--color-sidebar-hover: #374151;--color-success: #28a745;--color-success-light: #d4edda;--color-warning: #fd7e14;--color-warning-dark: #7c3d00;--color-warning-light: #fff3cd;--color-danger: #dc3545;--color-danger-light: #f8d7da;--color-info: #17a2b8;--color-info-light: #d1ecf1;--color-gray-light: #e5e7eb;--color-gray: #9ca3af;--color-gray-dark: #6b7280;--color-text: #111827;--color-bg: #f3f4f6;--color-white: #ffffff;--font-heading: "Roboto Slab", Georgia, serif;--font-body: system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", Consolas, monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base:1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--sidebar-width: 240px;--sidebar-collapsed-width: 56px;--topbar-height: 60px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:var(--color-bg)}body{font-family:var(--font-body);font-size:var(--font-size-base);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:600;line-height:1.3;color:var(--color-text)}h1{font-size:var(--font-size-2xl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}a{color:var(--color-brand);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-brand);outline-offset:2px;border-radius:var(--radius-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.admin-layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--color-sidebar-bg);color:var(--color-sidebar-text);display:flex;flex-direction:column;overflow:hidden;transition:width .2s ease;z-index:100}.sidebar-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-5) var(--space-4);border-bottom:1px solid rgba(255,255,255,.1);min-height:var(--topbar-height)}.sidebar-logo{font-size:1.5rem;flex-shrink:0}.sidebar-title{font-family:var(--font-heading);font-size:var(--font-size-base);font-weight:700;color:var(--color-brand);white-space:nowrap}.sidebar-subtitle{font-size:var(--font-size-xs);color:#ffffff80;white-space:nowrap}.sidebar-nav{flex:1;padding:var(--space-4) 0;overflow-y:auto}.sidebar-nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);color:#ffffffbf;font-size:var(--font-size-sm);cursor:pointer;border-left:3px solid transparent;transition:all .15s ease;text-decoration:none;white-space:nowrap}.sidebar-nav-item:hover{background:var(--color-sidebar-hover);color:var(--color-sidebar-text);text-decoration:none}.sidebar-nav-item.active{background:#ec8d0e1f;color:var(--color-brand);border-left-color:var(--color-brand);font-weight:600}.sidebar-nav-icon{font-size:1.1rem;width:20px;text-align:center;flex-shrink:0}.sidebar-nav-section{padding:var(--space-4) var(--space-4) var(--space-2);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.08em;color:#ffffff59}.sidebar-footer{padding:var(--space-4);border-top:1px solid rgba(255,255,255,.1)}.sidebar-user{display:flex;align-items:center;gap:var(--space-3)}.sidebar-user-avatar{width:32px;height:32px;border-radius:var(--radius-full);background:var(--color-brand);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:700;color:#fff;flex-shrink:0}.sidebar-user-info{flex:1;overflow:hidden}.sidebar-user-name{font-size:var(--font-size-sm);font-weight:600;color:var(--color-sidebar-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-size:var(--font-size-xs);color:#ffffff80;white-space:nowrap}.main-area{flex:1;display:flex;flex-direction:column;overflow:hidden}.topbar{height:var(--topbar-height);background:var(--color-white);border-bottom:1px solid var(--color-gray-light);display:flex;align-items:center;padding:0 var(--space-6);gap:var(--space-4);flex-shrink:0;box-shadow:var(--shadow-sm)}.topbar-title{font-size:var(--font-size-lg);font-weight:600;flex:1}.main-content{flex:1;overflow-y:auto;padding:var(--space-6)}.main-content--fill{flex:1;overflow:hidden;padding:0}.card{background:var(--color-white);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-5) var(--space-5);border:1px solid var(--color-gray-light)}.stat-card{background:var(--color-white);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-5);border:1px solid var(--color-gray-light);display:flex;flex-direction:column;gap:var(--space-2)}.stat-card-value{font-size:var(--font-size-2xl);font-weight:700;font-family:var(--font-heading);color:var(--color-text)}.stat-card-label{font-size:var(--font-size-sm);color:var(--color-gray-dark)}.form-group{margin-bottom:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.form-label{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text)}.form-label .required{color:var(--color-danger)}.form-input,.form-select,.form-textarea{width:100%;padding:10px var(--space-3);border:1px solid var(--color-gray-light);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:var(--font-body);color:var(--color-text);background:var(--color-white);transition:border-color .15s ease;min-height:44px}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--color-brand);box-shadow:0 0 0 3px #ec8d0e33}.form-input:disabled,.form-select:disabled{background:var(--color-gray-light);cursor:not-allowed;color:var(--color-gray-dark)}.form-error{font-size:var(--font-size-xs);color:var(--color-danger)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:10px var(--space-5);min-height:44px;border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:600;font-family:var(--font-body);cursor:pointer;transition:background .15s ease,box-shadow .15s ease;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-brand);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-brand-dark)}.btn-secondary{background:var(--color-white);color:var(--color-text);border:1px solid var(--color-gray-light)}.btn-secondary:hover:not(:disabled){background:var(--color-gray-light)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#b02a37}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover:not(:disabled){background:#1e7e34}.btn-sm{padding:6px var(--space-3);min-height:32px;font-size:var(--font-size-xs)}.btn-block{width:100%}.btn-icon{padding:8px;min-height:36px;min-width:36px}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;line-height:1.4;white-space:nowrap}.badge-success{background:var(--color-success-light);color:#155724}.badge-warning{background:var(--color-warning-light);color:#7c3d00}.badge-danger{background:var(--color-danger-light);color:#721c24}.badge-info{background:var(--color-info-light);color:#0c5460}.badge-gray{background:var(--color-gray-light);color:var(--color-gray-dark)}.badge-primary{background:var(--color-brand-light);color:#7c4d00}.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-success);margin-right:6px;animation:pulse-dot 1.5s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.table-wrapper{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--color-gray-light)}.table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.table th{text-align:left;padding:var(--space-3) var(--space-4);background:var(--color-bg);font-weight:600;color:var(--color-gray-dark);border-bottom:1px solid var(--color-gray-light);white-space:nowrap}.table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-gray-light);color:var(--color-text)}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover{background:var(--color-bg)}.leaflet-container{width:100%;height:100%;font-family:var(--font-body);z-index:1}.leaflet-popup-content-wrapper{border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.leaflet-popup-content{font-family:var(--font-body);font-size:var(--font-size-sm);margin:var(--space-3)}.spinner{width:24px;height:24px;border:3px solid var(--color-gray-light);border-top-color:var(--color-brand);border-radius:50%;animation:spin .8s linear infinite;display:inline-block;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.auth-container{min-height:100vh;background:linear-gradient(135deg,var(--color-sidebar-bg) 0%,#374151 100%);display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.auth-card{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-8);width:100%;max-width:420px}.auth-logo{text-align:center;margin-bottom:var(--space-6)}.auth-logo-emoji{font-size:3rem;display:block;margin-bottom:var(--space-2)}.auth-logo-title{font-family:var(--font-heading);font-size:var(--font-size-xl);font-weight:700;color:var(--color-brand)}.auth-logo-subtitle{font-size:var(--font-size-sm);color:var(--color-gray-dark);margin-top:var(--space-1)}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4)}@media (max-width: 768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.sidebar{width:var(--sidebar-collapsed-width)}.sidebar-title,.sidebar-subtitle,.sidebar-nav-item span,.sidebar-nav-section,.sidebar-user-info{display:none}}
