/* Sitio público y páginas de acceso (HTML estático) */
.sitio-ancho { width: min(1180px, 100% - 40px); margin-inline: auto; }
.sitio-cab { position: sticky; top: 0; z-index: 30; background: color-mix(in srgb, var(--papel) 90%, transparent); backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid var(--filete); }
.sitio-cab-fila { display: flex; align-items: center; justify-content: space-between; min-height: 72px; gap: 1rem; }
.sitio-marca { display: flex; align-items: center; gap: .7rem; text-decoration: none; color: var(--tinta); }
.sitio-marca b { display: block; font: 600 1.2rem/1.1 var(--serif); }
.sitio-marca small { display: block; font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--oro-2); margin-top: 2px; }
.sitio-nav { display: flex; align-items: center; gap: 1.6rem; }
.sitio-nav a:not(.btn) { color: var(--texto); text-decoration: none; font-size: 14.5px; font-weight: 500; position: relative; }
.sitio-nav a:not(.btn)::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -6px; height: 1px; background: var(--oro); transition: right .2s; }
.sitio-nav a:not(.btn):hover::after { right: 0; }
.sitio-hamburguesa { display: none !important; }
.menu-movil-check { position: absolute; opacity: 0; pointer-events: none; }
@media (max-width: 1080px) {
    .sitio-hamburguesa { display: inline-grid !important; }
    .sitio-nav { position: absolute; top: 72px; left: 0; right: 0; flex-direction: column; align-items: stretch; gap: 0; background: var(--superficie); border-bottom: 1px solid var(--filete); box-shadow: var(--sombra-alta); padding: .5rem 20px 1rem; display: none; }
    .sitio-nav a:not(.btn) { padding: .8rem 0; border-bottom: 1px solid var(--filete); }
    .sitio-nav .btn { margin-top: .8rem; }
    .menu-movil-check:checked ~ .sitio-nav { display: flex; }
}
.sitio-pie { margin-top: 4rem; background: #0f2a44; color: #c7d2de; padding: 3.5rem 0 1.5rem; }
:root[data-theme="dark"] .sitio-pie { background: #08121d; }
.sitio-pie .sitio-marca { color: #fff; } .sitio-pie .sitio-marca small { color: #c9a46a; }
.sitio-pie .sello-marca { color: #c9a46a; border-color: #c9a46a; }
.sitio-pie-rejilla { display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 2rem; }
.sitio-pie h4 { color: #fff; font-size: .95rem; margin-bottom: .9rem; }
.sitio-pie a:not(.sitio-marca) { display: block; color: #aebccc; text-decoration: none; font-size: 14px; padding: .22rem 0; }
.sitio-pie a:hover { color: #fff; }
.sitio-pie .tenue { color: #8aa0b8; font-size: 14px; margin-top: 1rem; max-width: 34ch; }
.sitio-pie-legal { display: grid; gap: .5rem; margin-top: 2.5rem; padding-top: 1.25rem; border-top: 1px solid rgba(176, 141, 87, .25); font-size: 12px; color: #8aa0b8; }
@media (max-width: 820px) { .sitio-pie-rejilla { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .sitio-pie-rejilla { grid-template-columns: minmax(0, 1fr); } }

/* Acceso (entrar, registro, recuperar, invitación) */
.acceso { display: grid; grid-template-columns: minmax(0, 520px) minmax(0, 1fr); gap: 0; min-height: calc(100vh - 72px); }
.acceso-ancho { grid-template-columns: minmax(0, 760px) minmax(0, 1fr); }
.acceso-panel { padding: clamp(2rem, 6vw, 4.5rem) clamp(1.25rem, 5vw, 4rem); background: var(--superficie); border-right: 1px solid var(--filete); }
.acceso-caja { max-width: 560px; margin: 12vh auto; background: var(--superficie); border: 1px solid var(--filete); border-top: 3px solid var(--oro); padding: 2.5rem; }
.acceso-form { margin-top: 1.5rem; }
.acceso-ligas { margin-top: 1.25rem; font-size: 14px; }
.acceso-nota { margin-top: 2rem; font-size: 12.5px; color: var(--texto-3); display: flex; gap: .45rem; align-items: center; }
.acceso-lado { position: relative; display: flex; flex-direction: column; justify-content: center; padding: 4rem; background: #0f2a44; color: #d9e1ea; overflow: hidden;
               background-image: repeating-linear-gradient(0deg, transparent 0 31px, rgba(176, 141, 87, .08) 31px 32px); }
.acceso-lado blockquote { margin: 0 0 2rem; font: italic 1.55rem/1.45 var(--serif); color: #f3ead9; max-width: 30ch; border-left: 2px solid #c9a46a; padding-left: 1.25rem; }
.acceso-lado cite { display: block; margin-top: 1rem; font: normal 12px/1.3 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: #c9a46a; }
.acceso-lado ul { list-style: none; padding: 0; margin: 0; }
.acceso-lado li { padding: .55rem 0 .55rem 1.6rem; position: relative; border-bottom: 1px solid rgba(255, 255, 255, .08); max-width: 40ch; }
.acceso-lado li::before { content: "§"; position: absolute; left: 0; color: #c9a46a; font-family: var(--serif); }
@media (max-width: 900px) { .acceso, .acceso-ancho { grid-template-columns: minmax(0, 1fr); } .acceso-lado { display: none; } .acceso-panel { border-right: 0; } }
.btn-bloque { width: 100%; }
.codigo-grande { font-size: 1.4rem !important; letter-spacing: .3em; text-align: center; }
.mayusculas { text-transform: uppercase; }
.casilla-separada { margin: .6rem 0 1.2rem; }

/* Demo */
.demo-pagina { padding: 3.5rem 0 1rem; }
.pag-desc { color: var(--texto-2); max-width: 72ch; }
.demo-opciones { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.25rem; margin: 2rem 0; }
.demo-tarjeta { background: var(--superficie); border: 1px solid var(--filete); border-top: 3px solid var(--tinta); padding: 1.75rem; display: flex; flex-direction: column; gap: .2rem; box-shadow: var(--sombra); transition: transform .15s, border-color .15s; }
.demo-tarjeta:hover { transform: translateY(-3px); border-top-color: var(--oro); }
.demo-tarjeta .ico { color: var(--oro); margin-bottom: .6rem; }
.demo-tarjeta p { color: var(--texto-2); font-size: 14.5px; }
.demo-tarjeta .btn { margin-top: auto; align-self: flex-start; }

/* Revelado al hacer scroll */
.revelar { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
.revelar.visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .revelar { opacity: 1; transform: none; } }

/* =====================================================================
   Sitio comercial "despacho": secciones editoriales, láminas, libro mayor.
   ===================================================================== */
:root { --banda: #0f2a44; --banda-2: #143656; --banda-texto: #d9e1ea; --banda-tenue: #9fb1c5; --banda-oro: #c9a46a; --renglon: rgba(15, 42, 68, .055); }
:root[data-theme="dark"] { --banda: #08121d; --banda-2: #0d1b2b; --renglon: rgba(233, 223, 201, .05); }
main#contenido { overflow-x: clip; }
.sitio-cab .sitio-nav a[aria-current="page"]:not(.btn) { color: var(--tinta); }
.sitio-cab .sitio-nav a[aria-current="page"]:not(.btn)::after { right: 0; }

/* Tipografía editorial */
.entrada { font: 400 clamp(1.05rem, 1.6vw, 1.22rem)/1.6 var(--serif); color: var(--texto-2); max-width: 62ch; }
.capitular::first-letter { float: left; font: 600 3.6em/.82 var(--serif); color: var(--oro-2); margin: .08em .1em 0 0; }
.columnas-2 { columns: 2 28ch; column-gap: 3rem; column-rule: 1px solid var(--filete); }
.columnas-2 p { break-inside: avoid-column; }
.folio-ley { display: inline-flex; align-items: center; gap: .6rem; font: 600 11.5px/1.2 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--oro-2); margin: 0 0 1.1rem; }
.folio-ley::before { content: ""; width: 34px; height: 1px; background: var(--oro); flex: none; }
.texto-oro { color: var(--oro-2); }
.centro { text-align: center; }
h1 em, h2 em { font-style: italic; color: var(--oro-2); font-weight: 500; }

/* Secciones numeradas como artículos de ley */
.seccion { padding: clamp(3.5rem, 8vw, 6.5rem) 0; position: relative; }
.seccion + .seccion { border-top: 1px solid var(--filete); }
.seccion-alterna { background: var(--papel-2); }
.seccion-cab { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 0 2rem; margin-bottom: clamp(2rem, 4vw, 3rem); }
.seccion-cab .numeral { font: 500 clamp(2.4rem, 5vw, 3.6rem)/1 var(--serif); color: var(--oro); border-top: 1px solid var(--oro); padding-top: .9rem; }
.seccion-cab .numeral small { display: block; font: 600 10.5px/1.4 var(--sans); letter-spacing: .18em; text-transform: uppercase; color: var(--texto-3); margin-top: .5rem; }
.seccion-cab h2 { font-size: clamp(1.6rem, 3.2vw, 2.45rem); max-width: 26ch; margin-top: .2rem; }
.seccion-cab p { color: var(--texto-2); max-width: 64ch; }
@media (max-width: 720px) { .seccion-cab { grid-template-columns: minmax(0, 1fr); } .seccion-cab .numeral { border-top: 0; padding-top: 0; margin-bottom: .6rem; font-size: 2.2rem; } .seccion-cab .numeral small { display: inline; margin-left: .6rem; } }

/* Cabecera de páginas interiores */
.pag-cab { position: relative; padding: clamp(3rem, 7vw, 5.5rem) 0 clamp(2.2rem, 5vw, 3.5rem); border-bottom: 1px solid var(--filete); overflow: hidden;
           background-image: repeating-linear-gradient(0deg, transparent 0 31px, var(--renglon) 31px 32px); }
.pag-cab::after { content: "§"; position: absolute; right: max(2vw, calc(50% - 600px)); top: 50%; transform: translateY(-50%); font: 400 clamp(9rem, 22vw, 17rem)/1 var(--serif); color: var(--oro); opacity: .09; pointer-events: none; }
.pag-cab h1 { font-size: clamp(2rem, 4.6vw, 3.3rem); max-width: 22ch; letter-spacing: -.012em; }
.pag-cab .entrada { margin-top: 1rem; }
.migas { font-size: 13px; color: var(--texto-3); margin-bottom: 1.4rem; }
.migas a { color: var(--texto-3); text-decoration: none; } .migas a:hover { color: var(--oro-2); }
.migas span[aria-hidden] { margin: 0 .45rem; color: var(--oro); }

/* Portada */
.portada-hero { position: relative; padding: clamp(2.8rem, 6vw, 5rem) 0 clamp(3rem, 6vw, 5.5rem); overflow: hidden;
                background-image: repeating-linear-gradient(0deg, transparent 0 31px, var(--renglon) 31px 32px); }
.portada-hero::before { content: ""; position: absolute; top: 0; bottom: 0; left: max(10px, calc(50% - 610px)); width: 1px; background: color-mix(in srgb, var(--oro) 45%, transparent); }
.portada-hero-rejilla { display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4.5rem); align-items: center; }
.portada-hero h1 { font-size: clamp(2.2rem, 5vw, 3.9rem); line-height: 1.07; letter-spacing: -.018em; max-width: 15ch; }
.portada-hero .entrada { margin: 1.4rem 0 2rem; }
.acciones { display: flex; flex-wrap: wrap; gap: .8rem; align-items: center; }
.ficha-demo dl { margin: 0; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .2rem 1.2rem; }
.ficha-demo { margin: 2.4rem 0 0; max-width: 470px; padding: 1.1rem 1.2rem 1rem 1.4rem; background: var(--superficie);
              border: 1px solid var(--filete); border-left: 3px solid var(--oro); box-shadow: var(--sombra); font-size: 13.5px; position: relative; }
.ficha-demo::before { content: "Cuenta demo"; position: absolute; top: -.75em; left: 1rem; background: var(--superficie); padding: 0 .5rem; font: 600 10.5px/1.4 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--oro-2); }
.ficha-demo dt { color: var(--texto-3); } .ficha-demo dd { margin: 0; font-family: var(--mono); color: var(--tinta); overflow-wrap: anywhere; }
.ficha-demo p { margin: .5rem 0 0; color: var(--texto-3); font-size: 12.5px; }
.portada-hero-visual { position: relative; padding: 0 0 2.5rem 0; }
.portada-hero-visual .marco-celular { position: absolute; right: -6px; bottom: 0; width: 31%; min-width: 110px; }
.portada-hero-visual .marco-navegador { margin-right: 12%; }
@media (max-width: 960px) { .portada-hero-rejilla { grid-template-columns: minmax(0, 1fr); } .portada-hero h1 { max-width: 18ch; } .portada-hero-visual { max-width: 680px; } }
@media (max-width: 480px) { .portada-hero-visual .marco-celular { width: 34%; right: 0; } }

/* Marcos de pantalla (navegador y celular) alrededor de las capturas */
.lamina { margin: 0; }
.lamina figcaption { margin-top: .9rem; font-size: 13px; color: var(--texto-3); display: flex; gap: .6rem; align-items: baseline; }
.lamina figcaption b { font: 600 11px/1.3 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--oro-2); white-space: nowrap; }
.marco { position: relative; background: var(--superficie); box-shadow: var(--sombra-alta); overflow: hidden; }
.marco img { display: block; width: 100%; height: auto; background: var(--papel-2); }
.marco-navegador { border: 1px solid var(--filete-2); border-radius: 8px; }
.marco-barra { display: flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px; background: var(--papel-2); border-bottom: 1px solid var(--filete); }
.marco-barra i { width: 9px; height: 9px; border-radius: 50%; background: var(--filete-2); flex: none; }
.marco-barra span { flex: 1; min-width: 0; margin-left: 10px; height: 19px; border-radius: 10px; background: var(--superficie); border: 1px solid var(--filete); font: 11px/17px var(--mono); color: var(--texto-3); padding: 0 10px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.marco-celular { border: 7px solid #17283b; border-radius: 28px; aspect-ratio: 9 / 19; }
.marco-celular::before { content: ""; position: absolute; top: 6px; left: 50%; width: 34%; height: 12px; transform: translateX(-50%); background: #17283b; border-radius: 10px; z-index: 3; }
.marco-pantalla { position: relative; }
.marco-celular .marco-pantalla { height: 100%; }
.marco-celular img { height: 100%; object-fit: cover; object-position: top; }
/* Mientras no exista la captura: maqueta sobria en CSS (sitio.js agrega .sin-captura si la imagen no carga). */
.marco.sin-captura img { visibility: hidden; }
.marco.sin-captura .marco-pantalla { min-height: 120px; }
.marco.sin-captura .marco-pantalla::before { content: ""; position: absolute; inset: 0; z-index: 1; background-color: var(--superficie); background-image:
        linear-gradient(var(--tinta), var(--tinta)), linear-gradient(var(--oro), var(--oro)), linear-gradient(var(--filete-2), var(--filete-2)),
        linear-gradient(var(--verde-fondo), var(--verde-fondo)), linear-gradient(var(--ambar-fondo), var(--ambar-fondo)), linear-gradient(var(--rojo-fondo), var(--rojo-fondo)),
        repeating-linear-gradient(180deg, var(--filete) 0 1px, transparent 1px 22px);
    background-size: 17% 100%, 24% 3.5%, 38% 2.2%, 22% 16%, 22% 16%, 22% 16%, 74% 42%;
    background-position: 0 0, 24% 8%, 25% 15%, 24% 30%, 52% 30%, 80% 30%, 90% 92%; background-repeat: no-repeat; }
.marco-celular.sin-captura .marco-pantalla::before { background-image:
        linear-gradient(var(--tinta), var(--tinta)), linear-gradient(var(--oro), var(--oro)), linear-gradient(var(--verde-fondo), var(--verde-fondo)),
        repeating-linear-gradient(180deg, var(--filete-2) 0 1px, transparent 1px 26px);
    background-size: 100% 10%, 50% 2.5%, 80% 10%, 80% 55%; background-position: 0 0, 15% 15%, 50% 26%, 50% 88%; }
.marco-leyenda { display: none; position: absolute; z-index: 2; right: 10px; bottom: 10px; font: 600 9.5px/1.3 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--texto-3); background: var(--superficie); padding: .3rem .5rem; border: 1px solid var(--filete); }
.marco.sin-captura .marco-leyenda { display: block; }
.marco-celular .marco-leyenda { right: 50%; transform: translateX(50%); white-space: nowrap; }

/* Láminas (galería de capturas) */
.laminas { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(1.5rem, 3vw, 2.5rem); align-items: start; }
.laminas > .lamina { grid-column: span 6; }
.laminas > .lamina-ancha { grid-column: span 8; }
.laminas > .lamina-angosta { grid-column: span 4; }
.laminas > .lamina-celular { grid-column: span 3; }
@media (max-width: 900px) { .laminas > .lamina, .laminas > .lamina-ancha, .laminas > .lamina-angosta { grid-column: span 12; } .laminas > .lamina-celular { grid-column: span 6; } }

/* Contadores */
.contadores { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-block: 1px solid var(--filete-2); }
.contador { padding: 1.8rem 1.4rem; border-left: 1px solid var(--filete); }
.contador:first-child { border-left: 0; }
.contador b { display: block; font: 500 clamp(2.1rem, 4.4vw, 3.2rem)/1 var(--serif); color: var(--tinta); font-variant-numeric: lining-nums tabular-nums; white-space: nowrap; }
.contador b small { font-size: .45em; color: var(--oro-2); margin-left: .15em; }
.contador span { display: block; margin-top: .6rem; font-size: 13.5px; color: var(--texto-2); max-width: 26ch; }
.contador cite { display: block; margin-top: .35rem; font: normal 11.5px/1.3 var(--mono); color: var(--texto-3); }
@media (max-width: 820px) { .contadores { grid-template-columns: repeat(2, minmax(0, 1fr)); } .contador:nth-child(3) { border-left: 0; } .contador:nth-child(n+3) { border-top: 1px solid var(--filete); } }
@media (max-width: 420px) { .contador { padding: 1.3rem .8rem; } .contador b { font-size: 1.8rem; } }

/* Riesgos (fichas con fundamento al margen) */
.fichas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--filete-2); }
.ficha { padding: 1.8rem 2rem 1.8rem 0; border-bottom: 1px solid var(--filete); display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 1.4rem; }
.ficha:nth-child(even) { padding-left: 2rem; padding-right: 0; border-left: 1px solid var(--filete); }
.ficha .fundamento { font: 500 12px/1.45 var(--mono); color: var(--oro-2); border-top: 2px solid var(--oro); padding-top: .55rem; }
.ficha h3 { font-size: 1.22rem; margin-bottom: .4rem; }
.ficha p { color: var(--texto-2); font-size: 14.5px; margin: 0; }
@media (max-width: 820px) { .fichas { grid-template-columns: minmax(0, 1fr); } .ficha, .ficha:nth-child(even) { padding: 1.5rem 0; border-left: 0; } }
@media (max-width: 460px) { .ficha { grid-template-columns: minmax(0, 1fr); gap: .6rem; } .ficha .fundamento { border-top: 0; padding-top: 0; } }

/* Nota al margen y citas */
.con-margen { display: grid; grid-template-columns: minmax(0, 1fr) 270px; gap: clamp(2rem, 4vw, 3.5rem); align-items: start; }
.margen { font: italic 400 15px/1.55 var(--serif); color: var(--texto-2); border-top: 2px solid var(--oro); padding-top: 1rem; }
.margen-fija { position: sticky; top: 100px; }
.margen b { font-style: normal; display: block; font: 600 10.5px/1.4 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--oro-2); margin-bottom: .5rem; }
.margen p:last-child { margin-bottom: 0; }
.margen + .margen { margin-top: 2rem; }
@media (max-width: 900px) { .con-margen { grid-template-columns: minmax(0, 1fr); } .margen-fija { position: static; } }
.cita { margin: 0; padding: clamp(1.5rem, 4vw, 2.5rem) 0; border-block: 1px solid var(--filete-2); text-align: center; }
.cita p { font: italic 400 clamp(1.3rem, 2.6vw, 1.9rem)/1.4 var(--serif); color: var(--tinta); max-width: 38ch; margin: 0 auto; }
.cita cite { display: block; margin-top: 1rem; font: normal 600 11px/1.3 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--oro-2); }

/* Pasos (artículo primero, segundo, tercero) */
.pasos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.paso { padding: 0 2rem 0 0; position: relative; }
.paso + .paso { padding-left: 2rem; border-left: 1px solid var(--filete); }
.paso .romano { display: block; font: 500 3.4rem/1 var(--serif); color: var(--oro); margin-bottom: .2rem; }
.paso .articulo { font: 600 11px/1.3 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--texto-3); }
.paso h3 { font-size: 1.3rem; margin: .7rem 0 .5rem; }
.paso p { color: var(--texto-2); font-size: 14.5px; }
@media (max-width: 820px) { .pasos { grid-template-columns: minmax(0, 1fr); gap: 2rem; } .paso + .paso { padding-left: 0; border-left: 0; border-top: 1px solid var(--filete); padding-top: 2rem; } .paso { padding-right: 0; } }

/* Índice de funciones con líneas de puntos (como el índice de un libro) */
.indice { list-style: none; margin: 0; padding: 0; columns: 2 300px; column-gap: 3.5rem; }
.indice li { break-inside: avoid; }
.indice a { display: flex; align-items: baseline; gap: .5rem; padding: .65rem 0 .2rem; text-decoration: none; color: var(--texto); }
.indice a:hover { color: var(--oro-2); }
.indice a .titulo { font: 500 1.06rem/1.35 var(--serif); }
.indice a .puntos { flex: 1; min-width: 1.5rem; border-bottom: 1px dotted var(--filete-2); transform: translateY(-4px); }
.indice a .num { font: 500 12.5px/1 var(--mono); color: var(--oro-2); }
.indice small { display: block; color: var(--texto-3); font-size: 13px; padding-bottom: .5rem; }

/* Libro mayor (tablas) */
.libro-caja { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--filete-2); background: var(--superficie); box-shadow: var(--sombra); }
table.libro { width: 100%; border-collapse: collapse; font-size: 14.5px; background: var(--superficie); }
table.libro caption { caption-side: top; text-align: left; padding: .9rem 1rem; font: 600 11px/1.3 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--oro-2); border-bottom: 1px solid var(--filete); }
table.libro th { text-align: left; font: 600 11.5px/1.3 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--texto-2); padding: .85rem 1rem; border-bottom: 3px double var(--oro); background: var(--papel-2); vertical-align: bottom; }
table.libro td { padding: .8rem 1rem; border-bottom: 1px solid var(--filete); vertical-align: top; }
table.libro tbody tr:last-child td { border-bottom: 0; }
table.libro td:first-child, table.libro th:first-child { border-right: 1px solid color-mix(in srgb, var(--oro) 45%, transparent); }
table.libro .num { text-align: right; font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
table.libro tfoot td { border-top: 3px double var(--oro); font-weight: 600; background: var(--papel-2); }
table.libro .si { color: var(--verde); font-weight: 600; } table.libro .no { color: var(--texto-3); }
.ayuda-art table.libro, .legal-cuerpo table.libro { margin: 1rem 0 1.5rem; border: 1px solid var(--filete-2); display: block; overflow-x: auto; }

/* Comparativo con / sin */
.comparativo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); border: 1px solid var(--filete-2); background: var(--superficie); box-shadow: var(--sombra); }
.comparativo > div { padding: 1.6rem clamp(1.1rem, 3vw, 2rem); }
.comparativo > div + div { border-left: 3px double var(--oro); }
.comparativo h3 { display: flex; align-items: center; gap: .6rem; font-size: 1.2rem; padding-bottom: .9rem; border-bottom: 1px solid var(--filete); }
.comparativo ul { list-style: none; margin: 0; padding: 0; }
.comparativo li { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: .6rem; padding: .75rem 0; border-bottom: 1px dashed var(--filete); font-size: 14.5px; }
.comparativo li:last-child { border-bottom: 0; }
.comparativo .sin { background: var(--papel-2); }
.comparativo .sin li { color: var(--texto-2); }
.comparativo .sin .ico { color: var(--rojo); } .comparativo .con .ico { color: var(--verde); }
@media (max-width: 760px) { .comparativo { grid-template-columns: minmax(0, 1fr); } .comparativo > div + div { border-left: 0; border-top: 3px double var(--oro); } }

/* Línea de tiempo del calendario fiscal REPSE */
.calendario-anual { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); border: 1px solid var(--filete-2); background: var(--superficie); box-shadow: var(--sombra); }
.mes { padding: 1rem .5rem 1.1rem; border-left: 1px solid var(--filete); min-height: 230px; display: flex; flex-direction: column; gap: .4rem; position: relative; min-width: 0; }
.mes:first-child { border-left: 0; }
.mes h3 { font: 600 11px/1.2 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--texto-3); margin: 0; }
.mes .dia { font: 500 2rem/1 var(--serif); color: var(--tinta); }
.mes .marca { display: block; font: 600 10.5px/1.25 var(--sans); padding: .3rem .35rem; border-left: 2px solid var(--filete-2); background: var(--papel-2); color: var(--texto-2); overflow-wrap: anywhere; }
.mes .marca-oro { border-left-color: var(--oro); background: var(--oro-claro); color: var(--oro-2); }
.mes .marca-tinta { border-left-color: var(--tinta-2); background: var(--azul-fondo); color: var(--tinta-2); }
.mes-cuatrimestral { background: linear-gradient(180deg, var(--oro-claro), transparent 70%); }
.mes-cuatrimestral::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--oro); }
.calendario-leyenda { display: flex; flex-wrap: wrap; gap: .5rem 1.4rem; margin-top: 1rem; font-size: 13px; color: var(--texto-2); }
.calendario-leyenda span { display: inline-flex; align-items: center; gap: .45rem; }
.calendario-leyenda i { width: 12px; height: 12px; display: inline-block; border-left: 3px solid var(--filete-2); background: var(--papel-2); }
.calendario-leyenda i.oro { border-color: var(--oro); background: var(--oro-claro); }
.calendario-leyenda i.tinta { border-color: var(--tinta-2); background: var(--azul-fondo); }
@media (max-width: 1100px) { .calendario-anual { grid-template-columns: repeat(6, minmax(0, 1fr)); } .mes:nth-child(7) { border-left: 0; } .mes:nth-child(n+7) { border-top: 1px solid var(--filete); } }
@media (max-width: 640px) { .calendario-anual { grid-template-columns: repeat(2, minmax(0, 1fr)); } .mes { min-height: 0; } .mes:nth-child(odd) { border-left: 0; } .mes:nth-child(n+3) { border-top: 1px solid var(--filete); } }

