:root {
    --saffron: #f58220;
    --saffron-dark: #d86610;
    --blue: #103a5f;
    --gold: #c49a37;
    --ink: #172033;
    --muted: #f7f9fc;
}

.visitor-information article, .visitor-information td, .visitor-information th { overflow-wrap: anywhere; }
.visitor-information table { min-width: 760px; }
.parking-grid > div { display: flex; }
.parking-card { width: 100%; background: #fff; border: 1px solid #e0e7ee; border-radius: 20px; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 8px 28px #103a5f0a; }
.parking-card-media { position: relative; aspect-ratio: 8 / 5; background: #e9f1f7; }
.parking-card-media > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.parking-card-placeholder { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; background: linear-gradient(135deg, #103a5f, #29628d); color: #fff; padding-bottom: 24px; }
.parking-card-placeholder > span { display: grid; place-items: center; width: 64px; height: 64px; border: 2px solid #ffffff90; border-radius: 16px; font-size: 40px; font-weight: 800; line-height: 1; }
.parking-card-placeholder small { font-size: 13px; }
.parking-card-badge { position: absolute; bottom: 14px; left: 16px; right: 16px; width: fit-content; max-width: calc(100% - 32px); padding: 6px 12px; border-radius: 8px; background: #fff; color: var(--blue); font-size: 12px; font-weight: 700; box-shadow: 0 2px 8px #00000014; }
.parking-card-body { padding: 24px; display: flex; flex-direction: column; flex: 1; }
.parking-card h2 { color: var(--blue); font-size: 23px; line-height: 1.3; font-weight: 750; margin: 0 0 12px; }
.parking-card-location { display: flex; gap: 8px; align-items: flex-start; font-size: 14px; color: #526477; }
.parking-card-location svg { flex: 0 0 18px; width: 18px; height: 22px; }
.parking-card-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 12px; margin: 0 0 16px; }
.parking-card-facts:empty { display: none; }
.parking-card-facts > div { background: #f5f8fb; border-radius: 12px; padding: 12px; }
.parking-card-facts dt, .parking-card-contact > span { display: block; color: #526477; font-size: 12px; font-weight: 500; }
.parking-card-facts dd { color: var(--blue); font-size: 15px; font-weight: 700; margin: 4px 0 0; }
.parking-card-description { font-size: 14px; color: #526477; }
.parking-card-distances { margin-bottom: 18px; }
.parking-card-distances h3 { font-size: 14px; font-weight: 700; color: var(--blue); margin: 0 0 8px; }
.parking-card-distances dl { margin: 0; }
.parking-card-distances dl > div { display: flex; justify-content: space-between; gap: 16px; padding: 8px 0; border-bottom: 1px solid #e5ebf1; font-size: 13px; }
.parking-card-distances dt { font-weight: 400; color: #526477; }
.parking-card-distances dd { margin: 0; color: var(--blue); font-weight: 700; text-align: right; }
.parking-card-contact { font-weight: 600; font-size: 15px; }
.parking-card-contact a { color: var(--blue); text-underline-offset: 3px; }
.parking-card-footer { margin-top: auto; }
.parking-card-actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 4px 0 18px; }
.parking-card-actions .btn { flex: 1 1 120px; min-height: 44px; display: flex; justify-content: center; align-items: center; font-size: 14px; border-radius: 10px; }
.parking-card-note { border-top: 1px solid #e5ebf1; padding-top: 14px; margin: 0; font-size: 12px; line-height: 1.6; color: #526477; }
.parking-card-updated { display: block; font-size: 11px; color: #526477; margin-top: 10px; }
.parking-card a:focus-visible { outline: 3px solid var(--blue); outline-offset: 3px; }
@media (max-width: 575px) { .parking-card-body { padding: 20px; } }

body {
    color: var(--ink);
    font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    line-height: 1.65;
}

.brand-mark {
    background: var(--saffron);
    color: #fff;
    border-radius: 8px;
    display: inline-grid;
    font-size: .82rem;
    height: 34px;
    margin-right: 8px;
    place-items: center;
    width: 34px;
}

.navbar .nav-link {
    color: var(--blue);
    font-weight: 600;
}

.btn-primary {
    background: var(--saffron);
    border-color: var(--saffron);
}

.btn-primary:hover {
    background: var(--saffron-dark);
    border-color: var(--saffron-dark);
}

.btn-outline-primary {
    border-color: var(--saffron);
    color: var(--saffron-dark);
}

.btn-outline-primary:hover {
    background: var(--saffron);
    border-color: var(--saffron);
}

.hero-slide {
    align-items: center;
    background: #103a5f;
    display: grid;
}

.hero-image {
    display: block;
    grid-area: 1 / 1;
    width: 100%;
    height: auto;
    min-width: 0;
}

.hero-content {
    color: #fff;
    grid-area: 1 / 1;
    max-width: 880px;
    padding-block: 32px;
    position: relative;
    overflow-wrap: anywhere;
    text-shadow: 0 2px 8px rgba(0, 0, 0, .75);
}

.hero h1 {
    font-size: clamp(2.3rem, 5vw, 4.7rem);
    font-weight: 800;
    letter-spacing: 0;
    line-height: 1.05;
    max-width: 820px;
}

.hero p {
    font-size: 1.22rem;
    max-width: 660px;
}

.tagline,
.section-head span {
    color: var(--gold);
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.section {
    padding: 84px 0;
}

.muted {
    background: var(--muted);
}

.section-head {
    margin-bottom: 36px;
    text-align: center;
}

.section-head h1,
.section-head h2 {
    color: var(--blue);
    font-weight: 800;
    margin-top: 8px;
}

.service-card,
.trust-card,
.process-card,
.quote-card,
.info-card,
.inquiry-form {
    background: #fff;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    box-shadow: 0 16px 45px rgba(16, 58, 95, .08);
}

.service-card,
.trust-card,
.process-card,
.quote-card,
.inquiry-form {
    padding: 28px;
}

.register-stay-form .form-section {
    border-bottom: 1px solid rgba(16, 58, 95, .08);
    margin-bottom: 26px;
    padding-bottom: 24px;
}

.register-stay-form .form-section:last-of-type {
    border-bottom: 0;
}

.register-stay-form .form-section h2 {
    color: var(--blue);
    font-size: 1.16rem;
    font-weight: 800;
    margin-bottom: 16px;
}

.register-stay-form .stay-otp-result .alert {
    margin-bottom: 0;
}

.service-card h3,
.process-card h3,
.info-card h3,
.info-card h2 {
    color: var(--blue);
    font-size: 1.25rem;
    font-weight: 800;
}

.icon-pill {
    align-items: center;
    background: rgba(245, 130, 32, .12);
    border-radius: 8px;
    color: var(--saffron-dark);
    display: flex;
    font-weight: 800;
    height: 48px;
    justify-content: center;
    margin-bottom: 18px;
    width: 48px;
}

.info-card {
    overflow: hidden;
    transition: transform .2s ease, box-shadow .2s ease;
}

.info-card:hover {
    box-shadow: 0 20px 50px rgba(16, 58, 95, .13);
    transform: translateY(-4px);
}

.card-media {
    position: relative;
}

.card-media img,
.info-card > img {
    aspect-ratio: 16 / 10;
    background: #e8edf3;
    object-fit: cover;
    width: 100%;
}

.verified-badge {
    align-items: center;
    background: #fff;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 999px;
    box-shadow: 0 10px 24px rgba(16, 58, 95, .16);
    color: #0f7b4f;
    display: inline-flex;
    font-size: .82rem;
    font-weight: 900;
    gap: 6px;
    left: 14px;
    line-height: 1;
    padding: 9px 12px;
    position: absolute;
    top: 14px;
    z-index: 2;
}

.hero-verified {
    left: auto;
    margin: 14px 0 10px;
    position: static;
    top: auto;
}

.must-visit-badge {
    color: var(--saffron-dark);
}

.item-details {
    border-top: 1px solid rgba(16, 58, 95, .08);
    margin-top: 14px;
}

.item-details > div {
    align-items: flex-start;
    border-bottom: 1px solid rgba(16, 58, 95, .08);
    display: flex;
    gap: 16px;
    justify-content: space-between;
    padding: 12px 0;
}

.item-details span {
    color: #667085;
    flex: 0 0 112px;
    font-size: .9rem;
    font-weight: 700;
}

.item-details strong {
    color: var(--blue);
    font-weight: 800;
    text-align: right;
}

.rating-badge {
    background: rgba(196, 154, 55, .16);
    border-radius: 999px;
    color: #8a650e !important;
    min-width: 44px;
    padding: 5px 10px;
    text-align: center;
}

.menu-list {
    border-top: 1px solid rgba(16, 58, 95, .08);
}

.menu-list div {
    align-items: center;
    border-bottom: 1px solid rgba(16, 58, 95, .08);
    display: flex;
    justify-content: space-between;
    padding: 12px 0;
}

.menu-list span {
    align-items: center;
    color: var(--blue);
    display: flex;
    gap: 10px;
    font-weight: 800;
}

.menu-list strong {
    color: var(--saffron-dark);
}

.menu-thumb {
    border-radius: 6px;
    height: 48px;
    object-fit: cover;
    width: 64px;
}

.meta {
    color: var(--blue);
    display: block;
    font-size: .92rem;
    font-weight: 700;
}

.process-card b {
    color: var(--saffron);
    display: block;
    font-size: 2rem;
}

.process-card {
    min-height: 142px;
    transition: box-shadow .25s ease, transform .25s ease;
}

.process-card:hover,
.process-steps-ready .process-card.is-visible:hover {
    box-shadow: 0 20px 48px rgba(16, 58, 95, .14);
    transform: translateY(-5px);
}

.process-steps-ready .process-card {
    opacity: 0;
    transform: translateY(18px);
    transition: box-shadow .25s ease, transform .45s cubic-bezier(.2, .75, .3, 1);
}

.process-steps-ready .process-card.is-visible {
    transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
    .process-card,
    .process-steps-ready .process-card {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

.quote-card span {
    color: #667085;
    display: block;
}

.cta-section {
    background: linear-gradient(120deg, var(--saffron), var(--blue));
    color: #fff;
    padding: 76px 0;
}

.page-hero {
    background: var(--muted);
    padding: 100px 0;
}

.page-hero h1 {
    color: var(--blue);
    font-size: clamp(2.4rem, 5vw, 4rem);
    font-weight: 800;
}

.detail-hero {
    align-items: center;
    background-position: center;
    background-size: cover;
    color: #fff;
    display: flex;
    min-height: 440px;
    padding: 90px 0;
}

.detail-hero span {
    color: var(--gold);
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.detail-hero h1 {
    font-size: clamp(2.4rem, 5vw, 4.5rem);
    font-weight: 800;
    letter-spacing: 0;
    line-height: 1.08;
    max-width: 840px;
}

.detail-hero p {
    font-size: 1.25rem;
}

.listing-hero {
    min-height: 360px;
}

.listing-hero p {
    max-width: 680px;
}

.enhanced-list-section {
    background: linear-gradient(180deg, #f7f9fc 0, #fff 220px);
}

.cab-rental-intro {
    margin: 0 auto 28px;
    max-width: 760px;
    text-align: center;
}

.cab-rental-intro span {
    color: var(--gold);
    font-size: .82rem;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.cab-rental-intro h2 {
    color: var(--blue);
    font-size: clamp(1.8rem, 3vw, 2.6rem);
    font-weight: 900;
    letter-spacing: 0;
    margin: 8px 0 10px;
}

.cab-rental-intro p {
    color: #667085;
    font-size: 1.05rem;
    margin: 0;
}

.rental-type-grid {
    display: grid;
    gap: 22px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin: 0 auto 32px;
    max-width: 1040px;
}

.rental-type-card {
    background: #fff;
    border: 1px solid rgba(16, 58, 95, .1);
    border-radius: 8px;
    box-shadow: 0 14px 34px rgba(16, 58, 95, .08);
    color: var(--blue);
    display: flex;
    flex-direction: column;
    min-height: 260px;
    padding: 22px;
    text-decoration: none;
    transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.rental-type-card:hover,
.rental-type-card.active {
    border-color: var(--saffron);
    box-shadow: 0 18px 42px rgba(16, 58, 95, .13);
    color: var(--blue);
    transform: translateY(-3px);
}

.rental-type-card img {
    aspect-ratio: 4 / 3;
    background: #f8fafc;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    display: block;
    margin-bottom: 18px;
    object-fit: contain;
    padding: 18px;
    width: 100%;
}

.rental-type-card span {
    display: block;
    font-size: 1.35rem;
    font-weight: 900;
}

.rental-type-card strong {
    color: #667085;
    display: block;
    font-size: .92rem;
    margin-top: 6px;
}

.rental-type-card em {
    align-items: center;
    align-self: flex-start;
    background: rgba(245, 130, 32, .12);
    border-radius: 999px;
    color: var(--saffron-dark);
    display: inline-flex;
    font-size: .82rem;
    font-style: normal;
    font-weight: 900;
    line-height: 1;
    margin-top: auto;
    padding: 10px 12px;
}

.food-list-layout {
    align-items: start;
    display: grid;
    gap: 28px;
    grid-template-columns: 300px minmax(0, 1fr);
}

.food-filter-panel {
    background: #fff;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    box-shadow: 0 16px 45px rgba(16, 58, 95, .08);
    padding: 24px;
    position: sticky;
    top: 92px;
}

.food-filter-head {
    margin-bottom: 18px;
}

.food-filter-head span,
.food-filter-label {
    color: var(--gold);
    font-size: .78rem;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.food-filter-head h2 {
    color: var(--blue);
    font-size: 1.45rem;
    font-weight: 900;
    letter-spacing: 0;
    margin: 0;
}

.food-filter-head a {
    color: var(--saffron-dark);
    display: inline-block;
    font-size: .88rem;
    font-weight: 900;
    margin-top: 8px;
    text-decoration: none;
}

.food-filter-group {
    border-top: 1px solid rgba(16, 58, 95, .08);
    padding-top: 16px;
}

.food-filter-group + .food-filter-group {
    margin-top: 16px;
}

.food-filter-label {
    display: block;
    margin-bottom: 10px;
}

.food-filter-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.food-filter-pill {
    align-items: center;
    background: #f7f9fc;
    border: 1px solid rgba(16, 58, 95, .1);
    border-radius: 999px;
    color: var(--blue);
    display: inline-flex;
    font-size: .92rem;
    font-weight: 800;
    gap: 8px;
    line-height: 1;
    padding: 11px 14px;
    text-decoration: none;
    transition: background .2s ease, border-color .2s ease, color .2s ease;
}

.food-filter-pill:hover,
.food-filter-pill.active {
    background: rgba(245, 130, 32, .12);
    border-color: var(--saffron);
    color: var(--saffron-dark);
}

.food-filter-pill small {
    background: #fff;
    border-radius: 999px;
    color: #667085;
    font-size: .74rem;
    font-weight: 900;
    min-width: 24px;
    padding: 5px 7px;
    text-align: center;
}

.food-results-grid {
    min-width: 0;
}

.empty-state {
    background: #fff;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    padding: 32px;
    text-align: center;
}

.empty-state h2 {
    color: var(--blue);
    font-size: 1.3rem;
    font-weight: 800;
}

.empty-state p {
    color: #667085;
    margin-bottom: 0;
}

.enquiry-success {
    background: #fff;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    box-shadow: 0 16px 45px rgba(16, 58, 95, .08);
    margin: 0 auto;
    max-width: 680px;
    padding: 42px;
    text-align: center;
}

.enquiry-success > span {
    color: var(--saffron-dark);
    font-weight: 900;
    text-transform: uppercase;
}

.enquiry-success h1 {
    color: var(--blue);
    font-weight: 900;
    margin: 10px 0;
}

.enquiry-success .detail-row {
    margin: 18px auto 0;
    max-width: 460px;
}

.detail-panel {
    background: #fff;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    box-shadow: 0 16px 45px rgba(16, 58, 95, .08);
    padding: 30px;
}

.detail-panel h2 {
    color: var(--blue);
    font-size: 1.4rem;
    font-weight: 800;
}

.profile-qr-panel {
    margin-top: 24px;
    text-align: center;
}

.profile-qr-canvas {
    background: #fff;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    display: block;
    margin: 18px auto 0;
    max-width: 100%;
    width: 280px;
}

.stay-logo-detail {
    background: #f8fafc;
    border: 1px solid rgba(16, 58, 95, .1);
    border-radius: 8px;
    height: 96px;
    object-fit: contain;
    padding: 10px;
    width: 160px;
}

.detail-row {
    border-bottom: 1px solid rgba(16, 58, 95, .08);
    display: flex;
    gap: 18px;
    justify-content: space-between;
    padding: 14px 0;
}

.detail-row span {
    color: #667085;
}

.detail-row strong {
    color: var(--blue);
    text-align: right;
}

.quick-info-horizontal {
    display: grid;
    gap: 16px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.quick-info-horizontal h2,
.quick-info-horizontal .stay-logo-detail,
.quick-info-horizontal .amenity-grid,
.quick-info-horizontal > .btn {
    grid-column: 1 / -1;
}

.quick-info-horizontal .stay-logo-detail {
    justify-self: start;
}

.quick-info-horizontal .detail-row {
    background: #f8fafc;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    display: block;
    min-height: 92px;
    padding: 14px;
}

.quick-info-horizontal .detail-row span {
    display: block;
    font-size: .82rem;
    font-weight: 800;
    margin-bottom: 8px;
}

.quick-info-horizontal .detail-row strong {
    display: block;
    font-size: .98rem;
    text-align: left;
}

.amenity-grid {
    display: grid;
    gap: 10px;
    grid-template-columns: repeat(3, 1fr);
}

.amenity-grid span {
    background: #f2f4f7;
    border-radius: 8px;
    color: #667085;
    font-size: .92rem;
    font-weight: 800;
    padding: 10px;
    text-align: center;
}

.amenity-grid span.available {
    background: rgba(245, 130, 32, .12);
    color: var(--saffron-dark);
}

.room-card {
    background: #fff;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    box-shadow: 0 16px 45px rgba(16, 58, 95, .08);
    overflow: hidden;
}

.room-card > img {
    aspect-ratio: 16 / 10;
    object-fit: cover;
    width: 100%;
}

.room-card h3 {
    color: var(--blue);
    font-size: 1.25rem;
    font-weight: 800;
}

.room-detail-layout {
    display: grid;
    gap: 24px;
    grid-template-columns: minmax(0, 1.25fr) minmax(280px, .75fr);
}

.room-detail-main-image {
    aspect-ratio: 16 / 10;
    border-radius: 8px;
    display: block;
    object-fit: cover;
    width: 100%;
}

.room-detail-gallery {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 12px;
}

.room-detail-gallery img {
    aspect-ratio: 1;
    border: 2px solid transparent;
    border-radius: 8px;
    cursor: pointer;
    object-fit: cover;
    opacity: .72;
    transition: border-color .2s ease, opacity .2s ease, transform .2s ease;
    width: 72px;
}

.room-detail-gallery img:hover,
.room-detail-gallery img.active {
    border-color: var(--orange);
    opacity: 1;
    transform: translateY(-1px);
}

.room-detail-info {
    background: #f8fafc;
    border: 1px solid rgba(16, 58, 95, .08);
    border-radius: 8px;
    padding: 18px;
}

.verified-inline {
    background: rgba(15, 123, 79, .1);
    border-radius: 999px;
    color: #0f7b4f;
    display: inline-block;
    font-size: .78rem;
    font-weight: 900;
    margin-bottom: 12px;
    padding: 7px 10px;
}

.room-thumbs {
    display: grid;
    gap: 8px;
    grid-template-columns: repeat(4, 1fr);
    margin-top: 14px;
}

.room-thumbs img {
    aspect-ratio: 1;
    border-radius: 6px;
    object-fit: cover;
    width: 100%;
}

.room-enquiry-modal label {
    color: #344054;
    font-size: .9rem;
    font-weight: 800;
    margin-bottom: 6px;
}

.room-enquiry-modal .modal-title {
    color: var(--blue);
    font-size: 1.35rem;
    font-weight: 800;
}

.place-gallery {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(2, 1fr);
}

.place-gallery img {
    aspect-ratio: 16 / 10;
    border-radius: 8px;
    object-fit: cover;
    width: 100%;
}

.video-link {
    border: 1px solid rgba(16, 58, 95, .1);
    border-radius: 8px;
    color: var(--blue);
    display: block;
    font-weight: 800;
    margin-top: 10px;
    padding: 12px 14px;
    text-decoration: none;
}

.video-link:hover {
    border-color: var(--saffron);
    color: var(--saffron-dark);
}

.video-frame {
    aspect-ratio: 16 / 9;
    background: #101828;
    border-radius: 8px;
    box-shadow: 0 16px 45px rgba(16, 58, 95, .12);
    overflow: hidden;
}

.video-frame iframe {
    border: 0;
    height: 100%;
    width: 100%;
}

.place-info-grid {
    display: grid;
    gap: 18px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.clean-list {
    margin: 0;
    padding-left: 18px;
}

.clean-list li {
    margin-bottom: 8px;
}

@media (max-width: 991px) {
    .quick-info-horizontal {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767px) {
    .place-info-grid {
        grid-template-columns: 1fr;
    }

    .quick-info-horizontal,
    .quick-info-horizontal .amenity-grid,
    .room-detail-layout {
        grid-template-columns: 1fr;
    }

    .rental-type-grid {
        grid-template-columns: 1fr;
    }

    .food-list-layout {
        grid-template-columns: 1fr;
    }

    .food-filter-panel {
        position: static;
    }
}

.footer {
    background: var(--blue);
    color: #fff;
}

.footer a {
    color: rgba(255, 255, 255, .76);
    display: block;
    margin-bottom: 8px;
    text-decoration: none;
}

.map-box {
    align-items: center;
    background: rgba(255, 255, 255, .1);
    border-radius: 8px;
    display: flex;
    min-height: 150px;
    overflow: hidden;
    padding: 10px;
}

.map-box iframe {
    border: 0;
    height: 150px;
    width: 100%;
}

.site-visitor-counter {
    align-items: center;
    background: rgba(255, 255, 255, .1);
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 8px;
    display: flex;
    justify-content: space-between;
    padding: 12px 14px;
}

.site-visitor-counter span {
    color: rgba(255, 255, 255, .72);
    font-size: .82rem;
    font-weight: 800;
}

.site-visitor-counter strong {
    color: #fff;
    font-size: 1.25rem;
    font-weight: 900;
}

.float-whatsapp,
.float-call {
    border-radius: 999px;
    bottom: 22px;
    box-shadow: 0 14px 30px rgba(0, 0, 0, .2);
    color: #fff;
    font-weight: 800;
    padding: 12px 18px;
    position: fixed;
    right: 22px;
    text-decoration: none;
    z-index: 20;
}

.float-whatsapp {
    background: #25d366;
}

.float-call {
    background: var(--blue);
    bottom: 78px;
}

@media (max-width: 767px) {
    .hero-content {
        grid-area: 2 / 1;
    }

    .section {
        padding: 58px 0;
    }
}

.listing-badges { display: flex; flex-wrap: wrap; gap: 6px; left: 14px; position: absolute; right: 14px; top: 14px; }
.listing-badges .verified-badge { position: static; }
.stay-policy-content { overflow-wrap: anywhere; line-height: 1.7; }
.stay-policy-content ul, .stay-policy-content ol { padding-left: 1.5rem; }
.stay-policy-content li + li { margin-top: .35rem; }
/* Dedicated public stay profile. */
.stay-booking-page { background: #f5f7fb; color: #23334b; padding: 24px 0 64px; }
.stay-booking-page a { text-underline-offset: 3px; }
.stay-booking-page h1 { font-size: clamp(28px, 4vw, 42px); font-weight: 750; margin: 8px 0 10px; letter-spacing: -.025em; }
.stay-booking-page h2 { font-size: 23px; font-weight: 700; margin: 8px 0 16px; }
.stay-booking-page h3 { font-size: 20px; font-weight: 700; }
.stay-breadcrumb { display: flex; gap: 10px; flex-wrap: wrap; font-size: 13px; color: #64748b; margin-bottom: 24px; }
.stay-title-row { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 22px; }
.stay-title-row p { color: #52627a; margin: 0; }
.stay-title-row p a { margin-left: 12px; }
.stay-eyebrow { color: #687993; text-transform: uppercase; letter-spacing: .1em; font-size: 11px; font-weight: 750; }
.stay-eyebrow .verified-badge { margin-left: 12px; text-transform: none; letter-spacing: 0; }
.stay-photo-section { position: relative; background: #e5eaf1; border-radius: 18px; overflow: hidden; }
.stay-cover-photo { width: 100%; height: 420px; object-fit: cover; display: block; }
.stay-photo-strip { display: flex; gap: 9px; padding: 12px; overflow-x: auto; background: #fff; }
.stay-photo-strip button { background: #fff; border: 2px solid transparent; padding: 2px; border-radius: 8px; flex-shrink: 0; }
.stay-photo-strip button[aria-pressed="true"] { border-color: #2454aa; }
.stay-photo-strip img { width: 94px; height: 64px; object-fit: cover; border-radius: 4px; }
.stay-photo-caption { position: absolute; top: 370px; left: 16px; margin: 0; color: #fff; padding: 6px 12px; border-radius: 7px; background: rgba(15, 23, 42, .8); font-size: 13px; }
.stay-section-nav { display: flex; gap: 28px; overflow-x: auto; padding: 22px 4px; margin-bottom: 8px; border-bottom: 1px solid #e1e7f0; }
.stay-section-nav a { white-space: nowrap; color: #344b6a; font-weight: 650; text-decoration: none; }
.stay-booking-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 26px; align-items: start; margin-top: 26px; }
.stay-information, .stay-booking-sidebar { min-width: 0; }
.stay-content-card, .stay-booking-box { background: white; border: 1px solid #e1e7f0; border-radius: 14px; padding: 26px; margin-bottom: 22px; }
.stay-booking-page [id] { scroll-margin-top: 110px; }
.stay-description { line-height: 1.85; overflow-wrap: anywhere; }
.stay-muted { color: #65748a; font-size: 14px; line-height: 1.65; }
.stay-facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; padding: 18px 0; margin-top: 16px; border-top: 1px solid #edf0f5; }
.stay-facts span, .stay-facts strong { display: block; font-size: 13px; }
.stay-facts span { color: #65748a; margin-bottom: 6px; }
.stay-notice { border-left: 3px solid #d8a13c; padding: 12px 16px; background: #fff8e9; font-size: 14px; }
.stay-room-option { border: 1px solid #e0e7ef; border-radius: 12px; overflow: hidden; margin-top: 20px; }
.stay-room-option > img { width: 100%; height: 220px; object-fit: cover; }
.stay-room-body { padding: 22px; }
.stay-room-body p { margin-bottom: 8px; }
.stay-room-bottom { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; border-top: 1px solid #e7ecf3; margin-top: 18px; padding-top: 18px; }
.stay-room-bottom > div { flex: 1 0 100%; }
.stay-room-price { font-size: 24px; }
.stay-room-bottom small { display: block; color: #65748a; font-size: 12px; }
.stay-amenities { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.stay-amenities > div { display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid #e5eaf1; border-radius: 9px; }
.stay-amenities > div > span { color: #8490a0; font-size: 22px; }
.stay-amenities .is-available > span { color: #187359; }
.stay-amenities strong { font-size: 14px; }
.stay-amenities small { display: block; color: #65748a; font-size: 11px; }
.stay-policy + .stay-policy { border-top: 1px solid #e5eaf1; margin-top: 18px; padding-top: 18px; }
.stay-policy summary { font-weight: 650; padding: 4px 0 14px; cursor: pointer; }
.stay-policy-content { font-size: 14px; }
.stay-booking-sidebar { position: sticky; top: 100px; }
.stay-booking-box { box-shadow: 0 8px 30px rgba(28, 48, 82, .06); border-top: 4px solid #244d83; padding: 24px; }
.stay-from-price { font-size: 13px; margin: 12px 0; }
.stay-from-price strong { font-size: 28px; }
.stay-from-price span { color: #65748a; margin-left: 6px; }
.stay-booking-form label { font-size: 13px; margin-top: 14px; margin-bottom: 6px; font-weight: 600; }
.stay-form-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.stay-form-pair > div { min-width: 0; }
.stay-form-pair input { min-width: 0; width: 100%; }
.stay-enquiry-note { text-align: center; font-size: 12px; color: #65748a; line-height: 1.6; margin: 12px 0; }
.stay-booking-steps { padding-left: 18px; font-size: 12px; color: #65748a; margin: 22px 0 0; }
.stay-booking-steps li { margin: 10px 0; padding-left: 3px; }
.stay-share { margin: 24px 0; }
.stay-share > summary { cursor: pointer; font-size: 14px; }
.stay-share .profile-qr-panel { margin-top: 16px; }
.stay-mobile-booking { display: none; }
.stay-booking-page .detail-row { gap: 16px; overflow-wrap: anywhere; }
@media (max-width: 991px) {
 .stay-booking-layout { grid-template-columns: 1fr; }
 .stay-booking-sidebar { position: static; }
 .stay-mobile-booking { display: flex; position: fixed; z-index: 1020; bottom: 0; left: 0; right: 0; padding: 12px 20px; background: white; border-top: 1px solid #dce4ee; align-items: center; justify-content: space-between; box-shadow: 0 -4px 16px #23334b0d; }
 .stay-mobile-booking small { display: block; font-size: 10px; color: #65748a; }
 body:has(.stay-booking-page) { padding-bottom: 80px; }
 body:has(.stay-booking-page) .float-call, body:has(.stay-booking-page) .float-whatsapp { bottom: 92px; }
}
@media (max-width: 575px) {
 .stay-booking-page { padding-top: 18px; }
 .stay-title-row { align-items: start; flex-direction: column; }
 .stay-cover-photo { height: 260px; }
 .stay-photo-caption { top: 212px; font-size: 12px; max-width: calc(100% - 32px); }
 .stay-content-card, .stay-booking-box { padding: 20px; }
 .stay-section-nav { gap: 22px; font-size: 13px; }
 .stay-facts { grid-template-columns: 1fr; }
 .stay-facts > div { display: flex; justify-content: space-between; gap: 12px; }
 .stay-amenities { grid-template-columns: 1fr; }
 .stay-room-body { padding: 16px; }
 .stay-room-bottom .btn { width: 100%; }
 .stay-booking-page .detail-row { flex-wrap: wrap; }
}

.stay-booking-page .verified-badge { position: static; display: inline-flex; box-shadow: none; vertical-align: middle; }
/* Wide stay layout and interactive gallery header. */
.stay-page-shell { width: 100%; max-width: none; padding-inline: clamp(16px, 3vw, 56px); }
.stay-top-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.stay-top-actions [data-share-status] { font-size: 12px; flex-basis: 100%; overflow-wrap: anywhere; }
.stay-top-actions [data-share-status] input { width: 100%; }
.stay-top-highlights { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 0 0 22px; }
.stay-top-highlights a { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding: 16px 20px; background: white; border: 1px solid #e1e7f0; border-radius: 12px; color: #23334b; font-weight: 650; text-decoration: none; }
.stay-top-highlights a:hover { border-color: #2454aa; background: #eef4ff; }
.stay-top-highlights span { font-size: 12px; color: #526987; font-weight: 400; }
.stay-photo-stage { position: relative; }
.stay-gallery-actions { position: absolute; bottom: 18px; right: 18px; display: flex; align-items: center; gap: 8px; padding: 6px; border-radius: 10px; background: #172a42e8; color: white; }
.stay-gallery-actions button, .stay-viewer-toolbar button { border: 1px solid #ffffff60; border-radius: 6px; background: #fff; color: #23334b; padding: 8px 12px; min-height: 44px; }
.stay-gallery-actions button:disabled, .stay-viewer-toolbar button:disabled { opacity: .45; }
.stay-gallery-actions span { font-size: 12px; padding: 0 4px; }
.stay-photo-caption { max-width: 45%; }
.stay-photo-dialog { width: min(1400px, 96vw); max-width: 96vw; max-height: 94vh; padding: 16px; border: 0; border-radius: 14px; background: #102033; color: white; }
.stay-photo-dialog::backdrop { background: #07101cde; }
.stay-viewer-toolbar { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.stay-viewer-toolbar span { flex: 1; text-align: center; }
.stay-viewer-image { display: block; width: 100%; height: min(75vh, 900px); object-fit: contain; }
@media (min-width: 1400px) { .stay-booking-layout { grid-template-columns: minmax(0, 1fr) 400px; gap: 32px; } .stay-room-option { display: grid; grid-template-columns: 34% 1fr; } .stay-room-option > img { height: 100%; min-height: 280px; } }
@media (max-width: 767px) { .stay-top-highlights { grid-template-columns: 1fr; gap: 8px; } .stay-top-highlights a { padding: 12px 16px; } .stay-gallery-actions { bottom: 12px; right: 12px; } .stay-photo-caption { position: static; max-width: none; background: #fff; color: #52627a; border-radius: 0; padding: 4px 16px 12px; } .stay-viewer-toolbar { flex-wrap: wrap; gap: 8px; } .stay-viewer-toolbar span { flex-basis: 100%; order: -1; } }
/* Consistent full-width public pages; admin layouts are independent. */
.public-site .container { width: 100%; max-width: none; padding-inline: clamp(16px, 3vw, 56px); }
.public-site .detail-hero h1 { font-size: clamp(30px, 4vw, 52px); letter-spacing: -.025em; }
.public-site .detail-hero p { max-width: 78ch; }
.public-site main h2[id] { scroll-margin-top: 110px; }
.public-page-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-top: 20px; }
.public-page-actions [role="status"] { font-size: 13px; overflow-wrap: anywhere; }
.public-section-shortcuts { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 0 clamp(16px, 3vw, 56px) 28px; padding-bottom: 10px; }
.public-section-shortcuts a { white-space: normal; max-width: 100%; overflow-wrap: anywhere; color: #244d83; background: white; border: 1px solid #dbe4ef; border-radius: 30px; padding: 10px 18px; text-decoration: none; font-weight: 600; font-size: 13px; }
.public-section-shortcuts a:hover { background: #edf4ff; border-color: #244d83; }
.public-expand-photo { cursor: zoom-in; }
.public-expand-photo:focus-visible { outline: 3px solid #2454aa; outline-offset: 4px; }
.public-site .carousel-control-prev, .public-site .carousel-control-next { width: 44px; top: 45%; bottom: auto; height: 54px; background: #11294390; border-radius: 8px; }
.public-site .carousel-control-prev { left: 6px; }
.public-site .carousel-control-next { right: 6px; }
@media (min-width: 1400px) { .public-site .detail-panel > p { max-width: 90ch; } }
@media (max-width: 575px) { .public-site .hero-content { padding-inline: 52px; } .public-site .detail-hero { padding-block: 40px; } .public-page-actions [role="status"] input { max-width: 100%; } }
.rooms-discovery { background: #f5f7fb; color: #23334b; padding-bottom: 60px; }
.rooms-discovery-hero { padding: 48px 0 34px; background: radial-gradient(ellipse at 85% 0%, #d8e9f3, transparent 55%), linear-gradient(115deg, #eef4fa, #fff5e8); }
.rooms-discovery-hero > .container { display: grid; grid-template-columns: 1.2fr 1fr; align-items: center; gap: 40px; }
.rooms-hero-copy h1 { font-size: clamp(30px, 3.4vw, 48px); letter-spacing: -.035em; font-weight: 750; max-width: 650px; margin: 12px 0; }
.rooms-hero-copy p { color: #5d6d83; max-width: 580px; line-height: 1.75; }
.rooms-hero-notes { display: flex; flex-wrap: wrap; gap: 10px 20px; font-size: 12px; color: #425e79; }
.rooms-search-panel { background: white; padding: 26px; border-radius: 16px; border: 1px solid #e4eaf1; box-shadow: 0 14px 40px #2342610b; }
.rooms-search-panel label { display: block; font-weight: 650; margin-bottom: 12px; }
.rooms-search-panel > div { display: flex; gap: 10px; }
.rooms-search-panel .form-control { min-width: 0; }
.rooms-search-panel .btn { flex-shrink: 0; }
.rooms-search-panel small { display: block; color: #6b788c; font-size: 12px; margin-top: 12px; line-height: 1.6; }
.rooms-discovery-layout { display: grid; grid-template-columns: 260px minmax(0,1fr); gap: 30px; padding-top: 32px; align-items: start; }
.rooms-filter-panel { border: 1px solid #e2e8f0; background: white; border-radius: 14px; padding: 22px; }
.rooms-filter-panel summary { font-weight: 700; cursor: pointer; }
.rooms-filter-content > label { display: block; font-size: 13px; margin: 22px 0 8px; }
.rooms-filter-content fieldset { border-top: 1px solid #e7edf3; padding-top: 18px; margin: 22px 0; }
.rooms-filter-content legend { float: none; width: auto; font-size: 14px; font-weight: 700; margin-bottom: 12px; }
.rooms-filter-content fieldset label { display: flex; align-items: center; gap: 10px; font-size: 13px; margin: 12px 0; cursor: pointer; }
.rooms-filter-content input[type=checkbox] { width: 17px; height: 17px; accent-color: #2454aa; }
.rooms-help { border-top: 1px solid #e7edf3; margin-top: 24px; padding-top: 20px; font-size: 13px; }
.rooms-help p { color: #66768b; margin: 10px 0; }
.rooms-results { min-width: 0; scroll-margin-top: 100px; }
.rooms-results-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.rooms-results-toolbar h2 { font-size: 24px; font-weight: 700; margin-bottom: 6px; }
.rooms-results-toolbar p { color: #6b788c; font-size: 13px; margin: 0; }
.rooms-results-toolbar label { font-size: 12px; margin-bottom: 4px; }
.rooms-results-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 24px; }
.discovery-stay-card { background: white; border: 1px solid #e1e7f0; border-radius: 15px; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 4px 16px #24365005; transition: box-shadow .2s, border-color .2s; }
.discovery-stay-card[hidden] { display: none; }
.discovery-stay-card:hover { border-color: #b7c8db; box-shadow: 0 10px 28px #24365012; }
.discovery-stay-photo { display: block; position: relative; }
.discovery-stay-photo img { display: block; width: 100%; height: 230px; object-fit: cover; }
.discovery-stay-photo .verified-badge { position: absolute; top: 14px; left: 14px; }
.discovery-stay-body { padding: 22px; display: flex; flex-direction: column; flex: 1; }
.discovery-stay-body h3 { font-size: 23px; margin: 8px 0; }
.discovery-stay-body h3 a { text-decoration: none; color: #23334b; }
.discovery-stay-location { font-size: 14px; color: #69798e; margin-bottom: 10px; }
.discovery-distance { color: #48627c; font-size: 13px; }
.discovery-facilities { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 20px; }
.discovery-facilities span { background: #f1f5f9; border-radius: 6px; padding: 5px 9px; font-size: 12px; color: #425972; }
.discovery-availability { margin-top: auto; font-size: 13px; font-weight: 600; }
.discovery-availability small { display: block; color: #6b788c; font-weight: 400; font-size: 11px; margin-top: 5px; }
.discovery-card-actions { display: flex; flex-wrap: wrap; gap: 8px; border-top: 1px solid #edf0f5; padding-top: 16px; }
.discovery-card-actions .btn:first-child { flex: 1; }
.rooms-no-results { background: white; border: 1px dashed #cbd6e3; border-radius: 14px; text-align: center; padding: 48px 24px; }
.rooms-no-results .btn { margin: 6px; }
@media (min-width: 1600px) { .rooms-results-grid { grid-template-columns: repeat(3,minmax(0,1fr)); } }
@media (max-width: 991px) { .rooms-discovery-hero > .container { grid-template-columns: 1fr; gap: 24px; } .rooms-discovery-layout { grid-template-columns: 1fr; gap: 24px; } .rooms-filter-content { max-width: 600px; } .rooms-filter-panel { padding: 18px; } }
@media (max-width: 575px) { .rooms-discovery-hero { padding-top: 30px; } .rooms-results-grid { grid-template-columns: 1fr; } .rooms-results-toolbar { align-items: start; flex-direction: column; gap: 14px; } .rooms-search-panel { padding: 20px; } .rooms-search-panel > div { flex-direction: column; } .discovery-stay-photo img { height: 220px; } }
@media (prefers-reduced-motion: reduce) { .discovery-stay-card { transition: none; } }
.directory-listing { background: #f5f7fb; }
.directory-tools { display: flex; flex-wrap: wrap; align-items: end; gap: 16px; padding: 24px; border: 1px solid #e1e7f0; border-radius: 14px; background: white; margin-bottom: 28px; }
.directory-tools[hidden], .directory-empty[hidden] { display: none; }
.directory-tools > div:first-child { flex: 1; min-width: 220px; }
.directory-tools label { font-size: 13px; font-weight: 650; margin-bottom: 8px; }
.directory-tools p { flex-basis: 100%; margin: 0; color: #66768a; font-size: 12px; }
.directory-listing .info-card { border: 1px solid #e1e7f0; border-radius: 15px; box-shadow: 0 5px 18px #24365008; overflow: hidden; }
.directory-listing .info-card .p-4 { display: flex; flex-direction: column; }
.directory-listing .info-card h2 { font-size: 23px; line-height: 1.35; }
.directory-listing .info-card .card-media img { width: 100%; height: 235px; object-fit: cover; }
.directory-listing [hidden] { display: none !important; }
.directory-empty { text-align: center; padding: 36px; border: 1px dashed #cbd6e3; border-radius: 14px; background: white; margin-bottom: 24px; }
.footer-policies { display: flex; flex-wrap: wrap; gap: 12px 24px; border-top: 1px solid #ffffff25; padding-top: 24px; margin-top: 32px; }
.footer-policies a { font-size: 13px; }
.policy-hero { background: linear-gradient(120deg,#143651,#285776); }
.policy-layout { display: grid; grid-template-columns: minmax(0,1fr) 320px; gap: 40px; }
.policy-content { max-width: 1000px; }
.policy-content section { margin-bottom: 32px; padding-bottom: 20px; border-bottom: 1px solid #e3eaf2; }
.policy-content h2, .about-page h2 { font-size: 26px; margin-bottom: 16px; }
.policy-content p, .about-intro p, .about-intro li { color: #586b80; line-height: 1.85; }
.policy-contact { align-self: start; background: #f4f7fb; padding: 26px; border-radius: 14px; overflow-wrap: anywhere; }
.policy-contact h2 { font-size: 21px; }
.about-intro { max-width: 1050px; margin-bottom: 44px; }
.about-service-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 22px; margin: 24px 0 48px; }
.about-service-grid a { border: 1px solid #dfe7ef; border-radius: 14px; padding: 26px; text-decoration: none; background: #f8fafc; }
.about-service-grid h3 { color: #23334b; font-size: 22px; }
.about-service-grid p { color: #66768a; line-height: 1.7; }
.about-contact { padding: 32px; background: #eef4fb; border-radius: 16px; }
.about-contact .btn { margin: 8px 8px 0 0; }
@media(max-width:991px) { .about-service-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } .policy-layout { grid-template-columns: 1fr; } }
@media(max-width:575px) { .about-service-grid { grid-template-columns: 1fr; } .directory-tools { padding: 18px; } .directory-tools > div { flex-basis: 100%; } }
/* Food discovery uses the same layout and card system as rooms. */
.food-discovery .directory-tools { display: block; margin: 0; }
.food-discovery .directory-tools[hidden] { display: none; }
.food-discovery .food-search-row { display: flex; gap: 10px; }
.food-discovery .directory-tools > label { font-size: 16px; }
.food-card-wrap { min-width: 0; }
.food-card-wrap[hidden] { display: none; }
.food-card-wrap .discovery-stay-card { height: 100%; }
.food-discovery .discovery-stay-body h2 { font-size: 23px; margin: 8px 0; }
.food-discovery .discovery-stay-body h2 a { color: #23334b; text-decoration: none; }
.food-card-detail { font-size: 13px; color: #607189; }
.food-active-filters { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 12px; margin-bottom: 20px; }
.food-active-filters span { border: 1px solid #dce5ef; background: white; border-radius: 24px; padding: 6px 12px; }
.food-search-reset { margin-top: 24px; }
.food-discovery .rooms-no-results { margin-bottom: 24px; }
@media(max-width:575px) { .food-discovery .food-search-row { flex-direction: column; } }
.hub-journey-section { padding: 60px 0; background: linear-gradient(125deg,#fff7ee,#f2f7fc); }
.hub-journey-layout { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.2fr); gap: 40px; align-items: center; }
.hub-journey-copy h2 { font-size: clamp(28px,3.5vw,46px); color: var(--blue); letter-spacing: -.035em; margin: 12px 0 18px; }
.hub-journey-copy > p { max-width: 540px; color: #586d83; }
.hub-journey-description { border-left: 3px solid var(--saffron); padding: 8px 0 8px 20px; margin: 26px 0 18px; min-height: 100px; }
.hub-journey-description strong { color: var(--blue); }
.hub-journey-description p { font-size: 14px; color: #586d83; max-width: 440px; margin: 8px 0 0; }
.hub-motion-toggle { border: 1px solid #c8d6e5; background: white; color: var(--blue); padding: 8px 14px; border-radius: 7px; font-size: 12px; }
.hub-motion-toggle:disabled { color: #586d83; }
.hub-journey-map { position: relative; height: 420px; min-width: 0; }
.hub-journey-paths { position: absolute; inset: 0; width: 100%; height: 100%; }
.hub-journey-paths path { stroke: #bfcede; stroke-width: 2; stroke-dasharray: 7 8; fill: none; }
.hub-journey-center { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); width: 210px; height: 100px; border-radius: 18px; background: var(--blue); color: white; display: flex; flex-direction: column; justify-content: center; align-items: center; }
.hub-journey-center strong { font-size: 26px; }
.hub-journey-center strong span { color: #ffae65; }
.hub-journey-center small { font-size: 10px; color: #d8e6f5; }
.hub-center-ring { position: absolute; inset: -8px; border: 1px solid #103a5f25; border-radius: 24px; }
.hub-journey-node { position: absolute; width: 145px; padding: 16px; background: white; border: 1px solid #d6e1ed; border-radius: 14px; text-decoration: none; color: var(--blue); display: grid; grid-template-columns: 32px 1fr; gap: 5px 10px; box-shadow: 0 5px 18px #103a5f08; transition: transform .35s,border-color .35s,box-shadow .35s; }
.hub-journey-node svg { width: 28px; height: 28px; grid-row: span 2; }
.hub-journey-node span { font-weight: 700; font-size: 14px; }
.hub-journey-node small { font-size: 10px; color: #63788e; }
.hub-node-0 { top: 6%; left: 3%; } .hub-node-1 { top: 6%; right: 3%; } .hub-node-2 { bottom: 6%; left: 3%; } .hub-node-3 { bottom: 6%; right: 3%; }
.hub-journey-node.is-active, .hub-journey-node:hover { color: var(--blue); border-color: var(--saffron); transform: translateY(-5px); box-shadow: 0 10px 24px #f5822020; }
.hub-motion-running .hub-journey-paths path { animation: hub-path-flow 3s linear infinite; }
.hub-motion-running .hub-center-ring { animation: hub-center-pulse 3.2s ease-in-out infinite; }
@keyframes hub-path-flow { to { stroke-dashoffset: -60; } }
@keyframes hub-center-pulse { 50% { transform: scale(1.05); opacity: .35; } }
@media(max-width:991px) { .hub-journey-layout { grid-template-columns: 1fr; gap: 20px; } .hub-journey-map { width: 100%; max-width: 700px; margin-inline: auto; } }
@media(max-width:575px) { .hub-journey-section { padding: 36px 0; } .hub-journey-map { height: 380px; } .hub-journey-node { width: 125px; padding: 12px; gap: 4px 8px; } .hub-journey-center { width: 190px; } }
@media(prefers-reduced-motion:reduce) { .hub-journey-node { transition: none; } .hub-motion-running .hub-journey-paths path, .hub-motion-running .hub-center-ring { animation: none; } }
.home-scroll-track { display: flex; gap: 24px; overflow-x: auto; padding: 8px 4px 20px; scrollbar-width: thin; scrollbar-color: #c3d1e0 transparent; }
.home-scroll-item { flex: 0 0 clamp(280px,30vw,400px); min-width: 0; }
.home-scroll-item .info-card { display: flex; flex-direction: column; }
.home-scroll-item .info-card > .p-4 { display: flex; flex-direction: column; flex: 1; }
.home-scroll-item .info-card .btn { margin-top: auto !important; }
.home-scroll-track:focus-visible { outline: 2px solid var(--saffron); outline-offset: 4px; }
.home-scroll-help { font-size: 12px; color: #62758a; padding: 12px clamp(16px,3vw,56px); margin: 0; background: #f7f9fc; }
@media(max-width:575px) { .home-scroll-item { flex-basis: 85%; } }
.home-carousel .home-scroll-track { scrollbar-width: none; scroll-snap-type: x mandatory; }
.home-carousel .home-scroll-track::-webkit-scrollbar { display: none; }
.home-carousel .home-scroll-item { scroll-snap-align: start; }
.home-carousel-controls { display: flex; justify-content: flex-end; gap: 10px; margin-top: 8px; }
.home-carousel-controls button { width: 44px; height: 44px; border: 1px solid #ccd8e5; border-radius: 50%; background: white; color: var(--blue); font-size: 22px; }
.home-carousel-controls button:hover:not(:disabled) { background: var(--saffron); border-color: var(--saffron); }
.home-carousel-controls button:disabled { opacity: .4; }
.home-carousel .card-media img { width: 100%; height: 230px; object-fit: cover; }
.home-carousel .info-card h3 { margin-bottom: 20px; }
/* Compact homepage carousels. */
.home-carousel .home-scroll-item { flex: 0 0 260px; }
.home-carousel .home-scroll-track { gap: 18px; }
.home-carousel .card-media img { height: 165px; }
.home-carousel .info-card > .p-4 { padding: 16px !important; }
.home-carousel .info-card h3 { font-size: 18px; line-height: 1.4; margin-bottom: 14px; }
.home-carousel .info-card .btn { font-size: 13px; padding: 8px 12px; }
.home-carousel .quote-card { padding: 20px; font-size: 14px; }
@media(max-width:575px) { .home-carousel .home-scroll-item { flex-basis: min(240px,80vw); } .home-carousel .card-media img { height: 150px; } }

/* Consistent homepage section spacing, including carousel sections. */
.home-page-content .section { padding-block: 36px; }
.home-page-content .section-head { margin-bottom: 24px; }
.home-page-content .home-scroll-track { padding-bottom: 8px; }
.home-page-content .home-carousel-controls { margin-top: 4px; }
@media(max-width:575px) {
    .home-page-content .section { padding-block: 24px; }
    .home-page-content .section-head { margin-bottom: 18px; }
}
.faq-page-item { border: 1px solid #dfe7ef; border-radius: 12px; margin-bottom: 16px; background: white; }
.faq-page-item summary { padding: 20px 24px; color: var(--blue); font-weight: 650; cursor: pointer; }
.faq-page-item > div { padding: 0 24px 22px; color: #586b80; line-height: 1.8; overflow-wrap: anywhere; }
.faq-page-item[open] { border-color: #edb782; }
.faq-page-item summary:focus-visible { outline: 2px solid var(--saffron); outline-offset: 3px; border-radius: 12px; }

.home-bottom-shortcuts { margin-top: 28px; margin-bottom: 0; padding-bottom: 20px; }
