/*
 * CFDI Catálogo SAT
 * Hereda la tipografía del tema. El elemento distintivo es la clave partida en sus
 * cuatro niveles (división · grupo · clase · producto), con un tono que se intensifica
 * a medida que la clave se vuelve más específica.
 */
.cfdisat {
	--cs-tinta: #1c2b33;
	--cs-suave: #56656e;
	--cs-linea: #d5dde1;
	--cs-fondo: #f3f6f6;
	--cs-verde: #0d6a57;
	--cs-verde-oscuro: #094c3f;
	--cs-n1: #e6f0ed;
	--cs-n2: #cfe3dd;
	--cs-n3: #aed2c7;
	--cs-marca: #fbe7a1;
	--cs-aviso: #fff7e0;
	--cs-aviso-borde: #e5c46b;
	--cs-radio: 6px;
	color: var(--cs-tinta);
	box-sizing: border-box;
	/* Tamaño base propio: muchos temas fijan html { font-size: 62.5% } y con "rem" todo quedaba diminuto. */
	font-size: clamp(17px, 1.125rem, 20px);
	line-height: 1.5;
}
.cfdisat-contenedor { font-size: clamp(17px, 1.125rem, 20px); }
.cfdisat *, .cfdisat *::before, .cfdisat *::after { box-sizing: inherit; }
.cfdisat p { margin: 0; }

