/*
 * Dame Alas Proyectos: estilos públicos.
 * Los botones llevan :not(#dap) para ganar a los estilos genéricos de botón del tema o de Elementor sin usar !important.
 * Usa las variables --da-* del tema Dame Alas 3D, siempre con un valor de reserva para que funcione con cualquier tema.
 * Medidas y clases copiadas de la maqueta aprobada (prefijo dap-).
 */

/* ---------- Base ---------- */
.dap-texto-lector { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
.dap-proyecto, .dap-ficha, .dap-bloque, .dap-indice, .dap-rejilla-envoltura, .dap-destacado, .dap-destacados, .dap-donar, .dap-donar-importes, .dap-contacto, .dap-dialogo, .dap-todo, .dap-contador, .dap-redes, .dap-acceso { box-sizing: border-box; font-family: var(--da-f-texto, "Atkinson Hyperlegible", Verdana, system-ui, sans-serif); color: var(--da-tinta, #1A1530); }
:where(.dap-proyecto, .dap-ficha, .dap-bloque, .dap-indice, .dap-rejilla-envoltura, .dap-destacado, .dap-destacados, .dap-donar, .dap-donar-importes, .dap-contacto, .dap-dialogo, .dap-todo, .dap-acceso) *,
:where(.dap-proyecto, .dap-ficha, .dap-bloque, .dap-indice, .dap-rejilla-envoltura, .dap-destacado, .dap-destacados, .dap-donar, .dap-donar-importes, .dap-contacto, .dap-dialogo, .dap-todo, .dap-acceso) *::before,
:where(.dap-proyecto, .dap-ficha, .dap-bloque, .dap-indice, .dap-rejilla-envoltura, .dap-destacado, .dap-destacados, .dap-donar, .dap-donar-importes, .dap-contacto, .dap-dialogo, .dap-todo, .dap-acceso) *::after { box-sizing: border-box; }
:where(.dap-proyecto, .dap-ficha, .dap-bloque, .dap-rejilla-envoltura, .dap-destacado, .dap-destacados, .dap-donar, .dap-donar-importes, .dap-contacto, .dap-dialogo, .dap-acceso) :where(h1, h2, h3, h4) { font-family: var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); line-height: 1.12; letter-spacing: -.01em; text-wrap: balance; margin: 0; color: inherit; }
:where(.dap-proyecto, .dap-ficha, .dap-bloque, .dap-rejilla-envoltura, .dap-destacado, .dap-destacados, .dap-donar-importes, .dap-contacto, .dap-dialogo, .dap-acceso) :where(p, ul, ol, dl, figure) { margin: 0; }
:where(.dap-proyecto, .dap-ficha, .dap-bloque, .dap-rejilla-envoltura, .dap-destacado, .dap-destacados, .dap-dialogo) img { max-width: 100%; height: auto; display: block; }
:where(.dap-proyecto, .dap-bloque, .dap-ficha, .dap-rejilla-envoltura, .dap-destacado, .dap-destacados, .dap-donar-importes, .dap-contacto, .dap-dialogo, .dap-todo, .dap-acceso) a:where(:not(.dap-boton)) { color: var(--da-magenta-hondo, #B00163); text-underline-offset: .18em; }
:where([class^="dap-"], [class*=" dap-"]) :focus-visible,
:where(.dap-dialogo):focus-visible { outline: 3px solid var(--da-tinta, #1A1530); outline-offset: 3px; box-shadow: 0 0 0 6px var(--da-sol, #E3B215); border-radius: 6px; }
.dap-envoltura { max-width: var(--da-ancho, 1180px); margin-inline: auto; padding-left: max(16px, env(safe-area-inset-left, 0px)); padding-right: max(16px, env(safe-area-inset-right, 0px)); }
.dap-principal:focus { outline: none; }
.dap-icono { width: 1.25em; height: 1.25em; flex: none; }
:where([class^="dap-"], [class*=" dap-"], [data-dap-ver-pieza], [data-dap-copiar])[hidden] { display: none !important; }

/* ---------- Botones ---------- */
.dap-boton:not(#dap) { display: inline-flex; align-items: center; justify-content: center; gap: .5em; min-height: 52px; padding: 0 1.5em; border-radius: 999px; font: 800 1.05rem/1.1 var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); text-decoration: none; text-align: center; border: 2px solid transparent; cursor: pointer; transition: transform .15s ease, background-color .15s ease, color .15s ease; }
.dap-boton:not(#dap):hover { transform: translateY(-2px); }
.dap-boton--primario:not(#dap) { background: var(--da-magenta, #E10175); color: #fff; }
.dap-boton--primario:not(#dap):hover, .dap-boton--primario:not(#dap):focus-visible { background: var(--da-magenta-hondo, #B00163); color: #fff; }
.dap-boton--secundario:not(#dap) { background: transparent; color: var(--da-tinta, #1A1530); border-color: var(--da-tinta, #1A1530); }
.dap-boton--secundario:not(#dap):hover, .dap-boton--secundario:not(#dap):focus-visible { background: var(--da-tinta, #1A1530); color: var(--da-papel, #FFFFFF); }
.dap-boton--claro:not(#dap) { background: var(--da-papel, #FFFFFF); color: var(--da-tinta, #1A1530); }
.dap-boton--claro:not(#dap):hover { background: var(--da-bruma, #F5F2FA); color: var(--da-tinta, #1A1530); }
.dap-boton--pequeno:not(#dap) { min-height: 44px; font-size: .95rem; padding: 0 1em; }
.dap-boton:not(#dap)[disabled], .dap-boton:not(#dap)[aria-disabled="true"] { opacity: .55; cursor: not-allowed; transform: none; }
.dap-acciones { display: flex; flex-wrap: wrap; gap: 12px; }

/* ---------- Piezas pequeñas ---------- */
.dap-antetitulo { font: 700 .85rem/1.2 var(--da-f-texto, "Atkinson Hyperlegible", Verdana, system-ui, sans-serif); letter-spacing: .12em; text-transform: uppercase; color: var(--da-turquesa-hondo, #278285); display: inline-flex; align-items: center; gap: .6em; }
.dap-antetitulo::before { content: ""; width: 26px; height: 26px; flex: none; border-radius: 50%; background: conic-gradient(from 210deg, var(--da-turquesa, #3CC2C6), var(--da-lila, #A78ADF) 30%, var(--da-cielo, #6AADD5) 55%, var(--da-rosa, #F08BBC) 78%, transparent 78% 88%, var(--da-turquesa, #3CC2C6) 88%); -webkit-mask: radial-gradient(circle, transparent 8px, #000 9px); mask: radial-gradient(circle, transparent 8px, #000 9px); }
.dap-antetitulo--claro { color: #fff; }
.dap-estado { display: inline-flex; align-items: center; gap: 8px; justify-self: start; align-self: start; padding: 6px 14px; border-radius: 999px; background: var(--da-papel, #FFFFFF); border: 1px solid var(--da-linea, #E4DEEF); color: var(--da-turquesa-hondo, #278285); font: 700 .9rem/1.2 var(--da-f-texto, "Atkinson Hyperlegible", Verdana, system-ui, sans-serif); }
.dap-estado::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: currentColor; }
.dap-estado--en-desarrollo, .dap-estado--idea { color: var(--da-magenta-hondo, #B00163); }
.dap-estado--flotante { position: absolute; top: 18px; left: 18px; border-color: transparent; box-shadow: 0 4px 14px rgba(26, 21, 48, .12); }
.dap-pastillas { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
/* Listas e imágenes del plugin a salvo de los estilos de contenido del tema (p. ej. «.entry-content ul { padding-left }»
   o «li + li { margin-top }»), que descolocan las rejillas cuando las partes van dentro de una página. */
:is(.dap-pastillas, .dap-archivos, .dap-rejilla, .dap-galeria__miniaturas, .dap-licencias, .dap-visor__selector, .dap-pasos, .dap-versiones, .dap-codigos, .dap-donar__destinos, .dap-donar-importes__destinos, .dap-importes, .dap-redes, .dap-indice ul):not(#dap) { list-style: none; padding: 0; margin-inline: 0; }
:is(.dap-pastillas, .dap-archivos, .dap-rejilla, .dap-galeria__miniaturas, .dap-licencias, .dap-visor__selector, .dap-pasos, .dap-versiones, .dap-codigos, .dap-donar__destinos, .dap-donar-importes__destinos, .dap-importes, .dap-redes, .dap-indice ul) > li:not(#dap) { margin: 0; }
:is(.dap-tarjeta__imagen, .dap-destacado__imagen, .dap-archivo__miniatura) img:not(#dap) { border-radius: 0; }
.dap-pastilla { display: inline-flex; align-items: center; min-height: 30px; padding: 0 12px; border-radius: 999px; background: var(--da-bruma, #F5F2FA); color: var(--da-tinta, #1A1530); font-size: .9rem; font-weight: 700; }
.dap-datos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 24px; margin: 0; }
.dap-datos > div { border-top: 2px solid var(--da-linea, #E4DEEF); padding-top: 10px; min-width: 0; }
.dap-datos dt { font-size: .85rem; letter-spacing: .08em; text-transform: uppercase; color: var(--da-tinta-suave, #4A4560); font-weight: 700; }
.dap-datos dd { margin: 2px 0 0; font: 800 1.1rem/1.3 var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); overflow-wrap: anywhere; }
.dap-nota { color: var(--da-tinta-suave, #4A4560); max-width: 68ch; }
.dap-nota--pequena { font-size: .95rem; }
.dap-solo-tactil { display: none; }
@media (pointer: coarse) {
  .dap-solo-tactil { display: inline; }
  .dap-solo-raton { display: none; }
}
.dap-aviso { margin-top: 10px; padding: 10px 14px; border-radius: 12px; background: #FDF6DD; color: var(--da-tinta, #1A1530); font-size: .98rem; }
.dap-recuadro { padding: 22px 24px; border-radius: 18px; border: 2px solid var(--da-linea, #E4DEEF); display: grid; gap: 10px; background: var(--da-papel, #FFFFFF); }
.dap-recuadro--seguridad { border-color: var(--da-sol, #E3B215); background: #FFFBEB; }
.dap-recuadro p { margin: 0; }
.dap-vacio { padding: 32px; border: 2px dashed var(--da-lila, #A78ADF); border-radius: var(--da-radio, 22px); color: var(--da-tinta-suave, #4A4560); text-align: center; }
.dap-pendiente { background: #FDF6DD; color: var(--da-tinta, #1A1530); padding: 0 4px; border-radius: 4px; }

/* ---------- Migas ---------- */
.dap-migas { font-size: .95rem; color: var(--da-tinta-suave, #4A4560); }
.dap-migas ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.dap-migas li { display: inline-flex; align-items: center; }
.dap-migas li + li::before { content: "›"; margin-right: 6px; color: var(--da-tinta-suave, #4A4560); }
.dap-migas a { color: var(--da-tinta-suave, #4A4560); display: inline-flex; align-items: center; min-height: 32px; }
.dap-migas [aria-current] { color: var(--da-tinta, #1A1530); font-weight: 700; }

/* ---------- Ficha: cabecera ---------- */
.dap-ficha > .dap-envoltura { padding-top: 28px; }
.dap-ficha__cabeza { display: grid; grid-template-columns: 1.1fr .9fr; gap: 48px; padding-block: 28px 56px; align-items: start; }
.dap-ficha__cabeza--sin-galeria { grid-template-columns: minmax(0, 760px); }
.dap-ficha__cabeza > * { min-width: 0; }
.dap-ficha__info { display: grid; gap: 20px; }
.dap-ficha__titulo { font-size: clamp(2.2rem, 4vw, 3.2rem); font-weight: 900; }
.dap-ficha__resumen { font-size: 1.2rem; color: var(--da-tinta-suave, #4A4560); }
.dap-ficha__licencias .dap-pastilla { font-weight: 400; color: var(--da-tinta-suave, #4A4560); }
@media (max-width: 860px) { .dap-ficha__cabeza { grid-template-columns: 1fr; gap: 28px; padding-bottom: 40px; } }

/* ---------- Galería ---------- */
.dap-galeria { display: grid; gap: 12px; }
.dap-galeria__figura { margin: 0; display: grid; gap: 8px; }
.dap-galeria__principal { position: relative; display: block; border-radius: 24px; overflow: hidden; aspect-ratio: 4 / 3; background: var(--da-bruma, #F5F2FA); }
.dap-galeria__principal img { width: 100%; height: 100%; object-fit: cover; }
.dap-galeria__ampliar { position: absolute; right: 14px; bottom: 14px; display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 14px; border-radius: 999px; background: rgba(26, 21, 48, .82); color: #fff; font: 700 .95rem/1 var(--da-f-texto, "Atkinson Hyperlegible", Verdana, system-ui, sans-serif); }
.dap-galeria__leyenda { font-size: .95rem; color: var(--da-tinta-suave, #4A4560); }
.dap-galeria__miniaturas { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; list-style: none; margin: 0; padding: 0; }
/* Por debajo de 360 px, 6 columnas dejarían miniaturas de menos de 44 px. */
@media (max-width: 359px) { .dap-galeria__miniaturas { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.dap-galeria__miniatura:not(#dap) { width: 100%; aspect-ratio: 1; min-height: 44px; padding: 0; border: 2px solid var(--da-linea, #E4DEEF); border-radius: 14px; overflow: hidden; background: var(--da-bruma, #F5F2FA); cursor: pointer; display: block; }
.dap-galeria__miniatura:not(#dap) img { width: 100%; height: 100%; object-fit: cover; }
.dap-galeria__miniatura:not(#dap)[aria-pressed="true"] { border-color: var(--da-magenta, #E10175); border-width: 3px; }
.dap-galeria__miniatura:not(#dap):hover { border-color: var(--da-tinta-suave, #4A4560); }

/* ---------- Índice ---------- */
.dap-indice { position: sticky; top: calc(env(safe-area-inset-top, 0px) + var(--dap-alto-cabecera, 76px)); z-index: 10; background: rgba(255, 255, 255, .96); border-block: 1px solid var(--da-linea, #E4DEEF); }
body.admin-bar .dap-indice { top: calc(32px + var(--dap-alto-cabecera, 76px)); }
.dap-indice ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 2px; overflow-x: auto; scrollbar-width: thin; }
.dap-indice a { display: inline-flex; align-items: center; min-height: 48px; padding: 0 9px; white-space: nowrap; color: var(--da-tinta, #1A1530); text-decoration: none; font-weight: 700; font-size: .98rem; border-bottom: 3px solid transparent; }
@media (min-width: 1200px) { .dap-indice ul { justify-content: space-between; } }
.dap-indice a:hover { border-bottom-color: var(--da-magenta, #E10175); }
.dap-indice a[aria-current="true"] { border-bottom-color: var(--da-magenta, #E10175); color: var(--da-magenta-hondo, #B00163); }
@media (max-width: 860px) {
	.dap-indice { position: static; background: var(--da-bruma, #F5F2FA); border: 0; }
	.dap-indice .dap-envoltura { padding-block: 16px; }
	.dap-indice ul { flex-wrap: wrap; overflow: visible; gap: 8px; }
	.dap-indice a { min-height: 44px; border: 1px solid var(--da-linea, #E4DEEF); border-radius: 999px; background: var(--da-papel, #FFFFFF); }
	.dap-indice a:hover, .dap-indice a[aria-current="true"] { border-color: var(--da-magenta, #E10175); }
}
/* Entre 861 y 1100 px el índice no cabe en una fila: pasa a dos en vez de cortarse sin avisar. */
@media (min-width: 861px) and (max-width: 1100px) {
	.dap-indice ul { flex-wrap: wrap; overflow: visible; }
	.dap-indice a { min-height: 44px; }
}

/* ---------- Secciones ---------- */
.dap-bloque { padding-block: 56px; border-bottom: 1px solid var(--da-linea, #E4DEEF); scroll-margin-top: 140px; }
body.admin-bar .dap-bloque { scroll-margin-top: 172px; }
.dap-bloque > .dap-envoltura { display: grid; gap: 24px; }
.dap-bloque > .dap-envoltura > * { min-width: 0; }
.dap-bloque h2 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); font-weight: 900; }
.dap-bloque h3 { font-size: 1.15rem; font-weight: 800; }
.dap-texto-largo { max-width: 68ch; display: grid; gap: 18px; font-size: 1.125rem; line-height: 1.6; }
.dap-texto-largo > * { margin: 0; }
.dap-texto-largo p, .dap-texto-largo li { color: var(--da-tinta-suave, #4A4560); }
.dap-texto-largo h2, .dap-texto-largo h3 { margin-top: 12px; }
.dap-texto-largo blockquote { margin: 0; padding: 4px 0 4px 20px; border-left: 4px solid var(--da-lila, #A78ADF); }
/* Descripción hecha con Elementor: la misma medida de lectura y separación que el texto normal (sin depender del tema). */
.dap-contenido--elementor .elementor-widget-text-editor:not(#dap) { max-width: 68ch; }
.dap-contenido--elementor .elementor-widget-text-editor :is(p, ul, ol, blockquote) + * { margin-top: 18px; }
.dap-video { margin-top: 8px; }
@media (max-width: 860px) { .dap-bloque { padding-block: 44px; scroll-margin-top: 96px; } body.admin-bar .dap-bloque { scroll-margin-top: 142px; } }
/*
 * Con el índice fijo, lo que recibe el foco (también con Mayús+Tab) y los saltos del índice tienen que
 * quedar por debajo de la cabecera y del índice: se reserva su alto en scroll-padding de la página
 * (alto del índice: unos 50 px en una fila y 92 px en dos, más 16 px de aire). Con poca altura
 * (34em) la cabecera deja de ser fija y se queda la regla del tema.
 */
@supports selector(:has(*)) {
	@media (min-width: 861px) and (min-height: 34.0625em) {
		html:has(.dap-indice) { scroll-padding-top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--dap-alto-cabecera, 76px) + 66px); }
		:is(.dap-bloque, .dap-paso), body.admin-bar :is(.dap-bloque, .dap-paso) { scroll-margin-top: 0; }
	}
	@media (min-width: 861px) and (max-width: 1100px) and (min-height: 34.0625em) {
		html:has(.dap-indice) { scroll-padding-top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--dap-alto-cabecera, 76px) + 108px); }
	}
}

/* ---------- Visor 3D ---------- */
.dap-visor { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 24px; align-items: start; }
.dap-visor--una { grid-template-columns: minmax(0, 1fr); }
.dap-visor > * { min-width: 0; }
.dap-visor__selector { display: grid; gap: 8px; list-style: none; margin: 0; padding: 0; }
.dap-visor__pieza:not(#dap) { width: 100%; display: grid; grid-template-columns: 52px 1fr; gap: 12px; align-items: center; text-align: left; min-height: 64px; padding: 6px 12px 6px 6px; border-radius: 16px; border: 2px solid var(--da-linea, #E4DEEF); background: var(--da-papel, #FFFFFF); font: 700 1rem/1.25 var(--da-f-texto, "Atkinson Hyperlegible", Verdana, system-ui, sans-serif); color: var(--da-tinta, #1A1530); cursor: pointer; }
.dap-visor__pieza:not(#dap) img, .dap-visor__pieza-icono { width: 52px; height: 52px; object-fit: contain; background: var(--da-bruma, #F5F2FA); border-radius: 10px; display: grid; place-items: center; color: var(--da-tinta-suave, #4A4560); }
.dap-visor__pieza:not(#dap):hover { border-color: var(--da-tinta-suave, #4A4560); }
.dap-visor__pieza:not(#dap)[aria-pressed="true"] { border-color: var(--da-magenta, #E10175); background: #FFF5FA; }
.dap-visor__principal { display: grid; gap: 12px; }
.dap-visor__escena { position: relative; border-radius: 24px; background: var(--da-bruma, #F5F2FA); overflow: hidden; aspect-ratio: 4 / 3; max-width: 100%; }
.dap-visor__previa { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; padding: 8%; }
.dap-visor__previa--icono { display: grid; place-items: center; color: var(--da-tinta-suave, #4A4560); }
.dap-visor__previa--icono .dap-icono { width: 96px; height: 96px; stroke-width: 1.2; }
.dap-visor__cargar:not(#dap) { position: absolute; left: 50%; bottom: 20px; transform: translateX(-50%); box-shadow: 0 10px 24px rgba(26, 21, 48, .18); }
.dap-visor__cargar:not(#dap):hover { transform: translateX(-50%) translateY(-2px); }
.dap-visor__escena canvas { position: absolute; inset: 0; width: 100% !important; height: 100% !important; display: block; touch-action: pan-y; cursor: grab; border-radius: inherit; }
.dap-visor__escena canvas:active { cursor: grabbing; }
.dap-visor__escena canvas.dap-visor--tactil { touch-action: none; }
.dap-visor__escena canvas:focus-visible { outline: 3px solid var(--da-tinta, #1A1530); outline-offset: -6px; box-shadow: inset 0 0 0 9px var(--da-sol, #E3B215); }
.dap-visor__controles { display: flex; flex-wrap: wrap; gap: 8px; }
.dap-visor__control:not(#dap) { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 48px; min-height: 48px; border-radius: 14px; border: 2px solid var(--da-tinta, #1A1530); background: var(--da-papel, #FFFFFF); color: var(--da-tinta, #1A1530); font: 800 1rem/1 var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); padding: 0 12px; cursor: pointer; }
.dap-visor__control--texto:not(#dap) { padding: 0 14px; }
.dap-visor__control:not(#dap):hover:not(:disabled) { background: var(--da-tinta, #1A1530); color: var(--da-papel, #FFFFFF); }
.dap-visor__control:not(#dap)[aria-pressed="true"] { background: var(--da-tinta, #1A1530); color: var(--da-papel, #FFFFFF); }
.dap-visor__control:not(#dap):disabled { opacity: .45; cursor: not-allowed; }
.dap-visor__medidas { color: var(--da-tinta-suave, #4A4560); font-size: .98rem; }
.dap-visor__nombre { color: var(--da-tinta, #1A1530); }
.dap-visor__estado:empty { display: none; }
.dap-visor__estado { font-size: .98rem; color: var(--da-tinta, #1A1530); padding: 10px 14px; border-radius: 12px; background: #FDF6DD; }
.dap-visor__ayuda { font-size: .95rem; color: var(--da-tinta-suave, #4A4560); }
.dap-visor__carga { position: absolute; inset: 0; display: grid; place-items: center; color: var(--da-tinta, #1A1530); font-weight: 700; background: rgba(245, 242, 250, .7); }
.dap-visor:fullscreen { background: var(--da-papel, #FFFFFF); padding: 16px; display: flex; flex-direction: column; gap: 12px; overflow: auto; }
.dap-visor:fullscreen .dap-visor__selector { display: flex; flex-wrap: wrap; }
.dap-visor:fullscreen .dap-visor__pieza:not(#dap) { width: auto; }
.dap-visor:fullscreen .dap-visor__principal { flex: 1; grid-template-rows: 1fr auto auto auto; min-height: 0; }
.dap-visor:fullscreen .dap-visor__escena { aspect-ratio: auto; min-height: 300px; height: 100%; }
@media (max-width: 860px) {
	.dap-visor { grid-template-columns: 1fr; }
	.dap-visor__selector { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.dap-visor__pieza:not(#dap) { grid-template-columns: 44px 1fr; font-size: .95rem; }
	.dap-visor__pieza:not(#dap) img, .dap-visor__pieza-icono { width: 44px; height: 44px; }
}

/* ---------- Archivos ---------- */
.dap-archivos { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 18px; list-style: none; margin: 0; padding: 0; }
.dap-archivo { border: 1px solid var(--da-linea, #E4DEEF); border-radius: 18px; overflow: hidden; display: grid; grid-template-rows: auto 1fr; background: var(--da-papel, #FFFFFF); min-width: 0; }
.dap-archivo__miniatura { position: relative; aspect-ratio: 4 / 3; background: var(--da-bruma, #F5F2FA); display: grid; place-items: center; overflow: hidden; }
.dap-archivo__miniatura img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: contain; padding: 10px; }
.dap-archivo--imagen .dap-archivo__miniatura img, .dap-archivo--plano .dap-archivo__miniatura img { object-fit: cover; padding: 0; }
.dap-archivo__icono { color: var(--da-tinta-suave, #4A4560); }
.dap-archivo__icono .dap-icono { width: 64px; height: 64px; stroke-width: 1.4; }
.dap-archivo__cuerpo { padding: 14px 16px 16px; display: grid; gap: 8px; align-content: start; min-width: 0; }
.dap-archivo__titulo { font-size: 1.08rem !important; overflow-wrap: anywhere; }
.dap-archivo__meta { font-size: .9rem; color: var(--da-tinta-suave, #4A4560); display: flex; flex-wrap: wrap; gap: 6px 12px; }
.dap-archivo__tipo { font-weight: 700; color: var(--da-turquesa-hondo, #278285); text-transform: uppercase; letter-spacing: .06em; overflow-wrap: anywhere; }
/* Una dirección web o un nombre de archivo largos en la descripción se parten: si no, ensanchan la tarjeta y tapan «Descargar». */
.dap-archivo__descripcion { font-size: .95rem; color: var(--da-tinta-suave, #4A4560); overflow-wrap: anywhere; }
.dap-archivo__botones { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
/* En las tarjetas los botones se reparten el ancho (y sin icono caben uno al lado del otro). */
.dap-archivo .dap-archivo__botones .dap-boton:not(#dap) { flex: 1 1 auto; justify-content: center; padding-inline: .8em; }
.dap-archivo .dap-archivo__botones .dap-boton .dap-icono { display: none; }
@media (max-width: 520px) {
	.dap-archivos { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
	.dap-archivo__cuerpo { padding: 12px; }
	.dap-archivo .dap-archivo__botones .dap-boton:not(#dap) { flex: 1 1 100%; }
}
.dap-todo { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; padding: 20px 24px; border-radius: 18px; background: var(--da-bruma, #F5F2FA); }
.dap-todo p { margin: 0; max-width: 60ch; }
.dap-todo__detalle { display: block; font-size: .95rem; color: var(--da-tinta-suave, #4A4560); margin-top: 2px; }

/* ---------- Tablas ---------- */
.dap-tabla { overflow-x: auto; border: 1px solid var(--da-linea, #E4DEEF); border-radius: 18px; max-width: 100%; background: var(--da-papel, #FFFFFF); }
.dap-tabla table { width: 100%; border-collapse: collapse; font-size: 1rem; margin: 0; border: 0; }
.dap-tabla th, .dap-tabla td { text-align: left; padding: 12px 16px; border: 0; border-bottom: 1px solid var(--da-linea, #E4DEEF); vertical-align: top; color: var(--da-tinta, #1A1530); background: transparent; }
.dap-tabla thead th { background: var(--da-bruma, #F5F2FA); font-family: var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); font-weight: 800; white-space: nowrap; }
.dap-tabla tbody th { font-weight: 700; }
.dap-tabla tr:last-child > * { border-bottom: 0; }
@media (max-width: 640px) {
	.dap-tabla--apilable { overflow: visible; border: 0; border-radius: 0; background: transparent; }
	.dap-tabla--apilable table, .dap-tabla--apilable tbody, .dap-tabla--apilable tr, .dap-tabla--apilable th, .dap-tabla--apilable td { display: block; width: auto; }
	.dap-tabla--apilable thead { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
	.dap-tabla--apilable tbody { display: grid; gap: 12px; }
	.dap-tabla--apilable tbody tr { border: 1px solid var(--da-linea, #E4DEEF); border-radius: 16px; padding: 8px 0; background: var(--da-papel, #FFFFFF); }
	.dap-tabla--apilable tbody th, .dap-tabla--apilable tbody td { padding: 6px 16px; border-bottom: 0; }
	.dap-tabla--apilable tbody th { font-family: var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); font-weight: 800; font-size: 1.05rem; }
	.dap-tabla--apilable tbody td:empty { display: none; }
	.dap-tabla--apilable td[data-etiqueta]::before { content: attr(data-etiqueta); content: attr(data-etiqueta) / ""; display: block; font-size: .8rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--da-tinta-suave, #4A4560); }
}
.dap-compat { font-weight: 700; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.dap-compat::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: currentColor; }
.dap-compat--probado { color: var(--da-turquesa-hondo, #278285); }
.dap-compat--sin-probar { color: var(--da-tinta-suave, #4A4560); }
.dap-compat--no-funciona { color: var(--da-magenta-hondo, #B00163); }

/* ---------- Pasos ---------- */
.dap-pasos { list-style: none; margin: 0; padding: 0; display: grid; gap: 22px; }
.dap-paso { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 24px; align-items: start; padding: 20px; border: 1px solid var(--da-linea, #E4DEEF); border-radius: 20px; scroll-margin-top: 140px; }
.dap-paso--sin-imagen { grid-template-columns: minmax(0, 1fr); }
.dap-paso__imagen { display: block; border-radius: 14px; overflow: hidden; background: var(--da-bruma, #F5F2FA); }
.dap-paso__imagen img { aspect-ratio: 1; object-fit: contain; width: 100%; padding: 8px; }
.dap-paso__cuerpo { display: grid; gap: 8px; min-width: 0; }
.dap-paso__cuerpo p, .dap-paso__cuerpo li { color: var(--da-tinta-suave, #4A4560); }
.dap-paso__cuerpo .dap-aviso { color: var(--da-tinta, #1A1530); }
.dap-paso__numero { color: var(--da-magenta-hondo, #B00163); }
@media (max-width: 700px) { .dap-paso { grid-template-columns: 1fr; } .dap-paso__imagen { max-width: 220px; } }

/* ---------- Conexiones ---------- */
.dap-conexiones { display: grid; gap: 32px; }
.dap-conexiones--doble { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: start; }
.dap-conexiones > * { min-width: 0; }
.dap-conexiones__plano { display: grid; gap: 8px; }
.dap-conexiones__plano a { display: block; border-radius: 18px; border: 1px solid var(--da-linea, #E4DEEF); overflow: hidden; }
.dap-conexiones__plano figcaption { font-size: .95rem; color: var(--da-tinta-suave, #4A4560); }
@media (max-width: 860px) { .dap-conexiones--doble { grid-template-columns: 1fr; } }

/* ---------- Código ---------- */
.dap-codigos { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.dap-codigo { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 16px 20px; border: 1px solid var(--da-linea, #E4DEEF); border-radius: 18px; }
.dap-codigo__icono { width: 48px; height: 48px; border-radius: 14px; background: var(--da-bruma, #F5F2FA); display: grid; place-items: center; color: var(--da-tinta, #1A1530); }
.dap-codigo__texto { display: grid; gap: 4px; min-width: 0; }
.dap-codigo .dap-archivo__tipo { text-transform: none; letter-spacing: 0; }
@media (max-width: 640px) { .dap-codigo { grid-template-columns: auto minmax(0, 1fr); } .dap-codigo .dap-archivo__botones { grid-column: 1 / -1; } }

/* ---------- Versiones y licencias ---------- */
.dap-versiones { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.dap-version { padding: 18px 22px; border-left: 4px solid var(--da-lila, #A78ADF); background: var(--da-bruma, #F5F2FA); border-radius: 0 16px 16px 0; display: grid; gap: 8px; }
.dap-version p, .dap-version li { color: var(--da-tinta-suave, #4A4560); }
.dap-version__fecha { display: inline-block; margin-left: 8px; font: 400 .95rem/1.2 var(--da-f-texto, "Atkinson Hyperlegible", Verdana, system-ui, sans-serif); color: var(--da-tinta-suave, #4A4560); }
.dap-licencias { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.dap-licencia { display: grid; gap: 2px; padding: 16px 18px; border-radius: 16px; border: 1px solid var(--da-linea, #E4DEEF); min-width: 0; }
.dap-licencia__ambito { font: 800 1.05rem/1.2 var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); }
.dap-licencia__que { font-size: .9rem; color: var(--da-tinta-suave, #4A4560); }
.dap-licencia a, .dap-licencia strong { font-weight: 700; overflow-wrap: anywhere; display: inline-flex; align-items: center; min-height: 32px; }
@media (max-width: 760px) { .dap-licencias { grid-template-columns: 1fr; } }
.dap-atribucion { display: grid; gap: 8px; }
.dap-atribucion__etiqueta { font-weight: 700; }
.dap-atribucion__fila { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.dap-atribucion code { font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; background: var(--da-bruma, #F5F2FA); color: var(--da-tinta, #1A1530); padding: 10px 14px; border-radius: 12px; font-size: .95rem; overflow-wrap: anywhere; flex: 1 1 280px; }

/* ---------- Tarjetas y rejilla ---------- */
.dap-rejilla { --dap-columnas: 3; display: grid; grid-template-columns: repeat(var(--dap-columnas), minmax(0, 1fr)); gap: 24px; list-style: none; margin: 0; padding: 0; }
.dap-rejilla > li { display: grid; min-width: 0; margin: 0; }
.dap-tarjeta { position: relative; background: var(--da-papel, #FFFFFF); border: 1px solid var(--da-linea, #E4DEEF); border-radius: var(--da-radio, 22px); overflow: hidden; display: grid; grid-template-rows: auto 1fr; transition: transform .15s ease, box-shadow .15s ease; }
.dap-tarjeta:hover { transform: translateY(-3px); box-shadow: 0 18px 40px rgba(26, 21, 48, .10); }
.dap-tarjeta:focus-within { outline: 3px solid var(--da-tinta, #1A1530); outline-offset: 3px; box-shadow: 0 0 0 6px var(--da-sol, #E3B215); }
.dap-tarjeta__imagen { position: relative; aspect-ratio: 4 / 3; background: var(--da-bruma, #F5F2FA); display: grid; place-items: center; }
.dap-tarjeta__imagen img { width: 100%; height: 100%; object-fit: cover; }
.dap-tarjeta__imagen--render img { object-fit: contain; padding: 24px; }
.dap-tarjeta__icono { color: var(--da-tinta-suave, #4A4560); }
.dap-tarjeta__icono .dap-icono { width: 72px; height: 72px; stroke-width: 1.3; }
.dap-tarjeta__cuerpo { padding: 24px; display: grid; gap: 12px; align-content: start; }
.dap-tarjeta__cuerpo p { color: var(--da-tinta-suave, #4A4560); font-size: 1.02rem; margin: 0; }
.dap-tarjeta__titulo { font-size: 1.45rem !important; font-weight: 900; }
.dap-tarjeta__titulo a { color: var(--da-tinta, #1A1530); text-decoration: none; }
.dap-tarjeta__titulo a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.dap-tarjeta__titulo a:focus-visible { outline: none; box-shadow: none; }
.dap-tarjeta__extra strong { color: var(--da-tinta, #1A1530); }
.dap-tarjeta-idea { border: 2px dashed var(--da-lila, #A78ADF); border-radius: var(--da-radio, 22px); display: grid; place-content: center; justify-items: center; text-align: center; gap: 12px; padding: 32px; min-height: 100%; }
.dap-tarjeta-idea__titulo { font-size: 1.4rem !important; font-weight: 900; }
.dap-tarjeta-idea p { color: var(--da-tinta-suave, #4A4560); margin: 0; }
@media (max-width: 960px) { .dap-rejilla { grid-template-columns: repeat(min(var(--dap-columnas), 2), minmax(0, 1fr)); } }
@media (max-width: 640px) { .dap-rejilla { grid-template-columns: 1fr; } }
/* Tarjeta con botones: «Ver el proyecto» y el enlace principal del proyecto («Jugar ahora»…), por encima del enlace que cubre la tarjeta. */
.dap-tarjeta--acciones .dap-tarjeta__cuerpo { display: flex; flex-direction: column; }
.dap-tarjeta__acciones { position: relative; z-index: 2; display: flex; flex-wrap: wrap; gap: 10px; margin-top: auto; padding-top: 6px; }
.dap-tarjeta--acciones:focus-within:not(:has(.dap-tarjeta__titulo a:focus-visible)) { outline: none; box-shadow: none; }
.dap-enlace-principal .dap-icono { width: 1.05em; height: 1.05em; }

/* ---------- Proyecto destacado ---------- */
.dap-destacado { display: grid; grid-template-columns: 1fr 1fr; background: var(--da-papel, #FFFFFF); border-radius: 28px; overflow: hidden; box-shadow: 0 24px 60px rgba(26, 21, 48, .10); }
.dap-destacado__imagen { position: relative; min-height: 380px; background: var(--da-bruma, #F5F2FA); display: grid; place-items: center; }
.dap-destacado__imagen img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.dap-destacado__texto { padding: 40px; display: grid; gap: 20px; align-content: center; min-width: 0; }
.dap-destacado__texto > p { color: var(--da-tinta-suave, #4A4560); }
.dap-destacado__titulo { font-size: 2rem !important; font-weight: 900; }
@media (max-width: 860px) { .dap-destacado { grid-template-columns: 1fr; } .dap-destacado__imagen { min-height: 260px; } .dap-destacado__texto { padding: 28px 22px; } }
/* Varios proyectos destacados: tarjetas en fila y el botón «Todos los proyectos» debajo. */
.dap-destacados { display: grid; gap: 28px; }
.dap-destacados .dap-tarjeta { box-shadow: 0 18px 44px rgba(26, 21, 48, .08); }
.dap-destacados .dap-tarjeta__imagen { aspect-ratio: 16 / 9; min-height: 0; overflow: hidden; }
.dap-destacados .dap-tarjeta__imagen img { position: absolute; inset: 0; }
.dap-destacados__todos { margin: 0; display: flex; justify-content: center; }

/* ---------- Contador ---------- */
.dap-contador { display: inline-flex; align-items: center; gap: 8px; color: var(--da-tinta-suave, #4A4560); font-size: 1rem; margin: 0; }
.dap-contador strong { font: 900 1.25rem/1 var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); color: var(--da-tinta, #1A1530); font-variant-numeric: tabular-nums; }

/* ---------- Donaciones ---------- */
.dap-donar { background: linear-gradient(135deg, #9E0059 0%, var(--da-magenta-hondo, #B00163) 45%, #7A3FB0 100%); color: #fff; border-radius: 32px; padding: 56px; display: grid; grid-template-columns: 1fr 1.15fr; gap: 40px; align-items: center; }
.dap-donar h2, .dap-donar h3, .dap-donar h4 { color: #fff; font-family: var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); margin: 0; line-height: 1.12; }
.dap-donar h2 { font-size: clamp(1.8rem, 3.4vw, 2.7rem); font-weight: 900; }
.dap-donar__texto { display: grid; gap: 18px; justify-items: start; }
.dap-donar p { color: #FCE7F1; margin: 0; }
.dap-donar__destinos { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.dap-donar__destino { background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .28); border-radius: 18px; padding: 18px 20px; display: grid; gap: 4px; }
.dap-donar__destino h3, .dap-donar__destino h4 { font-size: 1.12rem; font-weight: 800; }
.dap-donar__destino p { font-size: 1rem; }
.dap-donar .dap-boton--claro:not(#dap):focus-visible { box-shadow: 0 0 0 6px var(--da-sol, #E3B215); }
@media (max-width: 860px) { .dap-donar { grid-template-columns: 1fr; padding: 32px 22px; } }
.dap-donar-importes { display: grid; gap: 40px; }
.dap-donar-importes--doble { grid-template-columns: 1fr 1fr; align-items: start; }
.dap-donar-importes > * { min-width: 0; }
.dap-donar-importes__principal { display: grid; gap: 20px; }
.dap-donar-importes__principal h2 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); font-weight: 900; }
.dap-donar-importes__destinos { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.dap-donar-importes__destinos h3 { font-size: 1.15rem; font-weight: 800; }
.dap-importes { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 12px; }
.dap-importes .dap-boton:not(#dap) { min-width: 110px; }
@media (max-width: 860px) { .dap-donar-importes--doble { grid-template-columns: 1fr; } }
/* Donaciones sin sistema de pago todavía: «Próximamente», en grande, con el aro del logo encima. */
/* El tamaño de «Próximamente» sigue al ancho del panel (cqi), no al de la ventana, y el margen lateral al de su
   columna (%): el panel puede estar en una columna estrecha (la página Donaciones de la 1.0.3, o columnas de
   bloques, que parten las palabras con word-break). Las palabras solo se parten si no caben ni con la letra
   más pequeña. */
.dap-donar-proximo { box-sizing: border-box; container-type: inline-size; background: linear-gradient(135deg, #9E0059 0%, var(--da-magenta-hondo, #B00163) 45%, #7A3FB0 100%); color: #fff; border-radius: 32px; padding: clamp(48px, 8vw, 88px) clamp(14px, 7%, 56px); word-break: normal; overflow-wrap: break-word; display: grid; justify-items: center; gap: 18px; text-align: center; font-family: var(--da-f-texto, "Atkinson Hyperlegible", Verdana, system-ui, sans-serif); }
.dap-donar-proximo__titulo:not(#dap) { margin: 0; color: #fff; font-family: var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); font-weight: 900; font-size: clamp(1.125rem, 9vw, 5.5rem); font-size: clamp(1.125rem, 11cqi, 5.5rem); line-height: 1.05; letter-spacing: -.01em; max-width: 100%; min-width: 0; word-break: normal; overflow-wrap: break-word; hyphens: manual; }
.dap-donar-proximo__titulo::before { content: ""; display: block; width: 64px; height: 64px; margin: 0 auto 20px; border-radius: 50%; background: conic-gradient(from 210deg, #3CC2C6, #A78ADF 30%, #6AADD5 55%, #F08BBC 78%, transparent 78% 88%, #3CC2C6 88%); -webkit-mask: radial-gradient(circle, transparent 21px, #000 22px); mask: radial-gradient(circle, transparent 21px, #000 22px); }
.dap-donar-proximo__texto:not(#dap) { margin: 0; color: #FCE7F1; font-size: 1.25rem; font-size: clamp(1rem, 8.5cqi, 1.25rem); max-width: 32em; }

/* ---------- Contacto ---------- */
.dap-contacto { display: grid; gap: 20px; max-width: 640px; scroll-margin-top: 110px; }
.dap-formulario { display: grid; gap: 18px; }
.dap-campo { display: grid; gap: 6px; }
.dap-campo label { font-weight: 700; color: var(--da-tinta, #1A1530); }
.dap-campo__opcional { font-weight: 400; color: var(--da-tinta-suave, #4A4560); }
.dap-campo__ayuda { font-size: .95rem; color: var(--da-tinta-suave, #4A4560); margin: 0; }
.dap-campo input[type="text"], .dap-campo input[type="email"], .dap-campo input[type="password"], .dap-campo select, .dap-campo textarea { font: inherit; font-size: 1.05rem; color: var(--da-tinta, #1A1530); background: var(--da-papel, #FFFFFF); border: 2px solid #8E86A8; border-radius: 12px; min-height: 52px; padding: 10px 14px; width: 100%; max-width: 100%; }
.dap-campo textarea { min-height: 160px; resize: vertical; }
.dap-campo :is(input, select, textarea)[aria-invalid="true"] { border-color: var(--da-magenta-hondo, #B00163); border-width: 3px; }
/* Al saltar a un campo (por ejemplo, desde el resumen de errores) se ve también su etiqueta. */
.dap-formulario :is(input, select, textarea) { scroll-margin-top: 48px; }
.dap-campo__error { margin: 0; color: var(--da-magenta-hondo, #B00163); font-weight: 700; font-size: .98rem; display: flex; gap: 6px; }
.dap-campo__error::before { content: "!"; display: inline-grid; place-items: center; width: 22px; height: 22px; flex: none; border-radius: 50%; background: var(--da-magenta-hondo, #B00163); color: #fff; font-size: .85rem; }
.dap-campo--trampa { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.dap-casilla { display: flex; gap: 12px; align-items: flex-start; }
.dap-casilla input { width: 24px; height: 24px; margin: 2px 0 0; flex: none; accent-color: var(--da-magenta-hondo, #B00163); }
.dap-casilla label { font-weight: 400; }
.dap-envio { padding: 14px 18px; border-radius: 12px; display: grid; gap: 8px; }
.dap-envio p, .dap-envio ul { margin: 0; }
.dap-envio ul { padding-left: 1.2em; }
.dap-envio--ok { background: #E5F6F6; color: var(--da-tinta, #1A1530); border-left: 5px solid var(--da-turquesa-hondo, #278285); }
.dap-envio--error { background: #FCE7F1; color: var(--da-tinta, #1A1530); border-left: 5px solid var(--da-magenta-hondo, #B00163); }
.dap-envio:focus { outline: 3px solid var(--da-tinta, #1A1530); outline-offset: 3px; }
/* Información básica sobre protección de datos (primera capa, art. 11 LOPDGDD), justo antes de la casilla. */
.dap-info-datos { font-size: .95rem; line-height: 1.5; color: var(--da-tinta-suave, #4A4560); background: var(--da-bruma, #F5F2FA); border-radius: 12px; padding: 14px 16px; display: grid; gap: 8px; }
.dap-info-datos__titulo { margin: 0; color: var(--da-tinta, #1A1530); }
.dap-info-datos__lista { margin: 0; display: grid; gap: 6px; }
.dap-info-datos__lista > div { display: grid; grid-template-columns: 9em minmax(0, 1fr); gap: 2px 12px; }
.dap-info-datos__lista dt { font-weight: 700; color: var(--da-tinta, #1A1530); }
.dap-info-datos__lista dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 520px) { .dap-info-datos__lista > div { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Acceso a Mentes en Vuelo ---------- */
.dap-acceso { display: grid; gap: 28px; scroll-margin-top: 110px; line-height: 1.55; }
.dap-acceso h2 { font-size: clamp(1.35rem, 2.6vw, 1.75rem); font-weight: 900; }
.dap-acceso__atajo { font-weight: 700; }
.dap-acceso__pasos { display: grid; gap: 14px; max-width: 760px; }
.dap-acceso__pasos ol { list-style: none; padding: 0; display: grid; gap: 12px; counter-reset: dap-paso; }
/* El número va aparte (posición absoluta) y el texto ocupa todo el ancho que queda, tenga los trozos que tenga. */
.dap-acceso__pasos li { counter-increment: dap-paso; position: relative; padding-left: 52px; min-height: 40px; overflow-wrap: break-word; }
.dap-acceso__pasos li::before { content: counter(dap-paso); position: absolute; left: 0; top: -6px; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--da-magenta-hondo, #B00163); color: #fff; font: 900 1.15rem/1 var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); }
.dap-acceso__paso { display: block; }
.dap-acceso__formularios { display: grid; gap: 24px; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 900px) { .dap-acceso__formularios { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); } }
.dap-acceso__formulario, .dap-acceso__caja { display: grid; gap: 16px; padding: clamp(18px, 4vw, 32px); border-radius: var(--da-radio, 22px); background: var(--da-papel, #FFFFFF); border: 2px solid var(--da-linea, #E4DEEF); scroll-margin-top: 110px; min-width: 0; }
.dap-acceso__formulario:focus, .dap-acceso__caja:focus { outline: none; }
.dap-acceso__formulario:focus-visible, .dap-acceso__caja:focus-visible { outline: 3px solid var(--da-tinta, #1A1530); outline-offset: 3px; }
.dap-acceso__caja { background: var(--da-bruma, #F5F2FA); border-color: transparent; max-width: 760px; }
.dap-acceso__caja--admin { background: #FDF6DD; border-left: 6px solid var(--da-sol, #E3B215); }
.dap-acceso__caja--borrar { background: var(--da-papel, #FFFFFF); border: 2px solid var(--da-magenta-hondo, #B00163); }
.dap-acceso__caja--clave { background: var(--da-papel, #FFFFFF); border: 2px solid var(--da-linea, #E4DEEF); }
.dap-acceso__otras { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 24px; }
.dap-acceso__otras a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; }
.dap-acceso__solicitud { display: grid; gap: 10px; justify-items: start; margin: 0; }
.dap-acceso__solicitud p { margin: 0; }
.dap-acceso__acciones { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 0; }
.dap-acceso__acciones form { margin: 0; }
.dap-acceso__aviso-clave { color: var(--da-tinta, #1A1530); border-left: 4px solid var(--da-sol, #E3B215); padding-left: 10px; }
.dap-clave { display: flex; gap: 8px; align-items: center; }
.dap-clave input { flex: 1 1 auto; min-width: 0; }
.dap-clave__ver:not(#dap) { flex: none; }
.dap-acceso .dap-envio { max-width: 760px; }
.dap-acceso .dap-envio:focus:not(:focus-visible) { outline: none; }
@media (max-width: 380px) { .dap-clave { flex-wrap: wrap; } .dap-clave input { flex-basis: 100%; } }

/* ---------- Redes ---------- */
.dap-redes { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.dap-redes a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; min-width: 44px; justify-content: center; color: inherit; text-decoration: none; border-radius: 999px; }
.dap-redes--iconos a { border: 2px solid currentColor; }
.dap-redes--iconos a:hover { background: var(--da-tinta, #1A1530); color: var(--da-papel, #FFFFFF); border-color: var(--da-tinta, #1A1530); }
.dap-redes--lista { flex-direction: column; gap: 2px; }
.dap-redes--lista a { justify-content: flex-start; min-height: 36px; text-decoration: underline; text-underline-offset: .18em; }
.dap-redes-vacio { margin: 0; }

/* ---------- Diálogos ---------- */
.dap-dialogo { border: 0; padding: 0; margin: auto; border-radius: var(--da-radio, 22px); width: min(1100px, calc(100vw - 32px)); max-width: none; max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); background: var(--da-papel, #FFFFFF); color: var(--da-tinta, #1A1530); box-shadow: 0 30px 80px rgba(26, 21, 48, .35); overflow: hidden; }
.dap-dialogo[open] { display: flex; flex-direction: column; }
.dap-dialogo::backdrop { background: rgba(26, 21, 48, .72); }
.dap-dialogo__cabeza { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 12px 12px 24px; border-bottom: 1px solid var(--da-linea, #E4DEEF); flex: none; }
.dap-dialogo__titulo { font: 800 1.2rem/1.25 var(--da-f-titulo, "Nunito", ui-rounded, system-ui, sans-serif); margin: 0; overflow-wrap: anywhere; }
.dap-dialogo__acciones { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.dap-dialogo__cuerpo { padding: 20px 24px 24px; overflow: auto; flex: 1 1 auto; min-height: 0; }
.dap-dialogo__estado { margin: 0; color: var(--da-tinta-suave, #4A4560); }
.dap-dialogo__estado:empty { display: none; }
.dap-dialogo--imagen .dap-dialogo__cuerpo { display: grid; gap: 12px; justify-items: center; background: var(--da-bruma, #F5F2FA); }
.dap-dialogo--imagen img { max-width: 100%; max-height: calc(100dvh - 210px); width: auto; height: auto; object-fit: contain; border-radius: 12px; }
.dap-dialogo__leyenda { color: var(--da-tinta-suave, #4A4560); font-size: .98rem; text-align: center; }
.dap-dialogo__navegar { display: flex; gap: 8px 16px; justify-content: center; align-items: center; flex-wrap: wrap; }
.dap-dialogo__posicion { font-weight: 700; color: var(--da-tinta-suave, #4A4560); min-width: 5ch; text-align: center; font-variant-numeric: tabular-nums; }
.dap-dialogo--visor .dap-dialogo__cuerpo { padding-top: 16px; }
.dap-dialogo pre { margin: 0; padding: 18px 20px; background: #F7F5FB; border: 1px solid var(--da-linea, #E4DEEF); border-radius: 14px; overflow: auto; font: 400 .95rem/1.55 ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; color: var(--da-tinta, #1A1530); tab-size: 4; white-space: pre; }
.dap-dialogo pre code { font: inherit; background: none; padding: 0; color: inherit; }
body.dap-con-dialogo { overflow: hidden; }

/* Resaltado de código (colores con contraste AA sobre fondo claro) */
.dap-dialogo .hljs-comment, .dap-dialogo .hljs-quote { color: #5D5873; font-style: italic; }
.dap-dialogo .hljs-keyword, .dap-dialogo .hljs-selector-tag, .dap-dialogo .hljs-literal { color: #B00163; font-weight: 700; }
.dap-dialogo .hljs-string, .dap-dialogo .hljs-regexp, .dap-dialogo .hljs-attr { color: #1D6B54; }
.dap-dialogo .hljs-number, .dap-dialogo .hljs-symbol, .dap-dialogo .hljs-variable { color: #8A4B00; }
.dap-dialogo .hljs-title, .dap-dialogo .hljs-function .hljs-title, .dap-dialogo .hljs-title.function_, .dap-dialogo .hljs-section { color: #3D3AA0; font-weight: 700; }
.dap-dialogo .hljs-built_in, .dap-dialogo .hljs-type, .dap-dialogo .hljs-title.class_ { color: #1F6E70; }
.dap-dialogo .hljs-meta, .dap-dialogo .hljs-meta .hljs-keyword { color: #6B3FA0; }
.dap-dialogo .hljs-meta .hljs-string { color: #1D6B54; }
.dap-dialogo .hljs-params { color: var(--da-tinta, #1A1530); }
.dap-dialogo .hljs-emphasis { font-style: italic; }
.dap-dialogo .hljs-strong { font-weight: 700; }

/* ---------- Movimiento reducido e impresión ---------- */
@media (prefers-reduced-motion: reduce) {
	.dap-boton:not(#dap), .dap-tarjeta { transition: none; }
	.dap-boton:not(#dap):hover, .dap-tarjeta:hover { transform: none; }
	.dap-visor__cargar:not(#dap):hover { transform: translateX(-50%); }
}
@media print {
	.dap-indice, .dap-visor, .dap-galeria__miniaturas, .dap-archivo__botones, .dap-acciones, .dap-atribucion button { display: none !important; }
	.dap-bloque { padding-block: 16px; break-inside: avoid-page; }
}
