/* ==========================================================================
   Paneles de trabajo: ingreso, control del dueño, lista del planner y panel de la boda.
   Va después de estilos.css (body.trabajo). Dirección editorial: numerales grandes, filetes finos,
   esquinas rectas, una sola línea de acento. Sin íconos en círculos ni etiquetas en mayúsculas.
   ========================================================================== */
body.trabajo { --c-acento: #8A5A2B; --c-acento-txt: #FFFFFF; --c-ok: #2F7A4B; --c-alerta: #A15C00; }
@media (prefers-color-scheme: dark) { body.trabajo { --c-acento: #D9A066; --c-acento-txt: #1A1208; --c-ok: #7CC79A; --c-alerta: #E7B35A; } }
body.trabajo .btn { min-height: 46px; padding: 0 22px; }
body.trabajo .btn.peq { min-height: 38px; padding: 0 14px; }
.serif { font-family: var(--f-serif); font-weight: 400; letter-spacing: -0.01em; }
.it { font-family: var(--f-serif); font-style: italic; font-weight: 400; letter-spacing: 0; }
.mudo { color: var(--c-texto-2); }
.ok-txt { color: var(--c-ok); }
.alerta-txt { color: var(--c-alerta); }
.fila { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.fila.fin { justify-content: flex-end; }
.filete { border: 0; border-top: 1px solid var(--c-linea); margin: 28px 0; }

/* ---------- barra superior ---------- */
.rv-cabeza { position: sticky; top: 0; z-index: 30; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 18px;
  padding: 10px 20px; background: color-mix(in oklab, var(--c-fondo) 92%, transparent); backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--c-linea); }
.rv-marca { display: flex; align-items: baseline; gap: 10px; text-decoration: none; }
.rv-marca img { height: 22px; width: auto; }
.rv-marca span { font-size: .86rem; color: var(--c-texto-2); }
@media (prefers-color-scheme: dark) { .rv-marca img { filter: invert(1) hue-rotate(180deg); } }
.rv-modos { display: flex; gap: 22px; justify-content: center; }
.rv-modos button { background: none; border: 0; padding: 10px 0; color: var(--c-texto-2); font-weight: 500; font-size: .95rem;
  border-bottom: 2px solid transparent; transition: color 160ms ease, border-color 160ms ease; }
.rv-modos button[aria-selected="true"] { color: var(--c-texto); border-bottom-color: var(--c-acento); }
.rv-cuenta { display: flex; gap: 6px; align-items: center; justify-content: flex-end; }
.rv-cuenta .quien { font-size: .85rem; color: var(--c-texto-2); margin-right: 6px; white-space: nowrap; }
@media (max-width: 760px) {
  .rv-cabeza { grid-template-columns: 1fr auto; padding: 8px 14px; gap: 8px; }
  .rv-modos { grid-column: 1 / -1; order: 3; justify-content: flex-start; gap: 18px; overflow-x: auto; scrollbar-width: none; }
  .rv-cuenta .quien { display: none; }
}

/* ---------- portada de la boda ---------- */
.pb { max-width: 1120px; margin: 0 auto; padding: 30px 20px 120px; }
.pb-portada { display: grid; gap: 6px; padding-bottom: 26px; border-bottom: 1px solid var(--c-linea); }
.pb-plan { margin: 0; font-size: .95rem; color: var(--c-texto-2); }
.pb-plan .it { color: var(--c-acento); font-size: 1.05rem; }
.pb-portada h1 { margin: 2px 0 0; font-family: var(--f-serif); font-weight: 380; letter-spacing: -0.025em; font-size: clamp(2.4rem, 6vw, 4rem); line-height: 1; }
.pb-meta { margin: 6px 0 0; color: var(--c-texto-2); }
.pb-avance { display: grid; grid-template-columns: 1fr auto; gap: 14px; align-items: center; margin-top: 18px; max-width: 520px; }
.pb-avance .barra { height: 2px; background: var(--c-linea); position: relative; overflow: hidden; }
.pb-avance .barra i { position: absolute; inset: 0 auto 0 0; background: var(--c-acento); transition: width 400ms var(--ease-out); }
.pb-avance span { font-size: .88rem; color: var(--c-texto-2); white-space: nowrap; }

/* ---------- libro de capítulos (Preparar) ---------- */
.pb-libro { display: grid; grid-template-columns: 270px minmax(0, 1fr); gap: 48px; margin-top: 28px; align-items: start; }
.pb-indice { position: sticky; top: 76px; }
.pb-indice ol { list-style: none; margin: 0; padding: 0; }
.pb-indice li + li { border-top: 1px solid var(--c-linea); }
.pb-indice button { width: 100%; display: grid; grid-template-columns: 40px 1fr auto; gap: 10px; align-items: baseline; padding: 12px 0;
  background: none; border: 0; text-align: left; color: var(--c-texto-2); transition: color 160ms ease; }
.pb-indice button .n { font-family: var(--f-serif); font-style: italic; font-size: 1.15rem; }
.pb-indice button .t { font-size: .95rem; }
.pb-indice button .e { font-size: .78rem; }
.pb-indice button[aria-current="true"] { color: var(--c-texto); }
.pb-indice button[aria-current="true"] .n { color: var(--c-acento); }
.pb-indice button.listo .e { color: var(--c-ok); }
.pb-indice button.no .t, .pb-indice button.no .n { opacity: .5; }
@media (hover: hover) { .pb-indice button:hover { color: var(--c-texto); } }
@media (max-width: 900px) {
  .pb-libro { grid-template-columns: 1fr; gap: 18px; }
  .pb-indice { position: static; }
  .pb-indice ol { display: flex; overflow-x: auto; gap: 18px; scrollbar-width: none; border-bottom: 1px solid var(--c-linea); }
  .pb-indice li + li { border-top: 0; }
  .pb-indice button { grid-template-columns: auto auto; gap: 6px; white-space: nowrap; padding: 10px 0; }
  .pb-indice button .e { display: none; }
}
.pb-capitulo { min-width: 0; }
.pb-num { display: block; font-family: var(--f-serif); font-style: italic; font-weight: 300; font-size: 4.2rem; line-height: .9; color: var(--c-acento); }
.pb-capitulo > h2 { margin: 8px 0 8px; font-family: var(--f-serif); font-weight: 400; font-size: clamp(1.8rem, 3.6vw, 2.4rem); letter-spacing: -0.02em; line-height: 1.08; }
.pb-lead { margin: 0 0 26px; max-width: 62ch; color: var(--c-texto-2); font-size: 1.04rem; line-height: 1.6; }
.pb-bloque { margin: 30px 0 0; padding-top: 22px; border-top: 1px solid var(--c-linea); }
.pb-bloque > h3 { margin: 0 0 6px; font-size: 1.05rem; font-weight: 600; letter-spacing: -0.01em; }
.pb-bloque > p { margin: 0 0 14px; color: var(--c-texto-2); max-width: 64ch; font-size: .95rem; }
.pb-pie { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 36px; padding-top: 18px; border-top: 1px solid var(--c-linea); }
.pb-siguiente { background: none; border: 0; padding: 6px 0; color: var(--c-texto); text-align: right; }
.pb-siguiente small { display: block; color: var(--c-texto-2); font-size: .78rem; }
.pb-siguiente b { font-family: var(--f-serif); font-weight: 400; font-size: 1.2rem; }
.pb-nota { font-size: .86rem; color: var(--c-texto-2); max-width: 62ch; }
.pb-candado { display: grid; gap: 10px; padding: 22px 0; border-top: 1px solid var(--c-linea); border-bottom: 1px solid var(--c-linea); max-width: 62ch; }
.pb-candado .icono { width: 22px; height: 22px; color: var(--c-texto-2); }

/* Campos en dos o tres columnas */
.rejilla { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 24px; }
.rejilla.tres { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 680px) { .rejilla, .rejilla.tres { grid-template-columns: 1fr; } }
.campo .input[type="time"], .campo .input[type="date"] { font-family: var(--f-mono); }

/* Lo que incluye el plan */
.plan-lista { list-style: none; margin: 0; padding: 0; columns: 2 260px; column-gap: 32px; }
.plan-lista li { display: grid; grid-template-columns: 22px 1fr; gap: 10px; padding: 8px 0; break-inside: avoid; font-size: .95rem; }
.plan-lista li .icono { width: 18px; height: 18px; margin-top: 2px; color: var(--c-ok); }
.plan-lista li.fuera { color: var(--c-texto-2); }
.plan-lista li.fuera .icono { color: var(--c-texto-2); }
.plan-lista li small { display: block; color: var(--c-texto-2); font-size: .8rem; }

/* ---------- programa (editor) ---------- */
.prog { display: grid; }
.prog-fila { display: grid; grid-template-columns: 96px 150px minmax(0, 1fr) 190px 40px; gap: 10px; align-items: start; padding: 14px 0; border-bottom: 1px solid var(--c-linea); }
.prog-fila .input { min-height: 42px; padding: 6px 0; font-size: .98rem; }
.prog-fila .input.cuerpo { font-size: .88rem; color: var(--c-texto-2); }
.prog-fila .opciones { display: grid; gap: 6px; font-size: .84rem; }
.prog-fila .opciones label { display: flex; gap: 8px; align-items: center; }
.prog-fila .opciones input { accent-color: var(--c-acento); width: 18px; height: 18px; }
.prog-fila .estado { font-size: .78rem; color: var(--c-texto-2); }
.prog-fila .estado.enviado { color: var(--c-ok); }
@media (max-width: 860px) {
  .prog-fila { grid-template-columns: 90px minmax(0, 1fr) 40px; }
  .prog-fila .tipo { grid-column: 2; }
  .prog-fila .textos { grid-column: 1 / -1; order: 4; }
  .prog-fila .opciones { grid-column: 1 / -1; order: 5; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
}
.seg { display: inline-grid; grid-auto-flow: column; border: 1px solid var(--c-linea-fuerte); }
.seg button { background: none; border: 0; padding: 7px 12px; font-size: .84rem; color: var(--c-texto-2); }
.seg button + button { border-left: 1px solid var(--c-linea-fuerte); }
.seg button[aria-pressed="true"] { background: var(--c-texto); color: var(--c-fondo); }

/* ---------- La noche (en vivo) ---------- */
.vivo { display: grid; gap: 34px; margin-top: 26px; }
.vivo-estado { display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: .9rem; color: var(--c-texto-2); padding-bottom: 16px; border-bottom: 1px solid var(--c-linea); }
.vivo-estado b { color: var(--c-texto); font-family: var(--f-mono); font-weight: 600; }
.punto { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--c-texto-2); margin-right: 6px; vertical-align: 1px; }
.punto.ok { background: var(--c-ok); }
.punto.alerta { background: var(--c-alerta); }
.vivo h2 { margin: 0 0 4px; font-family: var(--f-serif); font-weight: 400; font-size: 1.7rem; letter-spacing: -0.015em; }
.vivo-sub { margin: 0 0 16px; color: var(--c-texto-2); font-size: .92rem; }
.ahora { display: grid; grid-template-columns: auto 1fr auto; gap: 18px 24px; align-items: center; padding: 22px 0; border-top: 2px solid var(--c-acento); border-bottom: 1px solid var(--c-linea); }
.ahora .hora { font-family: var(--f-mono); font-size: 2.4rem; font-weight: 500; letter-spacing: -0.04em; }
.ahora .que b { display: block; font-family: var(--f-serif); font-weight: 400; font-size: 1.7rem; line-height: 1.1; }
.ahora .que span { color: var(--c-texto-2); font-size: .92rem; }
.ahora .btn { min-height: 56px; padding: 0 26px; font-size: 1rem; }
@media (max-width: 700px) { .ahora { grid-template-columns: auto 1fr; } .ahora .acciones { grid-column: 1 / -1; } .ahora .btn { width: 100%; } }
.prog-vivo { display: grid; }
.pv-fila { display: grid; grid-template-columns: 64px 26px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--c-linea); }
.pv-fila .h { font-family: var(--f-mono); font-size: .98rem; }
.pv-fila .icono { width: 20px; height: 20px; color: var(--c-texto-2); }
.pv-fila b { font-weight: 550; display: block; }
.pv-fila small { color: var(--c-texto-2); font-size: .8rem; }
.pv-fila.enviado { color: var(--c-texto-2); }
.pv-fila.enviado b { font-weight: 450; }
.pv-fila.siguiente .icono { color: var(--c-acento); }
.pv-fila.omitido b { text-decoration: line-through; }
.pv-acciones { display: flex; gap: 6px; }

/* Bingo en vivo */
.bingo-ctrl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 26px; align-items: start; }
@media (max-width: 700px) { .bingo-ctrl { grid-template-columns: 1fr; } }
.bola { display: grid; place-items: center; width: 150px; height: 150px; border: 1px solid var(--c-linea-fuerte); }
.bola span { font-family: var(--f-serif); font-style: italic; font-size: 1.3rem; color: var(--c-acento); line-height: 1; }
.bola b { font-family: var(--f-mono); font-size: 3.6rem; font-weight: 500; letter-spacing: -0.05em; line-height: 1; }
.bola small { font-size: .78rem; color: var(--c-texto-2); }
.tablero { display: grid; grid-template-columns: 22px repeat(15, minmax(0, 1fr)); gap: 3px; font-family: var(--f-mono); font-size: .72rem; margin-top: 14px; }
.tablero .l { font-family: var(--f-serif); font-style: italic; font-size: .9rem; color: var(--c-acento); align-self: center; }
.tablero i { font-style: normal; text-align: center; padding: 4px 0; color: var(--c-texto-2); border-bottom: 1px solid transparent; }
.tablero i.si { color: var(--c-texto); border-bottom-color: var(--c-acento); font-weight: 600; }
.ganador-bingo { padding: 16px 0; border-top: 2px solid var(--c-ok); border-bottom: 1px solid var(--c-linea); }
.ganador-bingo b { font-family: var(--f-serif); font-weight: 400; font-size: 1.6rem; }

/* Fotos recientes en vivo */
.mini-fotos { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 6px; }
.mini-fotos figure { margin: 0; position: relative; }
.mini-fotos img { width: 100%; aspect-ratio: 1; object-fit: cover; background: var(--c-superficie-2); }
.mini-fotos figure.apagada img { opacity: .25; }
.mini-fotos button { position: absolute; right: 4px; bottom: 4px; width: 32px; height: 32px; border: 0; border-radius: 50%; background: rgba(0,0,0,.6); color: #fff; display: grid; place-items: center; }
.mini-fotos button .icono { width: 16px; height: 16px; }

/* ---------- listas (control y planner) ---------- */
.rv-pagina { max-width: 1120px; margin: 0 auto; padding: 30px 20px 120px; }
.rv-pagina > h1 { margin: 0; font-family: var(--f-serif); font-weight: 380; font-size: clamp(2.2rem, 5vw, 3.2rem); letter-spacing: -0.025em; }
.rv-lead { margin: 8px 0 0; color: var(--c-texto-2); max-width: 64ch; }
.numeros { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); margin: 28px 0 8px; border-top: 1px solid var(--c-linea); border-bottom: 1px solid var(--c-linea); }
.numeros div { padding: 16px 18px 16px 0; }
.numeros div + div { border-left: 1px solid var(--c-linea); padding-left: 18px; }
.numeros b { display: block; font-family: var(--f-serif); font-weight: 400; font-size: 2.2rem; line-height: 1.05; letter-spacing: -0.02em; }
.numeros span { color: var(--c-texto-2); font-size: .85rem; }
@media (max-width: 560px) { .numeros div + div { border-left: 0; padding-left: 0; border-top: 1px solid var(--c-linea); } }
.pestanas { display: flex; gap: 24px; margin: 30px 0 0; border-bottom: 1px solid var(--c-linea); overflow-x: auto; scrollbar-width: none; }
.pestanas button { background: none; border: 0; padding: 12px 0; color: var(--c-texto-2); font-weight: 500; border-bottom: 2px solid transparent; white-space: nowrap; }
.pestanas button[aria-selected="true"] { color: var(--c-texto); border-bottom-color: var(--c-acento); }
.lista-bodas { display: grid; }
.fila-boda { display: grid; grid-template-columns: 92px minmax(0, 1.5fr) minmax(0, 1fr) 150px auto; gap: 18px; align-items: center; padding: 18px 0; border-bottom: 1px solid var(--c-linea); }
.fila-boda .fecha b { display: block; font-family: var(--f-serif); font-weight: 400; font-size: 2rem; line-height: 1; }
.fila-boda .fecha span { font-size: .8rem; color: var(--c-texto-2); }
.fila-boda .quien b { display: block; font-family: var(--f-serif); font-weight: 400; font-size: 1.3rem; line-height: 1.15; }
.fila-boda .quien small, .fila-boda .meta small { color: var(--c-texto-2); font-size: .82rem; display: block; }
.fila-boda .avance { display: grid; gap: 6px; }
.fila-boda .avance .barra { height: 2px; background: var(--c-linea); position: relative; }
.fila-boda .avance .barra i { position: absolute; inset: 0 auto 0 0; background: var(--c-acento); }
.fila-boda .avance small { font-size: .78rem; color: var(--c-texto-2); }
.fila-boda.pasada { opacity: .62; }
@media (max-width: 860px) {
  .fila-boda { grid-template-columns: 70px minmax(0, 1fr); gap: 10px 14px; }
  .fila-boda .meta, .fila-boda .avance, .fila-boda .acciones { grid-column: 2; }
}
.detalle { padding: 6px 0 24px; border-bottom: 1px solid var(--c-linea); }
.vacio-lista { padding: 40px 0; color: var(--c-texto-2); max-width: 56ch; }
.form-nuevo { padding: 22px 0 8px; border-bottom: 1px solid var(--c-linea); }
.fila-persona { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1.2fr) 140px auto; gap: 16px; align-items: center; padding: 16px 0; border-bottom: 1px solid var(--c-linea); }
.fila-persona b { display: block; font-weight: 550; }
.fila-persona small { color: var(--c-texto-2); font-size: .82rem; display: block; }
@media (max-width: 760px) { .fila-persona { grid-template-columns: 1fr; gap: 6px; } }
.enlace-listo { margin: 14px 0; padding: 16px 0; border-top: 2px solid var(--c-acento); border-bottom: 1px solid var(--c-linea); }

