/*
 * WorldCupSpain
 * Planning Hotels V8
 * Unified hotel cards
 */

/* ==========================================================
   DESKTOP / TABLET
   ========================================================== */

.place-public-card.planning-hotel-card-v4 {
    box-sizing: border-box !important;
    display: grid !important;
    grid-template-columns: 180px minmax(0,1fr) !important;
    grid-template-rows: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 190px !important;
    overflow: hidden !important;
    background: #fff !important;
    border: 1px solid #d8e1e8 !important;
    border-radius: 16px !important;
    box-shadow: 0 5px 18px rgba(15,35,55,.08) !important;
}

.planning-hotel-card-v4 .planning-hotel-photo-v8 {
    position: relative !important;
    grid-column: 1 !important;
    grid-row: 1 !important;
    box-sizing: border-box !important;
    display: block !important;
    width: 180px !important;
    min-width: 180px !important;
    max-width: 180px !important;
    height: 100% !important;
    min-height: 190px !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    background: #edf2f6 !important;
}

.planning-hotel-card-v4 .planning-hotel-photo-v8 > img {
    position: absolute !important;
    inset: 0 !important;
    display: block !important;
    box-sizing: border-box !important;
    width: 100% !important;
    min-width: 100% !important;
    max-width: 100% !important;
    height: 100% !important;
    min-height: 100% !important;
    max-height: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    object-fit: cover !important;
    object-position: center !important;
}

.planning-hotel-card-v4 .planning-hotel-content-v8 {
    grid-column: 2 !important;
    grid-row: 1 !important;
    box-sizing: border-box !important;
    display: block !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 190px !important;
    margin: 0 !important;
    padding: 15px 16px !important;
    overflow: hidden !important;
    background: #fff !important;
}

.planning-hotel-card-v4 .pill {
    display: inline-flex !important;
    width: auto !important;
    margin: 0 0 5px !important;
}

.planning-hotel-card-v4 h3 {
    margin: 0 0 6px !important;
    font-size: 18px !important;
    line-height: 1.2 !important;
}

.planning-hotel-card-v4 p {
    margin: 3px 0 !important;
    line-height: 1.35 !important;
}

.planning-hotel-card-v4 small {
    display: block !important;
    margin: 3px 0 !important;
}

.planning-hotel-card-v4 .place-meta {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 5px 9px !important;
    margin: 6px 0 !important;
}

.planning-hotel-card-v4 .ta-hotel-box,
.planning-hotel-card-v4 .google-place-rating-box {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 7px 0 !important;
    padding: 8px 10px !important;
    border-radius: 9px !important;
}

.planning-hotel-card-v4 .place-card-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 5px 9px !important;
    margin-top: 6px !important;
}


/* ==========================================================
   GOOGLE PHOTO SOURCE
   ========================================================== */

.planning-hotel-card-v4 .google-hotel-photo-source {
    position: absolute !important;
    z-index: 5 !important;
    left: 6px !important;
    right: auto !important;
    bottom: 6px !important;
    top: auto !important;
    width: auto !important;
    max-width: calc(100% - 12px) !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 3px 6px !important;
    overflow: hidden !important;
    background: rgba(255,255,255,.94) !important;
    border-radius: 6px !important;
    font-size: 8px !important;
    line-height: 1.1 !important;
    white-space: nowrap !important;
}

.planning-hotel-card-v4 .google-hotel-photo-source a,
.planning-hotel-card-v4 .google-hotel-photo-source span {
    display: block !important;
    overflow: hidden !important;
    white-space: nowrap !important;
    text-overflow: ellipsis !important;
}

.planning-hotel-card-v4 > .google-hotel-photo-credit,
.planning-hotel-card-v4 > .google-hotel-photo-attribution {
    display: none !important;
}


/* ==========================================================
   MOBILE
   ========================================================== */

