:root { --bg:#0f1115; --card:#1a1d24; --fg:#e8eaed; --muted:#9aa0a6; --accent:#4c8bf5; --err:#ff6b6b; }
* { box-sizing: border-box; }
body { margin:0; font-family: system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg); color: var(--fg); }
.topbar { padding: 14px 16px; border-bottom: 1px solid #2a2e37; }
.topbar h1 { margin:0; font-size: 18px; }
main { padding: 16px; max-width: 640px; margin: 0 auto; }
.card { background: var(--card); border-radius: 12px; padding: 16px; display:flex; flex-direction:column; gap:12px; }
label { font-size: 14px; color: var(--muted); }
input { padding: 12px; border-radius: 8px; border:1px solid #2a2e37; background:#0d0f13; color:var(--fg); font-size:16px; }
button { padding: 12px 16px; border:none; border-radius: 8px; background: var(--accent); color:#fff; font-size:16px; }
button:active { opacity:.85; }
.error { color: var(--err); font-size: 14px; margin:0; }
.list { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:8px; }
.movement-item { background: var(--card); border-radius: 10px; padding: 14px 16px; display:flex; justify-content:space-between; align-items:center; }
.movement-item .tag { font-size:12px; color: var(--muted); }
.modal { position: fixed; inset:0; background: rgba(0,0,0,.6); display:flex; align-items:flex-end; }
.modal[hidden] { display:none; }
.modal-card { background: var(--card); width:100%; max-width:640px; margin:0 auto; border-radius:16px 16px 0 0; padding:20px; max-height:85vh; overflow:auto; position:relative; }
.modal-close { position:absolute; top:10px; right:12px; background:transparent; color:var(--muted); font-size:24px; padding:4px 10px; }
.media-placeholder { background:#0d0f13; border:1px dashed #2a2e37; border-radius:10px; padding:28px; text-align:center; color:var(--muted); margin:8px 0 12px; }
.params { color: var(--muted); font-size:14px; }
.steps { padding-left: 20px; line-height: 1.7; }
.row { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.actions { display:flex; gap:8px; }
button.small { padding:8px 12px; font-size:14px; }
button.primary { width:100%; margin-top:16px; }
button.link { background:transparent; color:var(--accent); padding:8px 0; }
.muted { color:var(--muted); }
.status-tag { font-size:12px; padding:2px 8px; border-radius:999px; }
.status-pending { background:#243; color:#8fd; }
.status-active { background:#354; color:#ffd479; }
.status-done { background:#333; color:var(--muted); }
.status-skipped { background:#333; color:var(--muted); }
.movement-item.done, .movement-item.skipped { opacity:.55; }
.rest-box { background:#0d0f13; border:1px solid #2a2e37; border-radius:10px; padding:16px; margin-top:12px; text-align:center; }
.rest-count { font-size:40px; font-variant-numeric: tabular-nums; margin-bottom:8px; }
#run-box .actions { justify-content:center; }
#pacer { display:flex; flex-direction:column; align-items:center; gap:8px; margin-bottom:8px; }
#pacer-circle { width:120px; height:120px; border-radius:50%; background:radial-gradient(circle,#4c8bf5,#243b6b); transform:scale(0.4); transition:transform .3s linear; }
#pacer-label { font-size:22px; }
.phase-header { font-size:18px; font-weight:600; margin-bottom:4px; }
.hist-day { background:var(--card); border-radius:10px; padding:12px 14px; margin-bottom:8px; }
.hist-day h3 { margin:0 0 6px; font-size:15px; }
.hist-ex { display:flex; justify-content:space-between; font-size:14px; color:var(--muted); padding:2px 0; }
.set-row { background:var(--card); border-radius:10px; padding:10px 12px; margin-bottom:8px; }
.set-row .name { font-weight:600; margin-bottom:6px; }
.set-row .fields { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.set-row .fld { display:flex; flex-direction:column; font-size:12px; color:var(--muted); }
.set-row input { width:64px; padding:6px; }
.media-box { text-align:center; color:var(--muted); margin:8px 0 12px; min-height:20px; }
.media-box img { max-width:100%; border-radius:10px; display:block; margin:0 auto; }
.wl-on { color:#8fd; }
.wl-off { color:var(--muted); }