/* Calculadora de exposición */
.calculadora { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); border: 1px solid var(--filete-2); background: var(--superficie); box-shadow: var(--sombra-alta); }
.calculadora-datos { padding: clamp(1.4rem, 3vw, 2.2rem); border-right: 3px double var(--oro); }
.calculadora-datos .campo label { text-transform: uppercase; letter-spacing: .1em; font-size: 11.5px; }
.calculadora-resultado { padding: clamp(1.4rem, 3vw, 2.2rem); background: var(--papel-2); }
.calculadora-resultado dl { margin: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; }
.calculadora-resultado dt, .calculadora-resultado dd { padding: .8rem 0; border-bottom: 1px solid var(--filete); margin: 0; }
.calculadora-resultado dt { color: var(--texto-2); font-size: 14px; padding-right: 1rem; }
.calculadora-resultado dt small { display: block; color: var(--texto-3); font-size: 12px; }
.calculadora-resultado dd { font: 500 1.1rem/1.3 var(--mono); color: var(--tinta); text-align: right; white-space: nowrap; }
.calculadora-resultado dd.grande { font: 600 1.45rem/1.2 var(--serif); color: var(--rojo); }
.calculadora .nota-legal { font-size: 12.5px; color: var(--texto-3); margin: 1.2rem 0 0; }
@media (max-width: 860px) { .calculadora { grid-template-columns: minmax(0, 1fr); } .calculadora-datos { border-right: 0; border-bottom: 3px double var(--oro); } }
@media (max-width: 460px) { .calculadora-resultado dl { grid-template-columns: minmax(0, 1fr); } .calculadora-resultado dt { border-bottom: 0; padding-bottom: 0; } .calculadora-resultado dd { text-align: left; white-space: normal; } }

