@charset "UTF-8";

/* *************************************************************************
 * Costaweb21 - Capa de adaptacion del diseno nuevo a JSF / RichFaces
 *
 * Se carga SIEMPRE despues de bootstrap.min.css, iconos.css y myCss.css,
 * y ANTES del application_style.css del tema del portal.
 *
 * El application_style.css de cada tema solo necesita redefinir las
 * variables de marca del bloque :root de aqui abajo.
 * ************************************************************************* */

:root {
    --cw-principal: #008ed5;
    --cw-principal-hover: #0079b5;
    --cw-texto-strong: #091e3d;
    --cw-texto-default: #6a7789;
    --cw-fondo: #f9f9f9;
    --cw-borde: #e7e7e7;
    --cw-destacado: #e94e1b;
    --cw-error: #cc0000;
    --cw-ancho-skin: 1000px;
}

/* Enganche de las variables sobre las clases del diseno --------------------
 *
 * myCss.css lleva los colores de marca a fuego en 16 sitios. Aqui se
 * reescriben todos con variables, para que el application_style.css de un
 * portal pueda cambiar la marca entera tocando solo el bloque :root. Si se
 * deja alguno fuera, ese elemento se queda en el azul de Salou pase lo que
 * pase, que es justo lo que hacia que el mecanismo pareciera funcionar sin
 * hacerlo.
 * ------------------------------------------------------------------------- */

/* Color principal */
.btnPrincipal                    { background-color: var(--cw-principal); }
.bgPrincipal                     { background-color: var(--cw-principal); }
.IconNumber                      { background-color: var(--cw-principal); }
.formIcon                        { background-color: var(--cw-principal); }
.marpoin:before                  { background-color: var(--cw-principal); }

/* Texto */
body                             { color: var(--cw-texto-strong); }
.textoColorStrong                { color: var(--cw-texto-strong); }
.textoColorDefault               { color: var(--cw-texto-default); }

/* myCss escribe "color: color: #091e3d", que es invalido y no llega a
   aplicarse; aqui queda el placeholder con su color de verdad. */
::placeholder                    { color: var(--cw-texto-default); opacity: .75; }
::-webkit-input-placeholder      { color: var(--cw-texto-default); opacity: .75; }

/* Fondos */
.bgGrisBrand                     { background-color: var(--cw-fondo); }
.check                           { background-color: var(--cw-fondo); }
.step                            { background-color: var(--cw-fondo); box-shadow: 0 0 0 8px var(--cw-fondo); }
#accordion a.collapsed > label   { background-color: var(--cw-fondo); }

/* Bordes */
.btnSecundario                   { border-color: var(--cw-borde); }
.IconPag-nav                     { border-color: var(--cw-borde); }

/* Contenedor */
.flotSkin                        { width: var(--cw-ancho-skin); }

a:link, a:visited                { color: var(--cw-principal); }
a:hover                          { color: var(--cw-principal-hover); }

/* Los items del desplegable de idioma van en .textoColorDefault en el diseno,
   pero a:link (0,1,1) le gana a la clase (0,1,0) y salian en azul. Con el
   selector de tipo delante recuperan el gris del diseno. */
a.dropdown-item:link,
a.dropdown-item:visited          { color: var(--cw-texto-default); }
a.dropdown-item:hover,
a.dropdown-item:focus            { color: var(--cw-texto-strong); }


/* *************************************************************************
 * SLOTS DE PUBLICIDAD
 *
 * Mapeo de las 14 posiciones de PosicionBanner al diseno nuevo. El ancho
 * util es 1000px (franjas) y 700px (columna de contenido) / 300px (lateral).
 *
 * Regla general: el banner conserva su tamano nominal mientras quepa y se
 * reduce proporcionalmente cuando no cabe. Como los banners de tipo IMAGEN
 * se pintan con <img width= height=>, basta con max-width/height:auto.
 * ************************************************************************* */

/* El diseno maqueta en flotantes: .flot es float:left + clear:both, y casi
   todo lo lleva. Un bloque nuestro sin clear metido entre esos flotantes no
   se coloca debajo: sus lineas esquivan los floats y caen al final, y la caja
   estira hasta ahi. Al rotulo de "Publicidad" del banner interno le pasaba
   justo eso: 9552px de alto por encima de las 51 tarjetas, comiendose todos
   los clics. De ahi que no funcionara ningun enlace de las noticias. */

.cw-lema,
.cw-fichas,
.cw-seccion,
.cw-ads-franja,
.cw-ads-cabecera,
.cw-ads-interno,
.cw-ads-lateral,
.cw-adsense,
.cw-video,
.cw-banner-rotulo {
    clear: both;
}

.cw-banner {
    text-align: center;
    line-height: 0;
}

