/* Grimm Travel — base: marca, tipografía, botones, barra, formularios, diálogos y pie.
   Paleta del manual azul (sin negro): #123746 estructura · #00C2CB acento · #0092B5 acompaña ·
   #0E1722 profundidad · blanco y #D9D9D9. */
@font-face { font-family: 'Montserrat'; src: url('../fonts/montserrat.woff2') format('woff2'); font-weight: 100 900; font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Montserrat'; src: url('../fonts/montserrat-ext.woff2') format('woff2'); font-weight: 100 900; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Kaushan Script'; src: url('../fonts/kaushan.woff2') format('woff2'); font-weight: 400; font-display: swap; }

:root {
  --azul: #123746; --profundo: #0E1722; --turquesa: #00C2CB; --celeste: #0092B5;
  --gris: #D9D9D9; --blanco: #fff; --claro: #F2F6F7;
  --texto: #123746; --suave: #4B6572; --linea: rgba(18, 55, 70, .14);
  --radio: 18px; --sombra: 0 18px 40px -22px rgba(14, 23, 34, .45);
  --ancho: 1240px; --lado: clamp(20px, 5vw, 56px);
  --ease: cubic-bezier(.22, .8, .24, 1);
  --pincel: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 26' preserveAspectRatio='none'%3E%3Cpath fill='%2300C2CB' d='M2 12.5c28-6 92-9.5 194-7.2 2.3.1 2.6 3.2.3 3.5-50 5.2-104 7.1-160 9.6 42 .6 86 .2 130-.8 2.6-.1 2.8 3.4.2 3.6C112 25 57 25.5 4 21c-3-.3-4-7.8-2-8.5z'/%3E%3C/svg%3E");
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 84px; }
body { margin: 0; font-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif; color: var(--texto);
  background: var(--blanco); line-height: 1.6; font-size: 1rem; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
img, video, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; }
h1, h2, h3 { margin: 0; line-height: 1.08; font-weight: 800; letter-spacing: -.02em; }
p { margin: 0 0 1em; }
ul { margin: 0; padding: 0; list-style: none; }
button { font: inherit; color: inherit; cursor: pointer; }
input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 3px solid var(--turquesa); outline-offset: 3px; border-radius: 6px; }
.i { width: 1.25em; height: 1.25em; flex: none; }
.saltar { position: fixed; left: 12px; top: -60px; z-index: 100; background: var(--turquesa); color: var(--profundo); padding: 10px 16px; border-radius: 10px; font-weight: 700; }
.saltar:focus { top: 12px; }
.contenedor { width: 100%; max-width: calc(var(--ancho) + 2 * var(--lado)); margin: 0 auto; padding: 0 var(--lado); }
.suave { color: var(--suave); }
.oscuro { background: var(--profundo); color: var(--blanco); --suave: rgba(255, 255, 255, .72); --linea: rgba(255, 255, 255, .14); }

/* Títulos: kicker + palabra fuerte + remate manuscrito con pincel turquesa */
.kicker { display: inline-flex; align-items: center; gap: .8rem; font-size: .76rem; font-weight: 700; letter-spacing: .26em; text-transform: uppercase; color: var(--azul); margin: 0 0 1rem; }
.oscuro .kicker, .kicker.claro { color: var(--turquesa); }
.kicker::before { content: ''; width: 34px; height: 2px; background: var(--celeste); border-radius: 2px; }
/* Sobre fondo claro el texto va en azul (contraste); la rayita queda celeste */
.oscuro .kicker::before, .kicker.claro::before, .portada .kicker::before, .hoy .kicker::before { background: currentColor; }
.titulo { font-size: clamp(2.1rem, 5.2vw, 4.3rem); max-width: 16ch; }
.titulo .titulo-a { display: inline; }
.script { font-family: 'Kaushan Script', 'Brush Script MT', cursive; font-weight: 400; letter-spacing: 0; color: var(--celeste);
  display: inline-block; position: relative; padding: 0 .12em .12em; transform: rotate(-3deg); }
.oscuro .script { color: var(--turquesa); }
.script::after { content: ''; position: absolute; left: 4%; right: 2%; bottom: -.08em; height: .28em; background: var(--pincel) center / 100% 100% no-repeat; opacity: .9; z-index: -1; transform-origin: left; }
.bajada { font-size: clamp(1.02rem, 1.4vw, 1.18rem); color: var(--suave); max-width: 60ch; margin-top: 1.2rem; }
.cabeza { margin-bottom: clamp(2rem, 4vw, 3.4rem); }
.subgrupo { font-size: .82rem; letter-spacing: .24em; text-transform: uppercase; font-weight: 700; color: var(--suave); margin: 2.4rem 0 1rem; }
.fuente { font-size: .82rem; color: var(--suave); margin-top: 1.6rem; }

/* Botones */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .6rem; min-height: 48px; padding: .8rem 1.5rem; border-radius: 999px;
  font-weight: 700; font-size: .95rem; text-decoration: none; border: 1.5px solid transparent; transition: transform .35s var(--ease), background-color .3s, color .3s, box-shadow .35s; }
