:root{--bg:#0f1512;--card:#18211c;--card2:#1f2b25;--line:#2c3b33;--fg:#e8efe9;--mut:#93a69a;--acc:#7ed957;--acc2:#4fae2f;--warn:#e0a63a;--bad:#e5645a;--r:14px}
@media (prefers-color-scheme:light){:root{--bg:#f2f5f1;--card:#fff;--card2:#eef3ee;--line:#d6dfd7;--fg:#16201a;--mut:#5d6f63;--acc:#3f9d1f;--acc2:#2f7d14}}
*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--fg);font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent}
main{max-width:640px;margin:0 auto;padding:16px 16px 48px}
h1{font-size:1.25rem;margin:0}h2{font-size:1rem;margin:24px 0 8px;color:var(--mut);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin:10px 0}
.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.row+.row{margin-top:10px}
.sub{color:var(--mut);font-size:.88rem}
button,.btn{appearance:none;border:1px solid var(--line);background:var(--card2);color:var(--fg);border-radius:12px;padding:12px 16px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block;text-align:center}
button.primary{background:var(--acc);border-color:var(--acc);color:#0b1a07}button:disabled{opacity:.45;cursor:not-allowed}
button.on{background:var(--acc2);border-color:var(--acc2);color:#fff}button.talking{background:var(--bad);border-color:var(--bad);color:#fff}
button.link{background:none;border:none;color:var(--acc);padding:4px 0;font-weight:500}
input[type=email],input[type=password],input[type=text],input[type=number],select{width:100%;padding:12px;border-radius:10px;border:1px solid var(--line);background:var(--card2);color:var(--fg);font:inherit}
label.f{display:block;margin:12px 0 4px;font-size:.9rem;color:var(--mut)}
.stage{position:relative;background:#000;border-radius:var(--r);overflow:hidden;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center}
.stage img{width:100%;height:100%;object-fit:contain;display:none}.stage .ph{color:#789;font-size:.95rem;padding:20px;text-align:center}
.badge{display:inline-block;padding:2px 10px;border-radius:99px;font-size:.78rem;font-weight:700;background:var(--card2);border:1px solid var(--line)}
.badge.ok{color:var(--acc)}.badge.off{color:var(--bad)}.badge.warn{color:var(--warn)}
.meter{height:8px;background:var(--card2);border-radius:99px;overflow:hidden}.meter>i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--acc),var(--warn),var(--bad));transition:width .25s}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ev{display:flex;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}.ev:first-child{border-top:none}
.ev .t{flex:1}.ev.locked{opacity:.55}
.err{color:var(--bad);min-height:1.3em;font-size:.92rem}
.switch{display:flex;align-items:center;gap:8px}.switch input{width:20px;height:20px}
.brand{display:flex;align-items:center;gap:10px}.brand img{width:40px;height:40px;border-radius:10px}
.hidden{display:none!important}
.ptt{width:100%;padding:22px;font-size:1.1rem;touch-action:none;user-select:none;-webkit-user-select:none}
