/**
 * Constructor de bloques — estilos del editor visual (adaptado del
 * constructor de estuma.com a los colores del panel de WordPress).
 */

#aeop-constructor-envoltorio { margin-top: 12px; }

.aeop-constructor-toggle-linea { margin: 4px 0 12px; }

/* ---- Campos genéricos reutilizados en varios tipos de bloque ---- */
.campo-fila { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
.campo-etiqueta { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #6B7280; }
.campo-input {
	width: 100%; box-sizing: border-box; background: #fff; border: 1px solid #D0DDE6; border-radius: 6px;
	padding: 8px 10px; font-size: 13px; color: #12293A; line-height: 1.5;
}
.campo-input:focus { border-color: #004F71; box-shadow: 0 0 0 2px rgba(0,79,113,.15); outline: none; }

/* ---- Bloque contenedor ---- */
.constructor-bloque {
	position: relative; border: 1px solid #D0DDE6; border-radius: 6px; margin-bottom: 12px;
	background: #fff; box-shadow: 0 1px 4px rgba(0,79,113,.06); transition: border-color .15s, box-shadow .15s;
}
.constructor-bloque:hover { border-color: #004F71; box-shadow: 0 2px 10px rgba(0,79,113,.12); }

.constructor-bloque-cabecera {
	display: flex; align-items: center; gap: 8px; padding: 8px 12px;
	background: #EEF3F6; border-radius: 6px 6px 0 0; border-bottom: 2px solid #D0DDE6;
}
.constructor-tipo-label { font-size: 11px; font-weight: 700; color: #004F71; letter-spacing: .06em; text-transform: uppercase; flex: 1; }
.constructor-acciones { display: flex; gap: 4px; }
.constructor-btn-accion {
	width: 28px; height: 28px; border: none; background: transparent; border-radius: 4px; cursor: pointer;
	color: #6B7280; font-size: 13px; display: flex; align-items: center; justify-content: center; transition: .15s;
}
.constructor-btn-accion:hover { background: rgba(0,79,113,.10); color: #004F71; }
.constructor-btn-accion:disabled { opacity: .3; cursor: default; }
.constructor-btn-eliminar:hover { background: rgba(220,38,38,.10) !important; color: #DC2626 !important; }

.constructor-bloque-cuerpo { padding: 16px 18px 20px; }

/* ---- Botones de añadir bloque ---- */
.constructor-add-entre { text-align: center; padding: 6px 0; }
.constructor-btn-add-entre {
	font-size: 11px; color: #004F71; border: 1px dashed #7AAFC4; border-radius: 999px;
	padding: 4px 16px; background: transparent; cursor: pointer; transition: .15s;
}
.constructor-btn-add-entre:hover { background: #EAF2F7; }

.constructor-add-final { text-align: center; padding: 24px 0 12px; border-top: 2px dashed #D0DDE6; margin-top: 10px; }
.constructor-btn-add {
	font-size: 13px; font-weight: 700; color: #004F71; border: 2px dashed #7AAFC4; border-radius: 999px;
	padding: 12px 32px; background: #F0F7FB; cursor: pointer; letter-spacing: .03em; transition: .15s;
}
.constructor-btn-add:hover { background: #EAF2F7; border-color: #004F71; box-shadow: 0 2px 8px rgba(0,79,113,.12); }

/* ---- Menú flotante de tipos de bloque ---- */
.constructor-menu-bloques {
	position: fixed; z-index: 99999; background: #fff; border: 1px solid #D0DDE6; border-radius: 8px;
	box-shadow: 0 8px 32px rgba(0,0,0,.16); padding: 8px; min-width: 240px;
	display: grid; grid-template-columns: 1fr 1fr; gap: 4px;
}
.constructor-menu-item {
	display: flex; align-items: center; gap: 10px; padding: 10px 14px; border: none; background: transparent;
	border-radius: 6px; cursor: pointer; text-align: left; width: 100%; transition: .15s;
}
.constructor-menu-item:hover { background: #EAF2F7; color: #004F71; }
.constructor-menu-icono { font-size: 1.1rem; flex-shrink: 0; }
.constructor-menu-label { font-size: 13px; font-weight: 500; }
.constructor-menu-cerrar {
	grid-column: 1/-1; border: none; background: transparent; cursor: pointer; color: #6B7280; font-size: 11px;
	padding: 6px; border-top: 1px solid #E5E7EB; margin-top: 4px; width: 100%; text-align: center;
}

/* ---- Barra de alineación (texto y cita) ---- */
.constructor-align-barra { display: flex; gap: 2px; margin-bottom: 10px; }
.constructor-align-btn {
	padding: 4px 10px; font-size: 11px; border: 1px solid #E5E7EB; border-radius: 999px; background: transparent;
	cursor: pointer; color: #6B7280; transition: .15s;
}
.constructor-align-btn.activo, .constructor-align-btn:hover { background: #004F71; border-color: #004F71; color: #fff; }
.constructor-align-label { font-size: 11px; color: #6B7280; margin-right: 4px; }

/* ---- Bloque texto ---- */
.constructor-nivel-selector { display: flex; gap: 4px; margin-bottom: 8px; flex-wrap: wrap; }
.constructor-nivel-btn {
	padding: 4px 10px; font-size: 11px; border: 1px solid #E5E7EB; border-radius: 999px; background: transparent;
	cursor: pointer; color: #6B7280; transition: .15s;
}
.constructor-nivel-btn.activo, .constructor-nivel-btn:hover { background: #004F71; border-color: #004F71; color: #fff; }

.constructor-texto-editable {
	width: 100%; min-height: 48px; outline: none; line-height: 1.7; color: #12293A;
	word-break: break-word; white-space: pre-wrap; border: 1px solid transparent; border-radius: 4px; padding: 4px;
}
.constructor-texto-editable:focus { border-color: #D0DDE6; }
.constructor-texto-editable:empty::before { content: attr(data-placeholder); color: #9CA3AF; pointer-events: none; }
.constructor-texto-editable h1 { font-size: 2rem; font-weight: 700; margin: .5rem 0; }
.constructor-texto-editable h2 { font-size: 1.5rem; font-weight: 600; margin: .5rem 0; }
.constructor-texto-editable h3 { font-size: 1.25rem; font-weight: 600; margin: .5rem 0; }
.constructor-texto-editable h4 { font-size: 1.1rem; font-weight: 600; margin: .5rem 0; }

/* ---- Bloque imagen ---- */
.constructor-imagen-vacia { border: 2px dashed #D0DDE6; border-radius: 6px; padding: 40px 16px; text-align: center; background: #F9FAFB; }
.constructor-btn-galeria, .constructor-btn-subir {
	padding: 10px 20px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; transition: .15s;
	background: #004F71; color: #fff; border: none;
}
.constructor-btn-galeria:hover, .constructor-btn-subir:hover { background: #003a54; }
.constructor-imagen-preview { position: relative; text-align: center; margin-bottom: 12px; }
.constructor-imagen-preview img { border-radius: 6px; max-width: 100%; }
.constructor-img-quitar {
	display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; padding: 6px 14px; border: 1px solid #E5E7EB;
	border-radius: 999px; font-size: 11px; background: #fff; cursor: pointer; color: #6B7280; transition: .15s;
}
.constructor-img-quitar:hover { border-color: #DC2626; color: #DC2626; }
.constructor-imagen-opciones { display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; }

/* ---- Bloque vídeo ---- */
.constructor-video-preview { margin-top: 10px; border-radius: 6px; overflow: hidden; aspect-ratio: 16/9; background: #12293A; }
.constructor-video-preview iframe { width: 100%; height: 100%; border: none; }
.constructor-placeholder { display: flex; align-items: center; justify-content: center; height: 100%; color: rgba(255,255,255,.4); font-size: 13px; padding: 16px; text-align: center; }

/* ---- Bloque columnas ---- */
.constructor-col-controles { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.constructor-col-selector { display: flex; gap: 6px; flex-wrap: wrap; }
.constructor-col-btn {
	padding: 6px 12px; font-size: 11px; border: 1px solid #E5E7EB; border-radius: 999px; background: transparent;
	cursor: pointer; color: #6B7280; font-family: monospace; transition: .15s;
}
.constructor-col-btn.activo, .constructor-col-btn:hover { background: #004F71; border-color: #004F71; color: #fff; }
.constructor-col-align-v { display: flex; align-items: center; gap: 4px; }

.constructor-columnas { display: grid; gap: 14px; }
.constructor-columnas--50-50 { grid-template-columns: 1fr 1fr; }
.constructor-columnas--70-30 { grid-template-columns: 7fr 3fr; }
.constructor-columnas--30-70 { grid-template-columns: 3fr 7fr; }
.constructor-columnas--33-33-33 { grid-template-columns: 1fr 1fr 1fr; }
.constructor-columna { border: 1px dashed #D0DDE6; border-radius: 4px; padding: 10px; min-height: 80px; }
.constructor-col-cabecera {
	font-size: 11px; font-weight: 700; color: #004F71; text-transform: uppercase; letter-spacing: .06em;
	padding: 5px 8px; background: #EEF3F6; border-radius: 4px 4px 0 0; margin-bottom: 8px;
}
.constructor-col-zona { display: flex; flex-direction: column; gap: 8px; min-height: 80px; }
.constructor-bloque-interno { border: 1px solid #D0DDE6; border-radius: 4px; background: #fff; overflow: hidden; }
.constructor-bloque-interno-cab { display: flex; align-items: center; justify-content: space-between; padding: 5px 8px; background: #F4F8FA; border-bottom: 1px solid #E0EAF0; }
.constructor-tipo-label-mini { font-size: 10px; font-weight: 700; color: #004F71; text-transform: uppercase; }
.constructor-acciones-mini { display: flex; gap: 4px; }
.constructor-acciones-mini button { width: 22px; height: 22px; border: none; background: transparent; cursor: pointer; color: #6B7280; border-radius: 3px; }
.constructor-acciones-mini button:hover { background: rgba(0,79,113,.10); color: #004F71; }
.constructor-acciones-mini button:disabled { opacity: .3; }
.constructor-acciones-mini .constructor-btn-eliminar:hover { background: rgba(220,38,38,.10); color: #DC2626; }
.constructor-bloque-interno-cuerpo { padding: 10px; }
.constructor-btn-add-col {
	font-size: 11px; color: #004F71; border: 1px dashed #7AAFC4; border-radius: 999px; padding: 5px 14px;
	background: transparent; cursor: pointer; margin-top: 6px; transition: .15s;
}
.constructor-btn-add-col:hover { background: #EAF2F7; }

/* ---- Bloque cita ---- */
.constructor-cita-preview { border-left: 4px solid #004F71; padding: 14px 20px; background: #EAF2F7; border-radius: 0 6px 6px 0; margin: 0; }
.constructor-cita-preview .constructor-texto-editable { font-size: 1.1rem; font-style: italic; min-height: 40px; }
.constructor-cita-autor { margin-top: 8px; font-size: 13px; font-weight: 600; color: #004F71; outline: none; min-height: 24px; }
.constructor-cita-autor:empty::before { content: attr(data-placeholder); color: #9CA3AF; font-weight: 400; }

/* ---- Bloque botón ---- */
.constructor-boton-config { display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; margin-bottom: 14px; }
.constructor-boton-preview { padding: 16px; background: #F9FAFB; border-radius: 6px; border: 1px solid #E5E7EB; }

/* ---- Bloque separador ---- */
.sep-preview { margin: 14px 0; height: 24px; display: flex; align-items: center; }
.sep-linea { border-top: 1px solid #D0DDE6; }
.sep-doble { border-top: 3px double #D0DDE6; }
.sep-punteada { border-top: 1px dashed #D0DDE6; }
.sep-espaciado { height: 48px; }

/* ---- Bloque lista ---- */
.constructor-lista-fila { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.constructor-lista-bullet { flex-shrink: 0; width: 20px; text-align: center; color: #6B7280; }
.constructor-lista-btn-del { border: none; background: transparent; cursor: pointer; color: #9CA3AF; flex-shrink: 0; }
.constructor-lista-btn-del:hover { color: #DC2626; }

/* ---- Bloque tabla ---- */
.constructor-tabla-wrap { overflow-x: auto; }
.constructor-tabla-ctrl { display: flex; gap: 6px; margin-bottom: 10px; }
.constructor-tabla-preview { width: 100%; border-collapse: collapse; }
.constructor-tabla-preview th, .constructor-tabla-preview td { border: 1px solid #E5E7EB; padding: 4px; }
.constructor-tabla-preview th { background: #F9FAFB; }
.constructor-tabla-cell { width: 100%; box-sizing: border-box; border: none; padding: 6px; font-size: 13px; background: transparent; }
.constructor-tabla-cell:focus { outline: 1px solid #004F71; background: #fff; }

/* ---- Bloque documento ---- */
.constructor-grid-config { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }
.constructor-doc-preview { display: flex; align-items: center; gap: 10px; margin-top: 10px; padding: 10px; background: #F9FAFB; border-radius: 6px; border: 1px solid #E5E7EB; }
.constructor-doc-icono { font-size: 1.5rem; flex-shrink: 0; }

/* ---- Bloque lista/tabla de documentos ---- */
.constructor-lista-docs-wrap { display: flex; flex-direction: column; gap: 8px; }
.constructor-doc-fila { display: flex; align-items: center; gap: 8px; }
.constructor-doc-fila-archivo { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.constructor-doc-fila-archivo.tiene-archivo { background: #EAF2F7; padding: 4px 8px; border-radius: 999px; }
.constructor-doc-icono-sm { font-size: 1rem; flex-shrink: 0; }
.constructor-doc-nombre-sm { font-size: 11px; color: #004F71; max-width: 100px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---- Bloque grid (productos/entradas) ---- */
.constructor-grid-preview { margin-top: 10px; }
.constructor-grid-placeholder {
	border: 2px dashed #D0DDE6; border-radius: 6px; padding: 30px 16px; text-align: center; background: #F9FAFB; color: #6B7280;
}
.constructor-grid-icono { font-size: 1.5rem; display: block; margin-bottom: 6px; }
.constructor-grid-info { font-size: 11px; }

/* Responsive: en pantallas estrechas del escritorio, apila las columnas de config */
@media screen and ( max-width: 782px ) {
	.constructor-columnas--50-50, .constructor-columnas--70-30, .constructor-columnas--30-70, .constructor-columnas--33-33-33,
	.constructor-boton-config, .constructor-imagen-opciones, .constructor-grid-config { grid-template-columns: 1fr; }
	.constructor-menu-bloques { grid-template-columns: 1fr 1fr; left: 16px !important; right: 16px; width: calc(100% - 32px); }
}

/* =========================================================================
 * Frontend — estilos mínimos para los bloques ya renderizados en la web
 * pública (el resto de tipografía/colores los hereda del tema).
 * ========================================================================= */
.bloque-parrafo, .bloque-h1, .bloque-h2, .bloque-h3, .bloque-h4 { margin: 0 0 1.2em; }
.bloque-imagen { display: block; }
.bloque-imagen img { width: 100%; height: auto; border-radius: 8px; }
.bloque-caption { font-size: .85em; color: #6B7280; text-align: center; margin-top: .5em; }
.bloque-video { margin: 2rem 0; aspect-ratio: 16/9; }
.bloque-video iframe { width: 100%; height: 100%; border-radius: 8px; }
.bloque-columnas { display: grid; gap: 2rem; margin: 1.5rem 0; }
.col-50-50 { grid-template-columns: 1fr 1fr; }
.col-70-30 { grid-template-columns: 7fr 3fr; }
.col-30-70 { grid-template-columns: 3fr 7fr; }
.col-33-33-33 { grid-template-columns: 1fr 1fr 1fr; }
@media (max-width: 700px) { .bloque-columnas { grid-template-columns: 1fr !important; } }
.bloque-lista-ul, .bloque-lista-ol { padding-left: 1.4em; margin: 1rem 0; }
.lista-wrap-center { text-align: center; }
.lista-wrap-center ul, .lista-wrap-center ol { display: inline-block; text-align: left; }
.lista-wrap-right { text-align: right; }
.lista-wrap-right ul, .lista-wrap-right ol { display: inline-block; text-align: left; }
.bloque-tabla-wrap { overflow-x: auto; margin: 1.5rem 0; }
.bloque-tabla { width: 100%; border-collapse: collapse; }
.bloque-tabla th, .bloque-tabla td { border: 1px solid #E5E7EB; padding: .6em .8em; text-align: left; }
.bloque-tabla th { background: #F9FAFB; }
.bloque-documento { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.25rem; border: 1px solid #E5E7EB; border-radius: 8px; margin: 1.5rem 0; }
.doc-icono { font-size: 1.8rem; }
.doc-info { flex: 1; display: flex; flex-direction: column; }
.doc-nombre { font-weight: 600; }
.doc-tamano { font-size: .85em; color: #6B7280; }
.doc-descargar { white-space: nowrap; font-weight: 600; }
.bloque-cita { border-left: 4px solid var(--primario, #004F71); padding: 1rem 1.5rem; background: rgba(0,79,113,.05); border-radius: 0 8px 8px 0; margin: 1.5rem 0; font-size: 1.1em; font-style: italic; }
.bloque-cita cite { display: block; margin-top: .5rem; font-size: .8em; font-style: normal; font-weight: 600; }
.bloque-boton-wrap { margin: 1.5rem 0; }
.bloque-separador { border: none; border-top: 1px solid #E5E7EB; margin: 2rem 0; }
.bloque-separador--espacio { height: 3rem; border: none; }
.bloque-lista-docs { list-style: none; padding: 0; margin: 1.5rem 0; }
.lista-doc-item { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8em 1em; border: 1px solid #E5E7EB; border-radius: 8px; margin-bottom: .6em; flex-wrap: wrap; }
.lista-doc-archivo { display: flex; align-items: center; gap: .5em; }
.tabla-doc-celda { min-width: 180px; }
.tabla-doc-info { display: flex; align-items: center; gap: .5em; margin-bottom: .4em; }
.grid-bloque-seccion { margin: 2rem 0; }
.grid-bloque-titulo { margin-bottom: 1.5rem; }
.grid-bloque { display: grid; gap: 1.5rem; }
.grid-bloque--2col { grid-template-columns: repeat(2,1fr); }
.grid-bloque--3col { grid-template-columns: repeat(3,1fr); }
.grid-bloque--4col { grid-template-columns: repeat(4,1fr); }
@media (max-width: 700px) { .grid-bloque { grid-template-columns: 1fr !important; } }
.grid-bloque-card { border: 1px solid #E5E7EB; border-radius: 8px; overflow: hidden; }
.grid-bloque-enlace { display: block; text-decoration: none; color: inherit; }
.grid-bloque-imagen img { width: 100%; height: auto; display: block; }
.grid-bloque-info { padding: 1rem; }
.grid-bloque-nombre { margin: 0 0 .4em; }
.grid-bloque-extracto, .grid-bloque-meta { font-size: .9em; color: #6B7280; }
.grid-bloque-ver { display: inline-block; margin-top: .6em; font-weight: 600; }
