:root {
  --bg:#fbfaf8; --surface:#ffffff; --sunken:#f4f2ee;
  --fg:#1a1a18; --muted:#6b6b66; --line:#e4e1db;
  --accent:#2f6f57; --accent-fg:#ffffff; --danger:#a3402f;
  --radius:10px;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg:#16161a; --surface:#1e1e24; --sunken:#191920;
    --fg:#f0efec; --muted:#9a9a94; --line:#2e2e34;
    --accent:#5fb896; --accent-fg:#10231c; --danger:#e08a78;
  }
}
:root[data-theme="dark"] {
  --bg:#16161a; --surface:#1e1e24; --sunken:#191920;
  --fg:#f0efec; --muted:#9a9a94; --line:#2e2e34;
  --accent:#5fb896; --accent-fg:#10231c; --danger:#e08a78;
}

* { box-sizing:border-box; }
body {
  margin:0; background:var(--bg); color:var(--fg); min-height:100vh;
  font:16px/1.55 ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  padding:16px;
}
.wrap { max-width:46rem; margin:0 auto; }

header {
  display:flex; align-items:center; justify-content:space-between;
  gap:1rem; margin-bottom:1.25rem; flex-wrap:wrap;
}
h1 { font-size:1.25rem; margin:0; letter-spacing:-0.01em; }
.who { font-size:.8125rem; color:var(--muted); }

.card {
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius); padding:1.125rem; margin-bottom:1rem;
}
h2 {
  font-size:.75rem; text-transform:uppercase; letter-spacing:.07em;
  color:var(--muted); margin:0 0 .875rem; font-weight:600;
}
h3 { font-size:.9375rem; margin:0 0 .75rem; font-weight:600; }

label { display:block; font-size:.8125rem; color:var(--muted); margin-bottom:.25rem; }
input, select, textarea {
  width:100%; padding:.5rem .7rem; font:inherit; color:var(--fg);
  background:var(--bg); border:1px solid var(--line); border-radius:8px;
}
textarea { min-height:4.5rem; resize:vertical; }
input:focus, select:focus, textarea:focus { outline:2px solid var(--accent); outline-offset:-1px; }
.field { margin-bottom:.875rem; }
.grid { display:grid; gap:.875rem; grid-template-columns:repeat(auto-fit, minmax(9rem, 1fr)); }

button {
  font:inherit; font-weight:500; padding:.5rem 1rem; border-radius:8px;
  cursor:pointer; background:var(--accent); color:var(--accent-fg);
  border:1px solid transparent;
}
button.ghost { background:transparent; color:var(--fg); border-color:var(--line); }
button.link { background:none; border:none; color:var(--muted); padding:.25rem; text-decoration:underline; }
button.danger { background:transparent; color:var(--danger); border-color:var(--line); }
button:disabled { opacity:.5; cursor:not-allowed; }
.row { display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; }
.row.end { justify-content:flex-end; }

/* Sí / No */
.sino { display:inline-flex; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.sino label {
  margin:0; padding:.4rem .9rem; font-size:.875rem; color:var(--muted);
  cursor:pointer; background:var(--bg);
}
.sino label + label { border-left:1px solid var(--line); }
.sino input { position:absolute; opacity:0; pointer-events:none; }
.sino input:checked + span { color:var(--accent-fg); }
.sino label:has(input:checked) { background:var(--accent); color:var(--accent-fg); font-weight:500; }

fieldset { border:1px solid var(--line); border-radius:var(--radius); padding:1rem; margin:0 0 1rem; }
legend { font-size:.8125rem; font-weight:600; padding:0 .4rem; }

.bloque { background:var(--sunken); border:1px solid var(--line); border-radius:var(--radius); padding:1rem; margin-bottom:.75rem; }
.bloque header { margin-bottom:.75rem; }

ul.list { list-style:none; padding:0; margin:0; }
ul.list li {
  padding:.75rem 0; border-bottom:1px solid var(--line);
  display:flex; justify-content:space-between; gap:1rem; align-items:center;
}
ul.list li:last-child { border-bottom:0; }
ul.list .meta { color:var(--muted); font-size:.8125rem; }
ul.list button { padding:.3rem .7rem; font-size:.875rem; }

.msg { font-size:.875rem; padding:.625rem .75rem; border-radius:8px; border:1px solid var(--line); margin-bottom:1rem; }
.msg.err { color:var(--danger); border-color:var(--danger); }
.empty { color:var(--muted); font-size:.875rem; margin:.5rem 0 0; }
.hide { display:none !important; }
.crumb { font-size:.8125rem; color:var(--muted); margin-bottom:.75rem; }

/* ---------- reporte ---------- */
.rep .rep-head { border-bottom:1px solid var(--line); padding-bottom:.875rem; margin-bottom:1.25rem; }
.rep .rep-fecha { font-size:1.25rem; font-weight:600; letter-spacing:-0.01em; }
.rep .rep-paciente { color:var(--muted); font-size:.875rem; }
.rep section { margin-bottom:1.5rem; }
.rep section:last-child { margin-bottom:0; }
.rep h3 {
  font-size:.75rem; text-transform:uppercase; letter-spacing:.07em;
  color:var(--muted); font-weight:600; margin:0 0 .5rem;
}
.kv { display:flex; justify-content:space-between; gap:1rem; padding:.35rem 0; border-bottom:1px solid var(--line); font-size:.9375rem; }
.kv:last-child { border-bottom:0; }
.kv .k { color:var(--muted); }
.kv .v { text-align:right; font-variant-numeric:tabular-nums; }
.rep table { width:100%; border-collapse:collapse; font-size:.9375rem; }
.rep th, .rep td { text-align:right; padding:.4rem .5rem; border-bottom:1px solid var(--line); }
.rep th:first-child, .rep td:first-child { text-align:left; padding-left:0; }
.rep th { font-size:.75rem; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:600; }
.rep td { font-variant-numeric:tabular-nums; }
.rep .ejercicio { border:1px solid var(--line); border-radius:var(--radius); padding:.875rem; margin-bottom:.625rem; background:var(--sunken); }
.rep .ejercicio h4 { margin:0 0 .5rem; font-size:.9375rem; }
.rep .nota { color:var(--muted); font-size:.875rem; white-space:pre-wrap; margin:.25rem 0 0; }
.rep .ausente { color:var(--muted); font-size:.9375rem; }

@media print {
  body { background:#fff; color:#000; padding:0; }
  .no-print, header .row, #msg { display:none !important; }
  .card { border:0; padding:0; }
  .rep .ejercicio { background:none; }
}
output.val { font-variant-numeric:tabular-nums; color:var(--fg); font-size:.875rem; }
