/* TCRF Visitas — estilos de la app sobre brand/tokens + componentes */
html, body { margin: 0; }
body { background: var(--surface); color: var(--ink); font-family: var(--font-sans); -webkit-text-size-adjust: 100%; }
* { box-sizing: border-box; }
a { color: var(--azul-texto); }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }

/* ---------- Público ---------- */
.pub { background: var(--surface-crema); min-height: 100vh; }
.pub-head { background: var(--surface); border-bottom: 1px solid var(--border); padding: var(--space-4); display: flex; justify-content: center; }
.pub-head img { height: 52px; width: auto; }
.pub-main { max-width: 640px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); }
.pub-intro { margin-bottom: var(--space-5); }
.pub-intro h1 { font: 500 30px/36px var(--font-sans); margin: var(--space-2) 0; }
.pub-intro p { margin: 0; color: var(--ink-muted); font-size: 17px; line-height: 26px; }

.form-card { background: var(--surface-raised); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-1); overflow: hidden; }
.form-card + .form-card { margin-top: var(--space-4); }
.form-card__band { height: 6px; background: var(--azul); }
.form-card__band--calido { background: var(--naranja); }
.form-card__body { padding: var(--space-5); display: grid; gap: var(--space-5); }
.form-card__title { font: 500 22px/28px var(--font-sans); margin: 0; }

.grid-2 { display: grid; gap: var(--space-4); grid-template-columns: 1fr 1fr; }
@media (max-width: 520px) { .grid-2 { grid-template-columns: 1fr; } }

.tc-field input, .tc-field textarea, .tc-field select { width: 100%; font: 400 17px/24px var(--font-sans); min-height: 50px; }
.tc-field select { color: var(--ink); background: var(--surface-raised); border: 1.5px solid var(--border-control); border-radius: var(--radius-sm); padding: var(--space-3) var(--space-4); }
.tc-field label { font-size: 15px; }
.req { color: var(--ink-muted); font-weight: 400; }

/* Sí / No segmentado */
.yn { border: 0; margin: 0; padding: 0; display: grid; gap: var(--space-2); }
.yn legend { font: 500 15px/20px var(--font-sans); padding: 0; margin-bottom: var(--space-2); }
.yn__opts { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); }
.yn__opts label { position: relative; }
.yn__opts input { position: absolute; opacity: 0; inset: 0; }
.yn__opts span { display: flex; align-items: center; justify-content: center; gap: var(--space-2); min-height: 52px;
  border: 1.5px solid var(--border-control); border-radius: var(--radius-md); font: 500 17px/20px var(--font-sans); cursor: pointer; background: var(--surface-raised); }
.yn__opts input:checked + span { background: var(--primario); color: var(--on-primario); border-color: var(--primario); }
.yn__opts input:checked + span::before { content: "✓"; }
.yn__opts input:focus-visible + span { outline: 2px solid var(--focus-ring); outline-offset: 2px; }

/* Familia */
.member { border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-4); display: grid; gap: var(--space-4); background: var(--surface); }
.member__head { display: flex; justify-content: space-between; align-items: center; }
.member__head strong { font-weight: 500; }
.link-btn { background: none; border: 0; color: var(--azul-texto); font: 500 15px/20px var(--font-sans); cursor: pointer; padding: var(--space-2); text-decoration: underline; }
.check { display: flex; gap: var(--space-3); align-items: flex-start; font-size: 15px; line-height: 22px; }
.check input { width: 22px; height: 22px; margin-top: 1px; flex: none; accent-color: var(--primario); }

.btn-block { width: 100%; justify-content: center; min-height: 56px; font-size: 18px; }
.actions { margin-top: var(--space-5); display: grid; gap: var(--space-3); }