.cw-banner img,
.cw-banner object,
.cw-banner embed,
.cw-banner iframe {
    max-width: 100%;
    height: auto;
    border: 0;
}

/* Rotulo "Publicidad" sobre los bloques de anuncios */
.cw-banner-rotulo {
    font-size: 65%;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--cw-texto-default);
    opacity: .65;
    line-height: 1;
    margin-bottom: 4px;
}

/* --- Franja superior: SUPERIOR_IZQ 728x90 + SUPERIOR_DCHA 220x90 --------- */
/* --- Franja inferior: INFERIOR_IZQ 728x90 + INFERIOR_DCHA 220x90 --------- */

.cw-ads-franja {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 15px;
    width: 100%;
}

.cw-ads-franja .cw-banner-728x90 { flex: 0 1 728px; }
.cw-ads-franja .cw-banner-220x90 { flex: 0 1 220px; }

/* El 220x90 solo acompana al leaderboard cuando los dos caben de verdad */
@media (max-width: 991px) {
    .cw-ads-franja .cw-banner-220x90 { display: none; }
}

/* --- Franja de cabecera: CABECERA_IZQ 468x60 + CABECERA_DCHA 192x60 ------ */
/* Fuera de la cabecera fija, para no crecer su altura en movil.            */

.cw-ads-cabecera {
    display: none;
}

@media (min-width: 992px) {
    .cw-ads-cabecera {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        width: 100%;
    }
    .cw-ads-cabecera .cw-banner-468x60 { flex: 0 0 468px; }
    .cw-ads-cabecera .cw-banner-192x60 { flex: 0 0 192px; }
}

/* --- BANNER_TIEMPO 40x40: dentro de la cabecera, junto al idioma --------- */

.cw-ads-tiempo {
    width: 40px;
    height: 40px;
    flex: 0 0 40px;
    overflow: hidden;
}

.cw-ads-tiempo img { width: 40px; height: 40px; }

@media (max-width: 596px) {
    .cw-ads-tiempo { display: none; }
}

/* --- BANNER_MENU 728x90: pie del modal de categorias --------------------- */

.cw-ads-menu {
    width: 100%;
    padding: 15px 0 0 0;
    border-top: 1px solid var(--cw-borde);
    margin-top: 15px;
}

/* --- BANNER_INTERNO_HOME 660x90: columna de contenido (700px) ------------ */

.cw-ads-interno {
    width: 100%;
    margin: 15px 0;
}

/* --- LATERAL 1..5: columna derecha de 300px ------------------------------ */

.cw-ads-lateral {
    width: 100%;
    margin-bottom: 15px;
}

.cw-ads-lateral .cw-banner-300x250 { min-height: 0; }

/* En movil la columna lateral pasa debajo; centramos y limitamos a 300 */
@media (max-width: 767px) {
    .cw-ads-lateral { max-width: 300px; margin-left: auto; margin-right: auto; }
}

/* --- INTERSTITIAL 800x600 ------------------------------------------------ */

#interstitial {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0, 0, 0, .6);
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 15px;
}

#interstitial_banner {
    background: #fff;
    border-radius: 6px;
    padding: 10px;
    max-width: 820px;
    width: 100%;
    max-height: 100%;
    overflow: auto;
}

#interstitial_banner img { max-width: 100%; height: auto; }

.cw-interstitial-cerrar {
    display: block;
    text-align: right;
    font-size: 130%;
    line-height: 1;
    margin-bottom: 6px;
    cursor: pointer;
}


/* *************************************************************************
 * FICHAS DE CONTENIDO
 *
 * Rejilla de 6 columnas. tipoFicha decide cuantas ocupa cada ficha, con lo
 * que se conserva el control editorial que ya existe en el backoffice:
 *   PEQUENA -> 2 de 6 (3 por fila)
 *   MEDIANA -> 3 de 6 (2 por fila)
 *   GRANDE  -> 6 de 6 (1 por fila)
 * ************************************************************************* */

.cw-fichas {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
    width: 100%;
    margin: 15px 0;
}

@media (min-width: 576px) {
    .cw-fichas { grid-template-columns: repeat(6, 1fr); }
    .cw-ficha-pequena { grid-column: span 3; }
    .cw-ficha-mediana { grid-column: span 3; }
    .cw-ficha-grande  { grid-column: span 6; }
}

/* Tres por fila para PEQUENA y MEDIANA. En produccion las 51 fichas de la
   portada son MEDIANA, asi que el tipo no se estaba usando para diferenciar;
   GRANDE se reserva como destacado a todo el ancho, que es para lo que sirve. */
@media (min-width: 768px) {
    .cw-ficha-pequena { grid-column: span 2; }
    .cw-ficha-mediana { grid-column: span 2; }
    .cw-ficha-grande  { grid-column: span 6; }
}

