:root{--gold:#d7a72c;--gold2:#f0c85a;--black:#080808;--panel:#111;--panel2:#171717;--text:#f5f2ea;--muted:#aaa;--line:#303030;--max:1180px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--black);color:var(--text);font-family:Arial,Helvetica,sans-serif;line-height:1.55}a{color:inherit}.wrap{width:min(var(--max),calc(100% - 40px));margin:auto}.site-header{height:78px;padding:0 max(20px,calc((100% - var(--max))/2));display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20;background:rgba(8,8,8,.94);border-bottom:1px solid #242424;backdrop-filter:blur(10px)}.brand{display:flex;gap:7px;align-items:center;text-decoration:none;font-weight:900;letter-spacing:2px;font-size:21px}.brand b{color:var(--gold)}nav{display:flex;align-items:center;gap:28px}nav>a:not(.button){text-decoration:none;color:#ddd;font-size:14px}.menu{display:none;background:none;border:1px solid var(--line);color:white;padding:9px 12px}.button{display:inline-block;text-decoration:none;text-transform:uppercase;letter-spacing:1px;font-weight:800;font-size:13px;background:var(--gold);color:#0a0a0a;padding:15px 22px;border:1px solid var(--gold);transition:.2s}.button:hover{background:var(--gold2);border-color:var(--gold2)}.button.ghost{background:transparent;color:var(--text);border-color:#666}.button.ghost:hover{border-color:var(--gold);color:var(--gold)}.button.small{padding:10px 16px}.hero{min-height:700px;position:relative;display:grid;align-items:center;overflow:hidden;background:#0c0c0c}.hero-bg{position:absolute;inset:0;background:radial-gradient(circle at 80% 50%,rgba(215,167,44,.15),transparent 35%),linear-gradient(110deg,#090909 0%,#090909 45%,#171717 100%)}.hero-bg:after{content:"";position:absolute;right:7%;top:20%;width:38%;height:60%;border:1px solid #292929;transform:skew(-8deg);background:repeating-linear-gradient(135deg,transparent 0 24px,rgba(255,255,255,.018) 24px 25px)}.hero-content{position:relative;z-index:2}.eyebrow{text-transform:uppercase;color:var(--gold);font-size:12px;font-weight:900;letter-spacing:3px}.hero h1,.section h2{font-size:clamp(48px,7vw,92px);line-height:.92;text-transform:uppercase;margin:15px 0 22px;letter-spacing:-3px}.hero h1 span{color:var(--gold)}.lead{font-size:25px;font-weight:800;margin:0 0 8px}.hero-copy{color:#bcbcbc;max-width:570px;font-size:17px}.actions{display:flex;gap:12px;margin-top:30px}.section{padding:100px 0}.section h2{font-size:clamp(42px,5vw,70px)}.split{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:end}.split>p,.section-copy{color:var(--muted);font-size:18px;max-width:720px}.dark{background:#101010;border-top:1px solid #1e1e1e;border-bottom:1px solid #1e1e1e}.price-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:45px}.price-card{position:relative;background:linear-gradient(145deg,#191919,#101010);border:1px solid #303030;padding:28px 22px;min-height:300px;display:flex;flex-direction:column}.price-card.featured{border-color:var(--gold);box-shadow:inset 0 3px 0 var(--gold)}.price-card h3{text-transform:uppercase;letter-spacing:1px;margin:0 0 25px}.price{font-size:54px;font-weight:900;color:var(--gold);line-height:1}.price span{font-size:24px;vertical-align:top}.price small{font-size:14px;color:#ccc;margin-left:4px}.price-card p{color:#aaa;flex:1}.tag{position:absolute;right:15px;top:12px;color:var(--gold);font-size:10px;text-transform:uppercase;letter-spacing:2px;font-weight:bold}.brands{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:45px 0 28px}.brands span{min-height:95px;border:1px solid #303030;background:#111;display:grid;place-items:center;text-align:center;font-weight:900;letter-spacing:1px;padding:15px}.image-placeholder{min-height:350px;border:1px solid #292929;background:radial-gradient(circle at 65% 40%,#262626,#0d0d0d 65%);display:grid;place-items:center;text-align:center;color:#aaa}.image-placeholder strong{color:white;font-size:22px}.hours-layout{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}.hours-layout>div>p:last-child{color:#aaa}.hours-card{border-top:2px solid var(--gold)}.hours-card div{display:flex;justify-content:space-between;gap:20px;padding:24px 0;border-bottom:1px solid #333}.hours-card strong{color:var(--gold)}.reviews{background:#0b0b0b}.review-placeholder{margin-top:35px;padding:35px;border:1px solid #333;background:#111;max-width:800px}.stars{color:var(--gold);letter-spacing:4px;font-size:25px}.review-placeholder p{color:#bbb}.text-link{color:var(--gold);font-weight:bold}.contact{background:linear-gradient(130deg,#181818,#0c0c0c)}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px}.contact address{font-style:normal;color:#bbb;font-size:18px}.contact-links{display:grid;gap:12px}.contact-links>a,.contact-links>div{display:block;text-decoration:none;border:1px solid #333;background:#111;padding:20px;font-size:20px;font-weight:bold}.contact-links small{display:block;color:var(--gold);text-transform:uppercase;letter-spacing:2px;font-size:10px;margin-bottom:5px}.contact-links strong{font-size:16px;color:#aaa}footer{border-top:1px solid #252525;padding:35px 0;background:#050505}.footer{display:flex;align-items:center;justify-content:space-between;gap:20px;color:#777;font-size:13px}.footer .brand{color:#eee;font-size:15px}@media(max-width:900px){nav{display:none;position:absolute;top:78px;left:0;right:0;background:#0b0b0b;padding:25px;flex-direction:column;align-items:stretch;border-bottom:1px solid #333}nav.open{display:flex}.menu{display:block}.hero{min-height:620px}.split,.hours-layout,.contact-grid{grid-template-columns:1fr;gap:30px}.price-grid{grid-template-columns:repeat(2,1fr)}.brands{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.wrap{width:min(var(--max),calc(100% - 28px))}.section{padding:70px 0}.hero h1,.section h2{letter-spacing:-2px}.actions{flex-direction:column}.actions .button{text-align:center}.price-grid,.brands{grid-template-columns:1fr}.hours-card div{flex-direction:column;gap:3px}.footer{flex-direction:column;align-items:flex-start}}

.brand-logo {
    display: block;
    width: 230px;
    max-width: 100%;
    height: auto;
}

/* Body Bank header logo */
.site-header {
    height: 96px;
}

.brand-logo {
    width: auto;
    height: 72px;
    max-width: 300px;
    object-fit: contain;
}

footer .brand-logo {
    height: 58px;
    width: auto;
}

@media (max-width: 900px) {
    .site-header {
        height: 82px;
    }

    .brand-logo {
        height: 56px;
        max-width: 220px;
    }

    nav {
        top: 82px;
    }
}

/* Equipment brand logo strip */
.brands {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    align-items: center;
    gap: 0;
    margin: 45px 0 12px;
    padding: 28px 0;
    border-top: 1px solid #242424;
    border-bottom: 1px solid #242424;
}

.brands .brand-item {
    min-height: 80px;
    padding: 10px 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-right: 1px solid #383838;
}

.brands .brand-item:last-child {
    border-right: 0;
}

.brands .brand-item img {
    display: block;
    width: 100%;
    max-width: 180px;
    max-height: 65px;
    object-fit: contain;
}

.brand-tagline {
    margin: 0 0 35px;
    text-align: center;
    color: #777;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 4px;
}

@media (max-width: 900px) {
    .brands {
        grid-template-columns: repeat(2, 1fr);
    }

    .brands .brand-item {
        border-right: 0;
        border-bottom: 1px solid #292929;
    }

    .brands .brand-item:last-child {
        grid-column: 1 / -1;
    }
}

@media (max-width: 560px) {
    .brands {
        grid-template-columns: 1fr;
    }

    .brands .brand-item:last-child {
        grid-column: auto;
    }

    .brand-tagline {
        letter-spacing: 2px;
        line-height: 1.8;
    }
}


/* Final equipment logo sizing */
.brands .brand-item {
    height: 120px;
    padding: 18px 26px;
    overflow: visible;
}

.brands .brand-item img {
    display: block;
    width: 100%;
    height: 75px;
    max-width: 190px;
    max-height: 75px;
    object-fit: contain;
}

/* Optical balancing between different logo shapes */
.brands .brand-item:nth-child(1) img { max-width: 200px; }
.brands .brand-item:nth-child(2) img { max-width: 200px; }
.brands .brand-item:nth-child(3) img { max-width: 175px; }
.brands .brand-item:nth-child(4) img { max-width: 190px; }
.brands .brand-item:nth-child(5) img { max-width: 190px; }

@media (max-width: 900px) {
    .brands .brand-item {
        height: 110px;
    }

    .brands .brand-item img {
        max-width: 210px;
        height: 70px;
    }
}

/* Large equipment logos */
.brands .brand-item {
    height: 175px;
    padding: 12px 18px;
}

.brands .brand-item img {
    width: 100%;
    height: 135px;
    max-width: 240px;
    max-height: 135px;
    object-fit: contain;
}

.brands .brand-item:nth-child(1) img,
.brands .brand-item:nth-child(2) img {
    max-width: 250px;
}

.brands .brand-item:nth-child(3) img {
    max-width: 215px;
}

.brands .brand-item:nth-child(4) img,
.brands .brand-item:nth-child(5) img {
    max-width: 230px;
}

/* Final equipment strip polish */
.equipment .brands {
    margin-top: 30px;
    padding: 0;
}

.brands .brand-item {
    height: 150px;
    padding: 20px 22px;
}

.brand-tagline {
    margin-top: 0;
    margin-bottom: 20px;
    padding-top: 10px;
}

/* Google Reviews */
.google-review-card {
    margin-top: 35px;
    padding: 38px 40px;
    border: 1px solid #333;
    border-left: 3px solid var(--gold);
    background: linear-gradient(135deg, #171717, #0e0e0e);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 40px;
}

.google-rating .stars {
    margin-bottom: 12px;
}

.google-rating strong {
    display: block;
    font-size: 25px;
    text-transform: uppercase;
    letter-spacing: .5px;
}

.google-rating p {
    margin: 8px 0 0;
    color: #aaa;
}

.google-review-actions {
    flex-shrink: 0;
}

@media (max-width: 700px) {
    .google-review-card {
        flex-direction: column;
        align-items: flex-start;
        padding: 28px;
    }

    .google-review-actions,
    .google-review-actions .button {
        width: 100%;
        text-align: center;
    }
}

/* ClubRight widgets */
.timetable-section {
    background: #0b0b0b;
}

.clubright-widget {
    margin-top: 40px;
    padding: 25px;
    background: #fff;
    border-top: 3px solid var(--gold);
    overflow-x: auto;
}

.timetable-widget {
    min-height: 300px;
}

/* ClubRight timetable - Body Bank styling */
.timetable-section {
    background: #0b0b0b;
}

.timetable-section .wrap {
    max-width: 1050px;
}

.timetable-widget {
    margin: 30px auto 0;
    padding: 14px;
    min-height: 0;
    background: #111;
    border: 1px solid #292929;
    border-top: 3px solid var(--gold);
    overflow: hidden;
}

/* Try to blend ClubRight's generated timetable into our theme */
#clubrighttimetable {
    background: #111 !important;
    color: #f5f2ea !important;
}

/* Scale the timetable down slightly */
#clubrighttimetable {
    font-size: 90%;
}

