:root{--primary:#2155d0;--secondary:#4521d0;--accent:#21acd0;--bg:#0b0d17;--surface:#131729;--surface-2:#1a2040;--border:#2155d038;--border-hover:#21acd080;--text:#bdc5d9;--text-h:#eef1f8;--text-muted:#6e7a98;--radius:8px;--mono:ui-monospace, Consolas, "Courier New", monospace;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font:15px/1.5 system-ui,Segoe UI,Roboto,sans-serif}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}#root{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3{color:var(--text-h);margin:0;font-weight:600}h2{font-size:1.35rem}h3{font-size:1.05rem}p{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{font-family:var(--mono)}.navbar{background:linear-gradient(100deg, var(--secondary) 0%, var(--primary) 100%);z-index:100;border-bottom:1px solid #ffffff12;position:sticky;top:0;box-shadow:0 2px 24px #2155d059}.navbar-inner{justify-content:space-between;align-items:center;max-width:1200px;height:62px;margin:0 auto;padding:0 24px;display:flex}.navbar-left{align-items:center;gap:32px;display:flex}.navbar-brand-group{align-items:center;display:flex;position:relative}.navbar-brand{color:#fff;letter-spacing:.12em;align-items:center;gap:8px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.navbar-brand:hover{color:var(--accent);text-decoration:none}.navbar-version-text{color:#ffb703;letter-spacing:.04em;text-shadow:0 0 8px #ffb70347;font-size:10px;font-weight:700;line-height:1;text-decoration:none;position:absolute;top:calc(100% + 3px);right:0}.navbar-version-text:before{color:#ff6b6b;letter-spacing:.08em;margin-right:6px;font-size:10px}.navbar-version-text:hover,.navbar-version-text.active{color:#ffd166;text-decoration:none}.navbar-links{gap:2px;display:flex}.nav-link{color:#ffffffb3;border-radius:6px;padding:6px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,color .15s}.nav-link:hover{color:#fff;background:#ffffff1f;text-decoration:none}.nav-link.active{color:#fff;background:#ffffff2e}button.nav-link{cursor:pointer;background:0 0;border:none;font-family:inherit}.nav-link-danger:hover{color:#f87171;background:#f8717126}.navbar-right{align-items:center;gap:12px;display:flex}.navbar-user{color:#ffffff8c;font-size:13px}.layout-main{flex-direction:column;flex:1;display:flex}.page{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:32px 24px}.page-header{align-items:center;gap:16px;margin-bottom:28px;display:flex}.btn{border-radius:var(--radius);cursor:pointer;border:1px solid #0000;align-items:center;gap:6px;padding:7px 16px;font-family:inherit;font-size:14px;font-weight:500;line-height:1.4;text-decoration:none;transition:background .15s,border-color .15s,color .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-sm{padding:4px 10px;font-size:13px}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff;text-decoration:none}.btn-secondary{background:var(--surface-2);color:var(--text);border-color:var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--border-hover);color:var(--text-h);text-decoration:none}.btn-ghost{color:#ffffffb3;background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){color:#fff;background:#ffffff1a;text-decoration:none}input[type=text],input[type=email],input[type=password],input[type=datetime-local],select{background:var(--surface-2);border:1px solid var(--border);color:var(--text-h);border-radius:6px;outline:none;padding:7px 10px;font-family:inherit;font-size:14px;transition:border-color .15s}input[type=text]:focus,input[type=email]:focus,input[type=password]:focus,input[type=datetime-local]:focus,select:focus{border-color:var(--accent)}input::placeholder{color:var(--text-muted)}label{color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:500}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border);padding:8px 12px;font-size:11px;font-weight:600}.data-table td{vertical-align:middle;border-bottom:1px solid #2155d01a;padding:10px 12px}.data-table tbody tr:hover td{background:var(--surface-2)}.form-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.form-field{flex-direction:column;gap:5px;display:flex}.page-title{color:var(--text-h);margin:0 0 24px;font-size:22px;font-weight:600}.card-title{color:var(--text-h);margin:0 0 16px;font-size:15px;font-weight:600}.page>.card+.card{margin-top:16px}.info-list{grid-template-columns:max-content 1fr;gap:8px 24px;margin:0;font-size:14px;display:grid}.info-list dt{color:var(--text-muted);white-space:nowrap;font-weight:500}.info-list dd{color:var(--text-h);margin:0}.form-group{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.form-group label{display:block}.form-group input,.form-group select{box-sizing:border-box;width:100%;max-width:360px}.password-wrapper{width:100%;max-width:360px;display:inline-flex;position:relative}.password-wrapper input{width:100%;max-width:100%;padding-right:36px}.password-toggle{cursor:pointer;width:34px;height:100%;color:var(--text-muted);background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .15s;display:flex;position:absolute;top:50%;right:0;transform:translateY(-50%)}.password-toggle:hover{color:var(--text-h)}.success-msg{color:#4ade80;margin-bottom:10px;font-size:13px}.error-msg{color:#f87171;margin-bottom:10px;font-size:13px}.loading-msg{text-align:center;color:var(--text-muted);padding:48px}.stream-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;display:grid}.stream-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .2s;overflow:hidden}.stream-card:hover{border-color:#21acd066}.stream-card-statusbar{background:var(--surface-2);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;height:36px;padding:0 10px;display:flex}.stream-card-statusbar-left{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.stream-card-statusbar-right{flex-shrink:0;align-items:center;gap:2px;display:flex}.stream-card-name{color:var(--text-h);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.stream-status-badge{letter-spacing:.04em;white-space:nowrap;border-radius:100px;flex-shrink:0;padding:2px 7px;font-size:10px;font-weight:700}.stream-status-badge.live{color:#2ecc71;background:#2ecc7126;border:1px solid #2ecc7159}.stream-status-badge.offline{color:var(--text-muted);background:#6e7a9826;border:1px solid #6e7a9840}.stream-rec-badge{color:#e74c3c;white-space:nowrap;background:#e74c3c1f;border:1px solid #e74c3c4d;border-radius:100px;flex-shrink:0;padding:2px 6px;font-size:10px;font-weight:700}.stream-card-body{aspect-ratio:16/9;background:#000;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.stream-play-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff26;border:2px solid #ffffff80;border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;transition:background .15s,transform .15s;display:flex}.stream-play-btn:hover{background:#ffffff47;transform:scale(1.08)}.stream-play-btn svg{margin-left:3px}.stream-offline-icon{color:#6e7a9859;justify-content:center;align-items:center;display:flex}.btn-icon{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:flex}.btn-icon:hover:not(:disabled){color:var(--text-h);background:#ffffff1a}.btn-icon:disabled{opacity:.35;cursor:not-allowed}.btn-icon-danger:hover:not(:disabled){color:#f87171;background:#e74c3c26}.info-modal-backdrop{z-index:200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.info-modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:90%;max-width:480px;overflow:hidden;box-shadow:0 16px 64px #0009}.info-modal-header{border-bottom:1px solid var(--border);background:var(--surface-2);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.info-modal-header h3{font-size:14px}.info-modal-body{flex-direction:column;padding:8px 16px 16px;display:flex}.info-row{border-bottom:1px solid #2155d01a;justify-content:space-between;align-items:flex-start;gap:12px;padding:9px 0;font-size:13px;display:flex}.info-row:last-child{border-bottom:none}.info-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;min-width:80px;padding-top:2px;font-size:11px;font-weight:600}.info-value{color:var(--text-h);text-align:right;flex:1}.info-copy{font-family:var(--mono);color:var(--accent);cursor:pointer;text-align:right;word-break:break-all;background:#21acd014;border:1px solid #21acd033;border-radius:4px;padding:2px 7px;font-size:11px;transition:background .12s;display:inline-block}.info-copy:hover{background:#21acd02e}.date-group{margin-bottom:28px}.date-group-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--border);margin-bottom:10px;padding-bottom:6px;font-size:11px}.player-container{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:20px;overflow:hidden}.player-header{border-bottom:1px solid var(--border);color:var(--text-h);justify-content:space-between;align-items:center;padding:10px 14px;font-size:14px;font-weight:600;display:flex}.filter-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:24px;padding:16px;display:flex}.badge{text-transform:uppercase;letter-spacing:.05em;border-radius:100px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge-admin{color:#a78bfa;background:#4521d040;border:1px solid #4521d066}.badge-viewer{color:var(--accent);background:#21acd026;border:1px solid #21acd04d}.login-page{background:radial-gradient(ellipse 80% 60% at 50% 0%, #4521d02e 0%, transparent 70%), var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:360px;padding:36px 32px;box-shadow:0 8px 48px #00000080}.login-brand{color:var(--text-h);letter-spacing:.1em;justify-content:center;align-items:center;gap:10px;margin-bottom:28px;font-size:20px;font-weight:700;display:flex}.login-brand svg{color:var(--accent)}.login-form{flex-direction:column;gap:14px;display:flex}.login-form input{width:100%;padding:10px 12px;font-size:15px}.login-form .password-wrapper{width:100%;max-width:100%}.login-form .password-wrapper input{padding-right:40px}.login-submit{background:linear-gradient(90deg, var(--secondary), var(--primary));border-radius:var(--radius);color:#fff;cursor:pointer;border:none;width:100%;margin-top:4px;padding:11px;font-size:15px;font-weight:600;transition:opacity .15s,filter .15s}.login-submit:hover:not(:disabled){filter:brightness(1.12)}.login-submit:disabled{opacity:.5;cursor:not-allowed}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}