.cw-ficha {
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 6px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .08), 0 4px 12px rgba(0, 0, 0, .05);
    height: 100%;
}

.cw-ficha-media {
    position: relative;
    overflow: hidden;
    background: var(--cw-fondo);
}

.cw-ficha-pequena .cw-ficha-media { min-height: 100px; }
.cw-ficha-mediana .cw-ficha-media,
.cw-ficha-grande  .cw-ficha-media { min-height: 190px; }

/* El <a> es inline y envuelve un <img> en block, con lo que se quedaba con
   caja de 0x0 y la imagen no era clicable.

   El min-height heredado del contenedor es lo que hace que el hueco se pueda
   pulsar aunque la imagen no haya cargado todavia: con loading="lazy" el <a>
   tendria alto 0 hasta que llega la imagen, y ese rato no seria clicable. */
.cw-ficha-media a {
    display: block;
    width: 100%;
    min-height: inherit;
}

.cw-ficha-media img {
    display: block;
    width: 100%;
    height: auto;
    border: 0;
}

.cw-ficha-cuerpo {
    padding: 15px;
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
}

/* El diseno no le pone tamano a los titulares: myCss hace que h1..h6 hereden
   font-size, y la rejilla de tarjetas va dentro de un .redu90, con lo que
   quedan en 14.4px. El peso, 500, es el del reboot de Bootstrap. Aqui se
   escribe explicito porque nuestra rejilla no lleva .redu90. */
.cw-ficha-titulo {
    font-size: 90%;
    font-weight: 500;
    margin: 0 0 8px 0;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}

/* La ficha GRANDE es la tarjeta de hotel del diseno: 110% y 600 */
.cw-ficha-grande .cw-ficha-titulo { font-size: 110%; font-weight: 600; -webkit-line-clamp: 2; }

.cw-ficha-titulo a { color: var(--cw-texto-strong); text-decoration: none; }
.cw-ficha-titulo a:hover { color: var(--cw-principal); }

.cw-ficha-localizacion {
    font-size: 90%;
    font-weight: 400;
    opacity: .9;
    margin-bottom: 6px;
}

/* Mismo criterio que el menu: negro en reposo y azul al pasar por encima.
   El diseno pinta este texto en gris (#6a7789); aqui va en el negro del
   titular por decision propia. */
.cw-ficha-breve {
    font-size: 90%;
    font-weight: 300;
    color: var(--cw-texto-strong);
    margin: 0;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
}

.cw-ficha-breve p { margin: 0; }

.cw-ficha-breve a,
.cw-ficha-breve a:link,
.cw-ficha-breve a:visited { color: var(--cw-texto-strong); }

/* !important porque el contenido pegado desde el editor trae colores en linea
   y si no, el hover no se notaria en esos parrafos. */
.cw-ficha-breve a:hover,
.cw-ficha-breve a:hover *,
.cw-ficha-breve a:focus,
.cw-ficha-breve a:focus * { color: var(--cw-principal) !important; }

.cw-ficha-botones {
    margin-top: auto;
    padding-top: 12px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

/* Botones de contenido: el color lo pone el backoffice por style inline */
.boton_contenido {
    display: inline-block;
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 80%;
    line-height: 1.2;
    text-align: center;
}

.boton_contenido a { text-decoration: none; color: inherit; }


/* *************************************************************************
 * CABECERAS DE SECCION
 * ************************************************************************* */

.cw-seccion { width: 100%; margin: 15px 0; }

.cw-seccion-cabecera {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 7px;
}

.cw-seccion-titulo {
    font-family: 'Quando', sans-serif;
    font-size: 110%;
    font-weight: 600;
    margin: 0;
}

.cw-seccion-cabecera .formIcon {
    cursor: pointer;
    flex: 0 0 auto;
}

.cw-separador {
    width: 100%;
    border-bottom: 1px solid #e0e0e0;
    margin: 7px 0;
}


/* *************************************************************************
 * PREVIEW / FICHA DE DETALLE
 * ************************************************************************* */

#rec_visualiz { width: 100%; }

.txt_titular_grande h1 {
    font-family: 'Quando', sans-serif;
    font-size: 150%;
    font-weight: 600;
    margin: 0 0 10px 0;
}

.txt_antetitulo { font-size: 90%; text-transform: uppercase; color: var(--cw-texto-default); }
.txt_subtitulo  { font-size: 110%; font-weight: 300; color: var(--cw-texto-default); }
.txt_precio_rojo { color: var(--cw-destacado); font-weight: 600; font-size: 120%; }
.txt_color_bold { font-weight: 600; color: var(--cw-texto-strong); }

#tit_seccion h1, #tit_seccion h2 {
    font-size: 100%;
    font-weight: 400;
    color: var(--cw-texto-default);
    margin: 0 0 10px 0;
}