/* Agradecimiento */
.thanks { text-align: center; padding: var(--space-7) var(--space-4); max-width: 560px; margin: 0 auto; display: grid; gap: var(--space-5); justify-items: center; }
.thanks img { width: 120px; }
.thanks .tc-versiculo { color: var(--azul-texto); }
.thanks h1 { font: 500 34px/40px var(--font-sans); margin: 0; }
.thanks p { margin: 0; font-size: 18px; line-height: 28px; color: var(--ink-muted); }
.countdown { font-size: 14px; color: var(--ink-muted); }
.pub-foot { text-align: center; padding: var(--space-6) var(--space-4); color: var(--ink-muted); font-size: 14px; }

/* Kiosko */
.kiosk-bar { position: fixed; right: var(--space-3); bottom: var(--space-3); }
.kiosk-bar button { background: var(--surface); border: 1px solid var(--border); color: var(--ink-muted); border-radius: var(--radius-pill); padding: var(--space-2) var(--space-4); font: 400 13px/16px var(--font-sans); cursor: pointer; }
.lock { min-height: 100vh; display: grid; place-items: center; background: var(--marino); padding: var(--space-4); }
.lock__box { background: var(--surface-raised); border-radius: var(--radius-lg); padding: var(--space-6); width: min(380px, 100%); display: grid; gap: var(--space-4); text-align: center; }
.lock__box img { width: 90px; margin: 0 auto; }
.pin-dots { display: flex; gap: var(--space-3); justify-content: center; }
.pin-dots i { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--border-control); }
.pin-dots i.on { background: var(--primario); border-color: var(--primario); }
.keypad { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-3); }
.keypad button { min-height: 64px; font: 500 24px/1 var(--font-sans); border-radius: var(--radius-md); border: 1.5px solid var(--border-control); background: var(--surface); color: var(--ink); cursor: pointer; }
.lock__err { color: var(--error); font-size: 15px; min-height: 20px; }

/* ---------- Admin ---------- */
.adm { background: var(--azul-suave); min-height: 100vh; }
.adm-nav { background: var(--surface); border-bottom: 1px solid var(--border); padding: var(--space-3) var(--space-4); display: flex; align-items: center; gap: var(--space-4); }
.adm-nav img { height: 44px; }
.adm-nav nav { display: flex; gap: var(--space-1); margin-left: auto; flex-wrap: wrap; }
.adm-nav nav a { text-decoration: none; color: var(--ink); padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); font-size: 15px; }
.adm-nav nav a[aria-current] { background: var(--azul-suave); color: var(--azul-texto); font-weight: 500; }
.adm-main { max-width: 1200px; margin: 0 auto; padding: var(--space-5) var(--space-4) var(--space-8); display: grid; gap: var(--space-5); }
@media (min-width: 900px) { .adm-main { padding: var(--space-6) var(--space-7) var(--space-8); } }
.adm-top { display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: flex-end; justify-content: space-between; }
.adm-top h1 { font: 500 30px/36px var(--font-sans); margin: var(--space-1) 0 0; }
.adm-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: var(--space-4); }
.stat { background: var(--surface-raised); border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-4) var(--space-5); box-shadow: var(--shadow-1); }
.stat b { display: block; font: 600 40px/44px var(--font-sans); }
.stat span { color: var(--ink-muted); font-size: 14px; }
.stat--alert { border-top: 4px solid var(--naranja); }
.panel { background: var(--surface-raised); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-1); overflow: hidden; }
.panel__head { display: flex; gap: var(--space-3); flex-wrap: wrap; align-items: center; justify-content: space-between; padding: var(--space-4) var(--space-5); border-bottom: 1px solid var(--border); }
.panel__head h2 { font: 500 22px/28px var(--font-sans); margin: 0; }
.search { display: flex; gap: var(--space-2); flex: 1; max-width: 420px; }
.search input { flex: 1; font: 400 16px/22px var(--font-sans); padding: var(--space-3) var(--space-4); border: 1.5px solid var(--border-control); border-radius: var(--radius-sm); background: var(--surface-raised); color: var(--ink); min-width: 0; }
table { width: 100%; border-collapse: collapse; font-size: 15px; }
th, td { text-align: left; padding: var(--space-3) var(--space-5); border-bottom: 1px solid var(--border); vertical-align: middle; }
th { font-weight: 500; color: var(--ink-muted); font-size: 13px; letter-spacing: .06em; text-transform: uppercase; }
tbody tr:hover { background: var(--azul-suave); }
td a { font-weight: 500; text-decoration: none; }
.badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 10px; border-radius: var(--radius-pill); font-size: 13px; font-weight: 500; white-space: nowrap; }
.badge--si { background: var(--azul-suave); color: var(--azul-texto); border: 1px solid var(--azul); }
.badge--contacto { background: var(--naranja); color: var(--on-naranja); }
.badge--evento { background: var(--surface); color: var(--ink); border: 1px solid var(--border-control); }
.badge--fam { color: var(--ink-muted); font-weight: 400; }
.muted { color: var(--ink-muted); }
@media (max-width: 720px) {
  table.list, table.list tbody { display: block; }
  table.list thead { display: none; }
  table.list tr { display: flex; flex-wrap: wrap; align-items: center; gap: 6px var(--space-3); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); }
  table.list td { display: block; border: 0; padding: 0; min-width: 0; overflow-wrap: anywhere; }
  table.list td:empty { display: none; }
  table.list td.cell-name { flex: 1 1 100%; order: -1; }
  table.list td.hide-sm { display: none; }
}

