/* Evento Ocarina of Time (includes/core/evento-ocarina.php). Homenaje de fans: sin logos ni arte de Nintendo. */

/* ---------- La escena de entrada ---------- */
.kdv-oc {
	position: fixed;
	inset: 0;
	z-index: 100000; /* por debajo del aviso de cookies (100001): ese siempre se puede usar */
	display: flex;
	align-items: center;
	justify-content: center;
	background: #05071a;
	color: #fff;
	opacity: 0;
	transition: opacity .6s ease;
	overflow: hidden;
}
.kdv-oc.is-on { opacity: 1; }
.kdv-oc.is-off { opacity: 0; pointer-events: none; }
.kdv-oc__lienzo { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }

.kdv-oc__texto {
	position: relative;
	z-index: 2;
	width: min(92vw, 640px);
	padding: 0 8px;
	text-align: center;
	margin-top: min(26vh, 220px);
	text-shadow: 0 2px 18px rgba(5, 7, 26, .85);
}
.kdv-oc__texto > * { opacity: 0; transform: translateY(10px); }
.kdv-oc.is-on .kdv-oc__texto > * { animation: kdv-oc-sube .9s ease forwards; }
.kdv-oc__sobre   { animation-delay: 3.6s !important; }
.kdv-oc__titulo  { animation-delay: 3.9s !important; }
.kdv-oc__sub     { animation-delay: 4.7s !important; }
.kdv-oc__fecha   { animation-delay: 5.3s !important; }
.kdv-oc__acciones{ animation-delay: 5.9s !important; }
@keyframes kdv-oc-sube { to { opacity: 1; transform: none; } }

