/* ==========================================================================
   MSOS Hub page (venue / space promo)
   ========================================================================== */
.hub-page { padding-top: 80px; background: #FFFFFF; font-family: 'Inter', sans-serif; }

/* ---------- Hero ---------- */
.hub-hero {
    background: linear-gradient(180deg, #F1F7F9 0%, #FFFFFF 100%);
    padding: 56px 24px 44px; text-align: center;
}
.hub-hero .container {
    max-width: 840px; margin: 0 auto;
    display: flex; flex-direction: column; align-items: center; gap: 18px;
}
.hub-eyebrow {
    display: inline-flex; align-items: center; gap: 8px;
    font-weight: 700; font-size: 14px; letter-spacing: 0.06em;
    text-transform: uppercase; color: #2D738C;
}
.hub-hero h1 { font-size: 44px; line-height: 1.12; color: #101828; margin: 0; font-weight: 700; }
.hub-lead { font-size: 19px; line-height: 30px; color: #475467; margin: 0; max-width: 700px; }
.hub-hero-cta { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; margin-top: 8px; }

/* Quick facts strip */
.hub-facts {
    display: flex; flex-wrap: wrap; justify-content: center; gap: 12px;
    margin-top: 8px;
}
.hub-fact {
    display: inline-flex; align-items: center; gap: 8px;
    background: #FFFFFF; border: 1px solid #EAECF0; border-radius: 999px;
    padding: 8px 16px; font-size: 14px; font-weight: 600; color: #344054;
}
.hub-fact i { color: #2D738C; }

/* ---------- Generic section ---------- */
.hub-section { max-width: 1120px; margin: 0 auto; padding: 80px 24px 88px; scroll-margin-top: 96px; }
.hub-section--tint { background: #F9FAFB; max-width: none; }
.hub-section--tint > .hub-inner { max-width: 1120px; margin: 0 auto; }
.hub-section-head { text-align: center; max-width: 720px; margin: 0 auto 40px; }
.hub-h2 { font-size: 32px; line-height: 1.2; color: #101828; margin: 0 0 12px; font-weight: 700; }
.hub-sub { font-size: 17px; line-height: 27px; color: #667085; margin: 0; }

/* ---------- Story (full-bleed image banner with blue gradient) ---------- */
.hub-story {
    position: relative; overflow: hidden;
    min-height: clamp(460px, 68vh, 660px);
    display: flex; align-items: center;
    color: #FFFFFF;
}
.hub-story-bg {
    position: absolute; inset: 0; z-index: 0;
    width: 100%; height: 100%; object-fit: cover;
}
/* blueish gradient: strong on the text (left) side, fading toward the image */
.hub-story-overlay {
    position: absolute; inset: 0; z-index: 1; pointer-events: none;
    background: linear-gradient(
        90deg,
        rgba(18, 52, 68, 0.95) 0%,
        rgba(21, 60, 78, 0.82) 34%,
        rgba(24, 70, 90, 0.42) 66%,
        rgba(24, 70, 90, 0.10) 100%
    );
}
.hub-story-inner {
    position: relative; z-index: 2;
    width: 100%; max-width: 1120px; margin: 0 auto;
    padding: 64px 24px;
}
.hub-story-text { max-width: 640px; }
.hub-story-text .hub-h2 {
    text-align: left; color: #FFFFFF;
    text-shadow: 0 2px 18px rgba(9, 26, 34, 0.35);
}
.hub-story-text p { font-size: 17px; line-height: 28px; color: rgba(255, 255, 255, 0.9); margin: 0 0 16px; }
.hub-story-text p:last-child { margin-bottom: 0; }

/* ---------- Use cases (image cards, auto-scrolling + drag + dots) ---------- */
.hub-carousel { position: relative; }
/* masked, scrollable viewport: cards fade out at both edges instead of being
   hard-cut. Auto-scroll, click-and-drag and touch swiping are driven by JS
   (setupHubCarousel); the native scrollbar is hidden. */
.hub-uses {
    overflow-x: auto; overflow-y: hidden;
    padding: 6px 0 10px;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 2.5%, #000 97.5%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 2.5%, #000 97.5%, transparent 100%);
    cursor: grab;
    -webkit-user-select: none; user-select: none;
    scrollbar-width: none; -ms-overflow-style: none;
    scroll-behavior: auto;
}
.hub-uses::-webkit-scrollbar { display: none; }
.hub-uses.is-dragging { cursor: grabbing; }
/* the track = three identical groups so the JS loop is seamless in both directions */
.hub-track {
    display: flex; width: max-content;
}
.hub-group {
    display: flex; gap: 18px; padding-right: 18px; flex: 0 0 auto;
}
.hub-use {
    position: relative; overflow: hidden; border-radius: 16px;
    flex: 0 0 auto; width: clamp(230px, 22vw, 278px);
    aspect-ratio: 363 / 545;
    /* fallback while an image is missing */
    background: linear-gradient(135deg, #2D738C 0%, #255F74 100%);
    box-shadow: 0 8px 22px rgba(16, 24, 40, 0.10);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.hub-use:nth-child(3n+2) { background: linear-gradient(135deg, #FA7850 0%, #E8613B 100%); }
.hub-use:nth-child(3n+3) { background: linear-gradient(135deg, #3B82C4 0%, #2C6BA6 100%); }
.hub-use:hover { transform: translateY(-4px); box-shadow: 0 18px 36px rgba(16, 24, 40, 0.18); }
.hub-use-img {
    position: absolute; inset: 0; width: 100%; height: 100%;
    object-fit: cover; display: block;
    transition: transform 0.4s ease;
    -webkit-user-drag: none; user-select: none; pointer-events: none;
}
.hub-use:hover .hub-use-img { transform: scale(1.05); }
/* gradient rising from the bottom for text legibility */
.hub-use::after {
    content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
    background: linear-gradient(
        to top,
        rgba(10, 18, 26, 0.88) 0%,
        rgba(10, 18, 26, 0.62) 26%,
        rgba(10, 18, 26, 0.18) 52%,
        rgba(10, 18, 26, 0) 72%
    );
}
.hub-use-body {
    position: absolute; z-index: 2; left: 0; right: 0; bottom: 0;
    display: flex; flex-direction: column; gap: 5px;
    padding: 16px 16px 16px;
}
.hub-use-body h3 { font-size: 18px; line-height: 1.25; color: #fff; margin: 0; font-weight: 700; }
.hub-use-body p { font-size: 13px; line-height: 19px; color: rgba(255, 255, 255, 0.9); margin: 0; }

/* ---------- Scroll-position dots ---------- */
.hub-dots {
    display: flex; justify-content: center; align-items: center;
    gap: 9px; margin-top: 18px;
}
.hub-dot {
    width: 8px; height: 8px; padding: 0; border: 0; border-radius: 50%;
    background: #CBD5DE; cursor: pointer; flex: 0 0 auto;
    transition: width 0.25s ease, background-color 0.25s ease,
                opacity 0.25s ease, transform 0.25s ease;
}
.hub-dot:hover { background: #9AA9B7; }
.hub-dot.is-near { width: 7px; height: 7px; }
.hub-dot.is-far { width: 6px; height: 6px; opacity: 0.6; }
.hub-dot.is-active {
    width: 24px; height: 8px; border-radius: 6px;
    background: #2D738C; opacity: 1;
}

/* ---------- Amenities ---------- */
.hub-amenities {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;
    max-width: 960px; margin: 0 auto;
}
.hub-amenity {
    display: flex; align-items: center; gap: 12px;
    border: 1px solid #EAECF0; border-radius: 12px; padding: 16px; background: #fff;
}
.hub-amenity i { color: #2E9E6B; font-size: 18px; width: 22px; text-align: center; flex-shrink: 0; }
.hub-amenity span { font-size: 15px; font-weight: 500; color: #344054; }

/* ---------- Gallery (full-bleed band of connected photos) ---------- */
.hub-gallery {
    /* break out of the centred 1120px section to span the full viewport */
    position: relative; left: 50%; right: 50%;
    width: 100vw; margin-left: -50vw; margin-right: -50vw;
    display: flex;
    gap: 4px;                 /* the thin vertical lines between photos */
    background: #FFFFFF;      /* colour shown in the gaps */
}
.hub-shot {
    margin: 0; flex: 1 1 0; min-width: 0; overflow: hidden;
}
.hub-shot img {
    display: block; width: 100%;
    height: clamp(340px, 48vh, 560px);
    object-fit: cover;
    transition: transform 0.5s ease;
}
.hub-shot:hover img { transform: scale(1.04); }

/* ---------- Supporters / made possible by ---------- */
.hub-supporters { text-align: center; }
/* partner logo tiles */
.hub-logos {
    display: flex; flex-wrap: wrap; justify-content: center; align-items: stretch;
    gap: 20px; max-width: 960px; margin: 0 auto;
}
.hub-logo {
    flex: 0 1 240px;
    display: flex; align-items: center; justify-content: center;
    background: #fff; border: 1px solid #EAECF0; border-radius: 14px;
    padding: 24px 28px; min-height: 120px;
}
.hub-logo img {
    max-width: 100%; max-height: 72px; width: auto; height: auto;
    object-fit: contain;
}
/* community credit line under the logos */
.hub-community {
    margin: 22px auto 0; text-align: center;
    font-size: 15px; color: #667085;
}
.hub-community i { color: #FA7850; }

/* ---------- Final booking CTA ---------- */
.hub-final {
    background: linear-gradient(135deg, #12394A 0%, #0C2A38 100%);
    color: #fff; text-align: center; padding: 84px 24px 88px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.10);
}
.hub-final h2 { color: #fff; font-size: 30px; line-height: 1.2; margin: 0 0 12px; font-weight: 700; }
.hub-final p { color: #D6E6EC; font-size: 17px; line-height: 27px; max-width: 640px; margin: 0 auto 24px; }
.hub-final-cta { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; align-items: center; }
.hub-final .btn-ghost { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,0.6); }
.hub-final .btn-ghost:hover { background: rgba(255,255,255,0.12); }

/* ---------- Mobile ---------- */
@media (max-width: 768px) {
    .hub-page { padding-top: 0; } /* body already offsets the fixed header on mobile */
    .hub-hero { padding: 40px 20px 32px; }
    .hub-hero h1 { font-size: 32px; }
    .hub-lead { font-size: 17px; line-height: 27px; }
    .hub-section { padding: 48px 20px; }
    .hub-h2 { font-size: 26px; }
    .hub-story { min-height: 0; }
    .hub-story-inner { padding: 48px 20px; }
    .hub-story-overlay {
        background: linear-gradient(
            180deg,
            rgba(18, 52, 68, 0.85) 0%,
            rgba(18, 52, 68, 0.9) 100%
        );
    }
    .hub-use { width: min(64vw, 240px); }
    .hub-use-body { padding: 16px 14px 18px; }
    .hub-amenities { grid-template-columns: 1fr 1fr; }
    .hub-gallery { flex-wrap: wrap; }
    .hub-shot { flex: 1 1 calc(50% - 2px); }
    .hub-shot img { height: clamp(180px, 30vh, 260px); }
    .hub-final { padding: 48px 20px; }
    .hub-final h2 { font-size: 24px; }
}
