.aurora-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none}.aurora-blob{position:absolute;border-radius:50%}.aurora-blob--violet{width:52vmax;height:52vmax;left:-12%;top:-18%;background:radial-gradient(circle at 30% 30%,rgba(124,92,255,.55),transparent 55%);filter:blur(48px);opacity:.85}.aurora-blob--teal{width:48vmax;height:48vmax;right:-8%;bottom:-12%;background:radial-gradient(circle at 40% 40%,rgba(49,208,170,.45),transparent 58%);filter:blur(52px);opacity:.75}.aurora-blob--mesh{left:38%;top:42%;width:36vmax;height:36vmax;border-radius:40% 60% 70% 30%/40% 50% 60%;background:linear-gradient(135deg,#7c5cff33,#31d0aa26);filter:blur(36px);opacity:.5}.aurora-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 80% 60% at 50% -10%,rgba(255,255,255,.06),transparent),linear-gradient(180deg,#07080f33,#07080ff0)}.dashboard-loading{min-height:100vh;display:grid;place-items:center}.dashboard-loading-text{position:relative;z-index:1;color:var(--muted)}.dashboard-root{min-height:100vh;padding:1.25rem}.dashboard-grid{position:relative;z-index:1;max-width:1280px;margin:0 auto;display:grid;grid-template-columns:1.1fr .9fr;gap:1rem;align-items:stretch}@media (max-width: 960px){.dashboard-grid{grid-template-columns:1fr}}.dashboard-header{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.dashboard-kicker{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.dashboard-title{margin:.25rem 0 0;font-size:1.35rem}.dashboard-header-actions{display:flex;gap:.5rem;flex-wrap:wrap}.dashboard-btn-danger{border:1px solid rgba(244,90,90,.45);background:#f45a5a14;color:#f8a8a8;border-radius:12px;padding:.55rem .85rem;cursor:pointer}.dashboard-btn-danger:disabled{cursor:wait}.dashboard-btn-ghost{border:1px solid var(--stroke);background:transparent;color:var(--muted);border-radius:12px;padding:.55rem .85rem;cursor:pointer}.dashboard-panel{border-radius:var(--radius);border:1px solid var(--stroke);background:var(--bg-card);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);padding:1rem;min-height:200px;display:flex;flex-direction:column;gap:1rem}.dashboard-msw-row{margin-top:.65rem;display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.dashboard-btn-msw-srt{border:1px solid var(--stroke);background:#7c5cff33;color:var(--text);border-radius:12px;padding:.5rem .75rem;cursor:pointer;font-size:.85rem}.dashboard-btn-msw-srt:disabled{cursor:wait}.dashboard-btn-msw-udp{border:1px solid var(--stroke);background:#31d0aa26;color:var(--text);border-radius:12px;padding:.5rem .75rem;cursor:pointer;font-size:.85rem}.dashboard-btn-msw-udp:disabled{cursor:wait}.dashboard-msw-error{color:var(--danger);font-size:.85rem;margin:.5rem 0 0}.dashboard-msw-status{margin:.5rem 0 0;font-size:.78rem;color:var(--muted)}.dashboard-video-wrap{margin-top:.75rem;border-radius:14px;overflow:hidden;border:1px solid var(--stroke);background:#000;box-shadow:inset 0 0 0 1px #ffffff0a}.dashboard-video{width:100%;height:100%;display:block;min-height:220px}.dashboard-srt-block{margin-top:.85rem}.dashboard-srt-label{font-size:.85rem}.dashboard-srt-help{margin:.35rem 0 0;font-size:.78rem;color:var(--muted)}.dashboard-mono{font-family:var(--mono);font-size:.78rem;word-break:break-all}.dashboard-srt-url-row{margin-top:.45rem;padding:.5rem .65rem;border-radius:10px;border:1px solid var(--stroke);background:#00000040;font-family:var(--mono);font-size:.76rem;display:flex;justify-content:space-between;gap:.5rem;align-items:center}.dashboard-srt-url-row>span:first-child{flex:1;word-break:break-all}.dashboard-btn-copy{flex-shrink:0;border:1px solid var(--stroke);background:#7c5cff26;color:var(--text);border-radius:8px;padding:.25rem .5rem;font-size:.72rem;cursor:pointer}.dashboard-events-panel{border-radius:var(--radius);border:1px solid var(--stroke);background:#07080f8c;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);padding:1rem;min-height:320px;display:flex;flex-direction:column}.dashboard-events-head{display:flex;justify-content:space-between;align-items:center}.dashboard-events-ws{font-size:.8rem;color:var(--muted)}.dashboard-events-body{margin-top:.75rem;flex:1;border-radius:12px;border:1px solid var(--stroke);background:#00000059;overflow:auto;padding:.65rem;font-family:var(--mono);font-size:.78rem;line-height:1.45;max-height:min(62vh,560px)}.dashboard-events-empty{color:var(--muted)}.dashboard-log-line{margin-bottom:.45rem;color:#f4f5fbe0}.dashboard-log-line--error{color:var(--danger)}.dashboard-log-ts{color:#f4f5fb59;margin-right:.5rem}.glass-panel{position:relative;z-index:1;width:min(440px,92vw);padding:2rem 2rem 1.75rem;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--stroke);box-shadow:0 24px 80px #00000073,inset 0 1px #ffffff0f;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.login-shell{min-height:100vh;display:grid;place-items:center;padding:2rem 1rem}.login-intro{margin-bottom:1.35rem}.login-intro-text{margin:.5rem 0 0;color:var(--muted);line-height:1.5;text-align:center}.login-label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.35rem}.login-label--spaced{margin:1rem 0 .35rem}.login-input{width:100%;padding:.85rem 1rem;border-radius:12px;border:1px solid var(--stroke);background:#ffffff0a;color:var(--text);outline:none;transition:border .15s ease,box-shadow .15s ease;box-shadow:inset 0 1px #ffffff0a}.login-error{color:var(--danger);font-size:.9rem;margin:.75rem 0 0}.login-submit{margin-top:1.35rem;width:100%;border:none;border-radius:14px;padding:.95rem 1rem;font-weight:600;cursor:pointer;color:#0b0d14;background:linear-gradient(135deg,#c6b6ff,#31d0aa);box-shadow:0 12px 40px #7c5cff40}.login-submit:disabled{cursor:wait;background:linear-gradient(135deg,#7c5cff80,#31d0aa73)}.ready-center{min-height:100vh;display:grid;place-items:center}.ready-center--padded{padding:2rem 1rem}.ready-loading-text{position:relative;z-index:1;color:var(--muted)}.ready-error-card{position:relative;z-index:1;width:min(480px,94vw);padding:1.75rem;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--stroke)}.ready-error-title{margin:0 0 .5rem;font-size:1.15rem}.ready-error-body{color:var(--muted);margin:0 0 1rem;line-height:1.5}.ready-error-reload{border:1px solid var(--stroke);background:transparent;color:var(--text);border-radius:12px;padding:.55rem 1rem;cursor:pointer;font:inherit}.ready-main-card{position:relative;z-index:1;width:min(560px,94vw);padding:2rem;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--stroke);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 24px 80px #00000073}.ready-kicker{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:.5rem}.ready-modules{margin-top:1.25rem}.ready-fetching{color:var(--muted);font-size:.88rem}.ready-row{display:grid;grid-template-columns:1fr auto;gap:.75rem;align-items:start;padding:.55rem 0;border-bottom:1px solid var(--stroke);font-size:.92rem}.ready-row-dot{color:var(--muted)}.ready-row-dot--ok{color:#5ee4b8}.ready-row-title{color:var(--text)}.ready-row-detail{font-size:.78rem;color:var(--muted);margin-top:.25rem;word-break:break-word}.ready-row-status{font-size:.75rem}.ready-row-status--ok{color:#5ee4b8}.ready-row-status--wait{color:var(--danger)}.ready-actions{margin-top:1.25rem}.ready-reset-btn{width:100%;border:1px solid rgba(244,90,90,.45);background:#f45a5a14;color:#f8a8a8;border-radius:12px;padding:.65rem .85rem;cursor:pointer;font:inherit;font-size:.9rem}.ready-reset-btn:disabled{cursor:wait}.setup-page{min-height:100vh;padding:2rem 1rem}.setup-inner{max-width:880px;margin:0 auto}.setup-header{display:flex;align-items:flex-start;justify-content:right;gap:1rem;margin-bottom:1.25rem;position:relative;z-index:1}.setup-btn-ghost{border:1px solid var(--stroke);background:transparent;color:var(--muted);border-radius:12px;padding:.55rem .85rem;cursor:pointer}.setup-shell{position:relative;z-index:1;padding:2rem;border-radius:var(--radius);background:var(--bg-card);border:1px solid var(--stroke);box-shadow:0 24px 80px #00000073,inset 0 1px #ffffff0f;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.setup-fieldset{border:none;margin:0 0 1.25rem;padding:0}.setup-legend{display:block;font-size:.82rem;color:var(--muted);margin-bottom:.5rem}.setup-help{font-size:.8rem;color:var(--muted);line-height:1.5;margin:0 0 .65rem}.setup-code-inline{font-family:inherit;opacity:.95}.setup-radiogroup{display:flex;flex-direction:column;gap:.65rem;margin-bottom:.9rem}.setup-radio-label{display:flex;gap:.5rem;align-items:flex-start;cursor:pointer;font-size:.88rem;color:var(--text)}.setup-radio-label input{margin-top:.2rem}.setup-mono-box{display:flex;align-items:center;gap:.5rem;padding:.55rem .65rem;border-radius:10px;border:1px solid var(--stroke);background:#0003;font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:.78rem;color:var(--text);word-break:break-all}.setup-mono-box>span:first-child{flex:1}.setup-copy-btn{flex-shrink:0;border:1px solid var(--stroke);background:#ffffff0f;color:var(--muted);border-radius:8px;padding:.35rem .55rem;font-size:.72rem;cursor:pointer}.setup-field{width:100%;padding:.75rem .9rem;border-radius:12px;border:1px solid var(--stroke);background:#ffffff0a;color:var(--text)}.setup-field--top{margin-top:.25rem}.setup-code-mono{font-family:var(--mono, monospace);font-size:.82em}.setup-error{color:var(--danger);margin:0 0 1rem}.setup-submit{width:100%;border:none;border-radius:14px;padding:.95rem 1rem;font-weight:600;cursor:pointer;color:#0b0d14;background:linear-gradient(135deg,#c6b6ff,#31d0aa);box-shadow:0 12px 40px #7c5cff40}.setup-submit:disabled{cursor:wait;background:linear-gradient(135deg,#7c5cff80,#31d0aa73)}:root{--bg-deep: #07080f;--bg-card: rgba(18, 21, 36, .72);--stroke: rgba(255, 255, 255, .09);--text: #f4f5fb;--muted: rgba(244, 245, 251, .58);--accent: #7c5cff;--accent-2: #31d0aa;--danger: #ff5c7a;--radius: 18px;--font: "DM Sans", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font);color:var(--text);background:var(--bg-deep);overflow-x:hidden;-webkit-font-smoothing:antialiased}#root{min-height:100%}button,input,select,textarea{font:inherit}a{color:inherit}
