:root{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;--color-bg:#0b0e14;--color-bg-card:#111827;--color-border:#243045;--color-text:#e6e6e6;--color-text-muted:hsla(0,0%,90%,.7);--color-online-bg:#0a2e1a;--color-online-border:#1a5a3a;--color-online-text:#4ade80;--color-offline-bg:#1a1a1a;--color-offline-border:#3a3a3a;--color-offline-text:#888;--color-warning-bg:#3d2a0a;--color-warning-border:#6a4a1a;--color-warning-text:#fbbf24;--color-violation-bg:#2d1a1a;--color-violation-border:#6a2a2a;--color-violation-text:#f87171;--color-type-phone_in_hand-bg:#1a1a2d;--color-type-phone_in_hand-border:#3a3a6a;--color-type-phone_in_hand-text:#818cf8;--color-type-seatbelt_3point_buckled-bg:#0d2d2d;--color-type-seatbelt_3point_buckled-border:#1a5a5a;--color-type-seatbelt_3point_buckled-text:#4ecdc4;--color-type-seatbelt_3point_unbuckled-bg:#2d1a1a;--color-type-seatbelt_3point_unbuckled-border:#6a2a2a;--color-type-seatbelt_3point_unbuckled-text:#ff6b6b;--color-type-seatbelt_2point_buckled-bg:#0d1a2d;--color-type-seatbelt_2point_buckled-border:#1a3a5a;--color-type-seatbelt_2point_buckled-text:#45b7d1;--color-type-seatbelt_2point_unbuckled-bg:#2d1a0d;--color-type-seatbelt_2point_unbuckled-border:#5a3a1a;--color-type-seatbelt_2point_unbuckled-text:orange;--color-type-tampering-bg:#1a1a2d;--color-type-tampering-border:#4a2a6a;--color-type-tampering-text:#9333ea;--color-type-phone-bg:#1a1a2d;--color-type-phone-border:#3a3a6a;--color-type-phone-text:#818cf8;--color-type-seatbelt-bg:#2d1a1a;--color-type-seatbelt-border:#6a2a2a;--color-type-seatbelt-text:#ff6b6b;--color-warning-count-bg:#4a2a0a;--color-warning-count-border:#7a4a1a}body{margin:0;background:var(--color-bg);color:var(--color-text)}a{color:inherit;text-decoration:none}.container{max-width:1100px;margin:0 auto;padding:24px}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:14px;padding:16px}.grid{display:grid;grid-gap:16px;gap:16px}.grid2{grid-template-columns:repeat(2,minmax(0,1fr))}.table{width:100%;border-collapse:collapse}td,th{padding:10px;border-bottom:1px solid var(--color-border);text-align:left}.badge{display:inline-block;padding:3px 10px;border-radius:999px;border:1px solid var(--color-border);font-size:12px;text-align:center;min-width:60px}.badge.on,.badge.online{background:var(--color-online-bg);border-color:var(--color-online-border);color:var(--color-online-text)}.badge.off,.badge.offline{background:var(--color-offline-bg);border-color:var(--color-offline-border);color:var(--color-offline-text)}.badge.event,.badge.violation{background:var(--color-violation-bg);border-color:var(--color-violation-border);color:var(--color-violation-text)}.badge.type-phone,.type-badge.type-phone,span.type-phone{background:#1a1a2d!important;border-color:#3a3a6a!important;color:#818cf8!important}.badge.type-seatbelt,.type-badge.type-seatbelt,span.type-seatbelt{background:#2d1a1a!important;border-color:#6a2a2a!important;color:#ff6b6b!important}.badge.type-phone_in_hand,.type-badge.type-phone_in_hand{background:var(--color-type-phone_in_hand-bg);border-color:var(--color-type-phone_in_hand-border);color:var(--color-type-phone_in_hand-text)}.badge.type-seatbelt_3point_buckled,.type-badge.type-seatbelt_3point_buckled{background:var(--color-type-seatbelt_3point_buckled-bg);border-color:var(--color-type-seatbelt_3point_buckled-border);color:var(--color-type-seatbelt_3point_buckled-text)}.badge.type-seatbelt_3point_unbuckled,.type-badge.type-seatbelt_3point_unbuckled{background:var(--color-type-seatbelt_3point_unbuckled-bg);border-color:var(--color-type-seatbelt_3point_unbuckled-border);color:var(--color-type-seatbelt_3point_unbuckled-text)}.badge.type-seatbelt_2point_buckled,.type-badge.type-seatbelt_2point_buckled{background:var(--color-type-seatbelt_2point_buckled-bg);border-color:var(--color-type-seatbelt_2point_buckled-border);color:var(--color-type-seatbelt_2point_buckled-text)}.badge.type-seatbelt_2point_unbuckled,.type-badge.type-seatbelt_2point_unbuckled{background:var(--color-type-seatbelt_2point_unbuckled-bg);border-color:var(--color-type-seatbelt_2point_unbuckled-border);color:var(--color-type-seatbelt_2point_unbuckled-text)}.badge.type-tampering,.type-badge.type-tampering{background:var(--color-type-tampering-bg);border-color:var(--color-type-tampering-border);color:var(--color-type-tampering-text)}.badge.warning-count{background:var(--color-warning-count-bg);border-color:var(--color-warning-count-border);color:var(--color-warning-text)}.badge.warning-count.zero{background:var(--color-offline-bg);border-color:var(--color-offline-border);color:var(--color-offline-text)}.badge.warning-count-small{background:var(--color-warning-count-bg);border-color:var(--color-warning-count-border);color:var(--color-warning-text);padding:2px 6px;font-size:11px;min-width:20px}.badge.warning-count-small.zero{background:var(--color-offline-bg);border-color:var(--color-offline-border);color:var(--color-offline-text)}.badge.warning-count-compact{background:var(--color-warning-count-bg);border-color:var(--color-warning-count-border);color:var(--color-warning-text);padding:2px 5px;font-size:11px;min-width:auto;text-align:center}.badge.warning-count-compact.zero{background:var(--color-offline-bg);border-color:var(--color-offline-border);color:var(--color-offline-text)}input,textarea{width:100%;padding:10px}button,input,textarea{border-radius:10px;border:1px solid var(--color-border);background:#0b1220;color:var(--color-text)}button{padding:10px 14px;cursor:pointer}button:hover{filter:brightness(1.1)}.nav{gap:14px;padding:12px 0;opacity:.95}.nav,.nav-desktop{display:flex}.mobile-menu-overlay,.nav-mobile-header,.nav-mobile-menu{display:none}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.mono,.small{font-size:12px}.small{opacity:.8}.card ul{margin:8px 0;padding-left:0;list-style:none}.card ul li{padding:6px 0;border-bottom:1px solid rgba(36,48,69,.4)}.card ul li:last-child{border-bottom:none}tr.expandable{cursor:pointer}tr.expandable:hover{background:rgba(36,48,69,.3)}tr.warning-subrow{background:rgba(61,42,10,.3)}tr.warning-subrow td{padding:6px 10px;border-bottom:1px solid var(--color-warning-border)}.expand-icon{display:inline-block;width:16px;transition:transform .2s}.expand-icon.expanded{transform:rotate(90deg)}.timeline{position:relative;padding-left:32px}.timeline:before{content:"";position:absolute;left:7px;top:0;bottom:0;width:2px;background:var(--color-border)}.timeline-item{position:relative;margin-bottom:20px;padding:12px;background:var(--color-bg-card);border-radius:8px;border:1px solid var(--color-border)}.timeline-item:before{content:"";position:absolute;left:-25px;top:14px;width:14px;height:14px;border-radius:50%;background:var(--color-border);border:2px solid var(--color-bg-card)}.timeline-item.violation:before{background:var(--color-violation-text)}.timeline-item.warning:before{background:var(--color-warning-text)}.timeline-item .type{font-weight:600;margin-bottom:4px}.timeline-item .meta{font-size:12px;opacity:.7}.timeline-session{border-left:3px solid #4a6a9a;margin-left:-3px;padding-left:3px}.filter-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;margin-bottom:12px;background:rgba(36,48,69,.3);border-radius:8px;flex-wrap:wrap}.filter-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--color-border);font-size:12px;cursor:pointer;transition:all .15s}.filter-chip.type-phone{background:var(--color-type-phone-bg);border-color:var(--color-type-phone-border);color:var(--color-type-phone-text)}.filter-chip.type-seatbelt{background:var(--color-type-seatbelt-bg);border-color:var(--color-type-seatbelt-border);color:var(--color-type-seatbelt-text)}.filter-chip.type-tampering{background:var(--color-type-tampering-bg);border-color:var(--color-type-tampering-border);color:var(--color-type-tampering-text)}.filter-chip:hover{filter:brightness(1.2)}.filter-chip-x{opacity:.6;font-weight:700}.filter-chip:hover .filter-chip-x{opacity:1}.filter-clear{padding:4px 10px;font-size:11px;border-radius:6px;background:transparent;border:1px solid hsla(240,9%,43%,.4);color:hsla(0,0%,90%,.7)}.filter-clear:hover{background:hsla(240,9%,43%,.2)}.th-filter{position:relative;cursor:pointer}.th-filter:hover{background:rgba(36,48,69,.3)}.filter-dropdown{display:none;position:absolute;top:100%;left:0;z-index:10;background:#1a2538;border:1px solid #243045;border-radius:8px;padding:6px;min-width:120px;box-shadow:0 4px 12px rgba(0,0,0,.3)}.th-filter:hover .filter-dropdown{display:flex;flex-direction:column;gap:4px}.filter-option{display:block;padding:6px 10px;border-radius:6px;font-size:12px;font-weight:400;border:1px solid var(--color-border);cursor:pointer;transition:all .15s}.filter-option.type-phone{background:var(--color-type-phone-bg);border-color:var(--color-type-phone-border);color:var(--color-type-phone-text)}.filter-option.type-seatbelt{background:var(--color-type-seatbelt-bg);border-color:var(--color-type-seatbelt-border);color:var(--color-type-seatbelt-text)}.filter-option.type-tampering{background:var(--color-type-tampering-bg);border-color:var(--color-type-tampering-border);color:var(--color-type-tampering-text)}.filter-option:hover{filter:brightness(1.3)}.filter-option.active{box-shadow:0 0 0 2px rgba(100,150,255,.5)}.type-badge{cursor:pointer;transition:all .15s}.type-badge:hover{filter:brightness(1.3);transform:scale(1.05)}.device-link{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;cursor:pointer;padding:2px 6px;border-radius:4px;transition:all .15s}.device-link:hover{background:rgba(36,48,69,.5)}@keyframes sse-pulse{0%,to{opacity:1;box-shadow:0 0 0 0 rgba(74,222,128,.5)}50%{opacity:.7;box-shadow:0 0 0 6px rgba(74,222,128,0)}}@keyframes sse-pulse-warning{0%,to{opacity:1;box-shadow:0 0 0 0 rgba(251,191,36,.5)}50%{opacity:.7;box-shadow:0 0 0 6px rgba(251,191,36,0)}}.sse-indicator{display:flex;align-items:center;gap:8px;margin-left:auto;padding:4px 12px;background:rgba(36,48,69,.4);border-radius:20px;font-size:12px}.sse-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.sse-indicator.connected .sse-dot{animation:sse-pulse 2s ease-in-out infinite}.sse-indicator.connecting .sse-dot,.sse-indicator.reconnecting .sse-dot{animation:sse-pulse-warning 1s ease-in-out infinite}.sse-text{font-weight:500}.sse-indicator.connected .sse-text{color:var(--color-online-text)}.sse-indicator.connecting .sse-text,.sse-indicator.reconnecting .sse-text{color:var(--color-warning-text)}.sse-indicator.error .sse-text{color:var(--color-type-seatbelt-text)}.sse-stats{color:var(--color-text-muted);padding-left:8px;border-left:1px solid hsla(240,9%,43%,.3)}.nav a{position:relative;padding-bottom:4px}.nav a.active{color:var(--color-online-text)}.nav a.active:after{content:"";position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--color-online-text);border-radius:1px}.clickable-item{display:grid;align-items:center;grid-gap:8px;gap:8px;padding:8px 10px;margin:-8px -10px;border-radius:8px;cursor:pointer;transition:background .15s;text-decoration:none;color:inherit}.clickable-item:hover{background:rgba(36,48,69,.4)}.table-arrow-link{display:inline-flex;align-items:center;gap:6px;color:var(--color-text-muted);text-decoration:none;font-size:12px;transition:color .15s}.table-arrow-link:hover{color:var(--color-text)}.table-arrow-link .arrow-icon{font-size:14px}.device-row{grid-template-columns:70px 1fr 90px 24px;gap:20px}.overview-row{grid-template-columns:70px 24px 1fr auto 32px 24px;gap:16px}.overview-row-activity{grid-template-columns:95px 70px 24px 1fr auto auto 24px;gap:16px}.overview-evidence-col{display:flex;align-items:center;justify-content:center;width:24px;height:24px}.overview-row-device{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.evidence-btn-inline{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;background:rgba(100,140,200,.15);border:1px solid rgba(100,140,200,.3);border-radius:4px;color:#a8c4e8;cursor:pointer;transition:all .15s;flex-shrink:0}.evidence-btn-inline:hover{background:rgba(100,140,200,.3);border-color:rgba(100,140,200,.5);color:#c4daf0;transform:scale(1.1)}.device-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:12px;gap:12px}.device-card{display:block;background:rgba(36,48,69,.2);border:1px solid var(--color-border);border-radius:10px;padding:12px 14px;text-decoration:none;color:inherit;transition:all .15s}.device-card:hover{background:rgba(36,48,69,.4);border-color:rgba(100,140,200,.4)}.device-card-header{display:flex;align-items:center;gap:8px;margin-bottom:10px}.device-card-header .badge{flex-shrink:0}.device-card-header .gps-indicator,.device-card-header .motion-indicator,.device-card-header .signal-indicator{flex-shrink:0;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center}.device-card-id{flex:1 1;font-size:14px;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-card-details{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.device-card-details-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:12px 16px;gap:12px 16px;padding-top:8px;border-top:1px solid rgba(36,48,69,.5)}.device-card-detail{display:flex;flex-direction:column;gap:3px}.device-card-label{font-size:10px;opacity:.6;text-transform:uppercase;letter-spacing:.5px}.device-card-value{font-size:12px;opacity:.9}.config-pending-badge-small{color:var(--color-warning-text);font-size:10px}.violation-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:12px;gap:12px}.violation-card{display:block;background:rgba(36,48,69,.2);border:1px solid var(--color-border);border-radius:10px;padding:12px 14px;text-decoration:none;color:inherit;transition:all .15s}.violation-card:hover{background:rgba(36,48,69,.4);border-color:rgba(100,140,200,.4)}.violation-card-header{display:flex;align-items:center;gap:12px;margin-bottom:10px}.violation-card-device{flex:1 1;font-size:14px;font-weight:500}.violation-card-details{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px}.violation-card-detail{display:flex;flex-direction:column;gap:3px}.violation-card-label{font-size:10px;opacity:.6;text-transform:uppercase;letter-spacing:.5px}.violation-card-value{font-size:12px;opacity:.9}.device-card-detail .badge,.violation-card-detail .badge{width:-moz-fit-content;width:fit-content}.violation-row{grid-template-columns:80px 110px 1fr 40px 24px;gap:10px}.activity-row{grid-template-columns:115px 85px 1fr 70px 80px 24px;gap:12px}.realtime-stats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-bottom:16px}.stat-item{text-align:center;padding:12px;background:rgba(36,48,69,.3);border-radius:8px}.stat-value{font-size:24px;font-weight:600;color:var(--color-online-text)}.stat-label{font-size:11px;opacity:.7;margin-top:4px}.stat-context{opacity:.5;font-weight:400}.limit-btn{padding:4px 10px;background:transparent;border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-muted);font-size:12px;cursor:pointer;transition:all .15s;min-width:32px}.limit-btn:hover{background:rgba(100,140,200,.15);border-color:rgba(100,140,200,.3);color:var(--color-text)}.limit-btn.active{background:rgba(100,140,200,.25);border-color:rgba(100,140,200,.5);color:#a8c4e8}.activity-feed{margin:0;padding:0;list-style:none}.activity-feed li{padding:6px 0;border-bottom:1px solid rgba(36,48,69,.4)}.activity-feed li:last-child{border-bottom:none}.badge.activity-kind{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:3px 8px;min-width:90px}.badge.activity-kind.violation{background:var(--color-violation-bg);border-color:var(--color-violation-border);color:var(--color-violation-text)}.badge.activity-kind.warning{background:var(--color-warning-bg);border-color:var(--color-warning-border);color:var(--color-warning-text)}.muted{opacity:.6}.arrow-icon{opacity:.4;transition:opacity .15s;text-align:right;justify-self:end}.clickable-item:hover .arrow-icon{opacity:.8}.config-page-v2{display:block}.config-desktop-layout{display:flex;flex-direction:column;gap:16px}.config-device-header{display:flex;align-items:center;gap:24px;padding:14px 20px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;flex-wrap:wrap}.config-device-selector{display:flex;align-items:center;gap:10px}.config-device-label{font-size:12px;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.config-device-dropdown{padding:8px 32px 8px 12px;border-radius:8px;border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);font-size:14px;font-weight:500;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;min-width:120px}.config-device-dropdown:hover{border-color:rgba(100,140,200,.4)}.config-device-dropdown:focus{outline:none;border-color:rgba(100,140,200,.6);box-shadow:0 0 0 2px rgba(100,140,200,.1)}.config-device-info-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.config-device-info-item{display:flex;align-items:center;gap:6px}.config-info-label{font-size:11px;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.3px}.config-version-inline{display:flex;align-items:center;gap:6px}.config-synced-icon{color:var(--color-online-text);font-weight:700;font-size:14px}.config-columns{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;align-items:start}.config-left-column,.config-right-column{display:flex;flex-direction:column;gap:16px}.config-section-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;overflow:hidden}.config-section-header{padding:12px 16px;background:rgba(36,48,69,.3);border-bottom:1px solid var(--color-border)}.config-section-header h4{margin:0;font-size:13px;font-weight:600;color:var(--color-text);text-transform:uppercase;letter-spacing:.5px}.config-section-content{padding:16px}.sync-status-row{margin-bottom:12px}.config-compare-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;margin-top:12px}.config-compare-col{display:flex;flex-direction:column;gap:8px}.config-compare-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.config-compare-label{font-size:11px;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.3px}.config-preview-compact{background:rgba(11,14,20,.6);border:1px solid var(--color-border);border-radius:6px;padding:10px;margin:0;font-size:10px;color:var(--color-text-muted);white-space:pre-wrap;word-break:break-word}.config-compare-meta{font-size:10px;color:var(--color-text-muted);opacity:.8}.config-compare-error{font-size:11px;color:var(--color-type-seatbelt-text);margin-top:4px}.config-compare-empty{color:var(--color-text-muted);font-size:12px;padding:8px;text-align:center;background:rgba(36,48,69,.2);border-radius:6px}.calibration-result-compact{margin-bottom:16px}.calibration-status-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}.calibration-meta-inline{font-size:11px;color:var(--color-text-muted)}.calibration-offsets-compact{margin-top:8px}.calibration-error-msg{font-size:11px;color:var(--color-type-seatbelt-text);margin-top:8px}.calibration-trigger-row{display:flex;align-items:flex-end;gap:12px;padding-top:12px;border-top:1px solid rgba(36,48,69,.3)}.calibration-samples-input{display:flex;flex-direction:column;gap:4px}.calibration-samples-input label{font-size:11px;color:var(--color-text-muted)}.calibration-samples-input input{width:80px;padding:8px 10px;font-size:13px}.calibrate-btn{padding:8px 16px;white-space:nowrap}.checkbox-group-horizontal{display:flex;gap:10px;flex-wrap:wrap}.detection-classes-grid{display:flex;flex-direction:column;gap:12px}.detection-class-group{display:flex;flex-direction:column;gap:6px}.detection-class-label{font-size:12px;color:var(--color-text-muted);margin-bottom:2px}.checkbox-subgroup{border-left:2px solid var(--color-border);padding-left:12px;margin-left:4px}.checkbox-subgroup-label{display:block;font-size:12px;color:var(--color-text-muted);margin-bottom:8px}.checkbox-item-compact{display:flex;align-items:center;gap:8px;padding:10px 14px;background:rgba(36,48,69,.2);border:1px solid var(--color-border);border-radius:8px;cursor:pointer;transition:all .15s}.checkbox-item-compact:hover{background:rgba(36,48,69,.35)}.checkbox-item-compact.checked{background:rgba(36,48,69,.4);border-color:rgba(100,150,200,.3)}.checkbox-item-compact input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-online-text)}.btn-secondary{padding:10px 16px;background:rgba(100,140,200,.15);border:1px solid rgba(100,140,200,.3);border-radius:8px;color:#a8c4e8;font-size:13px;cursor:pointer;transition:all .15s}.btn-secondary:hover:not(:disabled){background:rgba(100,140,200,.25);border-color:rgba(100,140,200,.5)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.config-page{display:grid;grid-template-columns:320px 1fr;grid-gap:16px;gap:16px;align-items:start}.config-sidebar{display:flex;flex-direction:column;gap:16px}.config-sidebar .card h3,.config-sidebar .card h4{margin-top:0;margin-bottom:12px}.device-list{display:flex;flex-direction:column;gap:6px}.device-option{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;background:rgba(36,48,69,.2);border:1px solid var(--color-border);border-radius:8px;cursor:pointer;transition:all .15s;text-align:left}.device-option:hover{background:rgba(36,48,69,.4)}.device-option.selected{background:rgba(74,222,128,.1);border-color:var(--color-online-border)}.device-info-grid{display:flex;flex-direction:column;gap:8px}.info-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid rgba(36,48,69,.3)}.info-row:last-child{border-bottom:none}.info-label{color:var(--color-text-muted);font-size:12px}.config-version{font-size:11px;font-weight:400;color:var(--color-online-text);background:var(--color-online-bg);padding:2px 8px;border-radius:10px;margin-left:8px}.config-version-badge{font-size:10px;color:var(--color-text-muted);background:rgba(36,48,69,.4);padding:2px 6px;border-radius:6px}.device-option-config{display:flex;align-items:center;gap:4px;margin-left:auto}.config-pending-badge{display:inline-block;margin-left:4px;color:var(--color-warning-text);font-size:11px}.config-mobile-section{display:flex;flex-direction:column;gap:16px}.calibration-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid rgba(36,48,69,.3)}.calibration-offsets{overflow-x:auto}.calibration-table{width:100%;border-collapse:collapse;font-size:12px}.calibration-table td,.calibration-table th{padding:6px 8px;text-align:right}.calibration-table th{color:var(--color-text-muted);font-weight:400;font-size:11px;border-bottom:1px solid rgba(36,48,69,.3)}.calibration-table td:first-child,.calibration-table th:first-child{text-align:left}.calibration-table .offset-label{color:var(--color-text-muted);font-size:11px;white-space:nowrap}.calibration-table td.mono{font-family:var(--font-mono);font-size:11px;color:var(--color-text)}.config-status-section{padding:10px;background:rgba(11,14,20,.4);border:1px solid var(--color-border);border-radius:8px}.config-status-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.config-status-label{font-size:12px;font-weight:500;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.badge.warning{background:var(--color-warning-bg);border-color:var(--color-warning-border);color:var(--color-warning-text)}.badge.small{font-size:10px;padding:2px 6px}.config-preview{background:rgba(11,14,20,.6);border:1px solid var(--color-border);border-radius:6px;padding:12px;margin:0;font-size:11px;overflow-x:auto;color:var(--color-text-muted)}.config-form-container .card h3{margin-top:0}.config-form{display:flex;flex-direction:column;gap:24px}.form-section h4{margin:0 0 12px;font-size:14px;color:var(--color-text);display:flex;align-items:center;gap:8px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:16px;gap:16px}.form-field{display:flex;flex-direction:column;gap:6px}.form-field label{font-size:12px;color:var(--color-text-muted);font-weight:500}.form-field input,.form-field select,.form-field textarea,.form-select{width:100%;box-sizing:border-box}.form-field select,.form-select{border-radius:10px;border:1px solid var(--color-border);background:#0b1220;color:var(--color-text);font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding:10px 36px 10px 10px}.form-field select:hover,.form-select:hover{border-color:rgba(100,140,200,.4)}.form-field select:focus,.form-select:focus{outline:none;border-color:rgba(100,140,200,.6);box-shadow:0 0 0 2px rgba(100,140,200,.1)}.checkbox-item.single{margin:0}.field-hint{font-size:11px;opacity:.7}.field-hint,.optional-tag{color:var(--color-text-muted)}.optional-tag{font-size:10px;font-weight:400;background:rgba(36,48,69,.4);padding:2px 6px;border-radius:4px}.checkbox-group{display:flex;flex-direction:column;gap:8px}.checkbox-item{display:flex;align-items:center;gap:12px;padding:12px 14px;background:rgba(36,48,69,.2);border:1px solid var(--color-border);border-radius:8px;cursor:pointer;transition:all .15s}.checkbox-item:hover{background:rgba(36,48,69,.35)}.checkbox-item.checked{background:rgba(36,48,69,.4);border-color:rgba(100,150,200,.3)}.checkbox-item input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--color-online-text)}.checkbox-label{display:flex;align-items:center;gap:12px;flex:1 1}.checkbox-desc{font-size:12px;color:var(--color-text-muted)}.form-actions{display:flex;flex-direction:column;gap:12px;padding-top:8px;border-top:1px solid var(--color-border)}.btn-primary{padding:12px 20px;background:linear-gradient(135deg,rgba(74,222,128,.2),rgba(74,222,128,.1));border:1px solid var(--color-online-border);color:var(--color-online-text);font-weight:500;cursor:pointer;transition:all .15s}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,rgba(74,222,128,.3),rgba(74,222,128,.15));filter:brightness(1.1)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-link{color:var(--color-accent);text-decoration:none;font-size:.85rem;font-weight:500;transition:color .15s,opacity .15s}.btn-link:hover{color:var(--color-online-text);text-decoration:underline}.status-message{padding:10px 14px;border-radius:8px;font-size:13px}.status-message.success{background:var(--color-online-bg);border:1px solid var(--color-online-border);color:var(--color-online-text)}.status-message.error{background:var(--color-type-seatbelt-bg);border:1px solid var(--color-type-seatbelt-border);color:var(--color-type-seatbelt-text)}.status-message.info{background:rgba(36,48,69,.4);border:1px solid var(--color-border);color:var(--color-text-muted)}.btn-timeline{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:linear-gradient(135deg,rgba(100,140,200,.2),rgba(100,140,200,.1));border:1px solid rgba(100,140,200,.4);border-radius:8px;color:#a8c4e8;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-timeline:hover{background:linear-gradient(135deg,rgba(100,140,200,.3),rgba(100,140,200,.15));transform:translateX(2px);box-shadow:0 2px 8px rgba(100,140,200,.25);border-color:rgba(100,140,200,.6);color:#c4daf0}.btn-timeline .btn-arrow{transition:transform .2s ease;font-weight:600}.btn-timeline:hover .btn-arrow{transform:translateX(3px)}.timeline-nav{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:rgba(36,48,69,.3);border-radius:8px;margin-bottom:16px;flex-wrap:wrap;gap:12px}.quick-filters{display:flex;gap:8px}.quick-filters button{padding:6px 12px;border-radius:6px;border:1px solid var(--color-border);background:transparent;color:var(--color-text-muted);font-size:13px;cursor:pointer;transition:all .15s}.quick-filters button:hover{background:rgba(100,140,200,.1);border-color:rgba(100,140,200,.3)}.quick-filters button.active{background:rgba(100,140,200,.2);border-color:rgba(100,140,200,.5);color:#a8c4e8}.date-picker{display:flex;align-items:center;gap:8px}.date-picker input[type=date]{padding:6px 10px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);font-size:13px;width:auto}.date-picker input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.8);cursor:pointer}.day-separator{display:flex;align-items:center;gap:12px;margin:24px 0 16px}.day-separator:first-child{margin-top:0}.day-separator .day-line{flex:1 1;height:1px;background:var(--color-border)}.day-separator .day-label{font-size:12px;font-weight:600;color:var(--color-text-muted);padding:4px 12px;background:rgba(36,48,69,.5);border-radius:4px}.session-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;margin-bottom:16px;overflow:hidden}.session-header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:rgba(74,106,154,.15);border-bottom:1px solid var(--color-border);cursor:pointer;transition:background .15s}.session-header:hover{background:rgba(74,106,154,.25)}.session-header .session-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:rgba(74,106,154,.3);border:1px solid rgba(74,106,154,.5);border-radius:6px;font-size:11px;font-weight:500;color:#a8c4e8}.session-header .session-id{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;color:var(--color-text-muted)}.session-header .session-time{margin-left:auto;font-size:12px;color:var(--color-text-muted)}.session-header .expand-icon{font-size:10px;color:var(--color-text-muted);transition:transform .2s;margin-left:8px}.session-content{padding:12px 16px}.violation-main{padding:12px;background:hsla(0,91%,71%,.08);border:1px solid var(--color-violation-border);border-radius:8px;margin-bottom:12px}.violation-main .violation-header{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.violation-main .type-badge{display:inline-block;padding:4px 10px;background:var(--color-violation-bg);border:1px solid var(--color-violation-border);color:var(--color-violation-text);border-radius:6px;font-size:13px;font-weight:500}.violation-main .confidence{font-size:13px;color:var(--color-text-muted)}.violation-main .violation-meta{margin-top:8px;font-size:11px;color:var(--color-text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.evidence-btn-timeline{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:rgba(100,140,200,.15);border:1px solid rgba(100,140,200,.3);border-radius:6px;color:#a8c4e8;font-size:12px;cursor:pointer;transition:all .15s;margin-left:auto}.evidence-btn-timeline:hover{background:rgba(100,140,200,.3);border-color:rgba(100,140,200,.5);color:#c4daf0;transform:scale(1.02)}.violation-details{display:flex;flex-wrap:wrap;gap:16px;margin-top:12px;padding-top:10px;border-top:1px solid rgba(36,48,69,.4)}.violation-details .violation-id,.violation-details .violation-time{display:flex;align-items:center;gap:8px}.violation-details .detail-label{font-size:11px;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.violation-details .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;color:var(--color-text);background:rgba(36,48,69,.4);padding:2px 8px;border-radius:4px}.warnings-list{border-left:2px solid var(--color-warning-border);padding-left:12px;margin-left:8px}.warnings-list .warning-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid rgba(36,48,69,.3)}.warnings-list .warning-item:last-child{border-bottom:none}.warnings-list .warning-badge{display:inline-block;padding:3px 8px;background:var(--color-warning-bg);border:1px solid var(--color-warning-border);color:var(--color-warning-text);border-radius:4px;font-size:11px;font-weight:500;min-width:70px;text-align:center}.warnings-list .warning-time{font-size:11px;color:var(--color-text-muted);margin-left:auto}.standalone-warning{padding:12px 16px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:8px;margin-bottom:12px;display:flex;align-items:center;gap:12px}.standalone-warning .warning-badge{display:inline-block;padding:4px 10px;background:var(--color-warning-bg);border:1px solid var(--color-warning-border);color:var(--color-warning-text);border-radius:6px;font-size:12px;font-weight:500}.standalone-warning .warning-meta{font-size:12px;color:var(--color-text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.standalone-warning .warning-time{margin-left:auto;font-size:12px;color:var(--color-text-muted)}.timeline-empty{text-align:center;padding:40px 20px;color:var(--color-text-muted)}.timeline-empty-icon{font-size:48px;margin-bottom:12px;opacity:.5}@media (max-width:1024px){.container{padding:20px 16px}.config-page{grid-template-columns:1fr}.timeline-nav{flex-direction:column;align-items:stretch;gap:12px}.quick-filters{flex-wrap:wrap}.date-picker,.quick-filters{justify-content:center}.realtime-stats{gap:8px}.stat-value{font-size:20px}.stat-label{font-size:10px}}@media (max-width:768px){.container{padding:16px 12px}h1{font-size:1.5rem;margin-bottom:12px}.nav-desktop{display:none}.nav-mobile-header{display:flex;align-items:center;justify-content:space-between;padding:8px 0;gap:12px}.nav-mobile-header .sse-indicator{margin-left:auto;padding:3px 10px;font-size:11px;background:rgba(36,48,69,.3)}.mobile-menu-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:transparent;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);cursor:pointer;transition:all .15s}.mobile-menu-toggle:hover{background:rgba(36,48,69,.4)}.mobile-menu-overlay{display:block;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:90;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.nav-mobile-menu{display:flex;flex-direction:column;position:fixed;top:0;left:-260px;width:260px;height:100vh;background:var(--color-bg-card);border-right:1px solid var(--color-border);padding:20px 0;z-index:100;transition:left .3s ease;overflow-y:auto}.nav-mobile-menu.open{left:0}.nav-mobile-link{display:flex;align-items:center;padding:16px 24px;color:var(--color-text);font-size:16px;font-weight:500;border-bottom:1px solid rgba(36,48,69,.4);transition:all .15s;text-decoration:none}.nav-mobile-link:hover{background:rgba(36,48,69,.4)}.nav-mobile-link.active{color:var(--color-online-text);background:rgba(74,222,128,.1);border-right:3px solid var(--color-online-text)}.sse-indicator{padding:4px 8px;font-size:11px}.sse-stats{display:none}.grid2{grid-template-columns:1fr}.card{padding:14px;border-radius:12px}.card h3{font-size:1rem;margin-bottom:8px}.device-row{grid-template-columns:55px 1fr 20px;gap:18px;align-items:center}.device-cards{grid-template-columns:1fr;gap:10px}.device-card{padding:14px 16px}.device-card-header{margin-bottom:12px}.device-card-id{font-size:13px}.device-card-details{gap:10px}.violation-cards{grid-template-columns:1fr;gap:16px}.violation-card{padding:14px 16px}.violation-card-header{margin-bottom:12px;gap:10px}.violation-card-device{font-size:13px}.violation-card-details{grid-template-columns:repeat(3,1fr);gap:10px}.violation-card-warnings{position:relative}.violation-card-warnings-row{position:absolute;top:-28px;left:0;height:24px}.evidence-preview-btn-mobile{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:rgba(100,140,200,.15);border:1px solid rgba(100,140,200,.3);border-radius:4px;color:#a8c4e8;cursor:pointer;transition:all .15s;flex-shrink:0}.evidence-preview-btn-mobile:hover{background:rgba(100,140,200,.3);border-color:rgba(100,140,200,.5);color:#c4daf0}.violation-row{grid-template-columns:65px 1fr 36px 20px;gap:8px;align-items:center}.overview-row{grid-template-columns:60px 22px 1fr 28px 20px;gap:12px;align-items:center}.overview-row-activity{grid-template-columns:80px 55px 22px 1fr 20px;gap:16px;align-items:center}.badge.activity-kind{min-width:75px;padding:2px 6px;font-size:10px}.overview-evidence-col{width:22px;height:22px}.evidence-btn-inline{width:20px;height:20px}.overview-row .hide-mobile,.overview-row-activity .hide-mobile{display:none!important}.evidence-placeholder,.evidence-preview-btn-small{width:22px;height:22px}.activity-row-with-evidence .evidence-placeholder,.activity-row-with-evidence .evidence-preview-btn-small,.violation-row-with-evidence .evidence-placeholder,.violation-row-with-evidence .evidence-preview-btn-small{margin-left:0;margin-right:0}.activity-row-with-evidence .mono{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.realtime-stats{grid-template-columns:repeat(3,1fr);gap:8px}.stat-item{padding:8px 6px;text-align:center}.stat-value{font-size:20px}.stat-label{font-size:10px}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -14px;padding:0 14px}.table{min-width:600px}td,th{padding:8px 6px;font-size:13px}.filter-bar{padding:8px;gap:6px}.filter-chip{padding:4px 8px;font-size:11px}.form-grid{grid-template-columns:1fr;gap:12px}.session-header{padding:10px 12px;flex-wrap:wrap}.session-header .session-time{flex-basis:100%;margin-left:0;margin-top:6px;font-size:11px}.session-content{padding:10px 12px}.violation-main .violation-header{gap:8px}.badge{padding:2px 8px;font-size:11px;min-width:50px}.badge.activity-kind{min-width:80px}button{padding:10px 12px;font-size:14px}.btn-primary{padding:12px 16px}.btn-timeline{padding:8px 12px;font-size:12px}.device-list{gap:4px}.device-option{padding:8px 10px;gap:8px}.checkbox-item{padding:10px 12px;gap:10px}.day-separator{margin:16px 0 12px}.day-separator .day-label{font-size:11px;padding:3px 10px}.standalone-warning{padding:10px 12px;flex-wrap:wrap;gap:8px}.standalone-warning .warning-time{margin-left:0;flex-basis:100%;text-align:left}}@media (max-width:480px){.container{padding:12px 10px}h1{font-size:1.3rem}.nav{gap:4px 12px;font-size:13px}.sse-indicator{padding:3px 6px;font-size:10px}.sse-dot{width:6px;height:6px}.card{padding:12px;border-radius:10px}.card h3{font-size:.95rem}.device-row{grid-template-columns:50px 1fr 18px;gap:16px}.device-card{padding:12px 14px}.device-card-header{gap:6px;margin-bottom:10px}.device-card-header .gps-indicator,.device-card-header .motion-indicator,.device-card-header .signal-indicator{width:20px;height:20px}.device-card-id{font-size:12px}.device-card-details{gap:8px}.device-card-label{font-size:9px}.device-card-value{font-size:11px}.violation-card{padding:12px 14px}.violation-card-header{gap:10px;margin-bottom:10px}.violation-card-device{font-size:12px}.violation-card-details{gap:8px}.violation-card-label{font-size:9px}.violation-card-value{font-size:11px}.violation-row{grid-template-columns:50px 1fr 28px 18px;gap:10px}.violation-row .mono{font-size:10px}.overview-row{grid-template-columns:50px 20px 1fr 24px 18px;gap:10px;align-items:center}.overview-row-activity{grid-template-columns:70px 50px 20px 1fr 18px;gap:14px;align-items:center}.badge.activity-kind{font-size:9px;min-width:65px;padding:2px 5px}.overview-evidence-col{width:20px;height:20px}.evidence-btn-inline{width:18px;height:18px}.overview-row-device{font-size:10px}.evidence-placeholder,.evidence-preview-btn-small{width:20px;height:20px}.realtime-stats{grid-template-columns:repeat(3,1fr);gap:6px}.stat-item{padding:6px 4px;text-align:center}.stat-value{font-size:16px}.stat-label{font-size:9px}.table{min-width:500px}td,th{padding:6px 4px;font-size:12px}.badge{padding:2px 6px;font-size:10px;min-width:45px}.timeline-nav{padding:10px 12px}.quick-filters{gap:6px}.quick-filters button{padding:5px 10px;font-size:12px}.date-picker input[type=date]{padding:5px 8px;font-size:12px}.session-card{border-radius:10px;margin-bottom:12px}.session-header{padding:8px 10px}.session-header .session-badge{padding:3px 8px;font-size:10px}.session-header .session-id{font-size:11px}.session-content{padding:8px 10px}.violation-main{padding:10px}.violation-main .type-badge{padding:3px 8px;font-size:12px}.warnings-list{padding-left:10px;margin-left:4px}.warnings-list .warning-item{padding:6px 0;gap:8px;flex-wrap:wrap}.warnings-list .warning-badge{min-width:60px;font-size:10px;padding:2px 6px}.warnings-list .warning-time{flex-basis:100%;margin-left:0;text-align:left}input,textarea{padding:10px;font-size:14px}button{padding:10px;font-size:13px}.config-form{gap:16px}.form-section h4{font-size:13px}.checkbox-item{padding:10px;gap:8px}.checkbox-item input[type=checkbox]{width:16px;height:16px}.checkbox-desc{font-size:11px}.filter-dropdown{min-width:100px;padding:4px}.filter-option{padding:5px 8px;font-size:11px}.timeline-empty{padding:30px 16px}.timeline-empty-icon{font-size:36px}}@media (hover:none) and (pointer:coarse){.clickable-item{min-height:44px}.filter-chip{min-height:36px;padding:8px 12px}.nav a{display:flex;align-items:center}.nav a,button{min-height:44px}.checkbox-item,.device-option{min-height:48px}.quick-filters button{min-height:40px}.clickable-item:hover{background:transparent}.clickable-item:active{background:rgba(36,48,69,.4)}.filter-chip:hover{filter:none}.filter-chip:active{filter:brightness(1.2)}}@media (max-height:500px) and (orientation:landscape){.container{padding:10px 16px}h1{font-size:1.2rem;margin-bottom:8px}.nav{padding:6px 0}.card{padding:10px}.realtime-stats{grid-template-columns:repeat(3,1fr)}.realtime-stats .stat-item:last-child{grid-column:span 1}.stat-item{padding:8px}.stat-value{font-size:16px}}@media print{body{background:#fff;color:#000}.btn-timeline,.filter-bar,.nav,.sse-indicator,button{display:none}.card{border:1px solid #ccc;page-break-inside:avoid;break-inside:avoid}.badge,.card{background:#fff}.badge{border:1px solid #666;color:#000}}.hide-mobile{display:block}.show-mobile{display:none}@media (max-width:768px){.hide-mobile{display:none!important}.show-mobile{display:block!important}}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.scroll-x::-webkit-scrollbar{height:6px}.scroll-x::-webkit-scrollbar-track{background:rgba(36,48,69,.3);border-radius:3px}.scroll-x::-webkit-scrollbar-thumb{background:rgba(100,140,200,.4);border-radius:3px}.scroll-x::-webkit-scrollbar-thumb:hover{background:rgba(100,140,200,.6)}.language-switcher{display:flex;align-items:center;gap:2px;padding:2px;background:rgba(36,48,69,.4);border-radius:6px;margin-left:8px}.language-switcher.pending{opacity:.6;pointer-events:none}.lang-btn{padding:4px 8px;background:transparent;border:none;border-radius:4px;color:var(--color-text-muted);font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;min-width:28px;text-align:center}.lang-btn:hover:not(.active){background:rgba(100,140,200,.2);color:var(--color-text)}.lang-btn.active{background:rgba(148,163,184,.25);color:#e2e8f0}.lang-separator{color:var(--color-border);font-size:10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.language-switcher{margin-left:4px;padding:1px}.lang-btn{padding:3px 6px;font-size:10px;min-width:24px}}.lightbox-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.92);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}.lightbox-container{display:flex;flex-direction:column;max-width:95vw;max-height:95vh;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,.5)}.lightbox-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:rgba(36,48,69,.5);border-bottom:1px solid var(--color-border);gap:16px}.lightbox-title{display:flex;align-items:center;gap:12px}.lightbox-actions{display:flex;align-items:center;gap:6px}.lightbox-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:transparent;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-muted);cursor:pointer;transition:all .15s;text-decoration:none}.lightbox-btn:hover:not(:disabled){background:rgba(100,140,200,.2);border-color:rgba(100,140,200,.4);color:var(--color-text)}.lightbox-btn:disabled{opacity:.4;cursor:not-allowed}.lightbox-close:hover{background:hsla(0,91%,71%,.2);border-color:hsla(0,91%,71%,.4);color:var(--color-violation-text)}.lightbox-separator{width:1px;height:20px;background:var(--color-border);margin:0 4px}.lightbox-zoom-level{font-size:12px;color:var(--color-text-muted);min-width:45px;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.lightbox-content{position:relative;flex:1 1;display:flex;align-items:center;justify-content:center;overflow:auto;padding:24px;min-height:300px;background:rgba(0,0,0,.3)}.lightbox-image{max-width:100%;max-height:calc(95vh - 100px);object-fit:contain;transition:transform .2s ease,opacity .3s ease;border-radius:4px;box-shadow:0 4px 16px rgba(0,0,0,.4)}.lightbox-error,.lightbox-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:12px}.lightbox-spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-online-text);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.lightbox-error span{color:var(--color-type-seatbelt-text);font-size:14px}.evidence-thumbnail-container{margin-top:20px}.evidence-thumbnail{display:flex;align-items:center;gap:16px;padding:16px;background:rgba(36,48,69,.3);border:1px solid var(--color-border);border-radius:8px;cursor:pointer;transition:all .15s}.evidence-thumbnail:hover{background:rgba(36,48,69,.5);border-color:rgba(100,140,200,.4)}.evidence-thumbnail-image{width:120px;height:80px;object-fit:cover;border-radius:6px;border:1px solid var(--color-border);background:rgba(0,0,0,.3)}.evidence-thumbnail-info{display:flex;flex-direction:column;gap:4px}.evidence-thumbnail-label{font-size:14px;font-weight:500;color:var(--color-text);display:flex;align-items:center}.evidence-thumbnail-hint{font-size:12px;color:var(--color-text-muted)}.evidence-preview-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:rgba(100,140,200,.15);border:1px solid rgba(100,140,200,.3);border-radius:6px;color:#a8c4e8;cursor:pointer;transition:all .15s}.evidence-preview-btn:hover{background:rgba(100,140,200,.3);border-color:rgba(100,140,200,.5);color:#c4daf0;transform:scale(1.05)}.evidence-preview-btn:active{transform:scale(.95)}.evidence-loading{font-size:10px;color:var(--color-text-muted)}.evidence-preview-btn-mobile{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:rgba(100,140,200,.2);border:1px solid rgba(100,140,200,.3);border-radius:6px;color:#a8c4e8;cursor:pointer;transition:all .15s;flex-shrink:0}.evidence-preview-btn-mobile:hover{background:rgba(100,140,200,.35);border-color:rgba(100,140,200,.5)}.evidence-placeholder{display:inline-block;width:24px;height:24px;flex-shrink:0}.violation-card-link{display:block;text-decoration:none;color:inherit}.evidence-preview-btn-small{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:rgba(100,140,200,.15);border:1px solid rgba(100,140,200,.3);border-radius:4px;color:#a8c4e8;cursor:pointer;transition:all .15s;flex-shrink:0;font-size:10px}.evidence-preview-btn-small:hover{background:rgba(100,140,200,.3);border-color:rgba(100,140,200,.5);color:#c4daf0;transform:scale(1.1)}.violation-row-with-evidence{grid-template-columns:70px 24px 1fr auto 28px 20px;gap:10px}.activity-row-with-evidence{grid-template-columns:auto 70px 24px 1fr 70px 80px 20px;gap:10px}.activity-row-with-evidence .evidence-placeholder,.activity-row-with-evidence .evidence-preview-btn-small,.violation-row-with-evidence .evidence-placeholder,.violation-row-with-evidence .evidence-preview-btn-small{margin-left:12px;margin-right:12px}@media (max-width:768px){.lightbox-container{max-width:100vw;max-height:100vh;border-radius:0}.lightbox-header{padding:10px 12px;flex-wrap:wrap}.lightbox-title{gap:8px}.lightbox-title .mono{display:none}.lightbox-btn{width:32px;height:32px}.lightbox-separator,.lightbox-zoom-level{display:none}.lightbox-content{padding:12px}.evidence-thumbnail{flex-direction:column;align-items:flex-start;gap:12px}.evidence-thumbnail-image{width:100%;height:auto;max-height:200px}}.motion-indicator{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border-radius:4px;font-size:12px;flex-shrink:0}.motion-indicator.motion-moving{color:var(--color-online-text);background:rgba(74,222,128,.15)}.motion-indicator.motion-stationary{color:#94a3b8;background:rgba(148,163,184,.15)}.motion-indicator.motion-unknown{color:var(--color-text-muted);background:hsla(240,9%,43%,.15)}.motion-indicator.motion-stale{opacity:.5;border:1px dashed var(--color-border)}.motion-label{font-size:11px}.device-row-with-motion{display:flex;align-items:center;gap:12px}.device-row-with-motion .badge{flex-shrink:0;min-width:58px}.device-row-with-motion .gps-indicator,.device-row-with-motion .motion-indicator{flex-shrink:0}.device-row-with-motion .mono{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-row-with-motion .small.muted{flex-shrink:0;text-align:right;min-width:70px}.device-row-with-motion .arrow-icon{flex-shrink:0;opacity:.5;margin-left:auto}@media (max-width:768px){.device-row-with-motion{gap:10px}.device-row-with-motion .badge{min-width:50px;font-size:11px;padding:2px 6px}.motion-indicator{padding:2px 4px}}@media (max-width:480px){.device-row-with-motion{gap:8px}.device-row-with-motion .badge{min-width:46px;font-size:10px;padding:2px 5px}}.signal-indicator{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border-radius:4px;font-size:12px;flex-shrink:0}.signal-indicator.signal-excellent svg{color:#4ade80}.signal-indicator.signal-good svg{color:#86efac}.signal-indicator.signal-fair svg{color:#fbbf24}.signal-indicator.signal-poor svg{color:#f87171}.signal-indicator.signal-none svg{color:#6b7280}.signal-indicator.signal-wifi svg{color:var(--color-online-text)}.signal-indicator.signal-stale{opacity:.5}.signal-indicator.signal-stale svg{border:1px dashed;border-radius:4px;padding:1px}.signal-indicator{position:relative;cursor:pointer}.signal-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);z-index:1000;min-width:180px;background:#1a2538;border:1px solid var(--color-border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.4);animation:signal-tooltip-fade-in .15s ease-out}.signal-tooltip:after{border:6px solid transparent;border-top:6px solid var(--color-border)}.signal-tooltip:after,.signal-tooltip:before{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%)}.signal-tooltip:before{margin-top:-1px;border:5px solid transparent;border-top-color:#1a2538;z-index:1}@keyframes signal-tooltip-fade-in{0%{opacity:0;transform:translateX(-50%) translateY(4px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.signal-tooltip-content{padding:10px 12px}.signal-tooltip-header{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid rgba(36,48,69,.6)}.signal-tooltip-header.signal-excellent{color:#4ade80}.signal-tooltip-header.signal-good{color:#86efac}.signal-tooltip-header.signal-fair{color:#fbbf24}.signal-tooltip-header.signal-poor{color:#f87171}.signal-tooltip-header.signal-none{color:#6b7280}.signal-tooltip-header.signal-wifi{color:var(--color-online-text)}.signal-tooltip-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:12px}.signal-tooltip-label{color:var(--color-text-muted)}.signal-tooltip-value{color:var(--color-text)}.signal-tooltip-value.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.signal-tooltip-badge{background:rgba(36,48,69,.6);padding:2px 6px;border-radius:4px;font-size:11px;font-weight:500}.signal-tooltip-badge.wifi{background:rgba(74,222,128,.2);color:var(--color-online-text)}.signal-tooltip-badge.lte{background:rgba(129,140,248,.2);color:#818cf8}.signal-tooltip-badge.hsdpa,.signal-tooltip-badge.umts,.signal-tooltip-badge.wcdma{background:rgba(96,165,250,.2);color:#60a5fa}.signal-tooltip-badge.edge,.signal-tooltip-badge.gprs{background:rgba(251,191,36,.2);color:#fbbf24}.signal-tooltip-badge.gsm{background:rgba(156,163,175,.2);color:#9ca3af}.signal-tooltip-section{margin-bottom:8px}.signal-tooltip-section-title{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted);margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid rgba(36,48,69,.4)}.signal-tooltip-metrics{background:rgba(36,48,69,.3);padding:8px 12px;margin:0 -12px}.signal-tooltip-hint{font-size:11px;color:var(--color-text-muted);font-style:italic;margin-top:8px}.signal-bars{display:flex;align-items:flex-end;gap:2px;height:14px;width:20px}.signal-bar{flex:1 1;background:hsla(240,9%,43%,.3);border-radius:1px;transition:background-color .2s}.signal-bar.active{background:currentColor}.signal-tooltip-stale{margin-top:8px;padding-top:8px;border-top:1px solid rgba(36,48,69,.6);font-size:11px;color:var(--color-warning-text);font-style:italic}.signal-label{font-size:10px;font-family:ui-monospace,monospace;text-transform:uppercase;color:var(--color-text-muted)}.network-mode-selector{display:flex;flex-direction:column;gap:8px}.network-mode-option{display:flex;align-items:flex-start;padding:12px;border:1px solid var(--color-border);border-radius:8px;background:rgba(36,48,69,.2);cursor:pointer;transition:all .15s}.network-mode-option:hover:not(.disabled){background:rgba(36,48,69,.4);border-color:rgba(100,140,200,.4)}.network-mode-option.selected{background:rgba(74,222,128,.1);border-color:var(--color-online-border)}.network-mode-option.disabled{opacity:.5;cursor:not-allowed}.network-mode-option input[type=radio]{display:none}.network-mode-content{display:flex;align-items:flex-start;gap:12px}.network-mode-content svg{color:var(--color-text-muted);flex-shrink:0;margin-top:2px}.network-mode-option.selected .network-mode-content svg{color:var(--color-online-text)}.network-mode-text{display:flex;flex-direction:column;gap:2px}.network-mode-label{font-weight:500;color:var(--color-text)}.network-mode-desc{font-size:12px;color:var(--color-text-muted)}.gps-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.gps-modal-content{position:relative;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;max-width:500px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 50px rgba(0,0,0,.5)}.gps-modal-header{display:flex;align-items:center;justify-content:flex-start;padding:16px 56px 16px 20px;border-bottom:1px solid var(--color-border);background:var(--color-bg-card)}.gps-modal-header h3{display:flex;align-items:center;gap:8px;margin:0;font-size:16px;font-weight:600;color:var(--color-text)}.gps-modal-header h3 svg{color:var(--color-online-text)}.gps-modal-device{font-size:12px;font-weight:500;color:var(--color-text-muted);background:rgba(100,140,200,.15);padding:2px 8px;border-radius:4px;margin-left:8px}.gps-modal-close{position:absolute;top:10px;right:10px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:hsla(240,9%,43%,.3);color:var(--color-text);border-radius:8px;cursor:pointer;transition:all .15s;z-index:10}.gps-modal-close:hover{background:rgba(239,68,68,.3);color:#ef4444;transform:scale(1.05)}.gps-modal-body{padding:20px}.gps-map-container{margin-bottom:16px;border-radius:8px;overflow:hidden;border:1px solid var(--color-border)}.gps-details-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:12px;gap:12px;margin-bottom:16px}.gps-detail-item{display:flex;flex-direction:column;gap:4px;padding:12px;background:rgba(36,48,69,.3);border-radius:8px}.gps-detail-item svg{color:var(--color-text-muted);margin-bottom:4px}.gps-detail-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted)}.gps-detail-value{font-size:14px;font-weight:500;color:var(--color-text)}.gps-detail-value.mono{font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:13px}.gps-detail-value.small{font-size:12px}.gps-osm-link{text-align:center}.gps-osm-link a{display:inline-flex;align-items:center;gap:6px;color:var(--color-primary);font-size:13px;text-decoration:none;padding:8px 16px;border-radius:6px;transition:all .15s}.gps-osm-link a:hover{background:rgba(74,144,226,.1);text-decoration:underline}.gps-indicator{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;border-radius:4px;cursor:default;color:var(--color-text-muted);opacity:.3;flex-shrink:0;padding:0}.gps-indicator.active{cursor:pointer;opacity:1;color:var(--color-online-text);transition:all .15s}.gps-indicator.active:hover{background:rgba(74,222,128,.15);transform:scale(1.1)}.gps-indicator.disabled{opacity:.25;cursor:default}.gps-settings-section{margin-top:24px}.gps-mode-selector{display:flex;flex-direction:column;gap:8px}.gps-mode-option{display:flex;align-items:flex-start;padding:12px;border:1px solid var(--color-border);border-radius:8px;background:rgba(36,48,69,.2);cursor:pointer;transition:all .15s}.gps-mode-option:hover:not(.disabled){background:rgba(36,48,69,.4);border-color:rgba(100,140,200,.4)}.gps-mode-option.selected{background:rgba(74,222,128,.1);border-color:var(--color-online-border)}.gps-mode-option input[type=radio]{display:none}.gps-mode-content{display:flex;align-items:flex-start;gap:12px}.gps-mode-content svg{color:var(--color-text-muted);flex-shrink:0;margin-top:2px}.gps-mode-option.selected .gps-mode-content svg{color:var(--color-online-text)}.gps-mode-text{display:flex;flex-direction:column;gap:2px}.gps-mode-label{font-weight:500;color:var(--color-text)}.gps-mode-desc{font-size:12px;color:var(--color-text-muted)}.gps-location-card{margin-top:20px;padding-top:20px;border-top:1px solid var(--color-border)}.gps-location-map-wrapper{position:relative;border-radius:10px;overflow:hidden;cursor:pointer;border:1px solid var(--color-border);transition:all .2s}.gps-location-map-wrapper:hover{border-color:var(--color-online-text);box-shadow:0 0 0 2px rgba(74,222,128,.15)}.gps-location-map-wrapper:focus{outline:none;border-color:var(--color-online-text);box-shadow:0 0 0 2px rgba(74,222,128,.25)}.gps-location-mini-map{width:100%;height:140px;transition:opacity .3s}.gps-location-map-overlay{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px;background:linear-gradient(transparent,rgba(0,0,0,.7));color:#fff;font-size:13px;font-weight:500;opacity:0;transition:opacity .2s}.gps-location-map-wrapper:hover .gps-location-map-overlay{opacity:1}.gps-location-details{margin-top:14px;display:flex;flex-direction:column;gap:10px}.gps-location-detail-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:rgba(36,48,69,.3);border-radius:8px}.gps-location-icon{color:var(--color-text-muted);flex-shrink:0}.gps-location-label{font-size:12px;color:var(--color-text-muted);min-width:90px}.gps-location-value{font-size:14px;font-weight:500;color:var(--color-text);margin-left:auto}.gps-location-value.mono{font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:13px}.gps-location-actions{margin-top:14px;display:flex;gap:10px}.gps-location-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;text-decoration:none;border:1px solid transparent;flex:1 1}.gps-location-btn.primary{background:rgba(74,222,128,.15);border-color:var(--color-online-border);color:var(--color-online-text)}.gps-location-btn.primary:hover{background:rgba(74,222,128,.25);border-color:var(--color-online-text)}.gps-location-btn.secondary{background:rgba(100,140,200,.1);border-color:var(--color-border);color:var(--color-text-muted)}.gps-location-btn.secondary:hover{background:rgba(100,140,200,.2);border-color:rgba(100,140,200,.4);color:var(--color-text)}@media (max-width:600px){.gps-location-mini-map{height:120px}.gps-location-actions{flex-direction:column}.gps-location-detail-row{flex-wrap:wrap}.gps-location-label{min-width:auto;flex:1 1}.gps-location-value{margin-left:0;width:100%;margin-top:4px}}