/* ---------- ingreso ---------- */
.entrar { min-height: 100dvh; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 460px); }
.entrar-foto { position: relative; background: #0E0E10 center / cover no-repeat; }
.entrar-foto::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.55)); }
.entrar-foto p { position: absolute; left: 40px; bottom: 36px; right: 40px; z-index: 1; margin: 0; color: #F3EFE8; font-family: var(--f-serif); font-style: italic; font-size: 1.6rem; line-height: 1.25; max-width: 24ch; }
.entrar-caja { display: grid; align-content: center; gap: 4px; padding: 48px 40px; }
.entrar-caja img.logo { height: 26px; width: auto; margin-bottom: 30px; }
@media (prefers-color-scheme: dark) { .entrar-caja img.logo { filter: invert(1) hue-rotate(180deg); } }
.entrar-caja h1 { margin: 0 0 8px; font-family: var(--f-serif); font-weight: 380; font-size: 2.3rem; letter-spacing: -0.02em; line-height: 1.05; }
.entrar-caja .rv-lead { margin: 0 0 26px; }
@media (max-width: 820px) { .entrar { grid-template-columns: 1fr; } .entrar-foto { display: none; } .entrar-caja { padding: 36px 22px; } }

/* ---------- tarjetas de mesa (vista previa, miniaturas e impresión: el mismo dibujo) ----------
   Todo va en unidades de contenedor (cqw): la tarjeta se ve igual a 90 px, a 340 px o a 105 mm. */
.tj { container-type: inline-size; position: relative; box-sizing: border-box; width: min(340px, 100%); aspect-ratio: 105 / 148; overflow: hidden;
  background: var(--tj-fondo); color: var(--tj-texto); font-family: var(--tj-f); text-align: center;
  border: 1px solid color-mix(in srgb, var(--tj-texto) 16%, transparent); -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.tj-f-serif { --tj-f: 'Newsreader', Georgia, serif; }
.tj-f-sans { --tj-f: 'Geist', system-ui, sans-serif; }
.tj-f-condensada { --tj-f: 'Big Shoulders', 'Arial Narrow', sans-serif; }
.tj-f-mono { --tj-f: 'Geist Mono', ui-monospace, monospace; }
.tj-marco { position: absolute; inset: 4cqw; pointer-events: none; }
.tj-m-simple .tj-marco { border: .3cqw solid var(--tj-acento); }
.tj-m-doble .tj-marco { border: .3cqw solid var(--tj-acento); }
.tj-m-doble .tj-marco::after { content: ''; position: absolute; inset: 1.5cqw; border: .3cqw solid var(--tj-acento); }
.tj-marco i { position: absolute; width: 7cqw; height: 7cqw; border: 0 solid var(--tj-acento); }
.tj-marco i:nth-child(1) { top: 0; left: 0; border-top-width: .4cqw; border-left-width: .4cqw; }
.tj-marco i:nth-child(2) { top: 0; right: 0; border-top-width: .4cqw; border-right-width: .4cqw; }
.tj-marco i:nth-child(3) { bottom: 0; left: 0; border-bottom-width: .4cqw; border-left-width: .4cqw; }
.tj-marco i:nth-child(4) { bottom: 0; right: 0; border-bottom-width: .4cqw; border-right-width: .4cqw; }
.tj-in { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2.4cqw; padding: 10cqw 9cqw; }
.tj-m-simple .tj-in, .tj-m-doble .tj-in, .tj-m-esquinas .tj-in { padding: 12cqw 11cqw; }
.tj-m-simple.tj-con-lista .tj-in, .tj-m-doble.tj-con-lista .tj-in, .tj-m-esquinas.tj-con-lista .tj-in { padding: 10cqw 11cqw; }
.tj-in > * { margin: 0; flex: none; }
.tj-deco { display: none; }
.tj-mono { display: flex; align-items: center; gap: 2.5cqw; font-style: italic; font-size: 5cqw; letter-spacing: .04em; color: var(--tj-acento); }
.tj-titulo { font-size: 9cqw; line-height: 1.04; font-weight: 400; letter-spacing: -.015em; overflow-wrap: anywhere; text-wrap: balance; max-width: 100%; }
.tj-qr { width: 42cqw; line-height: 0; flex: none; }
.tj-qr svg { width: 100%; height: auto; display: block; }
.tj-sinqr { display: block; font-size: 3cqw; line-height: 1.3; }
.tj-msj { font-size: 3.8cqw; line-height: 1.4; max-width: 62cqw; text-wrap: balance; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.tj-mesa { display: flex; align-items: baseline; gap: 2cqw; }
.tj-mesa small { font-size: 3.8cqw; }
.tj-mesa b { font-size: 9cqw; font-weight: 400; line-height: 1; font-variant-numeric: lining-nums; }
.tj-mesa.larga b { font-size: 6cqw; }
.tj-pie { font-family: 'Geist Mono', ui-monospace, monospace; font-size: 2.8cqw; color: color-mix(in srgb, var(--tj-texto) 78%, var(--tj-fondo)); overflow-wrap: anywhere; }
/* Nombres de la mesa: se llenan por columnas (la primera mitad a la izquierda) */
.tj-lista { list-style: none; padding: 0; display: grid; grid-auto-flow: column; grid-template-rows: repeat(var(--tj-filas, 1), auto); grid-auto-columns: minmax(0, max-content);
  column-gap: 5cqw; row-gap: .5cqw; justify-content: center; text-align: left; font-size: 3.3cqw; line-height: 1.28; max-width: 100%; }
.tj-lista li { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 40cqw; }
.tj-lista.c1 li { max-width: 62cqw; font-size: 3.8cqw; }
.tj-lista.c3 { column-gap: 3cqw; font-size: 3cqw; }
.tj-lista.c3 li { max-width: 26cqw; }
.tj-con-lista .tj-in { gap: 1.6cqw; }
.tj-con-lista .tj-qr { width: 31cqw; }
.tj-con-lista .tj-titulo { font-size: 7.4cqw; }
.tj-con-lista .tj-msj { -webkit-line-clamp: 2; font-size: 3.4cqw; }
.tj-con-lista .tj-mesa b { font-size: 7.4cqw; }

/* 1 · Clásico marfil: monograma entre dos filetes, título en cursiva */
.tj-clasico .tj-mono::before, .tj-clasico .tj-mono::after { content: ''; width: 8cqw; height: .3cqw; background: var(--tj-acento); }
.tj-clasico .tj-titulo { font-style: italic; }
.tj-clasico .tj-mesa b { font-style: italic; }

/* 2 · Editorial: el número de mesa manda; todo alineado a la izquierda, un filete de lado a lado */
.tj-editorial .tj-in { align-items: flex-start; justify-content: flex-start; text-align: left; padding: 10cqw 9cqw 8cqw; gap: 2.6cqw; }
.tj-editorial .tj-mesa { order: -3; flex-direction: column; align-items: flex-start; gap: 0; }
.tj-editorial .tj-mesa b { font-size: 25cqw; font-weight: 300; font-style: italic; line-height: .85; color: var(--tj-acento); }
.tj-editorial .tj-mesa small { font-size: 3.8cqw; margin-bottom: 2.4cqw; }
.tj-editorial .tj-deco { display: block; order: -2; align-self: stretch; height: 0; border-top: .3cqw solid var(--tj-texto); margin: 1cqw 0 .5cqw; }
.tj-editorial .tj-mono { order: -1; font-style: normal; font-size: 3.6cqw; letter-spacing: .06em; }
.tj-editorial .tj-titulo { font-size: 7.6cqw; text-wrap: pretty; }
.tj-editorial .tj-qr { width: 42cqw; margin-top: 1cqw; }
.tj-editorial .tj-msj { max-width: 70cqw; text-wrap: pretty; }
.tj-editorial .tj-lista { justify-content: start; }
.tj-editorial .tj-pie { margin-top: auto; }
.tj-editorial.tj-sinmesa .tj-titulo { font-size: 10cqw; }
.tj-editorial.tj-con-lista .tj-mesa b { font-size: 11cqw; }
.tj-editorial.tj-con-lista .tj-qr { width: 28cqw; }
.tj-editorial.tj-con-lista .tj-in { padding-top: 8cqw; }
.tj-editorial.tj-con-lista .tj-titulo { font-size: 6.4cqw; }

/* 3 · Marco doble: simetría, rombo entre filetes, título en redonda */
.tj-doble .tj-deco { display: block; order: 1; position: relative; width: 30cqw; height: .3cqw; background: var(--tj-acento); margin: 1cqw 0; }
.tj-doble .tj-deco::after { content: ''; position: absolute; left: 50%; top: 50%; width: 1.8cqw; height: 1.8cqw; background: var(--tj-fondo); border: .3cqw solid var(--tj-acento); transform: translate(-50%, -50%) rotate(45deg); }
.tj-doble .tj-qr, .tj-doble .tj-msj, .tj-doble .tj-mesa, .tj-doble .tj-lista, .tj-doble .tj-pie { order: 2; }
.tj-doble .tj-titulo { font-size: 8.4cqw; letter-spacing: 0; }
.tj-doble .tj-mono { font-size: 4.6cqw; }
.tj-doble.tj-con-lista .tj-deco { margin: 0; }

/* 4 · Minimal: sans, QR grande, casi sin adorno */
.tj-minimal .tj-in { gap: 3.2cqw; }
.tj-minimal .tj-mono { font-style: normal; font-size: 3.4cqw; font-weight: 500; letter-spacing: .08em; color: var(--tj-texto); }
.tj-minimal .tj-titulo { font-size: 5.6cqw; font-weight: 500; letter-spacing: -.02em; line-height: 1.15; }
.tj-minimal .tj-qr { width: 54cqw; }
.tj-minimal .tj-msj { font-size: 3.4cqw; }
.tj-minimal .tj-mesa b { font-size: 5.6cqw; font-weight: 500; }
.tj-minimal .tj-mesa small { font-size: 3.4cqw; }
.tj-minimal.tj-con-lista .tj-qr { width: 38cqw; }
.tj-minimal.tj-con-lista .tj-titulo { font-size: 5cqw; }
.tj-minimal.tj-con-lista .tj-mesa b { font-size: 5cqw; }

/* 5 · Medianoche: fondo oscuro, el QR siempre oscuro sobre una placa clara con un filete dorado alrededor */
.tj-medianoche .tj-deco { display: block; width: 10cqw; height: .3cqw; background: var(--tj-acento); margin-bottom: 1cqw; }
.tj-medianoche .tj-titulo { font-style: italic; font-weight: 300; }
.tj-medianoche .tj-qr { outline: .3cqw solid var(--tj-acento); outline-offset: 1.2cqw; margin: 1.2cqw 0; }
.tj-medianoche .tj-mesa b { color: var(--tj-acento); font-style: italic; font-weight: 300; }
.tj-medianoche .tj-mesa b, .tj-medianoche .tj-titulo { letter-spacing: 0; }

/* 6 · Botánico en tinta: ramas dibujadas a línea arriba y abajo */
.tj-botanico .tj-deco { display: block; width: 44cqw; color: var(--tj-acento); line-height: 0; }
.tj-botanico .tj-deco svg { width: 100%; height: auto; }
.tj-botanico .tj-deco.abajo { transform: rotate(180deg); }
.tj-botanico .tj-titulo { font-style: italic; font-size: 8.6cqw; }
.tj-botanico .tj-mono { font-size: 4.4cqw; }
.tj-botanico .tj-qr { width: 40cqw; }
.tj-botanico.tj-con-lista .tj-deco { width: 30cqw; }
.tj-botanico.tj-con-lista .tj-qr { width: 31cqw; }
.tj-botanico.tj-con-lista .tj-deco.abajo { display: none; }

#impresion { display: none; }
@media print {
  body.imprimiendo > *:not(#impresion) { display: none !important; }
  body.imprimiendo #impresion { display: block !important; }
  #impresion .hoja-imp { break-after: page; display: grid; }
  #impresion .hoja-imp.a6 { width: 105mm; height: 148mm; place-items: center; }
  #impresion .hoja-imp.cuatro { width: 210mm; height: 297mm; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
  #impresion .tj { width: 105mm; height: 148mm; aspect-ratio: auto; border: 0; }
  #impresion .hoja-imp.cuatro .tj { outline: 0.2mm dashed #BBBBBB; outline-offset: -0.1mm; }
}
@page { margin: 0; }

/* Editor de la tarjeta */
.tj-sec { padding: 20px 0 6px; border-top: 1px solid var(--c-linea); }
.tj-sec:first-child { border-top: 0; padding-top: 0; }
.tj-sec > h3 { margin: 0 0 12px; font-family: var(--f-serif); font-weight: 400; font-size: 1.3rem; letter-spacing: -.015em; }
.tj-minis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 14px; margin-bottom: 8px; }
.tj-mini { display: grid; gap: 7px; justify-items: start; padding: 0; background: none; border: 0; color: var(--c-texto); font: inherit; font-size: .84rem; text-align: left; cursor: pointer; min-width: 0; }
.tj-mini .tj { width: 100%; }
.tj-mini[aria-pressed="true"] .tj { box-shadow: 0 0 0 2px var(--c-fondo), 0 0 0 4px var(--c-texto); }
.tj-mini[aria-pressed="true"] span { font-weight: 600; text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.tj-mini:focus-visible { outline: none; }
.tj-mini:focus-visible .tj { box-shadow: 0 0 0 2px var(--c-fondo), 0 0 0 4px var(--c-acento); }
.tj-colores { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 18px; }
.tj-color > label { display: block; font-size: .84rem; margin-bottom: 4px; }
.tj-valor { display: flex; gap: 8px; align-items: stretch; }
.tj-sel { width: 46px; height: 44px; padding: 3px; flex: none; border: 1px solid var(--c-linea-fuerte); background: none; border-radius: 0; cursor: pointer; }
.tj-hex { min-width: 0; font-family: var(--f-mono); font-size: .9rem; }
.tj-hex[aria-invalid="true"] { border-color: var(--c-alerta); }
.tj-estado { margin: 12px 0 10px; font-size: .86rem; line-height: 1.45; color: var(--c-texto-2); max-width: 62ch; }
.tj-estado.alerta { color: var(--c-alerta); }
@media (max-width: 520px) { .tj-colores { grid-template-columns: 1fr; } }
@media (min-width: 901px) { .tarjetas-previa { position: sticky; top: 16px; } }

/* Enlaces de la boda */
.enlaces-lista { display: grid; }
.enlaces-lista > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 14px; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--c-linea); }
.enlaces-lista b { font-weight: 550; }
.enlaces-lista small { display: block; color: var(--c-texto-2); font-size: .82rem; }
.enlaces-lista code { grid-column: 1 / -1; font-family: var(--f-mono); font-size: .82rem; word-break: break-all; color: var(--c-texto); }
.pasos { margin: 0; padding-left: 1.2em; color: var(--c-texto-2); }
.pasos li { margin: 6px 0; }
.pasos li b { color: var(--c-texto); font-weight: 550; }
.lista-ensayo { list-style: none; margin: 0; padding: 0; }
.lista-ensayo li { display: grid; grid-template-columns: 26px 1fr auto; gap: 12px; align-items: start; padding: 16px 0; border-bottom: 1px solid var(--c-linea); }
.lista-ensayo li .icono { width: 22px; height: 22px; color: var(--c-texto-2); margin-top: 1px; }
.lista-ensayo li.hecho .icono { color: var(--c-ok); }
.lista-ensayo li b { display: block; font-weight: 550; }
.lista-ensayo li small { color: var(--c-texto-2); font-size: .86rem; }
.sugerencias { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 4px 0 18px; }
.sugerencias button { background: none; border: 0; padding: 4px 0; color: var(--c-acento-texto); text-decoration: underline; text-underline-offset: 3px; font-size: .9rem; text-align: left; min-height: 36px; }

/* ==========================================================================
   Paquete 4/5: Preparar (9 capítulos), La noche y Después. Solo se agrega: nada de lo anterior cambia.
   ========================================================================== */
/* El acento para texto chico se calcula en el body del panel (en :root tomaría el acento de la app del invitado) */
body.trabajo { --c-acento-texto: var(--c-acento); }
.pb-indice button.falta .e { color: var(--c-alerta); }
@media (max-width: 900px) { .pb-libro { grid-template-columns: minmax(0, 1fr); } .pb-indice { min-width: 0; } }
.pb-capitulo { scroll-margin-top: 128px; }
.pb-capitulo > h2:focus { outline: none; }
.pb-bloque.sin-borde { border-top: 0; padding-top: 0; margin-top: 0; }
.pb-candado.sin-ancho { max-width: 560px; margin: 40px auto; border: 0; }
.pb-candado p { margin: 0; }
.portada-acciones { margin-top: 18px; }
.espacio { margin: 26px 0 8px; font-size: 1.05rem; }
.estado { font-size: .84rem; }

/* Campos de los editores */
.fila-edit { grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr) 84px 44px; }
.fila-preg { display: grid; grid-template-columns: minmax(0, 1fr) 44px; gap: 8px; align-items: center; }
.mono-txt { font-family: var(--f-mono); font-size: .88rem; min-height: 220px; }
/* Capítulo 07: lista de invitados ampliada (mesas, carga de archivo, vista previa) */
.inv-archivo { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); opacity: 0; pointer-events: none; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.inv-acciones { margin: 4px 0 6px; }
.inv-mesas-bloque h3, .inv-vista h3 { font-weight: 400; font-size: 1.25rem; margin: 22px 0 8px; }
.inv-mesas { list-style: none; margin: 0 0 8px; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 0 18px; }
.inv-mesas li { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--c-linea); font-size: .9rem; }
.inv-mesas span { color: var(--c-texto-2); font-variant-numeric: tabular-nums; }
.inv-resumen { font-weight: 550; margin: 0 0 6px; }
.inv-errores { margin: 0 0 10px; padding-left: 18px; color: var(--c-alerta); font-size: .86rem; }
.inv-tabla-cont { overflow-x: auto; max-width: 100%; }
.inv-tabla { border-collapse: collapse; width: 100%; font-size: .86rem; }
.inv-tabla th { text-align: left; font-weight: 500; color: var(--c-texto-2); border-bottom: 1px solid var(--c-linea); padding: 6px 10px 6px 0; white-space: nowrap; }
.inv-tabla td { padding: 6px 10px 6px 0; border-bottom: 1px solid var(--c-linea); max-width: 22ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inv-conservar { margin: 18px 0 8px; }
.inv-conservar small { display: block; margin-top: 2px; }
.tj-pers { margin-left: 2cqw; opacity: .8; }
@media (max-width: 600px) {
  .fila-edit { grid-template-columns: minmax(0, 1fr) 76px 44px; }
  .fila-edit .input.desc { grid-row: 2; grid-column: 1 / -1; }
  .preg-edit .ops { grid-template-columns: 1fr; }
}

/* Programa (editor): la columna de textos con título y mensaje */
.prog-fila .textos { display: grid; gap: 2px; }
.prog-fila .seg { justify-self: start; }
.prog-fila .opciones select.input { min-height: 40px; font-size: .88rem; }

/* Bingo (preparar) */
.fila-ronda { display: grid; grid-template-columns: 30px 170px minmax(0, 1fr) 44px; gap: 12px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--c-linea); }
.fila-ronda .num { font-size: 1.6rem; color: var(--c-acento-texto); text-align: center; }
.fila-ronda .input { min-height: 44px; }
.fila-ronda .estado { color: var(--c-texto-2); text-align: right; }
@media (max-width: 600px) { .fila-ronda { grid-template-columns: 24px minmax(0, 1fr) 44px; } .fila-ronda select.input { grid-column: 2 / -1; } .fila-ronda input.input { grid-column: 2; } }
.ensayo-ronda { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid var(--c-linea); font-size: .94rem; }
.ritmo { display: flex; flex-wrap: wrap; gap: 8px 24px; align-items: end; }
.ritmo .campo { margin: 0; }

