/* RSJ · plantillas v3 · hoja de la página de contacto (plantilla «contacto» v1.0, paquete rsj_plantilla_contacto_v1.0, aprobada por Miguel el 20/10/2026).
   Los módulos van tal cual de la biblioteca (D9) y después la maquetación de la plantilla (.pc-). Tokens, base, header, footer y
   contacto-whatsapp están en comun.css. Los módulos no se cambian aquí: se piden al «Gestor de módulos». */
/* ===== biblioteca: breadcrumbs (sin cambios) ===== */
/* RSJ · breadcrumbs (migas de pan) · v1.0 (validado por Miguel el 08/10/2026). Biblioteca de módulos. Ficha v0.4. Texto 14 en text-muted, la página actual
   en ink; separador «/» decorativo. Si no cabe en móvil, pasa a la línea siguiente. El JSON-LD BreadcrumbList lo genera el servidor. */
.m-migas{padding-block:var(--s-16);font-size:var(--fs-aux)}
.m-migas ol{display:flex;flex-wrap:wrap;gap:var(--s-8);margin:0;padding:0;list-style:none}
.m-migas li{display:flex;gap:var(--s-8);color:var(--color-text-muted)}
.m-migas li+li::before{content:"/";color:var(--color-border-strong)}
.m-migas a{display:inline-flex;align-items:center;min-height:var(--h-touch-min);margin-block:calc(-1*var(--s-12));color:var(--color-text-muted)}
.m-migas a:hover{color:var(--color-ink)}
.m-migas [aria-current]{color:var(--color-ink);font-weight:var(--fw-medium)}
/* ===== biblioteca: estado-campanas (sin cambios) ===== */
/* RSJ · estado-campanas · v1.0-rc (19/10/2026). Biblioteca de módulos. Petición del chat «Página de contacto» (CT1, CT2).
   Lista corta de campañas con su luz de estado y enlace a su portada, con los MISMOS datos del calendario que el header (BP5):
   la actual, después otras abiertas («pedidos hasta el…»), después la siguiente en abrir («abre en…»). Nunca «siempre abierta»
   ni cerradas. Número máximo de líneas como dato (data-max). Sin líneas, el módulo no sale. Sin color de campaña (regla 15). */
.m-estado-camp{display:grid;gap:var(--s-4);padding:var(--s-12) var(--s-16);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-soft);max-width:760px}
.m-estado-camp[hidden]{display:none}
.m-estado-camp__t{margin:0;font-size:var(--fs-badge);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}
.m-estado-camp ul{margin:0;padding:0;list-style:none;display:grid;gap:var(--s-4)}
.m-estado-camp a{display:inline-flex;align-items:baseline;gap:var(--s-8);min-height:var(--h-touch-min);font-size:var(--fs-aux);font-weight:var(--fw-semibold);color:var(--color-ink);text-decoration:none}
.m-estado-camp a:hover{text-decoration:underline;text-underline-offset:3px}
.m-estado-camp a:focus-visible{outline:2px solid var(--color-action);outline-offset:2px}
.m-estado-camp .st{font-weight:var(--fw-medium);color:var(--color-text-muted)}
.m-estado-camp__luz{flex:none;align-self:center;width:var(--status-dot);height:var(--status-dot);margin-inline:var(--s-4);border-radius:50%;background:var(--color-status-on);box-shadow:0 0 0 var(--status-halo) var(--color-status-on-halo)}
.m-estado-camp__luz--prox{background:transparent;border:2px solid var(--color-text-muted);box-shadow:none}
/* ===== biblioteca: formulario (sin cambios) ===== */
/* RSJ · formulario · v1.0-rc (19/10/2026), variante «contacto». Biblioteca de módulos. Petición del chat «Página de contacto».
   Pastillas de una opción para el motivo; campos que salen según el motivo (data-mostrar-si); móvil o correo (al menos uno);
   información de protección de datos y casilla; campo trampa para robots; campos y mensajes de «base» (.field, .input, .field__err,
   .msg). Pastilla marcada en gris (text-muted), como los filtros (libro §8.3). */