/* Módulos (rejilla sobria) */
.modulos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--filete-2); border-left: 1px solid var(--filete-2); }
.modulo { padding: 1.6rem 1.5rem 1.7rem; border-right: 1px solid var(--filete-2); border-bottom: 1px solid var(--filete-2); background: var(--superficie); transition: background .2s; text-decoration: none; color: var(--texto); }
.modulo:hover { background: var(--papel); color: var(--texto); }
.modulo .ico { color: var(--oro); }
.modulo h3 { margin: .9rem 0 .4rem; font-size: 1.12rem; }
.modulo p { margin: 0; color: var(--texto-2); font-size: 14px; }
@media (max-width: 960px) { .modulos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .modulos { grid-template-columns: minmax(0, 1fr); } }

/* Detalle de funciones: artículos alternos texto + lámina */
.funcion { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: clamp(2rem, 5vw, 4.5rem); align-items: center; padding: clamp(2.5rem, 6vw, 4.5rem) 0; border-top: 1px solid var(--filete); }
.funcion:first-child { border-top: 0; }
.funcion-invertida > .funcion-texto { order: 2; }
.funcion .art { font: 600 11px/1.3 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--oro-2); }
.funcion h2 { font-size: clamp(1.45rem, 2.8vw, 2rem); margin: .55rem 0 .8rem; }
.funcion p { color: var(--texto-2); }
@media (max-width: 900px) { .funcion { grid-template-columns: minmax(0, 1fr); } .funcion-invertida > .funcion-texto { order: 0; } }
ul.vinetas { list-style: none; padding: 0; margin: 1rem 0 0; }
ul.vinetas li { position: relative; padding: .38rem 0 .38rem 1.5rem; font-size: 14.5px; color: var(--texto); }
ul.vinetas li::before { content: "§"; position: absolute; left: 0; top: .36rem; font: 600 14px/1.5 var(--serif); color: var(--oro); }
.diagrama-api { margin: 0; font: 13px/1.65 var(--mono); background: var(--banda); color: var(--banda-texto); padding: 1.4rem 1.5rem; border-radius: 6px; box-shadow: var(--sombra-alta); overflow-x: auto; white-space: pre; }
.diagrama-api b { color: var(--banda-oro); font-weight: 500; }
.diagrama-api i { color: #8fd0ae; font-style: normal; }

/* Banda oscura (llamada a la acción, seguridad) */
.banda { background-color: var(--banda); color: var(--banda-texto); padding: clamp(3.5rem, 8vw, 6rem) 0; position: relative; overflow: hidden;
         background-image: repeating-linear-gradient(0deg, transparent 0 31px, rgba(201, 164, 106, .07) 31px 32px); }
.banda h2, .banda h3 { color: #fff; }
.banda .antetitulo, .banda .folio-ley { color: var(--banda-oro); } .banda .folio-ley::before { background: var(--banda-oro); }
.banda p { color: var(--banda-texto); }
.banda .tenue { color: var(--banda-tenue); }
.banda a:not(.btn) { color: #fff; }
.banda .btn:not(.btn-oro) { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .35); }
.banda .btn:not(.btn-oro):hover { border-color: var(--banda-oro); color: #fff; }
.banda-rejilla { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.banda ul.vinetas li { color: var(--banda-texto); } .banda ul.vinetas li::before { color: var(--banda-oro); }
.banda-final { text-align: center; }
.banda-final h2 { font-size: clamp(1.8rem, 4vw, 2.8rem); max-width: 22ch; margin-inline: auto; }
.banda-final p { max-width: 60ch; margin-inline: auto; }
.banda-final .acciones { justify-content: center; margin-top: 2rem; }
@media (max-width: 860px) { .banda-rejilla { grid-template-columns: minmax(0, 1fr); } }
.sellos-seguridad { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: rgba(201, 164, 106, .25); border: 1px solid rgba(201, 164, 106, .25); }
.sellos-seguridad div { background: var(--banda-2); padding: 1.2rem 1.1rem; }
.sellos-seguridad b { display: block; font: 500 1.05rem/1.3 var(--serif); color: #fff; }
.sellos-seguridad span { font-size: 13px; color: var(--banda-tenue); }
@media (max-width: 420px) { .sellos-seguridad { grid-template-columns: minmax(0, 1fr); } }

/* Precios */
.planes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); border: 1px solid var(--filete-2); background: var(--superficie); box-shadow: var(--sombra); }
.plan { padding: 1.8rem 1.5rem; border-left: 1px solid var(--filete); display: flex; flex-direction: column; position: relative; }
.plan:first-child { border-left: 0; }
.plan-destacado { background: var(--papel); outline: 2px solid var(--oro); outline-offset: -2px; z-index: 1; }
.plan-destacado::before { content: "Recomendado"; position: absolute; top: -.75em; left: 1.5rem; background: var(--oro); color: #fff; font: 600 10.5px/1.6 var(--sans); letter-spacing: .14em; text-transform: uppercase; padding: 0 .55rem; }
.plan h3 { font-size: 1.3rem; margin: 0 0 .3rem; }
.plan .desc { color: var(--texto-2); font-size: 13.5px; min-height: 3.2em; }
.plan .precio { font: 500 2.3rem/1 var(--serif); color: var(--tinta); margin: 1rem 0 .2rem; font-variant-numeric: lining-nums; }
.plan .precio small { font: 400 13px/1 var(--sans); color: var(--texto-3); margin-left: .2rem; }
.plan .con-iva { font-size: 12.5px; color: var(--texto-3); margin-bottom: 1rem; }
.plan ul.vinetas { margin: .5rem 0 1.4rem; } .plan ul.vinetas li { font-size: 13.5px; }
.plan .btn { margin-top: auto; }
@media (max-width: 1000px) { .plan { border-left: 0; border-top: 1px solid var(--filete); } .plan:first-child { border-top: 0; } }
.plan-gratis { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 1.5rem; align-items: center; margin-top: 2rem; padding: 1.4rem 1.6rem; border: 1px dashed var(--oro); background: var(--oro-claro); }
.plan-gratis .precio { font: 500 2rem/1 var(--serif); color: var(--oro-2); }
.plan-gratis p { margin: 0; color: var(--texto-2); }
@media (max-width: 700px) { .plan-gratis { grid-template-columns: minmax(0, 1fr); gap: .8rem; } }

/* Preguntas frecuentes */
.buscador { position: relative; max-width: 560px; margin-top: 1.6rem; }
.buscador .ico { position: absolute; left: .9rem; top: 50%; transform: translateY(-50%); color: var(--texto-3); pointer-events: none; }
.buscador input { padding-left: 2.6rem !important; min-height: 50px !important; font-size: 16px !important; }
.faq-categoria { margin-top: 3rem; }
.faq-categoria > h2 { display: flex; align-items: baseline; gap: .8rem; padding-bottom: .8rem; border-bottom: 3px double var(--oro); }
.faq-categoria > h2 small { font: 500 12px/1 var(--mono); color: var(--oro-2); }
details.faq-item { border-bottom: 1px solid var(--filete); }
details.faq-item summary { list-style: none; cursor: pointer; display: grid; grid-template-columns: 3.2rem minmax(0, 1fr) 24px; gap: .6rem; align-items: baseline; padding: 1.1rem 0; font: 500 1.08rem/1.4 var(--serif); color: var(--tinta); }
details.faq-item summary::-webkit-details-marker { display: none; }
details.faq-item summary .n { font: 500 12px/1 var(--mono); color: var(--oro-2); }
details.faq-item summary::after { content: "+"; font: 400 1.4rem/1 var(--serif); color: var(--oro); text-align: right; transition: transform .2s; }
details.faq-item[open] summary::after { transform: rotate(45deg); }
details.faq-item summary:hover { color: var(--oro-2); }
details.faq-item .respuesta { padding: 0 2rem 1.3rem 3.8rem; color: var(--texto-2); max-width: 82ch; }
@media (max-width: 560px) { details.faq-item summary { grid-template-columns: 2.4rem minmax(0, 1fr) 18px; font-size: 1rem; } details.faq-item .respuesta { padding: 0 0 1.2rem 0; } }
.oculto-filtro { display: none !important; }
.sin-resultados { padding: 2rem; text-align: center; color: var(--texto-3); border: 1px dashed var(--filete-2); margin-top: 2rem; }
.pildoras-sitio { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.4rem; }
.pildoras-sitio a { font-size: 13px; text-decoration: none; padding: .4rem .8rem; border: 1px solid var(--filete-2); border-radius: 30px; color: var(--texto-2); background: var(--superficie); }
.pildoras-sitio a:hover { border-color: var(--oro); color: var(--tinta); }

/* Centro de ayuda */
.audiencias { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.audiencia { padding: 1.4rem; background: var(--superficie); border: 1px solid var(--filete); border-top: 3px solid var(--tinta); text-decoration: none; color: var(--texto); transition: border-color .2s, transform .2s; }
.audiencia:hover { border-top-color: var(--oro); transform: translateY(-2px); color: var(--texto); }
.audiencia .ico { color: var(--oro); }
.audiencia h3 { margin: .8rem 0 .3rem; }
.audiencia p { margin: 0; font-size: 13.5px; color: var(--texto-2); }
.audiencia span { display: block; margin-top: .8rem; font: 500 12px/1 var(--mono); color: var(--oro-2); }
@media (max-width: 960px) { .audiencias { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .audiencias { grid-template-columns: minmax(0, 1fr); } }
.ayuda-grupo { margin-top: 3.5rem; scroll-margin-top: 96px; }
.ayuda-grupo > h2 { display: flex; align-items: center; gap: .7rem; padding-bottom: .8rem; border-bottom: 3px double var(--oro); }
.ayuda-grupo > h2 .ico { color: var(--oro); }
.ayuda-lista { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 2.5rem; }
.ayuda-tarjeta { display: grid; grid-template-columns: 2.4rem minmax(0, 1fr); gap: .3rem .8rem; padding: 1.1rem 0; border-bottom: 1px solid var(--filete); text-decoration: none; color: var(--texto); }
.ayuda-tarjeta .n { font: 500 12px/1.9 var(--mono); color: var(--oro-2); }
.ayuda-tarjeta b { font: 500 1.05rem/1.35 var(--serif); color: var(--tinta); display: block; }
.ayuda-tarjeta:hover b { color: var(--oro-2); }
.ayuda-tarjeta small { grid-column: 2; color: var(--texto-2); font-size: 13.5px; line-height: 1.5; }
@media (max-width: 760px) { .ayuda-lista { grid-template-columns: minmax(0, 1fr); } }
.ayuda-art { font-size: 15.5px; line-height: 1.7; }
.ayuda-art h2 { font-size: 1.35rem; margin-top: 2.2rem; padding-top: 1.2rem; border-top: 1px solid var(--filete); }
.ayuda-art .seccion-cab h2 { border-top: 0; padding-top: 0; margin-top: .2rem; font-size: clamp(1.6rem, 3.2vw, 2.45rem); }
.ayuda-art h3 { margin-top: 1.6rem; }
.ayuda-art ul { padding-left: 1.2rem; }
.ayuda-art li { margin-bottom: .35rem; }
ol.pasos-lista { list-style: none; counter-reset: p; padding: 0; margin: 1rem 0 1.4rem; }
ol.pasos-lista > li { counter-increment: p; position: relative; padding: .7rem 0 .7rem 3.2rem; border-bottom: 1px dashed var(--filete); }
ol.pasos-lista > li::before { content: counter(p); position: absolute; left: 0; top: .55rem; width: 2.1rem; height: 2.1rem; display: grid; place-items: center; border: 1px solid var(--oro); border-radius: 50%; font: 500 1rem/1 var(--serif); color: var(--oro-2); background: var(--superficie); }
.nota { margin: 1.5rem 0; padding: 1rem 1.2rem; background: var(--oro-claro); border-left: 3px solid var(--oro); font-size: 14.5px; color: var(--texto); }
.video-marco { position: relative; aspect-ratio: 16 / 9; background: var(--banda); border: 1px solid var(--filete-2); box-shadow: var(--sombra-alta); margin: 0 0 2rem; overflow: hidden; }
.video-marco iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.articulo-meta { display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; font-size: 13px; color: var(--texto-3); margin-top: 1rem; }

/* Videos */
.videos { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 1.6rem; }
.video-tarjeta { background: var(--superficie); border: 1px solid var(--filete); box-shadow: var(--sombra); display: flex; flex-direction: column; }
.video-tarjeta .video-marco { margin: 0; box-shadow: none; border: 0; border-bottom: 1px solid var(--filete); }
.video-proximamente { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; gap: .5rem; color: var(--banda-texto); padding: 1rem;
                      background: radial-gradient(circle at 50% 45%, var(--banda-2), var(--banda) 70%); }
.video-proximamente .sello-marca { margin: 0 auto .4rem; width: 54px; height: 54px; font-size: 26px; color: var(--banda-oro); border-color: var(--banda-oro); }
.video-proximamente b { font: 500 1.1rem/1.2 var(--serif); color: #fff; }
.video-proximamente span { font: 600 10.5px/1.3 var(--sans); letter-spacing: .18em; text-transform: uppercase; color: var(--banda-oro); }
.video-cuerpo { padding: 1.2rem 1.3rem 1.4rem; }
.video-cuerpo .meta { display: flex; flex-wrap: wrap; gap: .3rem .8rem; font: 500 11.5px/1.3 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--oro-2); }
.video-cuerpo h3 { margin: .5rem 0 .4rem; }
.video-cuerpo p { margin: 0; font-size: 14px; color: var(--texto-2); }
.video-destacado { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: center; margin-bottom: 3rem; }
.video-destacado .video-marco { margin: 0; }
@media (max-width: 860px) { .video-destacado { grid-template-columns: minmax(0, 1fr); } }

/* Formularios del sitio */
.formulario-sitio { background: var(--superficie); border: 1px solid var(--filete-2); border-top: 3px solid var(--oro); padding: clamp(1.3rem, 4vw, 2.4rem); box-shadow: var(--sombra); scroll-margin-top: 96px; }
.formulario-sitio .casilla { margin: .4rem 0 1.2rem; }
.trampa { position: absolute !important; left: -10000px !important; width: 1px; height: 1px; overflow: hidden; }
.datos-contacto { list-style: none; padding: 0; margin: 0; }
.datos-contacto li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: .6rem; padding: .9rem 0; border-bottom: 1px solid var(--filete); overflow-wrap: anywhere; }
.datos-contacto .ico { color: var(--oro); margin-top: 3px; }
.acuse { padding: 1.6rem; border: 1px solid var(--verde); background: var(--verde-fondo); }
.acuse .folio { font: 600 1.4rem/1.2 var(--mono); color: var(--tinta); letter-spacing: .04em; overflow-wrap: anywhere; }

/* Documentos legales */
.legal-sello { display: flex; flex-wrap: wrap; gap: .4rem 1.6rem; margin-top: 1.4rem; font-size: 13px; color: var(--texto-2); }
.legal-sello span { display: inline-flex; gap: .4rem; align-items: baseline; }
.legal-sello b { font: 600 10.5px/1.3 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--oro-2); }
.legal { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); padding: 3rem 0 1rem; align-items: start; }
.legal-indice { position: sticky; top: 96px; max-height: calc(100vh - 120px); overflow-y: auto; font-size: 13.5px; border-top: 2px solid var(--oro); padding-top: .9rem; }
.legal-indice b { display: block; font: 600 10.5px/1.3 var(--sans); letter-spacing: .16em; text-transform: uppercase; color: var(--oro-2); margin-bottom: .6rem; }
.legal-indice ol { list-style: none; padding: 0; margin: 0; counter-reset: i; }
.legal-indice li { counter-increment: i; break-inside: avoid; }
.legal-indice a { display: grid; grid-template-columns: 2rem minmax(0, 1fr); padding: .32rem 0; color: var(--texto-2); text-decoration: none; }
.legal-indice a::before { content: counter(i) "."; font-family: var(--mono); font-size: 12px; color: var(--oro-2); }
.legal-indice a:hover { color: var(--tinta); }
.legal-cuerpo { max-width: 78ch; font-size: 15.5px; line-height: 1.75; counter-reset: articulo; min-width: 0; }
.legal-cuerpo > section { padding: 1.6rem 0; border-bottom: 1px solid var(--filete); scroll-margin-top: 96px; }
.legal-cuerpo > section:first-child { padding-top: 0; }
.legal-cuerpo > section > h2 { counter-increment: articulo; font-size: 1.3rem; display: flex; gap: .8rem; align-items: baseline; }
.legal-cuerpo > section > h2::before { content: "Art. " counter(articulo); flex: none; font: 600 11px/1 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--oro-2); min-width: 4.4rem; }
.legal-cuerpo h3 { font-size: 1.05rem; margin-top: 1.3rem; }
.legal-cuerpo ul, .legal-cuerpo ol { padding-left: 1.3rem; }
.legal-cuerpo li { margin-bottom: .35rem; }
.legal-pie { margin-top: 2rem; padding: 1.2rem 1.4rem; border: 1px solid var(--filete-2); background: var(--papel-2); font-size: 13.5px; color: var(--texto-2); display: flex; flex-wrap: wrap; gap: .4rem 1.5rem; justify-content: space-between; }
.legal-pie b { color: var(--tinta); }
@media (max-width: 900px) { .legal { grid-template-columns: minmax(0, 1fr); padding-top: 2rem; } .legal-indice { position: static; max-height: none; } .legal-indice ol { columns: 2 180px; } }
@media (max-width: 560px) { .legal-cuerpo > section > h2 { flex-direction: column; gap: .3rem; } }

/* Mapa a controles ISO */
.controles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.control { padding: 1.3rem 1.4rem; background: var(--superficie); border: 1px solid var(--filete); border-left: 3px solid var(--tinta); }
.control .clave { font: 500 12px/1 var(--mono); color: var(--oro-2); }
.control h3 { margin: .5rem 0 .35rem; font-size: 1.05rem; }
.control p { margin: 0; font-size: 14px; color: var(--texto-2); }
@media (max-width: 760px) { .controles { grid-template-columns: minmax(0, 1fr); } }

/* Utilidades del sitio */
.mt-1 { margin-top: 1rem; } .mt-2 { margin-top: 2rem; } .mt-3 { margin-top: 3rem; } .mb-0 { margin-bottom: 0; }
.dos-col { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.dos-col-formulario { grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); }
@media (max-width: 860px) { .dos-col, .dos-col-formulario { grid-template-columns: minmax(0, 1fr); } }
.fuente { font-size: 12.5px; color: var(--texto-3); margin-top: 1rem; }
.angosto { max-width: 820px; }
@media print { .sitio-cab, .sitio-pie, .legal-indice, .acciones { display: none !important; } .legal { grid-template-columns: minmax(0, 1fr); } .revelar { opacity: 1 !important; transform: none !important; } }

h1:focus, h1:focus-visible { outline: none; }