.kdv-oc__sobre {
	margin: 0 0 6px;
	font-size: .82rem;
	letter-spacing: .32em;
	text-transform: uppercase;
	color: #ffd88a;
}
.kdv-oc__titulo {
	margin: 0;
	font-family: var(--kdv-font-heading, inherit);
	font-size: clamp(2.2rem, 8.5vw, 4.4rem);
	line-height: 1.02;
	font-weight: 800;
	letter-spacing: .01em;
	background: linear-gradient(180deg, #fff6d6 0%, #ffd36b 45%, #f5a623 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	text-shadow: none;
	filter: drop-shadow(0 4px 22px rgba(245, 166, 35, .45));
}
.kdv-oc__sub  { margin: 12px 0 4px; font-size: clamp(1rem, 3.4vw, 1.3rem); color: #f3ecff; }
.kdv-oc__fecha{ margin: 0 0 20px; font-size: .95rem; color: #b9c6ff; letter-spacing: .04em; text-wrap: balance; }

.kdv-oc__acciones { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.kdv-oc__boton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 46px;
	padding: 0 22px;
	border: 2px solid #ffd36b;
	border-radius: 999px;
	background: linear-gradient(180deg, #ffd36b, #f5a623);
	color: #2a1a00;
	font: inherit;
	font-weight: 700;
	text-decoration: none;
	cursor: pointer;
	text-shadow: none;
}
.kdv-oc__boton--sec { background: transparent; color: #ffe9b8; }
.kdv-oc__boton:hover { filter: brightness(1.08); }
.kdv-oc__boton:focus-visible,
.kdv-oc__saltar:focus-visible, .kdv-oc__sonido:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }

.kdv-oc__sonido {
	position: absolute;
	z-index: 3;
	top: 14px;
	left: 14px;
	min-height: 40px;
	padding: 0 16px;
	border: 1px solid rgba(255, 215, 120, .7);
	border-radius: 999px;
	background: rgba(5, 7, 26, .55);
	color: #ffe9a8;
	font: inherit;
	font-size: .9rem;
	cursor: pointer;
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
	animation: kdv-oc-late 1.8s ease-in-out infinite;
}
.kdv-oc__sonido[hidden] { display: none; }
@keyframes kdv-oc-late { 50% { box-shadow: 0 0 0 6px rgba(255, 215, 120, .18); } }

.kdv-oc__saltar {
	position: absolute;
	z-index: 3;
	top: 14px;
	right: 14px;
	min-height: 40px;
	padding: 0 16px;
	border: 1px solid rgba(255, 255, 255, .45);
	border-radius: 999px;
	background: rgba(5, 7, 26, .55);
	color: #fff;
	font: inherit;
	font-size: .9rem;
	cursor: pointer;
}
.kdv-oc__legal {
	position: absolute;
	z-index: 2;
	left: 0;
	right: 0;
	bottom: 10px;
	margin: 0;
	padding: 0 14px;
	text-align: center;
	font-size: .72rem;
	color: rgba(220, 228, 255, .6);
}

/* ---------- Con el logo del juego (se sube en Personalizar; no viaja en el tema) ---------- */
.kdv-oc__logo {
	position: absolute;
	z-index: 2;
	left: 50%;
	top: 36%; /* el centro del anillo del lienzo */
	width: min(80vw, 600px);
	transform: translate(-50%, -50%) scale(.82);
	opacity: 0;
	pointer-events: none;
	mix-blend-mode: screen; /* el fondo negro de la imagen se funde con el cielo de la escena */
}
.kdv-oc.is-on .kdv-oc__logo { animation: kdv-oc-logo 1.8s cubic-bezier(.2, .8, .2, 1) 3.75s forwards; }
.kdv-oc__logo-img {
	display: block;
	width: 100%;
	height: auto;
}
.kdv-oc__brillo {
	position: absolute;
	inset: 0;
	-webkit-mask-image: var(--kdv-oc-logo);
	mask-image: var(--kdv-oc-logo);
	-webkit-mask-size: 100% 100%;
	mask-size: 100% 100%;
	mask-mode: luminance;
	background: linear-gradient(105deg, transparent 38%, rgba(255, 255, 255, .95) 50%, transparent 62%);
	background-size: 280% 100%;
	background-position: 170% 0;
	mix-blend-mode: screen;
}
.kdv-oc.is-on .kdv-oc__brillo { animation: kdv-oc-brillo 2.2s ease-in-out 5.4s 2; }
@keyframes kdv-oc-logo { 0% { opacity: 0; transform: translate(-50%, -50%) scale(.82); filter: blur(10px); } 100% { opacity: 1; transform: translate(-50%, -50%) scale(1); filter: blur(0); } }
@keyframes kdv-oc-brillo { from { background-position: 170% 0; } to { background-position: -70% 0; } }

/* Barras de cine que entran y se quedan, y una sacudida corta cuando estalla el anillo */
.kdv-oc__barra { position: absolute; left: 0; right: 0; height: 5.5vh; background: #000; z-index: 1; }
.kdv-oc__barra--sup { top: 0; transform: translateY(-100%); }
.kdv-oc__barra--inf { bottom: 0; transform: translateY(100%); }
.kdv-oc.is-on .kdv-oc__barra--sup, .kdv-oc.is-on .kdv-oc__barra--inf { animation: kdv-oc-barra 1.1s cubic-bezier(.2, .8, .2, 1) .15s forwards; }
@keyframes kdv-oc-barra { to { transform: none; } }
.kdv-oc--sacude .kdv-oc__lienzo { animation: kdv-oc-sacude .5s linear; }
@keyframes kdv-oc-sacude { 0%, 100% { transform: scale(1.03) translate(0, 0); } 20% { transform: scale(1.03) translate(-8px, 5px); } 40% { transform: scale(1.03) translate(7px, -6px); } 60% { transform: scale(1.03) translate(-5px, 3px); } 80% { transform: scale(1.03) translate(3px, -2px); } }
.kdv-oc__legal { bottom: 1.2vh !important; z-index: 2; }

/* Disposición común (con o sin logo): el título o el logo en el centro del anillo, arriba la frase y abajo, las acciones */
.kdv-oc--logo .kdv-oc__texto .kdv-oc__titulo { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); } /* con logo, el título en texto queda solo para lectores de pantalla */
.kdv-oc--centro .kdv-oc__texto { position: absolute; left: 50%; bottom: 10vh; margin: 0; transform: translateX(-50%); }
.kdv-oc--centro .kdv-oc__sobre { position: absolute; left: 0; right: 0; top: 10vh; margin: 0; text-align: center; opacity: 0; animation: none; }
.kdv-oc--centro.is-on .kdv-oc__sobre { animation: kdv-oc-sube .9s ease 3.6s forwards !important; }
.kdv-oc__logo--texto { width: min(94vw, 900px); mix-blend-mode: normal; text-align: center; }
.kdv-oc__logo--texto .kdv-oc__titulo { font-size: clamp(2.4rem, 11vw, 5.4rem); }

/* Mientras dura la escena, el aviso de cookies queda por debajo (vuelve a verse al cerrarla) */
body.kdv-oc-activo .kdv-consent { z-index: 99990; }

/* Con «reducir movimiento»: una tarjeta quieta, sin escena animada */
.kdv-oc--quieta { background: radial-gradient(ellipse at 50% 30%, #3a2f7a 0%, #141a4a 45%, #05071a 100%); }
.kdv-oc--quieta .kdv-oc__texto { margin-top: 0; }
.kdv-oc--quieta .kdv-oc__logo { opacity: 1; transform: translate(-50%, -50%); animation: none !important; }
.kdv-oc--quieta .kdv-oc__sobre { opacity: 1; animation: none !important; }
.kdv-oc--quieta .kdv-oc__brillo { display: none; }
.kdv-oc--quieta .kdv-oc__texto > * { opacity: 1; transform: none; animation: none !important; }

/* ---------- Botón flotante y ocarina ---------- */
.kdv-oc-pill {
	position: fixed;
	left: 18px;
	bottom: 82px; /* encima del botón de lluvia de píxeles (abajo a la izquierda) */
	z-index: 998;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 16px 0 12px;
	border: 2px solid #ffd36b;
	border-radius: 999px;
	background: linear-gradient(180deg, #1c2466, #0b0f33);
	color: #ffe9b8;
	font: inherit;
	font-size: .9rem;
	font-weight: 700;
	cursor: pointer;
	box-shadow: 0 6px 20px rgba(5, 7, 26, .45), 0 0 18px rgba(245, 166, 35, .35);
	animation: kdv-oc-late 3.2s ease-in-out infinite;
}
.kdv-oc-pill svg { width: 22px; height: 22px; flex: none; }
.kdv-oc-pill:hover { filter: brightness(1.12); }
.kdv-oc-pill:focus-visible { outline: 3px solid var(--kdv-primary, #2E9BD6); outline-offset: 3px; }
@keyframes kdv-oc-late { 0%, 100% { box-shadow: 0 6px 20px rgba(5,7,26,.45), 0 0 10px rgba(245,166,35,.25); } 50% { box-shadow: 0 6px 20px rgba(5,7,26,.45), 0 0 22px rgba(245,166,35,.6); } }

.kdv-oc-panel {
	position: fixed;
	left: 18px;
	bottom: 134px;
	z-index: 998;
	width: min(92vw, 330px);
	max-height: calc(100vh - 160px);
	overflow-y: auto;
	padding: 16px 16px 14px;
	border: 2px solid #ffd36b;
	border-radius: 18px;
	background: linear-gradient(180deg, #1c2466, #0b0f33);
	color: #f3ecff;
	box-shadow: 0 14px 40px rgba(5, 7, 26, .55);
}
.kdv-oc-panel[hidden] { display: none; }
.kdv-oc-panel h2 { margin: 0 28px 4px 0; font-size: 1.05rem; color: #ffd36b; }
.kdv-oc-panel p { margin: 0 0 10px; font-size: .86rem; line-height: 1.4; color: #cfd8ff; }
.kdv-oc-panel__cerrar {
	position: absolute; top: 8px; right: 8px; width: 36px; height: 36px;
	border: 0; border-radius: 50%; background: transparent; color: #fff; font-size: 1.3rem; cursor: pointer;
}
.kdv-oc-teclas { display: flex; gap: 8px; justify-content: center; margin: 4px 0 10px; }
.kdv-oc-tecla {
	width: 48px; height: 48px; border: 2px solid #8fa0ff; border-radius: 50%;
	background: #141a4a; color: #fff; font: inherit; font-size: 1.05rem; font-weight: 700; cursor: pointer;
	transition: transform .08s, background .15s;
}
.kdv-oc-tecla:active, .kdv-oc-tecla.is-sonando { transform: scale(.9); background: #f5a623; border-color: #ffd36b; color: #2a1a00; }
.kdv-oc-tecla:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
.kdv-oc-panel__ocarina { display: block; width: 150px; max-width: 60%; height: auto; margin: 0 auto 6px; filter: drop-shadow(0 6px 10px rgba(0, 0, 0, .55)); }
.kdv-oc-pill__img { width: 30px; height: auto; flex: none; display: block; }
.kdv-oc-libro { margin: 0 0 10px; font-size: .84rem; color: #cfd8ff; }
.kdv-oc-libro summary { cursor: pointer; color: #ffd36b; padding: 4px 0; }
.kdv-oc-libro__lista { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 6px; }
.kdv-oc-libro__lista li { display: grid; grid-template-columns: 1fr auto; gap: 2px 10px; align-items: center; padding: 6px 8px; border: 1px solid rgba(255, 255, 255, .14); border-radius: 10px; background: rgba(255, 255, 255, .04); }
.kdv-oc-libro__nombre { font-weight: 600; color: #fff; }
.kdv-oc-libro__notas { grid-column: 1; letter-spacing: .18em; color: #ffd36b; font-size: .95rem; }
.kdv-oc-libro__oir { grid-column: 2; grid-row: 1 / span 2; min-height: 36px; padding: 0 12px; border: 1px solid rgba(255, 215, 120, .6); border-radius: 999px; background: none; color: #ffe9a8; font: inherit; cursor: pointer; }
.kdv-oc-libro__oir:hover { background: rgba(255, 215, 120, .14); }
.kdv-oc-panel__enlaces { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: .84rem; }
.kdv-oc-panel__enlaces a, .kdv-oc-panel__enlaces button { color: #ffd36b; background: none; border: 0; padding: 4px 0; font: inherit; text-decoration: underline; cursor: pointer; }
.kdv-oc-aviso {
	min-height: 1.3em; margin: 0 0 6px; text-align: center; font-weight: 700; color: #ffe9b8; font-size: .9rem;
}

/* ---------- Inscripción rúnica y decodificador ---------- */
.kdv-oc-runas { margin: 4px 0 8px; }
.kdv-oc-runas[hidden] { display: none; }
.kdv-oc-runas__fila { display: flex; flex-wrap: wrap; gap: 5px 6px; justify-content: center; margin: 0 0 8px; }
.kdv-oc-runa { width: 22px; text-align: center; color: #ffd36b; transition: color .3s, filter .3s; }
.kdv-oc-runa svg { display: block; width: 100%; height: 30px; }
.kdv-oc-runa b { display: block; font-size: .72rem; color: #cfd8ff; font-weight: 700; }
.kdv-oc-runa--espacio { width: 10px; }
.kdv-oc-runa.is-lit { color: #fff; filter: drop-shadow(0 0 6px #ffd36b); }
.kdv-oc-runas__texto { min-height: 1.4em; margin: 0; text-align: center; font-weight: 800; letter-spacing: .12em; color: #ffe9b8; font-size: .8rem; }
.kdv-oc-tabla { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px 2px; margin: 6px 0 4px; }

/* ---------- Destellos en la portada y celebración ---------- */
.kdv-oc-motas, .kdv-oc-fiesta { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.kdv-oc-motas { z-index: 0; opacity: .75; }
.kdv-oc-fiesta { z-index: 99999; }

/* ---------- El hada ---------- */
.kdv-oc-hada {
	position: fixed;
	left: 0;
	top: 0;
	width: 56px;
	height: 56px;
	margin: -28px 0 0 -28px;
	z-index: 100002;
	pointer-events: none;
	opacity: 0;
	transition: opacity .5s ease;
	will-change: transform;
	--tono: 0deg; /* azul normal; como en el juego, el color cambia según lo que señala */
	filter: drop-shadow(0 0 7px rgba(90, 225, 255, .9)) hue-rotate(var(--tono));
}
.kdv-oc-hada.is-visible { opacity: 1; }
.kdv-oc-hada svg { display: block; width: 100%; height: 100%; overflow: visible; }
.kdv-oc-hada .ala { transform-box: fill-box; transform-origin: 100% 100%; animation: kdv-oc-aleteo .6s steps(1, end) infinite; }
.kdv-oc-hada .ala--d, .kdv-oc-hada .ala--d2 { transform-origin: 0% 100%; animation-name: kdv-oc-aleteo-d; }
.kdv-oc-hada .ala--i2, .kdv-oc-hada .ala--d2 { animation-duration: .6s; }
.kdv-oc-hada.is-reposo .ala { animation-duration: 1.1s; }
.kdv-oc-hada.is-brilla { filter: drop-shadow(0 0 16px rgba(170, 245, 255, 1)) hue-rotate(var(--tono)) brightness(1.35); }
/* Los 12 cuadros de la hoja: la fila 1 cierra las alas (V abierta, se aplana, se curva, queda de canto) y la fila 2 las vuelve a abrir. Las otras filas repiten esas dos. */
@keyframes kdv-oc-aleteo { 0% { transform: rotate(0deg) scaleX(1); } 8.33% { transform: rotate(-10deg) scaleX(0.92); } 16.67% { transform: rotate(-40deg) scaleX(0.85); } 25% { transform: rotate(-62deg) scaleX(0.8); } 33.33% { transform: rotate(14deg) scaleX(0.5); } 41.67% { transform: rotate(24deg) scaleX(0.16); } 50% { transform: rotate(24deg) scaleX(0.16); } 58.33% { transform: rotate(18deg) scaleX(0.4); } 66.67% { transform: rotate(8deg) scaleX(0.62); } 75% { transform: rotate(-8deg) scaleX(0.82); } 83.33% { transform: rotate(-4deg) scaleX(0.95); } 91.67% { transform: rotate(0deg) scaleX(1); } 100% { transform: rotate(0deg) scaleX(1); } }
@keyframes kdv-oc-aleteo-d { 0% { transform: rotate(-0deg) scaleX(1); } 8.33% { transform: rotate(10deg) scaleX(0.92); } 16.67% { transform: rotate(40deg) scaleX(0.85); } 25% { transform: rotate(62deg) scaleX(0.8); } 33.33% { transform: rotate(-14deg) scaleX(0.5); } 41.67% { transform: rotate(-24deg) scaleX(0.16); } 50% { transform: rotate(-24deg) scaleX(0.16); } 58.33% { transform: rotate(-18deg) scaleX(0.4); } 66.67% { transform: rotate(-8deg) scaleX(0.62); } 75% { transform: rotate(8deg) scaleX(0.82); } 83.33% { transform: rotate(4deg) scaleX(0.95); } 91.67% { transform: rotate(-0deg) scaleX(1); } 100% { transform: rotate(-0deg) scaleX(1); } }
.kdv-oc-hada__globo {
	position: absolute;
	left: 40px;
	top: -22px;
	padding: 6px 12px;
	border: 2px solid #ffd36b;
	border-radius: 14px 14px 14px 4px;
	background: #fffbea;
	color: #2a1a00;
	font-size: .82rem;
	font-weight: 700;
	white-space: nowrap;
	opacity: 0;
	transform: translateY(6px);
	transition: opacity .35s, transform .35s;
}
.kdv-oc-hada__globo.is-on { opacity: 1; transform: none; }
.kdv-oc-chispa {
	position: fixed;
	z-index: 100001;
	width: 6px;
	height: 6px;
	margin: -3px 0 0 -3px;
	border-radius: 50%;
	background: radial-gradient(circle, #fff, #7fe6ff 60%, rgba(127, 230, 255, 0));
	pointer-events: none;
	animation: kdv-oc-chispa .9s ease-out forwards;
}
@keyframes kdv-oc-chispa { from { opacity: 1; transform: translateY(0) scale(1); } to { opacity: 0; transform: translateY(14px) scale(.2); } }

@media (max-width: 640px) {
	/* Encima del botón EP (52 px) y, si hay barra social abajo, encima de esa barra también */
	.kdv-oc-pill { left: 12px; bottom: 82px; }
	.kdv-oc-panel { left: 12px; bottom: 136px; max-height: 70vh; overflow-y: auto; }
	body:has(.kdv-social-floating--show-mobile) .kdv-oc-pill { bottom: 134px; }
	body:has(.kdv-social-floating--show-mobile) .kdv-oc-panel { bottom: 188px; max-height: 62vh; }
	.kdv-oc__texto { margin-top: min(24vh, 170px); }
	.kdv-oc__logo { width: 124vw; } /* la imagen trae márgenes negros que se funden: así el logo ocupa casi todo el ancho */
	.kdv-oc__fecha { font-size: .86rem; letter-spacing: .02em; }
}
@media (prefers-reduced-motion: reduce) {
	.kdv-oc, .kdv-oc.is-on .kdv-oc__texto > * { transition: none; animation: none !important; opacity: 1; transform: none; }
	.kdv-oc-pill { animation: none; }
	.kdv-oc-motas, .kdv-oc-hada, .kdv-oc-chispa { display: none; }
}