/* Estética: paletas y vista previa de la app */
.pb-capitulo .paleta { background: transparent; border-radius: 0; border-color: var(--c-linea); }
.pb-capitulo .paleta[aria-pressed="true"] { border-color: var(--c-texto); }
.pb-capitulo .paleta-muestra { border-radius: 0; }
.estetica { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 32px; align-items: start; }
.estetica-previa { position: sticky; top: 130px; }
.previa-app { --esc: .8; width: calc(375px * var(--esc)); height: calc(700px * var(--esc)); overflow: hidden; border: 1px solid var(--c-linea-fuerte); background: #000; }
.previa-app iframe { width: 375px; height: 700px; border: 0; pointer-events: none; transform: scale(var(--esc)); transform-origin: top left; }
@media (max-width: 900px) {
  .estetica { grid-template-columns: 1fr; gap: 18px; }
  .estetica-previa { position: static; order: -1; }
  .previa-app { --esc: .62; }
  .paletas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Tarjetas */
.tarjetas-editor { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 40px; align-items: start; }
.tarjetas-previa { display: grid; justify-items: center; gap: 8px; }
.previa-tarjeta { width: 100%; display: grid; justify-items: center; }
.previa-tarjeta .tj { box-shadow: 0 12px 30px -18px rgba(0,0,0,.5); }
@media (max-width: 900px) { .tarjetas-editor { grid-template-columns: 1fr; gap: 20px; } .tarjetas-previa { order: -1; } }

/* Hoja de enlaces */
.qr-hoja { display: grid; justify-items: center; margin: 6px 0 14px; }
.hoja .enlaces-lista { margin-top: 10px; }
.hoja .btn.ancho { margin-top: 10px; }
.lista-ensayo .estado { white-space: nowrap; }
.lista-ensayo .fila { margin-top: 10px; }
.lista-ensayo li > div { min-width: 0; }

/* ---------- La noche ---------- */
.vivo section.vv { min-width: 0; }
.vivo-estado > span { display: inline-flex; align-items: baseline; gap: 4px; }
.vivo-estado .punto { align-self: center; }
.ahora .acciones { justify-content: flex-end; }
.pv-fila .btn.peq { min-height: 44px; }
.pv-acciones { flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 520px) {
  .pv-fila { grid-template-columns: 52px 22px minmax(0, 1fr); }
  .pv-fila .pv-acciones { grid-column: 1 / -1; justify-content: flex-start; }
}
.retraso { display: grid; gap: 10px; margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--c-linea); }
.retraso small { display: block; }
.retraso .btn[aria-pressed="true"] { background: var(--c-texto); color: var(--c-fondo); }
.bingo-acciones { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.bingo-acciones .btn { min-height: 56px; }
.ganador-bingo p { margin: 4px 0 0; }
.ritmo-vivo { display: flex; flex-wrap: wrap; gap: 10px 22px; align-items: center; margin-top: 18px; }
.ritmo-seg { display: flex; gap: 10px; align-items: center; }
.ritmo-seg .input { width: 92px; min-height: 44px; }
.form-linea { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 12px; }
.form-linea .input { width: auto; flex: 1 1 200px; max-width: 340px; }
.vivo .btn { min-height: 48px; }
.llegadas-lista { max-height: 420px; overflow: auto; margin-top: 10px; }
.llegadas-lista .toggle { min-height: 56px; cursor: pointer; }
.llegadas-lista .toggle input { width: 26px; height: 26px; }
.llegadas-lista small { display: block; color: var(--c-texto-2); font-size: .82rem; }
.mini-fotos .vacio-fotos { grid-column: 1 / -1; margin: 0; }
.mini-fotos figure { aspect-ratio: 1; }
.mini-fotos .abrir { position: static; display: block; width: 100%; height: 100%; padding: 0; border: 0; border-radius: 0; background: none; }
.mini-fotos .abrir img { height: 100%; }
.mini-fotos .ocultar { width: 40px; height: 40px; right: 2px; bottom: 2px; }
.top { list-style: none; margin: 0 0 16px; padding: 0; }
.top li { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; gap: 10px; align-items: baseline; padding: 11px 0; border-bottom: 1px solid var(--c-linea); }
.top .pos { font-size: 1.5rem; color: var(--c-acento-texto); line-height: 1; }
.top .quien b { display: block; font-weight: 550; }
.top .quien small { color: var(--c-texto-2); font-size: .82rem; }
.top .pts { font-size: .9rem; color: var(--c-texto-2); }
.top-titulo { margin: 22px 0 4px; font-size: 1.02rem; font-weight: 600; }
.podio-lista { display: grid; margin: 12px 0; }
.podio-fila { display: grid; grid-template-columns: minmax(0, 1fr) auto auto auto; gap: 10px 12px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--c-linea); }
.podio-fila small { display: block; color: var(--c-texto-2); font-size: .8rem; }
.podio-fila .fuera, .podio-fila .extra { display: flex; gap: 6px; align-items: center; font-size: .86rem; }
.podio-fila input[type="checkbox"] { width: 22px; height: 22px; accent-color: var(--c-acento); }
.podio-fila .extra .input { width: 74px; min-height: 40px; }
@media (max-width: 520px) { .podio-fila { grid-template-columns: 1fr auto; } .podio-fila .btn { grid-column: 2; } }
/* Barra con el aviso principal al alcance del pulgar (solo celular) */
.barra-accion { display: none; }
@media (max-width: 760px) {
  .barra-accion { display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 25; padding: 10px 14px calc(10px + var(--seguro-abajo)); background: var(--c-fondo); border-top: 1px solid var(--c-linea-fuerte); }
  .barra-accion .btn { white-space: normal; text-align: left; justify-content: flex-start; min-height: 52px; line-height: 1.2; }
  body.trabajo .aviso { bottom: calc(86px + var(--seguro-abajo)); }
}
body.imprimiendo .barra-accion { display: none; }

/* ---------- Después ---------- */
.despues .grande { margin: 0; font-size: clamp(1.9rem, 4vw, 2.6rem); line-height: 1.1; }
.despues .vivo-sub { margin-top: 6px; }
.despues .mod-grid figure { background: none; border: 0; border-radius: 0; }
.despues .mod-grid img { aspect-ratio: 1; }
.firmas-lista { display: grid; margin-bottom: 14px; }
.firma { padding: 12px 0; border-bottom: 1px solid var(--c-linea); }
.firma p { margin: 0 0 4px; font-family: var(--f-serif); font-style: italic; font-size: 1.1rem; line-height: 1.4; }
.firma small { color: var(--c-texto-2); }
.firma.oculta { opacity: .45; }

@media (prefers-reduced-motion: reduce) { .pb-avance .barra i { transition: none; } }

/* ==========================================================================
   Paquetes 2 y 3: "Mis bodas" y "Control" (solo clases nuevas o ajustes de contraste; el resto se reutiliza)
   ========================================================================== */
/* Choque de nombres: estilos.css usa ".barra" para la cabecera fija de la app del invitado (sticky, con margen y relleno).
   En los paneles ".barra" es la barra de avance de 2 px: se anula lo heredado. */
.pb-avance .barra, .fila-boda .avance .barra { position: relative; top: auto; z-index: auto; display: block; margin: 0; padding: 0;
  border-bottom: 0; -webkit-backdrop-filter: none; backdrop-filter: none; background: var(--c-linea-fuerte); }
.fila-boda .avance .barra i { transition: width 400ms var(--ease-out); }
.rv-sec { margin: 40px 0 4px; font-family: var(--f-serif); font-weight: 400; font-size: 1.6rem; letter-spacing: -0.015em; }
.lista-bodas { list-style: none; margin: 0; padding: 0; }
.fila-boda .acciones { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; align-items: center; }
.fila-boda .meta b { display: block; font-weight: 550; }
.fila-boda small.alerta-txt, .fila-persona small.alerta-txt { color: var(--c-alerta); }
.fila-boda small.ok-txt { color: var(--c-ok); }
.fila-boda.hoy { border-top: 2px solid var(--c-acento); }
.fila-boda.hoy .fecha b { color: var(--c-acento); }
/* Las pasadas se atenúan con el color secundario, no con opacidad: el texto sigue cumpliendo el contraste AA */
.fila-boda.pasada { opacity: 1; }
.fila-boda.pasada .fecha b, .fila-boda.pasada .quien b { color: var(--c-texto-2); }
@media (min-width: 861px) { .fila-boda { grid-template-columns: 92px minmax(0, 1.5fr) minmax(0, 1fr) 190px 250px; } } /* columnas iguales en todas las listas */
@media (max-width: 860px) { .fila-boda .acciones { justify-content: flex-start; } }
/* El archivo logo.svg ya es marfil (para fondos oscuros): en modo claro se invierte, en oscuro se deja como está */
.rv-marca img, .entrar-caja img.logo { filter: invert(1) hue-rotate(180deg); }
@media (prefers-color-scheme: dark) { .rv-marca img, .entrar-caja img.logo { filter: none; } }

/* Barra de herramientas sobre una lista (título a la izquierda, acción a la derecha) */
.rejilla { align-items: start; }
.enlace-listo, .detalle, .form-nuevo { scroll-margin-top: 72px; }
.enlace-listo:focus { outline: none; } /* es un destino de foco para lectores de pantalla, no un control */
.herramientas { display: flex; justify-content: space-between; align-items: end; gap: 14px; flex-wrap: wrap; margin: 26px 0 0; }
.herramientas p { margin: 0; color: var(--c-texto-2); max-width: 60ch; font-size: .95rem; }
.pestanas button:focus-visible, .rv-modos button:focus-visible { outline-offset: -2px; }

/* Formularios del control */
.form-nuevo h2, .detalle h3 { margin: 0 0 14px; font-family: var(--f-serif); font-weight: 400; font-size: 1.5rem; letter-spacing: -0.015em; }
.form-nuevo fieldset, .detalle fieldset { border: 0; margin: 0 0 8px; padding: 0; min-width: 0; }
.form-nuevo legend, .detalle legend { padding: 0; margin: 0 0 8px; font-weight: 600; font-size: .95rem; }
.sub-form { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--c-linea); }
.pie-form { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin: 18px 0 20px; }
.checks-planners .check { margin: 0 0 12px; }