@media (max-width: 700px) {
    .timetable-widget {
        padding: 8px;
    }

    #clubrighttimetable {
        font-size: 85%;
    }
}

/* Narrower ClubRight timetable */
.timetable-section .wrap {
    max-width: 1050px;
}

.timetable-widget {
    width: 100%;
    max-width: 820px;
    margin: 30px auto 0;
}

#clubrighttimetable {
    width: 100%;
}

/* ClubRight opening times */
.live-hours {
    padding-bottom: 65px;
}

.clubright-opening-widget {
    max-width: 820px;
    margin: 35px auto 0;
    padding: 25px 30px;
    background: #111;
    border: 1px solid #292929;
    border-top: 3px solid var(--gold);
}

#clubrightopeningtimes {
    background: #111 !important;
    color: #f5f2ea !important;
}

/* ClubRight timetable dark integration */
.timetable-widget,
#clubrighttimetable {
    background: #0b0b0b !important;
}

#clubrighttimetable > div {
    background-color: #0b0b0b !important;
}

.timetable-section {
    padding-top: 65px;
}

@media (max-width: 700px) {
    .clubright-opening-widget {
        padding: 18px;
    }
}

/* ClubRight timetable dark theme */
.timetable-widget {
    background: #0b0b0b !important;
    border: 1px solid #292929;
    border-top: 3px solid var(--gold);
    padding: 12px !important;
}