/* Persona */
.cols { display: grid; gap: var(--space-5); }
@media (min-width: 900px) { .cols { grid-template-columns: 1.3fr 1fr; align-items: start; } }
.dl { display: grid; grid-template-columns: 180px 1fr; gap: var(--space-3) var(--space-4); padding: var(--space-5); margin: 0; }
.dl dt { color: var(--ink-muted); font-size: 14px; }
.dl dd { margin: 0; }
@media (max-width: 520px) { .dl { grid-template-columns: 1fr; gap: 2px; } .dl dd { margin-bottom: var(--space-3); } }
.timeline { list-style: none; margin: 0; padding: var(--space-4) var(--space-5); display: grid; gap: var(--space-4); }
.timeline li { display: grid; gap: 4px; padding-left: var(--space-4); border-left: 3px solid var(--azul); }
.timeline li.ev { border-left-color: var(--naranja); }
.note { padding: var(--space-4) var(--space-5); border-bottom: 1px solid var(--border); display: grid; gap: 4px; }
.note-form { padding: var(--space-4) var(--space-5); display: grid; gap: var(--space-3); }
.note-form textarea { width: 100%; font: 400 16px/24px var(--font-sans); padding: var(--space-3); border: 1.5px solid var(--border-control); border-radius: var(--radius-sm); background: var(--surface-raised); color: var(--ink); }
.prayer { background: var(--surface-crema); border-radius: var(--radius-sm); padding: var(--space-3) var(--space-4); font-style: italic; }

/* Login */
.login { min-height: 100vh; display: grid; place-items: center; background: var(--azul-suave); padding: var(--space-4); }
.login__box { width: min(400px, 100%); }
.login__box img { height: 56px; display: block; margin: 0 auto var(--space-5); }