/* Galeria de imagenes / video */

#rec_galeria { width: 100%; margin: 15px 0; }

#galeria_fotovideo_grande { width: 100%; text-align: center; }
#galeria_fotovideo_grande img,
#galeria_fotovideo_grande iframe { max-width: 100%; height: auto; border: 0; }

#pie_galeria { font-size: 85%; color: var(--cw-texto-default); padding: 6px 0; }

/* Mapa de Google.
   El contenedor va en un .cajaOverflow, que es overflow:hidden y por tanto
   crea un contexto de formato propio: en vez de solaparse con los flotantes
   se encoge para esquivarlos. Con clear se coloca debajo y conserva su ancho,
   que es lo que el mapa congela al construirse. */

#map {
    max-width: 100%;
    clear: both;
}

#map + *, .cajaOverflow { clear: both; }

/* Paginador servidor */

#paginador { width: 100%; text-align: center; margin: 20px 0; }

.boton-pagina, .boton-pagina-seleccionada {
    display: inline-block;
    min-width: 34px;
    padding: 6px 10px;
    margin: 2px;
    border-radius: 20px;
    border: 1px solid var(--cw-borde);
    text-decoration: none;
    font-size: 90%;
}

.boton-pagina-seleccionada {
    background-color: var(--cw-principal);
    border-color: var(--cw-principal);
    color: #fff;
}

.boton-pagina:hover { border-color: var(--cw-principal); }

#sinresultados { padding: 30px 0; text-align: center; }
.txt_sin_resultados { color: var(--cw-texto-default); }


/* *************************************************************************
 * FORMULARIOS JSF (h:inputText, h:inputTextarea, h:selectBooleanCheckbox)
 * ************************************************************************* */

/* myCss deja los inputs sin borde y con transform:scale(.9) desde la esquina
   superior izquierda (el truco para que iOS no haga zoom al enfocar), ademas
   de border-radius:0 !important. Por eso el campo NO se estiliza directamente:
   quien pone la caja blanca redondeada es el .wrap que lo envuelve, igual que
   en el diseno. Aqui solo compensamos el 10% que se come el scale, que en el
   diseno original dejaba un hueco muerto a la derecha de cada campo. */

.wrap input,
.wrap textarea {
    width: 111.2%;
}

.campo_area_masinfo {
    resize: vertical;
    min-height: 120px;
    padding: 10px 15px;
    background: transparent;
    border: 0;
    outline: none;
    font-family: inherit;
}

.cw-captcha-campo { width: 90px; flex: 0 0 90px; }
.campotextocaptcha { text-align: center; }

.cw-campo { width: 100%; margin-bottom: 15px; }

.cw-campo-etiqueta {
    display: block;
    font-size: 85%;
    color: var(--cw-texto-default);
    margin-bottom: 4px;
}

/* El aviso de error se pinta dentro de un .flot, que es float:left. Sin clear,
   estas rejillas se colocan al lado del flotante en vez de debajo y se quedan
   sin ancho: las dos columnas de 310px pasaban a 75 y 53px y los campos a
   55px. Es lo que descuadraba el formulario en cuanto salia el aviso. */

.cw-form-fila,
.cw-campo {
    clear: both;
}

.cw-form-fila {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0 20px;
}

@media (min-width: 768px) {
    .cw-form-fila { grid-template-columns: 1fr 1fr; }
}

.cw-condiciones {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 90%;
}

/* myCss trae input[type="checkbox"] { display: none } porque el diseno oculta
   el checkbox real y pinta un label.check en su sitio. Nuestros formularios
   usan el checkbox de JSF, asi que hay que devolverlo a la vista o el usuario
   no ve donde aceptar. */
.cw-condiciones input[type="checkbox"] {
    display: inline-block;
    width: 18px;
    height: 18px;
    margin-top: 2px;
    accent-color: var(--cw-principal);
    cursor: pointer;
}

.cw-captcha {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.cw-captcha img { max-width: 100%; height: auto; border: 0; }

.bot_naranja, .bot_azul {
    display: inline-block;
    min-height: 40px;
    padding: 9px 28px;
    border: 0;
    border-radius: 20px;
    background-color: var(--cw-principal);
    color: #fff;
    font-family: inherit;
    font-size: 90%;
    cursor: pointer;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .20), 0 4px 12px rgba(0, 0, 0, .15);
}

