:root { --fg: #111; --bg: #fff; --muted: #444; --accent: #0b3d91; --warn: #8a1c00; --line: #888; }
* { box-sizing: border-box; }
body { margin: 0; font: 1.125rem/1.5 system-ui, sans-serif; color: var(--fg); background: var(--bg); }
.topbar { display: flex; justify-content: space-between; align-items: center; padding: .75rem 1rem; background: var(--accent); color: #fff; }
.topbar a, .link-button { color: #fff; font-size: 1.125rem; }
.link-button { background: none; border: 0; text-decoration: underline; min-height: 3rem; padding: 0 .5rem; }
.page { max-width: 40rem; margin: 0 auto; padding: 1rem; }
h1 { font-size: 1.5rem; } h2 { font-size: 1.25rem; } h3 { font-size: 1.1rem; margin: 0; }
.card { border: 2px solid var(--line); border-radius: .5rem; padding: 1rem; margin: 1rem 0; }
.muted { color: var(--muted); margin: .25rem 0; }
.notice, .status { padding: .5rem .75rem; border-left: .4rem solid var(--accent); background: #eef2fa; }
.status.final { border-color: #1b5e20; background: #eaf5ea; }
.blockers { border-color: var(--warn); }
.messages { list-style: none; padding: 0; }
.message { padding: .75rem; border: 2px solid var(--line); border-radius: .5rem; margin: .5rem 0; }
.message.error { border-color: var(--warn); color: var(--warn); }
.message.success { border-color: #1b5e20; }
.errorlist { color: var(--warn); padding-left: 1.25rem; }
.field { display: block; margin: .75rem 0; }
fieldset.point { border: 0; border-top: 1px solid var(--line); margin: 0; padding: 1rem 0; }
legend { font-weight: 700; padding: 0; }
input[type=text], input[type=date], input[type=password], select, textarea { width: 100%; min-height: 3rem; padding: .5rem; font: inherit; border: 2px solid var(--line); border-radius: .4rem; }
.row { margin: .4rem 0; }
.check { display: flex; gap: .75rem; align-items: center; min-height: 3rem; }
input[type=checkbox] { width: 1.75rem; height: 1.75rem; }
button.primary, a.button { display: block; width: 100%; min-height: 3.5rem; padding: .75rem 1rem; margin: .75rem 0; font: inherit; font-weight: 700; text-align: center; text-decoration: none; border: 2px solid var(--accent); border-radius: .5rem; background: var(--accent); color: #fff; }
a.button.secondary { background: #fff; color: var(--accent); }
.list { list-style: none; padding: 0; }
.summary { padding: .5rem 0; border-top: 1px solid var(--line); }
.summary p { margin: .25rem 0; }
.voice-state { font-size: 1.25rem; font-weight: 700; min-height: 2em; }
.voice-state.error { color: var(--warn); }
button.primary:disabled { opacity: .5; cursor: not-allowed; }
button.voice-button { min-height: 5rem; font-size: 1.375rem; }
button.voice-button.stop { background: var(--warn); border-color: var(--warn); }
.voice-caption { min-height: 3em; font-style: italic; }
.voice-timing { font-size: .9rem; }
[hidden] { display: none !important; }