@media screen and (max-width: 600px) {

    .place-public-grid {
        grid-template-columns: minmax(0,1fr) !important;
        gap: 13px !important;
    }

    .place-public-card.planning-hotel-card-v4 {
        display: grid !important;
        grid-template-columns: 122px minmax(0,1fr) !important;
        grid-template-rows: 205px !important;

        width: 100% !important;
        max-width: 100% !important;

        height: 205px !important;
        min-height: 205px !important;
        max-height: 205px !important;

        margin: 0 !important;
        padding: 0 !important;

        overflow: hidden !important;

        border-radius: 15px !important;
    }

    /* Every hotel photo has exactly the same dimensions */

    .planning-hotel-card-v4 .planning-hotel-photo-v8 {
        position: relative !important;

        grid-column: 1 !important;
        grid-row: 1 !important;

        display: block !important;

        width: 122px !important;
        min-width: 122px !important;
        max-width: 122px !important;

        height: 205px !important;
        min-height: 205px !important;
        max-height: 205px !important;

        margin: 0 !important;
        padding: 0 !important;

        overflow: hidden !important;

        border-radius: 14px 0 0 14px !important;

        background: #edf2f6 !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-photo-v8 > img {

        position: absolute !important;
        inset: 0 !important;

        display: block !important;

        width: 122px !important;
        min-width: 122px !important;
        max-width: 122px !important;

        height: 205px !important;
        min-height: 205px !important;
        max-height: 205px !important;

        margin: 0 !important;
        padding: 0 !important;

        object-fit: cover !important;
        object-position: center center !important;

        transform: none !important;
    }

    /* Every hotel's text is always in column two */

    .planning-hotel-card-v4 .planning-hotel-content-v8 {
        position: relative !important;

        grid-column: 2 !important;
        grid-row: 1 !important;

        display: block !important;

        box-sizing: border-box !important;

        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;

        height: 205px !important;
        min-height: 205px !important;
        max-height: 205px !important;

        margin: 0 !important;
        padding: 11px 10px !important;

        overflow: hidden !important;

        background: #fff !important;

        border-radius: 0 14px 14px 0 !important;
    }

    .planning-hotel-card-v4 .pill {
        display: inline-block !important;

        margin: 0 0 5px !important;
        padding: 0 !important;

        background: transparent !important;
        border: 0 !important;

        color: #26394a !important;

        font-size: 10px !important;
        line-height: 12px !important;
        font-weight: 800 !important;
    }

    .planning-hotel-card-v4 h3 {
        display: -webkit-box !important;

        margin: 0 0 5px !important;

        max-height: 36px !important;

        overflow: hidden !important;

        color: #132a3e !important;

        font-size: 15px !important;
        line-height: 18px !important;
        font-weight: 800 !important;

        -webkit-box-orient: vertical !important;
        -webkit-line-clamp: 2 !important;

        overflow-wrap: anywhere !important;
    }

    .planning-hotel-card-v4 p {
        display: -webkit-box !important;

        margin: 2px 0 !important;

        max-height: 30px !important;

        overflow: hidden !important;

        color: #687989 !important;

        font-size: 11px !important;
        line-height: 15px !important;

        -webkit-box-orient: vertical !important;
        -webkit-line-clamp: 2 !important;
    }

    .planning-hotel-card-v4 small {
        display: block !important;

        margin: 2px 0 !important;

        overflow: hidden !important;

        font-size: 10px !important;
        line-height: 13px !important;

        white-space: nowrap !important;
        text-overflow: ellipsis !important;
    }

    .planning-hotel-card-v4 .place-meta {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 3px 6px !important;

        margin: 3px 0 !important;

        font-size: 10px !important;
        line-height: 12px !important;
    }

    .planning-hotel-card-v4 .ta-hotel-box,
    .planning-hotel-card-v4 .google-place-rating-box {
        box-sizing: border-box !important;

        width: 100% !important;
        max-width: 100% !important;

        height: auto !important;
        min-height: 0 !important;
        max-height: 48px !important;

        margin: 4px 0 !important;
        padding: 5px 7px !important;

        overflow: hidden !important;

        border-radius: 8px !important;
    }

    .planning-hotel-card-v4 .ta-hotel-rating,
    .planning-hotel-card-v4 .google-place-rating-main {
        height: auto !important;
        min-height: 0 !important;

        margin: 0 !important;

        font-size: 10px !important;
        line-height: 12px !important;
    }

    .planning-hotel-card-v4 .ta-hotel-name {
        display: none !important;
    }

    .planning-hotel-card-v4 .ta-hotel-link,
    .planning-hotel-card-v4 .google-place-rating-link,
    .planning-hotel-card-v4 .google-place-rating-source {
        font-size: 9px !important;
        line-height: 11px !important;
    }

    .planning-hotel-card-v4 .place-card-actions {
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;

        gap: 3px 7px !important;

        margin: 4px 0 0 !important;
    }

    .planning-hotel-card-v4 .place-card-actions a {
        font-size: 10px !important;
        line-height: 12px !important;
    }

    .planning-hotel-card-v4 .google-maps-card-link {
        font-size: 10px !important;
        line-height: 12px !important;
        font-weight: 800 !important;
    }

    .planning-hotel-card-v4 .google-hotel-photo-source {
        left: 5px !important;
        bottom: 5px !important;

        max-width: 112px !important;

        padding: 3px 5px !important;

        font-size: 7px !important;
    }
}


/* ==========================================================
   SMALL MOBILE
   ========================================================== */

