/*
 * Gestor de cookies: banner y preferencias (docs/gestor-cookies.md §4.12), diseño «Viña»
 * en todas las páginas públicas (decisión 1). Autónomo: no depende de .dvp ni de
 * public.css, para verse igual en las páginas clásicas y en /fine-italy.
 * Contrastes medidos con references/contrast.py: texto 16,9:1; secundario 5,95:1;
 * botón 10,66:1; borde del interruptor apagado 4,35:1 (≥ 3:1 de un control).
 */
:root { --dvp-cc-wine: #6B2737; --dvp-cc-wine-dark: #4E1B27; --dvp-cc-gold: #C79A4B; --dvp-cc-text: #211C1A;
  --dvp-cc-muted: #6B625D; --dvp-cc-line: #E8E0D4; --dvp-cc-cream: #FBF7F1; --dvp-cc-off: #857672; }

.dvp-cc, .dvp-cc-dialog { font-family: 'Public Sans', system-ui, -apple-system, 'Segoe UI', sans-serif; color: var(--dvp-cc-text);
  font-size: 15px; line-height: 1.55; letter-spacing: normal; text-align: left; }
.dvp-cc *, .dvp-cc-dialog * { box-sizing: border-box; }

/* ── Banner ─────────────────────────────────────────────────────────────── */
.dvp-cc { position: fixed; z-index: 2000; left: 0; right: 0; bottom: 0; background: #FFFFFF;
  border-top: 2px solid var(--dvp-cc-gold); box-shadow: 0 -8px 28px rgba(46, 32, 36, .12);
  max-height: 80vh; overflow-y: auto; animation: dvp-cc-in .25s ease-out; }
@keyframes dvp-cc-in { from { transform: translateY(100%); } to { transform: none; } }
.dvp-cc__inner { max-width: 1240px; margin: 0 auto; padding: 18px 24px 20px; display: flex; gap: 28px; align-items: center; }
.dvp-cc__copy { flex: 1 1 auto; min-width: 0; }
.dvp-cc__title { margin: 0 0 4px; font-family: 'Spectral', Georgia, serif; font-weight: 400; font-size: 21px; line-height: 1.25; color: var(--dvp-cc-wine); }
.dvp-cc__text { margin: 0; font-size: 14.5px; color: var(--dvp-cc-text); }
.dvp-cc__link { color: var(--dvp-cc-wine); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.dvp-cc__link:focus-visible { outline: 2px solid var(--dvp-cc-wine); outline-offset: 2px; border-radius: 3px; }
.dvp-cc__actions { flex: 0 0 auto; display: flex; gap: 10px; }

/* Los tres botones, mismo tamaño y peso (AEPD: aceptar y rechazar igual de visibles). */
.dvp-cc__btn { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; min-width: 150px; padding: 0 22px; border-radius: 999px; border: 1.5px solid var(--dvp-cc-wine);
  background: var(--dvp-cc-wine); color: #FFFFFF; font: inherit; font-size: 15px; font-weight: 600; line-height: 1.1; cursor: pointer;
  transition: background .12s, color .12s; }
.dvp-cc__btn:hover:not(:disabled) { background: var(--dvp-cc-wine-dark); border-color: var(--dvp-cc-wine-dark); }
.dvp-cc__btn--ghost { background: #FFFFFF; color: var(--dvp-cc-wine); }
.dvp-cc__btn--ghost:hover:not(:disabled) { background: var(--dvp-cc-cream); color: var(--dvp-cc-wine-dark); }
.dvp-cc__btn:focus-visible, .dvp-cc__close:focus-visible { outline: 2px solid var(--dvp-cc-wine); outline-offset: 3px; }
.dvp-cc__btn:disabled { cursor: progress; opacity: .7; }

@media (max-width: 900px) {
  .dvp-cc__inner { flex-direction: column; align-items: stretch; gap: 14px; padding: 16px 16px 18px; }
  /* Aceptar y Rechazar lado a lado, iguales; Configurar debajo. Ahorra una fila. */
  .dvp-cc__actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .dvp-cc__btn { width: 100%; min-width: 0; padding: 0 12px; }
  .dvp-cc__btn--ghost { grid-column: 1 / -1; }
  .dvp-cc__text { font-size: 14px; }
  .dvp-cc__title { font-size: 19px; }
}

/* Mientras está abierto, lo flotante de la página sube por encima del banner. */
html.dvp-cc-open .dvp-bookbar { bottom: calc(var(--dvp-cc-h, 0px) + 22px) !important; }
html.dvp-cc-open .book-bar { bottom: var(--dvp-cc-h, 0px) !important; }
html.dvp-cc-open .dvp-totop { bottom: calc(var(--dvp-cc-h, 0px) + 16px) !important; }
html.dvp-cc-open body { padding-bottom: var(--dvp-cc-h, 0px); }

/* ── Preferencias ──────────────────────────────────────────────────────── */
.dvp-cc-dialog { width: min(680px, calc(100vw - 24px)); max-height: min(86vh, 860px); padding: 0; border: 0; border-radius: 18px;
  background: #FFFFFF; box-shadow: 0 24px 64px rgba(46, 32, 36, .28); display: flex; flex-direction: column; }
.dvp-cc-dialog:not([open]) { display: none; }
.dvp-cc-dialog::backdrop { background: rgba(33, 28, 26, .55); }
.dvp-cc-dialog__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 24px 12px; border-bottom: 1px solid var(--dvp-cc-line); }
.dvp-cc-dialog__head h2 { margin: 0; font-family: 'Spectral', Georgia, serif; font-weight: 400; font-size: 26px; line-height: 1.2; color: var(--dvp-cc-wine); }
.dvp-cc__close { width: 44px; height: 44px; flex: none; border: 0; border-radius: 50%; background: transparent; color: var(--dvp-cc-muted);
  font-size: 28px; line-height: 1; cursor: pointer; }
.dvp-cc__close:hover { background: var(--dvp-cc-cream); color: var(--dvp-cc-wine); }
.dvp-cc-dialog__body { padding: 16px 24px 8px; overflow-y: auto; }
.dvp-cc__intro { margin: 0 0 16px; color: var(--dvp-cc-muted); font-size: 14.5px; }
.dvp-cc__cat { padding: 14px 0; border-top: 1px solid var(--dvp-cc-line); }
.dvp-cc__cat:first-of-type { border-top: 0; }
.dvp-cc__cathead { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.dvp-cc__catname { font-weight: 600; font-size: 16px; }
.dvp-cc__catdesc { margin: 6px 0 0; color: var(--dvp-cc-muted); font-size: 14px; }
.dvp-cc__always { font-size: 13px; font-weight: 600; color: #2F6B3E; }

.dvp-cc__toggle { position: relative; display: inline-flex; width: 52px; height: 30px; flex: none; cursor: pointer; }
.dvp-cc__switch { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.dvp-cc__track { width: 100%; height: 100%; border-radius: 999px; border: 2px solid var(--dvp-cc-off); background: #FFFFFF; position: relative; transition: background .15s, border-color .15s; }
.dvp-cc__track::after { content: ''; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: var(--dvp-cc-off); transition: transform .15s, background .15s; }
.dvp-cc__switch:checked + .dvp-cc__track { background: var(--dvp-cc-wine); border-color: var(--dvp-cc-wine); }
.dvp-cc__switch:checked + .dvp-cc__track::after { transform: translateX(22px); background: #FFFFFF; }
.dvp-cc__switch:focus-visible + .dvp-cc__track { outline: 2px solid var(--dvp-cc-wine); outline-offset: 3px; }

.dvp-cc__details { margin-top: 8px; }
.dvp-cc__details summary { cursor: pointer; color: var(--dvp-cc-wine); font-weight: 600; font-size: 14px; padding: 6px 0; }
.dvp-cc__tablewrap { overflow-x: auto; margin-top: 6px; }
.dvp-cc__table { width: 100%; border-collapse: collapse; font-size: 13px; }
.dvp-cc__table th, .dvp-cc__table td { padding: 8px 10px 8px 0; border-bottom: 1px solid var(--dvp-cc-line); vertical-align: top; text-align: left; }
.dvp-cc__table th { font-weight: 600; color: var(--dvp-cc-muted); white-space: nowrap; }
.dvp-cc-dialog__foot { display: flex; gap: 10px; justify-content: flex-end; padding: 14px 24px 20px; border-top: 1px solid var(--dvp-cc-line); }
@media (max-width: 640px) {
  .dvp-cc-dialog { width: 100vw; max-width: 100vw; max-height: 92vh; margin: auto 0 0; border-radius: 18px 18px 0 0; }
  .dvp-cc-dialog__foot { flex-direction: column-reverse; }
  .dvp-cc-dialog__foot .dvp-cc__btn { width: 100%; }
  .dvp-cc-dialog__head, .dvp-cc-dialog__body, .dvp-cc-dialog__foot { padding-left: 16px; padding-right: 16px; }
}

/* ── Recuadro de mapa o vídeo sin permiso (ExternalEmbed.astro, §4.8) ──── */
.dvp-ext { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; text-align: center;
  padding: 22px 18px; background: var(--dvp-cc-cream); border: 1px solid var(--dvp-cc-line); border-radius: 14px; color: var(--dvp-cc-text);
  font-family: 'Public Sans', system-ui, sans-serif; font-size: 14px; line-height: 1.5; }
.dvp-ext__icon { width: 34px; height: 34px; color: var(--dvp-cc-wine); }
.dvp-ext__note { margin: 0; max-width: 46ch; color: var(--dvp-cc-muted); }
.dvp-ext__always { display: inline-flex; align-items: center; gap: 8px; color: var(--dvp-cc-muted); font-size: 13.5px; cursor: pointer; min-height: 44px; }
.dvp-ext__always input { width: 18px; height: 18px; accent-color: var(--dvp-cc-wine); }

@media (prefers-reduced-motion: reduce) {
  .dvp-cc { animation: none; }
  .dvp-cc__btn, .dvp-cc__track, .dvp-cc__track::after { transition: none; }
}

/* El recuadro ocupa el sitio del contenido: sin la caja 16:9 negra del vídeo, que en el
   móvil se quedaría corta, y con el alto mínimo del mapa. */
.dvp-video:has(> .dvp-ext), .video-wrap:has(> .dvp-ext) { aspect-ratio: auto; background: transparent; box-shadow: none; border: 0; }
.dvp-video > .dvp-ext, .video-wrap > .dvp-ext { position: static; min-height: 220px; }
.dvp-ext.dvp-map, .dvp-ext.map-embed { height: auto; min-height: 220px; filter: none; }

/* ── Política de cookies: tabla del registro y botón (lib/cookie-policy.ts) ── */
.dvp-cc-pol__cat { margin: 22px 0 4px; font-size: 19px; font-weight: 400; color: var(--dvp-cc-wine); }
.dvp-cc-pol__desc { margin: 0 0 8px; }
.legal-rich .dvp-cc__table, .dvp-legal-rich .dvp-cc__table { font-size: 14px; line-height: 1.5; margin: 4px 0 6px; }
.dvp-cc__table code { font: inherit; font-size: .95em; word-break: break-word; background: none; padding: 0; }
.dvp-cc__table small { color: var(--dvp-cc-muted); font-size: 12.5px; }
.legal-rich #configurar, .dvp-legal-rich #configurar { display: inline-flex; align-items: center; justify-content: center; margin-top: 14px; }