.btn:hover { transform: translateY(-2px); }
.btn .i { width: 1.2em; height: 1.2em; }
.btn-turquesa, .btn-wa { background: var(--turquesa); color: var(--profundo); box-shadow: 0 10px 26px -12px rgba(0, 194, 203, .8); }
.btn-turquesa:hover, .btn-wa:hover { background: #2fd6de; }
.btn-vidrio { background: rgba(255, 255, 255, .12); color: #fff; border-color: rgba(255, 255, 255, .45); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.btn-linea { background: transparent; border-color: currentColor; color: inherit; }
.btn-claro { background: #fff; color: var(--azul); }
.btn-wa-ico { width: 48px; padding: 0; background: var(--turquesa); color: var(--profundo); }
.btn.ancho { width: 100%; }

/* Logo: isotipo vectorizado + nombre + Grupo Guttero */
.logo { display: inline-flex; align-items: center; gap: .7rem; color: #fff; }
.isotipo { width: 38px; height: 38px; }
.logo-texto { display: flex; flex-direction: column; line-height: 1.05; }
.logo-nombre { font-weight: 700; letter-spacing: .12em; font-size: .98rem; }
.logo-grupo { font-size: .62rem; letter-spacing: .3em; text-transform: uppercase; opacity: .85; margin-top: .25rem; }
.logo.grande .isotipo { width: 64px; height: 64px; }
.logo.grande .logo-nombre { font-size: 1.4rem; }
.logo.grande .logo-grupo { font-size: .72rem; }

/* Barra superior */
.barra { position: fixed; inset: 0 0 auto; z-index: 50; display: flex; align-items: center; gap: 1.2rem; height: 76px; padding: 0 var(--lado);
  color: #fff; transition: background-color .4s, height .4s var(--ease), box-shadow .4s; }
.barra.solida { background: rgba(14, 23, 34, .88); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); height: 64px; box-shadow: 0 8px 30px -18px rgba(0, 0, 0, .6); }
.barra-logo { text-decoration: none; margin-right: auto; }
.barra-nav { display: flex; align-items: center; gap: 1.8rem; }
.barra-nav ul { display: flex; gap: 1.5rem; }
.barra-nav a { text-decoration: none; font-weight: 600; font-size: .86rem; position: relative; padding: .4rem 0; }
.barra-nav ul a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--turquesa); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--ease); }
.barra-nav ul a:hover::after { transform: scaleX(1); }
.idiomas { display: flex; gap: .2rem; border: 1px solid rgba(255, 255, 255, .35); border-radius: 999px; padding: 3px; }
.idiomas a { font-size: .74rem; font-weight: 700; padding: .3rem .6rem; border-radius: 999px; letter-spacing: .06em; }
.idiomas a[aria-current] { background: #fff; color: var(--azul); }
.barra-wa { min-height: 42px; padding: .5rem 1.1rem; font-size: .85rem; }
.barra-menu { display: none; width: 46px; height: 46px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .4); background: rgba(255, 255, 255, .08); align-items: center; justify-content: center; }
@media (max-width: 1080px) {
  .barra-nav ul { gap: 1rem; }
}
@media (max-width: 960px) {
  .barra-menu { display: inline-flex; }
  .barra-wa span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .barra-wa { width: 46px; padding: 0; }
  .barra-nav { position: fixed; inset: 0; z-index: -1; flex-direction: column; justify-content: center; gap: 2.4rem; background: var(--profundo);
    opacity: 0; visibility: hidden; transition: opacity .35s, visibility .35s; }
  .barra.abierta .barra-nav { opacity: 1; visibility: visible; }
  .barra-nav ul { flex-direction: column; align-items: center; gap: 1.1rem; }
  .barra-nav a { font-size: 1.5rem; }
  .idiomas a { font-size: .9rem; padding: .5rem .9rem; }
}

/* Formularios */
.campo { display: flex; flex-direction: column; gap: .3rem; flex: 1 1 180px; min-width: 0; }
.campo.corto { flex: 0 1 120px; }
.campo span { font-size: .74rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--suave); }
/* Campos: 44 px de alto (el mínimo cómodo para el dedo) y 16 px de letra (si es menos, el iPhone agranda la página al tocar).
   Las fechas de iOS traen un ancho mínimo propio que las sacaba del recuadro: se anula con appearance y min-width. */
.campo input, .campo select { height: 44px; padding: 0 12px; border-radius: 12px; border: 1.5px solid var(--gris); background: #fff; color: var(--azul);
  width: 100%; min-width: 0; max-width: 100%; font-size: 16px; line-height: 1.2; }