#clubrighttimetable,
#clubrighttimetable > div,
#clubrighttimetable section {
    background-color: #0b0b0b !important;
}

/* ClubRight timetable day/date areas */
#clubrighttimetable h1,
#clubrighttimetable h2,
#clubrighttimetable h3,
#clubrighttimetable h4 {
    color: #f5f2ea !important;
}

/* Override light backgrounds generated by ClubRight */
#clubrighttimetable [style*="background-color: white"],
#clubrighttimetable [style*="background-color:#fff"],
#clubrighttimetable [style*="background-color: #fff"],
#clubrighttimetable [style*="background: white"],
#clubrighttimetable [style*="background:#fff"],
#clubrighttimetable [style*="background: #fff"] {
    background: #0b0b0b !important;
}

/* ClubRight timetable internal background */
#clubrighttimetable #bookingCalendar,
#clubrighttimetable .cr-widget-body {
    background: #0b0b0b !important;
    color: #f5f2ea !important;
}

/* ClubRight generated section */
#clubrighttimetable > section {
    background: #0b0b0b !important;
}

/* Date headings inside timetable */
#clubrighttimetable #bookingCalendar h1,
#clubrighttimetable #bookingCalendar h2,
#clubrighttimetable #bookingCalendar h3,
#clubrighttimetable #bookingCalendar h4,
#clubrighttimetable #bookingCalendar h5 {
    color: #f5f2ea !important;
}