.bot_naranja:hover, .bot_azul:hover { background-color: var(--cw-principal-hover); color: #fff; }

.info {
    display: block;
    padding: 10px 15px;
    margin-bottom: 10px;
    border-radius: 6px;
    background: rgba(0, 142, 213, .1);
    color: var(--cw-texto-strong);
    font-size: 90%;
}

.error_captcha, .titulocaptcha { color: var(--cw-error); font-size: 85%; }


/* *************************************************************************
 * PIE
 * ************************************************************************* */

.cw-pie { width: 100%; }

.cw-pie a, .txt_pie { color: var(--cw-texto-default); text-decoration: none; }
.cw-pie a:hover     { color: var(--cw-principal); }

.txt_pie_destacado, .select { font-weight: 600; color: var(--cw-texto-strong); }
.link { color: var(--cw-principal); }


/* *************************************************************************
 * CONSENTIMIENTO DE COOKIES
 *
 * Aviso inferior y panel de preferencias. Los botones de rechazar y de
 * aceptar comparten tamano, tipografia y jerarquia visual: si rechazar
 * costara mas que aceptar, el consentimiento no valdria.
 * ************************************************************************* */

#cw-cookies-aviso {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 1900;
    background: #fff;
    border-top: 1px solid var(--cw-borde);
    box-shadow: 0 -2px 16px rgba(9, 30, 61, .12);
    padding: 16px 20px;
}

.cw-cookies-caja {
    max-width: var(--cw-ancho-skin);
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.cw-cookies-texto { flex: 1 1 380px; }

.cw-cookies-texto h2 {
    font-family: 'Quando', sans-serif;
    font-size: 105%;
    font-weight: 600;
    margin: 0 0 4px 0;
}

.cw-cookies-texto p {
    font-size: 85%;
    line-height: 1.5;
    color: var(--cw-texto-default);
    margin: 0;
}

.cw-cookies-botones {
    flex: 0 0 auto;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

/* Botones del gestor. No reutilizan .cajaBtn del diseno porque cookies.js va
   sin jQuery y necesita elementos <button> planos y predecibles. */

.cw-btn {
    display: inline-block;
    min-height: 40px;
    padding: 9px 20px;
    border-radius: 20px;
    border: 1px solid var(--cw-borde);
    background: #fff;
    color: var(--cw-texto-strong);
    font-family: inherit;
    font-size: 85%;
    font-weight: 600;
    line-height: 1.2;
    width: auto;
    cursor: pointer;
    white-space: nowrap;
}

.cw-btn-principal {
    background: var(--cw-principal);
    border-color: var(--cw-principal);
    color: #fff;
}

.cw-btn-principal:hover { background: var(--cw-principal-hover); border-color: var(--cw-principal-hover); }
.cw-btn-secundario:hover { border-color: var(--cw-principal); color: var(--cw-principal); }

.cw-btn:focus-visible,
.cw-cookies-cerrar:focus-visible {
    outline: 2px solid var(--cw-principal);
    outline-offset: 2px;
}

/* --- Panel de preferencias ---------------------------------------------- */

#cw-cookies-panel {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    z-index: 1950;
    background: rgba(9, 30, 61, .5);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 15px;
}

.cw-cookies-panel-caja {
    background: #fff;
    border-radius: 8px;
    width: 100%;
    max-width: 620px;
    max-height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    box-shadow: 0 8px 40px rgba(9, 30, 61, .25);
}

.cw-cookies-panel-cabecera {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 18px 20px;
    border-bottom: 1px solid var(--cw-borde);
}

.cw-cookies-panel-cabecera h2 {
    font-family: 'Quando', sans-serif;
    font-size: 115%;
    font-weight: 600;
    margin: 0;
}

.cw-cookies-cerrar {
    width: auto;
    border: 0;
    background: transparent;
    font-size: 120%;
    line-height: 1;
    padding: 4px;
    cursor: pointer;
    color: var(--cw-texto-default);
}

.cw-cookies-panel-cuerpo {
    padding: 18px 20px;
    overflow-y: auto;
    flex: 1 1 auto;
}

.cw-cookies-panel-intro {
    font-size: 85%;
    color: var(--cw-texto-default);
    margin: 0 0 18px 0;
    line-height: 1.5;
}

.cw-cat { padding: 14px 0; border-bottom: 1px solid var(--cw-borde); }
.cw-cat:last-child { border-bottom: 0; padding-bottom: 0; }

.cw-cat-cabecera {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 4px;
}

.cw-cat-nombre { font-weight: 600; font-size: 95%; margin: 0; cursor: pointer; }

.cw-cat-fijo {
    font-size: 80%;
    color: var(--cw-texto-default);
    background: var(--cw-fondo);
    border: 1px solid var(--cw-borde);
    border-radius: 12px;
    padding: 2px 10px;
    white-space: nowrap;
}

/* El interruptor va sin premarcar: la casilla marcada por defecto no es
   consentimiento valido. cookies.js las rellena con lo ya decidido. */
input.cw-cat-check {
    display: inline-block;
    width: 20px;
    height: 20px;
    flex: 0 0 20px;
    margin: 0;
    accent-color: var(--cw-principal);
    cursor: pointer;
    transform: none;
    padding: 0;
}

.cw-cat-desc {
    font-size: 85%;
    color: var(--cw-texto-default);
    line-height: 1.5;
    margin: 0;
}

.cw-cookies-panel-pie {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    padding: 16px 20px;
    border-top: 1px solid var(--cw-borde);
    background: var(--cw-fondo);
}

@media (max-width: 600px) {
    /* En columna y ocupando el ancho: si el contenedor se encoge al contenido,
       los botones quedan estrechos y descolgados en vez de a lo ancho. */
    .cw-cookies-botones,
    .cw-cookies-panel-pie {
        flex: 1 1 100%;
        width: 100%;
        flex-direction: column-reverse;
    }
    .cw-cookies-botones .cw-btn,
    .cw-cookies-panel-pie .cw-btn {
        width: 100%;
        min-height: 44px;   /* objetivo tactil minimo recomendado */
    }
}

/* --- Contenido incrustado bloqueado ------------------------------------- */

.cw-video.cw-bloqueado iframe { display: none; }

.cw-embed-bloqueado {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 20px;
    text-align: center;
    background: var(--cw-fondo);
    border: 1px solid var(--cw-borde);
}

.cw-embed-bloqueado p {
    font-size: 85%;
    color: var(--cw-texto-default);
    margin: 0;
    max-width: 46ch;
}


/* *************************************************************************
 * CARRUSEL DE PORTADA (jCarousel de RichFaces)
 * ************************************************************************* */

#carrusel { width: 100%; overflow: hidden; }

#slider_sup_contenedor { position: relative; }

#slider_sup_contenedor img { display: block; max-width: 100%; height: auto; border: 0; }

#slider_sup_fondo_texto {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 46px;
    background: rgba(0, 0, 0, .55);
}

