@keyframes simStatusPulse{0%,to{opacity:1}50%{opacity:.3}}@keyframes cardOutlinePulse{0%,to{border-color:var(--pulse-color)}50%{border-color:color-mix(in srgb,var(--pulse-color) 30%,transparent)}}.live-transcript-fade{position:absolute;left:0;top:0;bottom:0;width:24px;background:linear-gradient(to right,var(--bg-btn),transparent);pointer-events:none}.live-transcript>div::-webkit-scrollbar{display:none}.login-container{display:flex;align-items:center;justify-content:center;height:100vh;font-family:system-ui,-apple-system,sans-serif;background-color:var(--bg)}.login-form{display:flex;flex-direction:column;gap:16px;padding:32px;background:var(--bg-card);border-radius:12px;box-shadow:0 1px 3px #0000001a;width:320px;max-width:90vw}.login-title{font-size:20px;font-weight:700;color:var(--text);margin:0 0 4px;text-align:center}.login-input{padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;outline:none;background:var(--bg-input);color:var(--text);transition:border-color .15s ease}.login-input:focus{border-color:var(--selected)}.login-button{padding:10px;background-color:var(--selected);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:background-color .15s ease}.login-button:hover:not(:disabled){opacity:.9}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-error{margin:0;font-size:13px;color:var(--red);text-align:center}.sysinfo-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:sysinfo-fade-in .15s ease-out}@keyframes sysinfo-fade-in{0%{opacity:0}to{opacity:1}}.sysinfo-modal{background:var(--bg-card);border-radius:16px;box-shadow:0 20px 60px #00000040;width:480px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column;animation:sysinfo-slide-up .2s ease-out}@keyframes sysinfo-slide-up{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.sysinfo-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-light)}.sysinfo-title{font-size:18px;font-weight:700;color:var(--text);margin:0}.sysinfo-close{width:32px;height:32px;border:none;background:var(--border-light);border-radius:8px;font-size:18px;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .15s}.sysinfo-close:hover{background:var(--border);color:var(--text)}.sysinfo-body{padding:16px 24px 24px;overflow-y:auto}.sysinfo-loading,.sysinfo-error{padding:32px 24px;text-align:center;font-size:14px}.sysinfo-loading{color:var(--text-secondary)}.sysinfo-error{color:var(--red)}.sysinfo-section{margin-bottom:20px}.sysinfo-section:last-child{margin-bottom:0}.sysinfo-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);margin:0 0 10px}.sysinfo-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0}.sysinfo-label{font-size:13px;color:var(--text-secondary)}.sysinfo-value{font-size:13px;font-weight:500;color:var(--text);font-family:SF Mono,Cascadia Code,Consolas,monospace}.sysinfo-badge{font-size:12px;font-weight:600;padding:2px 10px;border-radius:9999px}.badge-ok{background:#d1fae5;color:#065f46}.badge-warn{background:#fef3c7;color:#92400e}.badge-err{background:#fee2e2;color:#991b1b}.sysinfo-empty{font-size:13px;color:var(--text-muted);text-align:center;padding:12px 0}.sysinfo-table{border:1px solid var(--border-light);border-radius:8px;overflow:hidden;margin-top:8px}.sysinfo-table-head{display:grid;grid-template-columns:1fr 1fr;padding:8px 12px;background:var(--border-light);font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px}.sysinfo-table-head.sysinfo-table-3col{grid-template-columns:100px 1fr 90px}.sysinfo-table-row{display:grid;grid-template-columns:1fr 1fr;padding:8px 12px;font-size:13px;color:var(--text);border-top:1px solid var(--border)}.sysinfo-table-row.sysinfo-table-3col{grid-template-columns:100px 1fr 90px}.sysinfo-table-row:nth-child(2n){background:#00000008}[data-theme=dark] .sysinfo-table-row:nth-child(2n){background:#ffffff0a}.sysinfo-table-head>*:not(:last-child),.sysinfo-table-row>*:not(:last-child){border-right:1px solid var(--border);padding-right:10px;margin-right:10px}.sysinfo-port-path{font-family:SF Mono,Cascadia Code,Consolas,monospace;font-weight:500;display:flex;align-items:center;gap:6px}.sysinfo-port-tag{font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;background:#dbeafe;color:#1e40af;font-family:system-ui,-apple-system,sans-serif}.sysinfo-port-device{font-size:12px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sysinfo-port-vid{font-family:SF Mono,Cascadia Code,Consolas,monospace;font-size:12px;color:var(--text-muted)}.sysinfo-theme-toggle{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:8px;border:1px solid var(--border);background:var(--bg-card);color:var(--text);font-size:12px;font-weight:500;cursor:pointer;transition:background-color .15s,border-color .15s}.sysinfo-theme-toggle:hover{background:var(--bg-btn);border-color:var(--text-muted)}.sysinfo-logs{background:#0f172a;border-radius:8px;border:1px solid var(--border);max-height:220px;overflow-y:auto;font-family:SF Mono,Cascadia Code,Consolas,monospace;font-size:11px;line-height:1.5;padding:6px 10px;color:#e5e7eb}.sysinfo-logs.sysinfo-logs-tall{max-height:calc(80vh - 120px)}.sysinfo-logs-empty{color:#9ca3af;font-style:italic;padding:2px 0}.sysinfo-log-line{display:flex;gap:8px;white-space:pre-wrap;word-break:break-word;padding:1px 0}.sysinfo-log-ts{color:#64748b;flex-shrink:0}.sysinfo-log-level{flex-shrink:0;font-weight:700;min-width:32px}.sysinfo-log-level.lvl-info{color:#60a5fa}.sysinfo-log-level.lvl-warn{color:#fbbf24}.sysinfo-log-level.lvl-error{color:#f87171}.sysinfo-log-msg{color:#e5e7eb;flex:1;min-width:0}.dashboard{max-width:1400px;margin:0 auto;padding:24px;font-family:system-ui,-apple-system,sans-serif}.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px;flex-wrap:wrap;gap:12px}.dashboard-title{font-size:24px;font-weight:700;color:var(--text);margin:0}.dashboard-header-right{display:flex;align-items:center;gap:12px}.dashboard-statuses{display:flex;gap:8px}.status-pill{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;padding:5px 12px;border-radius:9999px;transition:background-color .2s}.status-pill.status-ok{background-color:#d1fae5;color:#065f46}.status-pill.status-warn{background-color:#fef3c7;color:#92400e}.status-pill.status-err{background-color:#fee2e2;color:#991b1b}.status-pill.status-data{background-color:#fae8ff;color:#86198f;cursor:pointer}[data-theme=dark] .status-pill.status-data{background-color:#e879f926;color:#f0abfc}.status-pill.status-data:hover{filter:brightness(.97)}.status-pill.status-data.is-off{background-color:var(--border-light);color:var(--text-secondary)}.status-pill.status-data.is-pending{background-color:var(--border-light);color:var(--text-secondary);cursor:progress}[data-theme=dark] .status-pill.status-data.is-pending{background-color:#ffffff14;color:var(--text-secondary)}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot-ok{background-color:#10b981;box-shadow:0 0 6px #10b98166}.dot-warn{background-color:#f59e0b;box-shadow:0 0 6px #f59e0b66;animation:dot-pulse 1.2s ease-in-out infinite}@keyframes dot-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes data-toggle-pulse{0%,to{box-shadow:0 0 #c026d3b3,0 0 #c026d359}50%{box-shadow:0 0 0 10px #c026d300,0 0 0 3px #c026d359}}.dot-err{background-color:#ef4444;box-shadow:0 0 6px #ef444466}.dot-data{background-color:var(--data-active);box-shadow:0 0 6px #c026d373}.dot-data.is-connecting{animation:dot-pulse 1.2s ease-in-out infinite}.dot-data.is-off{background-color:var(--text-muted);box-shadow:none}.dashboard-icon-btn{width:36px;height:36px;border:1px solid var(--border);background:var(--bg-card);border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);transition:all .15s}.dashboard-icon-btn:hover{background:var(--bg-btn);color:var(--text);border-color:var(--text-muted)}.dashboard-icon-btn.restart-spin svg{animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dashboard-status{display:flex;align-items:center;justify-content:center;height:100vh;font-family:system-ui,-apple-system,sans-serif;font-size:16px;color:var(--text-muted)}.dashboard-error{color:var(--red)}.module-columns{display:flex;gap:32px;overflow-x:auto;padding-bottom:8px;flex-wrap:wrap}.module-columns::-webkit-scrollbar{height:6px}.module-columns::-webkit-scrollbar-track{background:var(--border-light);border-radius:3px}.module-columns::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.module-column{flex-shrink:0}.module-label{font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:12px;text-transform:uppercase;letter-spacing:.5px;text-align:center}.module-sims{display:flex;flex-direction:column;gap:16px}.mobile-sim-grid{display:none}@media(max-width:768px){.dashboard{padding:12px}.dashboard-header{margin-bottom:20px}.dashboard-title{font-size:20px}.dashboard-statuses{gap:6px}.status-pill{font-size:11px;padding:4px 8px}.module-columns{display:none}.mobile-sim-grid{display:flex;flex-direction:column;gap:24px}.mobile-sim-block{display:flex;flex-direction:column;gap:12px}.mobile-sim-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mobile-sim-cell{min-width:0;display:flex;flex-direction:column;gap:6px}.mobile-sim-cell-label{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;text-align:center}.mobile-sim-cell>div:not(.mobile-sim-cell-label){width:100%!important;height:auto!important;min-height:360px}}@media(max-width:360px){.dashboard-header-right{flex-wrap:wrap;justify-content:flex-end}}