/* Lines/dividers */
#clubrighttimetable #bookingCalendar hr {
    border-color: #444 !important;
}

/* Body Bank photography */
.gym-gallery {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    grid-template-rows: 220px 220px;
    gap: 10px;
    margin-top: 45px;
}

.gym-gallery figure {
    position: relative;
    margin: 0;
    overflow: hidden;
    background: #111;
    border: 1px solid #292929;
}

.gym-gallery .gallery-main {
    grid-row: 1 / 3;
}

.gym-gallery figure:last-child {
    grid-column: 2 / 4;
}

.gym-gallery img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    transition: transform .4s ease, filter .4s ease;
}

.gym-gallery figure::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,.28), transparent 50%);
    pointer-events: none;
}

.gym-gallery figure:hover img {
    transform: scale(1.025);
    filter: brightness(1.08);
}

@media (max-width: 700px) {
    .gym-gallery {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: 280px 180px 220px;
    }

    .gym-gallery .gallery-main {
        grid-column: 1 / 3;
        grid-row: auto;
    }

    .gym-gallery figure:last-child {
        grid-column: 1 / 3;
    }
}

/* Hero photography */
.hero-layout {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(380px, .85fr);
    gap: 65px;
    align-items: center;
}

.hero-layout .hero-content {
    position: relative;
}

.hero-photo {
    position: relative;
    height: 560px;
    overflow: hidden;
    border: 1px solid #303030;
    border-bottom: 3px solid var(--gold);
    background: #111;
}