.m-form{display:grid;gap:var(--s-24);padding:var(--s-24);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}
.m-form h2{font-size:var(--fs-h2)}
.m-form form{display:grid;gap:var(--s-16);max-width:640px}
.m-form fieldset{margin:0;padding:0;border:0;min-width:0}
.m-form legend{margin-bottom:var(--s-8);padding:0;font-size:var(--fs-aux);font-weight:var(--fw-semibold)}
.m-form__ops{display:flex;flex-wrap:wrap;gap:var(--s-8)}
.m-form__op{position:relative;display:inline-flex;align-items:center;min-height:var(--h-touch-min);padding:0 var(--s-16);border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);font-size:var(--fs-aux);font-weight:var(--fw-semibold);cursor:pointer}
.m-form__op input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.m-form__op:has(input:checked){background:var(--color-text-muted);border-color:var(--color-text-muted);color:var(--color-surface)}
.m-form__op:has(input:focus-visible){outline:2px solid var(--color-action);outline-offset:2px}
.m-form__fila{display:grid;gap:var(--s-16);align-items:start}
@media (min-width:768px){.m-form__fila{grid-template-columns:1fr 1fr}}
.m-form select.input{appearance:auto}
.m-form textarea.input{min-height:140px;resize:vertical;line-height:var(--lh-body)}
.m-form__check{display:flex;gap:var(--s-8);align-items:flex-start;font-size:var(--fs-aux)}
.m-form__check input{flex:none;width:20px;height:20px;margin-top:2px;accent-color:var(--color-action)}
.m-form__rgpd{padding:var(--s-12) var(--s-16);border-radius:var(--radius-sm);background:var(--color-surface-soft);font-size:var(--fs-badge);line-height:1.5;color:var(--color-text-muted)}
.m-form__rgpd b{color:var(--color-ink)}
.m-form__trampa{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.m-form .btn{justify-self:stretch}
@media (min-width:768px){.m-form .btn{justify-self:start}}
.m-form [hidden]{display:none!important}
/* ===== biblioteca: faqs (sin cambios) ===== */
/* RSJ · faqs (B03, + acordeón) · v1.0 (validado por Miguel el 08/10/2026). Biblioteca de módulos. <details>/<summary> nativos: sin JS, accesibles y
   todo el texto en el HTML (bueno para buscadores). Home v0.12: punto de marca a la izquierda, chevron-down de Lucide a la derecha,
   abierta con fondo surface-soft y filete de marca. Animación de 150 ms solo donde el navegador sabe animar la altura. */
.m-faqs{border-top:1px solid var(--color-border)}
.m-faqs__p{border-bottom:1px solid var(--color-border)}
.m-faqs__p summary{position:relative;min-height:var(--h-touch-min);padding:var(--s-16) var(--s-48) var(--s-16) var(--s-32);font-weight:var(--fw-semibold);list-style:none;cursor:pointer}
.m-faqs__p summary::-webkit-details-marker{display:none}
.m-faqs__p summary::before{content:"";position:absolute;left:var(--s-12);top:calc(var(--s-16) + .6em);width:var(--s-8);height:var(--s-8);border-radius:50%;background:var(--color-brand-600)}
.m-faqs__p summary svg{position:absolute;right:var(--s-12);top:calc(var(--s-16) + .1em);width:var(--icon-sm);height:var(--icon-sm);color:var(--color-brand-600);transition:transform 150ms var(--ease)}
.m-faqs__p[open]{background:var(--color-surface-soft);box-shadow:inset 3px 0 0 var(--color-brand-600)}
.m-faqs__p[open] summary svg{transform:rotate(180deg)}
.m-faqs__r{padding:0 var(--s-48) var(--s-16) var(--s-32)}
.m-faqs__r p{max-width:75ch}
@supports (interpolate-size:allow-keywords){.m-faqs{interpolate-size:allow-keywords}.m-faqs__p::details-content{block-size:0;overflow:hidden;transition:block-size 150ms var(--ease),content-visibility 150ms allow-discrete}.m-faqs__p[open]::details-content{block-size:auto}}
@media (prefers-reduced-motion:reduce){.m-faqs__p summary svg{transition:none}.m-faqs__p::details-content{transition:none}}
/* ===== plantilla: contacto (sin cambios) ===== */
/* RSJ · plantilla «contacto» (corporativa) · v1.0, aprobada por Miguel el 20/10/2026. Solo maquetación de la página (prefijo .pc-),
   solo tokens del libro. Los módulos van con su propio CSS, tal cual de la biblioteca. */
.pc-head{padding-block:var(--s-32) var(--s-24)}
.pc-head h1{margin-top:var(--s-8)}
.pc-head__lead{margin-top:var(--s-12);max-width:60ch;font-size:var(--fs-h3);line-height:1.45;color:var(--color-text-muted)}
.pc-canal{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-12) var(--s-24);margin-top:var(--s-24)}
.pc-canal__hor{font-size:var(--fs-aux);color:var(--color-text-muted)}
.pc-aviso{margin-top:var(--s-16);max-width:760px}
/* Bloques por motivo */
.pc-motivos{display:grid;gap:var(--s-16);margin:0;padding:0;list-style:none}
.pc-mot{display:flex;flex-direction:column;gap:var(--s-12);height:100%;padding:var(--s-24);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}
.pc-mot--destacado{border:2px solid var(--color-action)}
.pc-mot h2{font-size:var(--fs-h3);line-height:var(--lh-h3)}
.pc-mot>p{color:var(--color-text-muted);font-size:var(--fs-aux)}
.pc-mot__acc{display:flex;flex-direction:column;gap:var(--s-8);margin-top:auto;padding-top:var(--s-8)}
.pc-mot__acc .btn,.pc-mot__acc .m-wa{width:100%;justify-content:center}
.pc-mot__lista{display:grid;margin:0;padding:0;list-style:none}
.pc-mot__lista a,.pc-mot__lista button{display:flex;align-items:center;justify-content:space-between;gap:var(--s-12);width:100%;min-height:var(--h-touch-min);padding:var(--s-8) 0;border:0;border-bottom:1px solid var(--color-border);background:none;font-size:var(--fs-aux);font-weight:var(--fw-semibold);color:var(--color-ink);text-align:left;text-decoration:none;cursor:pointer}
.pc-mot__lista li:last-child a,.pc-mot__lista li:last-child button{border-bottom:0}
.pc-mot__lista a:hover,.pc-mot__lista button:hover{color:var(--color-action)}
.pc-mot__lista svg{width:var(--icon-sm);height:var(--icon-sm);flex:none;color:var(--color-text-muted)}
@media (min-width:768px){.pc-motivos{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-24)}}
.pc-dos{display:grid;gap:var(--s-48)}
@media (min-width:1024px){.pc-dos{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--s-64);align-items:start}}
.pc-empresa{padding:var(--s-24);border-radius:var(--radius-md);background:var(--color-surface-soft);font-size:var(--fs-aux)}
.pc-empresa h2{font-size:var(--fs-h3);margin-bottom:var(--s-12)}
.pc-empresa dl{display:grid;grid-template-columns:max-content 1fr;gap:var(--s-8) var(--s-16);margin:0}
.pc-empresa dt{font-weight:var(--fw-semibold);color:var(--color-text-muted)}
.pc-empresa dd{margin:0}
.pc-nota{font-size:var(--fs-badge);color:var(--color-text-muted)}
/* v0.2 · Cabecera en dos columnas desde 1024: contacto 2/3, campañas 1/3 (Miguel, 19/10/2026), con la rejilla de los bloques */
.pc-head{display:grid;gap:var(--s-24)}
@media (min-width:1024px){.pc-head{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--s-24);align-items:end}.pc-head__main{grid-column:span 2}}
.pc-mot>p{margin:0}

/* v0.3 · Miguel, 19/10/2026 */
.pc-head{padding-bottom:var(--s-32);margin-bottom:var(--s-32);border-bottom:1px solid var(--color-border)}
.pc-canal__rapido{margin-top:var(--s-24);font-weight:var(--fw-semibold)}
.pc-canal{margin-top:var(--s-12)}
@media (min-width:768px){.pc-motivos>li:nth-child(3){order:-1}} /* «Otros motivos» a la izquierda; en móvil, el pedido sigue primero */
.pc-form-wrap{max-width:800px;margin-inline:auto}
