:root,[data-theme=dark]{--bg: #0d1410;--shell: #091009;--surface: #131a14;--surface-raised: #1a2319;--surface-soft: #1f2b1e;--border: #2a3828;--text: #f4f0e8;--muted: #8fa094;--subtle: #607060;--normal: #20c997;--warning: #ffb020;--critical: #f04438;--offline: #607060;--info: #4dabf7;--cyan: #C9A84C;--gold: #C9A84C;--gold-bright: #E8C96B;--gold-dim: color-mix(in srgb, #C9A84C 30%, transparent);--emerald: #0D5C3A;--shadow: rgba(0, 0, 0, .44);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}[data-theme=light]{--bg: #f2ede4;--shell: #faf7f0;--surface: #faf7f0;--surface-raised: #f0ebe0;--surface-soft: #e8e0d0;--border: #c8bfa8;--text: #1a1408;--muted: #5c5040;--subtle: #8a7a60;--normal: #0e9b74;--warning: #c27a00;--critical: #c0392b;--offline: #8a7a60;--info: #2176ae;--cyan: #9a6f1e;--gold: #9a6f1e;--gold-bright: #c9a84c;--gold-dim: color-mix(in srgb, #9a6f1e 25%, transparent);--emerald: #0D5C3A;--shadow: rgba(0, 0, 0, .12);--badge-bg: rgba(0, 0, 0, .55);--badge-border: rgba(0, 0, 0, .3);--tile-stat-bg: rgba(0, 0, 0, .5);--tile-overlay-top: rgba(0, 0, 0, .38);--tile-overlay-mid: rgba(0, 0, 0, 0);--tile-overlay-bot: rgba(0, 0, 0, .52)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}button,textarea{font:inherit}button{color:inherit}@property --donut-s1{syntax: "<angle>"; inherits: false; initial-value: 0deg;}@property --donut-s2{syntax: "<angle>"; inherits: false; initial-value: 0deg;}@property --donut-s3{syntax: "<angle>"; inherits: false; initial-value: 0deg;}.pill{display:inline-flex;align-items:center;gap:7px;min-height:28px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);white-space:nowrap;cursor:pointer}.dot{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px #ffffff0a}.normal{color:var(--normal)}.warning{color:var(--warning)}.critical{color:var(--critical)}.offline{color:var(--offline)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 10px 22px var(--shadow)}.section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.section-header h2{margin:0;font-size:15px;letter-spacing:0;display:flex;align-items:center;gap:7px}.section-header h2:before{content:"";display:inline-block;width:6px;height:6px;background:var(--gold);transform:rotate(45deg);flex-shrink:0;opacity:.7}.legend span{color:var(--muted);font-size:12px}.panel{padding:14px}.panel.no-shadow{box-shadow:none}.severity{display:inline-flex;justify-content:center;min-width:62px;border-radius:999px;padding:4px 8px;border:1px solid currentColor;font-size:11px;text-transform:uppercase;letter-spacing:.03em}.severity.normal{color:var(--normal)}.severity.warning,.severity.review{color:var(--warning)}.severity.critical{color:var(--critical)}.severity.offline{color:var(--offline)}table{width:100%;border-collapse:collapse}th,td{padding:12px 14px;border-bottom:1px solid var(--border);text-align:left;font-size:13px}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em;background:var(--surface)}td{color:var(--text)}.ok{color:var(--normal)}.warn{color:var(--warning)}.route-skeleton{--sk-base: color-mix(in srgb, var(--surface-raised) 82%, transparent);--sk-hi: color-mix(in srgb, var(--gold) 14%, var(--surface-raised));display:flex;flex:1;min-width:0;min-height:0;gap:16px;color:transparent}.incident-route-skeleton{height:100%}.dashboard-route-skeleton{display:flex;flex-direction:column;width:100%}.dashboard-skeleton-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:18px}.dashboard-skeleton-kpi,.dashboard-skeleton-camera-card{overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:0 10px 22px var(--shadow)}.dashboard-skeleton-kpi{min-height:92px;padding:14px}.skeleton-line.kpi-number-line{width:40px;height:31px;margin-top:10px}.skeleton-line.kpi-hint-line{width:112px;height:12px;margin-top:8px}.dashboard-skeleton-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(430px,520px);gap:18px;align-items:stretch;flex:1;min-height:0}.dashboard-skeleton-main{min-width:0}.dashboard-skeleton-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:32px;margin-bottom:14px}.skeleton-line.dashboard-title-line{flex:0 1 210px;width:210px;height:17px}.dashboard-skeleton-tools{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}.skeleton-line.dashboard-search-line{flex:1 1 260px;width:min(380px,26vw);height:32px}.dashboard-layout-toggle-skeleton{display:inline-flex;overflow:hidden;flex:0 0 auto;border:1px solid var(--border);border-radius:7px}.dashboard-layout-toggle-skeleton span{width:38px;height:30px;border-right:1px solid var(--border);background:color-mix(in srgb,var(--surface-soft) 70%,transparent)}.dashboard-layout-toggle-skeleton span:last-child{border-right:0}.dashboard-skeleton-camera-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.dashboard-skeleton-camera-card{position:relative;display:flex;aspect-ratio:1 / 1;min-width:0;flex-direction:column;padding:12px}.dashboard-skeleton-card-head{position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.skeleton-line.camera-title-line{width:160px;max-width:100%;height:15px}.skeleton-line.camera-subtitle-line{width:220px;max-width:100%;height:11px;margin-top:7px}.skeleton-chip.camera-count-chip{width:30px;height:24px}.dashboard-skeleton-camera-preview{position:relative;overflow:hidden;flex:1;min-height:0}.dashboard-skeleton-camera-preview:before{content:"";position:absolute;inset:14px 0 10px;border-radius:7px;background:linear-gradient(100deg,transparent 0%,color-mix(in srgb,var(--sk-hi) 34%,transparent) 44%,transparent 72%),linear-gradient(180deg,color-mix(in srgb,var(--surface-soft) 52%,transparent),color-mix(in srgb,#020403 78%,transparent));background-size:240% 100%,100% 100%;animation:skeleton-shimmer 1.45s ease-in-out infinite}.dashboard-skeleton-card-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.skeleton-panel.metric-tile{min-height:46px;border-radius:6px}.dashboard-skeleton-rail{display:flex;flex-direction:column;gap:12px;min-height:0;min-width:0}.dashboard-skeleton-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:stretch}.skeleton-rail-panel.dashboard-chart-panel{min-height:118px}.dashboard-donut-skeleton{display:grid;grid-template-columns:74px minmax(0,1fr);gap:14px;align-items:center}.dashboard-donut-skeleton span{width:74px;aspect-ratio:1;border-radius:999px;background:radial-gradient(circle at center,var(--surface) 0 38%,transparent 39%),conic-gradient(color-mix(in srgb,var(--gold) 46%,transparent),color-mix(in srgb,var(--cyan) 36%,transparent),color-mix(in srgb,var(--surface-soft) 88%,transparent));opacity:.85}.dashboard-legend-skeleton{display:grid;gap:7px}.skeleton-line.legend-line{width:100%;height:10px}.skeleton-rail-panel.dashboard-events-panel{display:flex;flex:1;min-height:360px;flex-direction:column}.dashboard-severity-skeleton{display:flex;gap:6px;margin-bottom:14px}.dashboard-event-row-skeleton{display:grid;grid-template-columns:46px minmax(0,1fr) 58px;gap:10px;align-items:center;min-height:48px;border-bottom:1px solid color-mix(in srgb,var(--border) 58%,transparent)}.skeleton-line.event-time-line{width:34px;height:12px}.skeleton-line.event-title-line{width:min(220px,80%);height:13px}.skeleton-line.event-copy-line{width:min(280px,95%);height:11px;margin-top:7px}.camera-detail-skeleton{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,380px);gap:18px;align-items:start;flex:0 0 auto;width:100%}.camera-skeleton-main{min-width:0}.camera-skeleton-rail{display:grid;gap:12px;align-content:start;position:sticky;top:72px;max-height:calc(100vh - 88px);overflow:hidden;min-width:0}.camera-skeleton-breadcrumb{display:flex;align-items:center;gap:12px;min-height:42px;margin-bottom:8px;padding:0 18px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface) 78%,transparent)}.camera-skeleton-video-card,.camera-skeleton-table,.skeleton-rail-panel{overflow:hidden;border:1px solid var(--border);background:var(--surface);box-shadow:0 10px 22px var(--shadow)}.camera-skeleton-video-card{border-radius:10px;margin-bottom:14px}.camera-skeleton-table,.skeleton-rail-panel{border-radius:8px}.route-skeleton-main{display:flex;flex:1;min-width:0;flex-direction:column;gap:14px;padding:22px 24px}.route-skeleton-side{display:flex;flex:0 0 400px;min-width:0;flex-direction:column;gap:14px;padding:22px;border-left:1px solid var(--border);background:color-mix(in srgb,var(--surface) 78%,transparent)}.skeleton-line,.skeleton-video,.skeleton-panel,.skeleton-chip,.skeleton-rail span{overflow:hidden;border:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-radius:8px;background:linear-gradient(100deg,transparent 0%,color-mix(in srgb,var(--sk-hi) 42%,transparent) 44%,transparent 72%),var(--sk-base);background-size:240% 100%,100% 100%;animation:skeleton-shimmer 1.45s ease-in-out infinite}.skeleton-line{width:min(420px,70%);height:18px;border-radius:6px}.skeleton-line.tiny{width:22px;height:12px}.skeleton-line.short{width:min(210px,45%)}.skeleton-line.medium{width:min(340px,56%)}.skeleton-line.wide{width:100%}.skeleton-line.context-line{width:min(920px,62%);height:15px;margin:0 0 12px 2px}.skeleton-video{position:relative;display:grid;width:100%;aspect-ratio:16 / 9;place-items:center;background-color:#050706}.camera-detail-skeleton .skeleton-video{max-height:55vh;border:0;border-radius:0}.skeleton-spinner{width:34px;height:34px;border:2px solid color-mix(in srgb,var(--gold) 18%,transparent);border-top-color:var(--gold);border-radius:999px;animation:skeleton-spin .9s linear infinite}.skeleton-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.skeleton-chip{width:62px;height:28px;border-radius:999px}.skeleton-chip.warning-chip{width:56px;height:20px}.camera-skeleton-video-footer{min-height:42px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-top:1px solid var(--border)}.skeleton-line.footer-line{flex:1 1 auto;width:auto;max-width:340px;height:13px}.skeleton-line.pill-line{flex:0 0 260px;width:260px;height:20px}.camera-skeleton-table-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border)}.skeleton-line.label-line{width:62px;height:12px}.camera-skeleton-table-head{display:grid;grid-template-columns:.8fr 1.25fr 1.1fr 1.05fr 1fr .9fr;gap:24px;min-height:42px;padding:13px 14px}.skeleton-line.table-head-line{width:100%;height:11px}.skeleton-rail-panel{min-height:124px;padding:14px}.skeleton-rail-panel.status-panel{min-height:160px}.skeleton-rail-panel.compact{min-height:118px}.skeleton-rail-panel.tall{min-height:296px}.camera-skeleton-panel-header,.camera-skeleton-metric-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.camera-skeleton-panel-header{margin-bottom:14px}.camera-skeleton-metric-row{margin-top:9px}.skeleton-line.rail-title{flex:1 1 auto;width:auto;height:15px}.skeleton-line.rail-count{flex:0 0 34px;width:34px;height:12px}.skeleton-line.rail-label{flex:0 1 124px;width:124px;height:11px}.skeleton-line.rail-value{flex:0 0 76px;width:76px;height:11px}.skeleton-line.search-line{width:100%;height:34px;margin-bottom:10px}.skeleton-panel.rail-empty{min-height:36px}.skeleton-panel{min-height:148px}.skeleton-panel.compact{min-height:86px}.skeleton-rail{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.skeleton-rail span{min-height:92px}@keyframes skeleton-shimmer{0%{background-position:120% 0,0 0}to{background-position:-120% 0,0 0}}@keyframes skeleton-spin{to{transform:rotate(360deg)}}@media(max-width:1180px){.dashboard-skeleton-layout{grid-template-columns:1fr}.dashboard-skeleton-camera-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.camera-detail-skeleton{grid-template-columns:1fr}.camera-skeleton-rail{grid-template-columns:repeat(2,minmax(0,1fr));position:static;max-height:none;overflow:visible}.camera-skeleton-rail .skeleton-rail-panel:first-child{grid-column:1 / -1}}@media(max-width:620px){.dashboard-route-skeleton{gap:0}.dashboard-skeleton-toolbar{align-items:flex-start;flex-direction:column}.dashboard-skeleton-tools{width:100%;flex-wrap:wrap;justify-content:flex-start}.skeleton-line.dashboard-search-line{flex-basis:100%;width:100%}.dashboard-donut-skeleton{grid-template-columns:1fr}.dashboard-event-row-skeleton{grid-template-columns:38px minmax(0,1fr)}.dashboard-event-row-skeleton .skeleton-chip{display:none}.camera-detail-skeleton{gap:12px}.camera-skeleton-video-footer{align-items:flex-start;flex-direction:column}.skeleton-line.pill-line{flex-basis:auto;width:min(260px,100%)}.camera-skeleton-table-head{grid-template-columns:1fr;gap:9px}.camera-skeleton-rail{grid-template-columns:1fr}}@media(max-width:1120px){.dashboard-layout{grid-template-columns:1fr;align-items:start}.events-col,.events-col .panel{flex:none}.events-col .event-list{max-height:340px;flex:none}}@media(max-width:1180px){.dashboard-layout{grid-template-columns:1fr}.charts-row{grid-template-columns:repeat(2,minmax(210px,1fr))}.detail-layout{grid-template-columns:1fr}.insight-rail{grid-template-columns:repeat(2,minmax(0,1fr));position:static;max-height:none;overflow-y:visible}.camera-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:920px){.dashboard-skeleton-kpis,.dashboard-skeleton-camera-grid,.dashboard-skeleton-charts,.kpi-strip,.camera-grid,.insight-rail,.needs-attention-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.events-col .event-list{max-height:280px}}@media(max-width:620px){.dashboard-skeleton-kpis,.dashboard-skeleton-camera-grid,.dashboard-skeleton-charts{grid-template-columns:1fr}.dashboard-skeleton-camera-card{aspect-ratio:1.1 / 1}.kpi-strip,.camera-grid,.insight-rail,.charts-row,.donut-grid{grid-template-columns:1fr}.insight-rail .legend div{grid-template-columns:minmax(112px,42%) minmax(0,1fr)}.camera-tile{aspect-ratio:1.1 / 1}.section-header{align-items:flex-start;flex-direction:column}.dashboard-tools{align-items:flex-start;flex-wrap:wrap}.needs-attention-strip{grid-template-columns:1fr}.attention-row{grid-template-columns:64px minmax(0,1fr)}.attention-row time{display:none}}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:none;color:var(--muted);cursor:pointer;flex-shrink:0;transition:color .15s,border-color .15s,background .15s}.icon-btn:hover{color:var(--text);border-color:color-mix(in srgb,var(--text) 30%,transparent);background:var(--surface-soft)}.event-list::-webkit-scrollbar,.insight-rail::-webkit-scrollbar,.events-col .event-list::-webkit-scrollbar{width:4px;height:4px}.event-list::-webkit-scrollbar-track,.insight-rail::-webkit-scrollbar-track,.events-col .event-list::-webkit-scrollbar-track{background:transparent}.event-list::-webkit-scrollbar-thumb,.insight-rail::-webkit-scrollbar-thumb,.events-col .event-list::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--gold) 40%,transparent);border-radius:999px}.event-list::-webkit-scrollbar-thumb:hover,.insight-rail::-webkit-scrollbar-thumb:hover,.events-col .event-list::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--gold) 70%,transparent)}.event-list,.insight-rail,.events-col .event-list{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--gold) 50%,transparent) transparent}.lang-ar p,.lang-ar h1,.lang-ar h2,.lang-ar h3,.lang-ar h4,.lang-ar h5,.lang-ar h6,.lang-ar textarea,.lang-ar input:not([type=checkbox]):not([type=radio]),.lang-ar .nav-label,.lang-ar .operator-name,.lang-ar .operator-unit,.lang-ar .settings-row-label,.lang-ar .settings-row-hint,.lang-ar .settings-group-label,.lang-ar .settings-footer span,.lang-ar .pinned-label b,.lang-ar .pinned-label span,.lang-ar .alert-meta b,.lang-ar .alert-meta span,.lang-ar .event-copy b,.lang-ar .event-copy span,.lang-ar .scope-chip,.lang-ar .prompt-chip,.lang-ar td,.lang-ar th,.lang-ar .events-empty b,.lang-ar .events-empty p{direction:rtl;text-align:right}.lang-ar .plate-en,.lang-ar .raw-value,.lang-ar code,.lang-ar .camera-id,.lang-ar .incident-id,.lang-ar .time-display,.lang-ar .vp-time,.lang-ar .vp-scrubber{direction:ltr;text-align:left}
