@xenon-device-management/xenon 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/package.json +1 -1
- package/lib/public/assets/{ApiKeyGate-BSN8crwz.js → ApiKeyGate-BousCIQZ.js} +1 -1
- package/lib/public/assets/{BugReportButton-DNja1wQ1.js → BugReportButton-Gw4lnGnV.js} +1 -1
- package/lib/public/assets/{DeviceMosaicView-DVk1IpIR.js → DeviceMosaicView-BX2hfhBf.js} +2 -2
- package/lib/public/assets/{EmptyState-CqQ21n-H.js → EmptyState-CPOfuV3O.js} +1 -1
- package/lib/public/assets/{FieldGroup-DE3u01Nu.js → FieldGroup-C5UkCHbe.js} +1 -1
- package/lib/public/assets/{Modal-BJcFdiBP.js → Modal-MMGhL8eW.js} +1 -1
- package/lib/public/assets/{SegmentedControl-CSHjmrvy.js → SegmentedControl-CZfAicws.js} +1 -1
- package/lib/public/assets/{SettingCard-M-lFn_Wm.js → SettingCard-Dp7XIdcl.js} +1 -1
- package/lib/public/assets/{Table-B3EUgBi6.js → Table-DsN_IX6J.js} +1 -1
- package/lib/public/assets/{activity-DK3R5GAb.js → activity-DCBAvxuo.js} +1 -1
- package/lib/public/assets/ai-settings-yNS_bU1m.js +21 -0
- package/lib/public/assets/api-keys-CQ9g1g1b.js +1 -0
- package/lib/public/assets/apps-Bqh1eav9.js +21 -0
- package/lib/public/assets/apps-CTrGClro.css +1 -0
- package/lib/public/assets/{arrow-left-9933DNlF.js → arrow-left-GX0vzYtn.js} +1 -1
- package/lib/public/assets/{arrow-up-right-B7q_1mXs.js → arrow-up-right-DePHHOby.js} +1 -1
- package/lib/public/assets/auth-shell-BBGlC6i3.js +1 -0
- package/lib/public/assets/builds-page-Czf7RsmD.js +6 -0
- package/lib/public/assets/{button-lkxVyarW.js → button-ybNY3GYx.js} +1 -1
- package/lib/public/assets/{check-BkT38An9.js → check-BZMx8AhR.js} +1 -1
- package/lib/public/assets/{chevron-right-WELZ1Z8v.js → chevron-right-WL_bcB02.js} +1 -1
- package/lib/public/assets/{circle-check--2DSsfaI.js → circle-check-CI2xUlDo.js} +1 -1
- package/lib/public/assets/{circle-x-x7R8vTBo.js → circle-x-De3thbcr.js} +1 -1
- package/lib/public/assets/{clock-DIpGd4Pn.js → clock-BFVLE7wW.js} +1 -1
- package/lib/public/assets/{copy-CEcFYYHm.js → copy-ve3lNhva.js} +1 -1
- package/lib/public/assets/device-explorer-elRO7T00.css +1 -0
- package/lib/public/assets/device-explorer-vzZxT4-Y.js +210 -0
- package/lib/public/assets/{download-CaKkGvKw.js → download-BDZj44ke.js} +1 -1
- package/lib/public/assets/forgot-password-BSYQX2oR.js +1 -0
- package/lib/public/assets/{funnel-D2rLIKlM.js → funnel-CptlpFZ9.js} +1 -1
- package/lib/public/assets/index-BW3kENYH.css +1 -0
- package/lib/public/assets/{index-BrVV0Kla.js → index-PtnKslHU.js} +12 -12
- package/lib/public/assets/{layers-DZwF8z_0.js → layers-DRpwoKhI.js} +1 -1
- package/lib/public/assets/{lock-CVUUnm1V.js → lock-CrQhC34I.js} +1 -1
- package/lib/public/assets/login-DaJOt8Qz.js +1 -0
- package/lib/public/assets/maintenance-settings-D629C2IC.js +6 -0
- package/lib/public/assets/{mouse-pointer-2-n4xUMxHJ.js → mouse-pointer-2-Dpcc76zN.js} +1 -1
- package/lib/public/assets/overview-CGEKYX62.js +11 -0
- package/lib/public/assets/{page-header-C0pnt4xz.js → page-header-CSvuGbSO.js} +1 -1
- package/lib/public/assets/{plus-BObE-_z6.js → plus-vJJF9g79.js} +1 -1
- package/lib/public/assets/profile-page-CF7ZQNQz.js +6 -0
- package/lib/public/assets/reset-password-BgpjbCac.js +1 -0
- package/lib/public/assets/runbook-page-Dxuzftyv.js +124 -0
- package/lib/public/assets/selector-detail-page-B_puCd9g.js +1 -0
- package/lib/public/assets/{selector-health-DraY2a4b.js → selector-health-BjMHf106.js} +1 -1
- package/lib/public/assets/selector-health-page-Du_bGD2p.js +16 -0
- package/lib/public/assets/session-detail-page-lQTe5_B1.js +13 -0
- package/lib/public/assets/settings-Cxx_aYWT.css +1 -0
- package/lib/public/assets/settings-DhxWGUzy.js +1 -0
- package/lib/public/assets/{shield-BBc4qisQ.js → shield-JGzamJo5.js} +1 -1
- package/lib/public/assets/{shield-alert-BfoPJ8q_.js → shield-alert-DzE36jcb.js} +1 -1
- package/lib/public/assets/status-pill-outline-50aN0wRU.js +1 -0
- package/lib/public/assets/{tablet-CaOqzQv_.js → tablet-DHY88mxw.js} +1 -1
- package/lib/public/assets/teams-EOAIPbZC.js +1 -0
- package/lib/public/assets/time-B8FIgwPE.js +1 -0
- package/lib/public/assets/{trash-2-CE5TRHb2.js → trash-2-BrTSfFh5.js} +1 -1
- package/lib/public/assets/{useSocket-Bkt5i-U6.js → useSocket-BRto9a5m.js} +1 -1
- package/lib/public/assets/users-Dd44jLAB.js +11 -0
- package/lib/public/assets/webhook-settings-DBYmqim_.js +1 -0
- package/lib/public/assets/{webhook-settings-DEZQtSgr.css → webhook-settings-tW1oXXrJ.css} +1 -1
- package/lib/public/assets/{zap-BzdRuL9F.js → zap-JUbOoK3o.js} +1 -1
- package/lib/public/index.html +2 -2
- package/lib/src/app/routers/auth.js +19 -2
- package/lib/src/scripts/run-migrations.js +14 -3
- package/lib/test/unit/auth-me-auth-disabled.test.js +77 -0
- package/lib/test/unit/run-migrations-fail-fast.test.js +87 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/lib/public/assets/ai-settings-AKMDh8pd.js +0 -21
- package/lib/public/assets/api-keys-B5Q1EkGN.js +0 -1
- package/lib/public/assets/apps-CWWrkTZW.js +0 -21
- package/lib/public/assets/apps-Dt5dUIag.css +0 -1
- package/lib/public/assets/builds-page-DgWXOgh5.js +0 -6
- package/lib/public/assets/device-explorer-3H1hf8ld.css +0 -1
- package/lib/public/assets/device-explorer-nV6L3w7x.js +0 -210
- package/lib/public/assets/forgot-password-CsAF11d2.js +0 -1
- package/lib/public/assets/index-Dz1K6OJU.css +0 -1
- package/lib/public/assets/login-BavGkTli.js +0 -1
- package/lib/public/assets/maintenance-settings-Vr_u8hoR.js +0 -6
- package/lib/public/assets/overview-DVgoOoYF.js +0 -11
- package/lib/public/assets/profile-page-DNKD4MS2.js +0 -1
- package/lib/public/assets/reset-password-C2gSMy8a.js +0 -1
- package/lib/public/assets/runbook-page-BRxjWJVQ.js +0 -104
- package/lib/public/assets/selector-detail-page-DcV8jQuX.js +0 -1
- package/lib/public/assets/selector-health-page-tb5e3CXy.js +0 -16
- package/lib/public/assets/session-detail-page-CEtQr37W.js +0 -13
- package/lib/public/assets/settings-CpRbubta.css +0 -1
- package/lib/public/assets/settings-Cr-YjLbX.js +0 -1
- package/lib/public/assets/status-pill-outline-Cc4PF7Mg.js +0 -1
- package/lib/public/assets/teams-B3Tt_9i2.js +0 -1
- package/lib/public/assets/users-BIvjvjM6.js +0 -11
- package/lib/public/assets/webhook-settings-dAp8wwEB.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&display=swap";.status-dot{display:inline-block;border-radius:50%;vertical-align:middle}.status-dot-ready{background:var(--status-ready-fg)}.status-dot-busy{background:var(--status-busy-fg)}.status-dot-reserved{background:var(--status-reserved-fg)}.status-dot-error{background:var(--status-error-fg)}.status-dot-offline{background:var(--status-offline-fg)}.status-code{display:inline-flex;align-items:center;gap:6px;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.1em;font-weight:600}.status-code-label{line-height:1}.status-code-ready{color:var(--status-ready-fg)}.status-code-busy{color:var(--status-busy-fg)}.status-code-reserved{color:var(--status-reserved-fg)}.status-code-error{color:var(--status-error-fg)}.status-code-offline{color:var(--status-offline-fg)}.kv-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;min-height:18px}.kv-label{color:var(--text-muted)}.kv-value{color:var(--text);font-weight:500}.kv-value-mono{font-family:JetBrains Mono,monospace;font-size:11px}.popover{z-index:9000;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:180px;padding:4px}.menu{display:flex;flex-direction:column;gap:0}.menu-item{display:flex;align-items:center;gap:8px;padding:6px 10px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text);font-family:Inter,sans-serif;font-size:12px;cursor:pointer;text-align:left;width:100%}.menu-item:hover:not(:disabled){background:var(--bg);color:var(--text)}.menu-item:disabled{opacity:.4;cursor:not-allowed}.menu-item-danger{color:var(--status-error-fg)}.menu-item-icon{display:inline-flex;align-items:center;color:var(--text-muted)}.menu-divider{height:1px;background:var(--border);margin:4px 0}.reservation-modal-body{display:flex;flex-direction:column;gap:20px}.reservation-modal-body p{color:var(--text-dim);font-size:13px;line-height:1.6;margin:0}.device-id-badge{display:inline-flex;align-items:center;gap:8px;background:#0006;padding:8px 16px;border-radius:6px;border:1px solid var(--border);font-family:JetBrains Mono,monospace;font-size:11px;width:fit-content;margin-bottom:12px}.reservation-input{width:100%;background-color:#0000004d;border:1px solid var(--border);border-radius:6px;padding:12px 16px;color:var(--text);font-size:13px;box-sizing:border-box;transition:all .2s;font-family:JetBrains Mono,monospace}.reservation-input:focus{outline:none;border-color:var(--green);box-shadow:0 0 10px #00ff881a}.duration-selector{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:8px}.duration-option{background-color:#0000004d;border:1px solid var(--border);color:var(--text-dim);padding:10px;border-radius:6px;font-size:11px;cursor:pointer;text-align:center;transition:all .2s;font-weight:800;font-family:JetBrains Mono,monospace}.duration-option:hover{border-color:var(--text-muted);background-color:#ffffff05}.duration-option.active{background-color:#00ff880d;border-color:var(--green);color:var(--green);box-shadow:0 0 10px #00ff881a}.btn-cancel{background:transparent;border:1px solid var(--border);color:var(--text-dim);padding:10px 24px;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;transition:all .2s;text-transform:uppercase;font-family:JetBrains Mono,monospace}.btn-reserve{background:var(--green);color:var(--bg);border:none;padding:10px 24px;border-radius:6px;font-size:12px;font-weight:800;cursor:pointer;transition:all .2s;text-transform:uppercase;font-family:JetBrains Mono,monospace;box-shadow:0 0 15px #0f83}.btn-reserve:hover:not(:disabled){background:#00e67a;box-shadow:0 0 25px #0f86}.btn-reserve:disabled{background-color:var(--border);color:var(--text-dim);cursor:not-allowed;box-shadow:none;filter:grayscale(1);opacity:.5}.title-icon{color:var(--green)}.tag-modal-body{display:flex;flex-direction:column;gap:20px}.device-id-badge{display:inline-flex;align-items:center;gap:8px;background:#0006;padding:8px 16px;border-radius:6px;border:1px solid var(--border);font-family:JetBrains Mono,monospace;font-size:11px}.device-id-badge .label{color:var(--text-dim);text-transform:uppercase;font-weight:800;font-size:10px}.device-id-badge .value{color:var(--green);font-weight:800}.tags-display-section label{display:block;font-size:11px;font-weight:800;color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px;font-family:JetBrains Mono,monospace}.input-with-button{display:flex;gap:8px}.input-with-button input{flex:1;background:#0000004d;border:1px solid var(--border);border-radius:6px;padding:10px 14px;color:var(--text);font-size:13px;transition:all .2s;font-family:JetBrains Mono,monospace}.input-with-button input:focus{outline:none;border-color:var(--green);box-shadow:0 0 15px #0f83}.add-inline-btn{background:var(--green);color:var(--bg);border:none;border-radius:6px;width:40px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.add-inline-btn:hover:not(:disabled){background:#00e67a;box-shadow:0 0 15px #00ff884d}.add-inline-btn:disabled{background:var(--border);color:var(--text-dim);cursor:not-allowed;filter:grayscale(1);opacity:.5}.tags-list{display:flex;flex-wrap:wrap;gap:8px;min-height:48px;padding:12px;background:#0006;border-radius:6px;border:1px dashed var(--border)}.tag-pill-editable{display:flex;align-items:center;gap:6px;background:#00ff880d;color:var(--green);padding:6px 12px;border-radius:6px;font-size:11px;font-weight:800;border:1px solid rgba(0,255,136,.3);font-family:JetBrains Mono,monospace;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 0 10px #00ff880d}.remove-tag{background:transparent;border:none;color:var(--green);cursor:pointer;padding:2px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .2s;opacity:.7}.remove-tag:hover{background:#0f83;opacity:1}.btn-cancel{padding:10px 24px;border-radius:6px;background:transparent;border:1px solid var(--border);color:var(--text-dim);font-weight:700;cursor:pointer;transition:all .2s;text-transform:uppercase;font-size:12px;font-family:JetBrains Mono,monospace}.btn-cancel:hover{color:var(--text);border-color:var(--text-muted)}.btn-save{padding:10px 24px;border-radius:6px;background:var(--green);border:none;color:var(--bg);font-weight:800;cursor:pointer;transition:all .2s;box-shadow:0 0 15px #0f83;text-transform:uppercase;font-size:12px;font-family:JetBrains Mono,monospace}.btn-save:hover:not(:disabled){background:#00e67a;box-shadow:0 0 25px #0f86}.btn-save:disabled{background-color:var(--border);color:var(--text-dim);cursor:not-allowed;box-shadow:none;filter:grayscale(1);opacity:.5}.dc2{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 14px 14px 16px;font-family:Inter,sans-serif;display:flex;flex-direction:column;gap:8px;min-height:200px;transition:border-color var(--motion-fast),box-shadow var(--motion-fast)}.dc2:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.dc2-stripe{position:absolute;left:0;top:12px;bottom:12px;width:2px;border-radius:0 2px 2px 0}.dc2-ready .dc2-stripe{background:var(--status-ready-fg)}.dc2-busy .dc2-stripe{background:var(--status-busy-fg)}.dc2-reserved .dc2-stripe{background:var(--status-reserved-fg)}.dc2-error .dc2-stripe{background:var(--status-error-fg)}.dc2-offline .dc2-stripe{background:var(--status-offline-fg)}.dc2-header{display:flex;justify-content:space-between;align-items:center}.dc2-platform{color:var(--text-muted);font-size:11px;font-weight:500}.dc2-name{color:var(--text);font-size:15px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dc2-udid{color:var(--text-dim);font-family:JetBrains Mono,monospace;font-size:11px}.dc2-tags{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.dc2-team-pill{background:transparent;border:1px solid var(--border);font-size:11px;padding:2px 8px;border-radius:999px;color:var(--text);cursor:pointer;font-family:Inter,sans-serif;line-height:1.4;transition:border-color var(--motion-fast)}.dc2-team-pill:hover{border-color:var(--border-strong)}.dc2-team-pill:focus-visible{outline:2px solid var(--accent, var(--border-strong));outline-offset:1px}.dc2-team-select{font-size:11px;padding:2px 6px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);color:var(--text);font-family:Inter,sans-serif}.dc2-metrics{background:var(--bg);border-radius:var(--radius-sm);padding:10px 12px;display:flex;flex-direction:column;gap:6px;margin-top:auto}.dc2-banner{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;padding:3px 8px;border-radius:var(--radius-sm);font-family:Inter,sans-serif;width:fit-content}.dc2-banner-reserved{color:var(--status-reserved-fg);background:var(--status-reserved-bg)}.dc2-banner-session{color:var(--status-busy-fg);background:var(--status-busy-bg)}.dc2-actions{display:flex;gap:6px;align-items:center}.dc2-primary{flex:1;justify-content:center}.dc2-more{background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:var(--radius-md);width:32px;height:26px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background var(--motion-fast),color var(--motion-fast)}.dc2-more:hover{background:var(--surface-2);color:var(--text)}.dc2-health{display:flex;gap:6px;margin-top:4px;flex-wrap:wrap}.device-explorer-card-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;padding:16px;flex:1}.device-explorer-card-container::-webkit-scrollbar{width:6px}.device-explorer-card-container::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}.device-explorer-container{display:flex;flex-direction:column;width:100%;gap:var(--space-4)}.device-explorer-header-container{display:flex;align-items:center;justify-content:space-between;padding:4px 24px;background:#0f0f1ae6;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:2px solid var(--border);position:sticky;top:0;z-index:1002;gap:var(--space-8);flex-wrap:nowrap;box-shadow:0 10px 30px #0006}.device-explorer-header-left-container{display:flex;align-items:center;gap:24px;flex:1;min-width:0}.device-explorer-header-entry{display:flex;flex-direction:column;gap:4px;min-width:0}.device-explorer-header-entry-header{font-size:11px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em;font-family:JetBrains Mono,monospace}.device-explorer-header-value{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.device-explorer-header-value>.device-explorer-header__platform-btn+.device-explorer-header__platform-btn{margin-left:4px}.device-explorer-header__platform-btn,.device-explorer-header__device-state{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:6px;background:#0006;border:1px solid var(--border);color:var(--text-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:all .2s ease}.device-explorer-header__platform-btn:hover,.device-explorer-header__device-state:hover{background:#ffffff08;color:var(--text);border-color:var(--border)}.device-explorer-header__platform-btn.selected,.device-explorer-header__device-state.selected{background:#00ff880d;color:var(--green);border-color:#00ff884d;box-shadow:0 0 10px #00ff881a}.device-explorer-header__device-state.ready.selected{border-color:var(--green);box-shadow:0 0 15px #0f83}.device-explorer-header__device-state.busy.selected{background:#ffb8000d;color:var(--status-busy-fg);border-color:#ffb8004d;box-shadow:0 0 15px #ffb8001a}.device-explorer-header__device-state.offline.selected{background:#4a4a6a1a;color:var(--text-dim);border-color:var(--text-dim)}.device-explorer-search-wrapper{position:relative;width:320px}.device-explorer-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);pointer-events:none;opacity:.5}.device-explorer-header-text-filter{width:100%;height:32px;padding:0 12px 0 36px;border-radius:6px;border:1px solid var(--border);background:#0006;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text);transition:all .2s ease}.device-explorer-header-text-filter:focus{outline:none;border-color:var(--green);background:#0009;box-shadow:0 0 15px #00ff881a}.device-explorer-header-text-filter::placeholder{color:var(--text-dim);text-transform:uppercase;font-size:11px;letter-spacing:.1em}.device-explorer-header-right-container{display:flex;align-items:center;gap:12px}.device-explorer-header-filter-count{display:flex;align-items:center;gap:8px;padding-right:16px;border-right:1px solid var(--border)}@media (max-width: 1024px){.device-explorer-header-container{flex-direction:column;align-items:stretch;gap:var(--space-4);padding:var(--space-4)}.device-explorer-header-left-container{flex-wrap:wrap;gap:var(--space-4)}.device-explorer-header-entry{flex:1;min-width:120px}.device-explorer-search-wrapper{width:100%}.device-explorer-header-right-container{justify-content:space-between;width:100%}}@media (max-width: 640px){.device-explorer-header-left-container{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-3)}.device-explorer-header-entry,.device-explorer-header-value,.device-explorer-header-filter-count{width:100%;min-width:0}.device-explorer-header-filter-count{padding-right:0;border-right:none;justify-content:flex-start}.device-explorer-header-right-container{flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--space-2);width:100%}}.device-explorer-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 40px;background:#0f0f1a66;border:1px dashed var(--border);border-radius:var(--radius-md);text-align:center;margin:60px auto 40px;max-width:600px;gap:var(--space-4)}.device-explorer-empty-icon{width:64px;height:64px;background:#00ff880d;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--green);margin-bottom:8px;border:1px solid rgba(0,255,136,.1)}.device-explorer-empty h3{font-size:1.5rem;font-weight:700;color:var(--text);margin:0;font-family:Outfit,sans-serif}.device-explorer-empty p{color:var(--text-muted);font-size:14px;max-width:400px;line-height:1.6;margin:0}.device-explorer-empty .Button{margin-top:8px}.device-control-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);z-index:6000;display:flex;flex-direction:column;padding:0;margin:0;animation:modal-fade-in .25s ease-out}.device-control-modal{flex:1;width:100%;height:100%;overflow:hidden;display:flex;flex-direction:column;background:var(--bg)}@keyframes modal-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.de2-sticky-group{position:sticky;top:0;z-index:1002;background:var(--bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 6px 16px -8px #00000080}.de2-toolbar{display:flex;gap:10px;align-items:center;padding:12px 20px;border-bottom:1px solid var(--border);background:transparent;box-shadow:none;flex-wrap:wrap}.de2-search{flex:1;min-width:200px;height:28px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:0 10px;color:var(--text);font-family:Inter,sans-serif;font-size:12px;outline:none}.de2-search::placeholder{color:var(--text-dim)}.de2-search:focus{border-color:var(--border-strong)}.device-explorer-empty h3{color:var(--text);font-family:Inter,sans-serif;font-weight:700;letter-spacing:-.01em}.device-control-view{display:flex;flex-direction:column;height:100%;width:100%;background:var(--bg);color:var(--text);overflow:hidden;font-family:Inter,sans-serif}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px;-webkit-transition:background .2s;transition:background .2s}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.control-view-top-bar{display:flex;align-items:center;padding:0 24px;height:64px;background:var(--surface);border-bottom:2px solid var(--border);gap:24px;z-index:100;position:relative}.device-info-mini{display:flex;align-items:center;gap:16px}.device-pill{font-size:11px;font-weight:800;text-transform:uppercase;padding:2px 10px;border-radius:6px;letter-spacing:.1em;font-family:JetBrains Mono,monospace}.platform-pill{background:#00ff880d;color:var(--green);border:1px solid rgba(0,255,136,.2)}.version-pill{background:#ffb8000d;color:var(--status-busy-fg);border:1px solid rgba(255,184,0,.2)}.reserved-pill{background:#38bdf81a;color:#38bdf8;border:1px solid rgba(56,189,248,.3);animation:pulse-reserved-pill 2s infinite ease-in-out}.device-name-text{font-family:Outfit,sans-serif;font-weight:800;font-size:14px;color:var(--text);letter-spacing:.02em;text-transform:uppercase}.code-font{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-dim);background:#0006;padding:4px 10px;border-radius:6px;border:1px solid var(--border)}.udid-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 4px 3px 10px;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-dim);background:#0006;border-radius:6px;border:1px solid var(--border);max-width:280px}.udid-chip__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.udid-chip__copy{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;border-radius:4px;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s;flex-shrink:0}.udid-chip__copy:hover{background:#ffffff0d;color:var(--green)}.back-to-devices-btn{background:#0006;color:var(--text-dim);border:1px solid var(--border);padding:8px 16px;border-radius:6px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;display:flex;align-items:center;gap:8px;transition:all .2s;cursor:pointer}.back-to-devices-btn:hover{background:#ffffff08;border-color:var(--green);color:var(--green)}.control-view-main{display:flex;flex-direction:row;flex:1;overflow:hidden;padding:24px;gap:32px;background:var(--bg);justify-content:center;align-items:stretch;min-height:0}.control-view-main.is-landscape{align-items:flex-start}.control-view-main.omni-mode{gap:20px}.control-view-main.omni-mode .device-preview-column{min-width:0;flex-shrink:1}.control-view-main.omni-mode .device-stream-canvas{max-width:100%;max-height:100%}.device-preview-column{display:flex;flex-direction:column;align-items:center;gap:24px;flex-shrink:1;min-width:0}.device-screen-wrapper{position:relative;padding:12px;background:#000;border-radius:48px;box-shadow:0 0 0 2px #334155,0 20px 50px #0009,0 0 80px #10b9810d;border:1px solid rgba(255,255,255,.1);transition:all .5s cubic-bezier(.16,1,.3,1)}.device-screen-wrapper:hover{transform:translateY(-4px) scale(1.005);box-shadow:0 0 0 2px var(--green),0 30px 60px #000c,0 0 100px #10b9811a}.device-stream-canvas{position:relative;background:#000;border-radius:28px;overflow:hidden;cursor:crosshair;transition:box-shadow .3s ease,border-color .3s ease;outline:none;border:2px solid transparent;user-select:none;-webkit-user-select:none}.device-stream-canvas.focused{border-color:var(--green);box-shadow:0 0 20px var(--accent-subtle)}.device-stream-image{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.device-stream-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;width:100%;color:var(--text-muted);gap:16px;background:radial-gradient(circle at center,#0f172a,#020617)}.device-footer-actions{display:flex;flex-wrap:wrap;justify-content:center;width:100%;background:#0f172acc;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:16px;border:1px solid rgba(255,255,255,.08);padding:6px;gap:6px;box-shadow:0 10px 25px -5px #0006,0 0 15px #10b9810d}.footer-action-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;color:var(--text-muted);font-size:11px;text-transform:uppercase;font-weight:700;letter-spacing:.05em;border:none;background:transparent;border-radius:var(--radius-sm);transition:all .2s ease}.footer-action-btn:hover{background:#ffffff0d;color:var(--text)}.footer-action-btn.active{background:#ffffff0a;color:var(--green);box-shadow:inset 0 -2px 0 0 var(--green)}.footer-divider{width:1px;height:24px;background:var(--border);margin:auto 4px}.hint-text{font-size:11px;color:var(--text-muted);font-style:italic;margin-top:4px}.device-interactions-column{flex:1;display:flex;flex-direction:column;gap:0;min-width:450px;max-width:1200px;height:100%;overflow:hidden;min-height:0}.interaction-tabs{display:flex;gap:4px;background:var(--surface);padding:4px;border-radius:6px;border:1px solid var(--border);margin-bottom:16px;flex-shrink:0}.tab-btn{flex:1 1 0;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 6px;background:transparent;border:none;font-size:11px;font-weight:800;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;border-radius:4px;cursor:pointer;transition:all .2s;font-family:JetBrains Mono,monospace;white-space:nowrap}.tab-btn>svg{flex-shrink:0;opacity:.7;transition:opacity .15s}.tab-btn>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.tab-btn:hover>svg,.tab-btn.active>svg{opacity:1}.tab-btn:hover{color:var(--text);background:#ffffff05}.tab-btn.active{color:var(--bg);background:var(--green);box-shadow:0 0 15px #00ff884d}.interactions-scroll-area{flex:1;overflow-y:auto;overflow-x:hidden;padding-right:8px;display:flex;flex-direction:column}.action-card{background:#0003;border-radius:6px;padding:20px;border:1px solid var(--border);transition:all .2s;display:flex;flex-direction:column;gap:16px}.action-card:hover{background:#ffffff03;border-color:var(--green);box-shadow:0 4px 20px #0006}.action-card-title{font-family:Outfit,sans-serif;font-size:13px;font-weight:800;color:var(--text);display:flex;align-items:center;gap:12px;text-transform:uppercase;letter-spacing:.1em;opacity:.9}.compact-label{font-size:11px;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.action-card-hint{margin:-4px 0 4px;font-size:12px;color:var(--text-muted);line-height:1.5}.actions-grid{display:flex;flex-direction:column;gap:16px}.btn-sm{padding:8px 16px;font-size:11px}.type-input-field.compact,.app-select-dropdown.compact{padding:10px;font-size:13px}.file-select-box.compact{padding:var(--space-4);margin-bottom:8px}.clipboard-display.compact{min-height:48px;max-height:80px;overflow-y:auto;padding:8px;font-size:11px;background:#0006}.actions-row{display:flex;gap:var(--space-8)}.install-app-section,.uninstall-app-section{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0}.file-select-box{background:#ffffff08;border:2px dashed var(--border);border-radius:var(--radius-md);padding:var(--space-8);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);transition:all .3s ease}.file-select-box:hover{background:#10b9810d;border-color:var(--green)}.btn-premium,.btn-secondary{padding:10px 20px;border-radius:var(--radius-sm);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);display:flex;align-items:center;justify-content:center;gap:8px;border:none}.btn-premium{background:var(--green);color:#000}.btn-premium:hover:not(:disabled){background:var(--green-dim);transform:translateY(-1px);box-shadow:0 4px 12px var(--accent-subtle)}.btn-secondary{background:#ffffff0d;color:var(--text);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:#ffffff1a;color:var(--text);border-color:var(--text-muted)}.btn-secondary.active{background:var(--primary-soft);color:var(--green);border-color:var(--green)}.btn-sm{padding:6px 12px!important;font-size:11px!important}.type-input-field,.app-select-dropdown{width:100%;padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#0003;font-size:13px;color:var(--text);transition:all .2s ease}.type-input-field:focus{outline:none;border-color:var(--green);background:#0006;box-shadow:0 0 0 3px var(--primary-soft)}.clipboard-display{background:#161b22b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-md);border:1px solid var(--border);padding:var(--space-4);margin-top:var(--space-4);font-family:Fira Code,monospace;font-size:12px;color:#38bdf8;min-height:80px;box-shadow:inset 0 2px 10px #00000080}.log-display-area{flex:1;min-height:0;overflow-y:auto;font-family:Fira Code,monospace;font-size:11px;line-height:1.5;background:#161b22b3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:16px;border-radius:0 0 var(--radius-md) var(--radius-md);color:var(--text-muted);box-shadow:inset 0 2px 20px #00000080;border:1px solid var(--border);border-top:none;scrollbar-width:thin;scrollbar-color:var(--green) transparent}.log-line{display:flex;gap:12px;margin-bottom:0;padding:2px 8px 2px 6px;white-space:pre-wrap;word-break:break-all;border-left:2px solid transparent;transition:background .15s ease}.log-line:nth-child(odd){background:#ffffff03}.log-line:hover{background:#ffffff0d}.log-index{color:var(--text-dim);opacity:.55;-webkit-user-select:none;user-select:none;min-width:38px;text-align:right;font-size:11px;font-variant-numeric:tabular-nums}.log-content{flex:1}.log-notice{border-left-color:#38bdf8;color:#cbd5f5}.log-info,.log-debug{border-left-color:transparent;color:var(--text-muted)}.log-warn{border-left-color:#fbbf24;color:#fde68a}.log-warn:nth-child(odd),.log-warn:nth-child(2n){background:#fbbf240a}.log-error{border-left-color:#f43f5e;color:#fecdd3;background:#f43f5e0f;font-weight:500}.log-error:nth-child(odd),.log-error:nth-child(2n){background:#f43f5e14}.log-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;row-gap:6px;background:#0f172a99;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:8px 16px;border-radius:var(--radius-md) var(--radius-md) 0 0;border:1px solid var(--border);border-bottom:none}.log-filter-group,.log-actions-group{display:flex;gap:8px;align-items:center;min-width:0;flex-wrap:wrap}.log-search-box{position:relative;display:flex;align-items:center}.search-icon-inline{position:absolute;left:8px;color:var(--text-muted);pointer-events:none;opacity:.6}.log-search-box .type-input-field.tiny{padding-left:28px!important;width:140px;background:#0003;border-color:var(--border)}.log-stat-pill{font-size:11px;background:#10b9811a;color:var(--green);padding:3px 8px;border-radius:4px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:6px}.log-live-dot{width:8px;height:8px;border-radius:50%;background:var(--text-muted);flex-shrink:0;transition:background .3s ease}.log-live-dot.active{background:#22c55e;box-shadow:0 0 8px #22c55e99;animation:pulse-dot 2s infinite}@keyframes pulse-dot{0%,to{opacity:1;box-shadow:0 0 8px #22c55e99}50%{opacity:.6;box-shadow:0 0 16px #22c55e66}}.log-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;min-height:200px}.log-empty-title{font-family:Outfit,sans-serif;font-size:14px;font-weight:700;color:var(--text);margin:0 0 6px;letter-spacing:.02em}.log-empty-subtitle{font-size:12px;color:var(--text-muted);max-width:300px;margin:0;line-height:1.5}.animate-pulse{animation:pulse-op 1.5s infinite}@keyframes pulse-op{0%,to{opacity:1}50%{opacity:.4}}.tab-content{animation:slideUpFade .4s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column;flex:1;min-height:0}@keyframes slideUpFade{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.gestures-grid-container{display:flex;flex-direction:column;align-items:center;gap:12px}.gestures-dpad{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:8px;width:140px;height:140px;padding:12px;background:#0003;border-radius:50%;border:1px solid rgba(255,255,255,.05)}.dpad-btn{display:flex;align-items:center;justify-content:center;background:#ffffff08;border:1px solid rgba(255,255,255,.05);border-radius:8px;color:var(--text-muted);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}.dpad-btn:hover{background:var(--green);border-color:var(--green);color:#fff;transform:scale(1.1);box-shadow:0 0 20px var(--accent-subtle);z-index:2}.dpad-btn:active{transform:scale(.95)}.dpad-center{background:radial-gradient(circle,var(--accent-subtle) 0%,transparent 70%);border-radius:50%;opacity:.2}.app-mgmt-content{display:flex;flex-direction:row;gap:var(--space-8);align-items:flex-start}.upload-box-row,.uninstall-controls-row{display:flex;gap:12px;align-items:center;margin-top:8px}.file-upload-launcher{flex:1;display:flex;align-items:center;gap:12px;padding:10px 16px;background:#ffffff08;border:1px dashed var(--border);border-radius:var(--radius-md);cursor:pointer;font-size:13px;color:var(--text-muted);transition:all .2s ease}.file-upload-launcher:hover{background:#10b9810d;border-color:var(--green);color:var(--text)}.divider-v{width:1px;align-self:stretch;background:linear-gradient(180deg,transparent,var(--border),transparent)}.select-wrapper{flex:1;position:relative;display:flex;align-items:center}.select-loader{position:absolute;right:32px;color:var(--green)}.btn-destructive{background:var(--status-error-fg);color:#fff;border:1px solid transparent;padding:10px 20px;border-radius:var(--radius-sm);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:8px;cursor:pointer;transition:background .2s ease,transform .2s ease,box-shadow .2s ease}.btn-destructive:hover:not(:disabled){background:#dc2626;transform:translateY(-1px);box-shadow:0 4px 12px #ef444459}.btn-destructive:disabled{opacity:.5;cursor:not-allowed}.manual-input-box{margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.05)}.type-input-field.tiny{padding:8px 12px;font-size:12px;opacity:.6}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.action-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.screenshot-workspace{display:flex;gap:20px;flex:1;min-height:0;overflow:hidden}.screenshot-gallery-sidebar{width:180px;display:flex;flex-direction:column;gap:16px;flex-shrink:0;min-height:0}.take-screenshot-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%}.screenshot-thumbnails-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding-right:4px;min-height:0}.screenshot-thumb-item{position:relative;border-radius:8px;overflow:hidden;aspect-ratio:9/16;background:#0006;border:2px solid transparent;cursor:pointer;transition:all .2s ease;flex-shrink:0}.screenshot-thumb-item:hover{border-color:#10b98166}.screenshot-thumb-item.active{border-color:var(--green);box-shadow:0 0 12px var(--accent-subtle)}.screenshot-thumb-item img{width:100%;height:100%;object-fit:cover;opacity:.7;transition:opacity .2s ease}.screenshot-thumb-item:hover img,.screenshot-thumb-item.active img{opacity:1}.thumb-time{position:absolute;bottom:0;left:0;right:0;background:#000000b3;color:#fff;font-size:11px;padding:2px 4px;text-align:center;font-family:JetBrains Mono,monospace}.thumb-delete-btn{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:4px;background:#ef4444cc;color:#fff;border:none;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.screenshot-thumb-item:hover .thumb-delete-btn{opacity:1}.thumb-delete-btn:hover{background:var(--status-error-fg)}.screenshot-main-preview{flex:1;background:#0000004d;border-radius:8px;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;border:1px solid rgba(255,255,255,.05);min-height:0}.preview-container{display:flex;flex-direction:column;width:100%;height:100%;position:relative}.preview-image-wrapper{flex:1;position:relative;min-height:0}.preview-image-wrapper img{position:absolute;top:20px;bottom:20px;left:20px;right:20px;max-width:calc(100% - 40px);max-height:calc(100% - 40px);object-fit:contain;margin:auto;border-radius:4px;box-shadow:0 10px 40px #00000080}.preview-footer{padding:16px 24px;background:#0006;border-top:1px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.preview-meta{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text-muted)}.meta-label{text-transform:uppercase;font-weight:700;opacity:.5}.meta-divider{opacity:.2}.preview-actions{display:flex;gap:12px}.btn-text-only{background:transparent;border:none;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.05em;cursor:pointer;padding:4px 8px;border-radius:4px}.btn-text-only:hover{color:#ef4444;background:#ef44440d}.preview-empty-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-muted);font-size:13px;opacity:.6}.empty-gallery-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px 12px;color:var(--text-muted);font-size:11px;text-align:center}.empty-gallery-icon{opacity:.4}.empty-gallery-title{font-weight:700;font-size:12px;color:var(--text);margin:0}.empty-gallery-hint{margin:0;font-size:11px;color:var(--text-muted);line-height:1.4;max-width:160px}.empty-gallery-hint strong{color:var(--green);font-weight:700}.interactions-scroll-area.terminal-mode{overflow:hidden;padding:0;display:flex;flex-direction:column;height:100%;min-height:0}.omni-inspector-tab-wrapper{flex:1;min-height:0;display:flex;flex-direction:column}.interactions-scroll-area.terminal-mode .action-card.full-height{height:100%;min-height:0;border-radius:0;border:none}.interactions-scroll-area.screenshot-mode{overflow:hidden;height:100%;min-height:0;display:flex;flex-direction:column;padding:0}.interactions-scroll-area.screenshot-mode .tab-content{display:flex;flex-direction:column;flex:1 1 0%;min-height:0;padding:0}.interactions-scroll-area.screenshot-mode .action-card.screenshot-card{display:flex;flex-direction:column;flex:1;min-height:0;margin-bottom:0;border-radius:0;border:none;padding:0;overflow:hidden}@media (max-width: 900px){.control-view-main{flex-direction:column;padding:16px;gap:16px;overflow-y:auto}.device-preview-column{min-width:0;width:100%;max-width:420px;margin:0 auto}.device-interactions-column{width:100%;max-width:100%;min-width:0}}.terminal-container{display:flex;flex-direction:column;background-color:var(--bg);color:var(--text);font-family:JetBrains Mono,monospace;border-radius:6px;overflow:hidden;height:100%;max-height:100%;width:100%;min-height:0;border:1px solid var(--border);box-shadow:0 20px 50px #00000080;position:relative}.terminal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background-color:#0006;border-bottom:2px solid var(--border)}.terminal-controls{display:flex;gap:8px;width:60px}.dot{width:8px;height:8px;border-radius:4px;border:1px solid rgba(255,255,255,.1)}.dot.red{background-color:#ff4d4d}.dot.yellow{background-color:#fc0}.dot.green{background-color:var(--green)}.terminal-title{font-size:11px;font-weight:800;color:var(--text-dim);text-transform:uppercase;letter-spacing:.15em;font-family:JetBrains Mono,monospace}.terminal-actions{display:flex;justify-content:flex-end;width:60px}.terminal-action-btn{background:transparent;border:1px solid var(--border);color:var(--text-dim);font-size:11px;font-weight:800;padding:4px 10px;border-radius:6px;cursor:pointer;transition:all .2s;text-transform:uppercase;font-family:JetBrains Mono,monospace}.terminal-action-btn:hover{color:var(--text);background:#ffffff0d;border-color:var(--text-muted)}.terminal-history{flex:1;overflow-y:auto;overflow-x:hidden;padding:20px;font-size:12px;line-height:1.6;scrollbar-width:thin;scrollbar-color:var(--green) var(--bg);min-height:0}.terminal-history::-webkit-scrollbar{width:6px}.terminal-history::-webkit-scrollbar-track{background:transparent}.terminal-history::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:4px}.terminal-history::-webkit-scrollbar-thumb:hover{background-color:var(--green)}.terminal-line{margin-bottom:6px;white-space:pre-wrap;word-break:normal;overflow-wrap:anywhere}.terminal-line.command{color:var(--green);font-weight:600}.terminal-line.output{color:var(--text)}.terminal-line.error{color:#ff4d4d}.terminal-line.system{color:var(--text-dim);font-style:italic;border-bottom:1px dashed var(--border);padding-bottom:6px;margin-bottom:12px}.terminal-input-area{display:flex;align-items:center;padding:16px 20px;background-color:#0006;border-top:2px solid var(--border)}.terminal-prompt{color:var(--green);margin-right:12px;font-weight:800;-webkit-user-select:none;user-select:none}.terminal-input{flex:1;background:transparent;border:none;color:var(--text);font-family:inherit;font-size:13px;outline:none;font-weight:500}.terminal-input::placeholder{color:#ffffff1a}.terminal-loading-indicator{display:inline-block;width:8px;height:16px;background-color:var(--green);animation:blink 1s step-end infinite;vertical-align:middle;margin-left:8px;border-radius:4px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.omni-inspector-container{display:flex;flex-direction:column;height:100%;background:var(--bg);color:var(--text);font-family:Inter,sans-serif;overflow:hidden;position:relative}.omni-main-content{flex:1;display:flex;gap:16px;padding:16px;overflow:hidden;height:100%}.omni-screenshot-panel{width:380px;min-width:320px;flex-shrink:0;display:flex;flex-direction:column;background:var(--surface);border-radius:6px;border:1px solid var(--border);overflow:hidden}.omni-screenshot-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#0006;border-bottom:2px solid var(--border)}.omni-screenshot-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--text);opacity:.9;font-family:JetBrains Mono,monospace}.omni-mode-toggle{display:flex;background:#0000004d;padding:2px;border-radius:6px;border:1px solid var(--border)}.omni-mode-btn{display:flex;align-items:center;gap:6px;padding:4px 10px;background:transparent;border:none;border-radius:4px;color:var(--text-dim);font-size:11px;font-weight:800;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:.05em;font-family:JetBrains Mono,monospace}.omni-mode-btn.active{background:var(--green);color:var(--bg);box-shadow:0 0 10px #00ff884d}.omni-refresh-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;background:var(--green);color:var(--bg);border:none;border-radius:6px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;cursor:pointer;transition:all .2s;font-family:JetBrains Mono,monospace}.omni-refresh-btn:hover:not(:disabled){background:#00e67a;box-shadow:0 0 15px #0f86}.omni-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.omni-screenshot-container{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:12px;background:#161b22b3;position:relative;overflow:hidden}.omni-screenshot-wrapper{position:relative;max-width:100%;max-height:100%;height:100%;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.omni-screenshot-wrapper.interactable{cursor:crosshair}.omni-screenshot-img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:4px;display:block}.omni-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.omni-overlay>*{pointer-events:auto}.omni-hit-area{position:absolute;cursor:pointer;background:transparent;transition:background .15s ease}.omni-hit-area:hover{background:#10b98133}.omni-frame-hover{position:absolute;border:2px solid var(--green);background:#10b9811a;pointer-events:none;border-radius:6px}.omni-frame-select{position:absolute;border:2px solid var(--green);background:#10b98133;pointer-events:none;box-shadow:0 0 20px var(--accent-subtle);border-radius:6px}.omni-frame-match{position:absolute;pointer-events:none;border-radius:6px;border-style:dashed;border-width:2px;animation:omni-match-pulse 1.6s ease-out 1}.omni-frame-match.unique{border-color:var(--green);background:#10b9811f;box-shadow:0 0 18px #10b98159}.omni-frame-match.multi{border-color:var(--amber, #f59e0b);background:#f59e0b1a;box-shadow:0 0 14px #f59e0b4d}@keyframes omni-match-pulse{0%{opacity:0;transform:scale(.96)}35%{opacity:1;transform:scale(1)}to{opacity:1;transform:scale(1)}}.omni-loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#000c;color:var(--text-muted);font-size:11px}.omni-spinner{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--green);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.omni-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-muted);text-align:center;padding:32px;font-size:12px}.omni-empty-state svg{opacity:.3}.omni-empty-state.small{padding:24px;font-size:11px}.omni-tree-panel{flex:1;min-width:0;display:flex;flex-direction:column;background:#0003;border-radius:6px;border:1px solid var(--border);overflow:hidden;min-height:0}.omni-tree-content{flex:1;min-height:0;overflow-y:auto;padding:8px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.omni-tree-header{display:flex;align-items:center;justify-content:space-between;padding:12px;background:#0006;border-bottom:2px solid var(--border)}.omni-tree-title{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--text);opacity:.9;font-family:JetBrains Mono,monospace}.omni-count-badge{font-size:11px;background:#00ff880d;color:var(--green);padding:2px 8px;border-radius:6px;font-weight:800;text-transform:uppercase;font-family:JetBrains Mono,monospace}.omni-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:#ffffff05;border:1px solid var(--border);border-radius:6px;color:var(--text-dim);cursor:pointer;transition:all .2s}.omni-action-btn:hover{background:#ffffff0d;color:var(--green);border-color:var(--green)}.omni-tree-search{display:flex;align-items:center;gap:8px;margin:12px;padding:8px 12px;background:#0006;border:1px solid var(--border);border-radius:6px;transition:all .2s}.omni-tree-search:focus-within{border-color:var(--green);box-shadow:0 0 10px #00ff881a}.omni-tree-search input{flex:1;background:transparent;border:none;color:var(--text);font-size:11px;outline:none;font-family:JetBrains Mono,monospace}.tree-item{display:flex;align-items:center;gap:8px;padding:8px 12px;margin-bottom:2px;border-radius:4px;cursor:pointer;font-size:12px;color:var(--text-dim);transition:all .15s;border:1px solid transparent;min-height:36px;background:#0000001a}.tree-item:hover{background:#ffffff05;color:var(--text)}.tree-item.selected{background:#00ff8814;color:var(--green);border-color:#0f86;box-shadow:inset 0 0 0 1px #0f83}.tree-item.hovered:not(.selected){background:#ffffff0a;border-color:#ffffff1a;color:var(--text)}.tree-node{display:flex;flex-direction:column}.tree-children{margin-left:0}.tree-toggle{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;border-radius:3px;flex-shrink:0;padding:0;transition:color .15s,background .15s}.tree-toggle:hover{color:var(--green);background:#00ff881a}.tree-toggle-spacer{display:inline-block;width:18px;flex-shrink:0}.tree-item-indent{flex-shrink:0}.tree-icon{color:var(--text-muted);flex-shrink:0;opacity:.6}.tree-label{flex:1;font-size:12px;font-family:JetBrains Mono,Fira Code,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-badge{font-size:10px;font-weight:700;background:#ffffff0f;color:var(--text-muted);padding:1px 5px;border-radius:4px;flex-shrink:0;font-family:JetBrains Mono,monospace}.omni-details-panel{flex:1;min-width:280px;max-width:360px;display:flex;flex-direction:column;background:var(--surface);border-radius:6px;border:1px solid var(--border);overflow:hidden;min-height:0}.omni-details-content{flex:1;min-height:0;overflow-y:auto;padding:16px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.omni-header-left{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.omni-tree-actions{display:flex;gap:6px;align-items:center}.omni-clear-btn{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:16px;padding:0 4px;line-height:1;border-radius:3px}.omni-clear-btn:hover{color:var(--text);background:#ffffff14}.omni-info-table,.omni-locators-list{display:flex;flex-direction:column;gap:6px}.omni-details-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#0006;border-bottom:2px solid var(--border);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--text);opacity:.9;font-family:JetBrains Mono,monospace}.omni-section{margin-bottom:24px}.omni-section-header{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border);font-family:JetBrains Mono,monospace}.omni-info-row{display:flex;gap:16px;padding:12px 16px;background:#0006;border-radius:6px;border:1px solid var(--border);min-height:44px;align-items:center}.omni-info-key{width:60px;flex-shrink:0;font-size:11px;font-weight:800;text-transform:uppercase;color:var(--text-dim);font-family:JetBrains Mono,monospace}.omni-info-value{flex:1;font-size:11px;color:var(--text);word-break:break-all}.omni-layout-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.omni-layout-item{display:flex;flex-direction:column;gap:6px;padding:12px 8px;background:#0006;border-radius:6px;border:1px solid var(--border);text-align:center;min-height:60px;justify-content:center}.omni-layout-label{font-size:11px;font-weight:800;text-transform:uppercase;color:var(--text-dim);font-family:JetBrains Mono,monospace}.omni-layout-value{font-size:12px;font-weight:800;color:var(--green);font-family:JetBrains Mono,monospace}.omni-locator-row{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#0009;border-radius:6px;border:1px solid var(--border);border-left:3px solid var(--green);transition:all .2s;min-height:48px}.omni-locator-strategy{flex-shrink:0;font-size:11px;font-weight:800;text-transform:uppercase;background:#00ff880d;color:var(--green);padding:2px 6px;border-radius:6px;letter-spacing:.05em;font-family:JetBrains Mono,monospace}.omni-locator-value{flex:1;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-muted);word-break:break-all;line-height:1.5}.omni-copy-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#ffffff08;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all .2s ease}.omni-copy-btn:hover{background:var(--green);border-color:var(--green);color:#000}.omni-locator-actions{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.omni-test-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#ffffff08;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all .2s ease}.omni-test-btn:hover{background:#10b9811f;border-color:var(--green);color:var(--green)}.omni-test-btn.active{background:var(--green);border-color:var(--green);color:#000}.omni-match-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:4px;font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border:1px solid transparent;line-height:1.4;white-space:nowrap}.omni-match-badge.unique{background:#10b9811f;border-color:#10b98166;color:var(--green)}.omni-match-badge.multi{background:#f59e0b1f;border-color:#f59e0b66;color:var(--amber, #f59e0b)}.omni-match-badge.zero{background:#ef44441f;border-color:#ef444466;color:var(--red, #ef4444)}.omni-match-badge.unsupported{background:#ffffff0a;border-color:var(--border);color:var(--text-dim)}.omni-copy-btn.copied{background:var(--green);border-color:var(--green);color:#000}.omni-attributes-table{display:flex;flex-direction:column;gap:4px;background:#161b22b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-sm);border:1px solid var(--border);padding:8px;max-height:200px;overflow-y:auto}.omni-attr-row{display:flex;gap:8px;padding:6px 8px;border-radius:4px;transition:background .2s ease}.omni-attr-row:hover{background:#ffffff08}.omni-attr-key{width:120px;flex-shrink:0;font-size:11px;font-weight:600;color:var(--text-muted);font-family:Fira Code,monospace}.omni-attr-value{flex:1;font-size:11px;color:#e2e8f0;font-family:Fira Code,monospace;word-break:break-all}.omni-tree-content::-webkit-scrollbar,.omni-details-content::-webkit-scrollbar,.omni-attributes-table::-webkit-scrollbar{width:6px}.omni-tree-content::-webkit-scrollbar-track,.omni-details-content::-webkit-scrollbar-track,.omni-attributes-table::-webkit-scrollbar-track{background:transparent}.omni-tree-content::-webkit-scrollbar-thumb,.omni-details-content::-webkit-scrollbar-thumb,.omni-attributes-table::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}.omni-tree-content::-webkit-scrollbar-thumb:hover,.omni-details-content::-webkit-scrollbar-thumb:hover,.omni-attributes-table::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.omni-quick-actions{display:flex;flex-direction:column;gap:16px}.omni-input-group{display:flex;flex-direction:column;gap:8px}.omni-input-field{width:100%;background:#0000004d;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;color:var(--text);font-size:12px;outline:none;transition:all .2s ease}.omni-input-field:focus{border-color:var(--green);background:#00000080}.omni-gestures-container{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px;background:#0003;border-radius:var(--radius-md);border:1px solid var(--border)}.omni-dpad{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:8px;width:120px;height:120px}.omni-dpad-btn{display:flex;align-items:center;justify-content:center;background:#ffffff08;border:1px solid rgba(255,255,255,.05);border-radius:8px;color:var(--text-muted);cursor:pointer;transition:all .2s ease}.omni-dpad-btn:hover{background:var(--green);color:#000;transform:scale(1.1)}.omni-clipboard-box{display:flex;gap:8px;align-items:center}.omni-clipboard-val{flex:1;background:#161b22b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:4px;padding:8px;font-family:Fira Code,monospace;font-size:11px;color:#38bdf8;min-height:32px;overflow-x:auto;white-space:nowrap}.omni-details-tabs{display:flex;background:#00000080;border-bottom:1px solid var(--border);flex-shrink:0}.omni-details-tab{display:flex;align-items:center;gap:5px;flex:1;padding:10px 8px;border:none;background:transparent;color:var(--text-muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;border-bottom:2px solid transparent;transition:all .15s ease;font-family:JetBrains Mono,monospace;justify-content:center;min-width:0;white-space:nowrap}.omni-details-tab>svg{flex-shrink:0}.omni-details-tab>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.omni-details-tab:hover:not(:disabled){color:var(--text);background:#ffffff08}.omni-details-tab.active{color:var(--green);border-bottom-color:var(--green);background:#00ff880a}.omni-details-tab:disabled{opacity:.3;cursor:not-allowed}.omni-locator-row{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;background:#0006;border-radius:6px;border:1px solid var(--border);border-left:3px solid var(--green);transition:all .15s;cursor:pointer}.omni-locator-row:hover{background:#ffffff05;border-color:var(--green)}.omni-locator-row.selected-for-code{border-color:var(--green);background:#00ff880f;box-shadow:0 0 12px #00ff8814}.omni-locator-left{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.omni-locator-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.omni-stability-badge{display:inline-flex;align-items:center;gap:3px;font-size:9px;font-weight:800;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.05em;font-family:JetBrains Mono,monospace}.omni-stability-badge.stable{background:#10b9811f;color:#10b981;border:1px solid rgba(16,185,129,.25)}.omni-stability-badge.moderate{background:#fbbf241a;color:#fbbf24;border:1px solid rgba(251,191,36,.25)}.omni-stability-badge.fragile{background:#f43f5e1a;color:#f43f5e;border:1px solid rgba(244,63,94,.25)}.omni-stability-reason{font-size:10px;color:var(--text-muted);font-style:italic;line-height:1.3}.omni-section-badge{font-size:9px;font-weight:600;background:#00ff8814;color:var(--green);padding:2px 6px;border-radius:4px;margin-left:6px;vertical-align:middle;text-transform:uppercase;letter-spacing:.05em}.tree-text-preview{font-size:10px;color:var(--text-muted);font-style:italic;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0}.tree-type-tag{font-size:9px;font-weight:700;color:var(--text-dim);background:#ffffff0a;padding:1px 5px;border-radius:3px;flex-shrink:0;font-family:JetBrains Mono,monospace;text-transform:none;letter-spacing:.02em;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.omni-inspector-container.omni-embedded{height:100%}.omni-inspector-container.omni-embedded .omni-main-content{padding:0;gap:12px}.omni-inspector-container.omni-embedded .omni-tree-panel{flex:1 1 50%;min-width:180px}.omni-inspector-container.omni-embedded .omni-details-panel{flex:1 1 50%;min-width:230px;max-width:none}.omni-summary-panel{display:flex;flex-direction:column;gap:18px}.omni-summary-hero{display:flex;align-items:flex-start;gap:12px;padding:14px;background:#00ff880a;border:1px solid rgba(0,255,136,.15);border-radius:8px;color:var(--green)}.omni-summary-hero>svg{flex-shrink:0;margin-top:2px}.omni-summary-title{font-size:13px;font-weight:700;color:var(--text);margin-bottom:2px}.omni-summary-subtitle{font-size:11px;color:var(--text-muted);line-height:1.5}.omni-summary-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.omni-summary-stat{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:#0006;border:1px solid var(--border);border-radius:6px}.omni-summary-stat__label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);font-family:JetBrains Mono,monospace}.omni-summary-stat__value{font-size:14px;font-weight:700;color:var(--green);font-family:JetBrains Mono,monospace;word-break:break-all}.omni-summary-roles{display:flex;flex-direction:column;gap:4px}.omni-summary-role{display:flex;align-items:center;gap:10px;padding:8px 10px;background:#00000040;border:1px solid var(--border);border-radius:6px}.omni-summary-role__emoji{font-size:16px;line-height:1}.omni-summary-role__name{flex:1;font-size:12px;color:var(--text)}.omni-summary-role__count{font-size:11px;font-weight:700;color:var(--green);background:#00ff880f;padding:2px 8px;border-radius:4px;font-family:JetBrains Mono,monospace}.omni-search-hint{display:flex;align-items:center;gap:5px;padding:4px 14px;font-size:10px;color:var(--green);opacity:.7;font-style:italic;background:#00ff8808;border-bottom:1px solid rgba(0,255,136,.08)}.omni-insight-panel{display:flex;flex-direction:column;gap:16px}.omni-insight-role{display:flex;align-items:center;gap:14px;padding:16px;background:#00ff880a;border-radius:8px;border:1px solid rgba(0,255,136,.12)}.omni-insight-emoji{font-size:28px;line-height:1}.omni-insight-role-name{font-size:14px;font-weight:700;color:var(--text);font-family:JetBrains Mono,monospace}.omni-insight-interactable{margin-top:4px;display:flex;gap:6px}.omni-badge-green{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;color:#10b981;background:#10b9811a;padding:2px 8px;border-radius:4px;border:1px solid rgba(16,185,129,.2)}.omni-badge-gray{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;color:var(--text-muted);background:#ffffff0a;padding:2px 8px;border-radius:4px;border:1px solid var(--border)}.omni-insight-warning{padding:10px 12px;background:#fbbf240f;border:1px solid rgba(251,191,36,.2);border-radius:6px;font-size:11px;color:#fbbf24}.omni-insight-description{display:flex;gap:10px;align-items:flex-start;padding:12px;background:#0000004d;border-radius:6px;border:1px solid var(--border)}.omni-insight-icon{color:var(--green);flex-shrink:0;margin-top:2px}.omni-insight-description p{font-size:12px;color:var(--text);line-height:1.6;margin:0}.omni-insight-best-locator,.omni-insight-attributes{display:flex;flex-direction:column;gap:8px}.omni-quick-facts{display:flex;flex-direction:column;gap:4px}.omni-quick-fact-row{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-radius:4px;background:#0003}.omni-quick-fact-label{font-size:11px;color:var(--text-muted);font-weight:600}.omni-quick-fact-value{font-size:11px;color:var(--text);font-family:JetBrains Mono,monospace}.omni-quick-fact-value.true{color:#10b981;font-weight:700}.omni-codegen-panel{display:flex;flex-direction:column;gap:12px}.omni-codegen-frameworks{display:flex;gap:4px;flex-wrap:wrap}.omni-fw-btn{flex:1;padding:6px 4px;background:#ffffff08;border:1px solid var(--border);border-radius:6px;color:var(--text-muted);font-size:10px;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap}.omni-fw-btn:hover{background:#ffffff0f;color:var(--text)}.omni-fw-btn.active{background:#00ff8814;border-color:#0f86;color:var(--green)}.omni-codegen-locator-selector{display:flex;align-items:center;gap:8px}.omni-codegen-label{font-size:10px;font-weight:700;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;letter-spacing:.05em}.omni-fw-select{flex:1;padding:6px 8px;background:#0000004d;border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:11px;outline:none;cursor:pointer}.omni-fw-select:focus{border-color:var(--green)}.omni-codegen-output{display:flex;flex-direction:column;border-radius:8px;border:1px solid var(--border);overflow:hidden}.omni-codegen-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#00000080;border-bottom:1px solid var(--border)}.omni-codegen-lang{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--green);font-family:JetBrains Mono,monospace}.omni-codegen-pre{margin:0;padding:14px;background:#161b22b3;color:#e2e8f0;font-family:Fira Code,JetBrains Mono,monospace;font-size:11px;line-height:1.6;overflow-x:auto;white-space:pre}.omni-codegen-pre code{font-family:inherit;font-size:inherit;color:inherit}
|