/* Bandeja: reclamos y solicitudes */
.item-bandeja { padding: 20px 0; border-bottom: 1px solid var(--c-linea); display: grid; gap: 6px; max-width: 78ch; }
.item-bandeja h3 { margin: 0; font-size: 1.02rem; font-weight: 600; }
.item-bandeja p { margin: 0; }
.item-bandeja .dato { font-size: .9rem; color: var(--c-texto-2); }
.item-bandeja .texto { white-space: pre-wrap; overflow-wrap: anywhere; }
.item-bandeja textarea { margin-top: 6px; }
.item-bandeja .btn { justify-self: start; margin-top: 6px; }

/* Impresión de tarjetas: estilos.css trae una regla antigua (body * oculto al imprimir) que dejaba la hoja en blanco.
   Aquí se devuelve la visibilidad a la hoja de impresión del panel. */
@media print {
  body.imprimiendo #impresion, body.imprimiendo #impresion * { visibility: visible !important; }
  body.imprimiendo #impresion { position: absolute; top: 0; left: 0; width: 100%; }
}

/* ---------- Boda de ejemplo y candados según el plan ---------- */
.rv-ejemplo { padding: 9px 20px; background: var(--c-texto); color: var(--c-fondo); font-size: .9rem; text-align: center; line-height: 1.4; }
.rv-ejemplo[hidden] { display: none; }
.rv-ejemplo b { font-weight: 600; }
.fila-boda .etiqueta-ejemplo { color: var(--c-acento); font-style: italic; font-family: var(--f-serif); }
.vv.bloqueada .pb-candado { grid-template-columns: 22px minmax(0, 1fr); column-gap: 14px; row-gap: 2px; max-width: 70ch; padding: 16px 0; }
.vv.bloqueada .pb-candado .icono { grid-row: 1 / span 2; margin-top: 2px; }
.vv.bloqueada h2 { color: var(--c-texto-2); }
.vivo-estado .bloq { display: inline-flex; align-items: center; gap: 6px; }
.vivo-estado .bloq .icono { width: 14px; height: 14px; }
.pb-indice button .t .icono { width: 13px; height: 13px; margin-left: 6px; vertical-align: -1px; }
.lista-ensayo li.fuera b, .lista-ensayo li.fuera .estado { color: var(--c-texto-2); }
.nota-plan-planner { margin: 6px 0 0; max-width: 62ch; font-size: .88rem; color: var(--c-texto-2); }
.sub-form.plan-planners { margin-top: 0; padding-top: 0; border-top: 0; }

