{"id":7262,"date":"2025-12-09T22:53:56","date_gmt":"2025-12-09T22:53:56","guid":{"rendered":"https:\/\/bagsandgo.com\/magnifica\/"},"modified":"2025-12-10T15:08:24","modified_gmt":"2025-12-10T15:08:24","slug":"magnifica","status":"publish","type":"page","link":"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/","title":{"rendered":"Servicio de equipajes de MSC Magnifica"},"content":{"rendered":"    \n<div class=\"booking-container msc-cruceros-container\">\n    \n    \n<style>\n\/* MSC Header Styles - Corporate Navy + Orange *\/\n.msc-form-header {\n    background: linear-gradient(135deg, #000033 0%, #000066 100%);\n    padding: 30px 20px;\n    border-radius: 12px 12px 0 0;\n    text-align: center;\n    color: white;\n    position: relative;\n    overflow: hidden;\n}\n\n.msc-form-header::before {\n    content: '';\n    position: absolute;\n    top: 0;\n    right: 0;\n    width: 200px;\n    height: 100%;\n    background: linear-gradient(135deg, transparent 0%, rgba(255, 105, 14, 0.1) 100%);\n    pointer-events: none;\n}\n\n.msc-header-logo {\n    max-height: 60px;\n    max-width: 200px;\n    margin-bottom: 20px;\n    filter: brightness(0) invert(1);\n}\n\n.msc-header-title {\n    font-size: 1.5rem;\n    font-weight: 700;\n    margin: 0 0 8px 0;\n    color: white;\n    line-height: 1.3;\n}\n\n.msc-header-subtitle {\n    font-size: 1rem;\n    opacity: 0.9;\n    margin: 0 0 20px 0;\n    color: rgba(255, 255, 255, 0.9);\n}\n\n.msc-header-badges {\n    display: flex;\n    justify-content: center;\n    gap: 20px;\n    flex-wrap: wrap;\n}\n\n.msc-header-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    background: rgba(255, 105, 14, 0.2);\n    border: 1px solid rgba(255, 105, 14, 0.4);\n    padding: 8px 16px;\n    border-radius: 50px;\n    font-size: 0.875rem;\n    font-weight: 500;\n    color: white;\n}\n\n.msc-header-badge-icon {\n    font-size: 1rem;\n}\n\n\/* MSC Accent line *\/\n.msc-form-header::after {\n    content: '';\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    height: 4px;\n    background: linear-gradient(90deg, #FF690E 0%, #ff8533 50%, #FF690E 100%);\n}\n\n\/* Responsive *\/\n@media (max-width: 768px) {\n    .msc-form-header {\n        padding: 24px 16px;\n    }\n    \n    .msc-header-logo {\n        max-height: 45px;\n    }\n    \n    .msc-header-title {\n        font-size: 1.25rem;\n    }\n    \n    .msc-header-subtitle {\n        font-size: 0.9rem;\n    }\n    \n    .msc-header-badges {\n        gap: 10px;\n    }\n    \n    .msc-header-badge {\n        padding: 6px 12px;\n        font-size: 0.8rem;\n    }\n}\n\n@media (max-width: 480px) {\n    .msc-header-badges {\n        flex-direction: column;\n        align-items: center;\n    }\n}\n<\/style>\n\n<div class=\"msc-form-header\">\n    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/11\/msc-cruceros-logo.svg\" \n         alt=\"MSC Cruceros\" \n         class=\"msc-header-logo\">\n    \n    <h1 class=\"msc-header-title\">Servicios de equipaje BagsAndGo<\/h1>\n    <p class=\"msc-header-subtitle\">Traslado de equipaje en Barcelona para pasajeros MSC<\/p>\n    \n    <div class=\"msc-header-badges\">\n                    <span class=\"msc-header-badge\">\n                <span class=\"msc-header-badge-icon\">\u2713<\/span>\n                Partner oficial            <\/span>\n                    <span class=\"msc-header-badge\">\n                <span class=\"msc-header-badge-icon\">\ud83d\udee1\ufe0f<\/span>\n                Seguro incluido            <\/span>\n                    <span class=\"msc-header-badge\">\n                <span class=\"msc-header-badge-icon\">\ud83d\udea2<\/span>\n                Puerto de Barcelona            <\/span>\n            <\/div>\n<\/div>\n<div class=\"msc-external-notice\">\n    Servicio de equipaje ofrecido por Bags&Go \u2014 partner afiliado de MSC Cruises.<\/div>\n<style>\n.msc-external-notice {\n    text-align: center;\n    font-size: 12px;\n    color: #6b7280;\n    padding: 8px 16px;\n    background: #f9fafb;\n    border-bottom: 1px solid #e5e7eb;\n}\n<\/style>\n\n    <div class=\"booking-content\">\n        <form id=\"booking-form\" \n              class=\"booking-form msc-form\"\n              data-form-id=\"default\" \n              data-product-id=\"6503\"\n              data-form-type=\"msc_magnifica\">\n            \n            <div class=\"booking-steps\">\n                \n<div id=\"step-msc-magnifica\" class=\"step\" data-cruise=\"msc-magnifica\">\n    \n    <h2>Env\u00edo de equipaje \u2013 MSC Magnifica<\/h2>\n    \n    <div class=\"form-global-error form-error-message hidden\" style=\"margin-bottom: 15px;\"><\/div>\n    \n    <!-- Cruise Info -->\n    <div class=\"msc-cruise-banner\">\n        <div class=\"msc-cruise-header\">\n            <span class=\"msc-cruise-icon\">\ud83d\udea2<\/span>\n            <div class=\"msc-cruise-info\">\n                <strong>MSC Magnifica<\/strong>\n                <p>Puerto de Barcelona<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"msc-cruise-dates\">\n            <div class=\"msc-date-item\">\n                <span class=\"msc-date-label\">Embarque<\/span>\n                <span class=\"msc-date-value\">7 enero 2026<\/span>\n            <\/div>\n            <div class=\"msc-date-separator\">\u2192<\/div>\n            <div class=\"msc-date-item\">\n                <span class=\"msc-date-label\">Desembarque<\/span>\n                <span class=\"msc-date-value\">18 mayo 2026<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- ============================================================ -->\n    <!-- SERVICE TYPE -->\n    <!-- ============================================================ -->\n    \n    <div class=\"location-details-label\">Selecciona servicio:<\/div>\n    <div class=\"location-options msc-service-type-options\">\n        \n        <button class=\"location-btn service-type-btn\" data-service=\"casa_barco\" data-price=\"125\" type=\"button\">\n            <span class=\"button-icon\">\ud83c\udfe0\u2192\ud83d\udea2<\/span>\n            <span class=\"service-name\">Domicilio \u2192 Barco<\/span>\n            <span class=\"service-description\">Recogemos en tu domicilio y entregamos en el crucero<\/span>\n            <span class=\"service-price\">125\u20ac\/maleta<\/span>\n        <\/button>\n\n        <button class=\"location-btn service-type-btn\" data-service=\"barco_casa\" data-price=\"125\" type=\"button\">\n            <span class=\"button-icon\">\ud83d\udea2\u2192\ud83c\udfe0<\/span>\n            <span class=\"service-name\">Barco \u2192 Domicilio<\/span>\n            <span class=\"service-description\">Recogemos en el crucero y entregamos en tu domicilio<\/span>\n            <span class=\"service-price\">125\u20ac\/maleta<\/span>\n        <\/button>\n\n        <button class=\"location-btn service-type-btn recommended\" data-service=\"ida_vuelta\" data-price=\"225\" type=\"button\">\n            <span class=\"service-badge\">RECOMENDADO<\/span>\n            <span class=\"button-icon\">\ud83d\udd04<\/span>\n            <span class=\"service-name\">Ida y vuelta<\/span>\n            <span class=\"service-description\">Ambos servicios incluidos<\/span>\n            <span class=\"service-price\">225\u20ac\/maleta<\/span>\n            <span class=\"service-discount\">10% descuento<\/span>\n        <\/button>\n    <\/div>\n\n    <!-- ============================================================ -->\n    <!-- DATE INFO PER SERVICE -->\n    <!-- ============================================================ -->\n    \n    <div id=\"msc-service-info\" class=\"msc-service-info hidden\">\n        <!-- Home \u2192 Ship -->\n        <div id=\"msc-info-casa-barco\" class=\"msc-info-panel hidden\">\n            <div class=\"msc-info-icon\">\ud83d\udce6<\/div>\n            <div class=\"msc-info-content\">\n                <strong>Recogida en domicilio<\/strong>\n                <p>Debes recibir la maleta antes de las <strong>23\/12\/2025<\/strong> para que llegue a tiempo al crucero.<\/p>\n                <p class=\"msc-info-note\">Te enviaremos el material de embalaje con antelaci\u00f3n.<\/p>\n            <\/div>\n        <\/div>\n        \n        <!-- Ship \u2192 Home -->\n        <div id=\"msc-info-barco-casa\" class=\"msc-info-panel hidden\">\n            <div class=\"msc-info-icon\">\ud83c\udfe0<\/div>\n            <div class=\"msc-info-content\">\n                <strong>Entrega en domicilio<\/strong>\n                <p>Recogeremos tu equipaje en el crucero el <strong>18 mayo 2026<\/strong> y lo entregaremos en tu domicilio en 3-5 d\u00edas laborables.<\/p>\n            <\/div>\n        <\/div>\n        \n        <!-- Round Trip -->\n        <div id=\"msc-info-ida-vuelta\" class=\"msc-info-panel hidden\">\n            <div class=\"msc-info-icon\">\ud83d\udd04<\/div>\n            <div class=\"msc-info-content\">\n                <strong>Servicio completo ida y vuelta<\/strong>\n                <p>Incluye recogida en tu domicilio antes del crucero y entrega tras el viaje.<\/p>\n                <ul class=\"msc-info-list\">\n                    <li>Recepci\u00f3n antes de las 23\/12\/2025<\/li>\n                    <li>Vuelta despu\u00e9s de las 18 mayo 2026<\/li>\n                <\/ul>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- ============================================================ -->\n    <!-- PICKUP\/DELIVERY ADDRESS (with Google Maps) -->\n    <!-- ============================================================ -->\n    \n    <div id=\"msc-address-section\" class=\"msc-address-section hidden\">\n        <div class=\"location-details-label\" id=\"msc-address-title\">Tu direcci\u00f3n:<\/div>\n        <div class=\"location-details-section\">\n            <!-- Google Maps address search -->\n            <div class=\"field-group map-search-group\">\n                <label for=\"msc-address-search\">Busca tu direcci\u00f3n: <span class=\"required\">*<\/span><\/label>\n                <input type=\"text\" \n                       name=\"msc_address_search\" \n                       id=\"msc-address-search\" \n                       class=\"msc-map-search\"\n                       placeholder=\"Escribe tu direcci\u00f3n completa...\" \n                       autocomplete=\"off\"\n                       required>\n                <small class=\"field-hint\">Selecciona de la lista o haz clic en el mapa<\/small>\n            <\/div>\n            \n            <!-- Interactive map -->\n            <div class=\"map-wrapper\">\n                <div id=\"msc-map-container\" class=\"map-container msc-map\" style=\"height: 280px;\"><\/div>\n            <\/div>\n            \n            <!-- Auto-filled fields (collapsed) -->\n            <div class=\"msc-address-details\" id=\"msc-address-details\">\n                <div class=\"address-fields-row\">\n                    <div class=\"field-group address-street-full\">\n                        <label for=\"msc-address-street\">Direcci\u00f3n<\/label>\n                        <input type=\"text\"\n                               name=\"msc_address_street\"\n                               id=\"msc-address-street\"\n                               placeholder=\"Direcci\u00f3n completa\"\n                               readonly>\n                    <\/div>\n                <\/div>\n                <div class=\"address-fields-row three-cols\">\n                    <div class=\"field-group address-city\">\n                        <label for=\"msc-address-city\">Ciudad<\/label>\n                        <input type=\"text\"\n                               name=\"msc_address_city\"\n                               id=\"msc-address-city\"\n                               placeholder=\"Ciudad\"\n                               readonly>\n                    <\/div>\n                    \n                    <div class=\"field-group address-postal\">\n                        <label for=\"msc-address-postal\">C\u00f3digo postal<\/label>\n                        <input type=\"text\"\n                               name=\"msc_address_postal\"\n                               id=\"msc-address-postal\"\n                               placeholder=\"C\u00f3digo postal\"\n                               readonly>\n                    <\/div>\n                    \n                    <div class=\"field-group address-country\">\n                        <label for=\"msc-address-country\">Pa\u00eds<\/label>\n                        <input type=\"text\"\n                               name=\"msc_address_country\"\n                               id=\"msc-address-country\"\n                               placeholder=\"Pa\u00eds\"\n                               readonly>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <!-- Hidden fields for coordinates and formatted address -->\n            <input type=\"hidden\" name=\"msc_address_lat\" id=\"msc-address-lat\" value=\"\">\n            <input type=\"hidden\" name=\"msc_address_lng\" id=\"msc-address-lng\" value=\"\">\n            <input type=\"hidden\" name=\"msc_address_formatted\" id=\"msc-address-formatted\" value=\"\">\n        <\/div>\n    <\/div>\n\n    <!-- ============================================================ -->\n    <!-- NUMBER OF BAGS -->\n    <!-- ============================================================ -->\n    \n    <div class=\"luggage-selector-section\">\n        <div class=\"luggage-selector-label\">N\u00famero de maletas:<\/div>\n        <div class=\"luggage-selector msc-luggage-selector\">\n            <div class=\"luggage-info\">\n                <span class=\"luggage-icon\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                        <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"><\/rect>\n                        <path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"><\/path>\n                    <\/svg>\n                <\/span>\n                <span class=\"luggage-text\">Maletas<\/span>\n            <\/div>\n            <div class=\"luggage-counter\">\n                <button type=\"button\" class=\"btn-luggage-minus\" aria-label=\"Quitar maleta\">\u2212<\/button>\n                <span class=\"luggage-count-display\">1<\/span>\n                <button type=\"button\" class=\"btn-luggage-plus\" aria-label=\"A\u00f1adir maleta\">+<\/button>\n            <\/div>\n            \n            <!-- Hidden fields -->\n            <input type=\"hidden\" name=\"luggage_count\" id=\"luggage-count\" value=\"1\">\n            <input type=\"hidden\" name=\"msc_service_type\" id=\"msc-service-type\" value=\"\">\n            <input type=\"hidden\" name=\"msc_service_price\" id=\"msc-service-price\" value=\"\">\n            <input type=\"hidden\" name=\"msc_cruise_name\" id=\"msc-cruise-name\" value=\"MSC Magnifica\">\n            <input type=\"hidden\" name=\"msc_departure_date\" id=\"msc-departure-date\" value=\"2026-01-07\">\n            <input type=\"hidden\" name=\"msc_return_date\" id=\"msc-return-date\" value=\"2026-05-18\">\n            <input type=\"hidden\" name=\"msc_port\" id=\"msc-port\" value=\"Barcelona\">\n        <\/div>\n    <\/div>\n\n    <!-- ============================================================ -->\n    <!-- NAVIGATION BUTTONS -->\n    <!-- ============================================================ -->\n    \n    <div class=\"step-buttons\">\n                \n        <button class=\"btn-confirm hidden msc-btn-primary\" type=\"button\">\n            Continuar &rarr;        <\/button>\n    <\/div>\n<\/div>\n\n<!-- CSS in assets\/css\/msc\/msc-cruceros.css -->\n\n<script>\n(function() {\n    'use strict';\n    \n    \/\/ Configuration\n    const PRICES = {\n        one_way: 125,\n        round_trip: 225    };\n    \n    const SERVICE_NAMES = {\n        'casa_barco': 'Home \u2192 Ship',\n        'barco_casa': 'Ship \u2192 Home',\n        'ida_vuelta': 'Round Trip'\n    };\n    \n    let state = {\n        serviceType: null,\n        pricePerBag: 0,\n        luggageCount: 1\n    };\n    \n    \/\/ Initialize when DOM is ready\n    document.addEventListener('DOMContentLoaded', init);\n    \n    function setupServiceButtons() {\n        const buttons = document.querySelectorAll('.msc-service-type-options .service-type-btn');\n        \n        buttons.forEach(btn => {\n            btn.addEventListener('click', function(e) {\n                e.preventDefault();\n                \n                \/\/ Remove previous selection\n                buttons.forEach(b => b.classList.remove('active', 'selected'));\n                \n                \/\/ Mark as selected\n                this.classList.add('active', 'selected');\n                \n                const service = this.dataset.service;\n                const price = parseInt(this.dataset.price);\n                \n                state.serviceType = service;\n                state.pricePerBag = price;\n                \n                \/\/ Save to sessionStorage for the sidebar summary\n                saveToSessionStorage();\n\n                \/\/ Show service info\n                showServiceInfo(service);\n\n                \/\/ Show address section\n                document.getElementById('msc-address-section').classList.remove('hidden');\n\n                \/\/ Update hidden fields\n                document.getElementById('msc-service-type').value = service;\n                document.getElementById('msc-service-price').value = price;\n                \n                \/\/ Update price summary\n                updatePriceSummary();\n\n                \/\/ Trigger sidebar summary update\n                if (window.LR_Summary && typeof window.LR_Summary.updateLiveSummary === 'function') {\n                    window.LR_Summary.updateLiveSummary();\n                }\n                \n                \/\/ Show continue button\n                document.querySelector('.btn-confirm').classList.remove('hidden');\n            });\n        });\n    }\n    \n    function showServiceInfo(service) {\n        const infoContainer = document.getElementById('msc-service-info');\n        const panels = {\n            'casa_barco': document.getElementById('msc-info-casa-barco'),\n            'barco_casa': document.getElementById('msc-info-barco-casa'),\n            'ida_vuelta': document.getElementById('msc-info-ida-vuelta')\n        };\n        \n        \/\/ Hide all\n        Object.values(panels).forEach(p => p.classList.add('hidden'));\n\n        \/\/ Show the corresponding one\n        if (panels[service]) {\n            infoContainer.classList.remove('hidden');\n            panels[service].classList.remove('hidden');\n        }\n    }\n    \n    function setupLuggageCounter() {\n        const minusBtn = document.querySelector('.btn-luggage-minus');\n        const plusBtn = document.querySelector('.btn-luggage-plus');\n        const display = document.querySelector('.luggage-count-display');\n        const input = document.getElementById('luggage-count');\n        \n        if (!minusBtn || !plusBtn) return;\n        \n        \/\/ PREVENT DUPLICATION: If handlers are already registered, don't add more\n        if (minusBtn.dataset.mscHandler === 'true') {\n            console.log('[MSC] Luggage handlers already registered, skipping');\n            return;\n        }\n        \n        \/\/ Mark as registered\n        minusBtn.dataset.mscHandler = 'true';\n        plusBtn.dataset.mscHandler = 'true';\n        \n        \/\/ Use handler that syncs with local MSC state\n        function handleCountChange(e) {\n            e.stopImmediatePropagation(); \/\/ Prevent other handlers\n            \n            const isPlus = e.currentTarget.classList.contains('btn-luggage-plus');\n            \n            if (isPlus && state.luggageCount < 10) {\n                state.luggageCount++;\n            } else if (!isPlus && state.luggageCount > 1) {\n                state.luggageCount--;\n            }\n            \n            updateLuggageDisplay(display, input);\n            updatePriceSummary();\n        }\n        \n        minusBtn.addEventListener('click', handleCountChange, { capture: true });\n        plusBtn.addEventListener('click', handleCountChange, { capture: true });\n    }\n    \n    function updateLuggageDisplay(display, input) {\n        if (display) display.textContent = state.luggageCount;\n        if (input) input.value = state.luggageCount;\n    }\n    \n    function updatePriceSummary() {\n        const total = state.pricePerBag * state.luggageCount;\n        \n        \/\/ Save to sessionStorage for the sidebar summary\n        saveToSessionStorage();\n\n        \/\/ Trigger sidebar summary update\n        if (window.LR_Summary && typeof window.LR_Summary.updateLiveSummary === 'function') {\n            window.LR_Summary.updateLiveSummary();\n        }\n    }\n\n    \/**\n     * Saves current state to sessionStorage for the sidebar summary\n     *\/\n    function saveToSessionStorage() {\n        \/\/ Mark form type\n        sessionStorage.setItem('is_msc_form', 'true');\n        sessionStorage.setItem('current_form_type', 'msc-cruceros');\n        \n        \/\/ Service data\n        sessionStorage.setItem('msc_service_type', state.serviceType || '');\n        sessionStorage.setItem('msc_service_price', state.pricePerBag.toString());\n        sessionStorage.setItem('luggage_count', state.luggageCount.toString());\n        \n        \/\/ Total price\n        const total = state.pricePerBag * state.luggageCount;\n        sessionStorage.setItem('total_price', total.toString());\n        \n        \/\/ Cruise info (from hidden fields pre-populated by PHP)\n        const cruiseName = document.getElementById('msc-cruise-name');\n        const departureDate = document.getElementById('msc-departure-date');\n        const returnDate = document.getElementById('msc-return-date');\n        const port = document.getElementById('msc-port');\n        if (cruiseName) sessionStorage.setItem('msc_cruise_name', cruiseName.value);\n        if (departureDate) sessionStorage.setItem('msc_departure_date', departureDate.value);\n        if (returnDate) sessionStorage.setItem('msc_return_date', returnDate.value);\n        if (port) sessionStorage.setItem('msc_port', port.value);\n\n        \/\/ Address data (updated for Google Maps)\n        const addressSearch = document.getElementById('msc-address-search');\n        const addressStreet = document.getElementById('msc-address-street');\n        const addressCity = document.getElementById('msc-address-city');\n        const addressPostal = document.getElementById('msc-address-postal');\n        const addressCountry = document.getElementById('msc-address-country');\n        const addressFormatted = document.getElementById('msc-address-formatted');\n        const addressLat = document.getElementById('msc-address-lat');\n        const addressLng = document.getElementById('msc-address-lng');\n        \n        if (addressSearch) sessionStorage.setItem('msc_address_search', addressSearch.value);\n        if (addressStreet) sessionStorage.setItem('msc_address_street', addressStreet.value);\n        if (addressCity) sessionStorage.setItem('msc_address_city', addressCity.value);\n        if (addressPostal) sessionStorage.setItem('msc_address_postal', addressPostal.value);\n        if (addressCountry) sessionStorage.setItem('msc_address_country', addressCountry.value);\n        if (addressFormatted) sessionStorage.setItem('msc_address_formatted', addressFormatted.value);\n        if (addressLat) sessionStorage.setItem('msc_address_lat', addressLat.value);\n        if (addressLng) sessionStorage.setItem('msc_address_lng', addressLng.value);\n    }\n    \n    \/\/ Google Maps variables\n    let mscMap = null;\n    let mscMarker = null;\n    let mscAutocomplete = null;\n    let mscGeocoder = null;\n    \n    \/**\n     * Initializes Google Maps for the MSC address\n     *\/\n    function initMSCGoogleMaps() {\n        \/\/ Check Google Maps availability\n        if (typeof google === 'undefined' || !google.maps || !google.maps.places) {\n            console.warn('[MSC] Google Maps API not available');\n            \/\/ Make fields editable as fallback\n            makeAddressFieldsEditable();\n            return;\n        }\n        \n        const mapContainer = document.getElementById('msc-map-container');\n        const searchInput = document.getElementById('msc-address-search');\n        \n        if (!mapContainer || !searchInput) {\n            console.error('[MSC] Map elements not found');\n            return;\n        }\n        \n        \/\/ Initial center: Barcelona (cruise port)\n        const barcelonaCenter = { lat: 41.3751, lng: 2.1767 };\n        \n        \/\/ Create map\n        mscMap = new google.maps.Map(mapContainer, {\n            center: barcelonaCenter,\n            zoom: 12,\n            mapTypeControl: false,\n            streetViewControl: false,\n            fullscreenControl: false,\n            styles: [\n                { featureType: 'poi', elementType: 'labels', stylers: [{ visibility: 'off' }] }\n            ]\n        });\n        \n        \/\/ Create geocoder\n        mscGeocoder = new google.maps.Geocoder();\n        \n        \/\/ Configure Autocomplete\n        mscAutocomplete = new google.maps.places.Autocomplete(searchInput, {\n            types: ['address'],\n            componentRestrictions: { country: ['es', 'pt', 'fr', 'it', 'de', 'gb'] },\n            fields: ['formatted_address', 'geometry', 'address_components', 'name']\n        });\n        \n        \/\/ Bind autocomplete to map\n        mscAutocomplete.bindTo('bounds', mscMap);\n        \n        \/\/ Event when an address is selected from autocomplete\n        mscAutocomplete.addListener('place_changed', function() {\n            const place = mscAutocomplete.getPlace();\n            \n            if (!place.geometry || !place.geometry.location) {\n                console.warn('[MSC] No location found for:', searchInput.value);\n                return;\n            }\n            \n            \/\/ Process selected place\n            processSelectedPlace(place);\n        });\n        \n        \/\/ Map click event\n        mscMap.addListener('click', function(event) {\n            \/\/ Geocode the clicked location\n            mscGeocoder.geocode({ location: event.latLng }, function(results, status) {\n                if (status === 'OK' && results[0]) {\n                    processSelectedPlace(results[0]);\n                    searchInput.value = results[0].formatted_address;\n                }\n            });\n        });\n        \n        \/\/ Restore address from sessionStorage if available\n        restoreAddressFromSession();\n\n        console.log('[MSC] Google Maps initialized successfully');\n    }\n    \n    \/**\n     * Processes a selected location (autocomplete or map click)\n     *\/\n    function processSelectedPlace(place) {\n        const location = place.geometry.location;\n        \n        \/\/ Center map and place marker\n        mscMap.setCenter(location);\n        mscMap.setZoom(16);\n        \n        \/\/ Update or create marker\n        if (mscMarker) {\n            mscMarker.setPosition(location);\n        } else {\n            mscMarker = new google.maps.Marker({\n                map: mscMap,\n                position: location,\n                draggable: true,\n                animation: google.maps.Animation.DROP\n            });\n            \n            \/\/ Marker drag event\n            mscMarker.addListener('dragend', function() {\n                const newPos = mscMarker.getPosition();\n                mscGeocoder.geocode({ location: newPos }, function(results, status) {\n                    if (status === 'OK' && results[0]) {\n                        processSelectedPlace(results[0]);\n                        document.getElementById('msc-address-search').value = results[0].formatted_address;\n                    }\n                });\n            });\n        }\n        \n        \/\/ Parse address components\n        const addressComponents = parseAddressComponents(place.address_components);\n        \n        \/\/ Fill fields\n        document.getElementById('msc-address-street').value = addressComponents.street || place.formatted_address;\n        document.getElementById('msc-address-city').value = addressComponents.city || '';\n        document.getElementById('msc-address-postal').value = addressComponents.postal || '';\n        document.getElementById('msc-address-country').value = addressComponents.country || '';\n        document.getElementById('msc-address-formatted').value = place.formatted_address;\n        document.getElementById('msc-address-lat').value = location.lat();\n        document.getElementById('msc-address-lng').value = location.lng();\n        \n        \/\/ Save to sessionStorage and update summary\n        saveToSessionStorage();\n        if (window.LR_Summary && typeof window.LR_Summary.updateLiveSummary === 'function') {\n            window.LR_Summary.updateLiveSummary();\n        }\n    }\n    \n    \/**\n     * Parses address components from Google Places\n     *\/\n    function parseAddressComponents(components) {\n        if (!components) return {};\n        \n        const result = {\n            street: '',\n            streetNumber: '',\n            city: '',\n            postal: '',\n            province: '',\n            country: ''\n        };\n        \n        for (const component of components) {\n            const types = component.types;\n            \n            if (types.includes('street_number')) {\n                result.streetNumber = component.long_name;\n            } else if (types.includes('route')) {\n                result.street = component.long_name;\n            } else if (types.includes('locality')) {\n                result.city = component.long_name;\n            } else if (types.includes('postal_code')) {\n                result.postal = component.long_name;\n            } else if (types.includes('administrative_area_level_2')) {\n                result.province = component.long_name;\n            } else if (types.includes('country')) {\n                result.country = component.long_name;\n            }\n        }\n        \n        \/\/ Combine street and number\n        if (result.streetNumber && result.street) {\n            result.street = `${result.street}, ${result.streetNumber}`;\n        }\n        \n        return result;\n    }\n    \n    \/**\n     * Restores address from sessionStorage\n     *\/\n    function restoreAddressFromSession() {\n        const savedSearch = sessionStorage.getItem('msc_address_search');\n        const savedLat = sessionStorage.getItem('msc_address_lat');\n        const savedLng = sessionStorage.getItem('msc_address_lng');\n        \n        if (savedSearch) {\n            document.getElementById('msc-address-search').value = savedSearch;\n        }\n        \n        \/\/ Restore fields\n        const fields = ['street', 'city', 'postal', 'country', 'formatted'];\n        fields.forEach(field => {\n            const saved = sessionStorage.getItem(`msc_address_${field}`);\n            const input = document.getElementById(`msc-address-${field}`);\n            if (saved && input) {\n                input.value = saved;\n            }\n        });\n        \n        \/\/ Restore marker if there are saved coordinates\n        if (savedLat && savedLng && mscMap) {\n            const position = {\n                lat: parseFloat(savedLat),\n                lng: parseFloat(savedLng)\n            };\n            \n            mscMap.setCenter(position);\n            mscMap.setZoom(16);\n            \n            if (!mscMarker) {\n                mscMarker = new google.maps.Marker({\n                    map: mscMap,\n                    position: position,\n                    draggable: true\n                });\n                \n                mscMarker.addListener('dragend', function() {\n                    const newPos = mscMarker.getPosition();\n                    mscGeocoder.geocode({ location: newPos }, function(results, status) {\n                        if (status === 'OK' && results[0]) {\n                            processSelectedPlace(results[0]);\n                            document.getElementById('msc-address-search').value = results[0].formatted_address;\n                        }\n                    });\n                });\n            } else {\n                mscMarker.setPosition(position);\n            }\n            \n            \/\/ Restore coordinates in hidden fields\n            document.getElementById('msc-address-lat').value = savedLat;\n            document.getElementById('msc-address-lng').value = savedLng;\n        }\n    }\n    \n    \/**\n     * Fallback: make fields editable if Google Maps is not available\n     *\/\n    function makeAddressFieldsEditable() {\n        const readonlyFields = document.querySelectorAll('.msc-address-details input[readonly]');\n        readonlyFields.forEach(field => {\n            field.removeAttribute('readonly');\n            field.classList.add('manual-entry');\n        });\n        \n        \/\/ Hide map if no API available\n        const mapWrapper = document.querySelector('.msc-address-section .map-wrapper');\n        if (mapWrapper) {\n            mapWrapper.classList.add('hidden');\n        }\n        \n        \/\/ Change search field label\n        const searchLabel = document.querySelector('label[for=\"msc-address-search\"]');\n        if (searchLabel) {\n            searchLabel.innerHTML = 'Full address: <span class=\"required\">*<\/span>';\n        }\n        \n        const searchHint = document.querySelector('.msc-address-section .field-hint');\n        if (searchHint) {\n            searchHint.classList.add('hidden');\n        }\n    }\n    \n    \/\/ Call init\n    function init() {\n        setupServiceButtons();\n        setupLuggageCounter();\n        \n        \/\/ Initialize Google Maps when the address section is shown\n        \/\/ or when the DOM is ready if already visible\n        const addressSection = document.getElementById('msc-address-section');\n        if (addressSection) {\n            \/\/ Observer to detect when the section is shown\n            const observer = new MutationObserver(function(mutations) {\n                mutations.forEach(function(mutation) {\n                    if (mutation.attributeName === 'class') {\n                        if (!addressSection.classList.contains('hidden') && !mscMap) {\n                            initMSCGoogleMaps();\n                        }\n                    }\n                });\n            });\n\n            observer.observe(addressSection, { attributes: true, attributeFilter: ['class'] });\n            \n            \/\/ If already visible (from session restore)\n            if (!addressSection.classList.contains('hidden')) {\n                initMSCGoogleMaps();\n            }\n        }\n    }\n    \n})();\n<\/script>\n\n<div id=\"step-client-details\" class=\"step\">\n    <h2>Tus datos<\/h2>\n\n    \n    <label for=\"billing_first_name\">Nombre <span class=\"required\">*<\/span><\/label>\n    <input type=\"text\" name=\"billing_first_name\" id=\"billing_first_name\"\n           placeholder=\"John\" required>\n\n    <label for=\"billing_last_name\">Apellidos <span class=\"required\">*<\/span><\/label>\n    <input type=\"text\" name=\"billing_last_name\" id=\"billing_last_name\"\n           placeholder=\"Doe\" required>\n\n    <label for=\"email-input\">Env\u00eda un correo electr\u00f3nico a <span class=\"required\">*<\/span><\/label>\n    <input type=\"email\" name=\"email\" id=\"email-input\"\n           placeholder=\"john@example.com\" required>\n\n    <label for=\"phone-input\">Tel\u00e9fono <span class=\"required\">*<\/span><\/label>\n    <input type=\"tel\" name=\"phone\" id=\"phone-input\"\n           placeholder=\"+34 600 123 456\" required>\n    <span class=\"form-error-message phone-error hidden\">\n        Introduce un n\u00famero de tel\u00e9fono v\u00e1lido.    <\/span>\n\n    <!-- Meeting Point Information Block -->\n    <div id=\"meeting-point-info\" class=\"meeting-point-info hidden\">\n        <!-- Contenido din\u00e1mico seg\u00fan ubicaciones seleccionadas -->\n    <\/div>\n\n    <!-- Confirmation Checkbox - Required se a\u00f1ade din\u00e1micamente cuando el div es visible -->\n    <div id=\"meeting-point-confirmation\" class=\"meeting-point-confirmation hidden\">\n        <label class=\"confirmation-checkbox\">\n            <input type=\"checkbox\" id=\"meeting-point-read\" name=\"meeting_point_read\">\n            <span>He le\u00eddo y comprendo las instrucciones del punto de encuentro<\/span>\n        <\/label>\n    <\/div>\n\n    <div class=\"step-buttons\">\n        <button class=\"btn-prev\" type=\"button\">\n            \u2190 Anterior        <\/button>\n        <button type=\"submit\">\n            Confirmar reserva        <\/button>\n    <\/div>\n<\/div>\n            <\/div>\n        <\/form>\n\n        \n<aside class=\"booking-summary-column booking-summary-desktop\">\n    <div id=\"booking-summary-live\" class=\"summary-box\">\n        <h3>Resumen<\/h3>\n        \n                \n        <ul id=\"summary-list\"><\/ul>\n    <\/div>\n    \n    <div id=\"booking-price-summary\" class=\"summary-box price-summary-box\">\n        <div class=\"booking-price-summary-label\">Total del servicio<\/div>\n        <div id=\"live-price-display\" class=\"price-value\">-- \u20ac<\/div>\n        <div id=\"price-breakdown\" class=\"price-breakdown-details\" style=\"display: none;\"><\/div>\n        \n            <\/div>\n<\/aside>        \n    <\/div>\n\n    \n<!-- Mobile summary bar -->\n<div id=\"mobile-summary-bar\" class=\"mobile-summary-bar\">\n    <div class=\"mobile-summary-price\">\n        <span>Total:<\/span>\n        <span id=\"mobile-price-amount\">-- \u20ac<\/span>\n    <\/div>\n    <button id=\"toggle-summary-btn\" class=\"toggle-summary-btn\">\n        Ver resumen \u2191\n    <\/button>\n<\/div>\n\n<!-- Bottom sheet -->\n<div id=\"bottom-sheet\" class=\"bottom-sheet\">\n    <div class=\"bottom-sheet-header\">\n        <strong>Resumen de la reserva<\/strong>\n        <button id=\"close-bottom-sheet\" class=\"close-btn\">\u2715<\/button>\n    <\/div>\n    <div class=\"bottom-sheet-content\">\n        <div id=\"summary-content-mobile\"><\/div>\n        \n            <\/div>\n<\/div>\n\n<script>\n    \/\/ Configuraci\u00f3n del formulario desde PHP\n    window.LR_FormConfig = {\"formType\":\"msc_magnifica\",\"formId\":\"default\",\"productId\":\"6503\",\"steps\":[\"msc-magnifica\",\"client\"],\"stepMap\":{\"msc-magnifica\":0,\"client\":1},\"totalSteps\":2,\"textDomain\":\"lr-booking\"};\n    \n    \/\/ =======================================================================\n    \/\/ LIMPIEZA PREVENTIVA DE DATOS DE FORMULARIOS ANTERIORES\n    \/\/ Ejecutada ANTES de que carguen los scripts para evitar mezclas de datos\n    \/\/ =======================================================================\n    (function() {\n        'use strict';\n        \n        var currentFormType = 'msc_magnifica';\n        var previousFormType = sessionStorage.getItem('bagsandgo_active_form_type');\n        \n        \/\/ Determinar categor\u00eda del formulario actual\n        function getCategory(formType) {\n            if (!formType) return 'standard';\n            if (formType.indexOf('envio') !== -1 || formType.indexOf('peninsula') !== -1 || formType.indexOf('europa') !== -1) return 'envios';\n            if (formType.indexOf('cruise') !== -1 || formType.indexOf('crucero') !== -1) return 'cruceros';\n            if (formType.indexOf('msc') !== -1) return 'msc';\n            return 'standard';\n        }\n        \n        var currentCategory = getCategory(currentFormType);\n        var previousCategory = getCategory(previousFormType);\n        \n        \/\/ Si cambiamos de formulario (cualquier cambio), limpiar TODOS los datos\n        \/\/ Preservar solo datos de usuario (nombre, email, tel\u00e9fono, notas)\n        var userKeys = ['billing_first_name', 'billing_last_name', 'email', 'phone', 'billing_country', 'booking_notes'];\n\n        if (previousFormType && previousFormType !== currentFormType) {\n            console.log('[LR] Cambio de formulario detectado: ' + previousFormType + ' \u2192 ' + currentFormType + '. Limpieza completa...');\n\n            var cleaned = 0;\n            for (var i = sessionStorage.length - 1; i >= 0; i--) {\n                var key = sessionStorage.key(i);\n                if (key && userKeys.indexOf(key) === -1) {\n                    sessionStorage.removeItem(key);\n                    localStorage.removeItem(key);\n                    cleaned++;\n                }\n            }\n\n            console.log('[LR] Limpiadas ' + cleaned + ' claves de sessionStorage');\n        }\n        \n        \/\/ Registrar formulario activo\n        sessionStorage.setItem('bagsandgo_active_form_type', currentFormType);\n        sessionStorage.setItem('current_form_type', currentFormType);\n        sessionStorage.setItem('bagsandgo_last_activity', Date.now().toString());\n    })();\n<\/script>\n<\/div>\n<\/div>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":6949,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/04-partner-msc-form.php","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-7262","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Servicio de equipajes de MSC Magnifica - Enero 2026 | Bags&amp;Go<\/title>\n<meta name=\"description\" content=\"Env\u00eda tu equipaje para el crucero MSC Magnifica. Del 7 al 18 de enero de 2026. Servicio puerta a puerta desde 125 euros.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Servicio de equipajes de MSC Magnifica - Enero 2026 | Bags&amp;Go\" \/>\n<meta property=\"og:description\" content=\"Env\u00eda tu equipaje para el crucero MSC Magnifica. Del 7 al 18 de enero de 2026. Servicio puerta a puerta desde 125 euros.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/\" \/>\n<meta property=\"og:site_name\" content=\"Bags&amp;Go - Servicios de gesti\u00f3n de equipajes\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/bagsandgo\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-10T15:08:24+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@BagsandGo\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/\",\"url\":\"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/\",\"name\":\"Servicio de equipajes de MSC Magnifica - Enero 2026 | Bags&Go\",\"isPartOf\":{\"@id\":\"https:\/\/bagsandgo.com\/es\/#website\"},\"datePublished\":\"2025-12-09T22:53:56+00:00\",\"dateModified\":\"2025-12-10T15:08:24+00:00\",\"description\":\"Env\u00eda tu equipaje para el crucero MSC Magnifica. Del 7 al 18 de enero de 2026. Servicio puerta a puerta desde 125 euros.\",\"breadcrumb\":{\"@id\":\"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/bagsandgo.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bags&amp;Go x MSC Cruceros\",\"item\":\"https:\/\/bagsandgo.com\/es\/socio\/msc\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Servicio de equipajes de MSC Magnifica\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bagsandgo.com\/es\/#website\",\"url\":\"https:\/\/bagsandgo.com\/es\/\",\"name\":\"Barcelona Locker + Luggage Delivery\",\"description\":\"Bags&amp;Go - Recogemos, almacenamos y entregamos a la hora y en el lugar que elijas.\",\"publisher\":{\"@id\":\"https:\/\/bagsandgo.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bagsandgo.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/bagsandgo.com\/es\/#organization\",\"name\":\"BAGSANDGO\",\"url\":\"https:\/\/bagsandgo.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/bagsandgo.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/bagsandgo.com\/wp-content\/uploads\/2025\/03\/bags-and-go-logo-color-09-1.svg\",\"contentUrl\":\"https:\/\/bagsandgo.com\/wp-content\/uploads\/2025\/03\/bags-and-go-logo-color-09-1.svg\",\"width\":728,\"height\":107,\"caption\":\"BAGSANDGO\"},\"image\":{\"@id\":\"https:\/\/bagsandgo.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/bagsandgo\",\"https:\/\/x.com\/BagsandGo\",\"https:\/\/instagram.com\/bagsandgo\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Servicio de equipajes de MSC Magnifica - Enero 2026 | Bags&Go","description":"Env\u00eda tu equipaje para el crucero MSC Magnifica. Del 7 al 18 de enero de 2026. Servicio puerta a puerta desde 125 euros.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/","og_locale":"en_US","og_type":"article","og_title":"Servicio de equipajes de MSC Magnifica - Enero 2026 | Bags&Go","og_description":"Env\u00eda tu equipaje para el crucero MSC Magnifica. Del 7 al 18 de enero de 2026. Servicio puerta a puerta desde 125 euros.","og_url":"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/","og_site_name":"Bags&amp;Go - Servicios de gesti\u00f3n de equipajes","article_publisher":"https:\/\/www.facebook.com\/bagsandgo","article_modified_time":"2025-12-10T15:08:24+00:00","twitter_card":"summary_large_image","twitter_site":"@BagsandGo","twitter_misc":{"Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/","url":"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/","name":"Servicio de equipajes de MSC Magnifica - Enero 2026 | Bags&Go","isPartOf":{"@id":"https:\/\/bagsandgo.com\/es\/#website"},"datePublished":"2025-12-09T22:53:56+00:00","dateModified":"2025-12-10T15:08:24+00:00","description":"Env\u00eda tu equipaje para el crucero MSC Magnifica. Del 7 al 18 de enero de 2026. Servicio puerta a puerta desde 125 euros.","breadcrumb":{"@id":"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/bagsandgo.com\/es\/nuestros-socios\/msc\/magnifica\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/bagsandgo.com\/es\/"},{"@type":"ListItem","position":2,"name":"Bags&amp;Go x MSC Cruceros","item":"https:\/\/bagsandgo.com\/es\/socio\/msc\/"},{"@type":"ListItem","position":3,"name":"Servicio de equipajes de MSC Magnifica"}]},{"@type":"WebSite","@id":"https:\/\/bagsandgo.com\/es\/#website","url":"https:\/\/bagsandgo.com\/es\/","name":"Barcelona Locker + Luggage Delivery","description":"Bags&amp;Go - Recogemos, almacenamos y entregamos a la hora y en el lugar que elijas.","publisher":{"@id":"https:\/\/bagsandgo.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bagsandgo.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/bagsandgo.com\/es\/#organization","name":"BAGSANDGO","url":"https:\/\/bagsandgo.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/bagsandgo.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/bagsandgo.com\/wp-content\/uploads\/2025\/03\/bags-and-go-logo-color-09-1.svg","contentUrl":"https:\/\/bagsandgo.com\/wp-content\/uploads\/2025\/03\/bags-and-go-logo-color-09-1.svg","width":728,"height":107,"caption":"BAGSANDGO"},"image":{"@id":"https:\/\/bagsandgo.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/bagsandgo","https:\/\/x.com\/BagsandGo","https:\/\/instagram.com\/bagsandgo"]}]}},"_links":{"self":[{"href":"https:\/\/bagsandgo.com\/es\/wp-json\/wp\/v2\/pages\/7262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bagsandgo.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bagsandgo.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bagsandgo.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bagsandgo.com\/es\/wp-json\/wp\/v2\/comments?post=7262"}],"version-history":[{"count":3,"href":"https:\/\/bagsandgo.com\/es\/wp-json\/wp\/v2\/pages\/7262\/revisions"}],"predecessor-version":[{"id":7521,"href":"https:\/\/bagsandgo.com\/es\/wp-json\/wp\/v2\/pages\/7262\/revisions\/7521"}],"up":[{"embeddable":true,"href":"https:\/\/bagsandgo.com\/es\/wp-json\/wp\/v2\/pages\/6949"}],"wp:attachment":[{"href":"https:\/\/bagsandgo.com\/es\/wp-json\/wp\/v2\/media?parent=7262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}