:root { --brand: #5b3df6; --danger: #e5484d; --bg: #f6f5fb; --card: #fff; --ink: #1c1830; }
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
body { margin: 0; font-family: -apple-system, "Hiragino Kaku Gothic ProN", system-ui, sans-serif;
  background: var(--bg); color: var(--ink); padding-bottom: env(safe-area-inset-bottom); }
.appbar { background: var(--brand); color: #fff; font-weight: 700; padding: 14px 16px;
  position: sticky; top: 0; font-size: 18px; }
.screen { padding: 16px; max-width: 560px; margin: 0 auto; }
.hidden { display: none; }
.field { display: block; margin: 14px 0; }
.field > span { display: block; font-size: 13px; color: #6b6680; margin-bottom: 6px; font-weight: 600; }
select { width: 100%; padding: 14px; font-size: 17px; border: 1.5px solid #ddd; border-radius: 12px;
  background: var(--card); }
.checks { display: flex; flex-wrap: wrap; gap: 8px; }
.checks label { background: var(--card); border: 1.5px solid #ddd; border-radius: 999px;
  padding: 9px 14px; font-size: 15px; }
.checks input { display: none; }
.checks input:checked + span { color: #fff; }
.checks label:has(input:checked) { background: var(--brand); border-color: var(--brand); color: #fff; }
button.big { width: 100%; padding: 18px; font-size: 19px; font-weight: 700; border: none;
  border-radius: 16px; margin-top: 18px; }
button.primary { background: var(--brand); color: #fff; }
button.danger { background: var(--danger); color: #fff; }
button:disabled { opacity: .5; }
.msg { color: #6b6680; font-size: 14px; min-height: 20px; }
.timer { font-size: 56px; font-weight: 800; text-align: center; margin: 24px 0; font-variant-numeric: tabular-nums; }
.hint { text-align: center; color: #6b6680; }
.hint.small { font-size: 12px; margin-top: 8px; }
.guide { background: var(--card); border: 1px solid #eee; border-radius: 14px;
  padding: 14px 16px; margin: 18px 0; text-align: left; }
.guide h3 { margin: 0 0 10px; font-size: 14px; color: var(--brand); text-align: left; }
.guide ul { list-style: none; margin: 0; padding: 0; }
.guide li { margin: 8px 0; }
.guide li label { display: flex; align-items: flex-start; gap: 10px; cursor: pointer; line-height: 1.5; }
.guide li input { margin-top: 3px; flex: none; width: 18px; height: 18px; accent-color: var(--brand); }
.guide li.done span { color: #aaa; text-decoration: line-through; }
.rec-dot { width: 18px; height: 18px; border-radius: 50%; background: var(--danger);
  margin: 30px auto 0; animation: pulse 1.2s infinite; }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: .25; } }
.card { background: var(--card); border-radius: 14px; padding: 14px; margin: 10px 0;
  border: 1px solid #eee; }
.card h3 { margin: 0 0 6px; font-size: 14px; color: var(--brand); }
.card pre { white-space: pre-wrap; margin: 0; font: inherit; }
.tag { display: inline-block; background: #efe9ff; color: var(--brand); border-radius: 999px;
  padding: 3px 10px; font-size: 13px; margin: 3px 3px 0 0; }
.spinner { width: 36px; height: 36px; border: 4px solid #ddd; border-top-color: var(--brand);
  border-radius: 50%; animation: spin 1s linear infinite; margin: 30px auto; }
@keyframes spin { to { transform: rotate(360deg); } }
.ok { color: #2a9d4a; font-weight: 700; }
.err { color: var(--danger); font-weight: 700; }