/* Control: pestaña Consumo y aviso de pausa */
.aviso-pausa { margin: 24px 0 0; padding: 12px 0; border-top: 2px solid var(--c-error); border-bottom: 1px solid var(--c-linea); font-size: .95rem; }
.aviso-pausa[hidden] { display: none; }
.aviso-pausa .enlace { background: none; border: 0; padding: 4px 0; color: var(--c-texto); text-decoration: underline; text-underline-offset: 3px; font: inherit; min-height: 32px; }
.consumo-estado { margin: 22px 0 0; padding: 16px 0; border-top: 2px solid var(--c-ok); border-bottom: 1px solid var(--c-linea); }
.consumo-estado.nivel-alto { border-top-color: var(--c-alerta); }
.consumo-estado.nivel-tope { border-top-color: var(--c-error); }
.consumo-estado b { font-family: var(--f-serif); font-weight: 400; font-size: 1.5rem; line-height: 1.2; display: block; }
.consumo-estado p { margin: 6px 0 0; max-width: 66ch; font-size: .93rem; }
.consumo-bloqueo { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; margin: 16px 0 0; }
.consumo-bloqueo[hidden] { display: none; }
.consumo-nota { margin: 16px 0 0; max-width: 66ch; font-size: .9rem; }
.consumo-lista { list-style: none; margin: 8px 0 0; padding: 0; }
.consumo-fila { padding: 20px 0; border-bottom: 1px solid var(--c-linea); display: grid; gap: 6px; max-width: 760px; }
.consumo-fila .cab { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 16px; }
.consumo-fila h3 { margin: 0; font-size: 1.05rem; font-weight: 550; }
.consumo-fila .que { margin: 0; color: var(--c-texto-2); font-size: .9rem; max-width: 64ch; }
.consumo-fila .cifras { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 14px; margin-top: 4px; }
.consumo-fila .usado { font-family: var(--f-mono); font-size: .92rem; }
.consumo-fila .pct { font-family: var(--f-serif); font-weight: 400; font-size: 1.6rem; line-height: 1; }
.consumo-fila .est { font-size: .88rem; color: var(--c-texto-2); }
.nivel-alto .est, .nivel-tope .est { color: var(--c-texto); font-weight: 600; }
.barra-consumo { height: 6px; background: var(--c-linea); position: relative; overflow: hidden; margin-top: 4px; }
.barra-consumo i { position: absolute; inset: 0 auto 0 0; background: var(--c-ok); transition: width 400ms var(--ease-out); }
.nivel-alto .barra-consumo i { background: var(--c-alerta); }
.nivel-tope .barra-consumo i { background: var(--c-error); }
@media (prefers-reduced-motion: reduce) { .barra-consumo i { transition: none; } }
.consumo-editar { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; align-items: flex-start; }
.consumo-form { flex: 1 1 100%; display: grid; gap: 8px; max-width: 420px; padding-top: 6px; }
.consumo-form[hidden] { display: none; }
