:root{--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;--accent-border:#8b5cf680;--social-bg:#1f293780;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (width<=1024px){:root{font-size:16px}}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}:root{--color-bg:#0a0a0a;--color-panel:#1a1a1a;--color-panel-2:#0f0f0f;--color-border:#374151;--color-border-hover:#895af6;--color-text:#e5e7eb;--color-text-muted:#9ca3af;--color-text-faint:#6b7280;--color-accent:#895af6;--color-success:#34d399;--color-error:#f87171;--color-warning:#fbbf24;--bg:var(--color-bg);--card-bg:var(--color-panel);--border:var(--color-border);--text:var(--color-text);--text-h:var(--color-text);--text-muted:var(--color-text-muted);--accent:var(--color-accent);--accent-bg:#8b5cf614;--danger:var(--color-error);--success:var(--color-success);--code-bg:var(--color-panel-2);--radius:12px;--shadow:0 1px 2px #0006;--phone-chrome:175px}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}h1,h2,h3,.heading,.login-title,.page-header h2{color:var(--color-accent)}button{font-family:inherit;font-size:inherit;cursor:pointer;color:var(--color-text)}input,textarea,select{font-family:inherit;font-size:inherit;background:var(--color-panel-2);color:var(--color-text);border:1px solid var(--color-border)}input::placeholder,textarea::placeholder{color:var(--color-text-faint)}input:focus,textarea:focus,select:focus{outline:2px solid var(--color-accent);outline-offset:-1px;border-color:#0000}table th,table td{color:var(--color-text)}table th{color:var(--color-text-muted)}.app{flex-direction:row;height:100dvh;display:flex;overflow:hidden}.sidebar{background:var(--color-panel);border-right:1px solid var(--color-border);flex-direction:column;flex-shrink:0;gap:1.25rem;width:230px;padding:1rem;display:flex;overflow-y:auto}.sidebar-brand{letter-spacing:-.01em;padding:.25rem .5rem;font-size:18px;font-weight:600}.nav-group{flex-direction:column;gap:.15rem;display:flex}.nav-group-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-faint);margin:0 .5rem .35rem;font-size:11px}.sidebar-footer{border-top:1px solid var(--color-border);flex-direction:column;align-items:flex-start;gap:.25rem;margin-top:auto;padding-top:.75rem;display:flex}.sidebar-footer .muted{margin:0}.dashboard{flex:1;grid-template-columns:clamp(260px,22vw,340px) minmax(0,1fr) clamp(280px,24vw,380px);gap:1rem;width:100%;max-width:1600px;min-height:0;margin:0 auto;padding:1rem;display:grid}.panel{flex-direction:column;gap:1rem;min-height:0;display:flex}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.card-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px}.card-value{margin-top:.25rem;font-size:15px;font-weight:500}.row{justify-content:space-between;align-items:center;padding:.5rem 0;display:flex}.row+.row{border-top:1px solid var(--border)}.subheading{text-align:center;color:var(--text-muted);margin-bottom:.75rem;font-size:13px;font-weight:500}.muted{color:var(--text-muted);margin:.5rem 0;font-size:13px}.btn-primary{border:1px solid var(--color-accent);width:100%;color:var(--color-accent);border-radius:var(--radius);background:#8b5cf614;padding:.6rem 1rem;font-weight:500;transition:background .15s}.btn-primary:hover{background:#8b5cf633}.btn-secondary{border:1px solid var(--color-border);width:100%;color:var(--color-text);border-radius:var(--radius);background:0 0;margin-top:.5rem;padding:.5rem 1rem}.btn-secondary:hover{background:var(--color-panel-2);border-color:var(--color-border-hover)}.btn-link{color:var(--accent);background:0 0;border:none;padding:.25rem 0;font-size:13px}.btn-link:hover{text-decoration:underline}.num-input{border:1px solid var(--border);background:var(--card-bg);text-align:right;border-radius:8px;width:60px;padding:.4rem .5rem}.msg-input,.notes-input{border:1px solid var(--color-border);background:var(--color-panel-2);width:100%;min-height:80px;color:var(--color-text);resize:vertical;border-radius:8px;padding:.6rem .75rem;font-family:inherit}.search-input{border:1px solid var(--border);background:var(--card-bg);width:100%;color:var(--text);border-radius:8px;margin-bottom:.5rem;padding:.5rem .75rem}.search-input::placeholder{color:var(--color-text-faint)}.control-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.dpad{grid-template-columns:repeat(3,1fr);justify-items:center;gap:.4rem;display:grid}.ctrl-btn{border:1px solid var(--border);background:var(--card-bg);border-radius:8px;justify-content:center;align-items:center;width:44px;height:44px;font-size:16px;display:inline-flex}.ctrl-btn:hover{background:var(--bg)}.gesture-list{flex-direction:column;gap:.4rem;display:flex}.gesture-btn{border:1px solid var(--border);background:var(--card-bg);border-radius:999px;padding:.45rem .75rem;font-size:13px;transition:all .15s}.gesture-btn:hover{background:var(--bg)}.gesture-btn.active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.msg-actions{align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.msg-actions .btn-primary{flex:1}.phone-mirror{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;touch-action:none;flex-direction:column;justify-content:flex-start;align-items:center;gap:.5rem;min-width:0;display:flex}.phone-column{align-items:flex-start;gap:.75rem;min-width:0;min-height:0;display:flex}.phone-column>.phone-mirror{flex:1;min-width:0}.app-jump-rail{background:var(--color-panel-2);border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;flex:none;gap:.5rem;padding:.5rem;display:flex}.app-jump-rail button{border:1px solid var(--color-border);width:44px;height:44px;color:var(--color-text-muted);cursor:pointer;background:0 0;border-radius:10px;justify-content:center;align-items:center;font-size:18px;line-height:1;transition:border-color .15s,color .15s;display:inline-flex}.app-jump-rail button:hover:not(:disabled),.app-jump-rail button:focus-visible{border-color:var(--accent);color:var(--accent)}.app-jump-rail button:active:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.app-jump-rail button:disabled{opacity:.35;cursor:not-allowed}.stream-status{border:1px solid var(--color-border);background:var(--color-panel-2);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border-radius:999px;align-items:center;gap:.4rem;padding:.2rem .6rem;font-size:11px;font-weight:500;display:inline-flex}.stream-status-dot{background:var(--color-text-faint);border-radius:50%;flex-shrink:0;width:8px;height:8px}.stream-status.status-connected{color:var(--color-success);border-color:#22c55e4d}.stream-status.status-connected .stream-status-dot{background:var(--color-success);box-shadow:0 0 6px #34d39980}.stream-status.status-connecting{color:var(--color-warning);border-color:#eab3084d}.stream-status.status-connecting .stream-status-dot{background:var(--color-warning);animation:1.2s ease-in-out infinite stream-status-pulse}.stream-status.status-disconnected{color:var(--color-error);border-color:#ef44444d}.stream-status.status-disconnected .stream-status-dot{background:var(--color-error)}@keyframes stream-status-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.85)}}.phone-frame{aspect-ratio:320/660;width:min(100%, 320px, calc((100dvh - var(--phone-chrome)) * 320 / 660));background:#1a1a1f;border-radius:40px;flex-direction:column;flex-shrink:0;max-width:100%;height:auto;padding:14px;display:flex;position:relative;box-shadow:0 6px 24px #0000001f}.phone-screen{background:var(--color-bg);color:var(--color-text);border-radius:28px;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.phone-home-indicator{background:var(--color-border);border-radius:2px;width:80px;height:4px;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.phone-screen-status{text-align:center;color:var(--color-text-muted);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;width:100%;height:100%;padding:1.25rem;display:flex}.phone-screen-status.status-loading{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:2;background:#0a0a0ad9;position:absolute;inset:0}.phone-screen-status-icon{justify-content:center;align-items:center;width:56px;height:56px;margin-bottom:.25rem;display:inline-flex}.phone-screen-status-glyph{border:2px solid;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:22px;font-weight:600;line-height:1;display:inline-flex}.phone-screen-status-spinner{border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;width:40px;height:40px;animation:.9s linear infinite phone-screen-spin}@keyframes phone-screen-spin{to{transform:rotate(360deg)}}.phone-screen-status-title{color:var(--color-text);margin:0;font-size:15px;font-weight:600}.phone-screen-status-sub{color:var(--color-text-muted);max-width:240px;margin:0;font-size:13px}.phone-screen-status-meta{color:var(--color-text-faint);word-break:break-all;max-width:260px;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.phone-screen-status-action{border:1px solid var(--color-accent);background:var(--accent-bg);color:var(--color-accent);cursor:pointer;border-radius:999px;margin-top:.75rem;padding:.4rem 1rem;font-size:13px;font-weight:500;transition:background .15s,transform 50ms}.phone-screen-status-action:hover{background:#8b5cf629}.phone-screen-status-action:active{transform:scale(.97)}.phone-screen-status.status-loading .phone-screen-status-title{color:var(--color-accent)}.phone-screen-status.status-failed .phone-screen-status-glyph{color:var(--color-error);background:#f8717114}.phone-screen-status.status-failed .phone-screen-status-action{border-color:var(--color-error);color:var(--color-error);background:#f871711a}.phone-screen-status.status-failed .phone-screen-status-action:hover{background:#f871712e}.phone-screen-status.status-offline{color:var(--color-text-muted)}.phone-screen-status.status-offline .phone-screen-status-glyph{color:var(--color-text-muted);background:#9ca3af14}.phone-screen-status.status-offline .phone-screen-status-action{border-color:var(--color-border);background:var(--color-panel-2);color:var(--color-text)}.phone-screen-status.status-offline .phone-screen-status-action:hover{background:var(--color-panel)}.phone-screen-status.status-unauth .phone-screen-status-glyph{color:var(--color-text-faint)}.phone-stream{object-fit:contain;cursor:crosshair;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;touch-action:none;background:#000;width:100%;height:100%;display:block}.stream-container{width:100%;height:100%;display:flex;position:relative}.tap-marker{border:2px solid var(--color-accent);pointer-events:none;background:#a78bfa2e;border-radius:50%;width:12px;height:12px;animation:.4s ease-out forwards tap-ripple-success;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 12px #a78bfa73}.tap-marker.success{border-color:var(--color-accent);background:#a78bfa2e;animation:.4s ease-out forwards tap-ripple-success}.tap-marker.error{border-color:var(--color-error);background:#f8717138;animation:.45s ease-out forwards tap-ripple-error;box-shadow:0 0 14px #f871718c}.tap-marker.swipe-end{border-color:var(--color-accent);background:#a78bfa38}.swipe-trail{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.swipe-trail line{stroke:var(--color-accent);stroke-width:3px;stroke-linecap:round;filter:drop-shadow(0 0 4px #a78bfa8c);fill:none;stroke-dasharray:1200;stroke-dashoffset:1200px;animation:.5s ease-out forwards swipe-trail-draw}@keyframes swipe-trail-draw{0%{stroke-dashoffset:1200px;opacity:1}60%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}@keyframes tap-ripple-success{0%{opacity:1;width:12px;height:12px}to{opacity:0;width:30px;height:30px}}@keyframes tap-ripple-error{0%{opacity:1;width:14px;height:14px}60%{opacity:.9}to{opacity:0;width:44px;height:44px}}.stream-quality-selector{flex-direction:column;gap:.5rem;display:flex}.stream-quality-row{grid-template-columns:80px 1fr 36px;align-items:center;gap:.5rem;font-size:12px;display:grid}.stream-quality-label{color:var(--color-text-muted)}.stream-quality-row input[type=range]{width:100%}.stream-quality-value{color:var(--color-text);text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.stream-quality-apply{width:100%;margin-top:.5rem}.stream-quality-status{min-height:18px;font-size:12px}.stream-quality-applying{color:var(--accent)}.stream-quality-error{color:var(--color-error);background:#f871711a;border-radius:4px;align-items:center;gap:.4rem;max-width:100%;padding:.25rem .5rem;display:inline-flex}.stream-quality-dismiss{color:var(--danger);cursor:pointer;background:0 0;border:none;padding:0 .2rem;font-size:14px;line-height:1}.login-screen{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-card{flex-direction:column;gap:1rem;width:100%;max-width:360px;padding:2rem;display:flex}.login-title{letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600}.login-field{flex-direction:column;gap:.4rem;display:flex}.login-field input{border:1px solid var(--border);background:var(--card-bg);color:var(--text);border-radius:8px;padding:.6rem .75rem}.login-field input::placeholder{color:var(--color-text-faint)}.login-field input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}.login-error{color:var(--color-error);background:#7f1d1d4d;border:1px solid #ef444480;border-radius:8px;padding:.6rem .75rem;font-size:13px}.banner{border-bottom:1px solid var(--color-border);padding:.75rem 1.5rem;font-size:13px}.banner.error{color:var(--color-error);background:#7f1d1d4d;border-bottom-color:#ef444480}.banner.success{color:var(--color-success);background:#14532d4d;border-bottom-color:#22c55e80}.banner.muted{background:var(--color-panel);color:var(--color-text-muted)}.nav-link{color:var(--text-muted);border-radius:8px;padding:.4rem .5rem;font-size:14px;font-weight:500;text-decoration:none;display:block}.nav-link:hover{background:var(--bg);color:var(--text)}.nav-link.active{background:var(--accent-bg);color:var(--accent)}.app-main{flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}@media (hover:hover) and (pointer:fine) and (width>=1571px){:is(.app-main:has(.dashboard),.monitoring-pane:has(.dashboard)){overflow:hidden}.app-main:has(.dashboard) .dashboard{grid-template-rows:minmax(0,1fr)}.app-main:has(.dashboard) .panel{overflow-y:auto}}.page-actions{justify-content:flex-end;align-items:center;gap:.75rem;padding:.75rem 1.5rem 0;display:flex}.kbd-toggle.active{background:var(--accent-bg);color:var(--accent);border-radius:6px;padding:.25rem .5rem}kbd{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.admin-page{flex-direction:column;gap:1rem;width:100%;max-width:1100px;margin:0 auto;padding:1.5rem;display:flex}.page-header{justify-content:space-between;align-items:center;display:flex}.page-header h2{margin:0;font-size:22px;font-weight:600}.admin-form h3,.admin-page .card h3{margin:0 0 1rem;font-size:16px;font-weight:600}.form-grid{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.form-field{flex-direction:column;gap:.4rem;display:flex}.form-field-wide{border:1px solid var(--border);border-radius:8px;grid-column:1/-1;padding:.75rem}.form-field input,.form-field select{border:1px solid var(--border);background:var(--card-bg);color:var(--text);font-family:inherit;font-size:inherit;border-radius:8px;padding:.5rem .75rem}.form-field input::placeholder{color:var(--color-text-faint)}.form-field select option{background:var(--card-bg);color:var(--text)}.form-field input:focus,.form-field select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}.checkbox-row{align-items:center;gap:.5rem;padding:.25rem 0;font-size:13px;display:flex}.form-actions{grid-column:1/-1;justify-content:flex-end;display:flex}.form-actions .btn-primary{width:auto;min-width:160px}.admin-table{border-collapse:collapse;width:100%}.admin-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);padding:.5rem .75rem;font-size:12px;font-weight:500}.admin-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:.6rem .75rem}.admin-table tr:last-child td{border-bottom:none}.role-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:.15rem .5rem;font-size:11px;font-weight:500;display:inline-block}.role-admin{background:var(--accent-bg);color:var(--accent)}.role-user{color:var(--color-text);background:#6b728033;border:1px solid #6b72804d}.btn-link.danger{color:var(--danger)}.btn-link.danger:disabled{color:var(--text-muted);cursor:not-allowed;text-decoration:none}.confirm-row{color:var(--text-muted);align-items:center;gap:.5rem;font-size:13px;display:inline-flex}.small{font-size:12px}.monitoring{flex-direction:column;flex:1;min-height:0;display:flex}.monitoring-header{flex-wrap:wrap;flex:none;align-items:center;gap:.75rem;padding:.75rem 1.5rem 0;display:flex}.monitoring-header h2{margin:0;font-size:22px;font-weight:600}.monitoring-header .muted{margin:0}.monitoring-header-slot{flex:1;justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.running-chip{white-space:nowrap;color:var(--color-text-muted);background:var(--color-panel-2);border:1px solid var(--color-border);border-radius:999px;padding:.2rem .6rem;font-size:12px}.running-chip.active{color:var(--accent);background:var(--accent-bg);border-color:var(--accent);font-weight:600}.view-toggle{border:1px solid var(--color-border);border-radius:8px;display:inline-flex;overflow:hidden}.view-toggle button{color:var(--color-text-muted);background:0 0;border:none;justify-content:center;align-items:center;padding:.35rem .55rem;font-size:14px;display:inline-flex}.view-toggle button+button{border-left:1px solid var(--color-border)}.view-toggle button:hover{background:var(--color-panel);color:var(--color-text)}.view-toggle button.active{background:var(--accent-bg);color:var(--accent)}.monitoring-search{width:min(260px,30vw)}.monitoring-add{white-space:nowrap;width:auto;padding:.4rem .75rem}.monitoring-body{flex:1;min-height:0;display:flex}.device-rail{border-right:1px solid var(--color-border);flex-direction:column;flex-shrink:0;gap:.75rem;width:240px;padding:.75rem .5rem;display:flex;overflow-y:auto}.rail-empty{color:var(--color-text-faint);margin:0;padding:.25rem .5rem;font-size:12px}.rail-group{flex-direction:column;gap:2px;display:flex}.rail-group-head{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-faint);text-align:left;background:0 0;border:none;align-items:center;gap:.35rem;padding:.25rem .5rem;font-size:11px;display:flex}.rail-group-head:hover{color:var(--color-text-muted)}.rail-group-chevron{flex:none;transition:transform .12s ease-out}.rail-group-chevron.open{transform:rotate(90deg)}.rail-group-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.rail-group-count{background:var(--color-panel-2);border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:999px;flex:none;padding:0 .35rem}.rail-row{width:100%;color:var(--color-text);border:1px solid #0000;border-radius:8px;align-items:center;font-size:13px;display:flex}.rail-row-main{min-width:0;font-size:inherit;color:inherit;text-align:left;background:0 0;border:none;border-radius:8px;flex:1;align-items:center;gap:.5rem;padding:.45rem .5rem;display:flex}.rail-row .device-kebab{margin-right:.25rem}.rail-row:hover{background:var(--color-panel)}.rail-row.selected{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.rail-row.muted{opacity:.55}.rail-row .status-dot{flex-shrink:0;margin-right:0}.rail-row-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.rail-row .in-use-badge{flex-shrink:0}.monitoring-pane{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow-y:auto}.monitoring-pane-inset{flex-direction:column;gap:1rem;padding:1rem 1.5rem;display:flex}.empty-state{text-align:center;color:var(--text-muted);padding:2rem 1rem}.device-status{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-radius:999px;padding:.2rem .55rem;font-size:11px;font-weight:500}.device-status.status-connected{color:var(--color-success);background:#34d3991a;border:1px solid #34d3994d}.device-status.status-running{background:var(--accent-bg);color:var(--accent);border:1px solid #8b5cf659}.device-status.status-waiting{color:var(--color-warning);background:#fbbf241a;border:1px solid #fbbf244d}.device-status.status-disconnected{color:#fb923c;background:#fb923c1a;border:1px solid #fb923c59}.device-status.status-offline{color:var(--color-text-muted);background:#6b728033;border:1px solid #6b72804d}.in-use-badge{white-space:nowrap;color:var(--color-text-muted);background:var(--bg);border:1px solid var(--border);border-radius:999px;padding:.15rem .5rem;font-size:11px;display:inline-block}.monitor-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));align-content:start;gap:1rem;padding:1rem 1.5rem;display:grid}.monitor-tile{aspect-ratio:320/660;background:var(--color-panel);border:1px solid var(--color-border);cursor:pointer;text-align:left;border-radius:14px;flex-direction:column;transition:border-color .1s ease-out,box-shadow .1s ease-out;display:flex;position:relative;overflow:hidden}.monitor-tile:hover,.monitor-tile:focus-visible{border-color:var(--accent);box-shadow:0 2px 12px #8b5cf62e}.monitor-tile-top{z-index:2;justify-content:space-between;align-items:flex-start;gap:.4rem;padding:.45rem .5rem;display:flex;position:absolute;top:0;left:0;right:0}.monitor-tile-top .device-status{padding:.15rem .45rem;font-size:10px}.device-kebab{flex-shrink:0;position:relative}.kebab-trigger{width:26px;height:26px;color:var(--color-text-muted);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.kebab-trigger:hover{background:var(--color-panel-2);color:var(--color-text)}.monitor-tile-top .kebab-trigger{width:22px;height:22px;color:var(--color-text);background:#00000073}.kebab-menu{z-index:30;background:var(--color-panel);border:1px solid var(--color-border);min-width:200px;box-shadow:var(--shadow);border-radius:8px;padding:.25rem;position:absolute;top:calc(100% + 4px);right:0}.kebab-item{text-align:left;width:100%;color:var(--color-text);background:0 0;border:none;border-radius:6px;padding:.4rem .6rem;font-size:13px;display:block}.kebab-item:hover:not(:disabled){background:var(--accent-bg);color:var(--accent)}.kebab-item:disabled{color:var(--color-text-faint);cursor:not-allowed}.kebab-confirm{flex-direction:column;gap:.5rem;padding:.4rem .6rem;display:flex}.kebab-confirm-text{color:var(--color-text-muted);font-size:12px;line-height:1.4}.kebab-confirm-actions{align-items:center;gap:.5rem;display:flex}.kebab-confirm-actions .btn-secondary{width:auto;padding:.35rem .7rem}.monitor-tile-body{background:#101014;flex:1;min-height:0;position:relative}.monitor-tile-stream{object-fit:contain;width:100%;height:100%;display:block}.monitor-tile-state{text-align:center;color:var(--color-text-faint);background:var(--color-panel-2);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;padding:.75rem;font-size:12px;display:flex;position:absolute;inset:0}.monitor-tile-state p{margin:0}.monitor-tile-state .monitor-tile-state-title{color:var(--color-text-muted);font-size:13px;font-weight:600}.monitor-tile-state.error .monitor-tile-state-title{color:var(--color-error)}.monitor-tile-state .btn-secondary{width:auto;margin:0;padding:.3rem .9rem;font-size:12px}.monitor-tile-name{border-top:1px solid var(--color-border);background:var(--color-panel);color:var(--color-text);flex:none;align-items:center;gap:.4rem;padding:.4rem .6rem;font-size:12px;display:flex}.monitor-tile-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.monitor-tile-name .in-use-badge{flex:none;font-size:10px}.panel.left code.udid{background:var(--bg);color:var(--text);border-radius:4px;margin-top:.25rem;padding:2px 6px;font-size:11px;display:inline-block}.device-gestures .gesture-actions{grid-template-columns:1fr;gap:.5rem;margin-top:.5rem;display:grid}.system-controls .system-row{grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.5rem;display:grid}.system-controls .system-row .btn-secondary{width:100%;margin:0;font-size:13px}.system-dpad{grid-template-columns:1fr 1fr 1fr;justify-items:center;gap:.4rem;margin-top:.5rem;display:grid}.system-dpad .btn-secondary{width:44px;height:44px;margin:0;padding:0;font-size:18px;transition:transform .1s ease-out,border-color .1s ease-out,background .1s ease-out}.system-dpad .btn-secondary:not(:disabled):active{border-color:var(--color-accent);background:var(--accent-bg);transform:scale(.96)}.device-gestures .gesture-actions .btn-secondary{width:100%;margin:0;font-size:13px}.device-gestures .msg-input{min-height:60px;margin-top:.5rem}.gesture-feedback{border:1px solid #0000;border-radius:8px;margin:.75rem 0 0;padding:.5rem .75rem;font-size:12px;line-height:1.4;animation:.15s ease-out gesture-feedback-in}.gesture-feedback.success{color:var(--color-success);background:#34d3991a;border-color:#34d39980}.gesture-feedback.error{color:var(--color-error);background:#f871711a;border-color:#f8717180}@keyframes gesture-feedback-in{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.live-type-row{align-items:stretch;gap:.5rem;margin-top:.5rem;display:flex}.live-type-input{border:1px solid var(--color-border);background:var(--color-panel-2);min-width:0;color:var(--color-text);border-radius:8px;flex:1;padding:.5rem .75rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.live-type-input:focus{outline:2px solid var(--color-accent);outline-offset:-1px;border-color:#0000}.live-type-input:disabled{background:var(--color-panel);color:var(--color-text-faint);cursor:not-allowed}.live-type-send{white-space:nowrap;flex:none;width:auto;margin:0}.placeholder-page{width:100%;max-width:640px;margin:0 auto;padding:3rem 1.5rem}.placeholder-page h2{margin:0 0 .5rem}.placeholder-page .card-label{margin-top:1rem}.placeholder-list{color:var(--color-text-muted);text-align:left;flex-direction:column;gap:.35rem;margin:.5rem 0 0;padding-left:1.25rem;font-size:13px;display:flex}.getting-started{text-align:left;flex-direction:column;gap:1rem;width:100%;max-width:720px;margin:0 auto;padding:1.5rem;display:flex}.getting-started h2{margin:0}.getting-started .card h3{margin:0 0 .5rem;font-size:16px;font-weight:600}.getting-started .card .muted{margin:0}@media (width<=1570px){.dashboard{grid-template-columns:minmax(260px,320px) 1fr}.panel.right{grid-column:1/-1;min-height:auto}}@media (width<=1230px) and (width>=991px){.device-rail{width:56px;padding:.75rem .25rem}.rail-group-name,.rail-group-count,.rail-row-label,.rail-row .in-use-badge{display:none}.rail-group-head{justify-content:center;padding:.25rem 0}.rail-row-main{justify-content:center;padding:.45rem 0}.rail-row .device-kebab{display:none}}@media (width<=990px){.dashboard{grid-template-columns:1fr}.monitoring-body{flex-direction:column}.device-rail{border-right:none;border-bottom:1px solid var(--color-border);flex-direction:row;flex:none;align-items:center;gap:.4rem;width:100%;padding:.5rem .75rem;overflow:auto visible}.rail-group{display:contents}.rail-row{border-color:var(--color-border);border-radius:999px;flex:none;width:auto}.rail-row-main{padding:.3rem .6rem}.rail-row.selected{border-color:var(--accent)}.rail-row-label{max-width:120px}.rail-row .in-use-badge,.rail-row .device-kebab{display:none}:root{--phone-chrome:225px}.panel.left,.panel.right{grid-column:1/-1;min-height:auto}.phone-mirror{touch-action:pan-y}.phone-frame{margin:0 auto}}@media (width<=760px){.app{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--color-border);flex-direction:row;align-items:center;gap:.75rem;width:100%;padding:.5rem .75rem;overflow:auto visible}.sidebar-brand{white-space:nowrap;padding:0}.nav-group{flex-direction:row;align-items:center;gap:.25rem}.nav-group-label{display:none}.nav-link{white-space:nowrap}.sidebar-footer{border-top:none;flex-direction:row;align-items:center;gap:.5rem;margin-top:0;margin-left:auto;padding-top:0}.sidebar-footer .muted{white-space:nowrap}:root{--phone-chrome:280px}.dashboard{gap:.75rem;padding:.75rem}}.icon{vertical-align:-.15em;flex:none;display:inline-block}.gesture-actions .btn-secondary .icon{margin-right:.4rem}.status-dot{vertical-align:.02em;background:var(--color-text-faint);border-radius:50%;width:.6rem;height:.6rem;margin-right:.35rem;display:inline-block}.status-dot--connected{background:var(--color-success)}.status-dot--running{background:var(--accent)}.status-dot--waiting{background:var(--color-warning)}.status-dot--disconnected{background:#fb923c}.status-dot--offline{background:var(--color-text-faint)}.device-info-head{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.control-divider{border:none;border-top:1px solid var(--border);margin:1rem 0}.search-box{position:relative}.search-box .search-input{width:100%;margin-bottom:0;padding-left:2rem}.search-box-icon{color:var(--color-text-faint);pointer-events:none;position:absolute;top:50%;left:.6rem;transform:translateY(-50%)}.phone-notes{flex-direction:column;flex:auto;display:flex}.phone-notes .notes-input{flex:80px;min-height:2.5rem;margin-top:.5rem}.phone-notes-save{width:100%;margin-top:.5rem}.device-info-card{grid-area:device-info}.controls-card{grid-area:controls}.phone-notes{grid-area:phone-notes}.stream-quality-card{grid-area:stream-quality}.page-actions .btn-link.active{color:var(--accent)}.debug-console{z-index:60;flex-direction:column;width:min(440px,92vw);max-height:50vh;display:flex;position:fixed;bottom:1rem;right:1rem;box-shadow:0 8px 24px #00000073}.debug-console-header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.debug-console-actions{align-items:center;gap:.5rem;display:flex}.debug-console-close{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:18px;line-height:1}.debug-console-close:hover{color:var(--color-text)}.debug-log-list{margin:.5rem 0 0;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;list-style:none;overflow-y:auto}.debug-log-row{border-top:1px solid var(--border);grid-template-columns:92px 56px 1fr;align-items:baseline;gap:.5rem;padding:.25rem 0;display:grid}.debug-log-row:first-child{border-top:none}.debug-log-ts{color:var(--color-text-faint)}.debug-log-src{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em}.debug-log-action{color:var(--color-text);word-break:break-word}.debug-log-row.level-success .debug-log-action{color:var(--color-success)}.debug-log-row.level-error .debug-log-action{color:var(--color-error)}
