.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);--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_header{position:relative;overflow:hidden;background:linear-gradient(160deg,#0a0f1a,#152238 38%,#1e3a4a 62%,#0d4f4a 82%,#0c4a42);color:#f8fafc;padding:.7rem clamp(1rem,3vw,1.75rem);min-height:4rem;box-shadow:inset 0 -1px #ffffff0f,0 1px #2dd4bf24,0 8px 32px #080f1e59}.app_header:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 120% 80% at 15% -20%,rgba(45,212,191,.12) 0%,transparent 55%);pointer-events:none}.header_shine{position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,transparent 0%,rgba(45,212,191,.35) 22%,rgba(125,211,252,.5) 50%,rgba(45,212,191,.35) 78%,transparent 100%);pointer-events:none;z-index:1}.header_speed{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.2rem 0;position:relative;z-index:1}.speed_pill{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .75rem;border-radius:999px;font-size:.78rem;font-weight:600;letter-spacing:.02em;border:1px solid rgba(255,255,255,.12);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 2px 12px #00000026}.speed_down{background:linear-gradient(135deg,#22c55e38,#10b9811f);color:#a7f3d0}.speed_up{background:linear-gradient(135deg,#38bdf833,#0ea5e91a);color:#bae6fd}.speed_arrow{font-size:.75rem;opacity:.95;line-height:1}.speed_label{font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;opacity:.8}.speed_value{font-variant-numeric:tabular-nums;min-width:3.5rem;font-weight:700}.header_compact{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1.25rem;max-width:1440px;margin:0 auto;position:relative;z-index:1;min-height:3rem}.header_status{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem .85rem;min-width:0}.header_actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .6rem}.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}.status_dot{width:10px;height:10px;border-radius:50%;background:#cbd5e1;flex-shrink:0}.status_dot.live{background:#22c55e;box-shadow:0 0 0 4px #22c55e40;animation:pulse 2s ease-in-out infinite}@keyframes pulse{50%{box-shadow:0 0 0 6px #22c55e26}}.session_status{margin:0;font-size:.95rem;font-weight:600;color:#f1f5f9;white-space:nowrap}.session_hint{margin:0;font-size:.8rem;color:var(--text-muted);max-width:280px;line-height:1.45}.session_timelimit{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .85rem;background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:999px;font-size:.8rem;font-weight:600;color:#92400e;border:1px solid rgba(245,158,11,.25)}.timelimit_label{opacity:.85;font-weight:500}.timer_count{min-width:1.5rem;text-align:center;color:#b45309;font-variant-numeric:tabular-nums}.reconnect_pill{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;background:#fb923c29;border:1px solid rgba(251,146,60,.45);border-radius:999px;font-size:.8rem;font-weight:700;color:#fdba74;font-variant-numeric:tabular-nums}.reconnect_dot{width:7px;height:7px;border-radius:50%;background:#fb923c;animation:pulse 1.4s ease-in-out infinite}.session_action{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.icon_bar{display:flex;align-items:center;gap:.15rem;padding:.2rem;background:#ffffff12;border-radius:999px;border:1px solid rgba(255,255,255,.12);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.session_action_icon{width:34px;height:34px;padding:7px;cursor:pointer;border-radius:999px;color:#e2e8f0d9;transition:background .15s,color .15s}.session_action_icon:hover{background:#ffffff29;color:#fff}.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: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}.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}
