@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,300;0,14..32,400;0,14..32,500;0,14..32,600;0,14..32,700;0,14..32,800;1,14..32,400&display=swap");:root{--brand-50:#eff8ff;--brand-100:#dbeffe;--brand-200:#bfe3fe;--brand-300:#93d0fd;--brand-400:#60b5fb;--brand-500:#3b96f8;--brand-600:#1d76f0;--brand-700:#1660dc;--brand-800:#184db2;--brand-900:#1a448c;--brand-950:#112155;--sidebar-bg:#0f172a;--sidebar-border:hsla(0,0%,100%,.06);--sidebar-hover:hsla(0,0%,100%,.06);--sidebar-active:rgba(59,150,248,.18);--sidebar-text:hsla(0,0%,100%,.58);--sidebar-text-hover:hsla(0,0%,100%,.9);--sidebar-text-active:#fff;--sidebar-accent:#3b96f8;--gray-50:#f8fafc;--gray-75:#f4f6f9;--gray-100:#f1f5f9;--gray-150:#e9eef5;--gray-200:#e2e8f0;--gray-300:#cbd5e1;--gray-400:#94a3b8;--gray-500:#64748b;--gray-600:#475569;--gray-700:#334155;--gray-800:#1e293b;--gray-900:#0f172a;--bg:#f4f6fa;--bg-subtle:#eef1f6;--panel:#fff;--panel-raised:#fff;--border:#e3e8f0;--border-strong:#cdd5e0;--ink:#0f172a;--ink-2:#1e293b;--muted:#64748b;--muted-2:#94a3b8;--brand:var(--brand-600);--brand-light:var(--brand-50);--ok:#059669;--ok-light:#10b981;--ok-bg:#ecfdf5;--ok-border:#a7f3d0;--warn:#d97706;--warn-light:#f59e0b;--warn-bg:#fffbeb;--warn-border:#fcd34d;--danger:#dc2626;--danger-light:#ef4444;--danger-bg:#fef2f2;--danger-border:#fca5a5;--info:#4f46e5;--info-light:#6366f1;--info-bg:#eef2ff;--info-border:#c7d2fe;--shadow-xs:0 1px 2px 0 rgba(15,23,42,.04);--shadow-sm:0 1px 3px 0 rgba(15,23,42,.08),0 1px 2px -1px rgba(15,23,42,.06);--shadow-md:0 4px 8px -2px rgba(15,23,42,.1),0 2px 4px -2px rgba(15,23,42,.06);--shadow-lg:0 12px 24px -4px rgba(15,23,42,.12),0 4px 8px -4px rgba(15,23,42,.06);--shadow-xl:0 24px 40px -8px rgba(15,23,42,.16),0 8px 16px -8px rgba(15,23,42,.08);--shadow-brand:0 4px 12px rgba(29,118,240,.25);--shadow-inner:inset 0 1px 2px rgba(15,23,42,.06);--sidebar-width:256px;--header-height:64px;--radius-xs:4px;--radius-sm:6px;--radius:10px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-full:9999px;--ease-out:cubic-bezier(0.16,1,0.3,1);--ease-in-out:cubic-bezier(0.4,0,0.2,1);--duration-fast:120ms;--duration:180ms;--duration-slow:280ms}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--brand);text-decoration:none}button{font:inherit;cursor:pointer}.appshell{display:flex;min-height:100vh;background:var(--bg)}.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);display:flex;flex-direction:column;flex-shrink:0;position:fixed;top:0;left:0;height:100vh;overflow-y:auto;overflow-x:hidden;z-index:40;scrollbar-width:none}.sidebar::-webkit-scrollbar{display:none}.sidebar-logo{gap:12px;padding:20px 16px 16px;border-bottom:1px solid var(--sidebar-border);margin-bottom:8px}.sidebar-logo,.sidebar-logo-icon{display:flex;align-items:center;flex-shrink:0}.sidebar-logo-icon{justify-content:center;width:36px;height:36px;background:linear-gradient(135deg,var(--brand-700),var(--brand-500));border-radius:var(--radius);box-shadow:0 2px 8px rgba(29,118,240,.35)}.sidebar-logo-text{display:flex;flex-direction:column;min-width:0}.sidebar-logo-text strong{font-size:14px;font-weight:700;color:#fff;letter-spacing:-.015em;line-height:1.2;white-space:nowrap}.sidebar-logo-text span{font-size:10.5px;color:hsla(0,0%,100%,.4);font-weight:500;text-transform:uppercase;letter-spacing:.08em;margin-top:1px}.sidebar nav{display:flex;flex-direction:column;padding:4px 10px;flex:1 1;gap:1px}.sidebar-section-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:hsla(0,0%,100%,.25);padding:12px 8px 4px;margin-top:4px}.sidebar nav a{display:flex;align-items:center;gap:10px;color:var(--sidebar-text);padding:8px 10px;border-radius:var(--radius-sm);font-size:13.5px;font-weight:500;transition:background var(--duration-fast),color var(--duration-fast);position:relative;text-decoration:none;white-space:nowrap}.sidebar nav a:hover{background:var(--sidebar-hover);color:var(--sidebar-text-hover)}.sidebar nav a.active{background:var(--sidebar-active);color:var(--sidebar-text-active);font-weight:600}.sidebar nav a.active:before{content:"";position:absolute;left:-10px;top:50%;transform:translateY(-50%);width:3px;height:18px;background:var(--sidebar-accent);border-radius:0 3px 3px 0}.nav-icon{width:17px;height:17px;flex-shrink:0;opacity:.7;transition:opacity var(--duration-fast)}.sidebar nav a.active .nav-icon,.sidebar nav a:hover .nav-icon{opacity:1}.sidebar-subnav{padding-left:36px;display:flex;flex-direction:column;gap:1px;padding-bottom:4px}.sidebar-subnav a{font-size:12.5px!important;padding:6px 10px!important;color:hsla(0,0%,100%,.42)!important;border-radius:var(--radius-sm)!important}.sidebar-subnav a:hover{color:hsla(0,0%,100%,.82)!important;background:hsla(0,0%,100%,.05)!important}.sidebar-subnav a.active{color:hsla(0,0%,100%,.92)!important;background:rgba(59,150,248,.12)!important}.sidebar-footer{padding:10px;border-top:1px solid var(--sidebar-border);margin-top:auto;flex-shrink:0}.sidebar-user{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius);cursor:pointer;transition:background var(--duration-fast)}.sidebar-user:hover{background:var(--sidebar-hover)}.sidebar-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--brand-600),var(--brand-400));display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0;box-shadow:0 0 0 2px hsla(0,0%,100%,.12)}.sidebar-user-info{flex:1 1;min-width:0}.sidebar-user-name{font-size:12.5px;font-weight:600;color:hsla(0,0%,100%,.9)}.sidebar-user-name,.sidebar-user-role{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.sidebar-user-role{font-size:11px;color:hsla(0,0%,100%,.35);margin-top:1px}.logout-btn{background:none;border:none;padding:5px;border-radius:var(--radius-sm);color:hsla(0,0%,100%,.3);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:color var(--duration-fast),background var(--duration-fast)}.logout-btn:hover{color:hsla(0,0%,100%,.75);background:hsla(0,0%,100%,.08)}.content{flex:1 1;margin-left:var(--sidebar-width);min-width:0;display:flex;flex-direction:column}.topbar{justify-content:space-between;gap:16px;height:var(--header-height);padding:0 28px;background:hsla(0,0%,100%,.88);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:30}.topbar,.topbar-left{display:flex;align-items:center}.topbar-left{gap:12px;flex:1 1;min-width:0}.topbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.topbar-date{font-size:12.5px;color:var(--muted);font-weight:500;white-space:nowrap;padding:5px 10px;background:var(--gray-100);border-radius:var(--radius-full)}.topbar-date,.topbar-icon-btn{border:1px solid var(--border)}.topbar-icon-btn{width:36px;height:36px;border-radius:var(--radius);background:var(--panel);color:var(--gray-500);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--duration-fast);box-shadow:var(--shadow-xs);position:relative;flex-shrink:0}.topbar-icon-btn:hover{background:var(--gray-50);color:var(--ink);border-color:var(--gray-300);box-shadow:var(--shadow-sm)}.topbar-icon-btn .notification-dot{position:absolute;top:7px;right:7px;width:7px;height:7px;background:var(--danger);border-radius:50%;border:1.5px solid #fff}.topbar-divider{width:1px;height:24px;background:var(--border);flex-shrink:0}.topbar-user{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 6px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--panel);cursor:pointer;transition:all var(--duration-fast);box-shadow:var(--shadow-xs);text-decoration:none}.topbar-user:hover{background:var(--gray-50);border-color:var(--gray-300);box-shadow:var(--shadow-sm)}.topbar-user-avatar{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--brand-600),var(--brand-400));display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:700;color:#fff;flex-shrink:0}.topbar-user-name{font-size:13px;font-weight:600;color:var(--ink-2);white-space:nowrap}.topbar-breadcrumb{display:flex;align-items:center;gap:0;flex-shrink:0}.topbar-breadcrumb-item{display:flex;align-items:center;gap:4px}.topbar-breadcrumb-link{font-size:13px;font-weight:500;color:var(--muted);text-decoration:none;transition:color var(--duration-fast)}.topbar-breadcrumb-link:hover{color:var(--ink)}.topbar-breadcrumb-current{font-size:13px;font-weight:700;color:var(--ink)}.gsearch{position:relative;width:100%;max-width:480px;z-index:60}.gsearch-input-wrap{display:flex;align-items:center;gap:8px;background:var(--panel);border:1.5px solid var(--border);border-radius:var(--radius);padding:0 12px;height:38px;box-shadow:var(--shadow-xs);transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.gsearch-input-wrap:hover{border-color:var(--gray-300)}.gsearch-input-wrap.focused{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(59,150,248,.14),var(--shadow-sm)}.gsearch-icon{display:flex;color:var(--muted-2);flex-shrink:0}.gsearch-input-wrap input{flex:1 1;border:none;outline:none;background:transparent;font:inherit;font-size:13.5px;color:var(--ink);min-width:0}.gsearch-input-wrap input::placeholder{color:var(--gray-400)}.gsearch-kbd{font-family:inherit;font-size:11px;background:var(--gray-100);border:1px solid var(--gray-200);border-radius:var(--radius-xs);padding:2px 6px;color:var(--gray-500);white-space:nowrap;flex-shrink:0;letter-spacing:.02em;font-weight:500}.gsearch-clear{background:none;border:none;padding:4px;border-radius:50%;color:var(--gray-400);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:color var(--duration-fast),background var(--duration-fast)}.gsearch-clear:hover{color:var(--gray-600);background:var(--gray-100)}.gsearch-panel{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);overflow:hidden;animation:gsearch-in var(--duration-fast) var(--ease-out)}@keyframes gsearch-in{0%{opacity:0;transform:translateY(-6px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.gsearch-filters{display:flex;gap:6px;padding:12px 12px 8px;border-bottom:1px solid var(--gray-100);flex-wrap:wrap}.gsearch-chip{padding:4px 12px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--panel);color:var(--gray-600);font-size:12px;font-weight:600;cursor:pointer;transition:all var(--duration-fast)}.gsearch-chip:hover{background:var(--gray-50);border-color:var(--gray-300);color:var(--ink)}.gsearch-chip.active{background:var(--brand-600);border-color:var(--brand-600);color:#fff;box-shadow:0 1px 3px rgba(29,118,240,.3)}.gsearch-results{max-height:360px;overflow-y:auto;padding:6px}.gsearch-result{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:9px 10px;border:none;background:transparent;border-radius:var(--radius);cursor:pointer;transition:background var(--duration-fast)}.gsearch-result.selected{background:var(--brand-50)}.gsearch-result:hover{background:var(--gray-50)}.gsearch-result.selected:hover{background:var(--brand-50)}.gsearch-result-icon{width:34px;height:34px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--gray-100);color:var(--gray-600)}.gsearch-result-icon.entity-user{background:var(--info-bg);color:var(--info)}.gsearch-result-icon.entity-driver{background:var(--brand-50);color:var(--brand-600)}.gsearch-result-icon.entity-trip{background:var(--warn-bg);color:var(--warn)}.gsearch-result-body{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:2px}.gsearch-result-title{font-size:13.5px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px}.gsearch-result-sub,.gsearch-result-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gsearch-result-sub{font-size:12px;color:var(--muted)}.gsearch-result-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}.gsearch-status{font-size:11px;font-weight:600;color:var(--gray-500)}.gsearch-score{font-size:10.5px;font-weight:700;color:var(--gray-300);letter-spacing:.02em}.gsearch-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;border-top:1px solid var(--gray-100);font-size:11.5px;color:var(--muted);background:var(--gray-50)}.gsearch-footer kbd{font-family:inherit;font-size:10.5px;background:var(--panel);border:1px solid var(--gray-200);border-radius:4px;padding:1px 5px;color:var(--gray-600)}.gsearch-loading{padding:14px}.gsearch-refreshing{padding:6px 14px;font-size:11px;font-weight:600;color:var(--brand-600);background:var(--brand-50);border-bottom:1px solid var(--gray-100);animation:gsearch-pulse 1.2s ease-in-out infinite}@keyframes gsearch-pulse{0%,to{opacity:1}50%{opacity:.55}}.gsearch-empty{display:flex;flex-direction:column;align-items:center;padding:28px 20px;text-align:center;gap:5px}.gsearch-empty-icon{font-size:26px;opacity:.45;margin-bottom:4px}.gsearch-empty-title{font-size:13.5px;font-weight:600;color:var(--gray-600)}.gsearch-empty-desc{font-size:12.5px;color:var(--gray-400);max-width:320px}.page-body{flex:1 1;padding:24px 28px 48px;min-width:0}.page-header{margin-bottom:24px}.page-title{font-size:17px;font-weight:800;color:var(--ink);letter-spacing:-.025em;margin:0 0 4px;line-height:1.2}.page-subtitle{font-size:13.5px;color:var(--muted);margin:0;line-height:1.5}.page-header:has(.page-actions){display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.page-header-copy{flex:1 1;min-width:0}.page-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm);margin-bottom:20px}.card-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;gap:16px}.card-header-left{flex:1 1;min-width:0}.card h2,.card-title{margin:0 0 3px;font-size:15px;font-weight:700;color:var(--ink);letter-spacing:-.015em}.card .hint,.card-hint{margin:0;color:var(--muted);font-size:13px}.export-actions{display:flex;gap:6px;flex-shrink:0}.btn-export{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;font-size:12px;font-weight:600;color:var(--gray-500);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--duration-fast);white-space:nowrap;box-shadow:var(--shadow-xs)}.btn-export:hover{color:var(--ink);border-color:var(--gray-300);background:var(--gray-50);box-shadow:var(--shadow-sm)}.btn-export:active{transform:scale(.97)}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px;margin-bottom:24px}.stat-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px 18px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;transition:box-shadow var(--duration),transform var(--duration)}.stat-card:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--stat-accent,var(--brand-500));opacity:.8}.stat-card.accent-ok{--stat-accent:var(--ok)}.stat-card.accent-warn{--stat-accent:var(--warn)}.stat-card.accent-info{--stat-accent:var(--info)}.stat-card.accent-brand{--stat-accent:var(--brand-500)}.stat-card.accent-danger{--stat-accent:var(--danger)}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.stat-card:before{content:"";position:absolute;top:-16px;right:-16px;width:80px;height:80px;border-radius:50%;background:var(--stat-accent,var(--brand-500));opacity:.05;pointer-events:none}.stat-icon{width:38px;height:38px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;margin-bottom:16px;font-size:18px;background:var(--brand-light);flex-shrink:0}.stat-icon.ok{background:var(--ok-bg)}.stat-icon.warn{background:var(--warn-bg)}.stat-icon.info{background:var(--info-bg)}.stat-icon.danger{background:var(--danger-bg)}.stat-value{font-size:28px;font-weight:800;color:var(--ink);letter-spacing:-.04em;line-height:1;margin-bottom:5px}.stat-label{font-size:12.5px;color:var(--muted);font-weight:500;line-height:1.4}.stat-subtext{font-size:11.5px;color:var(--muted-2);margin-top:2px}.table-wrapper{overflow-x:auto;margin:0 -24px;padding:0 24px;scrollbar-width:thin;scrollbar-color:var(--gray-200) transparent}.table-wrapper::-webkit-scrollbar{height:4px}.table-wrapper::-webkit-scrollbar-track{background:transparent}.table-wrapper::-webkit-scrollbar-thumb{background:var(--gray-200);border-radius:2px}table{width:100%;border-collapse:collapse;font-size:13.5px}thead tr{border-bottom:1.5px solid var(--gray-150)}th{text-align:left;padding:9px 14px;color:var(--gray-500);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.07em;white-space:nowrap;background:var(--gray-50)}th:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}th:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--gray-100);vertical-align:middle;color:var(--gray-800)}tbody tr{transition:background var(--duration-fast)}tbody tr:hover{background:var(--gray-50)}tbody tr:last-child td{border-bottom:none}.mono{font-family:SF Mono,Fira Code,Cascadia Code,monospace;padding:2px 7px;border-radius:var(--radius-xs);border:1px solid var(--gray-150)}.badge,.mono{font-size:11.5px;color:var(--gray-600);background:var(--gray-100)}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:var(--radius-full);font-weight:600;letter-spacing:.01em;white-space:nowrap;border:1px solid var(--gray-200)}.badge.ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-border)}.badge.warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-border)}.badge.danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.badge.brand{background:var(--brand-50);color:var(--brand-700);border-color:var(--brand-200)}.badge.info{background:var(--info-bg);color:var(--info);border-color:var(--info-border)}.badge-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);color:var(--gray-700);font-weight:600;font-size:13.5px;line-height:1;transition:all var(--duration-fast);box-shadow:var(--shadow-xs);white-space:nowrap;text-decoration:none}.btn:hover{background:var(--gray-50);border-color:var(--gray-300);box-shadow:var(--shadow-sm);color:var(--ink)}.btn:active{transform:scale(.98)}.btn.primary{background:var(--brand-600);border-color:var(--brand-600);color:#fff;box-shadow:var(--shadow-brand)}.btn.primary:hover{background:var(--brand-700);border-color:var(--brand-700);box-shadow:0 4px 14px rgba(29,118,240,.35)}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff;box-shadow:0 1px 3px rgba(220,38,38,.3)}.btn.danger:hover{background:#b91c1c;border-color:#b91c1c}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff;box-shadow:0 1px 3px rgba(5,150,105,.3)}.btn.ok:hover{background:#047857;border-color:#047857}.btn.sm{padding:5px 12px;font-size:12.5px;border-radius:var(--radius-sm);gap:5px}.btn.xs{padding:4px 8px;font-size:11.5px;border-radius:var(--radius-xs);gap:4px}.btn.ghost{background:transparent;color:var(--gray-600);border:1px solid var(--border);box-shadow:none}.btn.ghost:hover{background:var(--gray-50);border-color:var(--gray-300);color:var(--ink)}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;pointer-events:none}.btn-icon{width:34px;height:34px;padding:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);color:var(--gray-500);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--duration-fast);box-shadow:var(--shadow-xs);flex-shrink:0}.btn-icon:hover{background:var(--gray-50);color:var(--ink);border-color:var(--gray-300)}.filter-tabs{display:flex;gap:6px;flex-wrap:wrap}.filter-tab{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--panel);color:var(--gray-600);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--duration-fast);box-shadow:var(--shadow-xs)}.filter-tab:hover{background:var(--gray-50);border-color:var(--gray-300);color:var(--ink)}.filter-tab.active{background:var(--brand-600);border-color:var(--brand-600);color:#fff;font-weight:600;box-shadow:0 1px 4px rgba(29,118,240,.28)}.tab-bar{display:flex;gap:3px;background:var(--gray-100);border-radius:var(--radius);padding:4px;margin-bottom:24px;width:-moz-fit-content;width:fit-content;border:1px solid var(--border)}.tab-pill{padding:7px 18px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--gray-500);font-size:13px;font-weight:600;cursor:pointer;transition:all var(--duration-fast);white-space:nowrap;display:flex;align-items:center;gap:7px}.tab-pill:hover{color:var(--gray-700);background:hsla(0,0%,100%,.6)}.tab-pill.active{background:var(--panel);color:var(--ink);box-shadow:var(--shadow-sm);font-weight:700}.tab-pill-icon{display:flex;align-items:center;opacity:.6}.tab-pill.active .tab-pill-icon{opacity:1;color:var(--brand-600)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:18px;gap:18px}.field,.form-field{display:flex;flex-direction:column;gap:6px}.field label,.form-label{font-weight:600;font-size:12px;color:var(--gray-600);letter-spacing:.02em;text-transform:uppercase}.field input,.field select,.field textarea,.form-input{padding:9px 12px;border:1.5px solid var(--border);border-radius:var(--radius);font:inherit;font-size:14px;background:var(--panel);color:var(--ink);transition:border-color var(--duration-fast),box-shadow var(--duration-fast);outline:none;box-shadow:var(--shadow-inner)}.field input:hover,.field select:hover,.field textarea:hover,.form-input:hover{border-color:var(--gray-300)}.field input:focus,.field select:focus,.field textarea:focus,.form-input:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(59,150,248,.14)}.field input::placeholder,.form-input::placeholder{color:var(--gray-300)}.input{padding:9px 12px;border:1.5px solid var(--border);border-radius:var(--radius);font:inherit;font-size:14px;background:var(--panel);color:var(--ink);transition:border-color var(--duration-fast),box-shadow var(--duration-fast);outline:none;box-shadow:var(--shadow-inner)}.input:hover{border-color:var(--gray-300)}.input:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(59,150,248,.14)}.input::placeholder{color:var(--gray-300)}.form-group{display:flex;flex-direction:column;gap:6px}.modal-actions{justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid var(--border);background:var(--gray-50);border-radius:0 0 var(--radius-xl) var(--radius-xl)}.modal-actions,.modal-backdrop{display:flex;align-items:center}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.45);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);justify-content:center;z-index:100;animation:modal-fade-in var(--duration-fast) ease-out}.form-hint{font-size:12px;color:var(--muted-2);margin-top:2px;line-height:1.4}.form-input-changed{border-color:var(--brand-400);box-shadow:0 0 0 3px rgba(59,150,248,.12)}textarea.form-input{min-height:100px;line-height:1.6}.broadcast-preview{background:var(--gray-50);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:8px}.broadcast-preview-title{font-size:14px;font-weight:700;color:var(--ink)}.broadcast-preview-body{font-size:13px;color:var(--gray-600);line-height:1.5;white-space:pre-wrap}.broadcast-preview-meta{font-size:11.5px;font-weight:600;color:var(--muted-2);margin-top:4px;padding-top:8px;border-top:1px solid var(--border)}.tips-list{margin:0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:8px}.tips-list li{font-size:13px;color:var(--gray-600);line-height:1.5;padding-left:20px;position:relative}.tips-list li:before{content:"•";position:absolute;left:4px;color:var(--brand-500);font-weight:700}.heatmap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));grid-gap:4px;gap:4px;margin-bottom:16px}.heatmap-cell{aspect-ratio:1;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;border:2px solid transparent;transition:border-color var(--duration-fast),transform var(--duration-fast)}.heatmap-cell:hover{transform:scale(1.08);z-index:1}.heatmap-cell.selected{border-color:var(--brand-600);box-shadow:0 0 0 2px rgba(29,118,240,.3)}.heatmap-count{font-size:11px;font-weight:700;color:var(--gray-700)}.heatmap-detail{padding:16px;background:var(--gray-50);border-radius:var(--radius);border:1px solid var(--border);margin-top:16px}.leaderboard-rank{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-size:12px;font-weight:800;background:var(--gray-100);color:var(--gray-500)}.leaderboard-rank.medal-gold{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#78350f;box-shadow:0 2px 6px rgba(245,158,11,.3)}.leaderboard-rank.medal-silver{background:linear-gradient(135deg,#e2e8f0,#cbd5e1);color:#334155;box-shadow:0 2px 6px rgba(148,163,184,.3)}.leaderboard-rank.medal-bronze{background:linear-gradient(135deg,#fdba74,#f97316);color:#7c2d12;box-shadow:0 2px 6px rgba(249,115,22,.3)}.standalone-select{padding:8px 12px;border:1.5px solid var(--border);border-radius:var(--radius);font:inherit;font-size:13.5px;background:var(--panel);color:var(--ink);outline:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast);cursor:pointer;box-shadow:var(--shadow-xs)}.standalone-select:hover{border-color:var(--gray-300)}.standalone-select:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(59,150,248,.14)}.toggle-btn{position:relative;width:44px;height:24px;border-radius:12px;border:none;cursor:pointer;transition:background var(--duration);flex-shrink:0}.toggle-btn.on{background:var(--brand-600);box-shadow:0 1px 4px rgba(29,118,240,.35)}.toggle-btn.off{background:var(--gray-300)}.toggle-btn:disabled{opacity:.5;cursor:not-allowed}.toggle-knob{position:absolute;top:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.18);transition:left var(--duration) var(--ease-out)}.toggle-btn.on .toggle-knob{left:22px}.toggle-btn.off .toggle-knob{left:2px}.error{background:var(--danger-bg);color:var(--danger);border-radius:var(--radius);border:1px solid var(--danger-border);border-left:3px solid var(--danger)}.error,.notice{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;margin-bottom:16px;font-size:13.5px;font-weight:500}.notice{background:var(--ok-bg);color:var(--ok);border-radius:var(--radius);border:1px solid var(--ok-border);border-left:3px solid var(--ok)}.notice.info{background:var(--info-bg);color:var(--info);border-color:var(--info-border);border-left-color:var(--info)}.notice.warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-border);border-left-color:var(--warn)}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 24px;color:var(--muted);text-align:center;gap:8px}.empty-icon{font-size:40px;opacity:.4;margin-bottom:6px}.empty-title{font-size:14.5px;font-weight:700;color:var(--gray-600)}.empty-desc{font-size:13px;color:var(--gray-400);max-width:320px;line-height:1.5}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-line,.skeleton-row{height:14px;background:linear-gradient(90deg,var(--gray-100) 25%,var(--gray-150) 50%,var(--gray-100) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm);margin-bottom:10px}.skeleton-line{margin-bottom:0}.skeleton-avatar{width:36px;height:36px;border-radius:50%;flex-shrink:0}.skeleton-avatar,.skeleton-badge{background:linear-gradient(90deg,var(--gray-100) 25%,var(--gray-150) 50%,var(--gray-100) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.skeleton-badge{display:inline-block;width:64px;height:22px;border-radius:var(--radius-full)}.skeleton-row-tr td{padding:12px 16px;border-bottom:1px solid var(--border)}.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:modal-fade-in var(--duration-fast) ease-out}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:90%;max-width:640px;max-height:85vh;overflow-y:auto;animation:modal-slide-in var(--duration) var(--ease-out)}@keyframes modal-slide-in{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;background:var(--panel);z-index:1;border-radius:var(--radius-xl) var(--radius-xl) 0 0}.modal-header h2{font-size:16px;font-weight:700;margin:0;color:var(--ink);letter-spacing:-.015em}.modal-close{background:var(--gray-100);border:1px solid var(--border);border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;color:var(--gray-500);cursor:pointer;font-size:16px;transition:all var(--duration-fast);flex-shrink:0}.modal-close:hover{background:var(--gray-200);color:var(--ink)}.modal-body{padding:24px}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid var(--border);background:var(--gray-50);border-radius:0 0 var(--radius-xl) var(--radius-xl)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.detail-item{display:flex;flex-direction:column;gap:4px;padding:12px;background:var(--gray-50);border-radius:var(--radius);border:1px solid var(--gray-100)}.detail-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.detail-value{font-size:14px;font-weight:500;color:var(--ink)}.detail-row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--gray-100)}.detail-row:last-child{border-bottom:none}.detail-row .detail-label{flex:0 0 140px;font-size:11.5px;font-weight:600;color:var(--muted);padding-top:1px;text-transform:none;letter-spacing:0}.detail-row .detail-value{flex:1 1;font-size:13.5px;color:var(--ink-2);word-break:break-word}.trip-timeline{position:relative;padding-left:34px}.trip-timeline:before{content:"";position:absolute;left:11px;top:6px;bottom:6px;width:2px;border-radius:2px;background:var(--border-strong,#cdd5e0)}.timeline-item{position:relative;padding-bottom:18px}.timeline-item.last{padding-bottom:0}.timeline-dot{position:absolute;left:-29px;top:3px;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff;border:2px solid var(--panel);box-shadow:0 0 0 1px var(--border-strong,#cdd5e0),0 2px 6px rgba(15,23,42,.12);z-index:1}.timeline-content{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 14px;transition:border-color .15s,box-shadow .15s}.timeline-content:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.timeline-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.timeline-name{font-weight:600;font-size:13px;color:var(--ink)}.timeline-time{font-size:11px;color:var(--muted);white-space:nowrap}.timeline-head-right{display:flex;align-items:center;gap:8px}.timeline-actions{display:flex;align-items:center;gap:2px}.timeline-action{width:24px;height:24px;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;padding:0}.timeline-action:hover{color:var(--ink);border-color:var(--border-strong);background:var(--bg-subtle)}.timeline-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.timeline-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-full);padding:2px 9px}.timeline-json{margin:8px 0 0;padding:8px 10px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);font-size:10.5px;line-height:1.5;color:var(--ink-2);overflow:auto;max-height:160px;white-space:pre-wrap;word-break:break-word}.avatar{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--brand-700);background:var(--brand-50);border:1.5px solid var(--brand-100);flex-shrink:0;text-transform:uppercase;letter-spacing:.02em}.avatar.sm{width:26px;height:26px;font-size:10.5px}.avatar.lg{width:42px;height:42px;font-size:15px}.avatar.ok{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-border)}.avatar.warn{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-border)}.avatar.info{color:var(--info);background:var(--info-bg);border-color:var(--info-border)}.avatar.gray{color:var(--gray-600);background:var(--gray-100);border-color:var(--gray-200)}.avatar-cell{display:flex;align-items:center;gap:10px;min-width:0}.avatar-cell .avatar-body{min-width:0}.avatar-cell .avatar-body strong{font-weight:600;color:var(--ink-2);font-size:13.5px}.avatar-cell .avatar-body span,.avatar-cell .avatar-body strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.avatar-cell .avatar-body span{font-size:12px;color:var(--muted);margin-top:1px}.charts-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;margin-bottom:16px}.chart-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px;box-shadow:var(--shadow-sm)}.chart-card-title{font-size:14px;font-weight:700;color:var(--ink);margin:0 0 3px;letter-spacing:-.01em}.chart-card-subtitle{font-size:12px;color:var(--muted);margin:0 0 18px}.chart-container{width:100%;overflow:hidden}.bar-chart .bar-rect{transition:opacity var(--duration-fast)}.bar-chart .bar-rect:hover{opacity:.8}.bar-chart .bar-value{font-size:10px;font-weight:700;fill:var(--gray-600)}.bar-chart .bar-label{font-size:9.5px;font-weight:500;fill:var(--gray-400)}.chart-empty{justify-content:center;padding:32px;color:var(--gray-400);font-size:13px}.chart-empty,.donut-wrapper{display:flex;align-items:center}.donut-wrapper{gap:24px}.donut-segment{transition:opacity var(--duration-fast)}.donut-segment:hover{opacity:.8}.donut-center-value{font-size:18px;font-weight:800;fill:var(--ink)}.donut-center-label{font-size:10px;font-weight:500;fill:var(--gray-400)}.donut-legend{display:flex;flex-direction:column;gap:8px}.donut-legend-item{display:flex;align-items:center;gap:8px;font-size:12.5px}.donut-legend-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}.donut-legend-label{color:var(--gray-600);font-weight:500;flex:1 1}.donut-legend-value{font-weight:700;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.donut-legend-pct{font-weight:500;color:var(--gray-400)}.progress-bar-wrap{display:flex;align-items:center;gap:10px;width:100%}.progress-bar-track{flex:1 1;background:var(--gray-100);border-radius:999px;overflow:hidden;border:1px solid var(--gray-150)}.progress-bar-fill{border-radius:999px;transition:width .5s var(--ease-out)}.progress-bar-label{font-size:12px;font-weight:700;color:var(--gray-600);min-width:48px;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi-section-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;margin-top:32px}.kpi-section-header:first-of-type{margin-top:0}.kpi-section-icon{width:40px;height:40px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;background:var(--gray-100);flex-shrink:0}.kpi-section-title{font-size:16px;font-weight:700;color:var(--ink);margin:0;letter-spacing:-.02em}.kpi-section-subtitle{font-size:12.5px;color:var(--muted);margin:2px 0 0}.date-range-picker{position:relative}.date-range-trigger{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;font-size:13px;font-weight:500;color:var(--ink);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:all var(--duration-fast);white-space:nowrap;box-shadow:var(--shadow-xs)}.date-range-trigger:hover{border-color:var(--gray-300);box-shadow:var(--shadow-sm)}.date-range-label{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.date-range-dropdown{position:absolute;top:calc(100% + 6px);right:0;z-index:50;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:12px;min-width:320px;animation:dropdown-in var(--duration-fast) var(--ease-out)}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.date-range-presets{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--border)}.date-range-preset{padding:5px 12px;font-size:12px;font-weight:500;color:var(--muted);background:var(--gray-100);border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--duration-fast)}.date-range-preset:hover{color:var(--ink);background:var(--gray-150)}.date-range-preset.active{color:var(--brand-600);background:var(--brand-50);border-color:var(--brand-200);font-weight:600}.date-range-custom{display:flex;align-items:flex-end;gap:8px;margin-bottom:12px}.date-range-field{flex:1 1;display:flex;flex-direction:column;gap:4px}.date-range-field-label{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.date-range-separator{padding-bottom:8px;color:var(--muted);font-size:14px}.date-range-input{padding:7px 10px;font-size:13px;font-family:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--duration-fast);width:100%}.date-range-input:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(59,150,248,.14)}.date-range-apply{width:100%;padding:8px;font-size:13px;font-weight:600;color:#fff;background:var(--brand-600);border:none;border-radius:var(--radius);cursor:pointer;transition:all var(--duration-fast);box-shadow:var(--shadow-brand)}.date-range-apply:hover{background:var(--brand-700);box-shadow:0 4px 10px rgba(29,118,240,.3)}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:20px}.divider{height:1px;background:var(--border);margin:20px 0}.flex{gap:8px}.flex,.flex-between{display:flex;align-items:center}.flex-between{justify-content:space-between;gap:12px}.actions{display:flex;align-items:center;gap:8px}.muted{color:var(--muted)}.text-sm{font-size:12.5px}.font-mono{font-family:SF Mono,Fira Code,monospace}.mt-4{margin-top:16px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.login-page{display:flex;min-height:100vh;background:var(--sidebar-bg);align-items:center;justify-content:center;padding:24px;position:relative;overflow:hidden}.login-page:before{top:-40%;left:-20%;width:70%;height:100%;background:radial-gradient(ellipse at center,rgba(29,118,240,.15) 0,transparent 70%)}.login-page:after,.login-page:before{content:"";position:absolute;pointer-events:none}.login-page:after{bottom:-30%;right:-10%;width:60%;height:80%;background:radial-gradient(ellipse at center,rgba(99,102,241,.1) 0,transparent 70%)}.login-card{background:var(--panel);border-radius:var(--radius-xl);padding:40px;width:100%;max-width:420px;box-shadow:var(--shadow-xl);border:1px solid hsla(0,0%,100%,.05);position:relative;z-index:1}.login-logo{gap:12px;margin-bottom:32px}.login-logo,.login-logo-icon{display:flex;align-items:center}.login-logo-icon{justify-content:center;width:42px;height:42px;background:linear-gradient(135deg,var(--brand-700),var(--brand-500));border-radius:var(--radius);box-shadow:var(--shadow-brand)}.login-logo-text strong{display:block;font-size:17px;font-weight:800;color:var(--ink);letter-spacing:-.02em}.login-logo-text span{display:block;font-size:12px;color:var(--muted);margin-top:1px}.login-title{font-size:22px;font-weight:800;color:var(--ink);letter-spacing:-.03em;margin:0 0 6px}.login-subtitle{font-size:13.5px;color:var(--muted);margin:0 0 28px;line-height:1.5}.fade-in{animation:page-fade var(--duration-slow) var(--ease-out)}@keyframes page-fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.btn:focus-visible,.filter-tab:focus-visible,.standalone-select:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--brand-400);outline-offset:2px}@keyframes sos-pulse{0%,to{box-shadow:0 0 0 0 rgba(220,38,38,.45)}50%{box-shadow:0 0 0 10px rgba(220,38,38,0)}}.sos-global-strip{background:linear-gradient(135deg,#dc2626,#991b1b);color:#fff;padding:10px 18px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;animation:sos-pulse 1.6s infinite}.sos-global-strip .sos-title{font-weight:800;font-size:13.5px}.sos-global-strip .sos-sub{font-size:12.5px;opacity:.92}.sos-global-strip .sos-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.sos-global-strip .sos-btn{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.35);color:#fff;border-radius:8px;padding:7px 14px;font-size:12.5px;font-weight:700;cursor:pointer;text-decoration:none}.sos-global-strip .sos-btn:hover{background:hsla(0,0%,100%,.3)}.sos-global-strip .sos-btn.primary{background:#fff;color:#991b1b;border-color:#fff}