/* ---------- Clave partida ---------- */
.cfdisat-clave {
	display: inline-flex;
	gap: 2px;
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum" 1;
	font-weight: 600;
	letter-spacing: .02em;
	line-height: 1;
}
.cfdisat-par {
	display: inline-block;
	padding: .38em .34em;
	border-radius: 3px;
	color: var(--cs-tinta);
}
.cfdisat-par-1 { background: var(--cs-n1); }
.cfdisat-par-2 { background: var(--cs-n2); }
.cfdisat-par-3 { background: var(--cs-n3); }
.cfdisat-par-4 { background: var(--cs-verde); color: #fff; }
.cfdisat-par-vacio { background: transparent; color: var(--cs-linea); box-shadow: inset 0 0 0 1px var(--cs-linea); }

/* ---------- Buscador ---------- */
.cfdisat-buscador { margin: 1.5em 0 2em; }
.cfdisat-label { display: block; font-weight: 600; margin-bottom: .5em; }
.cfdisat-campo {
	position: relative;
	display: flex;
	align-items: stretch;
	border: 2px solid var(--cs-tinta);
	border-radius: var(--cs-radio);
	background: #fff;
}
.cfdisat-campo:focus-within { border-color: var(--cs-verde); box-shadow: 0 0 0 3px var(--cs-n2); }
.cfdisat-lupa { width: 1.25em; height: 1.25em; align-self: center; margin-left: .9em; color: var(--cs-suave); flex: none; }
.cfdisat .cfdisat-input {
	flex: 1;
	min-width: 0;
	border: 0;
	background: transparent;
	padding: .95em .8em;
	font: inherit;
	font-size: 1.15em;
	color: var(--cs-tinta);
	outline: none;
	box-shadow: none;
	-webkit-appearance: none;
	appearance: none;
}
.cfdisat .cfdisat-input::placeholder { color: #8a979e; }
.cfdisat .cfdisat-enviar {
	border: 0;
	margin: 4px;
	padding: 0 1.2em;
	border-radius: 4px;
	background: var(--cs-verde);
	color: #fff;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
}
.cfdisat .cfdisat-enviar:hover { background: var(--cs-verde-oscuro); }
.cfdisat-buscador.is-cargando .cfdisat-lupa { animation: cfdisat-pulso 1s ease-in-out infinite; }
@keyframes cfdisat-pulso { 50% { opacity: .3; } }

.cfdisat-filtro { border: 0; padding: 0; margin: .75em 0 0; display: flex; gap: .4em; flex-wrap: wrap; }
.cfdisat-filtro label { cursor: pointer; }
.cfdisat-filtro input { position: absolute; opacity: 0; pointer-events: none; }
.cfdisat-filtro span {
	display: inline-block;
	padding: .3em .8em;
	border: 1px solid var(--cs-linea);
	border-radius: 999px;
	font-size: .95em;
	color: var(--cs-suave);
}
.cfdisat-filtro input:checked + span { background: var(--cs-tinta); border-color: var(--cs-tinta); color: #fff; }
.cfdisat-filtro input:focus-visible + span { outline: 2px solid var(--cs-verde); outline-offset: 2px; }

.cfdisat-estado { font-size: .9em; color: var(--cs-suave); min-height: 1.4em; margin: .9em 0 .3em; }
.cfdisat-compacto .cfdisat-filtro { display: none; }
.cfdisat-compacto { margin: 1em 0 1.5em; }
.cfdisat-compacto .cfdisat-input { font-size: 1em; padding: .7em .7em; }

/* ---------- Ejemplos ---------- */
.cfdisat-ejemplos { display: flex; flex-wrap: wrap; align-items: center; gap: .5em; margin-top: .4em; }
.cfdisat-ejemplos p { color: var(--cs-suave); font-size: 1em; }
.cfdisat-ejemplos ul { display: flex; flex-wrap: wrap; gap: .4em; list-style: none; margin: 0; padding: 0; }
.cfdisat-ejemplos a {
	display: inline-block;
	padding: .25em .7em;
	background: var(--cs-fondo);
	border-radius: 4px;
	color: var(--cs-tinta);
	text-decoration: none;
	font-size: 1em;
}
.cfdisat-ejemplos a:hover { background: var(--cs-n1); }

/* ---------- Tarjetas de aclaración ---------- */
.cfdisat-aviso {
	background: var(--cs-aviso);
	border-left: 4px solid var(--cs-aviso-borde);
	padding: .85em 1em;
	border-radius: 0 var(--cs-radio) var(--cs-radio) 0;
	margin: .6em 0;
	font-size: .97em;
	line-height: 1.5;
}
.cfdisat-aviso-titulo { font-weight: 700; margin-bottom: .2em !important; }
.cfdisat-aviso-efirma { background: #f1f4f8; border-left-color: #7b8ea6; }
.cfdisat-nodo, .cfdisat-nota { margin: .6em 0 !important; font-size: 1em; color: var(--cs-suave); }
.cfdisat-nodo a { font-weight: 600; }

/* ---------- Resultados ---------- */
.cfdisat-lista { list-style: none; margin: .4em 0 0; padding: 0; border-top: 1px solid var(--cs-linea); }
.cfdisat-item { border-bottom: 1px solid var(--cs-linea); margin: 0; padding: 0; }
.cfdisat-fila { display: grid; grid-template-columns: auto 1fr auto; gap: .9em; align-items: center; padding: .8em 0; }
.cfdisat-desc { font-size: 1.02em; line-height: 1.35; }
.cfdisat-desc mark { background: var(--cs-marca); color: inherit; padding: 0 1px; border-radius: 2px; }
.cfdisat-ruta { font-size: .9em; color: var(--cs-suave); margin-top: .25em !important; line-height: 1.4; }
.cfdisat-etq {
	font-size: .78em;
	font-weight: 600;
	color: var(--cs-suave);
	border: 1px solid var(--cs-linea);
	border-radius: 3px;
	padding: 0 .3em;
	vertical-align: 1px;
}

.cfdisat .cfdisat-copiar {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-start;
	gap: .25em;
	border: 0;
	background: transparent;
	padding: 0;
	cursor: pointer;
	font: inherit;
	color: inherit;
}
.cfdisat-copiar .cfdisat-clave { font-size: 1.02em; }
.cfdisat-copiar-txt { font-size: .8em; color: var(--cs-verde); font-weight: 600; }
.cfdisat-copiar:hover .cfdisat-par-4 { background: var(--cs-verde-oscuro); }
.cfdisat-copiar.is-copiado .cfdisat-copiar-txt { color: var(--cs-verde-oscuro); }
.cfdisat-copiar.is-copiado .cfdisat-par { background: var(--cs-verde); color: #fff; }
.cfdisat .cfdisat-copiar:focus-visible, .cfdisat .cfdisat-mas:focus-visible { outline: 2px solid var(--cs-verde); outline-offset: 3px; border-radius: 3px; }

.cfdisat .cfdisat-mas {
	border: 1px solid var(--cs-linea);
	background: #fff;
	color: var(--cs-tinta);
	border-radius: 4px;
	padding: .35em .7em;
	font: inherit;
	font-size: .85em;
	cursor: pointer;
}
.cfdisat .cfdisat-mas[aria-expanded="true"] { background: var(--cs-fondo); }

.cfdisat-detalle { padding: 0 0 1em; }
.cfdisat-dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: .6em 1.2em; margin: 0 0 .8em; background: var(--cs-fondo); padding: .9em 1em; border-radius: var(--cs-radio); }
.cfdisat-dl div { margin: 0; }
.cfdisat-dl dt { font-size: .85em; color: var(--cs-suave); margin: 0; }
.cfdisat-dl dd { margin: .1em 0 0; font-size: 1em; }
.cfdisat-enlaces { display: flex; flex-wrap: wrap; gap: .4em 1.2em; font-size: .92em; }
.cfdisat-ficha-link { font-weight: 700; }

.cfdisat-vacio { background: var(--cs-fondo); padding: 1em 1.1em; border-radius: var(--cs-radio); line-height: 1.5; }
.cfdisat-vacio p + p { margin-top: .4em; color: var(--cs-suave); }
.cfdisat-fuente { font-size: .875em; color: var(--cs-suave); margin-top: 1em !important; }

/* ---------- Explorar por división ---------- */
.cfdisat-explorar { margin: 2.5em 0; }
.cfdisat-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 2em; }
.cfdisat-explorar ul, .cfdisat-hijos ul { list-style: none; margin: 0; padding: 0; }
.cfdisat-explorar li, .cfdisat-hijos li {
	display: flex;
	justify-content: space-between;
	gap: .8em;
	padding: .45em 0;
	border-bottom: 1px solid var(--cs-linea);
	line-height: 1.35;
}
.cfdisat-explorar a, .cfdisat-hijos a { text-decoration: none; }
.cfdisat-explorar a:hover, .cfdisat-hijos a:hover { text-decoration: underline; }
.cfdisat-cod { font-variant-numeric: tabular-nums; color: var(--cs-suave); font-weight: 600; margin-right: .3em; }
.cfdisat-n { color: var(--cs-suave); font-size: .9em; white-space: nowrap; font-variant-numeric: tabular-nums; }

/* ---------- Páginas del árbol ---------- */
.cfdisat-contenedor { max-width: 960px; margin: 0 auto; padding: 1.5em 1em 3em; }
.cfdisat-migas ol { list-style: none; display: flex; flex-wrap: wrap; gap: .3em; margin: 0 0 1.2em; padding: 0; font-size: .95em; color: var(--cs-suave); }
.cfdisat-migas li + li::before { content: "›"; margin-right: .3em; }
.cfdisat-cab-nodo h1 { margin: .6em 0 .5em; line-height: 1.2; }
.cfdisat-cab-nodo p { color: var(--cs-suave); max-width: 70ch; line-height: 1.5; }
.cfdisat-nodo-codigo .cfdisat-clave { font-size: 1.5em; }
.cfdisat-hijos h2, .cfdisat-tabla-clase h2 { margin: 1.5em 0 .6em; }

.cfdisat-scroll { overflow-x: auto; }
.cfdisat-tabla-clase table { width: 100%; border-collapse: collapse; font-size: 1em; }
.cfdisat-tabla-clase th { text-align: left; font-size: .875em; color: var(--cs-suave); border-bottom: 2px solid var(--cs-tinta); padding: .5em .6em; }
.cfdisat-tabla-clase td { border-bottom: 1px solid var(--cs-linea); padding: .6em; vertical-align: top; line-height: 1.4; }
.cfdisat-tabla-clase td:last-child { color: var(--cs-suave); font-size: .95em; }
.cfdisat-tabla-clase tr.is-destacada td { background: var(--cs-marca); }
.cfdisat-tabla-clase tr { scroll-margin-top: 90px; }
.cfdisat-guia { font-size: .9em; font-weight: 600; margin-left: .3em; }

/* ---------- Ficha oficial en las guías ---------- */
.cfdisat-ficha { border: 2px solid var(--cs-tinta); border-radius: var(--cs-radio); padding: 1.1em 1.2em; margin: 0 0 1.8em; }
.cfdisat-ficha-etq { font-size: .9em; color: var(--cs-suave); margin-bottom: .6em !important; }
.cfdisat-ficha-cab { display: flex; gap: 1.1em; align-items: center; flex-wrap: wrap; }
.cfdisat-copiar-grande .cfdisat-clave { font-size: 1.6em; }
.cfdisat-ficha-desc { font-size: 1.2em; font-weight: 600; line-height: 1.3; flex: 1; min-width: 200px; }
.cfdisat-ficha-ruta { list-style: none; margin: 1em 0; padding: 0; font-size: 1em; }
.cfdisat-ficha-ruta li { padding: .15em 0; }
.cfdisat-nivel { display: inline-block; min-width: 7.5em; color: var(--cs-suave); font-variant-numeric: tabular-nums; }
.cfdisat-revision { font-size: .9em; color: #56656e; margin-top: 2em; }
.cfdisat-aviso-admin { background: #fff3cd; padding: .7em 1em; border-left: 4px solid #d39e00; }

/* ---------- Móvil ---------- */
@media (max-width: 640px) {
	.cfdisat-fila { grid-template-columns: 1fr auto; grid-template-areas: "clave mas" "texto texto"; row-gap: .5em; }
	.cfdisat-fila > .cfdisat-copiar { grid-area: clave; flex-direction: row; align-items: center; gap: .6em; }
	.cfdisat-fila > .cfdisat-texto { grid-area: texto; }
	.cfdisat-fila > .cfdisat-mas { grid-area: mas; }
	.cfdisat .cfdisat-input { font-size: 1em; }
	.cfdisat .cfdisat-enviar { padding: 0 .9em; }
	.cfdisat-cols { grid-template-columns: 1fr; }
	.cfdisat-tabla-clase td:last-child, .cfdisat-tabla-clase th:last-child { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	.cfdisat-buscador.is-cargando .cfdisat-lupa { animation: none; }
}

/* ---------- Blindaje contra estilos de botones y listas del tema ---------- */
.cfdisat button.cfdisat-copiar,
.cfdisat button.cfdisat-copiar:hover,
.cfdisat button.cfdisat-copiar:focus {
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	padding: 0 !important;
	color: inherit !important;
	min-height: 0 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
}
.cfdisat button.cfdisat-mas {
	background: #fff !important;
	color: var(--cs-tinta) !important;
	border: 1px solid var(--cs-linea) !important;
	padding: .35em .7em !important;
	font-size: .85em !important;
	line-height: 1.2 !important;
	min-height: 0 !important;
	text-transform: none !important;
}
.cfdisat button.cfdisat-mas[aria-expanded="true"] { background: var(--cs-fondo) !important; }
.cfdisat button.cfdisat-enviar {
	background: var(--cs-verde) !important;
	color: #fff !important;
	border: 0 !important;
	min-height: 0 !important;
	text-transform: none !important;
	font-size: 1em !important;
}
.cfdisat button.cfdisat-enviar:hover { background: var(--cs-verde-oscuro) !important; }
.cfdisat .cfdisat-dl dd { margin: .1em 0 0 !important; padding: 0 !important; }
.cfdisat .cfdisat-dl dt { font-weight: 600; }
.cfdisat .cfdisat-filtro label { margin: 0; padding: 0; }
.cfdisat .cfdisat-lista, .cfdisat .cfdisat-lista li { list-style: none !important; margin-left: 0 !important; padding-left: 0 !important; }
.cfdisat .cfdisat-filtro input { position: absolute !important; width: 1px !important; height: 1px !important; margin: 0 !important; padding: 0 !important; }
.cfdisat-tabla-clase table, .cfdisat-tabla-clase th, .cfdisat-tabla-clase td { border-left: 0 !important; border-right: 0 !important; border-top: 0 !important; }
.cfdisat-tabla-clase table { border: 0 !important; }

/* ---------- Sugerencias por giro ---------- */
.cfdisat-giros { margin: 2.5em 0; }
.cfdisat-giros > p { color: var(--cs-suave); max-width: 70ch; }
.cfdisat .cfdisat-giros-lista { list-style: none !important; margin: 1em 0 0 !important; padding: 0 !important; columns: 3 240px; column-gap: 2em; }
.cfdisat .cfdisat-giros-lista li { break-inside: avoid; padding: .35em 0; border-bottom: 1px solid var(--cs-linea); display: flex; justify-content: space-between; gap: .6em; margin: 0 !important; }
.cfdisat-giros-lista a { text-decoration: none; }
.cfdisat-giros-lista a:hover { text-decoration: underline; }
.cfdisat-criterios { margin: 2.5em 0; background: var(--cs-fondo); padding: 1.2em 1.4em; border-radius: var(--cs-radio); }
.cfdisat-criterios h2 { margin-top: 0; }
.cfdisat .cfdisat-criterios ul { margin: .5em 0 0 1.1em; padding: 0; }
.cfdisat-criterios li { margin: .5em 0; line-height: 1.5; max-width: 75ch; }
.cfdisat-advertencia { display: block; margin-top: .35em; font-size: .9em; color: #8a4b00; background: var(--cs-aviso); padding: .3em .5em; border-radius: 3px; }
.cfdisat-tabla-giro tr.is-no-vigente td { color: var(--cs-suave); }
.cfdisat-tabla-giro tr.is-no-vigente .cfdisat-par { background: transparent; color: var(--cs-suave); box-shadow: inset 0 0 0 1px var(--cs-linea); text-decoration: line-through; }
.cfdisat-tabla-giro td:last-child { white-space: nowrap; color: var(--cs-tinta) !important; font-size: 1em !important; }
.cfdisat-rangos ul { padding-left: 1.1em; }
.cfdisat-rangos li { margin: .4em 0; line-height: 1.5; }
.cfdisat-otros-giros { margin-top: 1.5em; }
@media (max-width: 640px) {
	.cfdisat-tabla-giro td:last-child, .cfdisat-tabla-giro th:last-child { display: table-cell; white-space: normal; }
}

/* ---------- Listas de navegación: neutralizar tamaños y subrayados del tema ---------- */
.cfdisat .cfdisat-explorar li, .cfdisat .cfdisat-hijos li, .cfdisat .cfdisat-giros-lista li,
.cfdisat-explorar li, .cfdisat-hijos li, .cfdisat-giros-lista li {
	font-size: 1.05em !important;
	line-height: 1.4 !important;
	align-items: baseline;
}
.cfdisat-explorar li a, .cfdisat-hijos li a, .cfdisat-giros-lista li a {
	font-size: inherit !important;
	font-weight: 500;
	text-decoration: none !important;
	color: var(--cs-tinta);
}
.cfdisat-explorar li a:hover, .cfdisat-hijos li a:hover, .cfdisat-giros-lista li a:hover { text-decoration: underline !important; color: var(--cs-verde); }
.cfdisat-explorar .cfdisat-n, .cfdisat-hijos .cfdisat-n, .cfdisat-giros-lista .cfdisat-n { font-size: .85em !important; }
.cfdisat-explorar h3 { font-size: 1.25em; margin: 0 0 .5em; }
.cfdisat-cab-nodo p { font-size: 1.05em; }
.cfdisat .cfdisat-label { font-size: 1.05em !important; line-height: 1.4; }
.cfdisat .cfdisat-input { font-size: 1.15em !important; }
.cfdisat.cfdisat-compacto .cfdisat-input { font-size: 1.05em !important; }

/* ---------- Reinicio de tamaños heredados del tema (li, label, celdas) ---------- */
.cfdisat .cfdisat-item, .cfdisat .cfdisat-ejemplos li, .cfdisat .cfdisat-ficha-ruta li,
.cfdisat .cfdisat-criterios li, .cfdisat .cfdisat-rangos li, .cfdisat .cfdisat-migas li,
.cfdisat .cfdisat-filtro label, .cfdisat td, .cfdisat th {
	font-size: 1em !important;
	line-height: 1.5;
}
.cfdisat .cfdisat-ejemplos a, .cfdisat .cfdisat-item a, .cfdisat td a { font-size: inherit !important; }
.cfdisat .cfdisat-filtro span { font-size: .95em !important; }
.cfdisat-tabla-clase td:last-child { font-size: .95em !important; }
.cfdisat-tabla-clase th { font-size: .875em !important; }

/* ---------- Tamaños mínimos legibles (texto secundario nunca menor a ~15px) ---------- */
.cfdisat .cfdisat-desc { font-size: 1.08em !important; }
.cfdisat .cfdisat-ruta { font-size: .95em !important; }
.cfdisat .cfdisat-dl dt { font-size: .9em !important; }
.cfdisat .cfdisat-dl dd { font-size: 1em !important; }
.cfdisat .cfdisat-copiar-txt { font-size: .85em !important; }
.cfdisat .cfdisat-copiar .cfdisat-clave { font-size: 1.1em; }
.cfdisat .cfdisat-estado { font-size: .95em !important; }
.cfdisat .cfdisat-fuente, .cfdisat-fuente { font-size: .9em !important; }
.cfdisat .cfdisat-enlaces { font-size: 1em !important; }
.cfdisat button.cfdisat-mas { font-size: .95em !important; }
.cfdisat .cfdisat-aviso { font-size: 1em !important; }
.cfdisat .cfdisat-etq { font-size: .8em !important; }