#slider_sup_texto {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    padding: 8px 10px;
    color: #fff;
    font-size: 85%;
    line-height: 1.2;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}


/* *************************************************************************
 * AJUSTES SOBRE EL DISENO BASE
 * ************************************************************************* */

/* myCss fija .flotSkin en width; con flex-shrink se comporta como max-width,
   pero lo dejamos explicito para que no dependa del contenedor. */
.flotBody { display: flex; justify-content: center; }
.flotSkin { max-width: var(--cw-ancho-skin); }

/* *************************************************************************
 * MARCO Y COLUMNA DE PUBLICIDAD
 *
 * La columna de anuncios sale del contenedor de 1000px y se coloca a su
 * derecha, con lo que el contenido recupera el ancho completo y las noticias
 * caben a tres columnas de 313px en vez de 213.
 *
 * Hace falta 1000 + 20 de hueco + 300 = 1320px de ventana. Por debajo de eso
 * el rail cae debajo del contenido, centrado, igual que en movil.
 * ************************************************************************* */

.cw-marco {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
}

.cw-rail {
    width: 100%;
    max-width: 300px;
    margin: 0 auto;
}

@media (min-width: 1320px) {

    .cw-marco {
        flex-direction: row;
        align-items: flex-start;
        justify-content: center;
        gap: 20px;
    }

    /* myCss le pone margin:15px auto al contenedor. Dentro de un flex, las
       margenes auto se comen todo el espacio libre y empujaban el rail fuera
       de la ventana, con 38px de scroll horizontal. */
    .cw-marco > .flotSkin {
        flex: 0 0 var(--cw-ancho-skin);
        margin-left: 0;
        margin-right: 0;
    }

    .cw-rail {
        flex: 0 0 300px;
        margin: 0;
    }
}

/* La cabecera es fixed-top: su altura real manda sobre el margen del
   contenido. Se recalcula en costaweb21.js (ajustaAlturaCabecera). */
.mContent { margin-top: 190px; }

@media (max-width: 767px) {
    .mContent { margin-top: 220px; }
}

/* RichFaces mete tablas de layout en algunos componentes: que no desborden */
#contenido table { max-width: 100%; }

/* Imagenes de contenido enviadas por el editor dentro del cuerpo HTML */
#rec_visualiz img { max-width: 100%; height: auto; }


/* *************************************************************************
 * CABECERA: BUSCADOR, SUBMENU Y MODALES DE CATEGORIAS
 * ************************************************************************* */

.divSearch form {
    position: relative;
    width: 100%;
    margin: 0;
}

.divSearch .campobuscar {
    width: 100%;
    border: 0;
    background: transparent;
    box-shadow: none;
    padding-right: 46px;
}

