:root { --bg: #fbfaf7; --fg: #1d1d1b; --muted: #6b6a66; --line: #e3e0d8; --accent: #1f5f8b; --warn: #a2461b; --ok: #2f6b3a; }
@media (prefers-color-scheme: dark) { :root { --bg: #16171a; --fg: #ecebe6; --muted: #9a9890; --line: #2c2d31; --accent: #7fb6dd; --warn: #e59466; --ok: #8cc79a; } }
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--fg); font: 16px/1.5 system-ui, -apple-system, "Apple SD Gothic Neo", sans-serif; }
main { max-width: 760px; margin: 0 auto; padding: 16px; }
h1 { font-size: 1.15rem; margin: 0 0 12px; }
label { display: block; font-size: .85rem; color: var(--muted); margin: 10px 0 4px; }
input, select, button { font: inherit; padding: 8px 10px; border: 1px solid var(--line); border-radius: 6px; background: transparent; color: inherit; width: 100%; }
button { background: var(--accent); color: var(--bg); border: 0; cursor: pointer; width: auto; margin: 12px 8px 0 0; }
button:disabled { opacity: .45; cursor: default; }
.row { display: flex; gap: 8px; align-items: center; }
.row input[type=checkbox] { width: auto; }
.status { font-size: .85rem; color: var(--muted); margin: 8px 0; }
.status[data-state=live] { color: var(--ok); }
.status[data-state=error], .status[data-state=reconnecting] { color: var(--warn); }
.banner { border: 1px solid var(--warn); color: var(--warn); border-radius: 6px; padding: 6px 10px; font-size: .85rem; margin: 8px 0; }
.meter { height: 6px; background: var(--line); border-radius: 3px; overflow: hidden; }
.meter > i { display: block; height: 100%; width: 0; background: var(--accent); }
#captions { margin-top: 12px; }
.cap { padding: 10px 0; border-bottom: 1px solid var(--line); }
.cap .t { font-size: 1.2rem; }
.cap .src { color: var(--muted); font-size: .9rem; }
.cap .flag { color: var(--warn); font-size: .85rem; }
.cap.partial { color: var(--muted); font-style: italic; }
pre { font-size: .8rem; color: var(--muted); white-space: pre-wrap; }
.status[data-state=connected] { color: var(--ok); }
.status[data-state=denied], .status[data-state=error], .status[data-state=reconnecting] { color: var(--warn); }
.status.run { font-weight: 600; color: var(--fg); }
.status.run[data-state=ended] { color: var(--warn); }
.cap .diag { margin: 6px 0 0; padding-left: 18px; color: var(--muted); font-size: .8rem; }
.cap .diag li { overflow-wrap: anywhere; }
.cap .actions button.small { padding: 3px 9px; font-size: .8rem; margin: 6px 6px 0 0; width: auto; }
.cap .correction { display: grid; gap: 4px; margin-top: 6px; }
.cap .correction label { font-size: .8rem; color: var(--muted); margin: 0; }
.cap .correction textarea, .cap .correction input { width: 100%; box-sizing: border-box; }
