:root{--bg: #f5f6f8;--card: #ffffff;--ink: #1f2a37;--muted: #64707d;--line: #dde1e6;--accent: #2e86ab;--accent-ink: #ffffff;--ok: #2f8f4e;--err: #c0392b;--ptt: #1f2a37;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}@media(prefers-color-scheme:dark){:root{--bg: #12171d;--card: #1b222b;--ink: #e8ecf0;--muted: #97a3af;--line: #2c3540;--accent: #4aa3c8;--ptt: #e8ecf0}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}main{max-width:560px;margin:0 auto;padding:16px 16px calc(32px + env(safe-area-inset-bottom))}h1{font-size:1.35rem;margin:8px 0 2px}h2{font-size:1.1rem;margin:0 0 12px}.top{margin-bottom:16px}.brand{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--muted);font-size:.9rem}.muted{color:var(--muted)}.small{font-size:.85rem}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.name{font-weight:650;font-size:1.1rem}.badge{font-size:.75rem;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}.badge.room{border-color:var(--accent);color:var(--accent)}.banner{padding:12px 14px;border-radius:12px;background:var(--card);border:1px solid var(--line);margin-bottom:12px}.banner.error{border-color:var(--err);color:var(--err)}.meter{height:8px;background:var(--line);border-radius:4px;overflow:hidden;margin:10px 0 6px}.meter-fill{height:100%;width:0;background:var(--muted);transition:width 80ms linear}.meter-fill.active{background:var(--ok)}.status{font-size:.92rem;min-height:1.3em}.status.on{color:var(--ok)}.status.err{color:var(--err)}.line{margin:8px 0;min-height:1.3em}.line .final{font-size:1rem}.line .partial{color:var(--muted);font-style:italic}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.actions{margin-top:10px}.btn{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;padding:10px 14px;font-size:1rem;min-height:44px;cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.ghost{background:transparent}.btn.danger{color:var(--err)}.btn.wide{width:100%}.btn:disabled{opacity:.5;cursor:default}.ptt{display:block;width:100%;min-height:120px;margin:10px 0 4px;border-radius:16px;border:2px solid var(--ptt);background:transparent;color:var(--ink);font-size:1.15rem;font-weight:600;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.ptt.down{background:var(--ok);border-color:var(--ok);color:#fff}.ptt:disabled{opacity:.4}.form .field{display:grid;gap:4px;margin-bottom:12px}.form .field span,legend{font-size:.85rem;color:var(--muted)}input[type=text],select{width:100%;padding:10px;font-size:1rem;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);min-height:44px}fieldset{border:0;padding:0;margin:0 0 12px;display:grid;gap:6px}.choice,.check{display:flex;gap:8px;align-items:center;min-height:36px}details{margin-bottom:8px}summary{cursor:pointer;color:var(--muted)}form.row input{flex:1}