.hero-photo::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(90deg, rgba(8,8,8,.28), transparent 35%),
        linear-gradient(0deg, rgba(8,8,8,.25), transparent 40%);
    pointer-events: none;
}

.hero-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* Three-photo equipment gallery */
.three-photo-gallery {
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: 360px;
}

.three-photo-gallery figure,
.three-photo-gallery figure:last-child {
    grid-column: auto;
    grid-row: auto;
}

@media (max-width: 900px) {
    .hero-layout {
        grid-template-columns: 1fr 1fr;
        gap: 30px;
    }

    .hero-photo {
        height: 480px;
    }
}

@media (max-width: 700px) {
    .hero {
        padding-top: 55px;
        padding-bottom: 35px;
    }

    .hero-layout {
        grid-template-columns: 1fr;
        gap: 40px;
    }

    .hero-photo {
        height: 420px;
    }

    .three-photo-gallery {
        grid-template-columns: 1fr;
        grid-template-rows: repeat(3, 280px);
    }
}

/* Final hero photo alignment */
.hero-bg::after {
    display: none !important;
}

.hero-layout {
    align-items: start;
}

.hero-content {
    padding-top: 75px;
}

.hero-photo {
    height: 500px;
    margin-top: 0;
}

/* Crop the building photo to remove excess sky/road and entrance detail */
.hero-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 38%;
}

/* Darken the lower edge slightly */
.hero-photo::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    background: linear-gradient(
        to bottom,
        transparent 65%,
        rgba(8,8,8,.20) 100%
    );
    pointer-events: none;
}

@media (max-width: 700px) {
    .hero-content {
        padding-top: 0;
    }

    .hero-photo {
        height: 380px;
    }
}

/* Hero image final crop */
.hero-photo {
    height: 410px;
}

.hero-photo img {
    object-fit: cover;
    object-position: center 62%;
}

/* Hero photo vertical alignment */
.hero-photo {
    margin-top: 90px;
}

@media (max-width: 700px) {
    .hero-photo {
        margin-top: 0;
    }
}

/* Timetable and studio */
.timetable-section .wrap {
    max-width: 1180px;
}

.timetable-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr);
    gap: 28px;
    align-items: start;
    margin-top: 40px;
}

.timetable-layout .timetable-widget {
    width: 100%;
    max-width: none;
    margin: 0;
}

.timetable-photo {
    position: relative;
    height: 100%;
    min-height: 520px;
    overflow: hidden;
    border: 1px solid #292929;
    border-bottom: 3px solid var(--gold);
    background: #111;
}

.timetable-photo img {
    width: 100%;
    height: 100%;
    position: absolute;
    inset: 0;
    object-fit: cover;
    object-position: center;
}

@media (max-width: 850px) {
    .timetable-layout {
        grid-template-columns: 1fr;
    }

    .timetable-photo {
        height: 420px;
        min-height: 0;
    }

    .timetable-photo img {
        position: static;
        height: 100%;
    }
}

/* Timetable heading + treadmill photo */
.timetable-intro {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 60px;
    align-items: center;
    margin-bottom: 35px;
}

.timetable-heading h2 {
    margin-bottom: 22px;
}

.timetable-intro-photo {
    height: 260px;
    overflow: hidden;
    border: 1px solid #292929;
    border-bottom: 3px solid var(--gold);
    background: #111;
}

.timetable-intro-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* Restore timetable widget to centred standalone position */
.timetable-section .timetable-widget {
    width: 100%;
    max-width: 820px;
    margin: 30px auto 0;
}

@media (max-width: 800px) {
    .timetable-intro {
        grid-template-columns: 1fr;
        gap: 25px;
    }

    .timetable-intro-photo {
        height: 300px;
    }
}

/* Members login */
nav .member-login {
    background: transparent;
    color: var(--gold);
    border-color: var(--gold);
}

nav .member-login:hover {
    background: var(--gold);
    color: #080808;
}