/* Reporte imprimible (carta vertical) */
.print-bar { display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); padding: var(--space-3) var(--space-4); background: var(--surface); border-bottom: 1px solid var(--border); position: sticky; top: 0; z-index: 5; }
.paper-stage { background: var(--azul-suave); padding: var(--space-6) var(--space-4); min-height: 100vh; }
.report { width: 8.5in; max-width: 100%; min-height: 11in; margin: 0 auto; background: var(--surface); color: var(--ink); padding: 0.55in; box-shadow: var(--shadow-1); font-family: var(--font-sans); }
.report__head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); border-bottom: 4px solid var(--azul); padding-bottom: var(--space-3); }
.report__head img { height: 54px; }
.report__head h1 { font: 500 28px/32px var(--font-sans); margin: 0; text-align: right; }
.report__head p { margin: 2px 0 0; font-size: 17px; text-align: right; color: var(--ink-muted); }
.report__stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-3); margin: var(--space-4) 0; }
.report__stats div { border: 1.5px solid var(--border); border-radius: var(--radius-md); padding: var(--space-2) var(--space-4); display: flex; align-items: baseline; gap: var(--space-2); }
.report__stats b { font: 600 34px/1 var(--font-sans); }
.report__stats span { font-size: 17px; }
.report__stats .is-alert { border-color: var(--naranja); border-width: 3px; }
.report__table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 16px; line-height: 22px; }
.report__table th { font: 500 13px/16px var(--font-sans); letter-spacing: .06em; text-transform: uppercase; color: var(--ink); background: var(--azul-suave); border-bottom: 2px solid var(--marino); padding: var(--space-2); text-align: left; }
.report__table td { padding: var(--space-3) var(--space-2); border-bottom: 1px solid var(--border); vertical-align: top; }
.report__table tbody tr:nth-child(even) { background: var(--azul-suave); }
.report__table tbody tr:hover { background: inherit; }
.report__table tbody tr:nth-child(even):hover { background: var(--azul-suave); }
.report__table td:first-child { white-space: nowrap; color: var(--ink-muted); }
.report__table strong { font-weight: 600; font-size: 18px; }
.report__table small { display: block; overflow-wrap: anywhere; font-size: 13.5px; line-height: 19px; color: var(--ink-muted); }
.report__table .contact { white-space: nowrap; text-align: center; }
.report__table tr.is-contact .contact { background: color-mix(in srgb, var(--naranja) 30%, var(--surface)); }
.report__table .contact b { font-size: 18px; }
.report__table .box { font-size: 24px; vertical-align: -3px; margin-left: 4px; }
.report__prayer { margin-top: var(--space-6); break-inside: avoid-page; }
.report__prayer h2 { font: 500 22px/28px var(--font-sans); margin: 0 0 var(--space-3); padding-bottom: var(--space-2); border-bottom: 2px solid var(--naranja); }
.report__prayer div { padding: var(--space-2) 0 var(--space-3); border-bottom: 1px solid var(--border); break-inside: avoid; }
.report__prayer strong { font-weight: 600; font-size: 17px; }
.report__prayer p { margin: 2px 0 0; font-size: 17px; line-height: 25px; }
.report__foot { margin-top: var(--space-6); display: flex; justify-content: space-between; gap: var(--space-4); font-size: 13px; color: var(--ink-muted); }
@media (max-width: 720px) {
  .report { padding: var(--space-4); min-height: 0; }
  .report__table thead { display: none; }
  .report__table tr { display: grid; grid-template-columns: 1fr 1fr; gap: 4px var(--space-3); padding: var(--space-3) 0; }
  .report__table td { border: 0; padding: 0; }
}
@page { size: letter portrait; margin: 0.5in; }
@media print {
  .paper-stage { background: none; padding: 0; }
  .report { box-shadow: none; width: auto; min-height: 0; padding: 0; }
  .report__table thead { display: table-header-group; }
  .report__table tr { break-inside: avoid; }
  .report__table tbody tr:nth-child(even), .report__table th, .report__table tr.is-contact .contact { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .no-print { display: none !important; }
}

/* Filtros de búsqueda */
.filters { padding: var(--space-5); display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); align-items: end; }
.filters__q { grid-column: 1 / -1; }
.filters__checks { display: grid; gap: var(--space-2); }
.filters .tc-field input, .filters .tc-field select { min-height: 46px; font-size: 16px; }

