:root{--sb-bg: #0e1117;--sb-text: rgba(255,255,255,.75);--sb-text-active: #ffffff;--sb-active-bg: rgba(255,255,255,.08);--sb-hover-bg: rgba(255,255,255,.05);--sb-border: rgba(255,255,255,.08);--sb-section: rgba(255,255,255,.3);--sb-width: 232px;--bg: #f5f6fa;--surface: #ffffff;--surface-2: #f8f9fc;--surface-3: #f0f2f7;--text-1: #0f172a;--text-2: #475569;--text-3: #94a3b8;--border: #e2e8f0;--border-2: #cbd5e1;--accent: #4f6ef7;--accent-hover: #3d5af1;--accent-soft: #eef0fe;--ok: #16a34a;--ok-bg: #f0fdf4;--ok-border: #bbf7d0;--warn: #d97706;--warn-bg: #fffbeb;--warn-border: #fde68a;--bad: #dc2626;--bad-bg: #fef2f2;--bad-border: #fecaca;--soft-success: #dcfce7;--soft-success-fg: #15803d;--soft-warn: #fef9c3;--soft-warn-fg: #a16207;--soft-error: #fee2e2;--soft-error-fg: #b91c1c;--bg-soft: #e8edf5;--bg-strong: #f0f4fa;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow: 0 1px 3px rgba(0,0,0,.08), 0 4px 12px rgba(0,0,0,.04);--shadow-lg: 0 4px 16px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.08);--color-data-1: #4e79a7;--color-data-2: #f28e2b;--color-data-3: #e15759;--color-data-4: #76b7b2;--color-data-5: #59a14f;--color-data-6: #edc948;--color-data-7: #b07aa1;--color-data-8: #ff9da7;--color-data-9: #9c755f;--color-data-10: #bab0ac;--pf-space-1: 4px;--pf-space-2: 8px;--pf-space-3: 12px;--pf-space-4: 16px;--pf-space-5: 24px;--pf-space-6: 32px;--font-sans: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--pf-text-display: 600 28px/32px var(--font-sans);--pf-text-h2: 600 18px/24px var(--font-sans);--pf-text-h3: 600 14px/20px var(--font-sans);--pf-text-body: 400 14px/20px var(--font-sans);--pf-text-caption: 500 12px/16px var(--font-sans);--accent-soft: rgba(79, 110, 247, .22)}[data-theme=dark]{--sb-bg: #07090d;--sb-text: rgba(255,255,255,.78);--sb-text-active: #ffffff;--sb-active-bg: rgba(255,255,255,.1);--sb-hover-bg: rgba(255,255,255,.06);--sb-border: rgba(255,255,255,.1);--sb-section: rgba(255,255,255,.34);--bg: #0a0d12;--surface: #12161e;--surface-2: #161b25;--surface-3: #1c2230;--text-1: #e7e9ee;--text-2: #b4b9c3;--text-3: #6c7383;--border: #232a38;--border-2: #303a4c;--accent: #6b86ff;--accent-hover: #5a76ff;--accent-soft: rgba(107,134,255,.15);--ok: #4ade80;--ok-bg: rgba(74,222,128,.1);--ok-border: rgba(74,222,128,.3);--warn: #fbbf24;--warn-bg: rgba(251,191,36,.1);--warn-border: rgba(251,191,36,.3);--bad: #f87171;--bad-bg: rgba(248,113,113,.1);--bad-border: rgba(248,113,113,.3);--soft-success: rgba(74,222,128,.15);--soft-success-fg: #4ade80;--soft-warn: rgba(251,191,36,.15);--soft-warn-fg: #fbbf24;--soft-error: rgba(248,113,113,.15);--soft-error-fg: #f87171;--bg-soft: #161b25;--bg-strong: #1c2230;--shadow-sm: 0 1px 2px rgba(0,0,0,.4);--shadow: 0 1px 3px rgba(0,0,0,.5), 0 4px 12px rgba(0,0,0,.3);--shadow-lg: 0 4px 16px rgba(0,0,0,.55), 0 1px 3px rgba(0,0,0,.45)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}*:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}*:focus:not(:focus-visible){outline:none}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.input:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}.nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}html,body,#root{height:100%;font-family:Plus Jakarta Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5;color:var(--text-1);background:var(--bg);-webkit-font-smoothing:antialiased}.app-layout{display:grid;grid-template-columns:var(--sb-width) 1fr;min-height:100vh}.sidebar{background:var(--sb-bg);display:flex;flex-direction:column;height:100vh;position:sticky;top:0;overflow:hidden}.sidebar-logo{display:flex;align-items:center;gap:10px;padding:20px 16px 16px;border-bottom:1px solid var(--sb-border)}.sidebar-logo-mark{width:28px;height:28px;background:var(--accent);border-radius:7px;display:grid;place-items:center;font-size:14px;color:#fff;font-weight:700;flex-shrink:0}.sidebar-logo-name{color:#fff;font-size:15px;font-weight:700;letter-spacing:-.2px}.sidebar-logo-sub{color:var(--sb-text);font-size:11px;margin-top:1px}.sidebar-nav{flex:1;padding:12px 8px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.nav-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--sb-section);padding:12px 8px 4px}.nav-group-header{display:flex;align-items:center;width:100%}.nav-group-header--collapsible{cursor:pointer;user-select:none;justify-content:space-between;background:none;border:none;font-family:inherit;text-align:left;border-radius:var(--radius-sm)}.nav-group-header--collapsible:hover{background:var(--surface-1)}.nav-group-header--collapsible:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.nav-group-header__chevron{display:inline-block;transition:transform .2s ease;margin-left:auto;font-size:11px;opacity:.7;flex-shrink:0}.nav-group-header--collapsible[aria-expanded=false] .nav-group-header__chevron{transform:rotate(-90deg)}.nav-group-header--collapsible[aria-expanded=true] .nav-group-header__chevron{transform:rotate(0)}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--radius-sm);cursor:pointer;color:var(--sb-text);font-size:13.5px;font-weight:500;text-decoration:none;transition:background .1s,color .1s;border:none;background:transparent;font-family:inherit;width:100%;text-align:left}.nav-item:hover{background:var(--sb-hover-bg);color:var(--sb-text-active)}.nav-item.active{background:var(--sb-active-bg);color:var(--sb-text-active)}.nav-item-icon{width:18px;text-align:center;font-size:15px;flex-shrink:0;opacity:.8}.nav-badge{margin-left:auto;font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:#ffffff1f;color:#fff}.nav-badge.bad{background:var(--bad)}.sidebar-user{padding:12px;border-top:1px solid var(--sb-border);display:flex;align-items:center;gap:10px}.user-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);display:grid;place-items:center;font-size:13px;font-weight:700;color:#fff;flex-shrink:0}.user-name{color:#fff;font-size:13px;font-weight:500}.user-role{color:var(--sb-text);font-size:11px}.user-menu{position:relative;width:100%}.user-menu-card{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:var(--radius);cursor:pointer;transition:background .12s;border-top:1px solid var(--sb-border);outline:none}.user-menu-card:hover{background:var(--sb-hover-bg)}.user-menu-card:focus-visible{box-shadow:0 0 0 2px var(--accent)}.user-menu-dropdown{position:absolute;bottom:calc(100% + 4px);left:8px;right:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:4px;z-index:100;overflow:hidden;animation:fadeIn .1s ease}.user-menu-item{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;border-radius:var(--radius-sm);font-size:13.5px;color:var(--text-1);background:transparent;border:none;width:100%;text-align:left;font-family:inherit;transition:background .1s}.user-menu-item:hover{background:var(--surface-2)}.user-menu-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.user-menu-divider{height:1px;background:var(--border);margin:4px 8px}.main-area{display:flex;flex-direction:column;min-height:100vh;overflow:hidden}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:56px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;gap:16px;position:sticky;top:0;z-index:10}.topbar-title{font-size:15px;font-weight:600}.topbar-sub{font-size:12px;color:var(--text-3)}.topbar-actions{display:flex;align-items:center;gap:8px}.topbar-scope{display:flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12.5px;color:var(--text-2);cursor:pointer;background:var(--surface)}.page{padding:24px;flex:1;overflow-y:auto}.page-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:20px;gap:16px}.page-title{font-size:20px;font-weight:700;letter-spacing:-.3px}.page-subtitle{font-size:13px;color:var(--text-3);margin-top:2px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-header{padding:14px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}.card-title{font-size:13.5px;font-weight:600;color:var(--text-1)}.card-body{padding:16px}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow-sm)}.kpi-card.alert-card{border-color:var(--bad-border);background:var(--bad-bg)}.kpi-label{font-size:12px;font-weight:500;color:var(--text-3);text-transform:uppercase;letter-spacing:.5px}.kpi-value{font-size:32px;font-weight:700;letter-spacing:-1px;line-height:1.1;margin:6px 0 4px}.kpi-trend{font-size:12px;color:var(--text-3);display:flex;align-items:center;gap:4px}.kpi-trend.up{color:var(--ok)}.kpi-trend.down{color:var(--bad)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600}.badge-ok{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-border)}.badge-warn{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-border)}.badge-bad{background:var(--bad-bg);color:var(--bad);border:1px solid var(--bad-border)}.badge-neutral{background:var(--surface-3);color:var(--text-2);border:1px solid var(--border)}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.dot-ok{background:var(--ok)}.dot-warn{background:var(--warn)}.dot-bad{background:var(--bad);animation:pulse 2s infinite}.dot-muted{background:var(--text-3)}.alert-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:var(--radius);border:1px solid;margin-bottom:20px;font-size:13.5px}.alert-banner.bad{background:var(--bad-bg);border-color:var(--bad-border);color:var(--bad)}.alert-banner.warn{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn)}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-sm);font-family:inherit;font-size:13.5px;font-weight:600;cursor:pointer;transition:all .12s;border:1px solid transparent;white-space:nowrap;text-decoration:none}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--text-1);border-color:var(--border);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background:var(--surface-2);border-color:var(--border-2)}.btn-ghost{background:transparent;color:var(--text-2);border-color:transparent}.btn-ghost:hover{background:var(--surface-3);color:var(--text-1)}.btn-danger{background:var(--bad);color:#fff;border-color:var(--bad)}.btn-danger:hover{background:var(--bad-hover, #b91c1c)}.btn-sm{padding:4px 10px;font-size:12.5px}.btn-xs{padding:2px 8px;font-size:12px}.btn-link{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:26px;padding:4px 9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--accent);cursor:pointer;font:600 12.5px/16px var(--font-sans);text-decoration:none;vertical-align:baseline;box-shadow:var(--shadow-sm);transition:background .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.btn-link:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent);color:var(--accent-hover);box-shadow:none;text-decoration:none}.btn-link:disabled{color:var(--text-3);cursor:not-allowed;opacity:.65}.btn-link[style*=--bad]{background:var(--bad-bg);border-color:var(--bad-border)}.btn-link[style*=--bad]:hover:not(:disabled){background:var(--bad-bg);border-color:var(--bad)}.input{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:14px;color:var(--text-1);background:var(--surface);transition:border-color .12s,box-shadow .12s;outline:none}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4f6ef71f}.input.error{border-color:var(--bad)}.input.error:focus{box-shadow:0 0 0 3px #dc26261f}.field-label{font-size:13px;font-weight:500;color:var(--text-1);margin-bottom:5px;display:block}.field-error{font-size:12px;color:var(--bad);margin-top:4px}.table{width:100%;border-collapse:collapse}.table th{text-align:left;padding:10px 14px;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);border-bottom:1px solid var(--border);background:var(--surface-2)}.table td{padding:12px 14px;border-bottom:1px solid var(--border);font-size:13.5px;vertical-align:middle}.table tr:last-child td{border-bottom:none}.table tbody tr:hover{background:var(--surface-2)}.mono{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.toast-stack{position:fixed;bottom:20px;right:20px;z-index:1000;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:12px 16px;border-radius:var(--radius);background:var(--text-1);color:#fff;font-size:13.5px;box-shadow:var(--shadow-lg);min-width:280px;max-width:400px;pointer-events:all;animation:slideUp .2s ease}.toast-ok{background:var(--soft-success-fg, #15803d)}.toast-bad{background:var(--soft-error-fg, #b91c1c)}.toast-warn{background:var(--soft-warn-fg, #b45309)}.toast-info{background:var(--text-1, #0f172a)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;background:var(--surface-2);border:1px dashed var(--border);border-radius:var(--radius-lg);color:var(--text-3)}.empty-state-icon{font-size:40px;margin-bottom:12px;line-height:1}.empty-state-title{font-size:15px;font-weight:600;color:var(--text-2);margin-bottom:6px}.empty-state-subtitle{font-size:13px;color:var(--text-3);margin-bottom:12px;max-width:360px}.empty-state-action{margin-top:8px}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.text-muted{color:var(--text-3)}.text-sm{font-size:12.5px}.font-medium{font-weight:500}.font-semibold{font-weight:600}.w-full{width:100%}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}.divider{height:1px;background:var(--border)}.login-page{min-height:100vh;background:var(--bg);display:grid;grid-template-columns:1fr 1fr}.login-left{background:var(--sb-bg);display:flex;flex-direction:column;justify-content:space-between;padding:48px}.login-right{display:flex;align-items:center;justify-content:center;padding:48px}.login-form-wrap{width:100%;max-width:360px}.login-headline{color:#fff;font-size:36px;font-weight:700;line-height:1.2;letter-spacing:-.5px}.login-tagline{color:var(--sb-text);font-size:15px;margin-top:12px;line-height:1.6}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes slideUp{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}.spark{display:block}.map-stub{background:var(--bg-soft, #e8eef3);border-radius:var(--radius-sm);position:relative;overflow:hidden}.map-stub:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0,transparent 39px,rgba(0,0,0,.04) 39px,rgba(0,0,0,.04) 40px),repeating-linear-gradient(90deg,transparent 0,transparent 39px,rgba(0,0,0,.04) 39px,rgba(0,0,0,.04) 40px)}.segmented{display:inline-flex;background:var(--surface-3);border-radius:var(--radius-sm);padding:3px;gap:2px}.segmented button{border:none;background:transparent;padding:5px 12px;border-radius:5px;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;color:var(--text-2);transition:all .12s}.segmented button.active{background:var(--surface);color:var(--text-1);box-shadow:var(--shadow-sm)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:3px}.mobile-burger{display:none;border:none;background:transparent;font-size:22px;line-height:1;padding:4px 10px;cursor:pointer;color:var(--text-2)}.mobile-backdrop{display:none}@media (max-width: 768px){.app-layout{grid-template-columns:1fr}.sidebar{position:fixed;top:0;left:0;width:var(--sb-width);height:100vh;z-index:90;transform:translate(-100%);transition:transform .22s cubic-bezier(.4,0,.2,1);box-shadow:4px 0 24px #0000002e}body[data-passenger-nav=open] .sidebar{transform:translate(0)}body[data-passenger-nav=open] .mobile-backdrop{display:block;position:fixed;inset:0;background:#0006;z-index:80}.mobile-burger{display:inline-flex;align-items:center}.topbar{padding:0 12px;gap:8px}.topbar-title{font-size:14px}.topbar-sub,.topbar-scope{display:none}.topbar-actions>button:first-child{min-width:auto}.topbar-actions>button:first-child>span:nth-child(2),.topbar-actions>button:first-child>kbd{display:none}.page{padding:16px 12px}.page-header{flex-direction:column;align-items:flex-start;gap:8px}.kpi-grid{grid-template-columns:repeat(2,1fr);gap:10px}.kpi-card{padding:12px 14px}.kpi-value{font-size:24px}.grid-2,.grid-3{grid-template-columns:1fr;gap:12px}.card{overflow-x:auto}.table{min-width:640px}.alert-banner{flex-direction:column;align-items:stretch;gap:8px}}@media (max-width: 480px){.kpi-grid{grid-template-columns:1fr}}.error-boundary-fallback{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(var(--bg, 245,246,250),.96);z-index:200}.error-boundary-fallback__card{background:var(--surface, #ffffff);border:1px solid var(--border, #e2e8f0);border-radius:var(--radius-lg, 12px);box-shadow:0 8px 32px #0000001f;width:min(520px,94vw);padding:28px}.error-boundary-fallback__title{font-size:18px;font-weight:700;color:var(--text-1, #0f172a);margin-bottom:6px}.error-boundary-fallback__sub{font-size:13px;color:var(--text-2, #475569);margin-bottom:18px}.error-boundary-fallback__actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.error-boundary-fallback__stack{font-size:11px;color:var(--text-3, #94a3b8)}.error-boundary-fallback__stack pre{white-space:pre-wrap;word-break:break-all;background:var(--surface-3, #f0f2f7);border-radius:var(--radius-sm, 6px);padding:10px;max-height:200px;overflow:auto;margin:0;font-size:11px}.wizard-progress{display:flex;align-items:center;gap:0;padding:14px 20px 10px;border-bottom:1px solid var(--border);overflow-x:auto;-webkit-overflow-scrolling:touch;flex-shrink:0}.wizard-step{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:var(--radius-sm);font-size:12px;font-weight:500;white-space:nowrap;cursor:default;transition:background .12s,color .12s;color:var(--text-3);background:transparent;border:none;outline:none}.wizard-step-num{width:20px;height:20px;border-radius:50%;background:var(--border-2);color:var(--text-3);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;transition:background .12s,color .12s}.wizard-step.active{color:var(--accent);cursor:default}.wizard-step.active .wizard-step-num{background:var(--accent);color:var(--btn-text, #fff)}.wizard-step.completed{color:var(--text-2);cursor:pointer}.wizard-step.completed:hover{background:var(--surface-2);color:var(--accent)}.wizard-step.completed .wizard-step-num{background:var(--ok);color:var(--btn-text, #fff)}.wizard-step.pending{color:var(--text-3);cursor:not-allowed;opacity:.55}.wizard-step-sep{width:18px;height:1px;background:var(--border-2);flex-shrink:0}.wizard-body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px}.color-palette{display:flex;gap:8px;flex-wrap:wrap}.color-swatch{width:28px;height:28px;border-radius:6px;cursor:pointer;border:2px solid transparent;transition:border-color .1s,transform .1s}.color-swatch:hover{transform:scale(1.12)}.color-swatch.selected{border-color:var(--text-1);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--text-1)}.stops-pane-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 620px){.stops-pane-row{grid-template-columns:1fr}}.vehicle-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:background .08s;font-size:13px}.vehicle-row:hover{background:var(--surface-2)}.vehicle-row input[type=checkbox]{flex-shrink:0}.checklist-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--radius-sm);font-size:13px}.checklist-item.ok{background:var(--ok-bg);color:var(--ok)}.checklist-item.warn{background:var(--warn-bg);color:var(--warn)}.routes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.route-card{text-align:left;cursor:pointer;padding:14px;border-radius:var(--radius);font-family:inherit;transition:transform .12s,box-shadow .12s;display:flex;flex-direction:column;gap:8px;width:100%}.route-card:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.route-card .reason-chips{display:flex;flex-wrap:wrap;gap:4px}.route-card .reason-chips .chip{font-size:11px;padding:2px 7px;border-radius:4px;background:#0000000d;color:var(--text-1);border:1px solid var(--border)}[data-theme=dark] .route-card .reason-chips .chip{background:#ffffff0f}.route-state-filter{display:flex;gap:6px;flex-wrap:wrap}.route-state-filter button{padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);font-size:12.5px;font-family:inherit;cursor:pointer;transition:background .1s,color .1s,border-color .1s}.route-state-filter button:hover{background:var(--surface-3)}.route-state-filter button.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.drawer-overlay{position:fixed;inset:0;background:#0006;z-index:300;display:flex;justify-content:flex-end;animation:fadeIn .15s ease}.drawer{background:var(--surface);width:min(480px,100vw);height:100%;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:slideInRight .2s ease;overflow:hidden}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.drawer-body{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:0}@keyframes slideInRight{0%{transform:translate(100%);opacity:.5}to{transform:translate(0);opacity:1}}@media (max-width: 640px){.routes-grid{grid-template-columns:1fr}.drawer{width:100vw}}.stop-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--surface-3);border:1px solid var(--border);border-radius:20px;font-size:12px;color:var(--text-2);white-space:nowrap}.coord-display{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:var(--surface-2);border-radius:var(--radius-sm);font-size:13px;font-family:monospace;margin-bottom:6px}.coord-display button{background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px 8px;font-size:11.5px;cursor:pointer;color:var(--text-2);font-family:inherit}.coord-display button:hover{background:var(--surface-3)}.radius-presets{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:8px;padding:6px 10px;background:var(--surface-2);border-radius:var(--radius-sm);font-size:12.5px}.radius-presets button{padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-2);font-size:12px;font-family:inherit;cursor:pointer}.radius-presets button:hover{background:var(--surface-3)}.radius-presets button.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.maplibregl-canvas:focus{outline:2px solid var(--accent);outline-offset:-2px}.route-row-map{width:120px;height:80px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border);background:var(--surface-2)}.route-row-map-empty{display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:16px}.route-row-map .maplibregl-canvas-container,.route-row-map .maplibregl-canvas{cursor:default!important}.route-card-thumb-col{flex-shrink:0}@media (max-width: 767px){.route-card-thumb-col{display:none}}.routes-page{animation:fadeIn .2s ease}.routes-topbar-actions{display:flex;gap:var(--pf-space-2);flex-wrap:wrap}.routes-toolbar{display:flex;align-items:center;gap:var(--pf-space-3);margin-bottom:var(--pf-space-4);flex-wrap:wrap}.routes-search{position:relative;flex:1 1 260px;max-width:320px}.routes-search__icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-3);font-size:14px;pointer-events:none}.routes-search .input{padding-left:32px}.routes-filter-tabs{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}.routes-list{display:flex;flex-direction:column;gap:var(--pf-space-3)}.routes-list-card{padding:var(--pf-space-4) 18px;overflow:visible;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}.routes-list-card:hover,.routes-list-card:focus-within{border-color:var(--border-2);box-shadow:var(--shadow-sm)}.routes-list-card--problem{background:var(--bad-bg);border-color:var(--bad-border)}.routes-card-row{display:flex;align-items:center;gap:var(--pf-space-4)}.routes-code-tile{width:52px;height:52px;border-radius:10px;background:var(--sb-bg);color:#fff;display:grid;place-items:center;flex-shrink:0;padding:0 var(--pf-space-2);text-align:center;font:700 12px/16px var(--font-sans)}.routes-list-card--problem .routes-code-tile{background:var(--bad)}.routes-card-main{flex:1 1 auto;min-width:0}.routes-card-head{display:flex;align-items:center;gap:var(--pf-space-2);margin-bottom:var(--pf-space-1);min-width:0;flex-wrap:wrap}.routes-card-title{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 15px/20px var(--font-sans);color:var(--text-1)}.routes-card-meta{display:flex;gap:var(--pf-space-4);flex-wrap:wrap;color:var(--text-3);font:500 12.5px/18px var(--font-sans)}.routes-card-actions{display:flex;gap:var(--pf-space-2);flex-wrap:wrap;justify-content:flex-end;flex:0 0 auto}.routes-btn-warn{color:var(--warn);border-color:var(--warn-border)}.routes-btn-danger{color:var(--bad)}.routes-pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--pf-space-2);flex-wrap:wrap;padding:var(--pf-space-3) var(--pf-space-1);margin-top:var(--pf-space-2);border-top:1px solid var(--border)}.routes-pagination__total{color:var(--text-3);font:var(--pf-text-caption)}.routes-pagination__actions{display:flex;align-items:center;gap:var(--pf-space-2)}.routes-pagination__page{color:var(--text-2);font:var(--pf-text-caption)}.routes-state{padding:60px var(--pf-space-4);text-align:center;color:var(--text-3)}.routes-state__spinner{display:inline-block;margin-right:var(--pf-space-2);animation:spin 1s linear infinite}.routes-state__icon{margin-bottom:var(--pf-space-3);font-size:32px;line-height:1}.routes-state__title{margin-bottom:var(--pf-space-2);color:var(--text-2);font:600 15px/20px var(--font-sans)}.routes-state__actions{display:flex;justify-content:center;gap:var(--pf-space-2);margin-top:var(--pf-space-3);flex-wrap:wrap}.routes-form-stack{display:flex;flex-direction:column;gap:var(--pf-space-4)}.routes-textarea{resize:vertical}.routes-help-text{color:var(--text-3);font:var(--pf-text-caption)}.routes-row-marker{width:8px;height:8px;border-radius:50%;border:2px solid var(--surface);box-shadow:0 1px 2px #0f172a4d}.routes-row-marker--start{background:var(--ok)}.routes-row-marker--finish{background:var(--bad)}.routes-builder-overlay,.routes-versions-overlay{position:fixed;inset:0;z-index:240;background:#0f172a47;animation:fadeIn .12s ease}.routes-builder-panel,.routes-versions-panel{position:fixed;top:0;right:0;z-index:241;display:flex;flex-direction:column;height:100vh;height:100dvh;background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-lg)}.routes-builder-panel{width:min(760px,96vw)}.routes-versions-panel{width:min(440px,92vw)}.routes-builder-head,.routes-versions-head{display:flex;align-items:center;justify-content:space-between;gap:var(--pf-space-3);flex-shrink:0;padding:14px 20px 10px;border-bottom:1px solid var(--border)}.routes-versions-head{padding:var(--pf-space-4) 20px}.routes-builder-title,.routes-versions-title,.routes-publish-modal__title{color:var(--text-1);font:700 15px/20px var(--font-sans)}.routes-publish-modal__title{font-size:16px}.routes-builder-subtitle,.routes-versions-subtitle,.routes-publish-modal__subtitle{margin-top:2px;color:var(--text-3);font:var(--pf-text-caption)}.routes-publish-modal__subtitle{margin-top:var(--pf-space-1);font-size:12.5px}.routes-builder-close{width:32px;height:32px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-3);cursor:pointer;font:400 22px/1 var(--font-sans)}.routes-builder-close:hover,.routes-builder-close:focus-visible{background:var(--surface-2);color:var(--text-1)}.routes-builder-footer,.routes-publish-modal__footer{display:flex;align-items:center;gap:var(--pf-space-2);flex-shrink:0;padding:14px 20px;border-top:1px solid var(--border);background:var(--surface-2)}.routes-builder-footer{justify-content:space-between}.routes-builder-footer__back,.routes-builder-footer__actions,.routes-publish-modal__footer{display:flex;align-items:center;gap:var(--pf-space-2);flex-wrap:wrap}.routes-publish-modal__footer{justify-content:flex-end}.routes-direction-card{padding:var(--pf-space-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius)}.routes-direction-card__head{display:flex;align-items:center;justify-content:space-between;gap:var(--pf-space-2);margin-bottom:10px}.routes-direction-card__title{color:var(--text-2);text-transform:uppercase;font:600 13px/18px var(--font-sans)}.routes-direction-card__empty{padding:var(--pf-space-5);color:var(--text-3);text-align:center;font:var(--pf-text-caption)}.routes-direction-card__list{display:flex;flex-direction:column;gap:var(--pf-space-1)}.routes-direction-card__row{display:flex;align-items:center;gap:6px;min-height:40px;padding:6px 8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:grab;font:500 13px/18px var(--font-sans);touch-action:manipulation;transition:background .08s ease,border-color .08s ease,opacity .08s ease,box-shadow .08s ease}.routes-direction-card__row:hover,.routes-direction-card__row:focus-within{border-color:var(--border-2);box-shadow:var(--shadow-sm)}.routes-direction-card__row--over{background:var(--accent-soft);border-color:var(--accent)}.routes-direction-card__row--dragging{opacity:.5}.routes-direction-card__handle{display:grid;place-items:center;width:30px;height:30px;color:var(--text-3);cursor:grab;user-select:none;touch-action:none;font-size:14px}.routes-direction-card__index{width:22px;color:var(--text-3);font:600 11px/16px var(--font-mono, monospace)}.routes-direction-card__main{flex:1 1 auto;min-width:0}.routes-direction-card__name{overflow:hidden;color:var(--text-1);text-overflow:ellipsis;white-space:nowrap}.routes-direction-card__code{color:var(--text-3);font-size:10px;line-height:14px}.routes-direction-card__btn{min-width:30px;min-height:30px;padding:3px 8px;justify-content:center}.routes-direction-card__btn--danger{color:var(--bad)}.routes-publish-modal__overlay{position:fixed;inset:0;z-index:260;display:flex;align-items:flex-start;justify-content:center;padding:10vh var(--pf-space-4) var(--pf-space-4);background:#0f172a6b;animation:fadeIn .12s ease}.routes-publish-modal{z-index:261;display:flex;flex-direction:column;width:min(540px,92vw);max-height:80vh;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.routes-publish-modal__head{padding:var(--pf-space-4) 20px;border-bottom:1px solid var(--border)}.routes-publish-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:var(--pf-space-4) 20px}.routes-publish-modal__loading{color:var(--text-3);text-align:center}.routes-publish-modal__first,.routes-publish-modal__stack{color:var(--text-2);font:500 13.5px/20px var(--font-sans)}.routes-publish-modal__stack{display:flex;flex-direction:column;gap:14px}.routes-publish-modal__muted{padding:var(--pf-space-3);background:var(--surface-2);border-radius:var(--radius-sm);color:var(--text-3)}.routes-publish-modal__section-title{margin-bottom:var(--pf-space-1);color:var(--text-1);font-weight:600}.routes-publish-modal__list{margin:0;padding-left:20px;color:var(--text-2);font-size:12.5px}.routes-publish-modal__stops{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px}.routes-versions-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:var(--pf-space-2) 0}.routes-versions-state{padding:40px 20px;color:var(--text-3);text-align:center;font:var(--pf-text-caption)}.routes-versions-row{display:flex;align-items:center;gap:10px;padding:var(--pf-space-3) 20px}.routes-versions-row--bordered{border-bottom:1px solid var(--border)}.routes-versions-row__version{min-width:40px;color:var(--text-2);font:700 13px/18px var(--font-mono, monospace)}.routes-versions-row__version--current{color:var(--accent)}.routes-versions-row__body{flex:1 1 auto;min-width:0}.routes-versions-row__note{color:var(--text-2);font-size:12.5px;line-height:18px}.routes-versions-row__meta{overflow:hidden;color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px}.routes-versions-footer{flex-shrink:0;padding:14px 20px;border-top:1px solid var(--border);background:var(--surface-2)}.routes-versions-close{justify-content:center}@media (max-width: 767px){.routes-toolbar,.routes-search,.routes-filter-tabs,.routes-topbar-actions{width:100%;max-width:none}.routes-card-row{align-items:flex-start;flex-wrap:wrap;gap:var(--pf-space-3)}.routes-card-main{flex-basis:calc(100% - 66px)}.routes-card-actions{width:100%;justify-content:flex-start}.routes-list-card{padding:var(--pf-space-3);overflow:visible}.routes-pagination,.routes-pagination__actions{width:100%}.routes-pagination__actions{justify-content:space-between}.routes-builder-panel,.routes-versions-panel{width:100vw;border-left:0}.routes-builder-head,.routes-versions-head,.routes-builder-footer,.routes-publish-modal__head,.routes-publish-modal__body,.routes-publish-modal__footer,.routes-versions-footer{padding-right:var(--pf-space-3);padding-left:var(--pf-space-3)}.routes-builder-footer,.routes-builder-footer__actions,.routes-publish-modal__footer{width:100%}.routes-builder-footer__actions,.routes-publish-modal__footer{justify-content:flex-start}.routes-publish-modal__overlay{align-items:flex-end;padding:var(--pf-space-3)}.routes-publish-modal{width:100%;max-height:calc(100vh - var(--pf-space-6));max-height:calc(100dvh - var(--pf-space-6))}.routes-direction-card__row{gap:var(--pf-space-1)}.routes-direction-card__btn{min-width:34px}}@media (prefers-reduced-motion: reduce){.routes-page,.routes-state__spinner,.routes-builder-overlay,.routes-versions-overlay,.routes-publish-modal__overlay{animation:none}}.history-filter-bar{padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px}@media (max-width: 768px){.history-filter-bar>div{flex-direction:column}.history-filter-bar>div>div{width:100%}}.notif-filters{padding:10px 12px;background:var(--surface-2);border-bottom:1px solid var(--border)}.notif-filters .chip{padding:4px 10px;font-size:11.5px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--text-2);cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:4px}.notif-filters .chip.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.notif-group-title{padding:8px 12px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-3);background:var(--surface-2);position:sticky;top:0;z-index:1}.notif-count{color:var(--text-3);font-weight:400}.onb-illu{margin:16px 0;min-height:100px;width:100%}.onb-box{padding:8px 16px;background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-size:13px;font-weight:600}.onb-arrow{color:var(--text-3);font-size:18px}.onb-step-circle{width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0}.onb-plate{padding:6px 12px;background:var(--surface-2);border:1.5px solid var(--text-2);border-radius:4px;font-family:monospace;font-weight:700;font-size:13px}.onb-dots{display:flex;justify-content:center;gap:6px;margin:0 0 16px}.onb-dot{width:8px;height:8px;border-radius:50%;background:var(--text-3);border:none;cursor:pointer;padding:0;transition:all .12s}.onb-dot.active{background:var(--accent);transform:scale(1.4)}.onb-dot.completed{background:var(--ok)}.view-toggle{display:flex;gap:4px}.view-toggle .chip{padding:6px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-2);cursor:pointer;font-family:inherit;font-size:12.5px;display:inline-flex;align-items:center;gap:4px;transition:background .12s,color .12s,border-color .12s}.view-toggle .chip.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.view-toggle .chip:hover:not(.active){background:var(--surface-2);border-color:var(--text-3)}@keyframes skel-pulse{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.loading-skeleton{background:linear-gradient(90deg,var(--bg-soft, #e8edf5) 0%,var(--bg-strong, #f0f4fa) 50%,var(--bg-soft, #e8edf5) 100%);background-size:400px 100%;animation:skel-pulse 1.2s linear infinite;border-radius:var(--radius-sm, 6px);margin-bottom:8px}.skel-wrap{padding:16px;display:flex;flex-direction:column}.badge-error{background:var(--bad-bg);color:var(--bad);border:1px solid var(--bad-border)}.badge-unknown{background:var(--surface-3);color:var(--text-3);border:1px solid var(--border)}button:focus-visible,a:focus-visible,[role=button]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm, 4px)}.pf-export-btn{white-space:nowrap;flex-shrink:0}.pf-tab-header-row{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:4px}.pf-tabs{display:flex;flex-wrap:wrap;gap:4px}@media (max-width: 768px){.pf-charts-grid{grid-template-columns:1fr}}.pf-picker-row{margin-bottom:12px}.pf-picker-select{padding:6px 10px;border:1px solid var(--border, #d0d7e2);border-radius:var(--radius-sm, 6px);background:var(--surface-2, #fff);color:var(--text-1, #1a1a2e);font-size:14px;min-width:220px}.pf-picker-hint{color:var(--text-3, #8a9ab5);font-size:13px;padding:24px 0;text-align:center}.pf-charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-top:16px}.pf-small-chart{background:var(--surface-2, #fff);border:1px solid var(--border, #d0d7e2);border-radius:var(--radius, 8px);padding:12px;overflow:hidden}.pf-small-chart__title{font-size:12px;font-weight:600;color:var(--text-2, #4a5568);margin-bottom:8px;text-transform:uppercase;letter-spacing:.04em}.pf-snapshot{display:flex;flex-direction:column;gap:16px}.pf-snapshot-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}@media (max-width: 700px){.pf-snapshot-grid{grid-template-columns:1fr}}.pf-snapshot-header{font-size:13px;font-weight:600;color:var(--text-2, #4a5568);margin-bottom:4px}.pf-preset-shelf{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.pf-custom-range{margin-bottom:12px;align-items:flex-end;gap:8px}.screen-passenger-flow{display:flex;flex-direction:column;flex:1;min-height:0;background:var(--bg)}.pf-page{display:flex;flex-direction:column;gap:var(--pf-space-4)}.pf-controls-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.pf-tab-btn{display:inline-flex;align-items:center;padding:5px 12px;border-radius:var(--radius-sm);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text-2);transition:background .12s,color .12s,border-color .12s;white-space:nowrap}.pf-tab-btn:hover{background:var(--surface-3);border-color:var(--border-2);color:var(--text-1)}.pf-tab-btn--active{background:var(--accent);border-color:var(--accent);color:#fff}.pf-tab-btn--active:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.pf-tab-content{display:flex;flex-direction:column;gap:var(--pf-space-4)}.pf-kpi-strip{display:flex;flex-wrap:wrap;gap:12px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.pf-kpi-item{display:flex;flex-direction:column;gap:2px;padding:2px 14px 2px 0;border-right:2px solid var(--border)}.pf-kpi-item:last-child{border-right:none;padding-right:0}.pf-kpi-value{font-size:22px;font-weight:700;letter-spacing:-.5px;line-height:1.1;color:var(--text-1);font-variant-numeric:tabular-nums}.pf-kpi-label{font-size:11px;font-weight:500;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em}.pf-error{padding:14px 18px;background:var(--soft-error);color:var(--soft-error-fg);border-radius:var(--radius);border:1px solid var(--bad-border);font-size:13.5px}.pf-chart-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 2px #0000000a;padding:var(--pf-space-4);overflow:hidden}.pf-chart-wrap--donut{display:flex;justify-content:center;align-items:center;padding:24px 16px;max-width:640px}.pf-matched-toggle{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-2);cursor:pointer;user-select:none;white-space:nowrap}.pf-matched-toggle input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px;cursor:pointer}.period-picker{display:flex;flex-direction:column;gap:6px}.period-picker__row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}.period-picker__custom-label{display:inline-flex;flex-direction:column;gap:3px;font-size:12px;font-weight:500;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em}.period-picker__date-input{padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-1);font-family:inherit;font-size:13.5px;outline:none;transition:border-color .12s}.period-picker__date-input:focus{border-color:var(--accent)}.period-picker__arrow{font-size:16px;color:var(--text-3);align-self:flex-end;padding-bottom:5px}.period-picker__quick-label{display:inline-flex;flex-direction:column;gap:3px;font-size:12px;font-weight:500;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;margin-left:6px}.period-picker__quick-select{padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-1);font-family:inherit;font-size:13px;cursor:pointer;outline:none;transition:border-color .12s;min-width:130px}.period-picker__quick-select:focus{border-color:var(--accent)}.period-picker__subtitle{font-size:12px;color:var(--text-3);padding-left:2px}.pf-filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px;padding:12px 0 8px;border-bottom:1px solid var(--border);margin-bottom:12px}.pf-filter-bar--compact{gap:12px}.pf-filter-label{display:inline-flex;flex-direction:column;gap:3px;font-size:12px;font-weight:500;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em}.pf-filter-select{padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-1);font-family:inherit;font-size:13px;cursor:pointer;outline:none;transition:border-color .12s;min-width:150px}.pf-filter-select:focus{border-color:var(--accent)}.pf-live-indicator{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:color-mix(in srgb,var(--accent, #3b82f6) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent, #3b82f6) 30%,transparent);border-radius:999px;font-size:12px;font-weight:500;color:var(--accent, #3b82f6);white-space:nowrap;margin-left:auto;user-select:none}.pf-live-indicator--spinning{animation:pf-live-spin 1.2s linear infinite}@keyframes pf-live-spin{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.pf-pill-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 0 8px;min-height:32px}.pf-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 8px 3px 10px;background:var(--surface-2, #f0f0f0);border:1px solid var(--border);border-radius:999px;font-size:12px;font-weight:500;color:var(--text-2);white-space:nowrap;line-height:1.4}.pf-pill--default{background:var(--surface, #f8f8f8);color:var(--text-3);border-style:dashed}.pf-pill__remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:14px;line-height:1;color:var(--text-3);cursor:pointer;transition:background .12s,color .12s;user-select:none}.pf-pill__remove:hover{background:var(--danger-light, #fde8e8);color:var(--danger, #d93025)}.pf-pill-reset-btn{margin-left:auto;padding:3px 10px;font-size:12px;font-weight:500;color:var(--accent);background:transparent;border:1px solid var(--accent);border-radius:var(--radius-sm);cursor:pointer;transition:background .12s,color .12s;white-space:nowrap}.pf-pill-reset-btn:hover{background:var(--accent);color:#fff}.chart-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80px;font-size:13px;font-style:italic;color:var(--text-3);padding:24px;gap:10px}.pf-bar-chart-rect{transition:opacity .2s ease,fill .2s ease}.pf-donut-segment{transition:stroke-dashoffset .2s ease,stroke-width .15s ease}.pf-heatmap-cell{transition:fill .2s ease,stroke-width .15s cubic-bezier(.2,.8,.2,1),filter .15s cubic-bezier(.2,.8,.2,1);stroke:transparent;stroke-width:0}.pf-heatmap-cell:hover,.pf-heatmap-cell:focus-visible{stroke:var(--accent, #409cff);stroke-width:2;filter:brightness(1.12) drop-shadow(0 0 4px rgba(64,156,255,.4));outline:none}.pf-sparkline-path{transition:opacity .2s ease}@media (max-width: 600px){.pf-controls-row{flex-direction:column;align-items:flex-start}.pf-kpi-strip{gap:8px}.pf-kpi-item{padding-right:10px}.pf-kpi-value{font-size:18px}.period-picker__row{flex-direction:column;align-items:flex-start}.period-picker__quick-label{margin-left:0}.pf-filter-bar{flex-direction:column;align-items:flex-start;gap:10px}.pf-filter-select,.period-picker__quick-select,.period-picker__date-input{width:100%;box-sizing:border-box}}.pf-stop-drawer-backdrop{position:fixed;inset:0;background:#00000059;z-index:1100;animation:pf-backdrop-in .25s cubic-bezier(.2,.8,.2,1) both;transition:opacity .25s cubic-bezier(.2,.8,.2,1)}@keyframes pf-backdrop-in{0%{opacity:0}to{opacity:1}}.pf-stop-drawer{position:fixed;top:0;right:0;bottom:0;width:480px;max-width:100vw;background:var(--surface);border-left:1px solid var(--border);box-shadow:-4px 0 24px #0000001f;z-index:1101;display:flex;flex-direction:column;animation:pf-drawer-slide-in .25s cubic-bezier(.2,.8,.2,1) both;transition:transform .25s cubic-bezier(.2,.8,.2,1);overflow:hidden}@keyframes pf-drawer-slide-in{0%{transform:translate(100%);opacity:.6}to{transform:translate(0);opacity:1}}.pf-stop-drawer__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.pf-stop-drawer__title{font-size:15px;font-weight:600;color:var(--text-1);line-height:1.3}.pf-stop-drawer__subtitle{font-size:12px;color:var(--text-3);margin-top:2px}.pf-stop-drawer__body{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:20px}.pf-stop-drawer__section-title{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin-bottom:10px}.pf-stop-drawer__footer{flex-shrink:0;padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end}.pf-stop-events-table{width:100%;border-collapse:collapse;font-size:12px;color:var(--text-2)}.pf-stop-events-table th{text-align:left;font-weight:600;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:4px 8px 6px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface, #fff);z-index:1}.pf-stop-events-table td{padding:5px 8px;border-bottom:1px solid var(--surface-3);vertical-align:middle;white-space:nowrap;font-variant-numeric:tabular-nums}.pf-stop-events-table tr:last-child td{border-bottom:none}.pf-stop-events-table tr:hover td{background:var(--surface-2)}.pf-stop-events-table .pf-events-id{font-size:10px;color:var(--text-3);font-family:monospace}.pf-stop-events-table .pf-events-badge{display:inline-block;padding:1px 7px;border-radius:10px;font-size:10px;font-weight:600;text-transform:uppercase}.pf-stop-events-table .pf-events-badge--matched{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-border)}.pf-stop-events-table .pf-events-badge--unmatched{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-border)}.pf-stop-events-table .pf-events-badge--unknown{background:var(--surface-3);color:var(--text-3);border:1px solid var(--border)}.pf-stop-drawer__loading,.pf-stop-drawer__error{display:flex;align-items:center;justify-content:center;min-height:120px;font-size:13px;color:var(--text-3);font-style:italic}.pf-stop-drawer__error{color:var(--bad);font-style:normal}@media (max-width: 600px){.pf-stop-drawer{width:100vw;border-left:none}}.pf-compare-toggle{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:20px;border:1.5px solid var(--border, #d1d5db);background:var(--surface-2, #f9fafb);color:var(--text-2, #374151);font-size:13px;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,color .15s;white-space:nowrap;user-select:none}.pf-compare-toggle:hover{background:var(--surface-3, #f3f4f6);border-color:var(--accent, #6366f1)}.pf-compare-toggle--active{background:var(--accent, #6366f1);border-color:var(--accent, #6366f1);color:#fff}.pf-compare-toggle--active:hover{background:var(--accent-dark, #4f46e5)}.pf-compare-toggle__icon{font-size:14px;line-height:1}.pf-compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}@media (max-width: 768px){.pf-compare-grid{grid-template-columns:1fr}}.pf-compare-cell{border:1px solid var(--border, #e5e7eb);border-radius:8px;padding:12px;background:var(--surface-1, #fff)}.pf-compare-label--current,.pf-compare-label--previous{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;margin-bottom:8px}.pf-compare-label--current{background:var(--accent, #6366f1);color:#fff}.pf-compare-label--previous{background:var(--surface-3, #e5e7eb);color:var(--text-2, #6b7280)}.pf-kpi-delta{display:inline-flex;align-items:center;font:var(--pf-text-caption);font-variant-numeric:tabular-nums;padding:1px 5px;border-radius:4px;margin-left:4px;vertical-align:middle}.pf-kpi-delta--up{background:#dcfce7;color:#16a34a}.pf-kpi-delta--down{background:#fee2e2;color:#dc2626}.pf-kpi-delta--flat{background:var(--surface-3, #f3f4f6);color:var(--text-3, #9ca3af)}.pf-kpi-value{display:flex;align-items:center;flex-wrap:wrap;gap:2px}.pf-mobile-menu{position:relative;width:100%}.pf-mobile-menu__trigger{display:flex;align-items:center;gap:8px;width:100%;padding:8px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-1);font-family:inherit;font-size:14px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s;text-align:left}.pf-mobile-menu__trigger:hover{background:var(--surface-3);border-color:var(--border-2)}.pf-mobile-menu__trigger--open{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.pf-mobile-menu__icon{font-size:16px;line-height:1;flex-shrink:0}.pf-mobile-menu__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pf-mobile-menu__chevron{font-size:10px;color:var(--text-3);flex-shrink:0}.pf-mobile-menu__list{position:absolute;top:calc(100% + 4px);left:0;right:0;margin:0;padding:4px;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:500;animation:pf-menu-slide-in .14s ease;max-height:60vh;overflow-y:auto}@keyframes pf-menu-slide-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.pf-mobile-menu__item{padding:10px 14px;border-radius:var(--radius-sm);font-size:14px;color:var(--text-2);cursor:pointer;transition:background .1s,color .1s}.pf-mobile-menu__item:hover{background:var(--surface-3);color:var(--text-1)}.pf-mobile-menu__item--active{background:var(--accent-soft);color:var(--accent);font-weight:600}@media (max-width: 768px){.pf-kpi-strip{flex-direction:column;gap:8px;padding:12px 14px}.pf-kpi-item{border-right:none;border-bottom:1px solid var(--border);padding-right:0;padding-bottom:8px}.pf-kpi-item:last-child{border-bottom:none;padding-bottom:0}}.pf-overview-grid{display:flex;flex-direction:column;gap:var(--pf-space-5);padding-top:var(--pf-space-2)}.pf-overview-row{display:flex;flex-direction:row;gap:var(--pf-space-4);flex-wrap:wrap}.pf-kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--pf-space-4)}.pf-overview-kpi-card{flex:1 1 160px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 2px #0000000a;padding:var(--pf-space-4);display:flex;flex-direction:column;gap:var(--pf-space-2);min-width:140px}.pf-overview-kpi-value{font:var(--pf-text-display);font-variant-numeric:tabular-nums;color:var(--text-1)}.pf-overview-kpi-label{font:var(--pf-text-caption);color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.pf-overview-kpi-spark{width:100%;max-width:100px;height:30px;margin-top:4px;color:var(--accent);flex-shrink:0}.pf-overview-kpi-card--dual{justify-content:flex-start}.pf-kpi-dual-values{display:flex;flex-direction:column;gap:var(--pf-space-1, 4px);margin-top:var(--pf-space-1, 4px)}.pf-kpi-dual-row{display:flex;align-items:center;gap:var(--pf-space-2, 8px)}.pf-kpi-dual-arrow{font-size:1rem;line-height:1;width:1em;flex-shrink:0}.pf-kpi-dual-arrow--up{color:var(--success, #22c55e)}.pf-kpi-dual-arrow--down{color:var(--text-3)}.pf-kpi-dual-num{font:var(--pf-text-display);font-variant-numeric:tabular-nums;color:var(--text-1)}.pf-kpi-dual-mini-spark{flex-shrink:0;width:48px;height:18px;opacity:.75}.pf-kpi-item--dual{flex-direction:column;justify-content:flex-start;padding-top:var(--pf-space-2, 8px)}.pf-kpi-label--top{font:var(--pf-text-caption);color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--pf-space-1, 4px)}.pf-heatmap-container{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 2px #0000000a;padding:var(--pf-space-4)}.pf-heatmap-title{font-size:.95rem;font-weight:600;color:var(--text);margin-bottom:2px}.pf-heatmap-subtitle{font-size:.8rem;color:var(--text-3);margin-bottom:12px}.pf-heatmap-svg-wrap{width:100%;overflow-x:auto}.pf-heatmap-tooltip{position:absolute;top:6px;right:6px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:12px;color:var(--text);box-shadow:0 2px 8px #00000026;white-space:nowrap;pointer-events:none;z-index:10}.pf-top5-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 2px #0000000a;padding:var(--pf-space-4);min-width:0}.pf-top5-title{font-size:.78rem;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.07em;margin-bottom:var(--pf-space-3, 12px)}.pf-top5-list{display:flex;flex-direction:column}.pf-top5-row{display:grid;grid-template-columns:28px 1fr auto;grid-template-rows:auto auto;align-items:center;column-gap:var(--pf-space-2, 8px);padding:var(--pf-space-2, 8px) 0;cursor:default;border-radius:6px;transition:background .15s cubic-bezier(.2,.8,.2,1)}.pf-top5-row:not(:last-child){border-bottom:1px solid var(--border-subtle, var(--border))}.pf-top5-row--clickable{cursor:pointer}.pf-top5-row--clickable:hover,.pf-top5-row:hover{background:var(--surface-1, var(--surface-2))}.pf-top5-rank{grid-row:1;grid-column:1;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);flex-shrink:0;justify-self:center}.pf-top5-rank--1{background:linear-gradient(135deg,#f4d03f,#f1c40f);color:#5a3e00;border-color:#d4a017}.pf-top5-rank--2{background:linear-gradient(135deg,#d8d8d8,#b8b8b8);color:#2a2a2a;border-color:#999}.pf-top5-rank--3{background:linear-gradient(135deg,#d4a574,#b08049);color:#3a2010;border-color:#8a6033}.pf-top5-name{grid-row:1;grid-column:2;font-size:.84rem;font-weight:500;color:var(--text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pf-top5-value{grid-row:1;grid-column:3;font-size:.84rem;font-weight:600;color:var(--text-1);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.pf-top5-bar-wrap{grid-row:2;grid-column:2 / 4;height:4px;background:var(--surface-2);border-radius:2px;overflow:hidden;margin-top:4px}.pf-top5-bar{height:100%;background:linear-gradient(90deg,var(--accent-soft, var(--accent)),var(--accent));border-radius:2px;transition:width .25s cubic-bezier(.2,.8,.2,1)}.pf-top5-empty{font-size:.82rem;color:var(--text-3);padding:var(--pf-space-3, 12px) 0;text-align:center}.pf-overview-shimmer{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:16px 18px;min-height:80px;animation:pf-shimmer 1.4s infinite linear;background-image:linear-gradient(90deg,var(--surface-2) 0%,var(--border) 40%,var(--surface-2) 60%);background-size:200% 100%}@keyframes pf-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (max-width: 768px){.pf-overview-kpi-card{flex:1 1 120px;min-width:110px}}@media (max-width: 600px){.pf-kpi-row{grid-template-columns:1fr}}.pf-stop-map-container{--pf-stop-map-height: 480px;width:100%;min-height:var(--pf-stop-map-height);border-radius:12px;border:1px solid var(--border);box-shadow:0 1px 2px #0000000a;overflow:hidden;background:var(--surface);position:relative}.pf-stop-map-empty{display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:.9rem}.pf-overview-row--map{display:block}.pf-overview-row--top5{display:grid;grid-template-columns:1fr 1fr;gap:var(--pf-space-4, 16px)}@media (max-width: 768px){.pf-overview-row--top5{grid-template-columns:1fr}.pf-stop-map-container{min-height:360px}}.stm-popup{font-size:.82rem;line-height:1.5;color:var(--text-1, #0f172a)}.stm-popup strong{display:block;font-size:.88rem;margin-bottom:4px}.stm-popup-row{color:var(--text-2, #475569)}.pf-compact-filter{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin-bottom:10px;display:flex;flex-direction:column;gap:8px}.pf-compact-filter__row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pf-compact-filter__row--period{gap:10px}.pf-compact-filter__row--custom{padding:6px 0;border-top:1px solid var(--border)}.pf-period-tabs{display:flex;gap:3px;flex-wrap:wrap}.pf-period-tab-btn{padding:4px 11px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text-2);font-size:12.5px;font-weight:500;cursor:pointer;transition:all .12s;font-family:inherit;white-space:nowrap}.pf-period-tab-btn:hover{background:var(--surface-3);color:var(--text-1)}.pf-period-tab-btn--active{background:var(--accent);border-color:var(--accent);color:#fff}.pf-period-tab-btn--active:hover{background:var(--accent-hover, var(--accent))}.pf-bucket-selector{display:flex;align-items:center;gap:3px;margin-left:auto}.pf-bucket-label{font-size:11.5px;color:var(--text-3);margin-right:2px;white-space:nowrap}.pf-bucket-btn{padding:3px 9px;border:1px solid var(--border);border-radius:5px;background:var(--surface);color:var(--text-3);font-size:11.5px;cursor:pointer;font-family:inherit;transition:all .1s}.pf-bucket-btn:hover{background:var(--surface-3);color:var(--text-1)}.pf-bucket-btn--active{background:var(--accent);border-color:var(--accent);color:#fff}.pf-bucket-warn{margin-bottom:8px;font-size:13px}.pf-filter-date{padding:4px 8px;font-size:13px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text-1);margin-left:4px}.pf-filter-arrow{color:var(--text-3);font-size:14px}.pf-matched-toggle--compact{margin-left:4px;font-size:12.5px}.pf-group-by-bar{display:flex;gap:4px;flex-wrap:wrap;flex:1}.pf-group-by-btn{padding:4px 12px;border:1px solid var(--border);border-radius:20px;background:var(--surface-2);color:var(--text-2);font-size:12.5px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .12s;white-space:nowrap}.pf-group-by-btn:hover{background:var(--surface-3);color:var(--text-1)}.pf-group-by-btn--active{background:var(--accent);border-color:var(--accent);color:#fff}.pf-anomalies-tab{display:flex;flex-direction:column;gap:16px}.pf-anomaly-card{padding:0;overflow:hidden}.pf-anomaly-count{font-size:12px;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--surface-3);color:var(--text-2);margin-left:auto}.pf-anomaly-count--bad{background:rgba(var(--bad-rgb, 239,68,68),.12);color:var(--bad)}.pf-anomaly-count--warn{background:rgba(var(--warn-rgb, 245,158,11),.12);color:var(--warn)}.pf-anomaly-empty{padding:20px;text-align:center;color:var(--text-3);font-size:13.5px}@media (max-width: 768px){.pf-compact-filter{padding:12px;gap:10px}.pf-compact-filter__row{flex-direction:column;align-items:stretch}.pf-period-tabs,.pf-filter-label,.pf-filter-select,.pf-filter-date{width:100%}.pf-bucket-selector{width:100%;margin-left:0;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}.pf-filter-group-label{display:none}.pf-matched-toggle--compact{width:100%;justify-content:flex-start}.pf-stop-map-container{--pf-stop-map-height: clamp(320px, 46vh, 420px)}}.pf-sparkline-wrap{position:relative;display:inline-block}.pf-sparkline-tooltip{position:fixed;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:5px 9px;font-size:11px;color:var(--text);box-shadow:0 2px 8px #0000002e;white-space:nowrap;pointer-events:none;z-index:300;transition:opacity 80ms ease}.pf-heatmap-tooltip--cursor{position:fixed;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:12px;color:var(--text);box-shadow:0 2px 8px #0000002e;white-space:nowrap;pointer-events:none;z-index:300;min-width:160px;animation:pf-heatmap-tt-in .12s cubic-bezier(.2,.8,.2,1)}@keyframes pf-heatmap-tt-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.pf-heatmap-tooltip--cursor:after{content:"";position:absolute;width:0;height:0;bottom:-6px;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--surface-2);border-bottom:none}.pf-heatmap-tooltip--cursor.is-below:after{bottom:auto;top:-6px;border-top-color:transparent;border-bottom:6px solid var(--surface-2)}.pf-heatmap-tt-header{font-weight:600;font-size:13px;margin-bottom:4px}.pf-heatmap-tt-row{margin-top:2px;color:var(--text)}.pf-heatmap-tt-value{font-weight:600;color:var(--accent, #f08c2e)}.pf-heatmap-tt-peak{margin-top:2px;color:var(--text-3);font-size:11px}.pf-heatmap-tt-empty{margin-top:2px;color:var(--text-3);font-style:italic}.pf-top-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;background:linear-gradient(90deg,var(--accent) 0%,var(--accent-light, #7eb8f7) 50%,var(--accent) 100%);background-size:200% 100%;animation:pf-progress-slide 1.2s linear infinite}@keyframes pf-progress-slide{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.pf-top-progress{animation:none;background:var(--accent)}}.pf-section-header{font:var(--pf-text-h3);text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);margin:0 0 var(--pf-space-2) 0;padding-bottom:var(--pf-space-2);border-bottom:1px solid var(--border)}@keyframes pf-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.pf-fade-in{animation:pf-fade-in .25s cubic-bezier(.2,.8,.2,1) both}.pf-fade-in:nth-child(1){animation-delay:0ms}.pf-fade-in:nth-child(2){animation-delay:55ms}.pf-fade-in:nth-child(3){animation-delay:.11s}.pf-fade-in:nth-child(4){animation-delay:165ms}.pf-fade-in:nth-child(5){animation-delay:.22s}@media (prefers-reduced-motion: reduce){.pf-fade-in{animation:none}}.pf-anomaly-expand-hint{display:flex;justify-content:center;padding:16px 0 8px}.pf-filter-group-label{display:inline-block;width:72px;min-width:72px;font-size:11px;color:var(--text-3);font-weight:500;padding-top:4px;flex-shrink:0}.pf-state-card{border:1px dashed var(--border);border-radius:12px;padding:var(--pf-space-5);text-align:center;color:var(--text-2)}.pf-state-card--error{border-color:var(--bad-border);border-style:solid}.pf-error-card{border:1.5px solid var(--bad-border, #fecaca);border-radius:12px;background:#ef44440d;padding:var(--pf-space-3) var(--pf-space-4);margin:var(--pf-space-1) 0}.pf-error-card__inner{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pf-error-card__icon{font-size:18px;line-height:1;flex-shrink:0;color:var(--bad, #ef4444)}.pf-error-card__text{flex:1;min-width:0}.pf-error-card__title{font-size:13.5px;font-weight:600;color:var(--bad, #ef4444)}.pf-error-card__msg{font-size:12px;color:var(--text-2);margin-top:2px;word-break:break-word}.pf-error-card__retry{flex-shrink:0}.pf-filter-summary{font-size:11.5px;color:var(--text-3);padding:2px 0 4px 2px;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pf-stop-drawer__header-left{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.pf-stop-drawer__esc-hint{font-size:10px;color:var(--text-3);letter-spacing:.03em;opacity:.7}.pf-stop-drawer__close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:transparent;color:var(--text-2);font-size:20px;cursor:pointer;border-radius:var(--radius-sm, 4px);transition:background .12s,color .12s}.pf-stop-drawer__close:hover{background:var(--surface-3);color:var(--text-1)}.pf-info-tooltip-wrap{position:relative;display:inline-flex;align-items:center;cursor:help;vertical-align:middle;margin-left:6px}.pf-info-tooltip-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--surface-3);color:var(--text-3);font-size:10px;font-weight:700;font-style:normal;border:1px solid var(--border);line-height:1;flex-shrink:0}.pf-info-tooltip-wrap:hover .pf-info-tooltip-icon,.pf-info-tooltip-wrap:focus .pf-info-tooltip-icon{background:var(--accent);color:#fff;border-color:var(--accent)}.pf-info-tooltip-bubble{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:11.5px;color:var(--text-1);box-shadow:0 2px 10px #00000026;white-space:normal;width:260px;z-index:500;pointer-events:none;line-height:1.4}.pf-anomaly-title-row{display:inline-flex;align-items:center;gap:0}.pf-anomaly-all-ok{display:flex;align-items:center;gap:10px;padding:14px 18px;background:#22c55e14;border:1.5px solid rgba(34,197,94,.35);border-radius:var(--radius, 8px);color:var(--text-1);font-size:14px;font-weight:500;margin-bottom:4px}.pf-anomaly-all-ok__icon{font-size:20px;color:#22c55e;flex-shrink:0}.pf-heatmap-legend{display:flex;align-items:center;gap:6px;padding:4px 2px 0;font-size:10.5px;color:var(--text-3)}.pf-heatmap-legend__bar{flex:1;height:8px;border-radius:4px;border:1px solid var(--border)}.pf-heatmap-legend__min,.pf-heatmap-legend__max{flex-shrink:0;min-width:18px;text-align:center;font-variant-numeric:tabular-nums}.pf-kpi-value,.pf-overview-kpi-value,.pf-top5-bar-value,.pf-kpi-delta,.pf-anomaly-count,.pf-stop-events-table td{font-variant-numeric:tabular-nums}@media (max-width: 600px){.pf-period-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;flex-wrap:nowrap;width:100%;padding-bottom:2px}.pf-compact-filter__row{flex-direction:column;align-items:stretch}.pf-filter-label{width:100%}.pf-filter-select{width:100%;box-sizing:border-box}.pf-bucket-selector{margin-left:0;flex-wrap:nowrap;overflow-x:auto}.pf-filter-group-label,.pf-stop-drawer__esc-hint{display:none}.pf-info-tooltip-bubble{left:auto;right:0;transform:none;width:220px}}.pf-stat-list-wrap{width:100%;overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 2px #0000000a}.pf-stat-list{width:100%;border-collapse:collapse;font-size:13.5px}.pf-stat-list thead th{position:sticky;top:0;z-index:2;background:var(--surface-2);border-bottom:1px solid var(--border);padding:8px 10px;font-weight:600;color:var(--text-2, #6b7280);white-space:nowrap}.pf-stat-th-sort{cursor:pointer;user-select:none;transition:background .1s}.pf-stat-th-sort:hover{background:var(--surface-3, #f3f4f6)}.pf-stat-th--active{color:var(--accent)}.pf-sort-indicator{font-size:10px;color:var(--accent);font-variant-numeric:tabular-nums}.pf-sort-indicator--idle{color:var(--text-3, #9ca3af)}.pf-stat-list tbody tr.pf-stat-list-row{cursor:pointer;transition:background .1s}.pf-stat-list tbody tr.pf-stat-list-row:hover{background:var(--surface-1, #f9fafb)}.pf-stat-list tbody td{padding:var(--pf-space-2) 10px;border-bottom:1px solid var(--border-subtle, var(--border));vertical-align:middle;font:var(--pf-text-body)}.pf-stat-list tbody tr:last-child td{border-bottom:none}.pf-stat-rank{color:var(--text-3, #9ca3af);font-size:12px;font-variant-numeric:tabular-nums;text-align:right;padding-right:4px;min-width:28px}.pf-stat-name{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-1, #111827);font-weight:500}.pf-stat-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--text-1, #111827)}.pf-stat-events{position:relative}.pf-stat-events-inner{display:flex;flex-direction:column;align-items:flex-end;gap:2px;position:relative}.pf-stat-bar{display:block;height:4px;width:var(--bar-pct, 0%);min-width:2px;border-radius:2px;transition:width .3s ease;opacity:.85;align-self:flex-end;background:linear-gradient(90deg,var(--accent-soft, rgba(79, 110, 247, .22)) 0%,var(--accent, #4f6ef7) 100%)}.pf-stat-skel{display:inline-block;height:12px;width:60px;background:var(--border);border-radius:4px;animation:pf-shimmer 1.4s infinite linear;background-image:linear-gradient(90deg,var(--surface-2) 0%,var(--border) 40%,var(--surface-2) 60%);background-size:200% 100%}.pf-stat-skel--name{width:140px}.pf-stat-skel--sm{width:40px}.pf-stat-list-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:40px 20px;color:var(--text-2, #6b7280);font-size:14px}@media (max-width: 600px){.pf-stat-col--secondary{display:none}.pf-stat-name{max-width:140px}}
