:root { --fg:#1f2933; --muted:#6b7785; --accent:#2f6f4f; --bg:#f6f4ef; --card:#fff; --err:#a12a2a; --warn:#8a5a00; }
* { box-sizing: border-box; }
body { margin:0; font:16px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif; color:var(--fg); background:var(--bg); }
header { display:flex; justify-content:space-between; align-items:center; padding:.8rem 1rem; background:var(--accent); }
header .brand { color:#fff; text-decoration:none; font-weight:600; font-size:1.15rem; }
header button.link { color:#fff; }
main { max-width:44rem; margin:0 auto; padding:1rem; }
footer { text-align:center; color:var(--muted); font-size:.8rem; padding:1.5rem 1rem; }
.card { background:var(--card); border-radius:12px; padding:1.2rem 1.4rem; margin-bottom:1rem; box-shadow:0 1px 3px rgba(0,0,0,.08); }
.narrow { max-width:26rem; margin:2rem auto; }
h1 { font-size:1.4rem; margin-top:0; } h2 { font-size:1.15rem; margin-top:0; }
label { display:block; margin:.9rem 0 .3rem; font-weight:600; }
label.choice { font-weight:normal; margin:.3rem 0; }
input[type=text], input[type=password], input[type=file], select, input[type=datetime-local] {
  width:100%; padding:.6rem; font-size:1rem; border:1px solid #c9ccd1; border-radius:8px; background:#fff; }
label.choice input[type=datetime-local] { width:auto; margin-left:.4rem; }
fieldset { border:1px solid #e1e3e6; border-radius:8px; margin:1rem 0; } legend { font-weight:600; }
button, .button { display:inline-block; margin-top:1rem; padding:.7rem 1.3rem; font-size:1rem; border:0; border-radius:8px;
  background:var(--accent); color:#fff; cursor:pointer; text-decoration:none; }
.button.secondary { background:#4a5b6b; }
button.small { margin:0 .15rem; padding:.2rem .55rem; font-size:.85rem; background:#e6e8eb; color:var(--fg); }
button.danger { background:#f3dede; color:var(--err); }
button.link { background:none; color:var(--accent); padding:0; margin:.6rem 0 0; text-decoration:underline; }
form.inline { display:inline; }
.error { color:var(--err); background:#fbeaea; padding:.6rem .8rem; border-radius:8px; }
.warn { color:var(--warn); }
.muted { color:var(--muted); font-size:.92rem; }
.badge { display:inline-block; padding:.05rem .55rem; border-radius:99px; background:#e6e8eb; font-size:.85rem; margin-left:.3rem; }
.badge.running { background:#fff1c7; } .badge.done { background:#d8f0e0; } .badge.failed { background:#f6d6d6; }
.badge.cancelled { background:#eee; color:var(--muted); }
ol.jobs, ul.jobs { padding-left:1.2rem; } ul.jobs { list-style:none; padding-left:0; }
.jobs li { padding:.35rem 0; border-bottom:1px solid #f0f0f0; }
.steps li { color:var(--muted); } .steps li.current { color:var(--fg); font-weight:600; }
.steps li.current::after { content:" …"; }
.downloads .button { margin-right:.5rem; }
audio { width:100%; margin-top:.5rem; }
.admin { margin-top:1rem; padding-top:.6rem; border-top:1px dashed #ddd; }
@media (max-width:480px) { main { padding:.5rem; } .card { padding:1rem; } .admin-buttons { display:block; margin-top:.3rem; } }