.divSearch .campobuscar:focus { border: 0; }

/* .formIcon es el circulo azul del buscador. En el diseno era un <span>
   decorativo; aqui es el boton que envia el formulario. */
button.formIcon {
    width: auto;
    border: 0;
    color: #fff;
    cursor: pointer;
    line-height: 1;
}

button.formIcon:before {
    font-family: "salou";
    font-style: normal;
    font-weight: normal;
    display: inline-block;
    text-align: center;
}

button.formIcon.icon-lupa:before { content: '\e802'; }

/* En el diseno cada boton del menu envuelve su texto en un <h1>, y de ahi
   heredaba la Quando. Esos once h1 se quitaron porque competian con el titular
   real de la pagina, asi que la tipografia hay que pedirla explicitamente:
   misma letra y mismo peso que el diseno, sin el h1. */

.btnNav label {
    font-family: 'Quando', sans-serif;
    font-weight: 600;
}

/* En el diseno el boton del menu es un <a> sin href (solo abre el modal por
   data-toggle), asi que nunca coge el color de enlace y se queda en el
   #091e3d del body. El nuestro si lleva href, con lo que a:link lo pintaba
   de azul. Se devuelve al negro del diseno y el azul pasa a ser el estado
   de hover, que antes no tenia. */

.btnNav a,
.btnNav a:link,
.btnNav a:visited,
.btnNav a label {
    color: var(--cw-texto-strong);
}

.btnNav a:hover,
.btnNav a:hover label,
.btnNav a:focus,
.btnNav a:focus label {
    color: var(--cw-principal);
}

/* Menu secundario (categorias sueltas sin desplegable) */

#submenu {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px;
    padding: 0 0 7px 0;
}

.cw-submenu-item {
    display: inline-block;
    padding: 4px 14px;
    border-radius: 20px;
    border: 1px solid var(--cw-borde);
    background: #fff;
    font-size: 80%;
    text-decoration: none;
    color: var(--cw-texto-strong);
}

.cw-submenu-item:hover {
    border-color: var(--cw-principal);
    color: var(--cw-principal);
}

/* Titulo de los modales de categoria (era un <h1> en el diseno; se baja a
   span para no competir con el h1 real de la pagina) */

.cw-modal-titulo {
    font-family: 'Quando', sans-serif;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
}

.modal-content .close { text-decoration: none; }


/* *************************************************************************
 * PIEZAS SUELTAS DEL DISENO
 * ************************************************************************* */

/* Lema del portal: es el h1 de la portada. Antes vivia en la cabecera con
   la clase #slogan; la cabecera nueva es fija y no tiene sitio para el. */
.cw-lema {
    font-family: 'Quando', sans-serif;
    font-size: 230%;
    font-weight: 600;
    line-height: 1.15;
    color: var(--cw-texto-strong);
    margin: 0 0 15px 0;
    width: 100%;
    text-wrap: balance;
}

/* Cuerpo del contenido, tal cual lo escribe el editor en el backoffice.
   Antes iba envuelto en un <h3>, que ademas de heredar tamano de titular
   marcaba todo el articulo como encabezado. */
.cw-cuerpo {
    font-size: 95%;
    font-weight: 300;
    line-height: 1.55;
    text-align: justify;
}

/* *************************************************************************
 * CONTENIDO PEGADO DESDE EL EDITOR
 *
 * Las entradillas y los cuerpos vienen de la base de datos con los estilos en
 * linea que arrastra el editor del backoffice al pegar desde Word o Pages:
 *   <p class="p1" style="font-family:'Helvetica Neue'; font-size:13px; ...">
 * Eso pisa cualquier hoja, y en la home eran 46 elementos, la mayor parte del
 * texto de la pagina. Antes no cantaba porque el sitio viejo tambien iba en
 * una sans generica; con Open Sans al lado se ve a la legua.
 *
 * Se neutralizan solo familia, tamano y interlineado, y solo dentro de los
 * contenedores de contenido: el color y el resto de lo que ponga el redactor
 * se respetan. La regla va sobre los descendientes, no sobre el contenedor,
 * para que este conserve su propio tamano.
 *
 * Esto es un parche de presentacion. Lo sano es que el editor no guarde esos
 * estilos: mientras sigan en la base de datos, cualquier cambio de tipografia
 * futuro se topara con lo mismo.
 * ************************************************************************* */

.cw-ficha-breve *,
.cw-cuerpo * {
    font-family: inherit !important;
    font-size: inherit !important;
    line-height: inherit !important;
}

/* El pegado tambien se lleva por delante la negrita del editor */
.cw-ficha-breve strong, .cw-ficha-breve b,
.cw-cuerpo strong, .cw-cuerpo b {
    font-weight: 600 !important;
}