/* ---------- Utilidades de la app ---------- */
.logo-dark { display: none !important; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .logo-light { display: none !important; } :root:not([data-theme="light"]) .logo-dark { display: block !important; } }
.nowrap { white-space: nowrap; }
.inline { display: inline; }
.stack { display: grid; gap: var(--space-5); }
.empty { padding: var(--space-6) var(--space-5); color: var(--ink-muted); margin: 0; text-align: center; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.notice { background: var(--surface-raised); border: 1px solid var(--border); border-left-width: 1px; border-top: 4px solid var(--exito); border-radius: var(--radius-md); padding: var(--space-3) var(--space-5); box-shadow: var(--shadow-1); }
.form-errors { border: 1.5px solid var(--error); color: var(--error); background: var(--surface-raised); border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); margin-bottom: var(--space-4); }
.form-errors ul { margin: var(--space-2) 0 0; padding-left: var(--space-5); }
.yn.is-error legend { color: var(--error); }
.members { display: grid; gap: var(--space-4); }
.members:empty { display: none; }
#add-member { justify-self: start; }
.check--end { align-self: end; padding-bottom: 12px; }
.tc-btn--sm { padding: var(--space-2) var(--space-3); font-size: 14px; }
.tc-btn { justify-content: center; }
.badge--ok { color: var(--exito); border: 1px solid var(--exito); }
.lock__title { margin-top: 6px; }
.keypad .is-empty { visibility: hidden; }
.kiosk-bar a { display: inline-block; background: var(--surface); border: 1px solid var(--border); color: var(--ink-muted); border-radius: var(--radius-pill); padding: var(--space-2) var(--space-4); font-size: 13px; text-decoration: none; }
.adm-nav__logo { display: block; line-height: 0; }
.adm-nav nav { align-items: center; }
.nav-btn { background: none; border: 0; font: 400 15px/20px var(--font-sans); color: var(--ink); padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); cursor: pointer; }
.nav-btn:hover, .adm-nav nav a:hover { background: var(--azul-suave); }
a.stat { text-decoration: none; color: inherit; display: block; }
a.stat:hover { border-color: var(--naranja); }
.stats { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
details.panel > summary { cursor: pointer; list-style: none; }
details.panel > summary::-webkit-details-marker { display: none; }
details.panel > summary h2::after { content: " ▾"; color: var(--ink-muted); font-size: 16px; }
details.panel:not([open]) > summary { border-bottom: 0; }
.edit-form { padding: var(--space-5); display: grid; gap: var(--space-4); }
.edit-form .tc-field input, .edit-form .tc-field select { min-height: 46px; font-size: 16px; }
.edit-form > .tc-btn { justify-self: start; }
.inline-form { display: flex; gap: var(--space-2); align-items: center; }
.inline-form input { font: 400 15px/20px var(--font-sans); padding: var(--space-2) var(--space-3); border: 1.5px solid var(--border-control); border-radius: var(--radius-sm); background: var(--surface-raised); color: var(--ink); width: 130px; }
.panel__head .tc-small { display: block; margin-top: 2px; }
.filters__go { display: flex; gap: var(--space-4); align-items: center; }
.note-form > .tc-btn { justify-self: start; }
.report__table td small { display: block; }
.timeline form.inline { margin-left: var(--space-2); }
.timeline .link-btn { padding: 0; }

/* Tarjeta QR imprimible */
.qr-card { width: 6in; max-width: 100%; margin: 0 auto; background: var(--surface); color: var(--ink); border-radius: var(--radius-lg); padding: var(--space-7) var(--space-6); text-align: center; display: grid; gap: var(--space-3); justify-items: center; box-shadow: var(--shadow-1); border-top: 10px solid var(--azul); }
.qr-card__logo { height: 64px; }
.qr-card h1 { font: 500 34px/40px var(--font-sans); margin: 0; }
.qr-card canvas { width: 100%; max-width: 360px; height: auto; }
.qr-card p { margin: 0; font-size: 18px; }
.qr-card__url { font-size: 14px; }
@media print { .qr-card { box-shadow: none; margin-top: 0.5in; } }

/* Ficha: avisos, familia y edición de visitas */
.notice--warn { border-top-color: var(--naranja); }
.notice .inline { margin-left: var(--space-2); }
.family-list { list-style: none; margin: 0; padding: 0; }
.family-list li { display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-5); border-bottom: 1px solid var(--border); }
.family-list li > div { display: grid; }
.family-add { display: block; padding: var(--space-4) var(--space-5); list-style: none; }
.family-add::-webkit-details-marker { display: none; }
.visit-edit > summary { list-style: none; padding: 0; justify-self: start; font-size: 14px; }
.visit-edit > summary::-webkit-details-marker { display: none; }
.visit-edit[open] { border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-3); margin-top: var(--space-2); }
.edit-form--flush { padding: var(--space-3) 0 0; }
.link-btn--danger { color: var(--error); padding: 0; }
.timeline li { min-width: 0; }

