*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;color:#1e293b;background:#f1f5f9}.app{display:flex;flex-direction:column;height:100%}header{display:flex;align-items:center;gap:12px;padding:10px 16px;background:#0f172a;color:#f8fafc}header h1{font-size:16px;margin:0;font-weight:600}header .app-title{white-space:nowrap}header .title-short{display:none}header .spacer{flex:1}.badge{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}@media(max-width:500px){header{gap:8px;padding:10px 12px}header .title-full{display:none}header .title-short{display:inline}header .settings-btn .btn-label{display:none}}.badge.demo{background:#f59e0b;color:#451a03}.badge.error-badge{background:#ef4444;color:#fff}button{font:inherit;border:1px solid #cbd5e1;background:#fff;border-radius:6px;padding:4px 10px;cursor:pointer}button:hover{background:#f1f5f9}button.ghost{background:transparent;color:#cbd5e1;border-color:#334155}button.ghost:hover{background:#1e293b}button.active{background:#0f172a;color:#fff;border-color:#0f172a}header .sidebar-toggle{background:transparent;color:#f8fafc;border-color:#334155;padding:3px 10px;font-size:15px;line-height:1.3}header .sidebar-toggle:hover{background:#1e293b}.body{display:flex;flex:1;min-height:0;position:relative}aside{width:280px;padding:12px;overflow-y:auto;background:#fff;border-right:1px solid #e2e8f0}aside.hidden{display:none}@media(max-width:700px){aside{position:absolute;top:0;bottom:0;left:0;z-index:20;width:min(85vw,320px);box-shadow:4px 0 18px #0f172a40}}aside h2{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin:14px 0 8px}aside h2:first-child{margin-top:0}.map{flex:1}.map-loading{display:flex;align-items:center;justify-content:center;color:#94a3b8;font-size:14px;background:#e8edf3}.device-list{margin:0;padding:0}.device-group{margin-bottom:6px}.device-group.cluster{border:1px solid #dbeafe;background:#f8fafc;border-radius:10px;padding:3px}.members{margin:2px 0 2px 16px;padding-left:10px;border-left:2px solid #93c5fd}.device.member{padding:6px 8px}.member-arrow{color:#60a5fa;font-weight:700}.gateway-badge{margin-left:6px;font-size:10px;font-weight:700;color:#1d4ed8;background:#dbeafe;padding:1px 6px;border-radius:8px;vertical-align:1px}.device{padding:8px 10px;border-radius:8px;cursor:pointer;border:1px solid transparent}.device:hover{background:#f8fafc}.device.selected{background:#eff6ff;border-color:#bfdbfe}.device.stale{opacity:.55}.device-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.device-name{font-weight:600}.device-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:#64748b;font-size:12px;margin-top:2px}.device-config{margin-left:auto}.motion-chip{font-size:10px;font-weight:700;color:#fff;padding:1px 7px;border-radius:9px}.empty{color:#64748b}.device-nogps{margin-top:3px;font-size:12px;color:#92400e;background:#fef3c7;border-radius:5px;padding:2px 6px}.device-lost{margin-top:3px;font-size:12px;font-weight:700;color:#b91c1c;background:#fee2e2;border-radius:5px;padding:2px 6px}.device.lost{opacity:1}.device-overdue{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:3px;font-size:12px;border-radius:5px;padding:2px 6px}.device-overdue.late{color:#92400e;background:#fef3c7}.device-overdue.lost{color:#b91c1c;background:#fee2e2;font-weight:700}.overdue-dismiss{flex:none;border:none;background:transparent;cursor:pointer;color:inherit;opacity:.6;font-size:12px;line-height:1;padding:0 2px}.overdue-dismiss:hover{opacity:1}.alerts ul{list-style:none;margin:0;padding:0}.alert{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:8px;margin-bottom:6px;background:#fef2f2;border:1px solid #fecaca}.alert-fence_enter{background:#f0fdf4;border-color:#bbf7d0}.alert-panic{background:#fee2e2;border-color:#f87171}.alert-low_batt{background:#fffbeb;border-color:#fde68a}.alert-offline{background:#f1f5f9;border-color:#cbd5e1}.alert-xfarm_relay{background:#fee2e2;border:2px solid #dc2626;align-items:flex-start}.alert-time{font-size:11px;color:#64748b}.alert-detail{font-size:12px;color:#7f1d1d;margin-top:4px;line-height:1.35}.add-collar-btn{margin-top:6px;width:100%;padding:8px 10px;font-weight:700}.add-collar{display:flex;flex-direction:column;gap:6px;margin-top:6px}.setup-instructions{font-size:12px;color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:8px 10px}.setup-instructions p{margin:0 0 4px}.setup-instructions ol{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:2px}.setup-instructions code{font-size:11px;background:#e2e8f0;border-radius:4px;padding:1px 4px}.led-r{color:#dc2626;font-weight:600}.led-g{color:#16a34a;font-weight:600}.led-b{color:#2563eb;font-weight:600}.add-collar input{font:inherit;padding:6px 8px;border:1px solid #cbd5e1;border-radius:6px}.add-collar-buttons{display:flex;gap:6px}.add-collar-title{margin:0;font-weight:700;color:#16a34a}.add-collar .error{color:#dc2626;margin:0;font-size:12px}.token-warning{margin:0;font-size:12px;color:#92400e;background:#fef3c7;border-radius:5px;padding:4px 6px}.token-box{display:block;font-size:11px;background:#0f172a;color:#f8fafc;border-radius:6px;padding:6px 8px;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.provision-status{margin:0;font-size:12px;color:#2563eb}.add-collar-link{align-self:flex-start;border:none;background:none;padding:0;font:inherit;font-size:12px;color:#2563eb;cursor:pointer;text-decoration:underline}.add-collar-link:hover{background:none}.add-collar-link:disabled{opacity:.6;cursor:default}.device-remove{border:none;background:none;color:#94a3b8;font-size:11px;padding:0 2px;text-decoration:underline}.device-remove:hover{color:#dc2626;background:none}.device-config{border:none;background:none;color:#94a3b8;font-size:11px;padding:0 2px;text-decoration:underline}.device-config:hover{color:#2563eb;background:none}.cfg-badge{font-size:10px;font-weight:700;padding:1px 6px;border-radius:9px;white-space:nowrap}.cfg-badge.pending{background:#fef3c7;color:#92400e}.cfg-badge.synced{background:#dcfce7;color:#166534}.fw-badge{font-size:10px;font-weight:700;padding:1px 6px;border-radius:8px;background:#e2e8f0;color:#334155;white-space:nowrap}.fw-badge.staged{background:#dbeafe;color:#1d4ed8}.fw-badge.unknown{background:#f1f5f9;color:#94a3b8}.fw-badge.orphaned{background:#f1f5f9;color:#94a3b8;text-decoration:line-through}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:16px}.modal{width:360px;max-width:100%;max-height:calc(100dvh - 32px);overflow-y:auto;background:#fff;border-radius:12px;padding:18px;box-shadow:0 12px 40px #0f172a59}.modal h3{margin:0 0 10px;font-size:15px}.modal-danger{margin:0 0 8px;font-size:13px;color:#b91c1c;background:#fee2e2;border:1px solid #fecaca;border-radius:8px;padding:8px 10px}.modal-danger p{margin:0 0 6px}.modal-danger p:last-child{margin-bottom:0}.cfg-radio.danger-ack{color:#b91c1c;font-weight:600}.modal-note{margin:0 0 8px;font-size:12px;color:#64748b}.modal-buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.settings-tabs{display:flex;gap:4px;margin:10px 0 2px;border-bottom:1px solid #e2e8f0}.settings-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:6px 16px;font-size:13px;font-weight:600;color:#64748b;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.settings-tab:hover{color:#0f172a}.settings-tab.active{color:#2563eb;border-bottom-color:#2563eb}.settings-section{margin-top:4px;padding-top:12px;border-top:1px solid #e2e8f0}.settings-section h4{margin:0 0 6px;font-size:13px}.settings-section .token-box{margin-top:4px;letter-spacing:1px}.settings-error{margin:6px 0 0;font-size:12px;color:#dc2626}.settings-info{margin:6px 0 0;font-size:12px;color:#16a34a}.settings-form{display:flex;flex-direction:column;gap:6px}.settings-form input{font:inherit;padding:6px 8px;border:1px solid #cbd5e1;border-radius:6px}.settings-form.settings-inline{flex-direction:row}.settings-form.settings-inline input{flex:1}.modal-wide{width:460px}.cfg-status.pending{color:#b45309;font-weight:600}.cfg-status.synced{color:#16a34a;font-weight:600}.cfg-form{display:flex;flex-direction:column;gap:10px;margin-top:4px}.cfg-group{border:1px solid #e2e8f0;border-radius:8px;padding:6px 10px 8px;margin:0}.cfg-group legend{font-size:12px;font-weight:700;color:#334155;padding:0 4px}.cfg-field{display:flex;flex-direction:column;gap:3px;padding:6px 0}.cfg-field+.cfg-field{border-top:1px solid #f1f5f9}.cfg-label{font-size:12px;font-weight:600}.cfg-sched{color:#b45309}.cfg-input{display:flex;align-items:center;gap:6px}.cfg-input-col{flex-direction:column;align-items:flex-start;gap:6px}.cfg-checkline{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600}.cfg-checkline input{width:auto}.cfg-field-disabled{opacity:.5}.cfg-input input:disabled,.cfg-select:disabled{background:#f1f5f9;color:#94a3b8;cursor:not-allowed}.cfg-input input{font:inherit;width:120px;padding:5px 7px;border:1px solid #cbd5e1;border-radius:6px}.cfg-unit{font-size:11px;color:#64748b}.cfg-select{font:inherit;width:100%;max-width:220px;padding:5px 7px;border:1px solid #cbd5e1;border-radius:6px;background:#fff}.settings-form.settings-inline select{font:inherit;flex:1;padding:5px 7px;border:1px solid #cbd5e1;border-radius:6px;background:#fff}.cfg-range{font-size:11px;color:#94a3b8;line-height:1.3}.cfg-radio{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:12px;margin:5px 0}.cfg-radio input[type=number].cfg-inline-num{width:58px;padding:3px 5px;border:1px solid #cbd5e1;border-radius:5px;font:inherit}.cfg-inline-num:disabled{opacity:.5}.reporting-mode-choice{align-items:flex-start;flex-wrap:nowrap}.reporting-mode-choice input[type=radio]{margin-top:2px}.reporting-mode-help{color:#64748b;font-weight:400}.reporting-mode-tunables{margin:4px 0 4px 22px;padding-left:10px;border-left:2px solid #e2e8f0}.reporting-mode-tunables .modal-note{margin-top:0}.settings-managed-note{color:#92400e}.cfg-managed-value{color:#64748b;font-style:italic}button.danger{background:#dc2626;color:#fff;border-color:#dc2626}button.danger:hover{background:#b91c1c}button.danger:disabled{opacity:.6}.panel-header{display:flex;align-items:center;gap:6px;width:100%;border:none;background:none;padding:0;cursor:pointer;margin:14px 0 8px}.panel-header:hover{background:none}.panel-header h2{margin:0}.panel-chevron{font-size:10px;color:#94a3b8;width:10px}.panel-count{font-size:11px;font-weight:700;color:#64748b;background:#e2e8f0;border-radius:9px;padding:0 7px;margin-left:auto}.panel-body{display:flex;flex-direction:column}.fences ul{list-style:none;margin:0 0 8px;padding:0}.fence{padding:7px 9px;border-radius:8px;border:1px solid #e2e8f0;margin-bottom:6px}.fence.editing{border-color:#f59e0b;background:#fffbeb}.fence-top{display:flex;align-items:center;gap:6px}.fence-name{font-weight:600;flex:1;cursor:pointer;overflow-wrap:anywhere}.fence-name:hover{text-decoration:underline}.fence.inactive .fence-name{color:#94a3b8}.fence-actions{display:flex;gap:2px}.icon-btn{border:none;background:none;color:#94a3b8;padding:2px 6px;border-radius:6px;font-size:13px}.icon-btn:hover{background:#f1f5f9;color:#334155}.icon-btn.danger-hover:hover{color:#dc2626}.fence-active{display:flex;align-items:center;gap:4px;font-size:11px;color:#64748b;cursor:pointer;white-space:nowrap;margin-top:4px}.new-fence-btn{align-self:flex-start}.fence-hint{margin:0;font-size:12px;color:#d97706;font-weight:600}.zones ul{list-style:none;margin:0 0 8px;padding:0}.zone-meta{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap}.zone-badge{font-size:10px;font-weight:700;border-radius:9px;padding:1px 7px;white-space:nowrap}.zone-badge-cheap{background:#dcfce7;color:#166534}.zone-badge-normal{background:#fef3c7;color:#92400e}.zone-badge-high{background:#fee2e2;color:#991b1b}.zone-facts{font-size:11px;color:#64748b}.fence.inactive .zone-badge{opacity:.5}.zone-toolbar{gap:6px}.zone-name-input{font:inherit;padding:6px 8px;border:1px solid #cbd5e1;border-radius:6px;width:120px}.zone-field{display:flex;align-items:center;gap:4px;font-size:11px;color:#64748b}.zone-field select,.zone-field input{font:inherit;padding:4px 6px;border:1px solid #cbd5e1;border-radius:6px}.zone-field .cfg-inline-num{width:74px}.zone-pin{width:16px;height:16px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#4f46e5;border:2px solid #fff;box-shadow:0 1px 5px #0f172a80;cursor:grab}.zone-pin:active{cursor:grabbing}.zone-radius-handle{width:13px;height:13px;border-radius:50%;background:#fff;border:2px solid #4f46e5;box-shadow:0 1px 4px #0f172a66;cursor:ew-resize}.zone-badge-station{background:#cffafe;color:#155e75}.station-note{margin:0 0 6px;font-size:11px;color:#64748b;line-height:1.35}.station-add{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.station-add select{font:inherit;padding:4px 6px;border:1px solid #cbd5e1;border-radius:6px;max-width:100%}.station-toolbar{gap:6px}.station-caveat{font-size:11px;color:#0e7490;font-weight:600}.station-pin{width:16px;height:16px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#0891b2;border:2px solid #fff;box-shadow:0 1px 5px #0f172a80;cursor:grab}.station-pin:active{cursor:grabbing}.station-range-handle{width:13px;height:13px;border-radius:50%;background:#fff;border:2px solid #0891b2;box-shadow:0 1px 4px #0f172a66;cursor:ew-resize}.fence-vertex{width:14px;height:14px;border-radius:50%;background:#f59e0b;border:2px solid #fff;box-shadow:0 1px 4px #0f172a73;cursor:grab}.fence-vertex:active{cursor:grabbing}.fence-midpoint{width:12px;height:12px;border-radius:50%;background:#fff;border:2px dashed #d97706;opacity:.85;cursor:pointer}.fence-midpoint:hover{opacity:1}.draw-hint{font-size:11px;color:#64748b}.draw-toolbar{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:15;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;max-width:calc(100% - 16px);padding:8px 10px;background:#fff;border-radius:10px;box-shadow:0 4px 18px #0f172a4d}.draw-toolbar input{font:inherit;padding:6px 8px;border:1px solid #cbd5e1;border-radius:6px;width:130px}.draw-count{font-size:12px;color:#64748b;white-space:nowrap}.draw-buttons{display:flex;gap:6px}.draw-buttons button:disabled{opacity:.45;cursor:default}.track-controls{margin-top:4px}.range-buttons{display:flex;gap:6px}.track-info{color:#64748b;font-size:12px}.charts{margin-top:10px;display:flex;flex-direction:column;gap:10px}.chart-title{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;font-weight:600;color:#64748b;margin-bottom:2px}.chart-value{font-size:14px;font-weight:700}.chart-plot{position:relative}.chart-plot svg{display:block;width:100%;height:auto}.chart-grid{stroke:#eef2f7;stroke-width:1}.chart-crosshair{stroke:#cbd5e1;stroke-width:1}.chart-axis{font-size:9px;fill:#94a3b8}.chart-tooltip{position:absolute;top:-6px;transform:translate(-50%);background:#0f172a;color:#f8fafc;font-size:11px;padding:2px 7px;border-radius:5px;white-space:nowrap;pointer-events:none}.chart-empty{margin:0;font-size:12px;color:#94a3b8}.activity-split{display:flex;height:12px;border-radius:6px;overflow:hidden;background:#eef2f7}.activity-split>div{height:100%}.activity-legend{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:5px;font-size:11px;color:#64748b}.activity-legend span{display:inline-flex;align-items:center;gap:4px}.activity-legend i{width:8px;height:8px;border-radius:2px}.activity-timeline{display:block;width:100%;height:40px;margin-top:8px}.activity-fine-wrap{margin-top:8px}.activity-fine-label{display:flex;justify-content:space-between;font-size:11px;color:#64748b;margin-bottom:3px}.activity-fine-label span{color:#94a3b8}.activity-fine{display:block;width:100%;height:12px;border-radius:3px;overflow:hidden}.daily-stats{margin-top:10px}.daily-stats table{width:100%;border-collapse:collapse;font-size:12px}.daily-stats td{padding:3px 0;color:#1e293b}.daily-stats .day-label{color:#64748b;width:30%}.cow-marker{display:flex;flex-direction:column;align-items:center;cursor:pointer}.cow-dot{width:24px;height:24px;border-radius:50%;border:2.5px solid #fff;box-shadow:0 1px 4px #0006;display:flex;align-items:center;justify-content:center;font-size:13px;line-height:1}.cow-marker.selected .cow-dot{outline:3px solid #3b82f6}.cow-marker.nogps .cow-dot{opacity:.55;border-style:dashed;border-color:#d97706}.cow-marker.relayed .cow-dot{width:20px;height:20px;border-width:3px;font-size:11px}.cow-marker.relayed .cow-label{font-weight:600;opacity:.9}.cow-marker.stale .cow-dot{opacity:.5;border-style:dashed;border-color:#64748b}.cow-stale{font-size:10px;font-weight:600;color:#475569;background:#e2e8f0e6;padding:0 4px;border-radius:4px;white-space:nowrap}.cow-gw{font-size:9px;font-weight:800;color:#fff;background:#1d4ed8;padding:0 4px;border-radius:4px;white-space:nowrap;margin-top:1px}.cow-marker.lost .cow-dot{border-color:#dc2626;border-style:dashed;opacity:.6}.cow-lost{font-size:10px;font-weight:800;color:#fff;background:#dc2626;padding:0 5px;border-radius:4px;white-space:nowrap}.cow-nogps{font-size:10px;font-weight:600;color:#92400e;background:#fef3c7e6;padding:0 4px;border-radius:4px;white-space:nowrap}.cow-station{font-size:9px;font-weight:800;color:#fff;background:#0891b2;padding:0 4px;border-radius:4px;white-space:nowrap;margin-top:1px}.cow-label{margin-top:2px;font-size:11px;font-weight:700;background:#ffffffd9;padding:0 5px;border-radius:4px;white-space:nowrap}.basemap-ctrl button{width:auto;height:24px;padding:0 8px;font-size:11px;font-weight:600;color:#334155}.basemap-ctrl button.active{color:#1d4ed8;background:#dbeafe}.login-wrap{display:flex;align-items:center;justify-content:center;height:100%;padding:16px;overflow-y:auto}.login{display:flex;flex-direction:column;gap:10px;width:300px;padding:28px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0f172a14}.login h1{font-size:18px;margin:0 0 8px;text-align:center}.login input{font:inherit;padding:8px 10px;border:1px solid #cbd5e1;border-radius:6px}.login button{padding:8px;background:#0f172a;color:#fff;border:none}.login .error{color:#dc2626;margin:0;font-size:13px}.login .info{color:#16a34a;margin:0;font-size:13px}.login .hint{color:#94a3b8;font-size:12px;margin:4px 0 0;text-align:center}.login .forgot-link{align-self:flex-end;width:auto;margin:-4px 0 2px;padding:0;background:none;color:#2563eb;font-size:12px;text-decoration:underline}.login .forgot-link:hover{background:none}.login .forgot-link:disabled{opacity:.6}.signup-card{width:360px;max-width:100%;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 12px 40px #0f172a2e}.signup-hero{background:linear-gradient(135deg,#16a34a,#15803d);color:#fff;padding:22px 24px}.signup-hero h1{margin:0;font-size:20px}.signup-hero p{margin:6px 0 0;font-size:13px;opacity:.9}.signup-body{display:flex;flex-direction:column;gap:10px;padding:20px 24px 24px}.signup-perks{list-style:none;margin:0 0 4px;padding:0;display:flex;flex-direction:column;gap:5px;font-size:12px;color:#475569}.signup-body input{font:inherit;padding:9px 10px;border:1px solid #cbd5e1;border-radius:8px}.auth-primary{padding:10px;background:#16a34a;color:#fff;border:none;border-radius:8px;font-weight:600}.auth-primary:hover{background:#15803d}.auth-primary:disabled{opacity:.6}.signup-confirm{margin:0;font-size:13px;color:#334155}.signup-body .error{color:#dc2626;margin:0;font-size:13px}.signup-body .hint{color:#94a3b8;font-size:12px;margin:2px 0 0;text-align:center}.signup-body .hint a{color:#16a34a;cursor:pointer}.battery-planner{width:540px}.bp-inputs{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0}.bp-field{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:#475569}.bp-field select,.bp-field input{font:inherit;font-size:13px;padding:5px 7px;border:1px solid #cbd5e1;border-radius:5px;background:#fff;color:#1e293b}.bp-stepper{display:inline-flex;align-items:stretch}.bp-stepper button{width:28px;padding:0;font-size:16px;line-height:1;border:1px solid #cbd5e1;background:#f8fafc;color:#334155}.bp-stepper button:hover{background:#e2e8f0}.bp-stepper button:first-child{border-radius:5px 0 0 5px}.bp-stepper button:last-child{border-radius:0 5px 5px 0}.bp-stepper input{width:54px;text-align:center;border-radius:0;border-left:none;border-right:none;-moz-appearance:textfield}.bp-stepper input::-webkit-outer-spin-button,.bp-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.bp-unit-input{display:inline-flex;align-items:center;gap:5px}.bp-unit-input input{width:74px}.bp-unit-input span{font-size:12px;font-weight:400;color:#64748b}.bp-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0 6px}.bp-card{display:flex;flex-direction:column;gap:2px;padding:12px;border-radius:8px;border:1px solid #e2e8f0;background:#f8fafc}.bp-card.best{background:#f0fdf4;border-color:#bbf7d0}.bp-card.typical{background:#eff6ff;border-color:#bfdbfe}.bp-card.worst{background:#fffbeb;border-color:#fde68a}.bp-card-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.bp-life{font-size:26px;font-weight:800;line-height:1.1;color:#0f172a;font-variant-numeric:tabular-nums}.bp-card.best .bp-life{color:#15803d}.bp-card.typical .bp-life{color:#1d4ed8}.bp-card.worst .bp-life{color:#b45309}.bp-sub{font-size:11px;color:#64748b;font-variant-numeric:tabular-nums}.bp-scenario-note{margin:2px 0 4px;font-size:11px;color:#94a3b8}.bp-settings-note{margin:8px 0 0;font-size:11px;line-height:1.45;color:#64748b}.bp-settings-note code{font-size:10px;padding:0 3px;background:#f1f5f9;border-radius:3px}.bp-fw-note{margin:0 0 4px;padding:7px 9px;font-size:11px;line-height:1.4;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:6px}.bp-sizer{margin:12px 0 4px;padding:10px 12px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px}.bp-sizer-head{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:#075985}.bp-sizer-head select{font-size:12px;padding:1px 4px}.bp-sizer-vals{display:flex;gap:20px;margin:6px 0 2px}.bp-sizer-val{display:flex;flex-direction:column;line-height:1.1}.bp-sizer-val strong{font-size:22px;color:#0369a1}.bp-sizer-val.worst strong{color:#b45309}.bp-sizer-cap{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.bp-sizer-obj{margin:4px 0 2px;font-size:12px;line-height:1.4;font-weight:600;color:#0369a1}.bp-sizer-toggle{margin:0 0 2px;padding:0;border:none;background:none;font-size:11px;color:#0284c7;text-decoration:underline dotted;cursor:pointer}.bp-sizer-toggle:hover{color:#075985}.bp-sizer-note{margin:4px 0 0;font-size:11px;line-height:1.45;color:#475569}.bp-section-title{margin:14px 0 8px;font-size:12px;font-weight:700;color:#334155}.bp-chart{display:flex;flex-direction:column;gap:5px}.bp-bar-row{display:grid;grid-template-columns:96px 1fr 52px;align-items:center;gap:8px;font-size:12px}.bp-bar-label{color:#64748b}.bp-bar-row.current .bp-bar-label{color:#1d4ed8;font-weight:700}.bp-bar{height:14px;background:#e8edf3;border-radius:7px;overflow:hidden}.bp-bar-fill{display:block;height:100%;background:#93c5fd;border-radius:7px;transition:width .25s ease}.bp-bar-row.current .bp-bar-fill{background:#2563eb}.bp-bar-val{text-align:right;font-weight:600;color:#334155;font-variant-numeric:tabular-nums}.bp-delta{margin:12px 0 0;padding:9px 11px;border-radius:7px;background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;font-size:13px}.bp-note{margin:10px 0 0;font-size:11px;line-height:1.4;color:#94a3b8}.bp-bar-row.super{margin-top:7px;padding-top:7px;border-top:1px dashed #ddd6fe}.bp-bar-row.super .bp-bar-label{color:#6d28d9;font-weight:700}.bp-bar-row.super .bp-bar{background:#ede9fe}.bp-bar-row.super .bp-bar-fill{background:linear-gradient(90deg,#7c3aed,#a855f7)}.bp-bar-row.super .bp-bar-val{color:#6d28d9}.bp-super-toggle{margin-top:12px;width:100%;padding:9px;font-weight:700;color:#6d28d9;background:#f5f3ff;border:1px solid #ddd6fe;border-radius:8px}.bp-super-toggle:hover{background:#ede9fe}.bp-super-toggle.on{color:#fff;background:#7c3aed;border-color:#7c3aed}.bp-super-box{margin-top:8px;padding:11px 13px;font-size:13px;line-height:1.5;color:#4c1d95;background:#faf5ff;border:1px solid #e9d5ff;border-radius:8px}.bp-super-box strong{color:#5b21b6}.bp-super-when{margin-top:7px;font-size:12px;color:#7c3aed}@media(prefers-reduced-motion:reduce){.bp-bar-fill{transition:none}}@media(max-width:560px){.bp-cards{grid-template-columns:1fr}.bp-bar-row{grid-template-columns:78px 1fr 46px}}.badge.fota-live{background:#16a34a;color:#fff}.fota-bar-row{display:grid;grid-template-columns:56px 1fr 48px;gap:8px;align-items:center;font-size:12px;margin:4px 0}.fota-bar-label{color:#64748b}.fota-bar{height:12px;background:#e8edf3;border-radius:6px;overflow:hidden}.fota-bar-fill{height:100%;background:#2563eb;border-radius:6px;transition:width .3s}.fota-bar-fill.applied{background:#16a34a}.fota-bar-val{text-align:right;font-variant-numeric:tabular-nums}.fota-state{font-size:10px;font-weight:700;padding:1px 6px;border-radius:9px;white-space:nowrap}.fota-state.draft{background:#fef3c7;color:#92400e}.fota-state.done{background:#dcfce7;color:#166534}.fota-state.aborted,.fota-state.overdue{background:#fee2e2;color:#991b1b}.fota-release-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:12px;padding:5px 0;border-top:1px solid #f1f5f9}.fota-release-row:first-of-type{border-top:none}.fota-release-rev{font-weight:700}.fota-release-notes{flex-basis:100%;color:#64748b}.fota-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#64748b}.fota-swap-input{font:inherit;padding:5px 7px;border:1px solid #cbd5e1;border-radius:6px}@media(prefers-reduced-motion:reduce){.fota-bar-fill{transition:none}}.daily-activity{margin-top:12px}.daily-activity h3{font-size:12px;font-weight:600;margin:0 0 6px}.daily-bars{display:flex;align-items:flex-end;gap:2px;height:80px}.daily-col{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:0}.daily-stack{width:100%;display:flex;flex-direction:column;border-radius:2px 2px 0 0;overflow:hidden;min-height:1px}.daily-lbl{font-size:9px;color:#64748b;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.daily-legend{display:flex;gap:10px;font-size:11px;margin-top:4px;color:#475569}.daily-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:3px;vertical-align:middle}.cfg-help-wrap{position:relative;display:inline-flex;margin-left:6px;vertical-align:middle;font-weight:400}.cfg-help-btn{width:16px;height:16px;border-radius:50%;border:1px solid #bae6fd;background:#f0f9ff;color:#0284c7;font-size:11px;font-weight:700;line-height:1;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center}.cfg-help-btn:hover{background:#e0f2fe}.cfg-help-btn.on{background:#0ea5e9;color:#fff;border-color:#0ea5e9}.cfg-help-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:20;width:264px;max-width:74vw;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 10px 28px #0f172a33;padding:10px 12px;text-align:left}.cfg-help-text{margin:0;font-size:12px;line-height:1.5;color:#475569}.cfg-help-text+.setting-anim{margin-top:8px}.setting-anim{display:block;width:100%;height:auto;background:linear-gradient(160deg,#f0f9ff,#eef2ff);border:1px solid #e0f2fe;border-radius:8px}.sa-emoji{font-size:15px}.sa-emoji-sm{font-size:14px}.sa-lbl{font-size:8px;fill:#64748b;font-weight:600}.sa-ping{fill:#0ea5e9;opacity:0;transform-box:fill-box;transform-origin:center}.sa-ping-fast{animation:saPing 1.7s ease-out infinite}.sa-ping-slow{animation:saPing 4.2s ease-out infinite}@keyframes saPing{0%{opacity:.9;transform:translateY(0)}to{opacity:0;transform:translateY(-38px)}}.sa-acc{fill:#0ea5e91f;stroke:#0ea5e9;stroke-width:1.5}.sa-fix{fill:#0284c7}.sa-acc-tight{r:13px;animation:saAccTight 2.6s ease-in-out infinite}.sa-acc-loose{r:26px;fill:#d977061a;stroke:#d97706;animation:saAccLoose 2.6s ease-in-out infinite}@keyframes saAccTight{0%,to{r:12px}50%{r:15px}}@keyframes saAccLoose{0%,to{r:24px}50%{r:28px}}@media(prefers-reduced-motion:reduce){.sa-ping,.sa-acc-tight,.sa-acc-loose{animation:none}.sa-ping-fast,.sa-ping-slow{opacity:.5}.sa-acc-tight{r:13px}.sa-acc-loose{r:26px}}.settings-intro{border:1px solid #bae6fd;background:linear-gradient(160deg,#f0f9ff,#eff6ff);border-radius:10px;padding:12px 14px;margin:4px 0 14px}.si-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.si-icon{font-size:18px}.si-head h4{margin:0;font-size:14px;color:#0c4a6e}.si-points{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:7px}.si-points li{font-size:12.5px;line-height:1.45;color:#475569;padding-left:16px;position:relative}.si-points li:before{content:"→";position:absolute;left:0;color:#0ea5e9;font-weight:700}.si-points strong{color:#0f172a}.si-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid #e0f2fe;padding-top:10px}.si-dontshow{display:flex;align-items:center;gap:6px;font-size:12px;color:#64748b;cursor:pointer}.si-foot button{min-width:72px}.modal.tutorial{max-width:440px;text-align:center;padding:0;overflow:hidden;display:flex;flex-direction:column}.tut-head{display:flex;justify-content:space-between;align-items:center;padding:16px 18px 6px;flex:none}.tut-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 18px}.tut-step-count{font-size:11px;font-weight:700;color:#94a3b8;letter-spacing:.04em;text-transform:uppercase}.tut-skip{border:none;background:none;color:#94a3b8;font-size:12px;cursor:pointer;padding:2px 4px}.tut-skip:hover{color:#475569}.tut-stage-wrap{background:linear-gradient(160deg,#f0f9ff,#eef2ff);border:1px solid #e2e8f0;border-radius:12px;padding:6px;margin-bottom:14px;animation:tutStageIn .35s ease}.tut-art{display:block;width:100%;height:auto;margin:0 auto}.tut-title{margin:0 0 8px;font-size:18px;color:#0f172a}.tut-body{margin:0 0 14px;font-size:13.5px;line-height:1.5;color:#475569;min-height:76px}.tut-body strong{color:#0f172a}.tut-dots{display:flex;justify-content:center;gap:7px;margin-bottom:14px}.tut-dot{width:8px;height:8px;border-radius:50%;border:none;padding:0;background:#cbd5e1;cursor:pointer;transition:background .2s,transform .2s}.tut-dot:hover{background:#94a3b8}.tut-dot.on{background:#0ea5e9;transform:scale(1.35)}.tut-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex:none;padding:12px 18px 16px;border-top:1px solid #eef2f6;background:#fff}.tut-dontshow{display:flex;align-items:center;gap:6px;font-size:12px;color:#64748b;cursor:pointer}.tut-nav{display:flex;gap:8px}.tut-nav button{min-width:68px}.tut-emoji{font-size:34px}.tut-emoji-sm{font-size:22px}.tut-role{font-size:9px;fill:#64748b;font-weight:600}.tut-tag{font-size:10px;font-weight:700}.tut-tag-lte{fill:#0284c7}.tut-tag-good{fill:#16a34a}.tut-tag-loose{fill:#d97706}.tut-pulse{fill:#0ea5e9;opacity:0;transform-origin:160px 92px;animation:tutPulse 2.7s ease-out infinite}.tut-bob{animation:tutBob 2.4s ease-in-out infinite;transform-origin:center}.tut-collar{fill:#22c55e}.tut-card{fill:#f1f5f9;stroke:#e2e8f0}.tut-card-line{fill:#cbd5e1}.tut-card-new{fill:#ecfdf5;stroke:#86efac}.tut-slide-in{animation:tutSlideIn 2.6s ease-in-out infinite}.tut-btn{fill:#0ea5e9}.tut-btn-label{fill:#fff;font-size:12px;font-weight:700}.tut-fade-out{animation:tutFadeOut 2.8s ease-in-out infinite}.tut-x-bg{fill:#ef4444}.tut-x-mark{stroke:#fff;stroke-width:2.4;stroke-linecap:round}.tut-x{animation:tutXPop 2.8s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.tut-cluster-ring{fill:#0ea5e90f;stroke:#7dd3fc;stroke-width:1.5;stroke-dasharray:5 4}.tut-lte{stroke:#0284c7;stroke-width:2.4;fill:none;stroke-dasharray:5 5;animation:tutLte 1.1s linear infinite}.tut-ble{stroke:#22c55e;stroke-width:2.4;fill:none;stroke-linecap:round;animation:tutBle 1.6s ease-in-out infinite}.tut-acc{fill:#0ea5e91f;stroke:#0ea5e9;stroke-width:1.5}.tut-fix{fill:#0284c7}.tut-acc-tight{animation:tutAccTight 2.6s ease-in-out infinite}.tut-acc-loose{fill:#d977061a;stroke:#d97706;animation:tutAccLoose 2.6s ease-in-out infinite}.tut-fence{fill:#22c55e14;stroke:#16a34a;stroke-width:2;stroke-dasharray:6 4}.tut-escape{font-size:26px;animation:tutEscape 3.4s ease-in-out infinite}.tut-bell-bg{fill:#fef2f2;stroke:#fecaca;stroke-width:1.5}.tut-bell{animation:tutBell 3.4s ease-in-out infinite;transform-box:fill-box;transform-origin:center}@keyframes tutStageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes tutPulse{0%{opacity:.5;transform:scale(.5)}70%{opacity:0;transform:scale(1.7)}to{opacity:0;transform:scale(1.7)}}@keyframes tutBob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes tutSlideIn{0%{opacity:0;transform:translate(40px,124px)}22%,78%{opacity:1;transform:translate(40px,124px)}to{opacity:1;transform:translate(40px,124px)}}@keyframes tutFadeOut{0%,30%{opacity:1;transform:translate(85px,68px) scale(1)}70%,to{opacity:.15;transform:translate(85px,68px) scale(.94)}}@keyframes tutXPop{0%,40%{transform:scale(0)}55%{transform:scale(1.25)}70%,to{transform:scale(1)}}@keyframes tutLte{to{stroke-dashoffset:-20}}@keyframes tutBle{0%,to{opacity:.15;stroke-width:1.5}50%{opacity:1;stroke-width:3}}@keyframes tutAccTight{0%,to{r:22px}50%{r:26px}}@keyframes tutAccLoose{0%,to{r:40px}50%{r:46px}}@keyframes tutEscape{0%,15%{transform:translate(80px,92px)}60%,to{transform:translate(150px,150px)}}@keyframes tutBell{0%,55%,to{transform:rotate(0)}65%{transform:rotate(16deg)}75%{transform:rotate(-12deg)}85%{transform:rotate(8deg)}}@media(max-height:680px){.tut-art{width:auto;height:116px}.tut-stage-wrap{padding:4px;margin-bottom:10px}.tut-title{font-size:16px}.tut-body{font-size:13px;min-height:0;margin-bottom:10px}.tut-head{padding-top:12px}}@media(prefers-reduced-motion:reduce){.tut-pulse,.tut-bob,.tut-slide-in,.tut-fade-out,.tut-x,.tut-lte,.tut-ble,.tut-acc-tight,.tut-acc-loose,.tut-escape,.tut-bell,.tut-stage-wrap{animation:none}.tut-pulse{opacity:.18}.tut-slide-in{opacity:1}}.add-collar-row{display:flex;flex-direction:column;gap:6px}.add-collar-help{align-self:center;border:none;background:none;color:#0284c7;font-size:12px;cursor:pointer;padding:2px;text-decoration:underline}.add-collar-help:hover{color:#075985}.adw-launch{display:block;margin:0 auto 10px}.adw-art{display:block;width:100%;height:auto}.adw-stage{background:linear-gradient(160deg,#f8fafc,#eef2ff)}.adw-dev-frame{fill:#f97316}.adw-dev-body{fill:#1e293b}.adw-btn{fill:#e2e8f0}.adw-btn-ring{fill:none;stroke:#94a3b8;stroke-width:2}.adw-press-ring{fill:none;stroke:#f97316;stroke-width:2.5;opacity:0;transform-box:fill-box;transform-origin:center;animation:adwPress 1.8s ease-out infinite}.adw-finger{font-size:22px;animation:adwFinger 1.8s ease-in-out infinite}.adw-hold-ring{fill:none;stroke:#f97316;stroke-width:4;stroke-linecap:round;stroke-dasharray:251;stroke-dashoffset:251;animation:adwHold 3.4s linear infinite;transform:rotate(-90deg);transform-box:fill-box;transform-origin:center}.adw-cap,.adw-legend{font-size:9px;fill:#64748b;font-weight:600}.adw-arrow{font-size:20px;fill:#94a3b8}.adw-led{filter:drop-shadow(0 0 4px currentColor)}.adw-led-off{fill:#334155;filter:none}.adw-led-wheel{animation:adwWheel 3s linear infinite}.adw-led-gps{fill:#3b82f6;color:#3b82f6;animation:adwGlow 1.3s ease-in-out infinite}.adw-led-seq{animation:adwSeq 6s steps(1,end) infinite}.adw-led-beat{animation:adwBeat 3s ease-in-out infinite}.adw-chip-cyan{fill:#06b6d4}.adw-chip-magenta{fill:#d946ef}.adw-chip-blue{fill:#3b82f6}.adw-chip-white{fill:#f8fafc;stroke:#cbd5e1;stroke-width:1}.adw-chip-blink{fill:#3b82f6;animation:adwBlink .9s steps(1,end) infinite}.adw-ble{fill:none;stroke:#22c55e;stroke-width:2.5;stroke-linecap:round;animation:adwBle 1.6s ease-in-out infinite}.adw-phone{fill:#f1f5f9;stroke:#cbd5e1}.adw-btn-lg{fill:#0ea5e9}.adw-btn-lg-txt{fill:#fff;font-size:7px;font-weight:700}.adw-sun{font-size:20px}.adw-sat{font-size:16px;animation:adwSat 2.4s ease-in-out infinite}.adw-beam{stroke:#38bdf8;stroke-width:1.5;stroke-dasharray:3 3;opacity:.6;animation:adwBeam 1.2s linear infinite}.adw-done-pulse{fill:#22c55e;opacity:0;animation:adwDone 2.4s ease-out infinite}@keyframes adwWheel{0%,to{fill:#ef4444}33%{fill:#22c55e}66%{fill:#3b82f6}}@keyframes adwSeq{0%,20%{fill:#06b6d4;color:#06b6d4}25%,45%{fill:#d946ef;color:#d946ef}50%,70%{fill:#3b82f6;color:#3b82f6}75%,95%{fill:#f8fafc;color:#f8fafc}}@keyframes adwBeat{0%,86%,to{fill:#14532d}6%{fill:#22c55e}}@keyframes adwGlow{0%,to{opacity:.65}50%{opacity:1}}@keyframes adwBlink{0%,49%{opacity:1}50%,to{opacity:.12}}@keyframes adwHold{to{stroke-dashoffset:0}}@keyframes adwPress{0%{opacity:.9;transform:scale(.6)}70%,to{opacity:0;transform:scale(1.3)}}@keyframes adwFinger{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes adwBle{0%,to{opacity:.15}50%{opacity:1}}@keyframes adwSat{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes adwBeam{to{stroke-dashoffset:-12}}@keyframes adwDone{0%{opacity:.5;transform:scale(.4);transform-box:fill-box;transform-origin:center}70%,to{opacity:0;transform:scale(1.8);transform-box:fill-box;transform-origin:center}}@media(prefers-reduced-motion:reduce){.adw-press-ring,.adw-finger,.adw-hold-ring,.adw-led-wheel,.adw-led-gps,.adw-led-seq,.adw-led-beat,.adw-chip-blink,.adw-ble,.adw-sat,.adw-beam,.adw-done-pulse{animation:none}.adw-led-seq{fill:#3b82f6}.adw-led-wheel,.adw-led-beat{fill:#22c55e}}
