:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0d12;--surface:#14161d;--surface-2:#1b1e27;--border:#262a35;--text:#eef0f4;--text-dim:#9aa0ae;--accent:#4c6fff;--accent-dim:#2b3a7a;--green:#34d399;--amber:#f5b942;--red:#f56262;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);background-image:radial-gradient(circle at 20% -10%,#4c6fff1f,#0000 45%);margin:0}h1{letter-spacing:-.01em;margin:0;font-size:22px;font-weight:700}h2{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:15px;font-weight:600}.page{max-width:1200px;margin:0 auto;padding:32px 24px 64px}.page--wide{max-width:none;padding:20px 20px 32px}.page--centered{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;max-width:420px;min-height:100vh;padding:24px;display:flex}.page__header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:28px;display:flex}.page__subtitle{color:var(--text-dim);margin:4px 0 0;font-size:13px}.page__header nav{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.button,button{background:var(--accent);color:#fff;cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;padding:9px 14px;font-size:13px;font-weight:600;text-decoration:none;transition:filter .15s;display:inline-flex}.button:hover,button:hover{filter:brightness(1.1)}.button--ghost{border-color:var(--border);color:var(--text-dim);background:0 0}.button--ghost:hover{color:var(--text);border-color:var(--accent)}.button--danger{background:var(--red)}button:disabled{opacity:.5;cursor:default;filter:none}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#05060999;justify-content:center;align-items:center;padding:20px;animation:.12s fade-in;display:flex;position:fixed;inset:0}.modal{background:linear-gradient(180deg, var(--surface), var(--surface-2));border:1px solid var(--border);border-radius:14px;width:100%;max-width:380px;padding:22px;animation:.12s modal-in;box-shadow:0 20px 60px #00000080}.modal__title{margin:0 0 8px;font-size:16px;font-weight:700}.modal__message{color:var(--text-dim);margin:0;font-size:14px;line-height:1.5}.modal__actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}@keyframes fade-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(6px)scale(.98)}}.card{background:linear-gradient(180deg, var(--surface), var(--surface-2));border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:14px;width:100%;margin-bottom:24px;padding:22px;display:flex}.card h1{margin-bottom:4px}.card label{color:var(--text-dim);flex-direction:column;gap:6px;font-size:13px;display:flex}input,select{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;padding:9px 11px;font-size:14px}input:focus,select:focus{border-color:var(--accent);outline:none}.error{color:var(--red);margin:0;font-size:13px}.password-field{display:flex;position:relative}.password-field input{flex:1;padding-right:72px}.password-field__toggle{color:var(--text-dim);background:0 0;border:none;padding:5px 9px;font-size:12px;font-weight:500;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.password-field__toggle:hover{color:var(--text);filter:none}.link-muted{color:var(--text-dim);text-align:center;font-size:13px;text-decoration:underline}.link-muted:hover{color:var(--text)}.box-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.box-card{background:linear-gradient(180deg, var(--surface), var(--surface-2));border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.box-card__header{justify-content:space-between;align-items:center;display:flex}.box-card__title{font-size:16px;font-weight:700}.box-card__delete{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:4px}.box-card__delete:hover{color:var(--red);filter:none}.box-card__field{color:var(--text-dim);justify-content:space-between;align-items:center;gap:8px;font-size:13px;display:flex}.box-card__field-value{color:var(--text);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:13px;display:inline-flex}.box-card__field-value:hover{color:var(--accent);filter:none}.box-card__actions{gap:8px;display:flex}.inline-edit-input{border:none;border-bottom:1px dashed var(--border);color:var(--text);text-align:right;background:0 0;width:110px;padding:2px 0;font-size:13px}.inline-edit-input:focus{border-bottom-color:var(--accent);outline:none}.box-card--add{border:1px dashed var(--border);color:var(--text-dim);cursor:pointer;background:0 0;justify-content:center;align-items:center;min-height:112px}.box-card--add:hover{border-color:var(--accent);color:var(--text);filter:none}.switch{flex-shrink:0;width:36px;height:21px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0;position:absolute}.switch__track{background:var(--border);cursor:pointer;border-radius:999px;transition:background .15s;position:absolute;inset:0}.switch__track:before{content:"";background:#fff;border-radius:50%;width:17px;height:17px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch input:checked+.switch__track{background:var(--accent)}.switch input:checked+.switch__track:before{transform:translate(15px)}.switch input:disabled+.switch__track{opacity:.5}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;color:var(--text-dim);text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--border);padding:8px;font-size:11px;font-weight:600}td{border-bottom:1px solid var(--border);padding:10px 8px}.status-badge{text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim);background:#ffffff0f;border-radius:999px;align-items:center;gap:6px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}.status-badge__dot{background:currentColor;border-radius:50%;width:6px;height:6px}.status-badge--live{color:var(--green);background:#34d3991f}.status-badge--live .status-badge__dot{animation:1.6s ease-in-out infinite pulse}.status-badge--connecting{color:var(--amber);background:#f5b9421f}.status-badge--offline{color:var(--red);background:#f562621f}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.camera-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}@media (width<=1400px){.camera-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=800px){.camera-grid{grid-template-columns:1fr}}.camera-grid__cell{position:relative}.camera-player{border:1px solid var(--border);background:#000;border-radius:6px;width:100%;overflow:hidden}.camera-player--activate{cursor:pointer;width:100%;font:inherit;color:inherit;text-align:left;margin:0;padding:0;display:block}.camera-player--activate:hover .camera-player__overlay{color:var(--text);background:#4c6fff2e}.camera-power-toggle{z-index:2;color:#ffffffbf;background:#00000080;border:1px solid #ffffff26;border-radius:6px;justify-content:center;align-items:center;width:30px;height:30px;padding:0;display:inline-flex;position:absolute;top:6px;right:6px}.camera-power-toggle:hover{color:#fff;background:#000000bf}.camera-player--live{border-color:#34d39959}.camera-player__bar{z-index:1;pointer-events:none;background:linear-gradient(#0009,#0000);justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:flex;position:absolute;top:0;left:0;right:0}.camera-player__label{text-shadow:0 1px 3px #000c;font-size:13px;font-weight:600}.camera-player__stage{aspect-ratio:16/9;background:#000;position:relative}.camera-player__stage video{object-fit:contain;background:#000;width:100%;height:100%;display:block}.camera-player__overlay{color:var(--text-dim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0b0d128c;flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:13px;display:flex;position:absolute;inset:0}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}
