/* =============================================
   DAPPER-HGGG Single Tour — Frontend Styles
   Font: Rubik (loaded by theme)
   ============================================= */

/* === HERO === */
.dphggg-hero {
    margin-bottom: 8px;
}
.dphggg-hero__title {
    font-family: 'Rubik', sans-serif;
    font-weight: 600;
    font-size: 26px;
    line-height: 1.3;
    color: #1A1A1A;
    margin: 0;
}
.dphggg-hero__title-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}
.dphggg-hero__title-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}
.dphggg-hero__meta-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
}
.dphggg-hero__stars {
    display: inline-flex;
    gap: 1px;
    --dphggg-star-color: #F5A623;
    --dphggg-star-empty-color: #D0D0D0;
}
.dphggg-hero__star {
    position: relative;
    display: inline-block;
    font-size: 16px;
    line-height: 1;
    color: var(--dphggg-star-empty-color);
}
.dphggg-hero__star--full {
    color: var(--dphggg-star-color);
}
.dphggg-hero__star--empty {
    color: var(--dphggg-star-empty-color);
}
.dphggg-hero__star--half {
    color: var(--dphggg-star-empty-color);
}
.dphggg-hero__star--half::before {
    content: '\2605';
    position: absolute;
    top: 0;
    left: 0;
    width: 50%;
    overflow: hidden;
    color: var(--dphggg-star-color);
}
.dphggg-hero__reviews {
    font-family: 'Rubik', sans-serif;
    font-size: 13px;
    font-weight: 500;
    color: #333;
}
.dphggg-hero__badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: #F5A623;
    color: #fff;
    font-size: 12px;
    font-weight: 500;
    padding: 3px 10px;
    border-radius: 20px;
    font-family: 'Rubik', sans-serif;
}
.dphggg-hero__updated {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12.5px;
    color: #6B747D;
}
.dphggg-hero__updated svg { flex-shrink: 0; }
.dphggg-hero__excellence {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: #E8F5E9;
    color: #1A8917;
    font-size: 12px;
    font-weight: 500;
    padding: 3px 10px;
    border-radius: 20px;
    font-family: 'Rubik', sans-serif;
}
.dphggg-hero__location {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 13px;
    color: #555;
    font-family: 'Rubik', sans-serif;
    text-decoration: none;
}
a.dphggg-hero__location:hover {
    color: #4A90D9;
    text-decoration: underline;
}
/* Destination terms: one link per place, commas between, the pin icon once. */
.dphggg-hero__location-text {
    display: inline;
}
.dphggg-hero__location-link {
    color: inherit;
    text-decoration: none;
    transition: color .12s ease;
}
.dphggg-hero__location-link:hover {
    color: #4A90D9;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.dphggg-hero__action-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #fff;
    border: 1px solid #D0D0D0;
    border-radius: 20px;
    padding: 6px 14px;
    font-size: 13px;
    font-family: 'Rubik', sans-serif;
    color: #333;
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.dphggg-hero__action-btn:hover {
    border-color: #999;
    box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
.dphggg-hero__action-btn--copied {
    border-color: #1A8917;
    color: #1A8917;
}
.dphggg-hero__lang {
    font-size: 13px;
    font-family: 'Rubik', sans-serif;
    color: #999999;
    font-weight: 500;
}
.dphggg-hero__lang-link {
    color: #4A90D9;
    text-decoration: none;
}
.dphggg-hero__lang-link:hover {
    text-decoration: underline;
    color: #3A7BBD;
}

/* === GALLERY (TourRadar-style mosaic) === */
.dphggg-gallery {
    font-family: 'Rubik', sans-serif;
    max-width: 100%;
}
.dphggg-gallery__stage {
    position: relative;
}
.dphggg-gallery__grid {
    display: grid;
    /* minmax(0,...) lets the tracks shrink below the images' intrinsic
       width — without it the grid overflows its column. */
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr);
    grid-template-rows: 1fr 1fr;
    gap: 8px;
    height: 460px;
    max-width: 100%;
}
.dphggg-gallery__item {
    position: relative;
    display: block;
    overflow: hidden;
    min-width: 0;
    min-height: 0;
    border-radius: 12px;
    background: #f0f0f0;
    cursor: pointer;
}
/* First image = the big tile on the left, spanning both rows */
.dphggg-gallery__item--main {
    grid-row: 1 / span 2;
}
.dphggg-gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.4s ease;
}
.dphggg-gallery__item:hover img {
    transform: scale(1.04);
}
/* Single-image fallback */
.dphggg-gallery__grid--single {
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
}

/* "View all" button — bottom-right of the image stage */
.dphggg-gallery__viewall {
    position: absolute;
    right: 14px;
    bottom: 14px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: rgba(255,255,255,0.95);
    color: #1A1A1A;
    font-family: 'Rubik', sans-serif;
    font-size: 13px;
    font-weight: 600;
    padding: 8px 14px;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    text-decoration: none;
    box-shadow: 0 2px 8px rgba(0,0,0,0.18);
    transition: background 0.2s, transform 0.15s;
    z-index: 3;
}
.dphggg-gallery__viewall:hover {
    background: #fff;
    transform: translateY(-1px);
}
.dphggg-gallery__viewall svg {
    width: 16px;
    height: 16px;
}
.dphggg-gallery__hidden {
    display: none !important;
}
/* === GALLERY MOBILE (separate widget — no media queries needed) === */
.dphggg-mgallery {
    font-family: 'Rubik', sans-serif;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
}
.dphggg-mgallery__main {
    display: block;
    width: 100%;
    overflow: hidden;
    background: #f0f0f0;
    cursor: pointer;
}
.dphggg-mgallery__main img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.dphggg-mgallery__thumbs {
    display: grid;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
}
.dphggg-mgallery__thumb {
    display: block;
    position: relative;
    overflow: hidden;
    background: #f0f0f0;
    cursor: pointer;
    min-width: 0;
}
.dphggg-mgallery__thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.dphggg-mgallery__thumb--more::after {
    content: attr(data-more);
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.55);
    color: #fff;
    font-size: 18px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}
.dphggg-mgallery--empty {
    background: #f7f8fa;
    border: 2px dashed #d0d0d0;
    border-radius: 12px;
    padding: 40px 20px;
    text-align: center;
    color: #999;
}

.dphggg-gallery--empty {
    background: #f7f8fa;
    border: 2px dashed #d0d0d0;
    border-radius: 12px;
    padding: 60px 20px;
    text-align: center;
    color: #999;
}

/* Narrow (e.g. gallery sits next to the booking card): drop the 3rd column
   so tiles keep a comfortable shape instead of turning into thin slivers.
   Shows the big tile + the two middle tiles (3 images); the rest stay
   available in the lightbox. */
@media (max-width: 1200px) {
    .dphggg-gallery__grid {
        grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
        height: 400px;
    }
    .dphggg-gallery__grid .dphggg-gallery__item:nth-child(n+4) {
        display: none;
    }
}

/* === GALLERY LIGHTBOX (self-contained) === */
.dphggg-lb {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.92);
    z-index: 100000;
    display: none;
    align-items: center;
    justify-content: center;
    font-family: 'Rubik', sans-serif;
}
.dphggg-lb.is-open { display: flex; }
.dphggg-lb__stage {
    max-width: 92vw;
    max-height: 88vh;
    display: flex;
    align-items: center;
    justify-content: center;
}
.dphggg-lb__img {
    max-width: 92vw;
    max-height: 88vh;
    object-fit: contain;
    border-radius: 4px;
    box-shadow: 0 8px 40px rgba(0,0,0,0.5);
    user-select: none;
}
.dphggg-lb__btn {
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.14);
    color: #fff;
    border: none;
    cursor: pointer;
    border-radius: 50%;
    transition: background 0.18s;
    z-index: 2;
}
.dphggg-lb__btn:hover { background: rgba(255,255,255,0.28); }
.dphggg-lb__btn svg { width: 26px; height: 26px; }
.dphggg-lb__close {
    top: 18px;
    right: 22px;
    width: 44px;
    height: 44px;
}
.dphggg-lb__close svg { width: 22px; height: 22px; }
.dphggg-lb__prev,
.dphggg-lb__next {
    top: 50%;
    transform: translateY(-50%);
    width: 50px;
    height: 50px;
}
.dphggg-lb__prev { left: 22px; }
.dphggg-lb__next { right: 22px; }
.dphggg-lb__counter {
    position: absolute;
    bottom: 22px;
    left: 50%;
    transform: translateX(-50%);
    color: #fff;
    font-size: 14px;
    letter-spacing: 0.5px;
}
@media (max-width: 767px) {
    .dphggg-lb__btn { background: rgba(255,255,255,0.2); }
    .dphggg-lb__prev,
    .dphggg-lb__next { width: 40px; height: 40px; }
    .dphggg-lb__prev { left: 10px; }
    .dphggg-lb__next { right: 10px; }
    .dphggg-lb__btn svg { width: 20px; height: 20px; }
    .dphggg-lb__close { top: 12px; right: 12px; width: 40px; height: 40px; }
}

/* === BOOKING CARD === */
.dphggg-booking {
    background: #fff;
    border: 1px solid #E0E0E0;
    border-radius: 12px;
    padding: 24px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
    font-family: 'Rubik', sans-serif;
}
/* Sale bar (4.10.42): the tour card's promotion bar across the top of the
   card, edge to edge inside the border, with the card's top corners. The
   variables follow the card's Padding and Border Radius controls. */
.dphggg-booking__promo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: calc(var(--dphggg-bc-pt, 24px) * -1) calc(var(--dphggg-bc-pr, 24px) * -1) 18px calc(var(--dphggg-bc-pl, 24px) * -1);
    padding: 6px var(--dphggg-bc-pr, 24px) 6px var(--dphggg-bc-pl, 24px); /* 4.10.46: was 10px */
    border-radius: calc(var(--dphggg-bc-r, 12px) - 1px) calc(var(--dphggg-bc-r, 12px) - 1px) 0 0;
    background: linear-gradient(90deg, #E0301E 0%, #F2602D 100%);
    color: #FFFFFF;
    font-family: 'Rubik', sans-serif;
}
.dphggg-booking__promo-name {
    min-width: 0;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dphggg-booking__promo-price {
    flex: 0 0 auto;
    font-size: 13px; /* 4.10.46: same as the promotion name (was 17px bold) */
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
}
.dphggg-booking__price-row {
    display: flex;
    align-items: baseline;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 16px; /* 4.10.38: Check Price now sits right under it */
}
.dphggg-booking__price-prefix {
    font-size: 14px;
    color: #666;
}
.dphggg-booking__price-amount {
    font-size: 28px;
    font-weight: 700;
    color: #1A1A1A;
}
.dphggg-booking__price-suffix {
    font-size: 14px;
    color: #666;
}
/* Normal price, crossed out, when the tour is on sale (4.10.15). */
.dphggg-booking__price-was {
    font-size: 16px;
    font-weight: 400;
    color: #80868B;
    text-decoration: line-through;
}
.dphggg-booking__discount {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #1A8917;
    margin-bottom: 18px;
}
.dphggg-booking__cta {
    display: block;
    width: 100%;
    text-align: center;
    background: #F5A623;
    color: #fff;
    font-size: 16px;
    font-weight: 600;
    font-family: 'Rubik', sans-serif;
    padding: 14px 20px;
    border-radius: 8px;
    border: none;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.2s, transform 0.1s;
    margin-bottom: 16px;
}
.dphggg-booking__cta:hover {
    background: #E0951D;
    color: #fff;
    text-decoration: none;
}
.dphggg-booking__cta:active {
    transform: scale(0.99);
}
/* Check Price: the main button, above the CTA */
.dphggg-booking__check {
    display: block;
    margin-bottom: 18px;
    width: 100%;
    box-sizing: border-box;
    text-align: center;
    background: #F5A623;
    color: #fff;
    font-family: 'Rubik', sans-serif;
    font-size: 16px;
    font-weight: 600;
    padding: 14px 20px;
    border-radius: 8px;
    text-decoration: none;
    transition: background .15s;
}
.dphggg-booking__check:hover,
.dphggg-booking__check:focus {
    background: #E0951D;
    color: #fff;
    text-decoration: none;
}
/* CTA under a Check Price button: white with a grey border */
.dphggg-booking__cta--secondary {
    background: #fff;
    color: #1A1A1A;
    border: 1px solid #D5D7DB;
    font-size: 15px;
    padding: 12px 20px;
    transition: border-color .15s;
}
.dphggg-booking__cta--secondary:hover {
    background: #fff;
    color: #1A1A1A;
    border-color: #9AA0A6;
}
.dphggg-booking__trust {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 16px;
}
.dphggg-booking__trust-item {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 13px;
    color: #333;
    line-height: 1.45;
}
/* Trust and Book ahead icons: built-in SVG or an Elementor icon. Size is
   font-size on the wrapper (Style tab), colour is currentColor. */
.dphggg-booking__trust-icon,
.dphggg-booking__ahead-icon {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}
.dphggg-booking__trust-icon {
    font-size: 16px;
    color: #1E6B3B; /* 4.10.40: darker green, matches the trust panel */
    margin-top: 1px;
}
.dphggg-booking__ahead-icon {
    font-size: 18px;
    color: #666;
    margin-top: 2px;
}
.dphggg-booking__trust-icon svg,
.dphggg-booking__ahead-icon svg {
    width: 1em;
    height: 1em;
    display: block;
}
.dphggg-booking__icon--custom svg { fill: currentColor; }
.dphggg-booking__icon--custom i { font-size: 1em; color: inherit; }
.dphggg-booking__trust-item--green span a {
    color: #1A8917;
    text-decoration: underline;
}
.dphggg-booking__ahead {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    background: #F7F8FA;
    border-radius: 8px;
    padding: 14px;
    font-size: 13px;
    color: #555;
    line-height: 1.45;
}
.dphggg-booking__ahead strong {
    color: #1A1A1A;
    font-weight: 600;
}
/* MOTAC box and Trust Box 2 (4.10.38, restyled 4.10.40): one light green
   panel, two columns split by a thin line, dark green icon on top and dark
   green text centred under it. Colours are the "Trust Panel" style controls.
   One box alone keeps the grey full-width, icon-left layout. */
.dphggg-booking__boxes--2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #EFF7F1;
    border-radius: 10px; /* 4.10.42: no outer border */
    padding: 14px 0;
}
.dphggg-booking__boxes--2 .dphggg-booking__ahead {
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    text-align: center;
    gap: 8px;
    background: transparent;
    border-radius: 0;
    padding: 2px 12px;
    min-width: 0;
}
.dphggg-booking__boxes--2 .dphggg-booking__ahead + .dphggg-booking__ahead {
    border-left: 1px solid #D3E8DA;
}
.dphggg-booking__boxes--2 .dphggg-booking__ahead-icon {
    font-size: 30px;
    color: #1E6B3B;
    margin-top: 0;
}
.dphggg-booking__boxes--2 .dphggg-booking__ahead strong,
.dphggg-booking__boxes--2 .dphggg-booking__ahead-title {
    display: block;
    color: #1B5E35;
    font-size: 12px; /* 4.10.45: a step under the trust lines; "Text Size" in the Trust Panel style */
    font-weight: 600;
    line-height: 1.35;
    overflow-wrap: anywhere;
}
.dphggg-booking__boxes--2 .dphggg-booking__ahead-text {
    display: block;
    margin-top: 4px;
    font-size: 12px;
    color: #5F6F66;
    line-height: 1.4;
}
.dphggg-booking__boxes--2 .dphggg-booking__ahead br { display: none; }