.cw-cuerpo img    { max-width: 100%; height: auto; }
.cw-cuerpo iframe { max-width: 100%; }
.cw-cuerpo table  { max-width: 100%; }
.cw-cuerpo ul, .cw-cuerpo ol { padding-left: 20px; }

/* Listado "+ portal" de la columna derecha */

.cw-mas-noticia {
    padding: 8px 0;
    border-bottom: 1px solid #e0e0e0;
    font-size: 90%;
    line-height: 1.3;
}

.cw-mas-noticia:last-child { border-bottom: 0; }
.cw-mas-noticia a { color: var(--cw-texto-strong); text-decoration: none; }
.cw-mas-noticia a:hover { color: var(--cw-principal); }

/* Bloque de reservas: HTML de terceros (Booking y similares) */

#reservas { overflow-x: auto; }
#reservas img, #reservas iframe { max-width: 100%; }

/* Carruseles de Bootstrap (portada y galeria de la ficha) */

.cw-carrusel {
    border-radius: 6px;
    overflow: hidden;
    background: var(--cw-fondo);
}

.cw-carrusel .carousel-item img { width: 100%; height: auto; }

.cw-carrusel .carousel-control-prev,
.cw-carrusel .carousel-control-next { width: 10%; }

/* Titulo sobreimpreso del carrusel de portada */
.cw-carrusel #slider_sup_fondo_texto,
.cw-carrusel #slider_sup_texto { pointer-events: none; }

/* Fechas de un evento de agenda */

.cw-fechas-agenda {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.cw-fecha-agenda {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 20px;
    background: var(--cw-fondo);
    border: 1px solid var(--cw-borde);
    font-size: 85%;
}

/* Documentos descargables de la ficha */

.cw-doc {
    display: inline-block;
    margin-right: 10px;
    font-size: 90%;
}

/* Unidad de AdSense de la ficha de detalle */

.cw-adsense { width: 100%; }

/* La ficha es el hijo directo de la rejilla; el borde y la sombra los pone
   .cw-ficha para que el hueco de la rejilla no quede pintado si no hay nada */
.cw-ficha-item { min-width: 0; }

/* Tamanos nominales de banner que no necesitan reglas de posicion propias,
   pero si evitar que rompan el ancho de su contenedor */
.cw-banner-40x40  { width: 40px; height: 40px; }
.cw-banner-220x30,
.cw-banner-300x125,
.cw-banner-660x90,
.cw-banner-800x600 { max-width: 100%; }





/* *************************************************************************
 * VIDEOS DE YOUTUBE
 *
 * ValoresDefecto.VIDEO_YOUTUBE genera el iframe de embed dentro de este
 * contenedor, que le da relacion 16:9 y ancho fluido.
 * ************************************************************************* */

.cw-video {
    position: relative;
    width: 100%;
    padding-top: 56.25%;
    background: #000;
    overflow: hidden;
}

.cw-video iframe {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    border: 0;
}


/* *************************************************************************
 * LOGOTIPOS
 *
 * Los logos de los cinco portales son JPG con blanco opaco: no hay canal
 * alfa que respetar, asi que apoyados en la cabecera o el pie (que van en
 * --cw-fondo) se les marcaba el recuadro blanco alrededor.
 *
 * En vez de pintar una caja del color del fondo detras de cada logo, que
 * obliga a mantener sincronizados el color de la caja y el de la imagen, se
 * usa mix-blend-mode: multiply. Multiplicar por blanco deja el fondo tal
 * cual, con lo que el blanco del JPG desaparece y toma el color que haya
 * debajo, sea el que sea. El logo se adapta solo a lo que cada portal ponga
 * en --cw-fondo, sin tocar ni una imagen ni anadir una variable mas.
 *
 * La marca apenas se desplaza: sobre #f9f9f9 el rojo de Salou pasa de
 * #b2000a a #ae000a. Y donde no haya soporte de blend, el logo se ve como se
 * veia hasta ahora, con su recuadro; no se rompe nada.
 * ************************************************************************* */

/* Vale puesta en el contenedor o directamente en la imagen. Solo se le pone a
   las imagenes opacas: bdf-tech-powered.png ya trae canal alfa (el 91% de sus
   pixeles), asi que se recorta sola y no hay que tocarla. */

.cw-logo {
    line-height: 0;
    background: none;
}

img.cw-logo,
.cw-logo img {
    mix-blend-mode: multiply;
}

/* El display:block solo cuando la clase va en el contenedor: quita el hueco
   que deja la linea base. En la propia imagen se respeta como venga, que hay
   logos que van en linea con otros. */
.cw-logo img { display: block; }

a.cw-logo,
span.cw-logo { display: inline-block; }