/* Reporte: un bloque por familia con todos los datos */
.rgroup { border: 1.5px solid var(--border); border-radius: var(--radius-md); margin-top: var(--space-4); break-inside: avoid; overflow: hidden; }
.rgroup.is-contact { border-color: var(--naranja); border-width: 3px; }
.rgroup__head { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4); background: var(--azul-suave); }
.rgroup__num { flex: none; width: 30px; height: 30px; border-radius: 50%; background: var(--marino); color: var(--surface); display: grid; place-items: center; font-weight: 600; font-size: 15px; }
.rgroup__name { flex: 1; display: grid; }
.rgroup__name strong { font: 600 21px/26px var(--font-sans); }
.rgroup__name span { font-size: 15px; color: var(--ink-muted); }
.rgroup__call { flex: none; font-size: 16px; white-space: nowrap; }
.rgroup.is-contact .rgroup__call { background: color-mix(in srgb, var(--naranja) 35%, var(--surface)); padding: var(--space-1) var(--space-3); border-radius: var(--radius-sm); }
.rgroup__call b { font-size: 17px; letter-spacing: .04em; }
.rgroup__call .box { font-size: 26px; vertical-align: -4px; }
.rgroup__data { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2) var(--space-5); margin: 0; padding: var(--space-3) var(--space-4); font-size: 16px; line-height: 22px; }
.rgroup__data div { display: grid; grid-template-columns: 150px 1fr; gap: var(--space-2); align-items: baseline; }
.rgroup__data .full { grid-column: 1 / -1; grid-template-columns: 1fr; gap: 2px; }
.rgroup__data dt { color: var(--ink-muted); font-size: 14px; }
.rgroup__data dd { margin: 0; overflow-wrap: anywhere; }
.rgroup__data .prayer-text { font-size: 17px; line-height: 25px; background: var(--surface-crema); border-radius: var(--radius-sm); padding: var(--space-2) var(--space-3); }
.rgroup__family { width: 100%; border-collapse: collapse; font-size: 16px; line-height: 22px; border-top: 1px solid var(--border); }
.rgroup__family caption { text-align: left; font: 500 13px/16px var(--font-sans); letter-spacing: .06em; text-transform: uppercase; padding: var(--space-3) var(--space-4) var(--space-1); color: var(--ink); }
.rgroup__family th { text-align: left; font: 500 13px/16px var(--font-sans); color: var(--ink-muted); padding: var(--space-1) var(--space-4); border-bottom: 1px solid var(--border); }
.rgroup__family td { padding: var(--space-2) var(--space-4); border-bottom: 1px solid var(--border); }
.rgroup__family tr:last-child td { border-bottom: 0; }
.rgroup__family td:first-child { padding-left: var(--space-6); }
.rgroup__family strong { font-weight: 600; }
.rgroup__family tbody tr:hover { background: inherit; }
@media (max-width: 720px) {
  .rgroup__data { grid-template-columns: 1fr; }
  .rgroup__data div { grid-template-columns: 130px 1fr; }
}
@media print {
  .rgroup__head, .rgroup__num, .rgroup.is-contact .rgroup__call, .rgroup__data .prayer-text { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .rgroup__family thead { display: table-header-group; }
  .rgroup__family tr { break-inside: avoid; }
}

/* Reporte, página 1: lista para leer en los saludos */
.report + .report { margin-top: var(--space-6); }
.greet__day { font: 500 22px/28px var(--font-sans); margin: var(--space-5) 0 0; padding-bottom: var(--space-2); border-bottom: 2px solid var(--naranja); }
.greet__list { margin: var(--space-4) 0 0; padding: 0; list-style: none; counter-reset: g; }
.greet__list li { counter-increment: g; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px var(--space-3); padding: var(--space-3) 0 var(--space-3) 44px; border-bottom: 1px solid var(--border); position: relative; break-inside: avoid; }
.greet__list li::before { content: counter(g); position: absolute; left: 0; top: var(--space-3); width: 30px; text-align: right; font: 500 18px/34px var(--font-sans); color: var(--ink-muted); }
.greet__name { font: 600 28px/34px var(--font-sans); }
.greet__with { font: 400 22px/30px var(--font-sans); }
.greet__first { font: 600 14px/20px var(--font-sans); letter-spacing: .06em; text-transform: uppercase; background: var(--naranja); color: var(--on-naranja); border-radius: var(--radius-pill); padding: 2px 10px; align-self: center; }
.greet__meta { flex-basis: 100%; font-size: 17px; line-height: 24px; color: var(--ink-muted); }

/* Reporte, página 2+: tabla condensada */
.dense { font-size: 12.5px; line-height: 16px; }
.dense__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px var(--space-4); border-bottom: 3px solid var(--azul); padding-bottom: var(--space-2); margin-bottom: var(--space-2); }
.dense__head strong { font: 600 17px/22px var(--font-sans); }
.dense__head span { color: var(--ink-muted); font-size: 13px; }
.dense__stats { margin-left: auto; color: var(--ink) !important; }
.dense__stats b { font-weight: 600; font-size: 15px; }
.dense__stats .is-alert { background: color-mix(in srgb, var(--naranja) 40%, var(--surface)); padding: 0 6px; border-radius: var(--radius-sm); }
.dense__table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 12.5px; line-height: 16px; }
.dense__table th { text-align: left; font: 600 10.5px/13px var(--font-sans); letter-spacing: .05em; text-transform: uppercase; padding: 4px 5px; background: var(--azul-suave); border-bottom: 1.5px solid var(--marino); }
.dense__table td { padding: 5px; vertical-align: top; overflow-wrap: anywhere; }
.dense__table tbody { border-bottom: 1px solid var(--border); break-inside: avoid; }
.dense__table tbody:nth-of-type(even) { background: var(--azul-suave); }
.dense__table tbody tr:hover { background: inherit; }
.dense__table strong { font-weight: 600; font-size: 13.5px; }
.dense__table small { display: block; font-size: 11px; line-height: 14px; color: var(--ink-muted); }
.dense__table .num { color: var(--ink-muted); font-weight: 600; }
.dense__member { display: block; margin-top: 4px; padding-left: 12px; text-indent: -12px; font-size: 12px; line-height: 15px; }
.dense__member small { display: inline; font-size: 11px; }
.dense__table .call { text-align: center; white-space: nowrap; }
.dense__table tbody.is-contact .call { background: color-mix(in srgb, var(--naranja) 35%, var(--surface)); }
.dense__table .call .box { font-size: 17px; vertical-align: -2px; }
.dense__table .prayer-row td { padding-top: 0; font-size: 12px; line-height: 16px; font-style: italic; }
.dense__table .prayer-row span { font-style: normal; font-weight: 600; color: var(--ink-muted); }
.dense .report__foot { margin-top: var(--space-3); }
@media print {
  .page-break { break-before: page; }
  .report + .report { margin-top: 0; }
  .dense__table thead { display: table-header-group; }
  .greet__first, .dense__table th, .dense__table tbody:nth-of-type(even), .dense__table tbody.is-contact .call, .dense__stats .is-alert { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* Reporte en pantalla de celular: la tabla condensada se vuelve tarjetas (en papel sigue siendo tabla) */
@media screen and (max-width: 720px) {
  .paper-stage { padding: var(--space-3) 0; }
  .report { padding: var(--space-4); }
  .report__head img { height: 40px; }
  .report__head h1 { font-size: 22px; line-height: 28px; }
  .report__head p { font-size: 14px; line-height: 20px; }
  .greet__list li { padding-left: 34px; }
  .greet__list li::before { width: 24px; font-size: 16px; line-height: 30px; }
  .greet__name { font-size: 23px; line-height: 30px; }
  .greet__with { font-size: 19px; line-height: 26px; }
  .greet__meta { font-size: 15px; }
  .dense__stats { margin-left: 0; }
  .dense__table, .dense__table tbody, .dense__table tr, .dense__table td { display: block; width: auto; }
  .dense__table colgroup, .dense__table thead { display: none; }
  .dense__table { font-size: 15px; line-height: 21px; }
  .dense__table tbody { padding: var(--space-3) var(--space-2); }
  .dense__table tr:first-child { display: grid; grid-template-columns: 1fr 1fr; gap: 6px var(--space-3); }
  .dense__table td { padding: 0; }
  .dense__table td.num { display: none; }
  .dense__table td:nth-child(2), .dense__table td:nth-child(3), .dense__table td:nth-child(6) { grid-column: 1 / -1; }
  .dense__table td[data-label]::before { content: attr(data-label); display: block; font-size: 12px; line-height: 16px; color: var(--ink-muted); }
  .dense__table strong { font-size: 17px; }
  .dense__table small { font-size: 13px; line-height: 18px; }
  .dense__member { font-size: 14px; line-height: 20px; margin-top: 6px; }
  .dense__member small { font-size: 12.5px; }
  .dense__table .call { grid-column: 1 / -1; text-align: left; padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); }
  .dense__table tbody:not(.is-contact) .call { display: none; }
  .dense__table .prayer-row td:first-child { display: none; }
  .dense__table .prayer-row td { padding-top: var(--space-2); font-size: 14px; line-height: 20px; }
}

/* Admin en celular: menú en una fila, botones parejos, números lado a lado */
@media (max-width: 720px) {
  .adm-nav { flex-wrap: wrap; gap: var(--space-2); padding: var(--space-2) var(--space-3) 0; }
  .adm-nav img { height: 36px; }
  .adm-nav nav { margin-left: 0; width: 100%; flex-wrap: nowrap; justify-content: space-between; gap: 0; overflow-x: auto; }
  .adm-nav nav a, .nav-btn { padding: var(--space-3) var(--space-2); font-size: 15px; white-space: nowrap; border-radius: 0; }
  .adm-nav nav a[aria-current] { background: none; box-shadow: inset 0 -3px 0 var(--azul-texto); }
  .adm-main { padding-top: var(--space-4); gap: var(--space-4); }
  .adm-top { align-items: stretch; }
  .adm-top h1 { font-size: 26px; line-height: 32px; }
  .adm-top > .adm-actions { display: grid; grid-template-columns: 1fr 1fr; width: 100%; gap: var(--space-2); }
  .adm-top > .adm-actions > *, .adm-top > .adm-actions > form > button { width: 100%; }
  .adm-top > .adm-actions > .tc-btn--primario, .adm-top > .adm-actions > form:has(.tc-btn--primario) { grid-column: 1 / -1; order: -1; }
  .adm-top > .adm-actions > :only-child { grid-column: 1 / -1; }
  .adm-actions .tc-btn { padding: var(--space-3) var(--space-3); }
  .panel__head .adm-actions { display: grid; grid-template-columns: repeat(3, 1fr); width: 100%; gap: var(--space-2); }
  .stats { grid-template-columns: 1fr 1fr; gap: var(--space-3); }
  .stat { padding: var(--space-3) var(--space-4); }
  .stat b { font-size: 32px; line-height: 36px; }
  .panel__head { padding: var(--space-3) var(--space-4); }
  .filters { padding: var(--space-4); }
  .filters__go { flex-wrap: wrap; }
  .dl { padding: var(--space-4); }
  .timeline, .note, .note-form, .edit-form { padding-left: var(--space-4); padding-right: var(--space-4); }
  .family-list li { padding: var(--space-3) var(--space-4); }
  .inline-form input { width: 100%; flex: 1; }
}
