.app_shell{--bg-deep: #0f172a;--bg-page: #f1f5f9;--bg-card: #ffffff;--text: #0f172a;--text-muted: #64748b;--accent: #0d9488;--accent-hover: #0f766e;--accent-soft: rgba(13, 148, 136, .12);--danger: #dc2626;--danger-hover: #b91c1c;--radius: 14px;--radius-sm: 10px;--shadow: 0 4px 24px rgba(15, 23, 42, .08);--shadow-lg: 0 20px 50px rgba(15, 23, 42, .12);--stage-offset: 130px;--stage-max-h: 900px;--font: "DM Sans", "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;min-height:100vh;width:100%;overflow-x:hidden;font-family:var(--font);background:linear-gradient(165deg,#e0f2fe,#f1f5f9 45%,#e2e8f0);color:var(--text)}.app_shell--fs{--stage-max-h: 1600px;width:100%;height:100%;overflow-y:auto;background:linear-gradient(165deg,#e0f2fe,#f1f5f9 45%,#e2e8f0)}.app_shell--fs .app_main{padding:clamp(.5rem,1.2vw,1rem)}.app_header{background:#16181d;color:#e5e7eb;border-bottom:1px solid rgba(255,255,255,.07);box-shadow:0 1px 12px #0000004d;padding:.4rem clamp(.6rem,1.4vw,1rem)}.header_bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.45rem 1rem;min-height:2.5rem}.header_meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .8rem;min-width:0}.hdr_brand{display:block;width:28px;height:28px;flex-shrink:0}.device_chip{display:inline-flex;align-items:center;gap:.4rem;min-width:0}.device_chip_icon{display:block;width:16px;height:16px;flex-shrink:0;color:#34d399}.device_name{font-size:.82rem;font-weight:600;letter-spacing:-.01em;color:#f8fafc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:14rem}.status_chip{display:inline-flex;align-items:center;padding:.18rem .45rem;border-radius:5px;font-size:.6rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:18rem}.status_chip--live{background:#22c55e29;color:#4ade80}.status_chip--warn{background:#fb923c29;color:#fdba74}.status_chip--idle{background:#94a3b829;color:#cbd5e1}.meta_divider{width:1px;height:16px;background:#ffffff1f;flex-shrink:0}.meta_item{display:inline-flex;align-items:center;gap:.35rem;font-size:.75rem;color:#9aa3af;white-space:nowrap}.meta_item--warn{color:#fdba74}.meta_icon{display:block;width:15px;height:15px;flex-shrink:0;opacity:.85}.meta_value{font-weight:600;color:#e5e7eb;font-variant-numeric:tabular-nums}.meta_item--warn .meta_value{color:inherit}.meta_label{font-weight:500;color:#8b93a1}.meta_dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.meta_dot--down{background:#22c55e;box-shadow:0 0 0 3px #22c55e29}.meta_dot--up{background:#38bdf8;box-shadow:0 0 0 3px #38bdf829}.meta_dot--warn{background:#fb923c;animation:dot_blink 1.4s ease-in-out infinite}.meta_item--locked{color:#fca5a5}.meta_item--locked .meta_value,.meta_item--locked .meta_label{color:inherit}.meta_dot--locked{background:#ef4444;box-shadow:0 0 0 3px #ef44442e;animation:dot_blink 1.4s ease-in-out infinite}@keyframes dot_blink{50%{opacity:.3}}.header_actions{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.hdr_btn{display:inline-flex;align-items:center;gap:.4rem;height:32px;padding:0 .7rem;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:#ffffff0b;color:#d1d5db;font-family:var(--font);font-size:.75rem;font-weight:600;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s,border-color .15s,color .15s}.hdr_btn:hover{background:#ffffff1a;border-color:#fff3;color:#fff}.hdr_btn:focus-visible{outline:2px solid rgba(56,189,248,.65);outline-offset:1px}.hdr_btn_icon{display:block;width:16px;height:16px;flex-shrink:0;opacity:.9}.hdr_btn--active{background:#38bdf829;border-color:#38bdf866;color:#bae6fd}.hdr_btn--request{background:#3b82f629;border-color:#3b82f673;color:#bfdbfe}.hdr_btn--request:hover{background:#3b82f64d;color:#fff}.hdr_btn--danger{background:#e5484d;border-color:#e5484d;color:#fff}.hdr_btn--danger:hover{background:#f05a5f;border-color:#f05a5f}.hdr_btn--danger .hdr_btn_icon{width:13px;height:13px;opacity:1}.fs_toggle{position:fixed;right:14px;z-index:30;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:0;background:none;color:var(--text-muted);cursor:pointer;transition:color .15s}.fs_toggle:hover{color:var(--text)}.fs_toggle:focus-visible{outline:2px solid rgba(56,189,248,.65);outline-offset:2px;border-radius:6px}.fs_toggle_icon{display:block;width:17px;height:17px}@media(max-width:900px){.meta_label{display:none}}@media(max-width:700px){.hdr_btn:not(.hdr_btn--danger) span{display:none}.hdr_btn:not(.hdr_btn--danger){padding:0 .55rem}}.brand_row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;flex-shrink:0}.brand_mark{display:flex;align-items:center;gap:.5rem}.brand_logo{width:40px;height:40px;border-radius:10px;flex-shrink:0;display:block;box-shadow:0 0 0 1px #ffffff1f,0 4px 14px #0d948859}.brand_text{display:flex;flex-direction:column;gap:.15rem;line-height:1.2}.brand_name{font-size:1.125rem;font-weight:700;letter-spacing:-.03em;text-shadow:0 1px 2px rgba(0,0,0,.2)}.brand_tagline{font-size:.7rem;color:#94a3b8f2;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.app_header .logo{width:min(100px,20vw);height:auto;opacity:.88;filter:brightness(0) invert(1)}.join_card{background:linear-gradient(165deg,#ffffff1c,#ffffff0d);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:.55rem .85rem .6rem;flex:1;min-width:min(100%,300px);max-width:540px;box-shadow:inset 0 1px #ffffff1a,0 4px 20px #0000001f}.field_label{display:block;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#cbd5e1e6;margin-bottom:.35rem;line-height:1}.join_row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.join_row .btn{min-height:42px;padding:0 1.1rem;font-size:.875rem;font-weight:600;border-radius:11px}.form_data{flex:1;min-width:120px;height:42px;padding:0 .85rem;border:none;border-radius:var(--radius-sm);background:#fffffff2;color:var(--text);font-size:.875rem;font-family:var(--font);box-shadow:inset 0 1px 2px #0000000f;transition:box-shadow .2s,background .2s}.form_data::placeholder{color:#94a3b8}.form_data:focus{outline:none;box-shadow:0 0 0 3px var(--accent-soft),inset 0 1px 2px #0000000a;background:#fff}.form_data:disabled{opacity:.75;cursor:not-allowed}.btn{border:none;border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font);font-size:.95rem;font-weight:600;padding:0 1.5rem;min-height:48px;transition:transform .15s,box-shadow .2s,background .2s;-webkit-user-select:none;user-select:none;touch-action:manipulation;white-space:nowrap}.btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px #0f172a26}.btn:active{transform:translateY(0)}.btn_primary{background:linear-gradient(180deg,#14b8a6,var(--accent));color:#fff;box-shadow:0 4px 14px #0d948866}.btn_primary:hover{background:linear-gradient(180deg,#2dd4bf,var(--accent-hover))}.btn_danger{background:linear-gradient(180deg,#ef4444,var(--danger));color:#fff;box-shadow:0 4px 14px #dc262659}.btn_danger:hover{background:linear-gradient(180deg,#f87171,var(--danger-hover))}.btn_ghost{background:#ffffff1a;color:#f1f5f9;border:1px solid rgba(255,255,255,.18);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:none}.btn_ghost:hover{background:#ffffff2e;border-color:#2dd4bf80;color:#fff}.btn_sm{min-height:40px;padding:0 1.1rem;font-size:.85rem}.btn_icon{display:inline-flex;align-items:center;gap:.35rem;padding-inline:.9rem}.btn_icon:disabled{opacity:.55;cursor:default;box-shadow:none}.shots_panel{margin-top:1.5rem;padding:1rem 1.1rem 1.1rem;border-radius:var(--radius);background:linear-gradient(180deg,#fffc,#f8fafca6);border:1px solid rgba(148,163,184,.22);box-shadow:0 10px 30px #0f172a0f}.shots_header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.75rem}.shots_title{font-size:.95rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#0f172a}.shots_hint{font-size:.75rem;color:#64748b}.shots_grid{display:flex;gap:.8rem;overflow-x:auto;overflow-y:hidden;padding:.25rem .15rem .6rem;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.shot_thumb{position:relative;width:170px;height:96px;border-radius:12px;overflow:hidden;padding:0;border:1px solid rgba(148,163,184,.28);cursor:pointer;background:#020617;box-shadow:0 10px 24px #0206172e,inset 0 1px #ffffff14;scroll-snap-align:start;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.shot_thumb img{display:block;width:100%;height:100%;object-fit:cover}.shot_thumb:hover{transform:translateY(-2px);border-color:#2dd4bf8c;box-shadow:0 14px 30px #02061738,0 0 0 4px #2dd4bf24}.shot_badge{position:absolute;left:.45rem;bottom:.4rem;padding:.15rem .35rem;border-radius:999px;font-size:.65rem;font-weight:600;color:#e5f9ff;background:#0f172ab3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.shots_grid::-webkit-scrollbar{height:10px}.shots_grid::-webkit-scrollbar-thumb{background:#94a3b873;border-radius:999px}.shots_grid::-webkit-scrollbar-track{background:#94a3b826;border-radius:999px}.shots_lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0f172ad9;display:flex;align-items:center;justify-content:center;padding:1.5rem}.shots_lightbox_backdrop{position:absolute;top:0;right:0;bottom:0;left:0}.shots_lightbox_inner{position:relative;max-width:96vw;max-height:92vh;border-radius:14px;overflow:hidden;box-shadow:0 30px 80px #0009;background:#020617}.shots_lightbox_inner img{display:block;max-width:100%;max-height:92vh}.shots_lightbox_meta{position:absolute;left:.75rem;bottom:.75rem;padding:.3rem .55rem;border-radius:999px;font-size:.72rem;font-weight:500;color:#e2f3ff;background:#0f172ab3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.shots_lightbox_close{position:absolute;top:.65rem;right:.75rem;border:none;border-radius:999px;padding:.25rem .55rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;background:#0f172ad9;color:#e5e7eb}.logs_lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;background:#0f172ad9;display:flex;align-items:center;justify-content:center;padding:1.5rem}.logs_lightbox_backdrop{position:absolute;top:0;right:0;bottom:0;left:0;border:none;background:transparent;cursor:pointer}.logs_panel{position:relative;width:min(560px,96vw);max-height:82vh;display:flex;flex-direction:column;background:var(--bg-card, #fff);color:var(--text, #0f172a);border-radius:var(--radius, 14px);box-shadow:var(--shadow-lg, 0 20px 50px rgba(15, 23, 42, .12));overflow:hidden}.logs_header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid rgba(15,23,42,.08)}.logs_title{margin:0;font-size:1rem;font-weight:600}.logs_close{border:none;border-radius:999px;padding:.3rem .7rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;background:var(--accent-soft, rgba(13, 148, 136, .12));color:var(--accent, #0d9488)}.logs_body{overflow-y:auto;padding:.5rem 1rem 1rem}.logs_empty{padding:2rem 0;text-align:center;color:var(--text-muted, #64748b);font-size:.9rem}.logs_list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.log_item{border:1px solid rgba(15,23,42,.08);border-radius:var(--radius-sm, 10px);padding:.7rem .85rem;background:#0f172a05}.log_item_head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.4rem}.log_item_id{display:flex;align-items:center;gap:.4rem;min-width:0}.log_label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted, #64748b)}.log_value{font-size:.82rem;font-weight:600;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.log_status{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:.1rem .4rem;border-radius:999px;background:#64748b26;color:var(--text-muted, #64748b)}.log_status--connected,.log_status--active{background:#0d948826;color:var(--accent, #0d9488)}.log_status--ended,.log_status--left,.log_status--completed,.log_status--cancelled,.log_status--canceled,.log_status--expired{background:#dc26261f;color:var(--danger, #dc2626)}.log_relative{font-size:.72rem;color:var(--text-muted, #64748b);white-space:nowrap}.log_times{display:flex;flex-direction:column;gap:.2rem}.log_row,.log_event{display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-size:.78rem}.log_event{padding-left:.6rem;border-left:2px solid rgba(15,23,42,.1);color:var(--text-muted, #64748b)}.log_event_time,.log_row .log_value{font-variant-numeric:tabular-nums;color:var(--text-muted, #64748b)}.btn_ghost--active{background:var(--accent-soft, rgba(13, 148, 136, .12));color:var(--accent, #0d9488)}.app_main{padding:clamp(1rem,3vw,2rem);max-width:1400px;margin:0 auto}.header_end{margin-left:auto}.state_panel{display:flex;justify-content:center;padding:4rem 0}.state_card{display:flex;flex-direction:column;align-items:center;gap:1rem;background:var(--bg-card);border-radius:var(--radius);padding:2.5rem 2.75rem;max-width:460px;text-align:center;box-shadow:var(--shadow);border:1px solid rgba(148,163,184,.15)}.state_card--error{border-color:#dc262640}.state_title{font-size:1.35rem;font-weight:700;margin:0;color:var(--text);letter-spacing:-.02em}.state_copy{margin:0;color:var(--text-muted);line-height:1.6;font-size:.95rem}.close_count{font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}.state_spinner{width:44px;height:44px;border:4px solid rgba(13,148,136,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;background:var(--bg-card);padding:.875rem 1.25rem;border-radius:var(--radius);margin-bottom:1rem;box-shadow:var(--shadow);border:1px solid rgba(148,163,184,.12)}.toolbar_left,.toolbar_right{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem}.session_hint{margin:0;font-size:.8rem;color:var(--text-muted);max-width:280px;line-height:1.45}.viewer_shell{background:var(--bg-card);border-radius:var(--radius);padding:clamp(.5rem,1.5vw,.85rem);box-shadow:var(--shadow-lg);border:1px solid rgba(148,163,184,.12);width:fit-content;max-width:100%;margin:0 auto}.remote_viewer{display:flex;justify-content:center;align-items:flex-start;position:relative;border-radius:var(--radius-sm);overflow:hidden;background:linear-gradient(180deg,#0f172a,#1e293b)}.remote_stage{position:relative;flex-shrink:0;border-radius:var(--radius-sm);overflow:hidden;background:#0f172a}.remote_stage #remote-track{display:block;width:100%;height:100%;vertical-align:top;object-fit:cover;background:#0f172a}.remote-placeholder--fill{width:100%;height:100%;min-height:100%;box-sizing:border-box}.remote-placeholder{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.75rem;background:linear-gradient(160deg,#1e293b,#0f172a);color:#e2e8f0;font-size:.95rem;font-weight:500}.remote-placeholder_hint{color:#e2e8f0a6;font-size:.85rem;font-weight:400;font-variant-numeric:tabular-nums}.remote-placeholder:before{content:"";width:40px;height:40px;border:3px solid rgba(45,212,191,.3);border-top-color:#2dd4bf;border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.remote-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:2;outline:none;box-sizing:border-box;cursor:default;touch-action:none}.click_effect{position:absolute;width:40px;height:40px;margin-left:-20px;margin-top:-20px;border-radius:999px;border:2px solid rgba(250,204,21,.95);box-shadow:0 0 0 2px #0f172a99;pointer-events:none;animation:click-ripple .3s ease-out forwards}@keyframes click-ripple{0%{opacity:1;transform:scale(.6)}to{opacity:0;transform:scale(1.4)}}.remote-overlay:focus{box-shadow:inset 0 0 0 3px #2dd4bf80}.lock_overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:1rem;box-sizing:border-box;pointer-events:none;background:radial-gradient(circle at 50% 45%,#0f172a8c,#0f172adb);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:lock_overlay_in .18s ease-out}.lock_overlay--screen-off{background:#060b19f0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}@keyframes lock_overlay_in{0%{opacity:0}}.lock_overlay_card{max-width:22rem;text-align:center;color:#e2e8f0}.lock_overlay_badge{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;margin-bottom:.85rem;border-radius:50%;color:#fca5a5;background:#ef44441f;box-shadow:0 0 0 1px #ef444459}.lock_overlay_icon{width:26px;height:26px;display:block}.lock_overlay_title{margin:0;font-size:1.05rem;font-weight:600;color:#f8fafc}.remote_viewer:fullscreen,.remote_viewer:-webkit-full-screen{border-radius:0;min-height:100vh;overflow:hidden;align-items:center;justify-content:center}.remote_viewer:fullscreen .remote_stage,.remote_viewer:-webkit-full-screen .remote_stage{width:auto!important;height:100vh!important;max-width:100vw;border-radius:0}.remote_viewer:fullscreen #remote-track,.remote_viewer:-webkit-full-screen #remote-track{max-height:none}
