:root {
  --primary: #244b3a;
  --background: #f5f6f8;
  --card: #ffffff;
  --line: #e1e5e8;
  --muted: #68707a;
  --text: #20242a;
}
* { box-sizing: border-box; }
body { margin:0; background:var(--background); color:var(--text); font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
header { background:var(--primary); color:#fff; padding:18px; }
header > div, main { max-width:720px; margin:auto; }
.brand { display:flex; align-items:center; gap:12px; }
.logo { font-size:24px; }
.brand b { font-size:15px; }
.brand small { display:block; opacity:.8; margin-top:3px; }
main { padding:22px 14px 40px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:18px; padding:22px; box-shadow:0 8px 30px #0001; }
h1 { font-size:23px; margin:0 0 8px; }
p { line-height:1.55; }
.muted,.step { color:var(--muted); }
.step { font-size:12px; margin-bottom:12px; }
button { width:100%; border:0; border-radius:13px; padding:15px; margin:7px 0; background:#eef2f0; font-size:16px; text-align:left; cursor:pointer; }
button.primary { background:var(--primary); color:#fff; text-align:center; font-weight:700; }
button.secondary { background:#fff; border:1px solid var(--line); text-align:center; }
label { display:block; font-size:14px; font-weight:650; margin:14px 0 6px; }
input,textarea,select { width:100%; padding:13px; border:1px solid #cfd5da; border-radius:11px; font-size:16px; background:#fff; }
textarea { min-height:110px; }
.review { background:#fafafa; border:1px solid var(--line); border-radius:12px; padding:13px; margin:9px 0; }
.review b { display:block; font-size:12px; color:var(--muted); margin-bottom:4px; }
.protocol { font-size:28px; font-weight:800; letter-spacing:2px; text-align:center; background:#f0f5f2; padding:16px; border-radius:12px; }
.notice { background:#f0f5f2; border-left:4px solid var(--primary); padding:13px; border-radius:8px; }
.availability-grid { display:grid; grid-template-columns:1fr; gap:8px; margin-top:12px; }
.availability-option { display:flex; align-items:center; gap:10px; margin:0; padding:12px; border:1px solid var(--line); border-radius:11px; background:#fafafa; font-weight:500; cursor:pointer; }
.availability-option input { width:20px; height:20px; margin:0; flex:0 0 auto; }
.availability-day { font-weight:700; }
.availability-time { color:var(--muted); }
footer { text-align:center; color:var(--muted); font-size:12px; padding:15px; }
@media (max-width:520px) { .card { padding:18px; } }

.info-page { text-align:center; }
.info-page ul { display:inline-block; text-align:left; margin:12px auto; padding-left:24px; }
.info-page .notice { text-align:center; }
