.muestra-pin{width:36px;height:36px;padding:0!important;display:grid;place-items:center;background:#557d4d!important;color:white;border:2px solid white!important;border-radius:50%!important;box-shadow:0 2px 8px #18324730;cursor:pointer}
.muestra-pin:hover,.muestra-pin[aria-expanded=true]{background:#183247!important;z-index:2}
.muestra-pin:focus-visible{outline:3px solid #183247;outline-offset:3px}
.muestra-popup{min-width:190px}.muestra-foto{display:block;width:100%;height:115px;object-fit:cover;filter:blur(4px);border-radius:9px;margin-bottom:12px}
.muestra-popup strong{display:block;font-size:16px}.muestra-popup p{font-size:12px;line-height:1.4;margin:8px 0 0;color:#65727c}
.muestra-etiqueta{display:inline-block;margin-top:5px;font-size:12px;font-weight:700;color:#557d4d}
.muestra-areas{display:flex;gap:4px;padding:4px;border-radius:30px;background:#fff;box-shadow:0 2px 10px #18324715}
.muestra-areas button{border:0;background:white;color:#183247;padding:8px 11px;border-radius:24px;cursor:pointer;font:700 12px 'Nunito Sans',sans-serif;min-height:36px}
.muestra-areas button[aria-pressed=true]{background:#183247;color:white}
.muestra-areas button:focus-visible{outline:3px solid #557d4d;outline-offset:2px}
@media(max-width:400px){.muestra-areas button{padding:8px;font-size:11px}.muestra-pin{width:32px;height:32px}}

.muestra-grupo{font:800 14px Nunito,sans-serif;background:#183247!important}
#mapa{position:relative}.mapa-cargando{position:absolute;inset:0;z-index:2;display:grid;place-items:center;pointer-events:none;background:#eaf1e5;opacity:1;transition:opacity 150ms ease-out}
.mapa-cargando.lista{opacity:0}.carga-viaje{display:flex;align-items:flex-end;gap:16px}.carga-viaje img{display:block;width:81px;height:90px;object-fit:contain;animation:perro-llegar 600ms cubic-bezier(.16,1,.3,1) both}
.carga-huellas{display:flex;gap:12px;margin-bottom:7px;color:#557d4d}.carga-huellas span{display:block;opacity:.6;animation:paso-viaje 650ms ease-out 2;animation-delay:calc(var(--paso)*120ms)}
.carga-huellas span:nth-child(even){margin-bottom:9px}.carga-huellas svg{display:block;transform:rotate(75deg)}
@keyframes paso-viaje{0%,100%{opacity:.45;scale:.95}45%{opacity:1;scale:1}}
@keyframes perro-llegar{from{translate:-12px 0;opacity:.5}to{translate:0 0;opacity:1}}
@keyframes abrir-explorador{from{opacity:.7;scale:.99}to{opacity:1;scale:1}}
@keyframes abrir-menu{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}
#vista-mapa[open]{animation:abrir-explorador 220ms cubic-bezier(.16,1,.3,1)}
#navegacion.abierto{animation:abrir-menu 150ms cubic-bezier(.16,1,.3,1)}
.muestra-areas button,.muestra-pin{transition:background-color 120ms ease-out,color 120ms ease-out}
.escena.en-pausa *{animation-play-state:paused!important}
::selection{background:#eaf1e5;color:#183247}#vista-mapa{scrollbar-color:#b9d3ad #f7f4ec;scrollbar-width:thin}
@media(prefers-reduced-motion:reduce){.carga-viaje img,.carga-huellas span,#vista-mapa[open],#navegacion.abierto{animation:none}.mapa-cargando{transition-duration:80ms}.muestra-areas button,.muestra-pin{transition:none}}

.cerrar-mapa{display:grid;place-items:center}.maplibregl-popup-close-button{min-width:28px;min-height:28px;border-radius:50%;color:#183247}.maplibregl-popup-close-button:focus-visible{outline:2px solid #557d4d;outline-offset:1px}

/* La atribución permanece visible y desplegable en cualquier tamaño. */
.maplibregl-ctrl-attrib{font:400 10px/1.45 'Nunito Sans',sans-serif!important;color:#183247!important;background:#ffffffed!important;border-radius:8px!important;padding:3px 6px!important;max-width:calc(100% - 16px)}
.maplibregl-ctrl-attrib a{color:#183247!important;text-underline-offset:2px}.maplibregl-ctrl-attrib a:hover{text-decoration:underline}
.maplibregl-ctrl-attrib.maplibregl-compact{min-height:32px;min-width:32px;padding:6px 34px 6px 8px!important}
.maplibregl-ctrl-attrib-button{width:32px!important;height:32px!important;background-size:18px!important;background-repeat:no-repeat!important;background-position:center!important;top:0!important;right:0!important;border-radius:8px}
.maplibregl-ctrl-attrib-button:focus-visible,.maplibregl-ctrl-group button:focus-visible{outline:3px solid #557d4d;outline-offset:2px}
.maplibregl-ctrl-bottom-right .maplibregl-ctrl{margin:0 8px 8px 0}.maplibregl-ctrl-group button{width:38px!important;height:38px!important}.maplibregl-ctrl-group{border-radius:10px}

/* Contacto comparte tipografía y estados tanto en portada como en la vista previa. */
.contacto-form{display:grid;gap:20px;max-width:760px;color:#183247;font:400 16px/1.5 var(--font-weewoof,'Nunito Sans'),system-ui,sans-serif}
.contacto-fila{display:grid;grid-template-columns:1fr 1fr;gap:18px}.contacto-form .contacto-campo{display:grid;gap:7px;min-width:0}.contacto-form label{font-size:14px;font-weight:700;color:#183247}
.contacto-form input:not([type=checkbox]):not([type=hidden]),.contacto-form select,.contacto-form textarea{display:block;width:100%;min-width:0;min-height:48px;padding:12px 14px;border:1px solid #aab5bd;border-radius:12px;background:#fff;color:#183247;font:400 16px/1.5 var(--font-weewoof,'Nunito Sans'),system-ui,sans-serif;caret-color:#557d4d}
.contacto-form textarea{min-height:128px;resize:vertical}.contacto-form input,.contacto-form textarea{scroll-margin-block:16px 28px}.contacto-form .contacto-error-campo{font-size:13px;font-weight:600;line-height:1.4}.contacto-form .contacto-privacidad+.contacto-error-campo{margin-top:-12px}.contacto-form ::placeholder{color:#65727c;opacity:1}
.contacto-form input:focus-visible,.contacto-form select:focus-visible,.contacto-form textarea:focus-visible{outline:3px solid #557d4d;outline-offset:3px}
.contacto-form [aria-invalid=true]{border-color:#9b3432!important}.contacto-error{color:#9b3432!important;font-size:14px;margin:0;line-height:1.45}
.contacto-acciones{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center}.contacto-acciones button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:11px 24px;border:0;border-radius:26px;background:#557d4d;color:#fff;font:700 16px/1.5 var(--font-weewoof,'Nunito Sans'),system-ui,sans-serif;cursor:pointer;touch-action:manipulation}
.contacto-acciones button:hover:not(:disabled){background:#43653d}.contacto-acciones button:disabled{background:#dce4d8;color:#455641;cursor:wait}.contacto-acciones button:focus-visible{outline:3px solid #183247;outline-offset:3px}
.contacto-estado{font-size:14px;color:#183247;max-width:60ch;margin:0}.contacto-estado:empty,.contacto-error:empty{display:none}.contacto-estado[data-estado=correcto]{color:#3e6637}
.contacto-form .contacto-privacidad{display:flex;align-items:flex-start;gap:10px;font-size:12px;font-weight:400;min-height:44px;padding-block:6px;line-height:1.5}.contacto-privacidad input[type=checkbox]{width:20px;height:20px;flex:none;accent-color:#557d4d;margin:2px 0}.contacto-privacidad a{text-decoration:underline;text-underline-offset:3px}
.contacto-honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}.contacto-form small{font-size:13px;color:#65727c;line-height:1.5}
@media(max-width:600px){.contacto-fila{grid-template-columns:1fr;gap:20px}.contacto-form{gap:18px}.contacto-acciones{align-items:flex-start;flex-direction:column}.contacto-acciones button{width:100%}.maplibregl-ctrl-attrib{font-size:10px!important}.maplibregl-popup-close-button{min-width:36px;min-height:36px}}

.colaborar{text-align:center;padding:14px 24px 0;font:700 13px/1.5 var(--font-weewoof,'Nunito Sans'),sans-serif}.colaborar a{display:inline-flex;align-items:center;min-height:44px;text-decoration:underline;text-underline-offset:4px}
#contacto-modal{position:fixed;top:var(--ww-modal-top,50dvh);bottom:auto;left:0;right:0;margin:0 auto;transform:translateY(-50%);padding:0;border:1px solid #18324718;border-radius:22px;width:min(640px,calc(100% - 32px));max-width:calc(100% - 32px);max-height:min(780px,calc(var(--ww-modal-height,100dvh) - 32px));overflow:hidden;color:#183247;background:#f7f4ec;box-shadow:0 24px 80px #10283830;font:400 16px/1.5 var(--font-weewoof,'Nunito Sans'),sans-serif}
#contacto-modal[open]{display:flex;flex-direction:column}
#contacto-modal::backdrop{background:#102838a6;backdrop-filter:blur(4px)}
.contacto-modal-cabecera{flex:none;background:#f7f4ec;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 26px 18px;border-bottom:1px solid #18324712}.contacto-modal-cabecera>div{min-width:0}.contacto-modal-cabecera h2{font:800 clamp(23px,3vw,28px)/1.18 var(--font-weewoof,'Nunito Sans'),sans-serif;letter-spacing:-.025em;margin:0;outline:none}.contacto-modal-cabecera p{font-size:14px;margin:7px 0 0;color:#65727c}.contacto-cerrar{width:44px;height:44px;display:grid;place-items:center;flex:none;border:1px solid #18324735;border-radius:50%;background:white;color:#183247;cursor:pointer;touch-action:manipulation}.contacto-cerrar:hover{background:#fffdf8}.contacto-modal-contenido{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b9c7b0 #f7f4ec;padding:20px 26px max(26px,env(safe-area-inset-bottom))}.contacto-modal-contenido .contacto-informacion{font-size:12px;line-height:1.5;color:#65727c;margin:0}.contacto-modal-contenido .contacto-informacion a,.contacto-alternativa{text-decoration:underline;text-underline-offset:3px}.contacto-modal-contenido .verificacion{display:none}.contacto-espera{display:flex;align-items:center;gap:16px;min-height:120px}.contacto-espera img{object-fit:contain;animation:ww-contacto-perro-llegar 600ms cubic-bezier(.16,1,.3,1) both}.contacto-modal-contenido altcha-widget{--altcha-color-base:#fff;--altcha-color-base-content:#183247;--altcha-color-primary:#476b40;--altcha-color-success:#476b40;--altcha-border-radius:10px;--altcha-max-width:100%}.contacto-cerrar:focus-visible{outline:3px solid #557d4d;outline-offset:3px}
@media(max-width:600px){#contacto-modal{width:calc(100% - 20px);max-width:calc(100% - 20px);max-height:calc(var(--ww-modal-height,100dvh) - 20px);border-radius:18px}.contacto-modal-cabecera{gap:12px;padding:17px 16px 14px}.contacto-modal-contenido{padding:16px 16px max(20px,env(safe-area-inset-bottom))}.contacto-modal-cabecera h2{font-size:23px}.contacto-modal-contenido .contacto-fila{gap:14px}.contacto-modal-contenido .contacto-form{gap:15px}}
#contacto-modal[data-teclado] .contacto-modal-cabecera{padding-block:10px;align-items:center}#contacto-modal[data-teclado] .contacto-modal-cabecera p{display:none}#contacto-modal[data-teclado] .contacto-modal-cabecera h2{font-size:20px}
.contacto-modal-cabecera .contacto-viajero{margin-top:4px}.contacto-viajero a{color:#183247;font-weight:700;text-decoration:underline;text-underline-offset:3px}
@media(max-height:480px){.contacto-modal-cabecera{padding-block:12px}.contacto-modal-cabecera p{display:none}.contacto-modal-contenido{padding-top:14px}}
@keyframes ww-contacto-perro-llegar{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.contacto-espera img{animation:none}}

/* Ronda 2 (10/10): movimiento de la ventana de contacto y del formulario. Solo opacity y
   translate/scale (no tocan `transform`, que centra la ventana). Entrada más lenta que la
   salida; en móvil la ventana sube como una hoja. Con movimiento reducido, solo fundidos. */
@keyframes ww-contacto-entra{from{opacity:0;translate:0 14px;scale:.97}}
@keyframes ww-contacto-sale{to{opacity:0;translate:0 8px;scale:.98}}
@keyframes ww-contacto-hoja-entra{from{opacity:0;translate:0 min(55%,45vh)}35%{opacity:1}}
@keyframes ww-contacto-hoja-sale{to{opacity:0;translate:0 min(30%,25vh)}}
@keyframes ww-contacto-funde-entra{from{opacity:0}}
@keyframes ww-contacto-funde-sale{to{opacity:0}}
#contacto-modal[open]{animation:ww-contacto-entra 300ms cubic-bezier(.23,1,.32,1) both}
#contacto-modal[open]::backdrop{animation:ww-contacto-funde-entra 300ms cubic-bezier(.23,1,.32,1) both}
#contacto-modal[data-cerrando]{animation:ww-contacto-sale 170ms cubic-bezier(.55,0,1,.45) both}
#contacto-modal[data-cerrando]::backdrop{animation:ww-contacto-funde-sale 170ms cubic-bezier(.55,0,1,.45) both}
@media(max-width:600px){#contacto-modal[open]{animation:ww-contacto-hoja-entra 420ms cubic-bezier(.23,1,.32,1) both}#contacto-modal[data-cerrando]{animation:ww-contacto-hoja-sale 200ms cubic-bezier(.55,0,1,.45) both}#contacto-modal[data-cerrando]::backdrop{animation-duration:200ms}}
/* Botón de envío: las huellas caminan sobre el mismo botón (el texto sigue debajo, sin saltos). */
.contacto-acciones button{position:relative}.contacto-enviar-texto{transition:opacity 150ms cubic-bezier(.23,1,.32,1)}
.contacto-huellas{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:7px;opacity:0;pointer-events:none;transition:opacity 150ms cubic-bezier(.23,1,.32,1)}
.contacto-huellas svg{width:15px;height:15px;rotate:90deg;opacity:.3;animation:ww-contacto-paso 960ms ease-in-out infinite paused}
.contacto-huellas svg:nth-child(odd){translate:0 -3px}.contacto-huellas svg:nth-child(even){translate:0 3px}
.contacto-huellas svg:nth-child(2){animation-delay:160ms}.contacto-huellas svg:nth-child(3){animation-delay:320ms}
.contacto-acciones button[aria-busy=true]{background:#557d4d;color:#fff;opacity:1;cursor:progress}
.contacto-acciones button[aria-busy=true] .contacto-enviar-texto{opacity:0}
.contacto-acciones button[aria-busy=true] .contacto-huellas{opacity:1}.contacto-acciones button[aria-busy=true] .contacto-huellas svg{animation-play-state:running}
@keyframes ww-contacto-paso{0%,60%,100%{opacity:.3;scale:.82}30%{opacity:1;scale:1}}
@keyframes ww-contacto-paso-suave{0%,60%,100%{opacity:.3}30%{opacity:1}}
/* Si la verificación o el formulario no cargan, siempre hay un «Reintentar». */
.contacto-reintentar{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 22px;border:1px solid #557d4d;border-radius:24px;background:#fff;color:#183247;font:700 15px/1.3 var(--font-weewoof,'Nunito Sans'),system-ui,sans-serif;cursor:pointer;touch-action:manipulation;justify-self:start}
.contacto-reintentar:hover{background:#f4f6ee}.contacto-reintentar[aria-disabled=true]{cursor:progress;opacity:.7}.contacto-reintentar:focus-visible{outline:3px solid #183247;outline-offset:3px}
.contacto-modal-contenido>.contacto-reintentar{margin:4px 0 12px}
/* Éxito: el formulario deja sitio a un perrito contento. */
.contacto-form[hidden]{display:none}
.contacto-exito{display:grid;justify-items:center;gap:6px;padding:20px 8px 8px;text-align:center;color:#183247;outline:none;font:400 16px/1.5 var(--font-weewoof,'Nunito Sans'),system-ui,sans-serif;animation:ww-contacto-exito 360ms cubic-bezier(.23,1,.32,1) both}
.contacto-panel>.contacto-exito{align-self:start;background:#fcfbf7;border-radius:16px;padding:40px 28px 28px}
.contacto-exito-perro{position:relative;width:112px;height:112px;margin-bottom:6px}
.contacto-exito-perro img{display:block;width:112px;height:112px;object-fit:contain;transform-origin:50% 100%;animation:ww-contacto-contento 1100ms cubic-bezier(.23,1,.32,1) 120ms both}
.contacto-exito-huellas{position:absolute;right:-30px;top:6px;display:grid;gap:5px;color:#557d4d}
.contacto-exito-huellas svg{width:14px;height:14px;rotate:-20deg;animation:ww-contacto-huella 420ms cubic-bezier(.23,1,.32,1) both}
.contacto-exito-huellas svg:nth-child(1){translate:8px 0;animation-delay:520ms}.contacto-exito-huellas svg:nth-child(2){animation-delay:660ms}.contacto-exito-huellas svg:nth-child(3){translate:8px 0;animation-delay:800ms}
.contacto-exito-titulo{margin:0;font:800 22px/1.25 var(--font-weewoof,'Nunito Sans'),system-ui,sans-serif;letter-spacing:-.015em;text-wrap:balance}
.contacto-exito-texto{margin:0;max-width:36ch;color:#65727c;font-size:15px}.contacto-exito-texto strong{color:#183247;font-weight:700;overflow-wrap:anywhere}
.contacto-exito-otra{margin-top:8px;min-height:44px;padding:0 6px;border:0;background:none;color:#183247;font:700 15px var(--font-weewoof,'Nunito Sans'),system-ui,sans-serif;text-decoration:underline;text-underline-offset:4px;cursor:pointer;touch-action:manipulation}
.contacto-exito-otra:focus-visible{outline:3px solid #557d4d;outline-offset:3px}
@keyframes ww-contacto-exito{from{opacity:0;translate:0 10px}}
@keyframes ww-contacto-contento{0%{translate:0 0;rotate:0deg;scale:1}14%{translate:0 2px;scale:1.05 .94}34%{translate:0 -14px;rotate:-4deg;scale:.97 1.04}54%{translate:0 0;rotate:3deg;scale:1.04 .96}72%{translate:0 -5px;rotate:-2deg;scale:1}100%{translate:0 0;rotate:0deg;scale:1}}
@keyframes ww-contacto-huella{from{opacity:0;scale:.4}to{opacity:1;scale:1}}
@media(prefers-reduced-motion:reduce){#contacto-modal[open]{animation-name:ww-contacto-funde-entra}#contacto-modal[data-cerrando]{animation-name:ww-contacto-funde-sale}.contacto-huellas svg{animation-name:ww-contacto-paso-suave}.contacto-exito,.contacto-exito-perro img{animation:none}.contacto-exito-huellas svg{animation-name:ww-contacto-funde-entra}}
