{"id":8875,"date":"2026-07-03T21:40:23","date_gmt":"2026-07-03T21:40:23","guid":{"rendered":"https:\/\/revolutionstudio.co.uk\/?page_id=8875"},"modified":"2026-07-03T22:42:50","modified_gmt":"2026-07-03T22:42:50","slug":"rev-summer-series","status":"publish","type":"page","link":"https:\/\/revolutionstudio.co.uk\/ar\/rev-summer-series\/","title":{"rendered":"Rev Summer Series"},"content":{"rendered":"<div class=\"wp-block-group alignfull has-global-padding is-layout-constrained wp-container-core-group-is-layout-d524285f wp-block-group-is-layout-constrained\" style=\"margin-top:0px;margin-bottom:0;padding-top:45px;padding-right:30px;padding-bottom:10px;padding-left:30px\">\n<div class=\"wp-block-group alignfull has-global-padding is-layout-constrained wp-container-core-group-is-layout-9ce6ffdc wp-block-group-is-layout-constrained\" style=\"margin-top:0px;margin-bottom:0;padding-top:var(--wp--preset--spacing--x-large);padding-right:30px;padding-bottom:0;padding-left:30px\">\n<div class=\"wp-block-group alignwide has-global-padding is-layout-constrained wp-container-core-group-is-layout-3da7f8db wp-block-group-is-layout-constrained\">\n<h6 class=\"wp-block-heading has-text-align-center\" style=\"font-style:normal;font-weight:700\">Rev Summer Series<\/h6>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-ad46d3b18553847f0eeeed2cd023a1ff\" id=\"image-heading-text-button-1\" style=\"color:#000000;margin-bottom:0;font-style:normal;font-weight:700;line-height:1.5\">YOUR STRONGEST <br>SUMMER STARTS NOW<\/h2>\n\n\n\n<script data-wp-block-html=\"js\">\n(function () {\n    var DEBUG_PREFIX = '[Rev Homepage Offer]';\n\n    var SITE_LOCATION_STORAGE_KEY = 'city';\n    var MT_STORAGE_KEY = 'mt.https:\/\/revolution.marianatek.com';\n\n    var FALLBACK_URL = '\/pricing\/';\n    var BUTTON_SELECTOR = '.rev-home-offer-container .rev-home-offer-button';\n\n    var OFFER_LOCATION_MAP = {\n        'kirkintilloch': {\n            locationId: '49060',\n            sectionId: '1943'\n        },\n        'east-kilbride': {\n            locationId: '48796',\n            sectionId: '1939'\n        },\n        'stirling': {\n            locationId: '48929',\n            sectionId: '1946'\n        },\n        'edinburgh-city-centre': {\n            locationId: '48994',\n            sectionId: '1947'\n        },\n        'edinburgh': {\n            locationId: '48994',\n            sectionId: '1947'\n        },\n        'airdrie': {\n            locationId: '48724',\n            sectionId: '1937'\n        },\n        'glasgow-west-end': {\n            locationId: '48722',\n            sectionId: '1942'\n        },\n        'west-end': {\n            locationId: '48722',\n            sectionId: '1942'\n        },\n        'cumbernauld': {\n            locationId: '48728',\n            sectionId: '1938'\n        },\n        'glasgow-city-centre': {\n            locationId: '48720',\n            sectionId: '1940'\n        },\n        'city-centre': {\n            locationId: '48720',\n            sectionId: '1940'\n        },\n        'livingston': {\n            locationId: '48726',\n            sectionId: '1944'\n        },\n        'glasgow-southside': {\n            locationId: '48718',\n            sectionId: '1941'\n        },\n        'southside': {\n            locationId: '48718',\n            sectionId: '1941'\n        },\n        'paisley': {\n            locationId: '48863',\n            sectionId: '1945'\n        }\n    };\n\n    function log() {\n        console.log.apply(console, [DEBUG_PREFIX].concat(Array.prototype.slice.call(arguments)));\n    }\n\n    function warn() {\n        console.warn.apply(console, [DEBUG_PREFIX].concat(Array.prototype.slice.call(arguments)));\n    }\n\n    function normalizeSlug(value) {\n        if (!value) {\n            return '';\n        }\n\n        return String(value)\n            .trim()\n            .toLowerCase()\n            .replace(\/&\/g, 'and')\n            .replace(\/[^a-z0-9]+\/g, '-')\n            .replace(\/^-+|-+$\/g, '');\n    }\n\n    function getSiteCitySlug() {\n        var rawValue = window.localStorage.getItem(SITE_LOCATION_STORAGE_KEY);\n\n        log('Raw site city value:', rawValue);\n\n        if (!rawValue) {\n            return '';\n        }\n\n        var slug = normalizeSlug(rawValue);\n\n        log('Normalized site city slug:', slug);\n\n        return slug;\n    }\n\n    function getMarianaTekSlug() {\n        try {\n            var rawValue = window.localStorage.getItem(MT_STORAGE_KEY);\n\n            log('Raw Mariana Tek value:', rawValue);\n\n            if (!rawValue) {\n                return '';\n            }\n\n            var mtData = JSON.parse(rawValue);\n\n            if (!mtData || !mtData.locationName) {\n                return '';\n            }\n\n            var slug = normalizeSlug(mtData.locationName);\n\n            log('Normalized Mariana Tek location slug:', slug);\n\n            return slug;\n        } catch (error) {\n            warn('Could not parse Mariana Tek storage:', error);\n            return '';\n        }\n    }\n\n    function getLocationConfig() {\n        var siteCitySlug = getSiteCitySlug();\n\n        if (siteCitySlug && OFFER_LOCATION_MAP[siteCitySlug]) {\n            log('Matched location from site city:', siteCitySlug);\n            return OFFER_LOCATION_MAP[siteCitySlug];\n        }\n\n        if (siteCitySlug) {\n            warn('Site city exists but no mapping found:', siteCitySlug);\n        }\n\n        var mtSlug = getMarianaTekSlug();\n\n        if (mtSlug && OFFER_LOCATION_MAP[mtSlug]) {\n            log('Matched location from Mariana Tek:', mtSlug);\n            return OFFER_LOCATION_MAP[mtSlug];\n        }\n\n        if (mtSlug) {\n            warn('Mariana Tek location exists but no mapping found:', mtSlug);\n        }\n\n        warn('No valid location match found. Using fallback.');\n        return null;\n    }\n\n    function buildOfferUrl() {\n        var locationConfig = getLocationConfig();\n\n        if (!locationConfig || !locationConfig.locationId || !locationConfig.sectionId) {\n            return FALLBACK_URL;\n        }\n\n        var mtPath = '\/buy\/' + locationConfig.locationId + '?activeSection=' + locationConfig.sectionId;\n        var offerUrl = '\/pricing\/?country=uk&_mt=' + encodeURIComponent(mtPath);\n\n        log('Built dynamic offer URL:', offerUrl);\n\n        return offerUrl;\n    }\n\n    function initHomepageOfferButton() {\n        var button = document.querySelector(BUTTON_SELECTOR);\n\n        if (!button) {\n            warn('Button not found:', BUTTON_SELECTOR);\n            return;\n        }\n\n        var initialUrl = buildOfferUrl();\n        button.setAttribute('href', initialUrl);\n        log('Initial href set to:', initialUrl);\n\n        if (button.dataset.revOfferBound === 'true') {\n            return;\n        }\n\n        button.dataset.revOfferBound = 'true';\n\n        button.addEventListener('click', function (event) {\n            var finalUrl = buildOfferUrl();\n\n            log('Redirecting to:', finalUrl);\n\n            event.preventDefault();\n            window.location.href = finalUrl;\n        });\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initHomepageOfferButton);\n    } else {\n        initHomepageOfferButton();\n    }\n})();\n<\/script>\n\n<!-- ==========================================\n     REVOLUTION STUDIO - HOMEPAGE SCOTLAND OFFER BANNER\n     ========================================== -->\n<style>\n    .rev-home-offer-container {\n \/*display:none;*\/\n        width: 100%;\n        max-width: 1012px;\n        margin: 2rem auto;\n        box-sizing: border-box;\n        font-family: 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n        -webkit-font-smoothing: antialiased;\n    }\n\n    .rev-home-offer-card {\n        background-color: #ffffff;\n        border: 1px solid #000000;\n        position: relative;\n        padding: 40px 24px;\n        display: flex;\n        flex-direction: column;\n        gap: 24px;\n        box-sizing: border-box;\n        transition: all 0.3s ease;\n    }\n\n    .rev-home-offer-card:hover {\n        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);\n    }\n\n    .rev-home-offer-badge {\n        position: absolute;\n        top: 0;\n        right: 0;\n        background-color: #000000;\n        color: #ffffff;\n        font-size: 10px;\n        font-weight: 800;\n        text-transform: uppercase;\n        letter-spacing: 1.5px;\n        padding: 6px 16px;\n        user-select: none;\n        display:none;\n    }\n\n    .rev-home-offer-title {\n        font-size: 22px;\n        font-weight: 800;\n        color: #000000;\n        line-height: 1.2;\n        margin: 0 0 12px 0;\n        letter-spacing: -0.2px;\n        text-transform: uppercase;\n    }\n\n    .rev-home-offer-description {\n        font-size: 14px;\n        color: #555555;\n        line-height: 1.6;\n        margin: 0;\n        font-weight: 400;\n        max-width: 620px;\n    }\n\n    .rev-home-offer-actions {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 24px;\n        border-top: 1px solid #eaeaea;\n        padding-top: 24px;\n        margin-top: 8px;\n    }\n\n    .rev-home-offer-price {\n        font-size: 32px;\n        font-weight: 700;\n        color: #000000;\n        line-height: 1;\n        letter-spacing: -0.5px;\n        white-space: nowrap;\n    }\n\n    .rev-home-offer-button {\n        display: inline-block;\n        background-color: #ffffff;\n        color: #000000;\n        border: 1px solid #000000;\n        font-size: 12px;\n        font-weight: 700;\n        text-transform: uppercase;\n        letter-spacing: 2px;\n        padding: 12px 36px;\n        cursor: pointer;\n        transition: all 0.25s ease;\n        text-align: center;\n        text-decoration: none;\n        white-space: nowrap;\n    }\n\n    .rev-home-offer-button:hover {\n        background-color: #000000;\n        color: #ffffff;\n    }\n\n    @media (min-width: 768px) {\n        .rev-home-offer-card {\n            flex-direction: row;\n            align-items: center;\n            justify-content: space-between;\n            padding: 44px 48px;\n            gap: 32px;\n        }\n\n        .rev-home-offer-title {\n            font-size: 26px;\n        }\n\n        .rev-home-offer-badge {\n            font-size: 11px;\n            padding: 8px 20px;\n        }\n\n        .rev-home-offer-actions {\n            border-top: none;\n            padding-top: 0;\n            margin-top: 0;\n            justify-content: flex-end;\n            gap: 36px;\n            flex-shrink: 0;\n        }\n\n        .rev-home-offer-price {\n            font-size: 40px;\n        }\n    }\n\n    @media (max-width: 480px) {\n        .rev-home-offer-actions {\n            align-items: flex-start;\n            flex-direction: column;\n        }\n\n        .rev-home-offer-button {\n            width: 100%;\n        }\n    }\n<\/style>\n\n<div class=\"rev-home-offer-container\">\n    <div class=\"rev-home-offer-card\">\n\n        <div class=\"rev-home-offer-badge\">\n            Offer\n        <\/div>\n\n        <div>\n            <h2 class=\"rev-home-offer-title\">\n                Limited time summer savings across all credit packs\n            <\/h2>\n            <p class=\"rev-home-offer-description\">\n                Available for a limited time only\n            <\/p>\n        <\/div>\n\n        <div class=\"rev-home-offer-actions\">\n            \n            <a href=\"https:\/\/revolutionstudio.co.uk\/ar\/pricing\/?_mt=%2Fbuy%2F48994%3FactiveSection%3D1947&amp;country=uk\" class=\"rev-home-offer-button\">\n                View Offer\n            <\/a>\n        <\/div>\n\n    <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">For a limited time, save on our most popular credit packs and keep your momentum going all summer long.<\/p>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><\/div>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<!-- ==========================================\n     REVOLUTION STUDIO - SUMMER SERIES OFFER PAGE\n     ========================================== -->\n<style>\n    .rev-summer-offer {\n        width: 100%;\n        max-width: 1180px;\n        margin: 0 auto;\n        padding: 80px 24px;\n        box-sizing: border-box;\n        font-family: 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n        color: #000000;\n        -webkit-font-smoothing: antialiased;\n    }\n\n    .rev-summer-offer__intro {\n        max-width: 760px;\n        margin: 0 auto 56px auto;\n        text-align: center;\n    }\n\n    .rev-summer-offer__kicker {\n        display: block;\n        margin-bottom: 14px;\n        font-size: 12px;\n        font-weight: 800;\n        text-transform: uppercase;\n        letter-spacing: 1.8px;\n    }\n\n    .rev-summer-offer__title {\n        margin: 0 0 18px 0;\n        font-family: 'Qualy', 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n        font-size: clamp(38px, 6vw, 72px);\n        font-weight: 800;\n        line-height: 0.98;\n        text-transform: uppercase;\n        letter-spacing: -1px;\n    }\n\n    .rev-summer-offer__description {\n        max-width: 680px;\n        margin: 0 auto;\n        font-size: 16px;\n        line-height: 1.7;\n        color: #333333;\n    }\n\n    .rev-summer-offer__grid {\n        display: grid;\n        grid-template-columns: repeat(3, minmax(0, 1fr));\n        gap: 24px;\n        align-items: stretch;\n    }\n\n    .rev-summer-card {\n        position: relative;\n        display: flex;\n        flex-direction: column;\n        min-height: 100%;\n        background-color: #ffffff;\n        border: 1px solid #000000;\n        box-sizing: border-box;\n        transition: all 0.3s ease;\n    }\n\n    .rev-summer-card:hover {\n        transform: translateY(-3px);\n        box-shadow: 0 8px 28px rgba(0, 0, 0, 0.1);\n    }\n\n    .rev-summer-card__badge {\n        background-color: #000000;\n        color: #ffffff;\n        padding: 10px 18px;\n        font-size: 11px;\n        font-weight: 800;\n        text-transform: uppercase;\n        letter-spacing: 1.6px;\n    }\n\n    .rev-summer-card__body {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        padding: 30px 28px;\n    }\n\n    .rev-summer-card__label {\n        margin: 0 0 12px 0;\n        font-size: 12px;\n        font-weight: 800;\n        text-transform: uppercase;\n        letter-spacing: 1.5px;\n        color: #555555;\n    }\n\n    .rev-summer-card__title {\n        margin: 0 0 20px 0;\n        font-size: 24px;\n        font-weight: 800;\n        line-height: 1.15;\n        text-transform: uppercase;\n        letter-spacing: -0.3px;\n    }\n\n    .rev-summer-card__pricing {\n        display: flex;\n        align-items: baseline;\n        gap: 14px;\n        margin-bottom: 18px;\n    }\n\n    .rev-summer-card__current-price {\n        font-size: 46px;\n        font-weight: 800;\n        line-height: 1;\n        letter-spacing: -1px;\n        font-family: 'Qualy', 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n    }\n\n    .rev-summer-card__original-price {\n        font-size: 20px;\n        font-weight: 700;\n        color: #777777;\n        text-decoration: line-through;\n        text-decoration-thickness: 2px;\n        font-family: 'Qualy', 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n    }\n\n    .rev-summer-card__saving {\n        display: inline-flex;\n        align-self: flex-start;\n        margin-bottom: 22px;\n        padding: 7px 10px;\n        background-color: #000000;\n        color: #ffffff;\n        font-size: 10px;\n        font-weight: 800;\n        text-transform: uppercase;\n        letter-spacing: 1.3px;\n        display: none;\n    }\n\n    .rev-summer-card__copy {\n        margin: 0 0 28px 0;\n        font-size: 14px;\n        line-height: 1.7;\n        color: #444444;\n    }\n\n    .rev-summer-card__meta {\n        margin: auto 0 24px 0;\n        padding-top: 20px;\n        border-top: 1px solid #e5e5e5;\n        font-size: 13px;\n        line-height: 1.6;\n        color: #333333;\n    }\n\n    .rev-summer-card__meta strong {\n        color: #000000;\n    }\n\n    .rev-summer-card__button {\n        display: inline-block;\n        width: 100%;\n        box-sizing: border-box;\n        background-color: #ffffff;\n        color: #000000;\n        border: 1px solid #000000;\n        font-size: 12px;\n        font-weight: 800;\n        text-transform: uppercase;\n        letter-spacing: 2px;\n        padding: 14px 24px;\n        cursor: pointer;\n        transition: all 0.25s ease;\n        text-align: center;\n        text-decoration: none;\n        white-space: nowrap;\n    }\n\n    .rev-summer-card__button:hover {\n        background-color: #000000;\n        color: #ffffff;\n    }\n\n    .rev-summer-offer__note {\n        max-width: 760px;\n        margin: 42px auto 0 auto;\n        text-align: center;\n        font-size: 13px;\n        line-height: 1.6;\n        color: #555555;\n    }\n\n    @media (max-width: 900px) {\n        .rev-summer-offer__grid {\n            grid-template-columns: 1fr;\n            max-width: 560px;\n            margin: 0 auto;\n        }\n\n        .rev-summer-card__body {\n            padding: 28px 24px;\n        }\n    }\n\n    @media (max-width: 480px) {\n        .rev-summer-offer {\n            padding: 56px 18px;\n        }\n\n        .rev-summer-card__current-price {\n            font-size: 40px;\n        }\n\n        .rev-summer-card__original-price {\n            font-size: 18px;\n        }\n    }\n<\/style>\n\n<section class=\"rev-summer-offer\">\n\n\n    <div class=\"rev-summer-offer__grid\">\n\n        <article class=\"rev-summer-card\">\n            <div class=\"rev-summer-card__badge\">\n                \u00a315.00 per class\n            <\/div>\n\n            <div class=\"rev-summer-card__body\">\n                <p class=\"rev-summer-card__label\">Rev Summer Series<\/p>\n\n                <h2 class=\"rev-summer-card__title\">\n                    3 Class Pack\n                <\/h2>\n\n                <div class=\"rev-summer-card__pricing\">\n                    <span class=\"rev-summer-card__current-price\">\u00a345<\/span>\n                    <span class=\"rev-summer-card__original-price\">\u00a348<\/span>\n                <\/div>\n\n                <span class=\"rev-summer-card__saving\">\n                    Summer Series Price\n                <\/span>\n\n                <p class=\"rev-summer-card__copy\">\n                    Three credits to elevate your training. 3 x Spin \/ Reformer \/ Reset \/ Strength \/ Infrared Sculpt Credits.\n                <\/p>\n\n                <p class=\"rev-summer-card__meta\">\n                    <strong>Includes:<\/strong> 3 classes<br>\n                    <strong>Premium access:<\/strong> No membership required\n                <\/p>\n\n                <a href=\"\/ar\/pricing\/\" class=\"rev-summer-card__button rev-summer-dynamic-btn\" data-product-id=\"credits-15995\">\n                    Purchase 3 Pack\n                <\/a>\n            <\/div>\n        <\/article>\n\n        <article class=\"rev-summer-card\">\n            <div class=\"rev-summer-card__badge\">\n                \u00a313.80 per class\n            <\/div>\n\n            <div class=\"rev-summer-card__body\">\n                <p class=\"rev-summer-card__label\">Rev Summer Series<\/p>\n\n                <h2 class=\"rev-summer-card__title\">\n                    5 Class Pack\n                <\/h2>\n\n                <div class=\"rev-summer-card__pricing\">\n                    <span class=\"rev-summer-card__current-price\">\u00a369<\/span>\n                    <span class=\"rev-summer-card__original-price\">\u00a375<\/span>\n                <\/div>\n\n                <span class=\"rev-summer-card__saving\">\n                    Save \u00a36\n                <\/span>\n\n                <p class=\"rev-summer-card__copy\">\n                    Five credits to elevate your training. 5 x Spin \/ Reformer \/ Reset \/ Strength \/ Infrared Sculpt Credits.\n                <\/p>\n\n                <p class=\"rev-summer-card__meta\">\n                    <strong>Includes:<\/strong> 5 classes<br>\n                    <strong>Premium access:<\/strong> No membership required\n                <\/p>\n\n                <a href=\"\/ar\/pricing\/\" class=\"rev-summer-card__button rev-summer-dynamic-btn\" data-product-id=\"credits-15999\">\n                    Purchase 5 Pack\n                <\/a>\n            <\/div>\n        <\/article>\n\n        <article class=\"rev-summer-card\">\n            <div class=\"rev-summer-card__badge\">\n                \u00a312.90 per class\n            <\/div>\n\n            <div class=\"rev-summer-card__body\">\n                <p class=\"rev-summer-card__label\">Rev Summer Series<\/p>\n\n                <h2 class=\"rev-summer-card__title\">\n                    10 Class Pack\n                <\/h2>\n\n                <div class=\"rev-summer-card__pricing\">\n                    <span class=\"rev-summer-card__current-price\">\u00a3129<\/span>\n                    <span class=\"rev-summer-card__original-price\">\u00a3140<\/span>\n                <\/div>\n\n                <span class=\"rev-summer-card__saving\">\n                    Save \u00a311\n                <\/span>\n\n                <p class=\"rev-summer-card__copy\">\n                    Ten credits to elevate your training. 10 x Spin \/ Reformer \/ Reset \/ Strength \/ Infrared Sculpt Credits.\n                <\/p>\n\n                <p class=\"rev-summer-card__meta\">\n                    <strong>Includes:<\/strong> 10 classes<br>\n                    <strong>Premium access:<\/strong> No membership required\n                <\/p>\n\n                <a href=\"\/ar\/pricing\/\" class=\"rev-summer-card__button rev-summer-dynamic-btn\" data-product-id=\"credits-15987\">\n                    Purchase 10 Pack\n                <\/a>\n            <\/div>\n        <\/article>\n\n    <\/div>\n\n    <p class=\"rev-summer-offer__note\">\n        Available for a limited time only. Credits are valid for eligible Revolution Studio classes and are subject to standard booking terms.\n    <\/p>\n<\/section>\n\n<script>\n(function () {\n    var DEBUG_PREFIX = '[Rev Summer Offer]';\n\n    var SITE_LOCATION_STORAGE_KEY = 'city';\n    var MT_STORAGE_KEY = 'mt.https:\/\/revolution.marianatek.com';\n\n    var FALLBACK_URL = '\/pricing\/';\n    var BUTTON_SELECTOR = '.rev-summer-offer .rev-summer-dynamic-btn';\n\n    var OFFER_LOCATION_MAP = {\n        'kirkintilloch': {\n            locationId: '49060',\n            sectionId: '1943'\n        },\n        'east-kilbride': {\n            locationId: '48796',\n            sectionId: '1939'\n        },\n        'stirling': {\n            locationId: '48929',\n            sectionId: '1946'\n        },\n        'edinburgh-city-centre': {\n            locationId: '48994',\n            sectionId: '1947'\n        },\n        'edinburgh': {\n            locationId: '48994',\n            sectionId: '1947'\n        },\n        'airdrie': {\n            locationId: '48724',\n            sectionId: '1937'\n        },\n        'glasgow-west-end': {\n            locationId: '48722',\n            sectionId: '1942'\n        },\n        'west-end': {\n            locationId: '48722',\n            sectionId: '1942'\n        },\n        'cumbernauld': {\n            locationId: '48728',\n            sectionId: '1938'\n        },\n        'glasgow-city-centre': {\n            locationId: '48720',\n            sectionId: '1940'\n        },\n        'city-centre': {\n            locationId: '48720',\n            sectionId: '1940'\n        },\n        'livingston': {\n            locationId: '48726',\n            sectionId: '1944'\n        },\n        'glasgow-southside': {\n            locationId: '48718',\n            sectionId: '1941'\n        },\n        'southside': {\n            locationId: '48718',\n            sectionId: '1941'\n        },\n        'paisley': {\n            locationId: '48863',\n            sectionId: '1945'\n        }\n    };\n\n    function log() {\n        console.log.apply(console, [DEBUG_PREFIX].concat(Array.prototype.slice.call(arguments)));\n    }\n\n    function warn() {\n        console.warn.apply(console, [DEBUG_PREFIX].concat(Array.prototype.slice.call(arguments)));\n    }\n\n    function normalizeSlug(value) {\n        if (!value) {\n            return '';\n        }\n\n        return String(value)\n            .trim()\n            .toLowerCase()\n            .replace(\/&\/g, 'and')\n            .replace(\/[^a-z0-9]+\/g, '-')\n            .replace(\/^-+|-+$\/g, '');\n    }\n\n    function getSiteCitySlug() {\n        var rawValue = window.localStorage.getItem(SITE_LOCATION_STORAGE_KEY);\n\n        log('Raw site city value:', rawValue);\n\n        if (!rawValue) {\n            return '';\n        }\n\n        var slug = normalizeSlug(rawValue);\n\n        log('Normalized site city slug:', slug);\n\n        return slug;\n    }\n\n    function getMarianaTekSlug() {\n        try {\n            var rawValue = window.localStorage.getItem(MT_STORAGE_KEY);\n\n            log('Raw Mariana Tek value:', rawValue);\n\n            if (!rawValue) {\n                return '';\n            }\n\n            var mtData = JSON.parse(rawValue);\n\n            if (!mtData || !mtData.locationName) {\n                return '';\n            }\n\n            var slug = normalizeSlug(mtData.locationName);\n\n            log('Normalized Mariana Tek location slug:', slug);\n\n            return slug;\n        } catch (error) {\n            warn('Could not parse Mariana Tek storage:', error);\n            return '';\n        }\n    }\n\n    function getLocationConfig() {\n        var siteCitySlug = getSiteCitySlug();\n\n        if (siteCitySlug && OFFER_LOCATION_MAP[siteCitySlug]) {\n            log('Matched location from site city:', siteCitySlug);\n            return OFFER_LOCATION_MAP[siteCitySlug];\n        }\n\n        if (siteCitySlug) {\n            warn('Site city exists but no mapping found:', siteCitySlug);\n        }\n\n        var mtSlug = getMarianaTekSlug();\n\n        if (mtSlug && OFFER_LOCATION_MAP[mtSlug]) {\n            log('Matched location from Mariana Tek:', mtSlug);\n            return OFFER_LOCATION_MAP[mtSlug];\n        }\n\n        if (mtSlug) {\n            warn('Mariana Tek location exists but no mapping found:', mtSlug);\n        }\n\n        warn('No valid location match found. Using fallback.');\n        return null;\n    }\n\n    function buildOfferUrl(productId) {\n        var locationConfig = getLocationConfig();\n\n        if (!locationConfig || !locationConfig.locationId || !locationConfig.sectionId || !productId) {\n            return FALLBACK_URL;\n        }\n\n        var mtPath = '\/buy\/' + locationConfig.locationId + '?activeProduct=' + productId + '&activeSection=' + locationConfig.sectionId;\n        var offerUrl = '\/pricing\/?_mt=' + encodeURIComponent(mtPath) + '&country=uk';\n\n        log('Built dynamic offer URL:', offerUrl);\n\n        return offerUrl;\n    }\n\n    function initSummerOfferButtons() {\n        var buttons = document.querySelectorAll(BUTTON_SELECTOR);\n\n        if (!buttons.length) {\n            warn('No buttons found:', BUTTON_SELECTOR);\n            return;\n        }\n\n        buttons.forEach(function (button) {\n            var productId = button.getAttribute('data-product-id');\n            var initialUrl = buildOfferUrl(productId);\n\n            button.setAttribute('href', initialUrl);\n\n            if (button.dataset.revSummerOfferBound === 'true') {\n                return;\n            }\n\n            button.dataset.revSummerOfferBound = 'true';\n\n            button.addEventListener('click', function (event) {\n                var finalUrl = buildOfferUrl(productId);\n\n                log('Redirecting to:', finalUrl);\n\n                event.preventDefault();\n                window.location.href = finalUrl;\n            });\n        });\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initSummerOfferButtons);\n    } else {\n        initSummerOfferButtons();\n    }\n})();\n<\/script>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-global-padding is-layout-constrained wp-container-core-group-is-layout-8cf8ed17 wp-block-group-is-layout-constrained\" style=\"margin-top:0px;margin-bottom:0;padding-top:var(--wp--preset--spacing--x-large);padding-right:30px;padding-bottom:var(--wp--preset--spacing--x-large);padding-left:30px\">\n<div class=\"wp-block-group alignwide has-global-padding is-layout-constrained wp-container-core-group-is-layout-3da7f8db wp-block-group-is-layout-constrained\">\n<h6 class=\"wp-block-heading has-text-align-center\" style=\"font-style:normal;font-weight:700\">\u062a\u062f\u0631\u064a\u0628 \u0627\u0644\u062e\u0628\u0631\u0627\u0621. \u0642\u0648\u0627\u0626\u0645 \u062a\u0634\u063a\u064a\u0644 \u0645\u062e\u0635\u0651\u0635\u0629 \u062d\u0633\u0628 \u0627\u0644\u0637\u0644\u0628. <\/h6>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-f81ac3a927cc7fce78b7231ef72b5c21\" id=\"image-heading-text-button-1\" style=\"color:#000000;margin-bottom:0;font-style:normal;font-weight:700;line-height:1.5\">\u0623\u0631\u0628\u0639\u0629 \u062a\u0645\u0627\u0631\u064a\u0646 \u0631\u064a\u0627\u0636\u064a\u0629 \u0645\u0645\u064a\u0632\u0629<\/h2>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Everything you need to get stronger, fitter, and feel unstoppable.<\/p>\n<\/div>\n\n\n\n<div style=\"height:52px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-002ffff5 wp-block-columns-is-layout-flex\" id=\"column-four-image\">\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-a45e5a0b wp-block-column-is-layout-flow\" style=\"flex-basis:250px\">\n<div class=\"wp-block-cover\" style=\"min-height:300px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"800\" class=\"wp-block-cover__image-background wp-image-4246 size-full\" alt=\"\" src=\"https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/PHOTO-2025-07-31-20-27-30.jpg\" data-object-fit=\"cover\" srcset=\"https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/PHOTO-2025-07-31-20-27-30.jpg 1200w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/PHOTO-2025-07-31-20-27-30-300x200.jpg 300w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/PHOTO-2025-07-31-20-27-30-1024x683.jpg 1024w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/PHOTO-2025-07-31-20-27-30-768x512.jpg 768w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/PHOTO-2025-07-31-20-27-30-18x12.jpg 18w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-contrast-background-color has-background-dim-20 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<h3 class=\"wp-block-heading has-text-align-center has-base-color has-text-color has-link-color wp-elements-924fdee0cb7ed64d27e5570a3e3ce458\" style=\"font-style:normal;font-weight:700;line-height:1.5\"><a href=\"#book-now\">\u0627\u0644\u0645\u0635\u0644\u062d<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-center has-base-color has-text-color has-link-color wp-elements-bf670906deab62a069cab744b0392049 wp-block-paragraph\">\u0627\u0644\u0645\u0635\u0644\u062d \u0627\u0644\u0645\u0631\u062a\u0641\u0639.<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-a45e5a0b wp-block-column-is-layout-flow\" style=\"flex-basis:250px\">\n<div class=\"wp-block-cover\" style=\"min-height:300px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"800\" class=\"wp-block-cover__image-background wp-image-4242 size-full\" alt=\"\" src=\"https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/IMG_3847.jpg\" data-object-fit=\"cover\" srcset=\"https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/IMG_3847.jpg 1200w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/IMG_3847-300x200.jpg 300w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/IMG_3847-1024x683.jpg 1024w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/IMG_3847-768x512.jpg 768w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/IMG_3847-18x12.jpg 18w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-contrast-background-color has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<h3 class=\"wp-block-heading has-text-align-center has-base-color has-text-color has-link-color wp-elements-620f7a4bc699b39ec5fbb3be0943a864\" style=\"font-style:normal;font-weight:700;line-height:1.5\"><a href=\"#book-now\">\u0627\u0644\u062f\u0648\u0631\u0629<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-center has-base-color has-text-color has-link-color wp-elements-292e29fe06474c6b5ea215f90cf95ed5 wp-block-paragraph\" style=\"margin-right:-20px;margin-left:-20px;padding-right:0px;padding-left:0px\">&nbsp;\u0623\u0643\u062b\u0631 \u0645\u0646 \u0645\u062c\u0631\u062f \u062f\u0648\u0631\u0627\u0646 ... \u0625\u0646\u0647\u0627 \u062b\u0648\u0631\u0629! <\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-a45e5a0b wp-block-column-is-layout-flow\" style=\"flex-basis:250px\">\n<div class=\"wp-block-cover\" style=\"min-height:300px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"800\" class=\"wp-block-cover__image-background wp-image-4243 size-full\" alt=\"\" src=\"https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/V9A7573.jpg\" data-object-fit=\"cover\" srcset=\"https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/V9A7573.jpg 1200w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/V9A7573-300x200.jpg 300w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/V9A7573-1024x683.jpg 1024w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/V9A7573-768x512.jpg 768w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2025\/08\/V9A7573-18x12.jpg 18w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-contrast-background-color has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<h3 class=\"wp-block-heading has-text-align-center has-base-color has-text-color has-link-color wp-elements-8a75d97ef5e9a3bf0cf8b2af335c5766\" style=\"font-style:normal;font-weight:700;line-height:1.5\"><a href=\"#book-now\">\u0627\u0644\u0642\u0648\u0629<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-center has-base-color has-text-color has-link-color wp-elements-33b222a77fc2a7b99266fc42e75baf04 wp-block-paragraph\">\u0623\u0642\u0648\u0649. \u0623\u0643\u062b\u0631 \u0644\u064a\u0627\u0642\u0629. \u0623\u0633\u0631\u0639.<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-a45e5a0b wp-block-column-is-layout-flow\" style=\"flex-basis:250px\">\n<div class=\"wp-block-cover\" style=\"min-height:300px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1066\" height=\"1600\" class=\"wp-block-cover__image-background wp-image-6486 size-full\" alt=\"\" src=\"https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2026\/01\/d51df490-278d-4fd0-8731-6c7a680c9797.jpg\" style=\"object-position:46% 72%\" data-object-fit=\"cover\" data-object-position=\"46% 72%\" srcset=\"https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2026\/01\/d51df490-278d-4fd0-8731-6c7a680c9797.jpg 1066w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2026\/01\/d51df490-278d-4fd0-8731-6c7a680c9797-200x300.jpg 200w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2026\/01\/d51df490-278d-4fd0-8731-6c7a680c9797-682x1024.jpg 682w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2026\/01\/d51df490-278d-4fd0-8731-6c7a680c9797-768x1153.jpg 768w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2026\/01\/d51df490-278d-4fd0-8731-6c7a680c9797-1023x1536.jpg 1023w, https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2026\/01\/d51df490-278d-4fd0-8731-6c7a680c9797-8x12.jpg 8w\" sizes=\"auto, (max-width: 1066px) 100vw, 1066px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-contrast-background-color has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<h3 class=\"wp-block-heading has-text-align-center has-base-color has-text-color has-link-color wp-elements-5bd40f696ff8bea53dca547977a837a6\" style=\"font-style:normal;font-weight:700;line-height:1.5\"><a href=\"#book-now\">Infrared Sculpt<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-center has-base-color has-text-color has-link-color wp-elements-b194af7282bfa9620fd961b91ef0218f wp-block-paragraph\">Infrared heat. Serious sweat.<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-contrast-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-8cf8ed17 wp-block-group-is-layout-constrained\" style=\"margin-top:0px;margin-bottom:0;padding-top:var(--wp--preset--spacing--x-large);padding-right:30px;padding-bottom:var(--wp--preset--spacing--x-large);padding-left:30px\">\n<div class=\"wp-block-group alignwide has-global-padding is-layout-constrained wp-container-core-group-is-layout-3da7f8db wp-block-group-is-layout-constrained\">\n<h6 class=\"wp-block-heading has-text-align-center has-base-color has-text-color has-link-color wp-elements-98a6ad661819228e1c6d5aac3b5789ce\" style=\"font-style:normal;font-weight:700\">UK WIDE<\/h6>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-base-color has-text-color has-link-color wp-elements-84a892682e0bd9b77a0c20abd7a5c9b9\" id=\"image-heading-text-button-1\" style=\"margin-bottom:0;font-style:normal;font-weight:700;line-height:1.5\">FIND YOUR LOCAL CLUB<\/h2>\n\n\n\n<p class=\"has-text-align-center has-base-color has-text-color has-link-color wp-elements-5ea37b0618d4936446f6e8e2659a01d9 wp-block-paragraph\">WE&#8217;RE NEVER FAR AWAY<\/p>\n<\/div>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<!-- ==========================================\n     REVOLUTION STUDIO - PREMIUM LOCATION MAP (WORDPRESS COMPATIBLE - DARK THEME)\n     ========================================== -->\n\n<!-- Leaflet CSS for Grayscale Interactive Map -->\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\" integrity=\"sha256-p4NxAoJBhIIN+hmNHrzRCf9tD\/miZyoHS5obTRR9BMY=\" crossorigin=\"\">\n\n<style>\n    \/* Scoped Container to prevent WP Theme leakage *\/\n    .rev-map-block {\n        width: 100%;\n        max-width: 1100px;\n        margin: 2rem auto;\n        box-sizing: border-box;\n        font-family: 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n        color: #ffffff;\n        -webkit-font-smoothing: antialiased;\n        position: relative;\n        background-color: #131212;\n    }\n\n    \/* Wrap selector pills with absolute positioned fade indicators matching dark page background *\/\n    .rev-map-pills-wrapper {\n        position: relative;\n        width: 100%;\n        margin-bottom: 16px;\n    }\n\n    \/* Gradient Fades for Scroll Overflow Indicators matching #131212 *\/\n    .rev-map-fade {\n        position: absolute;\n        top: 0;\n        bottom: 12px; \/* Aligns with the padding-bottom of the scrollbar *\/\n        width: 45px;\n        pointer-events: none;\n        z-index: 10;\n        transition: opacity 0.3s cubic-bezier(0.25, 1, 0.5, 1);\n        opacity: 0;\n    }\n\n    .rev-map-fade-left {\n        left: 0;\n        background: linear-gradient(to right, #131212 15%, rgba(19, 18, 18, 0));\n    }\n\n    .rev-map-fade-right {\n        right: 0;\n        background: linear-gradient(to left, #131212 15%, rgba(19, 18, 18, 0));\n    }\n\n    \/* Studio Selector Pills Row *\/\n    .rev-map-pills-container {\n        display: flex;\n        gap: 8px;\n        overflow-x: auto;\n        padding-bottom: 12px;\n        margin-bottom: 0;\n        scrollbar-width: none; \/* Hide scrollbar Firefox *\/\n        scroll-behavior: smooth; \/* Ensures auto-centering transition is fluid *\/\n        position: relative;\n    }\n    .rev-map-pills-container::-webkit-scrollbar {\n        display: none; \/* Hide scrollbar Chrome\/Safari\/Edge *\/\n    }\n\n    .rev-map-pill {\n        background-color: #1a1a1a;\n        color: #ffffff;\n        border: 1px solid #ffffff;\n        padding: 8px 16px;\n        font-size: 11px;\n        font-weight: 700;\n        text-transform: uppercase;\n        letter-spacing: 1px;\n        white-space: nowrap;\n        cursor: pointer;\n        transition: all 0.2s ease;\n        flex-shrink: 0; \/* Ensures buttons don't compress *\/\n    }\n\n    .rev-map-pill:hover, .rev-map-pill.active {\n        background-color: #ffffff;\n        color: #131212;\n    }\n\n    \/* Map Viewport Frame *\/\n    .rev-map-frame {\n        position: relative;\n        width: 100%;\n        height: 500px;\n        border: 1px solid #ffffff;\n        background-color: #131212;\n        overflow: hidden;\n    }\n\n    \/* Custom Grayscale Map tile positioning styling *\/\n    .rev-map-viewport {\n        width: 100%;\n        height: 100%;\n        background-color: #e5e5e5;\n        filter: grayscale(1) invert(0.05) contrast(1.1);\n    }\n\n    \/* Custom Compact Rectangular Logo Pin Style *\/\n    .rev-custom-marker {\n        position: relative;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        width: 44px !important;\n        height: 32px !important;\n        background-color: #ffffff;\n        border: 1px solid #000000;\n        box-shadow: 0 3px 8px rgba(0, 0, 0, 0.3);\n        cursor: pointer;\n        transition: all 0.25s cubic-bezier(0.25, 0.8, 0.25, 1);\n        padding: 2px;\n        box-sizing: border-box;\n    }\n\n    \/* Bottom Arrow Pointer for Pin *\/\n    .rev-custom-marker::after {\n        content: '';\n        position: absolute;\n        bottom: -5px;\n        left: 50%;\n        transform: translateX(-50%);\n        border-width: 5px 5px 0;\n        border-style: solid;\n        border-color: #000000 transparent;\n        display: block;\n        width: 0;\n    }\n\n    .rev-custom-marker img {\n        width: 100%;\n        height: 100%;\n        object-fit: contain;\n        display: block;\n    }\n\n    \/* Active State for selected Logo Pin *\/\n    .rev-custom-marker.active-pin {\n        transform: scale(1.15) translateY(-3px);\n        border: 2px solid #ffffff;\n        box-shadow: 0 6px 15px rgba(255, 255, 255, 0.2);\n    }\n\n    .rev-custom-marker.active-pin::after {\n        bottom: -7px;\n        border-color: #ffffff transparent;\n    }\n\n    \/* Interactive Details Popup Card (Sleek Dark Overlay Mode) *\/\n    .rev-info-overlay {\n        position: absolute;\n        bottom: 20px;\n        left: 20px;\n        right: 20px;\n        z-index: 1000;\n        background-color: #1a1a1a;\n        border: 1px solid #ffffff;\n        padding: 24px;\n        box-shadow: 0 10px 30px rgba(0,0,0,0.5);\n        display: none;\n        flex-direction: column;\n        transition: all 0.3s ease;\n        animation: slideUp 0.35s cubic-bezier(0.16, 1, 0.3, 1);\n    }\n\n    @keyframes slideUp {\n        from { transform: translateY(20px); opacity: 0; }\n        to { transform: translateY(0); opacity: 1; }\n    }\n\n    .rev-info-header {\n        display: flex;\n        justify-content: space-between;\n        align-items: flex-start;\n        margin-bottom: 8px;\n    }\n\n    .rev-info-title {\n        font-size: 20px;\n        font-weight: 800;\n        text-transform: uppercase;\n        margin: 0;\n        letter-spacing: -0.5px;\n        color: #ffffff;\n    }\n\n    .rev-info-close {\n        background: none;\n        border: none;\n        font-size: 20px;\n        cursor: pointer;\n        color: #aaaaaa;\n        padding: 0;\n        line-height: 1;\n    }\n    .rev-info-close:hover {\n        color: #ffffff;\n    }\n\n    .rev-info-address {\n        font-size: 13px;\n        color: #cccccc;\n        line-height: 1.5;\n        margin: 0 0 20px 0;\n    }\n\n    \/* Actions Alignment inside Popup *\/\n    .rev-info-actions {\n        display: flex;\n        gap: 12px;\n        align-items: center;\n    }\n\n    .rev-info-btn-book {\n        flex: 1;\n        background-color: #ffffff;\n        color: #000000;\n        border: 1px solid #ffffff;\n        font-size: 11px;\n        font-weight: 700;\n        text-transform: uppercase;\n        letter-spacing: 1.5px;\n        text-align: center;\n        padding: 12px;\n        text-decoration: none;\n        transition: all 0.2s ease;\n    }\n    .rev-info-btn-book:hover {\n        background-color: transparent;\n        color: #ffffff;\n    }\n\n    .rev-info-btn-directions {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        width: 43px;\n        height: 43px;\n        border: 1px solid #ffffff;\n        background-color: transparent;\n        color: #ffffff;\n        text-decoration: none;\n        transition: all 0.2s ease;\n    }\n    .rev-info-btn-directions:hover {\n        background-color: #ffffff;\n        color: #000000;\n    }\n    .rev-info-btn-directions svg {\n        fill: currentColor;\n    }\n\n    \/* Desktop Viewport Overrides *\/\n    @media (min-width: 768px) {\n        .rev-map-frame {\n            height: 550px;\n        }\n        .rev-info-overlay {\n            width: 360px;\n            bottom: 30px;\n            left: 30px;\n            right: auto;\n        }\n    }\n<\/style>\n\n<div class=\"rev-map-block\">\n\n    <!-- Scroll Wrapper featuring visual blur guides -->\n    <div class=\"rev-map-pills-wrapper\">\n        <div class=\"rev-map-fade rev-map-fade-left\" id=\"rev-fade-left\"><\/div>\n        \n        <!-- Horizontal Studio Selector Pills -->\n        <div class=\"rev-map-pills-container\" id=\"pills-list\">\n            <!-- Generated studio pills will live here dynamically -->\n        <\/div>\n        \n        <div class=\"rev-map-fade rev-map-fade-right\" id=\"rev-fade-right\"><\/div>\n    <\/div>\n\n    <!-- Map Canvas Window -->\n    <div class=\"rev-map-frame\">\n        <div id=\"rev-map-viewport\" class=\"rev-map-viewport\"><\/div>\n\n        <!-- Dynamic Information Drawer (Revolution Studio Minimal Style) -->\n        <div id=\"info-overlay\" class=\"rev-info-overlay\">\n            <div class=\"rev-info-header\">\n                <h4 class=\"rev-info-title\" id=\"info-title\">Studio Name<\/h4>\n                <button class=\"rev-info-close\" onclick=\"closeOverlay()\">\u2715<\/button>\n            <\/div>\n            <p class=\"rev-info-address\" id=\"info-address\">Studio Address<\/p>\n\n            <div class=\"rev-info-actions\">\n                <a href=\"#\" target=\"_blank\" class=\"rev-info-btn-book\" id=\"info-book-link\">\u0627\u062d\u062c\u0632 \u0627\u0644\u0622\u0646<\/a>\n                <a href=\"#\" target=\"_blank\" class=\"rev-info-btn-directions\" id=\"info-directions-link\" title=\"Directions on Google Maps\">\n                    <!-- Dynamic directions arrow icon -->\n                    <svg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                        <path d=\"M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 4C16.41 4 20 7.59 20 12C20 13.91 19.33 15.66 18.23 17.06L14 12.83V9H10V11H12.17L16.29 15.12C15.19 16.91 13.19 18 11 18C7.14 18 4 14.86 4 11C4 7.14 7.14 4 11 4H12Z\"><\/path>\n                        <path d=\"M15 9V11.5L18 8.5L15 5.5V8H11V9H15Z\" fill=\"currentColor\"><\/path>\n                    <\/svg>\n                <\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n\n<\/div>\n\n<!-- Leaflet JavaScript library -->\n<script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\" integrity=\"sha256-20nQCchB9co0qIjJZRGuk2\/Z9VM+kNiyxNV1lvTlZBo=\" crossorigin=\"\"><\/script>\n\n<script>\n    \/\/ Authentic Revolution Studio Locations JSON Feed (Dubai Removed)\n    const studios = [\n        {\n            \"title\": \"Airdrie\",\n            \"address1\": \"Unit 1 - Block 2, Chapelhall Industrial Estate\",\n            \"address2\": \"\",\n            \"coords\": {\n                \"lat\": 55.8501206,\n                \"lng\": -3.9514162\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/airdrie\"\n                }\n            ],\n            \"index\": 0\n        },\n        {\n            \"title\": \"Cumbernauld\",\n            \"address1\": \"10 Badenheath Pl\",\n            \"address2\": \"Westfield\",\n            \"coords\": {\n                \"lat\": 55.9278429,\n                \"lng\": -4.0548321\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/cumbernauld\"\n                }\n            ],\n            \"index\": 1\n        },\n        {\n            \"title\": \"East Kilbride\",\n            \"address1\": \"14 Singer Road\",\n            \"address2\": \"\",\n            \"coords\": {\n                \"lat\": 55.7481937,\n                \"lng\": -4.1708391\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/east-kilbride\"\n                }\n            ],\n            \"index\": 2\n        },\n        {\n            \"title\": \"Edinburgh City Centre\",\n            \"address1\": \"16 Annandale St\",\n            \"address2\": \"\",\n            \"coords\": {\n                \"lat\": 55.960164,\n                \"lng\": -3.184895\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/edinburgh-city-centre\"\n                }\n            ],\n            \"index\": 3\n        },\n        {\n            \"title\": \"Glasgow City Centre\",\n            \"address1\": \"310 St Vincent Street\",\n            \"address2\": \"\",\n            \"coords\": {\n                \"lat\": 55.8629898,\n                \"lng\": -4.2678413\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/glasgow-city-centre\"\n                }\n            ],\n            \"index\": 4\n        },\n        {\n            \"title\": \"Glasgow Southside\",\n            \"address1\": \"28 Cogan Street\",\n            \"address2\": \"\",\n            \"coords\": {\n                \"lat\": 55.8217144,\n                \"lng\": -4.2987447\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/glasgow-southside\"\n                }\n            ],\n            \"index\": 5\n        },\n        {\n            \"title\": \"Glasgow West End\",\n            \"address1\": \"1 Dowanside Lane\",\n            \"address2\": \"\",\n            \"coords\": {\n                \"lat\": 55.8751391,\n                \"lng\": -4.2944797\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/glasgow-west-end\"\n                }\n            ],\n            \"index\": 6\n        },\n        {\n            \"title\": \"Kirkintilloch\",\n            \"address1\": \"Unit 8, 15 Campsie Rd\",\n            \"address2\": \"\",\n            \"coords\": {\n                \"lat\": 55.94195,\n                \"lng\": -4.164408\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/kirkintilloch\"\n                }\n            ],\n            \"index\": 7\n        },\n        {\n            \"title\": \"Livingston\",\n            \"address1\": \"The Parkway Retail Square\",\n            \"address2\": \"Livingston\",\n            \"coords\": {\n                \"lat\": 55.8847119,\n                \"lng\": -3.518345\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/livingston\"\n                }\n            ],\n            \"index\": 8\n        },\n        {\n            \"title\": \"Paisley\",\n            \"address1\": \"64-74 Abercorn Street\",\n            \"address2\": \"\",\n            \"coords\": {\n                \"lat\": 55.851606,\n                \"lng\": -4.420969\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/paisley\"\n                }\n            ],\n            \"index\": 9\n        },\n        {\n            \"title\": \"Stirling\",\n            \"address1\": \"Unit 1, 15 Borrowmeadow Road\",\n            \"address2\": \"\",\n            \"coords\": {\n                \"lat\": 56.116817,\n                \"lng\": -3.915356\n            },\n            \"actions\": [\n                {\n                    \"label\": \"Book now\",\n                    \"defaultUrl\": \"\/location\/stirling\"\n                }\n            ],\n            \"index\": 10\n        }\n    ];\n\n    let map;\n    let markers = [];\n\n    \/\/ Tracks and displays\/hides left and right visual scroll gradients dynamically\n    function updateScrollFades() {\n        const container = document.getElementById('pills-list');\n        const fadeLeft = document.getElementById('rev-fade-left');\n        const fadeRight = document.getElementById('rev-fade-right');\n        \n        if (!container || !fadeLeft || !fadeRight) return;\n        \n        const scrollLeft = container.scrollLeft;\n        const maxScroll = container.scrollWidth - container.clientWidth;\n        \n        \/\/ Show left fade when scrolled inward\n        if (scrollLeft > 3) {\n            fadeLeft.style.opacity = '1';\n        } else {\n            fadeLeft.style.opacity = '0';\n        }\n        \n        \/\/ Show right fade when there are remaining elements obscured on the right\n        if (scrollLeft < maxScroll - 3) {\n            fadeRight.style.opacity = '1';\n        } else {\n            fadeRight.style.opacity = '0';\n        }\n    }\n\n    \/\/ Initialize Map Viewport\n    function initMap() {\n        \/\/ Positioned and zoomed in beautifully on the Scottish cluster\n        map = L.map('rev-map-viewport', {\n            zoomControl: false,\n            attributionControl: false\n        }).setView([55.882, -4.030], 9.5);\n\n        \/\/ Reverted back to the crisp Light-Mode Monochrome tile scheme\n        L.tileLayer('https:\/\/{s}.basemaps.cartocdn.com\/rastertiles\/light_all\/{z}\/{x}\/{y}.png', {\n            maxZoom: 18\n        }).addTo(map);\n\n        const pillsList = document.getElementById('pills-list');\n        \n        studios.forEach((studio, i) => {\n            \/\/ 1. Generate Navigation Pills dynamically\n            const pill = document.createElement('button');\n            pill.className = 'rev-map-pill';\n            pill.innerText = studio.title;\n            pill.id = `pill-${i}`;\n            pill.onclick = () => selectStudio(i);\n            pillsList.appendChild(pill);\n\n            \/\/ 2. Build Compact Logo Card Marker (44x32px box + pointer offset)\n            const customIcon = L.divIcon({\n                className: '', \n                html: `\n                    <div class=\"rev-custom-marker\" id=\"marker-${i}\">\n                        <img decoding=\"async\" src=\"https:\/\/revolutionstudio.co.uk\/wp-content\/uploads\/2023\/02\/Logo-RS-Rectangular-01-300x200-1.png\" alt=\"Revolution Studio Pin\" \/>\n                    <\/div>\n                `,\n                iconSize: [44, 37], \/\/ width 44px, height 32px + 5px arrow\n                iconAnchor: [22, 37] \/\/ anchor pointing exactly at the bottom center arrow tip\n            });\n\n            \/\/ 3. Mount interactive Marker on Leaflet canvas\n            const marker = L.marker([studio.coords.lat, studio.coords.lng], { icon: customIcon }).addTo(map);\n            marker.on('click', () => {\n                selectStudio(i);\n            });\n\n            markers.push(marker);\n        });\n\n        \/\/ Initialize scroll fading positions once list loads\n        setTimeout(updateScrollFades, 200);\n\n        \/\/ Bind scroll fade listener\n        pillsList.addEventListener('scroll', updateScrollFades);\n        window.addEventListener('resize', updateScrollFades);\n    }\n\n    \/\/ Studio Selection Action Dispatcher\n    function selectStudio(i) {\n        const studio = studios[i];\n\n        \/\/ Highlight Selected Pill element and ALWAYS scroll it to the center of the list\n        document.querySelectorAll('.rev-map-pill').forEach(pill => pill.classList.remove('active'));\n        const activePill = document.getElementById(`pill-${i}`);\n        if (activePill) {\n            activePill.classList.add('active');\n            \n            \/\/ Forces smooth center alignment inside the wrapper window\n            activePill.scrollIntoView({ \n                behavior: 'smooth', \n                block: 'nearest', \n                inline: 'center' \n            });\n        }\n\n        \/\/ Highlight selected Dynamic Brand Logo Pin\n        document.querySelectorAll('.rev-custom-marker').forEach(pin => pin.classList.remove('active-pin'));\n        setTimeout(() => {\n            const activePin = document.getElementById(`marker-${i}`);\n            if (activePin) activePin.classList.add('active-pin');\n        }, 50);\n\n        \/\/ Map settings targeting Scotland locations\n        const targetZoom = 12;\n        const offsetLat = window.innerWidth < 768 ? 0.04 : 0.015;\n\n        \/\/ Fly smoothly to target latitude &#038; longitude\n        if (map) {\n            map.flyTo([studio.coords.lat - offsetLat, studio.coords.lng], targetZoom, {\n                animate: true,\n                duration: 1.2\n            });\n        }\n\n        \/\/ Populate overlay popup details\n        document.getElementById('info-title').innerText = studio.title;\n        \n        \/\/ Assemble beautiful address text\n        const addressText = studio.address2 \n            ? `${studio.address1}, ${studio.address2}` \n            : studio.address1;\n        document.getElementById('info-address').innerText = addressText;\n\n        \/\/ Map button targets\n        const action = studio.actions[0] || { label: \"Book now\", defaultUrl: \"#\" };\n        const bookBtn = document.getElementById('info-book-link');\n        bookBtn.innerText = action.label;\n        bookBtn.href = action.defaultUrl;\n\n        \/\/ Set dynamic Google Maps directions url\n        document.getElementById('info-directions-link').href = `https:\/\/www.google.com\/maps\/dir\/?api=1&#038;destination=${studio.coords.lat}%2C${studio.coords.lng}`;\n\n        document.getElementById('info-overlay').style.display = 'flex';\n    }\n\n    \/\/ Reset overlay layout and revert camera to overview\n    function closeOverlay() {\n        document.getElementById('info-overlay').style.display = 'none';\n        document.querySelectorAll('.rev-custom-marker').forEach(pin => pin.classList.remove('active-pin'));\n        document.querySelectorAll('.rev-map-pill').forEach(pill => pill.classList.remove('active'));\n        if (map) {\n            map.flyTo([55.882, -4.030], 9.5, {\n                animate: true,\n                duration: 1.0\n            });\n        }\n    }\n\n    \/\/ Safe Leaflet window instancing\n    window.addEventListener('DOMContentLoaded', () => {\n        initMap();\n    });\n<\/script>\n\n\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Rev Summer Series YOUR STRONGEST SUMMER STARTS NOW Offer Limited time summer savings across all credit packs Available for a limited time only View Offer For a limited time, save on our most popular credit packs and keep your momentum going all summer long. \u00a315.00 per class Rev Summer Series 3 Class Pack \u00a345 \u00a348 [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"no-title","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-8875","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/revolutionstudio.co.uk\/ar\/wp-json\/wp\/v2\/pages\/8875","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/revolutionstudio.co.uk\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/revolutionstudio.co.uk\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/revolutionstudio.co.uk\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/revolutionstudio.co.uk\/ar\/wp-json\/wp\/v2\/comments?post=8875"}],"version-history":[{"count":10,"href":"https:\/\/revolutionstudio.co.uk\/ar\/wp-json\/wp\/v2\/pages\/8875\/revisions"}],"predecessor-version":[{"id":8887,"href":"https:\/\/revolutionstudio.co.uk\/ar\/wp-json\/wp\/v2\/pages\/8875\/revisions\/8887"}],"wp:attachment":[{"href":"https:\/\/revolutionstudio.co.uk\/ar\/wp-json\/wp\/v2\/media?parent=8875"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}