:root{--bg: #0f1115;--card: #1a1d24;--border: #2a2e38;--text: #e6e8ec;--muted: #8b909c;--accent: #4f7cff;--danger: #ff4f4f;--ok: #36d399}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}button{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:10px 16px;font-size:14px;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button.ghost,button.link{background:transparent;color:var(--muted)}button.danger{background:var(--danger)}button.link{padding:6px 0;text-decoration:underline}input{width:100%;padding:10px 12px;margin:6px 0;border-radius:8px;border:1px solid var(--border);background:#11131a;color:var(--text)}.topbar{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:1px solid var(--border)}.topbar h1{font-size:18px;margin:0}.content{max-width:880px;margin:0 auto;padding:24px}.row-between{display:flex;justify-content:space-between;align-items:center}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:16px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px;margin:12px 0}.device{cursor:pointer;transition:border-color .15s}.device:hover{border-color:var(--accent)}.muted{color:var(--muted)}.small{font-size:13px}.error{color:var(--danger);margin:8px 0}.dot{width:12px;height:12px;border-radius:50%;display:inline-block}.dot.on{background:var(--ok)}.dot.off{background:var(--muted)}.auth{display:flex;align-items:center;justify-content:center;min-height:100vh}.auth .card{width:340px}.controls{display:flex;flex-wrap:wrap;gap:10px}.btn{background:var(--accent);color:#fff;border-radius:8px;padding:10px 16px;font-size:14px;cursor:pointer;display:inline-block}.temps{margin-top:12px;display:flex;gap:16px;flex-wrap:wrap}.temp{background:#11131a;padding:8px 12px;border-radius:8px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center}.modal{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:24px;width:420px}.qr{background:#fff;padding:16px;border-radius:8px;display:inline-block;margin:12px 0}.code-line{font-family:monospace;font-size:12px;background:#11131a;padding:10px;border-radius:8px;word-break:break-all;border:1px solid var(--border)}table{width:100%;border-collapse:collapse;font-size:13px}td{padding:6px 8px;border-bottom:1px solid var(--border)}.state-success{color:var(--ok)}.state-failed,.state-rejected{color:var(--danger)}.row{display:flex;align-items:center;gap:10px}.ext-input{width:180px;margin:0}.banner{max-width:880px;margin:12px auto 0;padding:10px 16px;background:#2a230f;border:1px solid #6b5a1e;color:#e8d48b;border-radius:8px;font-size:13px}.tabs{max-width:880px;margin:16px auto 0;padding:0 24px;display:flex;gap:8px}.tabs button{background:transparent;color:var(--muted);border:1px solid var(--border)}.tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.event-list{display:flex;flex-direction:column;gap:4px;margin:10px 0;font-size:13px}.event-list input{width:auto;margin:0 6px 0 0}.event-list label{display:flex;align-items:center}.secret-box{margin-top:12px}button.link.danger{color:var(--danger);margin-left:12px}