/* === TOUR META === */
.dphggg-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 16px;
    padding: 14px 0;
    border-top: 1px solid #E8E8E8;
    border-bottom: 1px solid #E8E8E8;
    font-family: 'Rubik', sans-serif;
}
.dphggg-meta__item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    position: relative;
    padding-right: 16px;
}
.dphggg-meta__item:not(:last-child)::after {
    content: '';
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 1px;
    height: 18px;
    background: #E0E0E0;
}
.dphggg-meta__icon {
    display: flex;
    align-items: center;
    color: #555;
}
.dphggg-meta__text {
    font-size: 13px;
    color: #333;
    white-space: nowrap;
}

/* === TOUR TABS === */
.dphggg-tabs {
    display: flex;
    gap: 0;
    border-bottom: 2px solid #E0E0E0;
    background: #fff;
    font-family: 'Rubik', sans-serif;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    z-index: 10;
}
.dphggg-tabs::-webkit-scrollbar {
    display: none;
}
/* Elementor's native Sticky effect measures the element's own width before
   going fixed, but a widget inside a column can still get boxed in by an
   ancestor's max-width. Force it edge-to-edge of the viewport while stuck,
   regardless of what container it started in. */
.elementor-sticky--active .dphggg-tabs,
.dphggg-tabs.elementor-sticky--active {
    /* left/right only take effect on a positioned element — without this,
       the earlier width:100vw just overflowed to the right from wherever
       the box already sat, leaving the left edge short of the viewport. */
    position: fixed !important;
    top: 0 !important;
    width: 100vw !important;
    max-width: 100vw !important;
    left: 0 !important;
    right: 0 !important;
    /* The background and border run edge to edge; the tabs do not. These
       two gutters are measured by dphggg-frontend.js from the column the
       bar sits in before it sticks, so the first tab lines up with the
       page content on every screen width. */
    box-sizing: border-box;
    padding-left: var(--dphggg-tabs-left, 0px);
    padding-right: var(--dphggg-tabs-right, 0px);
    /* Same card look as the sticky booking card, so both read as one
       family of "stuck" elements rather than two different styles. */
    background: #fff;
    border-bottom: 1px solid #E0E0E0;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
}
/* Logged-in users have the WordPress admin bar fixed across the top; top:0
   put the nav underneath it and only its bottom edge showed. WordPress
   publishes the bar's height as a custom property, so this tracks it. Below
   601px the admin bar scrolls with the page instead, so no offset there. */
@media (min-width: 601px) {
    body.admin-bar .elementor-sticky--active .dphggg-tabs,
    body.admin-bar .dphggg-tabs.elementor-sticky--active {
        top: var(--wp-admin--admin-bar--height, 32px) !important;
    }
}
.dphggg-tabs__item {
    display: inline-flex;
    align-items: center;
    padding: 14px 18px;
    font-size: 14px;
    font-weight: 500;
    color: #666;
    text-decoration: none;
    white-space: nowrap;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    transition: all 0.2s;
    background: none;
    border-top: none;
    border-left: none;
    border-right: none;
}
.dphggg-tabs__item:hover {
    color: #333;
    text-decoration: none;
}
.dphggg-tabs__item--active {
    color: #1A1A1A;
    border-bottom-color: #1A1A1A;
    font-weight: 600;
}

/* ---- Tabs Preset: Pills ---- */
nav.dphggg-tabs.dphggg-tabs--pills {
    border-bottom: none !important;
    gap: 6px !important;
    padding: 6px !important;
    background: #EEF3FB !important;
    border-radius: 12px !important;
}
nav.dphggg-tabs.dphggg-tabs--pills .dphggg-tabs__item {
    border-radius: 8px !important;
    border: none !important;
    margin-bottom: 0 !important;
    padding: 10px 18px !important;
    background: transparent !important;
    color: #5A7290 !important;
    transition: all 0.2s;
}
nav.dphggg-tabs.dphggg-tabs--pills .dphggg-tabs__item:hover {
    background: rgba(255,255,255,0.6) !important;
    color: #2C4A6E !important;
}
nav.dphggg-tabs.dphggg-tabs--pills .dphggg-tabs__item.dphggg-tabs__item--active {
    background: #fff !important;
    color: #2C6FD9 !important;
    font-weight: 600 !important;
    box-shadow: 0 2px 6px rgba(44,111,217,0.15);
}

/* ---- Tabs Preset: Outline ---- */
nav.dphggg-tabs.dphggg-tabs--outline {
    border-bottom: none !important;
    gap: 8px !important;
    padding: 6px 0 !important;
    background: transparent !important;
}
nav.dphggg-tabs.dphggg-tabs--outline .dphggg-tabs__item {
    border: 1.5px solid #D0D0D0 !important;
    border-radius: 8px !important;
    margin-bottom: 0 !important;
    padding: 10px 20px !important;
    background: transparent !important;
    transition: all 0.2s;
}
nav.dphggg-tabs.dphggg-tabs--outline .dphggg-tabs__item:hover {
    border-color: #888 !important;
    background: rgba(0,0,0,0.02) !important;
}
nav.dphggg-tabs.dphggg-tabs--outline .dphggg-tabs__item.dphggg-tabs__item--active {
    background: #1A1A1A !important;
    color: #fff !important;
    border-color: #1A1A1A !important;
    font-weight: 600 !important;
}

/* ---- Tabs Preset: Fade ---- */
nav.dphggg-tabs.dphggg-tabs--fade {
    border-bottom: none !important;
    gap: 2px !important;
    padding: 4px 0 !important;
    background: transparent !important;
}
nav.dphggg-tabs.dphggg-tabs--fade .dphggg-tabs__item {
    border: none !important;
    margin-bottom: 0 !important;
    border-radius: 6px !important;
    padding: 10px 16px !important;
    background: transparent !important;
    transition: all 0.2s;
}
nav.dphggg-tabs.dphggg-tabs--fade .dphggg-tabs__item:hover {
    background: rgba(0,0,0,0.05) !important;
}
nav.dphggg-tabs.dphggg-tabs--fade .dphggg-tabs__item.dphggg-tabs__item--active {
    background: rgba(0,0,0,0.08) !important;
    font-weight: 600 !important;
}

/* === ITINERARY === */
.dphggg-itinerary {
    margin: 24px 0;
    font-family: 'Rubik', sans-serif;
}
.dphggg-itinerary__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}
.dphggg-itinerary__heading {
    font-size: 22px;
    font-weight: 600;
    color: #1A1A1A;
    margin: 0;
}
.dphggg-itinerary__full-link {
    font-size: 14px;
    font-weight: 500;
    color: #4A90D9;
    text-decoration: none;
    white-space: nowrap;
}
.dphggg-itinerary__full-link:hover {
    text-decoration: underline;
    color: #3A7BBD;
}
.dphggg-itinerary__days {
    border: 1px solid #E8E8E8;
    border-radius: 12px;
    overflow: hidden;
}
.dphggg-itinerary__day {
    border-bottom: 1px solid #E8E8E8;
}
.dphggg-itinerary__day:last-child {
    border-bottom: none;
}
/* Day and category rows are H3s (4.10.22). The heading itself carries no
   look of its own: the theme's and Elementor's h3 size, colour, margin and
   font are reset so the row looks exactly as before. */
.dphggg-itinerary h3.dphggg-itinerary__day-heading,
.dphggg-checklist h3.dphggg-checklist__cat-heading {
    margin: 0;
    padding: 0;
    border: 0;
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
    letter-spacing: normal;
    text-transform: none;
    color: inherit;
    background: none;
}
.dphggg-itinerary__day-header {
    display: flex;
    align-items: center;
    gap: 16px;
    width: 100%;
    padding: 16px 20px;
    background: none;
    border: none;
    cursor: pointer;
    text-align: left;
    font-family: 'Rubik', sans-serif;
    transition: background 0.15s;
}
.dphggg-itinerary__day-header:hover {
    background: #FAFAFA;
}
.dphggg-itinerary__day-label {
    font-size: 13px;
    font-weight: 500;
    color: #666;
    min-width: 50px;
    flex-shrink: 0;
}
.dphggg-itinerary__day-title {
    font-size: 15px;
    font-weight: 500;
    color: #1A1A1A;
    flex: 1;
}
.dphggg-itinerary__chevron {
    color: #999;
    display: flex;
    align-items: center;
    transition: transform 0.25s;
    flex-shrink: 0;
}
.dphggg-itinerary__day--open .dphggg-itinerary__chevron {
    transform: rotate(180deg);
}
.dphggg-itinerary__day-content {
    padding: 0 20px 20px 86px;
    font-size: 14px;
    line-height: 1.65;
    color: #444;
}
.dphggg-itinerary__day-content p {
    margin: 0 0 10px;
}

/* === CHECKLIST (Includes / Excludes / Important Notes) === */
.dphggg-checklist {
    margin: 24px 0;
    font-family: 'Rubik', sans-serif;
}
.dphggg-checklist__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}
.dphggg-checklist__heading {
    font-size: 22px;
    font-weight: 600;
    color: #1A1A1A;
    margin: 0;
}
/* Expand / Hide all button — sits on the same line as the heading */
.dphggg-checklist__expand-all {
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    font-family: 'Rubik', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: #4A90D9;
    white-space: nowrap;
    transition: color 0.15s;
}
.dphggg-checklist__expand-all:hover {
    color: #3A7BBD;
    text-decoration: underline;
}

/* Category list */
.dphggg-checklist__cats {
    border-top: 1px solid #ECECEC;
}
.dphggg-checklist__cat {
    border-bottom: 1px solid #ECECEC;
}
.dphggg-checklist__cat-header {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 12px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 16px 4px;
    font-family: 'Rubik', sans-serif;
    text-align: left;
}
.dphggg-checklist__cat-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.dphggg-checklist__cat-icon svg {
    width: 22px;
    height: 22px;
}
/* Green for included, red for excluded, amber for notes.
   Double-class on the wrapper keeps specificity above Elementor's
   single-class generated selectors, so the colour can't be overridden. */