.campo input[type="date"] { -webkit-appearance: none; appearance: none; display: block; padding: 0 10px; text-align: left; line-height: 41px; }
.campo input[type="date"]::-webkit-datetime-edit { padding: 0; }
.campo input[type="date"]::-webkit-date-and-time-value { text-align: left; margin: 0; }
.campo input[type="date"]::-webkit-calendar-picker-indicator { margin: 0; padding: 0; }
.campo select { -webkit-appearance: none; appearance: none; padding-right: 36px;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23123746' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 14px center; }
.fila.fila-fechas { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }
.campo textarea { padding: 10px 12px; border-radius: 12px; border: 1.5px solid var(--gris); background: #fff; color: var(--azul); font: inherit; font-size: 16px; line-height: 1.4; resize: vertical; }
.campo textarea::placeholder { color: #7a8d96; }
.campo textarea:focus, .campo input:focus, .campo select:focus { outline: none; border-color: var(--turquesa); box-shadow: 0 0 0 4px rgba(0, 194, 203, .22); }
.fila { display: flex; flex-wrap: wrap; gap: 14px; }
.form-caja { display: flex; flex-direction: column; gap: 14px; background: #fff; color: var(--azul); border-radius: var(--radio); padding: clamp(20px, 3vw, 30px); box-shadow: var(--sombra); }
.form-caja h3, .form-caja h2 { font-size: 1.35rem; }

/* Diálogos */
.dialogo { border: 0; padding: 0; border-radius: 22px; width: min(560px, calc(100vw - 24px)); max-height: calc(100dvh - 24px); background: #fff; color: var(--azul); box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .6); }
.dialogo::backdrop { background: rgba(14, 23, 34, .72); backdrop-filter: blur(6px); }
.dialogo[open] { animation: aparecer .45s var(--ease); }
@keyframes aparecer { from { opacity: 0; transform: translateY(24px) scale(.98); } }
.dialogo .form-caja { box-shadow: none; }
.dialogo-cerrar { position: absolute; top: 12px; right: 12px; z-index: 2; width: 44px; height: 44px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .92); color: var(--azul);
  display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 4px 14px rgba(14, 23, 34, .2); }
.dialogo-ficha { width: min(880px, calc(100vw - 24px)); }
/* Visor de la placa (devolución 4): ocupa toda la pantalla y la placa queda centrada; tocar fuera la cierra */
.dialogo-placa { width: 100vw; height: 100dvh; max-width: none; max-height: none; margin: 0; border-radius: 0; background: transparent; box-shadow: none; overflow: hidden; }
.dialogo-placa[open] { display: grid; place-items: center; }
.dialogo-placa img { display: block; max-width: calc(100vw - 24px); max-height: calc(100dvh - 40px); width: auto; height: auto; object-fit: contain; border-radius: 14px; }

/* Botón flotante de WhatsApp */
.wa-flotante { position: fixed; right: clamp(14px, 3vw, 28px); bottom: clamp(14px, 3vw, 28px); z-index: 40; width: 62px; height: 62px; border-radius: 50%;
  background: var(--turquesa); color: var(--profundo); display: flex; align-items: center; justify-content: center; box-shadow: 0 14px 34px -10px rgba(0, 194, 203, .9); transition: transform .4s var(--ease); }
.wa-flotante .i { width: 30px; height: 30px; }
.wa-flotante:hover { transform: scale(1.07); }
.wa-flotante::before { content: ''; position: absolute; inset: 0; border-radius: 50%; border: 2px solid var(--turquesa); animation: latido 2.8s ease-out infinite; }
@keyframes latido { from { transform: scale(1); opacity: .8; } to { transform: scale(1.6); opacity: 0; } }

/* Olas animadas (de la demo anterior) */
.olas { display: block; width: 100%; height: 54px; overflow: hidden; position: relative; margin: -1px 0; }
.olas svg { position: absolute; bottom: 0; left: 0; width: 200%; max-width: none; height: 100%; animation: olas 16s linear infinite; }
@keyframes olas { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* Pie */
.pie { background: var(--profundo); color: #fff; padding: clamp(56px, 8vw, 96px) 0 28px; --suave: rgba(255, 255, 255, .7); }
.pie-grilla { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 40px; }
.pie h2 { font-size: .8rem; letter-spacing: .24em; text-transform: uppercase; color: var(--turquesa); margin-bottom: 1.1rem; }
.pie p { display: flex; align-items: center; gap: .6rem; margin-bottom: .7rem; }
.pie a { text-decoration: none; }
.pie a:hover { color: var(--turquesa); }
.pie-sub { font-size: .75rem; letter-spacing: .3em; text-transform: uppercase; color: var(--suave); margin-top: .8rem; }
.pie-frase { font-size: 1.5rem; transform: none; padding: 0; margin-top: 1rem; }
.pie-frase::after { display: none; }
.pie-legal { border-top: 1px solid rgba(255, 255, 255, .14); margin-top: 48px; padding-top: 22px; font-size: .8rem; color: var(--suave); }
.pie-legal p { display: block; margin: .3rem 0; }
.leyenda { font-size: .78rem; color: var(--suave); letter-spacing: .01em; }
@media (max-width: 800px) { .pie-grilla { grid-template-columns: 1fr; } }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .olas svg, .wa-flotante::before { animation: none; }
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* Texto solo para lectores de pantalla */
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