@media screen and (max-width: 380px) {

    .place-public-card.planning-hotel-card-v4 {
        grid-template-columns: 108px minmax(0,1fr) !important;
    }

    .planning-hotel-card-v4 .planning-hotel-photo-v8,
    .planning-hotel-card-v4 .planning-hotel-photo-v8 > img {
        width: 108px !important;
        min-width: 108px !important;
        max-width: 108px !important;
    }
}

/* PLANNING_HOTELS_UNIFIED_V8_END */

/* ==========================================================
   PLANNING HOTELS DESKTOP LAYOUT V5
   Scope: /tools/hotels hotel cards only
   Mobile/tablet layout is not changed.
   ========================================================== */

@media (min-width: 1101px) {

    /*
     * Keep every hotel card as one clean horizontal row.
     * Image = fixed left column.
     * Content = flexible right column.
     */
    .place-public-card.planning-hotel-card-v4 {
        display: grid !important;
        grid-template-columns: 258px minmax(0, 1fr) !important;
        grid-template-rows: 294px !important;

        width: 100% !important;
        height: 294px !important;
        min-height: 294px !important;
        max-height: 294px !important;

        padding: 0 !important;
        margin: 0 !important;

        overflow: hidden !important;
        align-items: stretch !important;

        border-radius: 18px !important;
    }

    /*
     * Photo area can never grow with the original image.
     */
    .planning-hotel-card-v4
    .planning-hotel-photo-v8 {
        grid-column: 1 !important;
        grid-row: 1 !important;

        position: relative !important;

        width: 258px !important;
        min-width: 258px !important;
        max-width: 258px !important;

        height: 294px !important;
        min-height: 294px !important;
        max-height: 294px !important;

        padding: 0 !important;
        margin: 0 !important;

        overflow: hidden !important;
        align-self: stretch !important;
    }

    /*
     * This is the important part:
     * every source image gets exactly the same viewport.
     */
    .planning-hotel-card-v4
    .planning-hotel-photo-v8 > img {
        display: block !important;

        position: absolute !important;
        inset: 0 !important;

        width: 100% !important;
        height: 100% !important;
        min-width: 100% !important;
        min-height: 100% !important;
        max-width: none !important;
        max-height: none !important;

        margin: 0 !important;
        padding: 0 !important;

        object-fit: cover !important;
        object-position: center center !important;
    }

    /*
     * Hotel information stays entirely inside the right side.
     */
    .planning-hotel-card-v4
    .planning-hotel-content-v8 {
        grid-column: 2 !important;
        grid-row: 1 !important;

        display: flex !important;
        flex-direction: column !important;
        align-items: flex-start !important;

        min-width: 0 !important;
        width: auto !important;
        height: 294px !important;
        min-height: 0 !important;
        max-height: 294px !important;

        padding: 22px 22px 18px !important;
        margin: 0 !important;

        overflow: hidden !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 .pill {
        flex: 0 0 auto !important;
        margin: 0 0 6px !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 h3 {
        width: 100% !important;
        margin: 0 0 7px !important;

        font-size: 23px !important;
        line-height: 1.15 !important;

        overflow-wrap: anywhere !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 p {
        width: 100% !important;
        margin: 0 0 7px !important;

        line-height: 1.4 !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 small {
        margin: 0 0 7px !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 .place-meta {
        margin: 2px 0 8px !important;
    }

    /*
     * Tripadvisor / Google rating boxes must not expand
     * the whole hotel card.
     */
    .planning-hotel-card-v4
    .ta-hotel-box,
    .planning-hotel-card-v4
    .google-place-rating-box {
        width: 100% !important;
        max-width: 100% !important;
        flex: 0 0 auto !important;

        margin-top: 4px !important;
        margin-bottom: 6px !important;

        box-sizing: border-box !important;
    }

    /*
     * Maps/actions stay neatly inside the content column.
     */
    .planning-hotel-card-v4
    .place-card-actions {
        width: 100% !important;
        margin-top: auto !important;
        padding-top: 6px !important;

        flex: 0 0 auto !important;
    }

    /*
     * Google source attribution belongs to the image.
     * Never let it become a new grid row/column.
     */
    .planning-hotel-card-v4
    .planning-hotel-photo-v8
    .google-hotel-photo-source {
        position: absolute !important;
        left: auto !important;
        right: 8px !important;
        top: auto !important;
        bottom: 8px !important;

        z-index: 6 !important;

        max-width: calc(100% - 16px) !important;
        margin: 0 !important;
    }

    /*
     * Defensive rule for the attribution partial if it is
     * rendered as a direct child of the hotel card.
     */
    .place-public-card.planning-hotel-card-v4
    > .google-hotel-photo-credit,
    .place-public-card.planning-hotel-card-v4
    > .google-hotel-photo-attribution {
        display: none !important;
    }
}


/* ==========================================================
   PLANNING HOTELS MOBILE LAYOUT V7
   Scope: hotel cards only
   Desktop >= 1101px is NOT changed.
   ========================================================== */

@media (max-width: 1100px) {

    /*
     * Every hotel becomes one clean vertical card:
     * photo first, hotel information underneath.
     */
    .place-public-card.planning-hotel-card-v4 {
        display: flex !important;
        flex-direction: column !important;

        width: 100% !important;
        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;

        padding: 0 !important;
        margin: 0 !important;

        overflow: hidden !important;
        border-radius: 18px !important;
    }

    /*
     * Fixed photo viewport.
     * Original Google/Tripadvisor image dimensions can no
     * longer make one hotel card much taller than another.
     */
    .planning-hotel-card-v4
    .planning-hotel-photo-v8 {
        position: relative !important;

        display: block !important;

        flex: 0 0 auto !important;

        width: 100% !important;
        min-width: 100% !important;
        max-width: 100% !important;

        height: 220px !important;
        min-height: 220px !important;
        max-height: 220px !important;

        padding: 0 !important;
        margin: 0 !important;

        overflow: hidden !important;
    }

    /*
     * Force ALL hotel image sources into exactly the same
     * 220px viewport.
     */
    .planning-hotel-card-v4
    .planning-hotel-photo-v8 > img {
        display: block !important;

        position: absolute !important;
        inset: 0 !important;

        width: 100% !important;
        height: 100% !important;

        min-width: 100% !important;
        min-height: 100% !important;

        max-width: none !important;
        max-height: none !important;

        padding: 0 !important;
        margin: 0 !important;

        object-fit: cover !important;
        object-position: center center !important;
    }

    /*
     * Content always starts underneath the image.
     */
    .planning-hotel-card-v4
    .planning-hotel-content-v8 {
        position: relative !important;

        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;

        flex: 1 1 auto !important;

        width: 100% !important;
        min-width: 0 !important;

        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;

        padding: 18px 18px 17px !important;
        margin: 0 !important;

        overflow: visible !important;

        box-sizing: border-box !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 .pill {
        align-self: flex-start !important;
        margin: 0 0 6px !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 h3 {
        display: block !important;

        width: 100% !important;

        margin: 0 0 8px !important;

        font-size: 22px !important;
        line-height: 1.18 !important;

        white-space: normal !important;
        overflow: visible !important;
        text-overflow: clip !important;
        overflow-wrap: anywhere !important;
        word-break: normal !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 p {
        display: block !important;

        width: 100% !important;

        margin: 0 0 8px !important;

        line-height: 1.4 !important;

        white-space: normal !important;
        overflow: visible !important;
        overflow-wrap: anywhere !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 small {
        display: block !important;
        width: 100% !important;

        margin: 0 0 8px !important;

        white-space: normal !important;
    }

    /*
     * Tripadvisor / Google rating stays in normal document
     * flow and cannot overlap the hotel name or address.
     */
    .planning-hotel-card-v4
    .ta-hotel-box,
    .planning-hotel-card-v4
    .google-place-rating-box {
        position: relative !important;

        display: block !important;

        width: 100% !important;
        max-width: 100% !important;

        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;

        margin: 6px 0 8px !important;

        box-sizing: border-box !important;
        overflow: visible !important;
    }

    /*
     * Google Maps and other actions remain underneath
     * ratings/content.
     */
    .planning-hotel-card-v4
    .place-card-actions {
        position: relative !important;

        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;

        width: 100% !important;

        margin: 4px 0 0 !important;
        padding: 4px 0 0 !important;

        gap: 8px 12px !important;
    }

    /*
     * Google photo attribution remains over the photograph,
     * never between photo and hotel content.
     */
    .planning-hotel-card-v4
    .planning-hotel-photo-v8
    .google-hotel-photo-source {
        position: absolute !important;

        left: auto !important;
        right: 8px !important;

        top: auto !important;
        bottom: 8px !important;

        z-index: 8 !important;

        max-width: calc(100% - 16px) !important;

        margin: 0 !important;
    }

    /*
     * Defensive reset for any old image sizing rules.
     */
    .planning-hotel-card-v4
    .planning-hotel-photo-v8,
    .planning-hotel-card-v4
    .planning-hotel-photo-v8 *,
    .planning-hotel-card-v4
    .planning-hotel-content-v8 {
        box-sizing: border-box !important;
    }
}


/*
 * Phones: slightly shorter photo while retaining
 * exactly the same card structure.
 */
@media (max-width: 600px) {

    .planning-hotel-card-v4
    .planning-hotel-photo-v8 {
        height: 200px !important;
        min-height: 200px !important;
        max-height: 200px !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 {
        padding: 16px !important;
    }

    .planning-hotel-card-v4
    .planning-hotel-content-v8 h3 {
        font-size: 21px !important;
    }
}