.dphggg-checklist.dphggg-checklist--include .dphggg-checklist__cat-icon { color: #1A8917 !important; }
.dphggg-checklist.dphggg-checklist--exclude .dphggg-checklist__cat-icon { color: #CC0000 !important; }
.dphggg-checklist.dphggg-checklist--note    .dphggg-checklist__cat-icon { color: #F5A623 !important; }

.dphggg-checklist__cat-title {
    flex: 1;
    font-size: 16px;
    font-weight: 600;
    color: #1A1A1A;
}
.dphggg-checklist__cat-chevron {
    display: inline-flex;
    align-items: center;
    color: #999;
    flex-shrink: 0;
    transition: transform 0.25s ease;
}
.dphggg-checklist__cat.is-open .dphggg-checklist__cat-chevron {
    transform: rotate(180deg);
}

/* Category body (the bulleted list) */
.dphggg-checklist__cat-body {
    padding: 0 4px 18px 46px;
}
/* Important Notes (no category header) — match the include/exclude top spacing */
.dphggg-checklist__cat--plain .dphggg-checklist__cat-body {
    padding: 16px 4px 4px 4px;
}
.dphggg-checklist__cat-body ul,
.dphggg-checklist__cat-body ol {
    margin: 0 0 14px;
    padding-left: 20px;
}
.dphggg-checklist__cat-body li {
    font-size: 14px;
    line-height: 1.6;
    color: #333;
    margin: 0 0 8px;
}
.dphggg-checklist__cat-body li:last-child {
    margin-bottom: 0;
}
.dphggg-checklist__cat-body p {
    font-size: 14px;
    line-height: 1.6;
    color: #444;
    margin: 0 0 10px;
}
/* Collapse the gap on the very last element so the body bottom padding is even */
.dphggg-checklist__cat-body > *:last-child {
    margin-bottom: 0;
}
.dphggg-checklist__empty-hint {
    font-size: 13px;
    color: #999;
    font-style: italic;
    padding: 12px 4px;
}

/* === NAVIGATION TABS === */
.dphggg-navtabs {
    font-family: 'Rubik', sans-serif;
}
.dphggg-navtabs__heading {
    font-size: 22px;
    font-weight: 700;
    color: #1A1A1A;
    margin: 0 0 16px;
}
.dphggg-navtabs__tabs {
    display: flex;
    flex-wrap: nowrap;
    gap: 32px;
    border-bottom: 1px solid #E2E2E2;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}
.dphggg-navtabs__tabs::-webkit-scrollbar {
    display: none;
}
.dphggg-navtabs__tab {
    -webkit-appearance: none;
    appearance: none;
    background: none;
    border: none;
    border-bottom: 3px solid transparent;
    margin: 0;
    padding: 0 0 14px;
    font-family: 'Rubik', sans-serif;
    font-size: 19px;
    font-weight: 700;
    color: #1A1A1A;
    white-space: nowrap;
    cursor: pointer;
    line-height: 1.3;
    transition: border-color 0.15s;
}
.dphggg-navtabs__tab.is-active {
    border-bottom-color: #1A1A1A;
}
.dphggg-navtabs__panels {
    padding-top: 22px;
}
.dphggg-navtabs__panel {
    line-height: 2.1;
}
.dphggg-navtabs__panel[hidden] {
    display: none;
}
.dphggg-navtabs__link {
    color: #1A1A1A;
    text-decoration: none;
    font-size: 16px;
    white-space: nowrap;
}
.dphggg-navtabs__link:hover,
.dphggg-navtabs__link:focus {
    text-decoration: underline;
}
.dphggg-navtabs__sep {
    color: #CFCFCF;
    margin: 0 12px;
    font-size: 16px;
    user-select: none;
}
.dphggg-navtabs--empty {
    background: #f7f8fa;
    border: 2px dashed #d0d0d0;
    border-radius: 12px;
    padding: 30px 20px;
    text-align: center;
    color: #999;
}
@media (max-width: 767px) {
    .dphggg-navtabs__tabs {
        gap: 22px;
        scrollbar-width: thin;
        scrollbar-color: #C0C0C0 transparent;
        padding-bottom: 4px;
    }
    .dphggg-navtabs__tabs::-webkit-scrollbar {
        display: block;
        height: 4px;
    }
    .dphggg-navtabs__tabs::-webkit-scrollbar-thumb {
        background-color: #C0C0C0;
        border-radius: 4px;
    }
    .dphggg-navtabs__tab {
        font-size: 16px;
        padding-bottom: 12px;
    }
    .dphggg-navtabs__link,
    .dphggg-navtabs__sep {
        font-size: 15px;
    }
    .dphggg-navtabs__sep {
        margin: 0 8px;
    }
}

/* ==================================
   RESPONSIVE — TABLET
   ================================== */
@media (max-width: 1024px) {
    .dphggg-hero__title {
        font-size: 22px;
    }
    .dphggg-hero__title-row {
        flex-direction: column;
        align-items: flex-start;
    }
    .dphggg-gallery__grid {
        height: 360px;
    }
    .dphggg-meta__item {
        padding-right: 12px;
    }
}

/* ==================================
   RESPONSIVE — MOBILE
   ================================== */
@media (max-width: 767px) {
    .dphggg-tabs {
        scrollbar-width: thin;
        scrollbar-color: #C0C0C0 transparent;
        padding-bottom: 4px;
    }
    .dphggg-tabs::-webkit-scrollbar {
        display: block;
        height: 4px;
    }
    .dphggg-tabs::-webkit-scrollbar-track {
        background: transparent;
    }
    .dphggg-tabs::-webkit-scrollbar-thumb {
        background-color: #C0C0C0;
        border-radius: 4px;
    }

    .dphggg-hero__title {
        font-size: 19px;
    }
    .dphggg-hero__meta-row {
        gap: 6px;
    }
    .dphggg-hero__title-actions {
        width: 100%;
        justify-content: flex-start;
    }
    .dphggg-hero__badge,
    .dphggg-hero__excellence {
        font-size: 11px;
        padding: 2px 8px;
    }

    .dphggg-booking {
        padding: 16px;
        border-radius: 8px;
        --dphggg-bc-pt: 16px;
        --dphggg-bc-pr: 16px;
        --dphggg-bc-pl: 16px;
        --dphggg-bc-r: 8px;
    }
    .dphggg-booking__price-amount {
        font-size: 24px;
    }

    .dphggg-meta {
        gap: 10px;
        padding: 10px 0;
    }
    .dphggg-meta__item {
        padding-right: 10px;
    }
    .dphggg-meta__item:not(:last-child)::after {
        height: 14px;
    }
    .dphggg-meta__text {
        font-size: 12px;
    }

    .dphggg-tabs__item {
        padding: 10px 14px;
        font-size: 13px;
    }

    .dphggg-itinerary__heading,
    .dphggg-checklist__heading {
        font-size: 18px;
    }
    .dphggg-itinerary__day-header {
        padding: 12px 14px;
        gap: 10px;
    }
    .dphggg-itinerary__day-content {
        padding: 0 14px 14px 14px;
    }
    .dphggg-itinerary__day-label {
        min-width: 40px;
        font-size: 12px;
    }
    .dphggg-itinerary__day-title {
        font-size: 14px;
    }

    .dphggg-checklist__cat-header {
        padding: 14px 2px;
        gap: 10px;
    }
    .dphggg-checklist__cat-body {
        padding: 0 2px 16px 40px;
    }
    .dphggg-checklist__cat-title {
        font-size: 15px;
    }
}

/* ==========================================================================
   THEME GUARD — interactive states (added v1.6.1)

   Problem: themes (TravelWP) and Elementor's global styles target bare
   <button> elements, e.g. `.elementor-widget-container button:hover`
   (specificity 0,2,1). Our component rules were single-class (0,2,0), so the
   theme's accent colour won the cascade and painted accordion headers and the
   Expand All button purple — illegible text on hover, and again on :focus,
   which persists after a click.

   Fix: repeat the class on itself (0,3,0+) to out-specify the theme, cover
   :hover / :focus / :focus-visible / :active, and re-assert this design's own
   greys. `!important` is used only on the colour properties that the theme
   actively fights over — same approach already used for the category icons
   above. Keyboard focus stays visible via a scoped :focus-visible ring.

   To retune the hover grey, change --dphggg-hover-bg below.
   ========================================================================== */

:root {
    --dphggg-hover-bg: #F5F5F5;   /* accordion row hover — light neutral grey */
    --dphggg-focus-ring: #4A90D9; /* keyboard focus ring (matches link blue)  */
}

/* --- Neutralise inherited theme paint on every plugin button ------------- */
.dphggg-itinerary__day-header.dphggg-itinerary__day-header,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all,
.dphggg-navtabs__tab.dphggg-navtabs__tab,
.dphggg-gallery__viewall.dphggg-gallery__viewall,
.dphggg-hero__action-btn.dphggg-hero__action-btn {
    -webkit-appearance: none;
    appearance: none;
    box-shadow: none;
}

/* --- Accordion rows: itinerary days + checklist categories --------------- */
.dphggg-itinerary__day-header.dphggg-itinerary__day-header,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header {
    background-color: transparent !important;
    transition: background-color 0.15s;
}
.dphggg-itinerary__day-header.dphggg-itinerary__day-header:hover,
.dphggg-itinerary__day-header.dphggg-itinerary__day-header:focus,
.dphggg-itinerary__day-header.dphggg-itinerary__day-header:active,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header:hover,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header:focus,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header:active {
    background-color: var(--dphggg-hover-bg) !important;
    color: inherit !important;
}

/* Keep row text legible in every state (theme may recolour it white). */
.dphggg-itinerary__day-header:hover .dphggg-itinerary__day-title,
.dphggg-itinerary__day-header:focus .dphggg-itinerary__day-title,
.dphggg-itinerary__day-header:active .dphggg-itinerary__day-title {
    color: #1A1A1A !important;
}
.dphggg-itinerary__day-header:hover .dphggg-itinerary__day-label,
.dphggg-itinerary__day-header:focus .dphggg-itinerary__day-label,
.dphggg-itinerary__day-header:active .dphggg-itinerary__day-label {
    color: #666 !important;
}
.dphggg-checklist__cat-header:hover .dphggg-checklist__cat-title,
.dphggg-checklist__cat-header:focus .dphggg-checklist__cat-title,
.dphggg-checklist__cat-header:active .dphggg-checklist__cat-title {
    color: #1A1A1A !important;
}
.dphggg-itinerary__day-header:hover .dphggg-itinerary__chevron,
.dphggg-itinerary__day-header:focus .dphggg-itinerary__chevron,
.dphggg-checklist__cat-header:hover .dphggg-checklist__cat-chevron,
.dphggg-checklist__cat-header:focus .dphggg-checklist__cat-chevron {
    color: #999 !important;
}

/* --- "Expand All" / "Hide All": text button, never a filled block -------- */
.dphggg-checklist__expand-all.dphggg-checklist__expand-all,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all:hover,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all:focus,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all:active {
    background-color: transparent !important;
    background-image: none !important;
}
.dphggg-checklist__expand-all.dphggg-checklist__expand-all {
    color: #4A90D9 !important;
}
.dphggg-checklist__expand-all.dphggg-checklist__expand-all:hover,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all:focus,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all:active {
    color: #3A7BBD !important;
    text-decoration: underline;
}

/* --- Navigation tabs: underline only, no accent fill -------------------- */
.dphggg-navtabs__tab.dphggg-navtabs__tab,
.dphggg-navtabs__tab.dphggg-navtabs__tab:hover,
.dphggg-navtabs__tab.dphggg-navtabs__tab:focus,
.dphggg-navtabs__tab.dphggg-navtabs__tab:active {
    background-color: transparent !important;
    color: #1A1A1A !important;
}

/* --- Gallery "View all" pill stays white -------------------------------- */
.dphggg-gallery__viewall.dphggg-gallery__viewall:hover,
.dphggg-gallery__viewall.dphggg-gallery__viewall:focus,
.dphggg-gallery__viewall.dphggg-gallery__viewall:active {
    background-color: #fff !important;
    color: #1A1A1A !important;
}

/* --- Hero share / wishlist pills keep their outlined look --------------- */
.dphggg-hero__action-btn.dphggg-hero__action-btn,
.dphggg-hero__action-btn.dphggg-hero__action-btn:hover,
.dphggg-hero__action-btn.dphggg-hero__action-btn:focus,
.dphggg-hero__action-btn.dphggg-hero__action-btn:active {
    background-color: #fff !important;
    color: #333 !important;
}
.dphggg-hero__action-btn.dphggg-hero__action-btn:hover {
    border-color: #999;
    box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
.dphggg-hero__action-btn.dphggg-hero__action-btn--copied {
    border-color: #1A8917;
    color: #1A8917 !important;
}

/* --- Focus on the accordion rows ---------------------------------------- */
/* No outline ring on the itinerary / includes / excludes / notes rows in any
   state. The theme and the Elementor preview both paint a blue ring on
   these buttons on hover and after a click, which read as a glitch. The
   grey row background (above) is the hover and focus state instead. */
.dphggg-itinerary__day-header.dphggg-itinerary__day-header,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all,
.dphggg-navtabs__tab.dphggg-navtabs__tab {
    outline: none !important;
    box-shadow: none !important;
}
.dphggg-itinerary__day-header.dphggg-itinerary__day-header:hover,
.dphggg-itinerary__day-header.dphggg-itinerary__day-header:focus,
.dphggg-itinerary__day-header.dphggg-itinerary__day-header:focus-visible,
.dphggg-itinerary__day-header.dphggg-itinerary__day-header:active,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header:hover,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header:focus,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header:focus-visible,
.dphggg-checklist__cat-header.dphggg-checklist__cat-header:active,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all:hover,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all:focus,
.dphggg-checklist__expand-all.dphggg-checklist__expand-all:focus-visible,
.dphggg-navtabs__tab.dphggg-navtabs__tab:hover,
.dphggg-navtabs__tab.dphggg-navtabs__tab:focus,
.dphggg-navtabs__tab.dphggg-navtabs__tab:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}
/* Keyboard users still get a ring on the gallery and hero buttons. */
.dphggg-gallery__viewall:focus-visible,
.dphggg-hero__action-btn:focus-visible {
    outline: 2px solid var(--dphggg-focus-ring);
    outline-offset: 2px;
}

/* --- Hero rating links to the reviews section (v1.9.0) ------------------- */
.dphggg-hero__rating-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    text-decoration: none;
    color: inherit;
    border-radius: 4px;
    transition: opacity 0.15s;
}
a.dphggg-hero__rating-link { cursor: pointer; }
a.dphggg-hero__rating-link:hover .dphggg-hero__reviews {
    text-decoration: underline;
}
a.dphggg-hero__rating-link:hover { opacity: 0.85; }
a.dphggg-hero__rating-link:focus-visible {
    outline: 2px solid var(--dphggg-focus-ring, #4A90D9);
    outline-offset: 3px;
}
/* No reviews section on the page — behaves as plain text again. */
.dphggg-hero__rating-link--inert { cursor: default; }
.dphggg-hero__rating-link--inert:hover .dphggg-hero__reviews { text-decoration: none; }
.dphggg-hero__rating-link--inert:hover { opacity: 1; }

/* ==========================================================================
   MOBILE BOOKING BAR (widget dphggg-sticky-booking-bar, v4.7.0)
   Pinned to the bottom of the screen on the live page; rendered in place
   inside the Elementor editor so it can be styled. Which widths it appears at
   is a modifier class (--on-mobile / --on-tablet / --on-all). Hidden below the
   fold until dphggg-frontend.js adds --visible.
   ========================================================================== */
.dphggg-sbar {
    display: none;
    box-sizing: border-box;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9990;
    background: #fff;
    border-top: 1px solid #E0E0E0;
    box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.08);
    padding-top: var(--dphggg-sbar-pt, 8px);
    padding-right: var(--dphggg-sbar-pr, 14px);
    padding-bottom: calc(var(--dphggg-sbar-pb, 8px) + env(safe-area-inset-bottom, 0px));
    padding-left: var(--dphggg-sbar-pl, 14px);
    font-family: 'Rubik', sans-serif;
    transform: translateY(calc(100% + 16px));
    visibility: hidden;
    transition: transform .25s ease, visibility 0s linear .25s;
}
.dphggg-sbar--on-all { display: block; }
@media (max-width: 1024px) { .dphggg-sbar--on-tablet { display: block; } }
@media (max-width: 767px)  { .dphggg-sbar--on-mobile { display: block; } }

.dphggg-sbar--visible {
    transform: translateY(0);
    visibility: visible;
    transition: transform .25s ease, visibility 0s linear 0s;
}

/* Editor: always shown, in the page flow, at every device width. */
.dphggg-sbar.dphggg-sbar--editor {
    display: block;
    position: relative;
    transform: none;
    visibility: visible;
    z-index: auto;
}

.dphggg-sbar__inner {
    max-width: 1140px;
    margin: 0 auto;
}
.dphggg-sbar__name {
    font-size: 12px;
    line-height: 1.3;
    color: #555;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dphggg-sbar__price {
    display: flex;
    align-items: baseline;
    gap: 4px;
    min-width: 0;
    white-space: nowrap;
    line-height: 1.2;
}
.dphggg-sbar__amount {
    font-size: 18px;
    font-weight: 700;
    color: #1A1A1A;
}
.dphggg-sbar__affix {
    font-size: 11px;
    color: #767676;
}
.dphggg-sbar__check {
    margin: 0;
    font-size: 11px;
    line-height: 1.25;
    color: #767676;
    white-space: nowrap;
}
.dphggg-sbar__check-link.dphggg-sbar__check-link {
    color: #4A90D9;
    text-decoration: underline;
    text-underline-offset: 2px;
    background: none;
    box-shadow: none;
}
.dphggg-sbar__check-link.dphggg-sbar__check-link:hover,
.dphggg-sbar__check-link.dphggg-sbar__check-link:focus { color: #3A7BBD; }

.dphggg-sbar__cta.dphggg-sbar__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 10px 20px;
    border-radius: 8px;
    background-color: #F5A623;
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
    box-shadow: none;
    transition: background-color .15s ease;
}
.dphggg-sbar__cta.dphggg-sbar__cta:hover,
.dphggg-sbar__cta.dphggg-sbar__cta:focus {
    background-color: #E0951D;
    color: #fff;
    text-decoration: none;
}
.dphggg-sbar__cta:focus-visible { outline: 2px solid #1A1A1A; outline-offset: 2px; }

/* --- Layout: slim (default; name + Check price / Book Now with price inside) --- */
.dphggg-sbar--slim {
    --dphggg-sbar-pt: 6px;
    border-top-left-radius: 14px;
    border-top-right-radius: 14px;
    border-top-color: transparent;
    box-shadow: 0 -4px 18px rgba(0, 0, 0, 0.12);
}
.dphggg-sbar--slim .dphggg-sbar__inner {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.dphggg-sbar--slim .dphggg-sbar__row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    min-width: 0;
}
.dphggg-sbar--slim .dphggg-sbar__name { flex: 1 1 auto; min-width: 0; }
.dphggg-sbar--slim .dphggg-sbar__check { flex: 0 0 auto; }
.dphggg-sbar--slim .dphggg-sbar__cta.dphggg-sbar__cta {
    display: flex;
    width: 100%;
    justify-content: space-between;
    padding: 8px 14px;
    border-radius: 7px;
    font-size: 14px;
}
.dphggg-sbar__cta-price { font-weight: 400; font-size: 12px; white-space: nowrap; }
.dphggg-sbar__cta-amount { font-weight: 700; font-size: 14px; }

/* --- Layout: stacked (name / price + check price / full-width button) --- */
.dphggg-sbar--stacked .dphggg-sbar__inner {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.dphggg-sbar--stacked .dphggg-sbar__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-width: 0;
}
.dphggg-sbar--stacked .dphggg-sbar__check { text-align: right; }
.dphggg-sbar--stacked .dphggg-sbar__cta.dphggg-sbar__cta {
    display: flex;
    width: 100%;
    margin-top: 3px;
}

/* --- Layout: strip (name strip on top / price + check price | button) --- */
.dphggg-sbar--has-strip { padding-top: 0; }
.dphggg-sbar--strip .dphggg-sbar__strip {
    margin: 0 calc(-1 * var(--dphggg-sbar-pr, 14px)) 8px calc(-1 * var(--dphggg-sbar-pl, 14px));
    padding: 5px var(--dphggg-sbar-pr, 14px) 5px var(--dphggg-sbar-pl, 14px);
    background: #F4F6F9;
    border-bottom: 1px solid #E8ECF1;
}
.dphggg-sbar--strip .dphggg-sbar__strip-inner { max-width: 1140px; margin: 0 auto; }
.dphggg-sbar--strip .dphggg-sbar__name { color: #1A1A1A; font-weight: 500; }
.dphggg-sbar--strip .dphggg-sbar__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.dphggg-sbar--strip .dphggg-sbar__info {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.dphggg-sbar--strip .dphggg-sbar__cta.dphggg-sbar__cta {
    flex: 0 0 auto;
    min-width: 116px;
    padding: 12px 22px;
}

/* Room at the end of the page so the bar never covers the footer. The
   height is measured by dphggg-frontend.js. */
html.dphggg-sbar-active body { padding-bottom: var(--dphggg-sbar-h, 72px); }

/* Chaty's floating chat button sits 25px from the bottom, under the bar.
   While the bar is on screen (dphggg-sbar-shown, set by dphggg-frontend.js)
   lift it above the bar (4.10.38). Its channel buttons move with it. */
.chaty-widget { transition: bottom .25s ease; }
html.dphggg-sbar-shown .chaty-widget {
    bottom: calc(var(--dphggg-sbar-h, 72px) + 14px) !important;
}

@media (prefers-reduced-motion: reduce) {
    .dphggg-sbar, .dphggg-sbar--visible { transition: none; }
}


/* ================================================================
   REVIEWS (v4.1.0)
   Summary row is our own markup. Everything below it is WP Customer
   Reviews' own [WPCR_SHOW] output — these rules only reskin their
   existing classes (wpcr3_*), they don't touch its logic or markup.
   ================================================================ */
.dphggg-reviews {
    --dphggg-reviews-accent: #F5A623;
    font-family: 'Rubik', sans-serif;
    padding-top: 8px;
}
.dphggg-reviews__heading {
    font-family: 'Rubik', sans-serif;
    font-weight: 600;
    font-size: 22px;
    color: #1A1A1A;
    margin: 0 0 14px;
}
.dphggg-reviews__summary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 20px;
}
.dphggg-reviews__stars {
    display: inline-flex;
    gap: 1px;
}
.dphggg-reviews__star {
    position: relative;
    display: inline-block;
    font-size: 20px;
    line-height: 1;
    color: #D0D0D0;
}
.dphggg-reviews__star--full { color: var(--dphggg-reviews-accent); }
.dphggg-reviews__star--half { color: #D0D0D0; }
.dphggg-reviews__star--half::before {
    content: '\2605';
    position: absolute;
    top: 0;
    left: 0;
    width: 50%;
    overflow: hidden;
    color: var(--dphggg-reviews-accent);
}
.dphggg-reviews__rating-number {
    font-size: 16px;
    font-weight: 600;
    color: #1A1A1A;
}
.dphggg-reviews__count {
    font-size: 14px;
    color: #666;
}
.dphggg-reviews__badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--dphggg-reviews-accent);
    color: #fff;
    font-size: 12px;
    font-weight: 500;
    padding: 4px 12px;
    border-radius: 20px;
    margin-left: 4px;
}
.dphggg-reviews__error {
    font-size: 13px;
    color: #B00020;
    background: #FDECEA;
    border-radius: 6px;
    padding: 10px 14px;
}

/* --- WP Customer Reviews reskin ------------------------------------
   WPCR draws its stars as a PNG sprite in the `background` of two nested
   divs. Any rule that sets `background` on them wipes the star shapes and
   leaves a flat bar (the "yellow band" of 4.3.1 and earlier). The stars
   are now a CSS mask, so the colour is ours and the shape cannot be lost.
   ------------------------------------------------------------------ */
.dphggg-reviews {
    --dphggg-reviews-star: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2.5l2.95 6.1 6.7.9-4.9 4.7 1.2 6.7L12 17.7l-5.95 3.2 1.2-6.7-4.9-4.7 6.7-.9z'/></svg>");
    --dphggg-reviews-star-size: 18px;
    --dphggg-reviews-line: #E6E8EB;
    --dphggg-reviews-muted: #6B7076;
}
.dphggg-reviews__summary { margin-bottom: 14px; }

.dphggg-reviews__wpcr,
.dphggg-reviews__wpcr .wpcr3_respond_1 {
    font-family: 'Rubik', sans-serif;
    color: #1A1A1A;
    font-size: 15px;
    line-height: 1.55;
}
/* Duplicates of our own summary row, and WPCR's dotted rules. */
.dphggg-reviews__wpcr .wpcr3_item_name,
.dphggg-reviews__wpcr .wpcr3_aggregateRating,
.dphggg-reviews__wpcr .wpcr3_dotline,
.dphggg-reviews__wpcr .wpcr3_power { display: none !important; }

/* ---- stars (display) ---- */
.dphggg-reviews__wpcr div.wpcr3_rating_style1 {
    display: inline-block;
    line-height: 0;
}
.dphggg-reviews__wpcr div.wpcr3_rating_style1_base {
    position: relative;
    width: calc(var(--dphggg-reviews-star-size) * 5);
    height: var(--dphggg-reviews-star-size);
    background: #DADDE1;
    -webkit-mask: var(--dphggg-reviews-star) 0 0 / var(--dphggg-reviews-star-size) var(--dphggg-reviews-star-size) repeat-x;
            mask: var(--dphggg-reviews-star) 0 0 / var(--dphggg-reviews-star-size) var(--dphggg-reviews-star-size) repeat-x;
}
.dphggg-reviews__wpcr div.wpcr3_rating_style1_average {
    position: absolute;
    top: 0; left: 0;
    height: 100%;
    background: var(--dphggg-reviews-accent);
    text-indent: 0;
}
/* ---- stars (the clickable picker in the form) ---- */
.dphggg-reviews__wpcr div.wpcr3_rating_style1_status {
    position: relative;
    width: calc(var(--dphggg-reviews-star-size) * 5);
    height: var(--dphggg-reviews-star-size);
    --dphggg-reviews-star-size: 26px;
}
.dphggg-reviews__wpcr div.wpcr3_rating_style1_score {
    position: relative;
    width: 100%;
    height: 100%;
    background: #DADDE1;
    -webkit-mask: var(--dphggg-reviews-star) 0 0 / var(--dphggg-reviews-star-size) var(--dphggg-reviews-star-size) repeat-x;
            mask: var(--dphggg-reviews-star) 0 0 / var(--dphggg-reviews-star-size) var(--dphggg-reviews-star-size) repeat-x;
    cursor: pointer;
}
.dphggg-reviews__wpcr div.wpcr3_rating_style1_score > div {
    position: absolute;
    top: 0; left: 0;
    height: 100%;
    float: none;
    background: transparent;
    text-indent: -9999px;
    overflow: hidden;
}
.dphggg-reviews__wpcr div.wpcr3_rating_style1_score > div:hover {
    background: var(--dphggg-reviews-accent);
}
.dphggg-reviews__wpcr .wpcr3_respond_2 .wpcr3_rating_style1_base {
    --dphggg-reviews-star-size: 26px;
}

/* ---- "Write a review" button (WPCR prints it above the list) ---- */
.dphggg-reviews__wpcr .wpcr3_respond_3 { margin: 0 0 18px; }
.dphggg-reviews__wpcr .wpcr3_respond_3 p { margin: 0; }
.dphggg-reviews__wpcr .wpcr3_button_1 {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: 'Rubik', sans-serif;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    color: #1A1A1A;
    background: #fff;
    border: 1.5px solid #1A1A1A;
    border-radius: 999px;
    padding: 11px 20px;
    margin: 0;
    box-shadow: none;
    text-shadow: none;
    cursor: pointer;
    transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.dphggg-reviews__wpcr .wpcr3_button_1:hover,
.dphggg-reviews__wpcr .wpcr3_button_1:focus {
    background: #F5F5F5;
    border-color: #1A1A1A;
    color: #1A1A1A;
    box-shadow: none;
}
.dphggg-reviews__wpcr .wpcr3_show_btn::before {
    content: '';
    width: 14px; height: 14px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 20h9'/><path d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z'/></svg>") center / contain no-repeat;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 20h9'/><path d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z'/></svg>") center / contain no-repeat;
}
.dphggg-reviews__wpcr .wpcr3_no_reviews {
    font-size: 14px;
    color: var(--dphggg-reviews-muted);
    margin: 12px 0 0;
}

/* ---- review cards ---- */
/* The cards are not direct children of the holder (WPCR wraps them in
   .wpcr3_review_item > .wpcr3_item), so a flex gap on the holder did
   nothing. The space lives on the card itself. */
.dphggg-reviews__wpcr .wpcr3_reviews_holder { padding: 6px 0 0; }
.dphggg-reviews__wpcr div.wpcr3_review {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
    background: transparent;
    border: 0;
    border-top: 1px solid var(--dphggg-reviews-line);
    border-radius: 0;
    padding: 22px 0;
    margin: 0 !important;
}
.dphggg-reviews__wpcr div.wpcr3_review div,
.dphggg-reviews__wpcr div.wpcr3_review span {
    font-family: 'Rubik', sans-serif;
    float: none;
}
.dphggg-reviews__wpcr div.wpcr3_review .wpcr3_clear { display: none; }

/* Author first, with a small avatar mark. The literal " by " in WPCR's
   markup is collapsed to nothing; the name span keeps its size. */
/* WPCR sets display:inline-block !important on every div in a review, so
   this one needs !important too or the avatar never gets laid out. */
.dphggg-reviews__wpcr div.wpcr3_review div.wpcr3_review_author {
    order: 1;
    display: inline-flex !important;
    align-items: center;
    gap: 0;
    font-size: 0;
    line-height: 1;
    /* The theme indents this div on the live site (the avatar sat ~24px in
       from the card edge). Pinned to zero on every side. */
    margin: 0 !important;
    padding: 0 !important;
    text-indent: 0 !important;
    float: none !important;
}
.dphggg-reviews__wpcr div.wpcr3_review div.wpcr3_review_author::before {
    content: '';
    width: 34px; height: 34px;
    border-radius: 50%;
    background-color: #E9ECF0;
    flex: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B7076' stroke-width='1.8' stroke-linecap='round'><circle cx='12' cy='8.5' r='3.6'/><path d='M4.5 20a7.5 7.5 0 0 1 15 0'/></svg>");
    background-size: 20px 20px;
    background-position: center;
    background-repeat: no-repeat;
}
.dphggg-reviews__wpcr div.wpcr3_review div.wpcr3_review_author .wpcr3_caps {
    /* Space after the avatar lives here, not in a flex gap: WPCR's literal
       " by " is a (collapsed) flex item and doubled any gap. */
    margin-left: 10px;
    font-size: 15px;
    font-weight: 600;
    font-style: normal;
    text-transform: none;
    color: #1A1A1A;
}
.dphggg-reviews__wpcr div.wpcr3_review div.wpcr3_review_author .wpcr3_caps a {
    color: inherit;
    text-decoration: none;
}
.dphggg-reviews__wpcr div.wpcr3_review div.wpcr3_review_datePublished {
    order: 2;
    margin-left: auto;
    font-size: 13px;
    font-style: normal;
    color: var(--dphggg-reviews-muted);
    padding: 0;
}
.dphggg-reviews__wpcr div.wpcr3_review div.wpcr3_review_ratingValue {
    order: 3;
    flex: 0 0 100%;
    margin: 4px 0 0;
    padding: 0;
}
.dphggg-reviews__wpcr div.wpcr3_review div.wpcr3_review_title {
    order: 4;
    flex: 0 0 100%;
    font-size: 15px;
    font-weight: 600;
    text-transform: none;
    margin: 2px 0 0;
}
.dphggg-reviews__wpcr div.wpcr3_review div.wpcr3_review_customs {
    order: 5;
    flex: 0 0 100%;
    font-size: 13px;
    color: var(--dphggg-reviews-muted);
}
.dphggg-reviews__wpcr div.wpcr3_review blockquote.wpcr3_content {
    order: 6;
    flex: 0 0 100%;
    box-sizing: border-box;
    max-width: 100%;
    margin: 2px 0 0;
    padding: 0;
    border: 0;
    background: transparent;
    font-size: 15px;
    line-height: 1.6;
    color: #333;
    quotes: none;
}
.dphggg-reviews__wpcr div.wpcr3_review blockquote.wpcr3_content::before,
.dphggg-reviews__wpcr div.wpcr3_review blockquote.wpcr3_content::after { content: none; }
.dphggg-reviews__wpcr div.wpcr3_review blockquote.wpcr3_content p {
    margin: 0;
    font-size: inherit;
    line-height: inherit;
}
.dphggg-reviews__wpcr div.wpcr3_review blockquote.wpcr3_content.wpcr3_admin_response {
    order: 7;
    margin-top: 10px;
    padding: 12px 14px;
    border-radius: 10px;
    background: #F3F4F6;
    font-size: 14px;
}
.dphggg-reviews__wpcr div.wpcr3_review blockquote.wpcr3_content.wpcr3_admin_response::before {
    content: var(--dphggg-reviews-reply-label, "HolidayGoGoGo Team replied:");
    display: block;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--dphggg-reviews-muted);
    margin-bottom: 4px;
}

/* ---- admin "Reply" link (added by dphggg-frontend.js for editors) ---- */
.dphggg-reviews__wpcr div.wpcr3_review .dphggg-reviews__reply {
    order: 9;
    margin-left: auto;
    margin-top: 6px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    color: #1A1A1A;
    background: #fff;
    border: 1px solid #C9CDD2;
    border-radius: 999px;
    padding: 6px 12px;
    text-decoration: none;
    transition: border-color .12s ease, background .12s ease;
}
.dphggg-reviews__wpcr div.wpcr3_review .dphggg-reviews__reply::before {
    content: '';
    width: 13px; height: 13px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='9 17 4 12 9 7'/><path d='M20 18v-2a4 4 0 0 0-4-4H4'/></svg>") center / contain no-repeat;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='9 17 4 12 9 7'/><path d='M20 18v-2a4 4 0 0 0-4-4H4'/></svg>") center / contain no-repeat;
}
.dphggg-reviews__wpcr div.wpcr3_review .dphggg-reviews__reply:hover {
    border-color: #1A1A1A;
    background: #F5F5F5;
    color: #1A1A1A;
}

/* ---- pagination ---- */
.dphggg-reviews__wpcr .wpcr3_pagination {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin: 16px 0 0;
    padding: 0;
    font-size: 13px;
}
.dphggg-reviews__wpcr .wpcr3_pagination_page {
    color: var(--dphggg-reviews-muted);
    margin-right: 6px;
    float: none;
}
.dphggg-reviews__wpcr .wpcr3_pagination .wpcr3_a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    height: 32px;
    padding: 0 10px;
    border: 1px solid var(--dphggg-reviews-line);
    border-radius: 999px;
    background: #fff;
    color: #1A1A1A;
    font-weight: 500;
    float: none;
    margin: 0;
    cursor: pointer;
}
.dphggg-reviews__wpcr .wpcr3_pagination .wpcr3_a:hover { background: #F5F5F5; }
.dphggg-reviews__wpcr .wpcr3_pagination .wpcr3_a.wpcr3_current {
    background: var(--dphggg-reviews-accent);
    border-color: var(--dphggg-reviews-accent);
    color: #fff;
}
.dphggg-reviews__wpcr .wpcr3_pagination .wpcr3_a.wpcr3_disabled,
.dphggg-reviews__wpcr .wpcr3_pagination .wpcr3_a.wpcr3_disabled:hover {
    opacity: .4;
    cursor: default;
    background: #fff;
}

/* ---- the form ---- */
.dphggg-reviews__wpcr .wpcr3_respond_2 {
    background: transparent;
    border: 0;
    border-radius: 0;
    padding: 4px 0 8px;
    margin: 0 0 18px;
    width: auto;
    max-width: none;
}
.dphggg-reviews__wpcr .wpcr3_respond_2 .wpcr3_div_2,
.dphggg-reviews__wpcr .wpcr3_respond_2 .wpcr3_table_2 {
    display: block;
    width: 100%;
    max-width: none;
    box-sizing: border-box;
    margin: 0;
    border: 0;
    border-collapse: collapse;
    background: transparent;
}
/* The table becomes a two-column grid: name and email side by side,
   everything else full width. */
.dphggg-reviews__wpcr .wpcr3_table_2 tbody {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 16px;
}
.dphggg-reviews__wpcr .wpcr3_table_2 tr {
    display: block;
    grid-column: 1 / -1;
    margin: 0;
    background: transparent;
}
.dphggg-reviews__wpcr .wpcr3_table_2 tr.wpcr3_review_form_text_field { grid-column: auto; }
.dphggg-reviews__wpcr .wpcr3_table_2 td {
    display: block;
    padding: 0;
    border: 0;
    background: transparent;
    width: auto;
}
.dphggg-reviews__wpcr .wpcr3_leave_text {
    font-size: 17px;
    font-weight: 600;
    color: #1A1A1A;
    margin: 0 0 2px;
    padding: 0;
    background: transparent;
}
.dphggg-reviews__wpcr .wpcr3_respond_2 label.comment-field {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: #1A1A1A;
    margin: 0 0 6px;
    padding: 0;
}
.dphggg-reviews__wpcr .wpcr3_review_form_review_field_label td { padding: 0; }
.dphggg-reviews__wpcr .wpcr3_review_form_review_field_label { margin-bottom: -8px; }
.dphggg-reviews__wpcr .wpcr3_respond_2 input[type="text"],
.dphggg-reviews__wpcr .wpcr3_respond_2 textarea {
    display: block;
    width: 100%;
    max-width: none;
    box-sizing: border-box;
    font-family: 'Rubik', sans-serif;
    font-size: 15px;
    color: #1A1A1A;
    background: #fff;
    border: 1px solid #C9CDD2;
    border-radius: 8px;
    padding: 10px 12px;
    margin: 0;
    box-shadow: none;
    transition: border-color .12s ease, box-shadow .12s ease;
}
.dphggg-reviews__wpcr .wpcr3_respond_2 input[type="text"] { height: 42px; }
.dphggg-reviews__wpcr .wpcr3_respond_2 textarea {
    min-height: 110px;
    height: auto;
    resize: vertical;
    line-height: 1.5;
}
.dphggg-reviews__wpcr .wpcr3_respond_2 input[type="text"]:focus,
.dphggg-reviews__wpcr .wpcr3_respond_2 textarea:focus {
    outline: none;
    border-color: #1A1A1A;
    box-shadow: 0 0 0 3px rgba(26,26,26,.08);
}
/* The honeypot fields must stay off screen; WPCR hides them with its own
   class and this keeps that intact under the display:block above. */
.dphggg-reviews__wpcr .wpcr3_fakehide { display: none !important; }
.dphggg-reviews__wpcr .wpcr3_check_confirm { background: transparent; padding: 0; }
.dphggg-reviews__wpcr .wpcr3_check_confirm label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 13.5px;
    color: #333;
    cursor: pointer;
    margin: 0;
}
.dphggg-reviews__wpcr .wpcr3_check_confirm input[type="checkbox"] {
    width: 17px; height: 17px;
    margin: 0;
    accent-color: var(--dphggg-reviews-accent);
}
.dphggg-reviews__wpcr .wpcr3_table_2 tr:last-child td {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-top: 4px;
    font-size: 0;   /* swallows the &nbsp; run between the two buttons */
}
.dphggg-reviews__wpcr .wpcr3_submit_btn {
    background: var(--dphggg-reviews-accent);
    border-color: var(--dphggg-reviews-accent);
    color: #fff;
    padding: 12px 24px;
}
.dphggg-reviews__wpcr .wpcr3_submit_btn:hover,
.dphggg-reviews__wpcr .wpcr3_submit_btn:focus {
    background: #E09612;
    border-color: #E09612;
    color: #fff;
}
.dphggg-reviews__wpcr .wpcr3_cancel_btn {
    border-color: transparent;
    background: transparent;
    color: var(--dphggg-reviews-muted);
    padding: 12px 14px;
}
.dphggg-reviews__wpcr .wpcr3_cancel_btn:hover { background: #F5F5F5; color: #1A1A1A; border-color: transparent; }
.dphggg-reviews__wpcr .wpcr3_status_msg {
    font-size: 14px;
    margin: 0 0 12px;
}

@media (max-width: 767px) {
    .dphggg-reviews__heading { font-size: 19px; }
    .dphggg-reviews__summary { gap: 8px; }
    .dphggg-reviews__star { font-size: 17px; }
    .dphggg-reviews__wpcr .wpcr3_respond_2 { padding: 0 0 4px; }
    .dphggg-reviews__wpcr div.wpcr3_review { margin-bottom: 0 !important; }
    .dphggg-reviews__wpcr .wpcr3_table_2 tbody { grid-template-columns: 1fr; }
    .dphggg-reviews__wpcr .wpcr3_table_2 tr.wpcr3_review_form_text_field { grid-column: 1 / -1; }
    .dphggg-reviews__wpcr div.wpcr3_review { padding: 18px 0; }
    /* Date tucked right under the name, starting where the name starts
       (34px avatar + 10px). */
    .dphggg-reviews__wpcr div.wpcr3_review div.wpcr3_review_datePublished {
        margin-left: 0;
        flex: 0 0 100%;
        padding-left: 44px;
        margin-top: -14px;
        line-height: 1.2;
    }
}

/* === BOOK NOW CARD === */
.dphggg-booknow {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    background: #F3F4F6;
    border-radius: 12px;
    padding: 18px 22px;
    margin-top: 18px;
    font-family: 'Rubik', sans-serif;
}
.dphggg-booknow__copy {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.dphggg-booknow__title {
    font-size: 15px;
    font-weight: 600;
    color: #1A1A1A;
}
.dphggg-booknow__text {
    font-size: 13.5px;
    color: #5F6368;
}
.dphggg-booknow__btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex: none;
    background: #4A90D9;
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    padding: 13px 24px;
    border-radius: 10px;
    text-decoration: none;
    transition: background .15s ease;
}
.dphggg-booknow__btn:hover,
.dphggg-booknow__btn:focus {
    background: #3A7BBD;
    color: #fff;
    text-decoration: none;
}
/* "This tour package was last updated ..." under the box (4.10.42). */
.dphggg-booknow__updated {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 12px 0 0;
    font-family: 'Rubik', sans-serif;
    font-size: 13px;
    line-height: 1.4;
    color: #6B747D;
}
.dphggg-booknow__updated svg { flex-shrink: 0; }
.dphggg-booknow--empty {
    display: block;
    font-size: 13px;
    color: #767676;
    border: 1px dashed #C9C9C9;
    background: #fff;
}
@media (max-width: 767px) {
    .dphggg-booknow {
        flex-direction: column;
        align-items: stretch;
        padding: 16px;
    }
    .dphggg-booknow__btn {
        justify-content: center;
    }
    /* Phones (4.10.24, 4.10.38): on a tour with a Check Price link the
       bottom bar and the booking card already offer Check Price, so this
       card is hidden, with the widget's own spacing. On a tour without one
       it stays: its Book This Tour (WhatsApp) is the way to book. */
    .elementor-widget-dphggg-book-now:has(.dphggg-booknow--check) {
        display: none;
    }
}

/* === OVERVIEW READ MORE (added by dphggg-frontend.js) === */
.dphggg-clamp {
    position: relative;
    overflow: hidden;
    transition: max-height .3s ease;
}
.dphggg-clamp::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 56px;
    background: linear-gradient(to bottom, rgba(255,255,255,0), #fff 85%);
    pointer-events: none;
    transition: opacity .2s ease;
}
.dphggg-clamp--open::after { opacity: 0; }
.dphggg-clamp__btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 6px 0 0;
    padding: 0;
    background: none;
    border: 0;
    font-family: 'Rubik', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: #4A90D9;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}
.dphggg-clamp__btn::after {
    content: '';
    width: 8px; height: 8px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
    transition: transform .2s ease;
}
.dphggg-clamp__btn[aria-expanded="true"]::after { transform: translateY(2px) rotate(-135deg); }
/* Same theme guard as Expand All: the theme paints bare <button>:hover with
   Elementor's purple accent, so every state is pinned here. */
.dphggg-clamp__btn.dphggg-clamp__btn,
.dphggg-clamp__btn.dphggg-clamp__btn:hover,
.dphggg-clamp__btn.dphggg-clamp__btn:focus,
.dphggg-clamp__btn.dphggg-clamp__btn:active {
    background-color: transparent !important;
    background-image: none !important;
    border: 0 !important;
    box-shadow: none !important;
}
.dphggg-clamp__btn.dphggg-clamp__btn { color: #4A90D9 !important; }
.dphggg-clamp__btn.dphggg-clamp__btn:hover,
.dphggg-clamp__btn.dphggg-clamp__btn:focus,
.dphggg-clamp__btn.dphggg-clamp__btn:active { color: #3A7BBD !important; }
.dphggg-clamp__btn:focus { outline: none; }
.dphggg-clamp__btn:focus-visible { outline: 2px solid #4A90D9; outline-offset: 3px; }

/* === ASK A QUESTION (v4.9.0) =============================================
   WordPress comments shown as questions and answers. Same type, blue and
   divider lines as the reviews above it. The form is core comment_form()
   markup, which the TravelWP theme also styles (#respond, .comment-form,
   purple button:hover), so the form rules use a doubled class and
   !important where the theme would otherwise win. */
.dphggg-qa {
    --dphggg-qa-heading: #1A1A1A;
    --dphggg-qa-text: #1A1A1A;
    --dphggg-qa-muted: #6B7076;
    --dphggg-qa-accent: #4A90D9;
    --dphggg-qa-line: #E6E8EB;
    --dphggg-qa-form-bg: #F3F4F6;
    --dphggg-qa-field-border: #D5D9DE;
    --dphggg-qa-submit: #4A90D9;
    --dphggg-qa-submit-hover: #3A7BBD;
    --dphggg-qa-submit-text: #FFFFFF;
    --dphggg-qa-team: #4A90D9;
    --dphggg-qa-wa-card: #F3F4F6;
    --dphggg-qa-wa: #1DA851;        /* the darker WhatsApp green, by request */
    --dphggg-qa-wa-hover: #178A43;
    --dphggg-qa-wa-text: #FFFFFF;
    font-family: 'Rubik', sans-serif;
    color: var(--dphggg-qa-text);
    scroll-margin-top: 110px;
}
.dphggg-qa__head {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 6px 12px;
    margin: 0 0 6px;
}
.dphggg-qa .dphggg-qa__heading {
    font-family: 'Rubik', sans-serif;
    font-size: 22px;
    font-weight: 600;
    line-height: 1.3;
    color: var(--dphggg-qa-heading);
    margin: 0;
}
.dphggg-qa__count {
    font-size: 14px;
    color: var(--dphggg-qa-muted);
}
.dphggg-qa__intro {
    font-size: 15px;
    line-height: 1.5;
    color: var(--dphggg-qa-muted);
    margin: 0 0 16px;
}
.dphggg-qa__sr {
    position: absolute !important;
    width: 1px; height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

/* ---- form ---- */
.dphggg-qa .dphggg-qa__respond {
    background: var(--dphggg-qa-form-bg);
    border: 0;
    border-radius: 12px;
    padding: 18px 20px 16px;
    margin: 0 0 8px;
    scroll-margin-top: 110px;
}
/* Moved under a question by the Reply link */
.dphggg-qa__list .dphggg-qa__respond { margin: 0 0 18px 52px; }
.dphggg-qa .dphggg-qa__form-title {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    font-size: 15px;
    font-weight: 600;
    color: var(--dphggg-qa-text);
    margin: 0 0 10px;
    padding: 0;
    border: 0;
}
.dphggg-qa .dphggg-qa__cancel { font-size: 13px; font-weight: 400; }
.dphggg-qa .dphggg-qa__cancel a { color: var(--dphggg-qa-accent); text-decoration: underline; }
.dphggg-qa .dphggg-qa__form {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* Name, Email, Phone in one row (4.10.26) */
    gap: 10px 12px;
    margin: 0;
}
.dphggg-qa .dphggg-qa__form > * { grid-column: 1 / -1; margin: 0; }
.dphggg-qa .dphggg-qa__form > .dphggg-qa__field--half { grid-column: auto; }
.dphggg-qa .dphggg-qa__field label {
    display: block;
    font-size: 13px;
    font-weight: 500;
    color: var(--dphggg-qa-muted);
    margin: 0 0 4px;
}
.dphggg-qa .dphggg-qa__field .required { color: #D93025; }
.dphggg-qa.dphggg-qa .dphggg-qa__form textarea,
.dphggg-qa.dphggg-qa .dphggg-qa__form input[type="text"],
.dphggg-qa.dphggg-qa .dphggg-qa__form input[type="email"],
.dphggg-qa.dphggg-qa .dphggg-qa__form input[type="tel"] {
    display: block;
    width: 100% !important;
    max-width: none;
    box-sizing: border-box;
    font-family: 'Rubik', sans-serif !important;
    font-size: 15px !important;
    line-height: 1.45 !important;
    color: var(--dphggg-qa-text) !important;
    background: #FFFFFF !important;
    border: 1px solid var(--dphggg-qa-field-border) !important;
    border-radius: 8px !important;
    padding: 10px 12px !important;
    margin: 0 !important;
    box-shadow: none !important;
    height: auto;
}
.dphggg-qa.dphggg-qa .dphggg-qa__form textarea { min-height: 96px; resize: vertical; }
.dphggg-qa.dphggg-qa .dphggg-qa__form textarea:focus,
.dphggg-qa.dphggg-qa .dphggg-qa__form input[type="text"]:focus,
.dphggg-qa.dphggg-qa .dphggg-qa__form input[type="email"]:focus,
.dphggg-qa.dphggg-qa .dphggg-qa__form input[type="tel"]:focus {
    border-color: var(--dphggg-qa-accent) !important;
    outline: 2px solid rgba(74, 144, 217, .25);
    outline-offset: 0;
}
.dphggg-qa .dphggg-qa__consent {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 13px;
    color: var(--dphggg-qa-muted);
}
.dphggg-qa .dphggg-qa__consent input { margin: 2px 0 0; flex: none; }
.dphggg-qa .dphggg-qa__consent label { margin: 0; font-size: 13px; }
.dphggg-qa .dphggg-qa__as { font-size: 13px; color: var(--dphggg-qa-muted); }
.dphggg-qa .dphggg-qa__as a { color: var(--dphggg-qa-accent); }
.dphggg-qa .dphggg-qa__submit-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px 16px;
    margin: 2px 0 0;
}
.dphggg-qa__notes { font-size: 12.5px; color: var(--dphggg-qa-muted); }
.dphggg-qa.dphggg-qa .dphggg-qa__submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0 0 0 auto !important;
    font-family: 'Rubik', sans-serif !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    color: var(--dphggg-qa-submit-text) !important;
    background: var(--dphggg-qa-submit) !important;
    border: 0 !important;
    border-radius: 10px !important;
    padding: 12px 24px !important;
    box-shadow: none !important;
    cursor: pointer;
    transition: background .15s ease;
}
.dphggg-qa.dphggg-qa .dphggg-qa__submit:hover,
.dphggg-qa.dphggg-qa .dphggg-qa__submit:focus {
    color: var(--dphggg-qa-submit-text) !important;
    background: var(--dphggg-qa-submit-hover) !important;
}
.dphggg-qa .dphggg-qa__submit:focus-visible { outline: 2px solid #1A1A1A !important; outline-offset: 2px; }
.dphggg-qa__closed {
    font-size: 14px;
    color: var(--dphggg-qa-muted);
    margin: 0 0 8px;
}

/* ---- questions and answers ---- */
.dphggg-qa .dphggg-qa__list,
.dphggg-qa .dphggg-qa__replies {
    list-style: none;
    margin: 0;
    padding: 0;
}
.dphggg-qa .dphggg-qa__list { margin-top: 10px; }
.dphggg-qa .dphggg-qa__list > .dphggg-qa__item {
    border-top: 1px solid var(--dphggg-qa-line);
    padding: 20px 0;
    margin: 0;
}
.dphggg-qa .dphggg-qa__list > .dphggg-qa__item:last-child { border-bottom: 1px solid var(--dphggg-qa-line); }
.dphggg-qa .dphggg-qa__item--folded { display: none; }
.dphggg-qa__post {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    scroll-margin-top: 110px;
}
.dphggg-qa__avatar {
    flex: none;
    width: 40px; height: 40px;
    border-radius: 50%;
    background: #E9ECF0;
    color: #4A5058;
    font-size: 16px;
    font-weight: 600;
    line-height: 40px;
    text-align: center;
    object-fit: cover;
}
.dphggg-qa__post--team .dphggg-qa__avatar:not(img) {
    background: var(--dphggg-qa-team);
    color: #fff;
}
.dphggg-qa__main { flex: 1; min-width: 0; }
.dphggg-qa__meta {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 4px 10px;
    margin: 0 0 4px;
}
.dphggg-qa__name {
    font-size: 15px;
    font-weight: 600;
    color: var(--dphggg-qa-text);
}
.dphggg-qa__badge {
    font-size: 11.5px;
    font-weight: 600;
    color: var(--dphggg-qa-team);
    background: rgba(74, 144, 217, .1);
    border-radius: 999px;
    padding: 2px 8px;
}
.dphggg-qa__date {
    margin-left: auto;
    font-size: 13px;
    color: var(--dphggg-qa-muted);
    white-space: nowrap;
}
.dphggg-qa__pending {
    font-size: 13px;
    color: #8A5A00;
    background: #FFF6E0;
    border-radius: 6px;
    padding: 6px 10px;
    margin: 4px 0 8px;
}
.dphggg-qa__post--pending .dphggg-qa__text { opacity: .75; }
.dphggg-qa__text {
    font-size: 15px;
    line-height: 1.55;
    color: var(--dphggg-qa-text);
    overflow-wrap: anywhere;
}
.dphggg-qa__text p { margin: 0 0 8px; }
.dphggg-qa__text p:last-child { margin-bottom: 0; }
.dphggg-qa__text a { color: var(--dphggg-qa-accent); }
.dphggg-qa__actions { margin: 6px 0 0; }
.dphggg-qa.dphggg-qa .comment-reply-link {
    font-size: 13px;
    font-weight: 500;
    color: var(--dphggg-qa-accent) !important;
    background: none !important;
    text-decoration: none;
    padding: 0;
}
.dphggg-qa.dphggg-qa .comment-reply-link:hover,
.dphggg-qa.dphggg-qa .comment-reply-link:focus {
    color: var(--dphggg-qa-submit-hover) !important;
    text-decoration: underline;
}
/* Replies: indented under the question with a thin rule, no boxes */
.dphggg-qa .dphggg-qa__replies {
    margin: 14px 0 0 52px;
    padding: 0;
}
.dphggg-qa .dphggg-qa__replies > .dphggg-qa__item + .dphggg-qa__item { margin-top: 14px; }
.dphggg-qa .dphggg-qa__replies .dphggg-qa__replies { margin-left: 0; }
.dphggg-qa__replies .dphggg-qa__avatar { width: 34px; height: 34px; line-height: 34px; font-size: 14px; }
.dphggg-qa.dphggg-qa .dphggg-qa__more {
    display: block;
    width: 100%;
    margin: 14px 0 0 !important;
    font-family: 'Rubik', sans-serif !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    color: var(--dphggg-qa-accent) !important;
    background: #fff !important;
    border: 1px solid var(--dphggg-qa-line) !important;
    border-radius: 10px !important;
    padding: 11px 16px !important;
    text-transform: none !important;
    box-shadow: none !important;
    cursor: pointer;
}
.dphggg-qa.dphggg-qa .dphggg-qa__more:hover,
.dphggg-qa.dphggg-qa .dphggg-qa__more:focus {
    background: #F5F5F5 !important;
    color: var(--dphggg-qa-submit-hover) !important;
}
.dphggg-qa__empty {
    font-size: 14px;
    color: var(--dphggg-qa-muted);
    border-top: 1px solid var(--dphggg-qa-line);
    padding: 16px 0 0;
    margin: 10px 0 0;
}

/* ---- WhatsApp prompt (same card as the Check Price box) ---- */
.dphggg-qa__wa {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    background: var(--dphggg-qa-wa-card);
    border-radius: 12px;
    padding: 18px 22px;
    margin: 20px 0 0;
}
.dphggg-qa__wa-copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dphggg-qa__wa-title { font-size: 15px; font-weight: 600; color: var(--dphggg-qa-text); }
.dphggg-qa__wa-text { font-size: 13.5px; color: #5F6368; }
.dphggg-qa.dphggg-qa .dphggg-qa__wa-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex: none;
    font-size: 15px;
    font-weight: 600;
    color: var(--dphggg-qa-wa-text) !important;
    background: var(--dphggg-qa-wa) !important;
    border-radius: 10px;
    padding: 12px 22px;
    text-decoration: none !important;
    transition: background .15s ease;
}
.dphggg-qa.dphggg-qa .dphggg-qa__wa-btn:hover,
.dphggg-qa.dphggg-qa .dphggg-qa__wa-btn:focus {
    color: var(--dphggg-qa-wa-text) !important;
    background: var(--dphggg-qa-wa-hover) !important;
}

@media (max-width: 767px) {
    .dphggg-qa .dphggg-qa__heading { font-size: 18px; }
    .dphggg-qa .dphggg-qa__respond { padding: 14px; }
    .dphggg-qa .dphggg-qa__form { grid-template-columns: 1fr; }
    .dphggg-qa .dphggg-qa__form > .dphggg-qa__field--half { grid-column: 1 / -1; }
    .dphggg-qa.dphggg-qa .dphggg-qa__submit { width: 100%; margin: 0 !important; }
    .dphggg-qa .dphggg-qa__replies { margin-left: 24px; padding-left: 0; }
    .dphggg-qa__list .dphggg-qa__respond { margin-left: 0; }
    .dphggg-qa__avatar { width: 34px; height: 34px; line-height: 34px; font-size: 14px; }
    .dphggg-qa__wa { flex-direction: column; align-items: stretch; padding: 16px; }
}

/* === WHY BOOK WITH HOLIDAYGOGOGO (v4.9.2) =================================
   The template's "Why Book" section carries the class dphggg-why. Each card
   is a stock Text Editor whose first paragraph is the title; that line gets
   an orange tick and title styling here, so the text stays editable (and
   translatable) in Elementor. */
.dphggg-why .elementor-widget-text-editor p { margin: 0; }
.dphggg-why .elementor-widget-text-editor p + p { margin-top: 0; }
.dphggg-why .elementor-widget-text-editor p:first-child {
    display: flex;
    align-items: center;
    gap: 9px;
    font-size: 15.5px;
    line-height: 1.3;
    color: #1A1A1A;
    margin: 0 0 6px;
}
.dphggg-why .elementor-widget-text-editor p:first-child strong { font-weight: 600; }
.dphggg-why .elementor-widget-text-editor p:first-child::before {
    content: '';
    flex: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #F5A623 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center / 12px 12px no-repeat;
}
.dphggg-why .elementor-widget-text-editor p:not(:first-child) { padding-left: 29px; }
@media (max-width: 767px) {
    .dphggg-why .elementor-widget-text-editor p:first-child { font-size: 15px; }
    .dphggg-why .elementor-widget-text-editor p:not(:first-child) { padding-left: 0; }
}

/* === EXPLORE LINKS BOX (v4.9.6) ===========================================
   1. Heading is now an <h2> ("Explore more of Redang Island"), styled like
      the page's other section headings so the theme's h2 can't take over.
   2. Tabs wrap onto a second line on wider screens instead of running off
      the right edge (the scrollbar was hidden, so the last tab looked cut
      off). Phones keep the swipe row, with a fade on the right edge to show
      there is more. */
.dphggg-navtabs .dphggg-navtabs__heading {
    font-family: 'Rubik', sans-serif;
    font-size: 22px;
    font-weight: 600;
    line-height: 1.3;
    color: #1A1A1A;
    margin: 0 0 16px;
    padding: 0;
    text-transform: none;
    letter-spacing: 0;
}
@media (min-width: 768px) {
    .dphggg-navtabs .dphggg-navtabs__tabs {
        flex-wrap: wrap;
        overflow: visible;
        row-gap: 14px;
    }
}
@media (max-width: 767px) {
    .dphggg-navtabs .dphggg-navtabs__heading { font-size: 19px; }
    .dphggg-navtabs .dphggg-navtabs__tabs {
        -webkit-mask-image: linear-gradient(to right, #000 85%, transparent);
                mask-image: linear-gradient(to right, #000 85%, transparent);
        padding-right: 28px;
    }
}

/* === REVIEWS: SUMMARY CARD LAYOUT (v4.9.7) ================================
   Layout "card" of the Reviews widget: score card on the left (sticky on
   desktop, a compact row on top on phones), WPCR's reviews as white cards on
   the right, folded after the first few behind "Show all N reviews". The
   grey band behind it is the Elementor section's background. */
.dphggg-reviews--card { padding-top: 0; }
.dphggg-reviews--card .dphggg-reviews__heading { margin-bottom: 18px; }
.dphggg-reviews__grid {
    display: grid;
    grid-template-columns: 300px minmax(0, 1fr);
    gap: 32px;
    align-items: start;
}
.dphggg-reviews__card {
    background: #fff;
    border: 0;
    border-radius: 14px;
    padding: 22px;
}
.dphggg-reviews__big {
    font-size: 46px;
    font-weight: 700;
    line-height: 1;
    color: #1A1A1A;
}
.dphggg-reviews__card-meta { margin-top: 8px; }
.dphggg-reviews__card .dphggg-reviews__stars { font-size: 20px; letter-spacing: 1px; display: block; }
.dphggg-reviews__card-line { display: block; margin-top: 4px; font-size: 14px; color: var(--dphggg-reviews-muted, #6B7076); }
.dphggg-reviews__none { margin: 0; font-size: 14.5px; line-height: 1.5; color: var(--dphggg-reviews-muted, #6B7076); }
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__write {
    display: block;
    width: 100%;
    margin: 18px 0 0 !important;
    font-family: 'Rubik', sans-serif !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    text-transform: none !important;
    color: #1A1A1A !important;
    background: #fff !important;
    border: 1.5px solid #1A1A1A !important;
    border-radius: 10px !important;
    padding: 12px 16px !important;
    box-shadow: none !important;
    cursor: pointer;
}
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__write:hover,
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__write:focus {
    background: #F5F5F5 !important;
    color: #1A1A1A !important;
}
/* WPCR's own "Write a review" button is replaced by the card's. Its form
   still opens in place, above the list. */
.dphggg-reviews--card .dphggg-reviews__wpcr .wpcr3_respond_3 { display: none; }
.dphggg-reviews--card .dphggg-reviews__wpcr .wpcr3_respond_2 {
    background: #fff;
    border: 0;
    border-radius: 12px;
    padding: 16px 18px;
    margin: 0 0 12px;
}
.dphggg-reviews--card .dphggg-reviews__wpcr .wpcr3_reviews_holder { padding: 0; }
.dphggg-reviews--card .dphggg-reviews__wpcr div.wpcr3_review {
    background: #fff;
    border: 0 !important;
    border-radius: 12px;
    padding: 16px 18px;
    margin: 0 0 10px !important;
}
.dphggg-reviews--card .dphggg-reviews__wpcr div.wpcr3_review.dphggg-reviews__folded { display: none !important; }
.dphggg-reviews--card .dphggg-reviews__wpcr .wpcr3_pagination { display: none; }
/* Reply to a review: a plain light-grey box under the review text, with the
   team label in blue. */
.dphggg-reviews--card .dphggg-reviews__wpcr div.wpcr3_review blockquote.wpcr3_content.wpcr3_admin_response {
    margin-top: 12px;
    padding: 12px 14px;
    background: #F5F6F8;
    border: 0;
    border-radius: 10px;
    font-size: 14.5px;
    line-height: 1.55;
    color: #333;
}
.dphggg-reviews--card .dphggg-reviews__wpcr div.wpcr3_review blockquote.wpcr3_content.wpcr3_admin_response::before {
    color: #4A90D9;
    font-size: 12.5px;
    font-weight: 600;
    margin-bottom: 4px;
}
/* Reviews pager (4.10.20): page numbers under the list, in the same white
   rounded box the old "Show all" button used. Buttons reset hard because
   the theme paints every button. */
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__pager,
.dphggg-faq .dphggg-faq__pager {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 4px;
    margin: 2px 0 0;
    padding: 10px 12px;
    background: #fff;
    border-radius: 12px;
}
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__pager button,
.dphggg-faq .dphggg-faq__pager button {
    min-width: 36px;
    height: 36px;
    margin: 0 !important;
    padding: 0 8px !important;
    font-family: 'Rubik', sans-serif !important;
    font-size: 14.5px !important;
    font-weight: 500 !important;
    line-height: 1 !important;
    text-transform: none !important;
    color: #333 !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 999px !important;
    box-shadow: none !important;
    cursor: pointer;
}
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__pager .dphggg-reviews__pager-arrow,
.dphggg-faq .dphggg-faq__pager .dphggg-reviews__pager-arrow {
    font-size: 22px !important;
    color: #4A90D9 !important;
}
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__pager button:hover,
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__pager button:focus-visible,
.dphggg-faq .dphggg-faq__pager button:hover,
.dphggg-faq .dphggg-faq__pager button:focus-visible {
    background: #F5F5F5 !important;
}
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__pager button.is-current,
.dphggg-faq .dphggg-faq__pager button.is-current {
    background: #1A1A1A !important;
    color: #fff !important;
    font-weight: 600 !important;
    cursor: default;
}
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__pager button[disabled],
.dphggg-faq .dphggg-faq__pager button[disabled] {
    color: #C9CDD2 !important;
    background: transparent !important;
    cursor: default;
}
.dphggg-reviews__pager-gap {
    min-width: 20px;
    text-align: center;
    color: #6B747D;
}

/* Each review stops at 3 lines; "See more" opens the rest in place. */
.dphggg-reviews__wpcr div.wpcr3_review blockquote.wpcr3_content.dphggg-reviews__clamp:not(.is-open) {
    display: -webkit-box !important;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
}
.dphggg-reviews__wpcr div.wpcr3_review .dphggg-reviews__seemore {
    order: 6;
    flex: 0 0 100%;
    margin: 0 !important;
    padding: 0 !important;
    font-family: 'Rubik', sans-serif !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    text-align: left;
    text-transform: none !important;
    color: #4A90D9 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    cursor: pointer;
}
.dphggg-reviews__wpcr div.wpcr3_review .dphggg-reviews__seemore:hover {
    color: #3A7BBD !important;
    text-decoration: underline;
}
@media (max-width: 900px) {
    .dphggg-reviews__grid { grid-template-columns: 1fr; gap: 16px; }
    .dphggg-reviews__card {
        position: static;
        display: grid;
        grid-template-columns: auto 1fr;
        align-items: center;
        gap: 4px 16px;
        padding: 16px;
    }
    .dphggg-reviews__big { font-size: 38px; }
    .dphggg-reviews__card-meta { margin: 0; }
    .dphggg-reviews__card .dphggg-reviews__stars { font-size: 18px; }
    .dphggg-reviews__none { grid-column: 1 / -1; }
    .dphggg-reviews.dphggg-reviews--card .dphggg-reviews__write { grid-column: 1 / -1; margin-top: 10px !important; }
}
@media (max-width: 767px) {
    .dphggg-reviews--card .dphggg-reviews__wpcr div.wpcr3_review { padding: 14px; }
}

/* === ASK A QUESTION: FOLDED FORM (v4.9.8) ================================
   The form is hidden until "Submit a Question" is pressed (or a Reply link
   on a question moves it into the list). */
.dphggg-qa .dphggg-qa__formwrap { display: none; }
.dphggg-qa .dphggg-qa__formwrap.is-open { display: block; }
.dphggg-qa.dphggg-qa .dphggg-qa__open {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0 0 8px !important;
    font-family: 'Rubik', sans-serif !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    text-transform: none !important;
    color: var(--dphggg-qa-submit-text) !important;
    background: var(--dphggg-qa-submit) !important;
    border: 0 !important;
    border-radius: 10px !important;
    padding: 12px 24px !important;
    box-shadow: none !important;
    cursor: pointer;
}
.dphggg-qa.dphggg-qa .dphggg-qa__open:hover,
.dphggg-qa.dphggg-qa .dphggg-qa__open:focus {
    color: var(--dphggg-qa-submit-text) !important;
    background: var(--dphggg-qa-submit-hover) !important;
}
.dphggg-qa .dphggg-qa__open[hidden] { display: none !important; }
@media (max-width: 767px) {
    .dphggg-qa.dphggg-qa .dphggg-qa__open { width: 100%; }
}

/* === SECTION HEADINGS +1px (v4.9.10) ======================================
   Itinerary, What's (Not) Included, Important Notes, Guest Reviews, Ask a
   Question and Explore more: 22px -> 23px, and 1px up on phones as well.
   The Elementor heading widgets (Overview, Price, Related Tours, Why Book)
   carry the same change in the templates. */
.dphggg-itinerary__heading,
.dphggg-checklist__heading,
.dphggg-reviews__heading,
.dphggg-qa .dphggg-qa__heading,
.dphggg-navtabs .dphggg-navtabs__heading { font-size: 23px; }
@media (max-width: 767px) {
    .dphggg-itinerary__heading,
    .dphggg-checklist__heading,
    .dphggg-qa .dphggg-qa__heading { font-size: 19px; }
    .dphggg-reviews__heading,
    .dphggg-navtabs .dphggg-navtabs__heading { font-size: 20px; }
}

/* === FIXES (v4.9.11) ====================================================== */
/* Write a review form: WPCR's own stylesheet zeroes the box padding, so the
   fields sat flush against the card edge. */
.dphggg-reviews.dphggg-reviews--card .dphggg-reviews__wpcr div.wpcr3_respond_2 {
    padding: 22px 24px 20px !important;
    box-sizing: border-box;
}
@media (max-width: 767px) {
    .dphggg-reviews.dphggg-reviews--card .dphggg-reviews__wpcr div.wpcr3_respond_2 { padding: 16px !important; }
}
/* Explore tabs: a plain straight underline. The theme rounds button corners,
   which bent the underline up at both ends. */
.dphggg-navtabs .dphggg-navtabs__tab {
    border-radius: 0 !important;
    border-bottom-width: 2px;
}
.dphggg-navtabs .dphggg-navtabs__tab.is-active { border-bottom-color: #1A1A1A; }
/* Wrapped tab rows sit closer together. */
@media (min-width: 768px) {
    .dphggg-navtabs .dphggg-navtabs__tabs { row-gap: 12px; }
}
/* Underline closer to the tab text (was 14px below it). */
.dphggg-navtabs .dphggg-navtabs__tab { padding-bottom: 6px; }

/* === EXPLORE TABS ON THE LIVE SITE (v4.9.14) ==============================
   Two things overrode the spacing above on the real page:
   1. The widget's "Gap Between Tabs" control wrote `gap: 40px`, which also
      spaced the wrapped rows 40px apart. The control now writes column-gap,
      but Elementor keeps the old rule in its cached CSS until it is
      regenerated, so the row gap is forced here as well.
   2. The theme gives every <button> a fixed height and line-height, which
      pushed the underline well below the text. */
.dphggg-navtabs .dphggg-navtabs__tabs { row-gap: 12px !important; }
.dphggg-navtabs .dphggg-navtabs__tabs .dphggg-navtabs__tab {
    height: auto !important;
    min-height: 0 !important;
    line-height: 1.3 !important;
    padding: 0 0 6px !important;
    margin: 0 !important;
    border-top: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    border-radius: 0 !important;
    background: none !important;
    box-shadow: none !important;
}

/* === HERO -> GALLERY SPACING (v4.9.16) ====================================
   The gap under the rating row was 45px (hero margin + Elementor's 20px
   widget spacing + column padding) against 20px under the gallery.
   Measured on the live page: these two rules make both gaps 20px, on
   desktop and phones. */
.elementor-widget.elementor-widget-dphggg-tour-hero { margin-bottom: 0 !important; }
.dphggg-hero { margin-bottom: -5px; }

/* What's Included: every list gets the blue tick (4.10.33).
   The tick used to come only from the old theme class
   "dt-sc-fancy-list blue tick" saved inside the content, so a list that was
   retyped or pasted fresh lost it and showed dots. Same look as that class:
   #478BCA tick, 15px, 20px text indent. Sub-lists keep a small dot. */
.dphggg-checklist--include .dphggg-checklist__cat-body ul {
    list-style: none;
    margin-left: 0;
    padding-left: 23px;
}
.dphggg-checklist--include .dphggg-checklist__cat-body ul > li {
    position: relative;
    list-style: none;
    padding-left: 20px;
}
.dphggg-checklist--include .dphggg-checklist__cat-body ul > li::before {
    content: "\2713";
    position: absolute;
    top: 1px;
    left: 0;
    font-family: inherit;
    font-size: 15px;
    font-style: normal;
    font-weight: 400;
    line-height: inherit;
    color: #478BCA;
}
.dphggg-checklist--include .dphggg-checklist__cat-body li ul {
    margin: 4px 0 0;
    padding-left: 18px;
}
.dphggg-checklist--include .dphggg-checklist__cat-body li li {
    padding-left: 0;
    list-style: disc;
}
.dphggg-checklist--include .dphggg-checklist__cat-body li li::before { content: none; }

/* Excludes and Good to Know: the same fix as the tick above (4.10.50).
   Their red cross and orange warning sign also came only from the old theme
   classes "dt-sc-fancy-list chillipepper cross" / "orange warning" saved in
   the content, so a retyped list showed dots. Same look as those classes:
   red #b31f41 cross 20px, orange #f67f45 warning sign 15px. */
.dphggg-checklist--exclude .dphggg-checklist__cat-body ul,
.dphggg-checklist--note .dphggg-checklist__cat-body ul {
    list-style: none;
    margin-left: 0;
    padding-left: 23px;
}
.dphggg-checklist--exclude .dphggg-checklist__cat-body ul > li,
.dphggg-checklist--note .dphggg-checklist__cat-body ul > li {
    position: relative;
    list-style: none;
    padding-left: 20px;
}
.dphggg-checklist--exclude .dphggg-checklist__cat-body ul > li::before,
.dphggg-checklist--note .dphggg-checklist__cat-body ul > li::before {
    position: absolute;
    top: 1px;
    left: 0;
    font-family: inherit;
    font-style: normal;
    font-weight: 400;
    line-height: inherit;
}
.dphggg-checklist--exclude .dphggg-checklist__cat-body ul > li::before {
    content: "\00D7";
    top: -2px;
    font-size: 20px;
    color: #b31f41;
}
.dphggg-checklist--note .dphggg-checklist__cat-body ul > li::before {
    content: "\26A0\FE0E"; /* text style, not the emoji, on iPhones */
    font-size: 15px;
    color: #f67f45;
}
.dphggg-checklist--exclude .dphggg-checklist__cat-body li ul,
.dphggg-checklist--note .dphggg-checklist__cat-body li ul {
    margin: 4px 0 0;
    padding-left: 18px;
}
.dphggg-checklist--exclude .dphggg-checklist__cat-body li li,
.dphggg-checklist--note .dphggg-checklist__cat-body li li {
    padding-left: 0;
    list-style: disc;
}
.dphggg-checklist--exclude .dphggg-checklist__cat-body li li::before,
.dphggg-checklist--note .dphggg-checklist__cat-body li li::before { content: none; }

/* List spacing for all three boxes (4.10.34). The theme adds 10px of
   padding under every li, and the 14px gap under a sub-list stacked on
   top of it, so items floated apart. Main items 8px apart, sub-items 2px,
   a sub-list 4px under its item. */
.dphggg-checklist .dphggg-checklist__cat-body ul,
.dphggg-checklist .dphggg-checklist__cat-body ol { margin: 0 0 12px; }
.dphggg-checklist .dphggg-checklist__cat-body li {
    margin: 0 0 8px;
    padding-top: 0;
    padding-bottom: 0;
    line-height: 1.55;
}
.dphggg-checklist .dphggg-checklist__cat-body li:last-child { margin-bottom: 0; }
.dphggg-checklist .dphggg-checklist__cat-body li ul,
.dphggg-checklist .dphggg-checklist__cat-body li ol { margin: 4px 0 0; }
.dphggg-checklist .dphggg-checklist__cat-body li li { margin: 0 0 2px; line-height: 1.5; }
.dphggg-checklist .dphggg-checklist__cat-body li li:last-child { margin-bottom: 0; }

/* Itinerary: one even gap after a list (4.10.54). A line right after the
   time list ("Meal Plan: ...") touched it, and an empty line typed between
   them left a big hole (now removed in itinerary.php). 14px below every
   list, nothing below the last thing in the day. */
.dphggg-itinerary__day-content > ul,
.dphggg-itinerary__day-content > ol {
    margin: 0 0 14px;
}
.dphggg-itinerary__day-content > :last-child { margin-bottom: 0; }

/* Price table (4.10.54): the editor can save a table as width: 0% with odd
   column widths (the 4D3N Hi Fun Hainan table showed squeezed into a third of
   the column). Every price table now fills the column and sizes its columns
   by their content; a very wide table scrolls sideways on phones. */
#dapper-price-table .elementor-widget-container { overflow-x: auto; }
#dapper-price-table table {
    width: 100% !important;
    height: auto !important;
}
#dapper-price-table table td,
#dapper-price-table table th {
    width: auto !important;
    height: auto !important;
}

/* Itinerary day lists get the same spacing (4.10.35): the theme's 10px
   under every li made them looser than the checklists below them. */
.dphggg-itinerary__day-content li {
    margin: 0 0 8px;
    padding-top: 0;
    padding-bottom: 0;
}
.dphggg-itinerary__day-content li:last-child { margin-bottom: 0; }
.dphggg-itinerary__day-content li ul,
.dphggg-itinerary__day-content li ol { margin: 4px 0 0; }
.dphggg-itinerary__day-content li li { margin: 0 0 2px; }
.dphggg-itinerary__day-content li li:last-child { margin-bottom: 0; }

/* Google reviews (Trustindex widget) on phones (4.10.40): Trustindex hides
   its left/right arrows below 480px and leaves only swipe and a thin line.
   Show them, nudged out to the card edges so they cover less of the text.
   A widget set to "no navigation" in Trustindex (ti-disable-nav) stays as
   it is. */
@media (max-width: 767px) {
    .ti-widget.ti-goog:not(.ti-disable-nav) .ti-reviews-container .ti-controls {
        display: block;
    }
    .ti-widget.ti-goog:not(.ti-disable-nav) .ti-reviews-container .ti-controls .ti-prev {
        left: -10px !important;
    }
    .ti-widget.ti-goog:not(.ti-disable-nav) .ti-reviews-container .ti-controls .ti-next {
        right: -10px !important;
    }
}

/* === FAQ (4.10.55, restyled 4.10.56) =====================================
   widgets/faq.php. Same look as the What's Included / Not Included lists:
   heading with an Expand All link on the right, divider rows, 16px 600
   titles, the same grey hover, and a + icon (− when open) in place of the
   chevron. Two columns from 768px (row by row, so 4 per column = 8), one
   on phones. Folded rows stay in the HTML; "--open" on the section shows
   them. */
.dphggg-faq {
    margin: 24px 0 40px;
    font-family: 'Rubik', sans-serif;
}
.dphggg-faq__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 8px;
}
/* The heading wraps under itself on phones; Expand All stays on the right. */
.dphggg-faq .dphggg-faq__heading {
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
    font-size: 23px;
    font-weight: 600;
    line-height: 1.3;
    color: #1A1A1A;
}
.dphggg-faq__list {
    display: grid;
    grid-template-columns: 1fr;
    column-gap: 40px;
    align-items: start;
}
.dphggg-faq__item {
    border-bottom: 1px solid #ECECEC;
}
.dphggg-faq__item:first-child { border-top: 1px solid #ECECEC; }
@media (min-width: 768px) {
    .dphggg-faq__list { grid-template-columns: 1fr 1fr; }
    .dphggg-faq__item:nth-child(2) { border-top: 1px solid #ECECEC; }
}
.dphggg-faq__q {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 4px;
    cursor: pointer;
    list-style: none;
    background-color: transparent;
    transition: background-color 0.15s;
}
.dphggg-faq__q::-webkit-details-marker { display: none; }
.dphggg-faq__q::marker { content: ""; }
.dphggg-faq__q:hover,
.dphggg-faq__q:focus,
.dphggg-faq__q:active {
    background-color: var(--dphggg-hover-bg, #F5F5F5);
    outline: none;
}
.dphggg-faq .dphggg-faq__q-text {
    flex: 1;
    margin: 0;
    padding: 0;
    font-family: inherit;
    font-size: 16px;
    font-weight: 600;
    line-height: 1.45;
    color: #1A1A1A;
}
.dphggg-faq__icon {
    flex: none;
    display: inline-flex;
    color: #999;
}
.dphggg-faq__icon-v { transition: opacity 0.2s; }
.dphggg-faq__item[open] .dphggg-faq__icon-v { opacity: 0; }
.dphggg-faq__a {
    padding: 0 4px 18px;
    font-size: 14px;
    line-height: 1.6;
    color: #333;
}
.dphggg-faq__a > :first-child { margin-top: 0; }
.dphggg-faq__a > :last-child { margin-bottom: 0; }
.dphggg-faq__a p { margin: 0 0 10px; font-size: 14px; line-height: 1.6; }
.dphggg-faq__a ul,
.dphggg-faq__a ol { margin: 0 0 10px; padding-left: 20px; }
.dphggg-faq__a li { margin: 0 0 6px; padding: 0; font-size: 14px; }
.dphggg-faq__a a { color: #4A90D9; }
@media (max-width: 767px) {
    .dphggg-faq .dphggg-faq__heading { font-size: 19px; }
    .dphggg-faq__q { padding: 14px 2px; gap: 10px; }
    .dphggg-faq .dphggg-faq__q-text { font-size: 15px; }
    .dphggg-faq__a { padding: 0 2px 16px; }
}

/* Pages (4.10.59): the pager in dphggg-frontend.js hides the other pages
   with --paged; rows past the first desktop page start hidden. */
.dphggg-faq .dphggg-faq__item--paged { display: none; }
.dphggg-faq .dphggg-faq__pager { margin-top: 14px; }

.dphggg-faq--empty {
    padding: 14px 16px;
    font-size: 13px;
    color: #767676;
    border: 1px dashed #C9C9C9;
    border-radius: 8px;
    background: #fff;
}
