:root{--bg:#0f1115;--card:#171a21;--line:#2a2f3a;--text:#eaeef5;--muted:#8a94a7;--green:#26d07c;--red:#ff4d4f;--accent:#3b82f6}body,html{background:var(--bg);color:var(--text)}.shell{max-width:1200px;margin:24px auto;padding:0 16px}.title{font-weight:700;margin:0 0 16px}.grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px}.card h2{margin:0 0 8px;font-size:16px}h3{margin:8px 0 6px;font-size:14px;color:var(--muted)}.row{display:flex;gap:8px;align-items:center;margin:6px 0;flex-wrap:wrap}label{width:120px;font-size:13px;color:var(--muted)}button,input,select{background:#0b0d11;color:var(--text);border:1px solid var(--line);padding:6px 8px;border-radius:8px;font-size:14px}input[type=number]{width:90px}button{cursor:pointer}button.primary{background:var(--accent);border-color:transparent}button.danger{background:var(--red);border-color:transparent}button.muted{background:#0b0d11;color:var(--muted)}.badge{padding:4px 8px;border-radius:999px;border:1px solid var(--line);font-size:12px;margin-left:8px}.badge.on{border-color:var(--green);color:var(--green)}.badge.off{border-color:var(--muted);color:var(--muted)}.levels{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin-top:8px}.levels .label{font-size:12px;color:var(--muted);margin-bottom:4px}.bar{height:10px;width:100%;background:#0b0d11;border:1px solid var(--line);border-radius:6px;overflow:hidden}.bar span{display:block;height:100%;background:linear-gradient(90deg,#26d07c,#ffd166)}.preview{border:1px solid var(--line);border-radius:8px;padding:8px;margin-top:8px}.preview video{width:100%;border-radius:6px;background:#000;aspect-ratio:16/9}.preview-actions{display:flex;gap:8px;margin-top:8px}.connections{display:flex;gap:8px;align-items:center}.pin{letter-spacing:6px;padding:6px 8px;border:1px dashed var(--line);border-radius:6px;width:140px;text-align:center;color:var(--muted)}@media (max-width:1100px){.grid{grid-template-columns:1fr 1fr}}@media (max-width:720px){.grid{grid-template-columns:1fr}label{width:100px}}