{"id":7301,"date":"2026-05-06T17:21:40","date_gmt":"2026-05-06T17:21:40","guid":{"rendered":"https:\/\/rolliodemadrid.com\/?page_id=7301"},"modified":"2026-05-29T13:19:26","modified_gmt":"2026-05-29T13:19:26","slug":"fooldal","status":"publish","type":"page","link":"https:\/\/rolliodemadrid.com\/en\/","title":{"rendered":"Homepage"},"content":{"rendered":"\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@300;400;500&display=swap');\n  \/* === GLOB\u00c1LIS V\u00c1LTOZ\u00d3K \u00c9S SZAB\u00c1LYOK (Izol\u00e1lva a blokkra) === *\/\n  .somoza-hero-section {\n    --color-primary: #1A2A3A;\n    --color-accent: #D4AF37;\n    --color-background: #F9F9F7;\n    --color-text: #222222;\n    --font-serif: 'Cormorant Garamond', serif;\n    --font-sans: 'Montserrat', sans-serif;\n    \n    position: relative;\n    width: 100%;\n    min-height: 100vh;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    background-color: var(--color-primary); \/* S\u00f6t\u00e9t alap bet\u00f6lt\u00e9sig *\/\n  }\n\n  \/* === VIDE\u00d3 H\u00c1TT\u00c9R \u00c9S \u00c1TMENET === *\/\n  .somoza-hero-section .video-wrapper {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 1;\n    transform: translate3d(0, 0, 0); \/* G\u00f6rget\u00e9si hiba ellen *\/\n  }\n\n  .somoza-hero-section video {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    \/* Kicsit fak\u00f3bb, l\u00e9giesebb hat\u00e1s *\/\n    filter: saturate(70%) contrast(85%);\n    \/* Renderel\u00e9si ugr\u00e1l\u00e1s kik\u00fcsz\u00f6b\u00f6l\u00e9se *\/\n    transform: translate3d(0, 0, 0);\n    backface-visibility: hidden;\n  }\n\n  \/* M\u00e1sodik vide\u00f3 (alul) *\/\n  .somoza-hero-section #hero-vid-2 {\n    z-index: 1;\n  }\n\n  \/* Els\u0151 vide\u00f3 (fel\u00fcl) - ezen lesz a jobbr\u00f3l-balra (wipe) elt\u0171n\u00e9s *\/\n  .somoza-hero-section #hero-vid-1 {\n    z-index: 2;\n    clip-path: inset(0 0 0 0);\n    transition: clip-path 1.5s cubic-bezier(0.77, 0, 0.175, 1);\n  }\n\n  \/* Enyhe s\u00f6t\u00e9t\u00edtett maszk az olvashat\u00f3s\u00e1g\u00e9rt *\/\n  .somoza-hero-section .video-overlay {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 3;\n    \/* Enyh\u00e9bb fed\u0151r\u00e9teg (0.65 helyett 0.55) *\/\n    background-color: rgba(0, 0, 0, 0.40); \n    \/* G\u00f6rget\u00e9s k\u00f6zbeni elt\u0171n\u00e9s\/ugr\u00e1l\u00e1s jav\u00edt\u00e1sa *\/\n    pointer-events: none;\n    transform: translate3d(0, 0, 0);\n    backface-visibility: hidden;\n  }\n\n  \/* === TARTALOM (K\u00f6z\u00e9pre rendezett Layout) === *\/\n  .somoza-hero-section .hero-container {\n    position: relative;\n    z-index: 4;\n    width: 100%;\n    max-width: 1000px; \/* Sz\u0171kebb kont\u00e9ner a k\u00f6z\u00e9pre rendezett sz\u00f6vegnek *\/\n    margin: 0 auto;\n    padding: 120px 40px; \/* Macro Whitespace *\/\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    text-align: center;\n  }\n\n  \/* Sz\u00f6veg r\u00e9tegek a v\u00e1lt\u00e1shoz *\/\n  .somoza-hero-section .text-layer {\n    width: 100%;\n    transition: opacity 0.5s ease; \/* L\u00e1gy elt\u0171n\u00e9s az \u00e1tmenetn\u00e9l *\/\n  }\n\n  \/* === TIPOGR\u00c1FIA === *\/\n  .somoza-hero-section h1 {\n    font-family: var(--font-serif);\n    color: #F9F9F7; \/* Feh\u00e9r c\u00edmsor *\/\n    font-size: 48px; \/* Mobil m\u00e9ret *\/\n    font-weight: 400;\n    line-height: 1.05;\n    margin: 0 0 24px 0;\n    text-transform: uppercase;\n  }\n\n  .somoza-hero-section h1 i {\n    font-style: italic;\n    font-weight: 600;\n    text-transform: none;\n  }\n\n  @media (min-width: 1024px) {\n    .somoza-hero-section h1 {\n      font-size: 66px; \/* Hatalmas asztali m\u00e9ret *\/\n    }\n  }\n\n  \/* Szavank\u00e9nti fade-in-up anim\u00e1ci\u00f3 *\/\n  .somoza-hero-section .word {\n    display: inline-block;\n    opacity: 0;\n    transform: translateY(20px);\n    animation: fadeInUpWord 1.2s cubic-bezier(0.215, 0.61, 0.355, 1) forwards;\n  }\n\n  @keyframes fadeInUpWord {\n    to {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  }\n\n .somoza-hero-section p {\n    font-family: var(--font-sans);\n    color: #F9F9F7;\n    font-size: 16px;\n    line-height: 1.6;\n    max-width: 700px;\n    margin: 0 auto;\n    \n    \/* M\u00d3DOS\u00cdT\u00c1S: V\u00e9konyabb s\u00faly \u00e9s \u00e9lsim\u00edt\u00e1s *\/\n    font-weight: 300 !important; \n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    letter-spacing: 0.5px; \/* A Montserratnak j\u00f3l \u00e1ll egy kis extra hely *\/\n}\n\n  @media (min-width: 1024px) {\n    .somoza-hero-section p {\n      font-size: 18px;\n    }\n  }\n\n  \/* Mobil n\u00e9zet maszk \u00e9s padding igaz\u00edt\u00e1sa *\/\n  @media (max-width: 768px) {\n    .somoza-hero-section .video-overlay {\n      background-color: rgba(0, 0, 0, 0.65); \/* Mobilon ar\u00e1nyosan enyh\u00edtve (0.75-r\u0151l 0.65-re) *\/\n    }\n    .somoza-hero-section .hero-container {\n      padding: 100px 20px 40px 20px;\n    }\n\/* IDE ILLESZD BE EZT A H\u00c1ROM SORT: *\/\n    .somoza-hero-section h1 {\n     font-size: clamp(20px, 7.5vw, 42px); \n      \n      box-sizing: border-box; \/* A bels\u0151 marg\u00f3t befel\u00e9 sz\u00e1molja *\/\n      width: 100%;\n    }\n\/* A 2. vide\u00f3 (rejtett Madrid) bal oldal\u00e1nak el\u0151t\u00e9rbe hoz\u00e1sa mobilon *\/\n    .somoza-hero-section #hero-vid-2 {\n      object-position: 25% center; \n    }\n  }\n\n\/* === TABLET N\u00c9ZET: FIX PIXELES FEL\u00dcL\u00cdR\u00c1S (769px - 1024px) === *\/\n  @media (min-width: 769px) and (max-width: 1024px) {\n    \/* C\u00edmsor felnagy\u00edt\u00e1sa *\/\n    .somoza-hero-section .text-layer h1 {\n      font-size: 55px !important; \n      line-height: 1.1 !important;\n    }\n    \n    \/* Alc\u00edm felnagy\u00edt\u00e1sa *\/\n    .somoza-hero-section .text-layer p {\n      font-size: 22px !important; \n      max-width: 90% !important; \n    }\n  }\n\n<\/style>\n\n<div class=\"somoza-hero-section\">\n  \n  <!-- Vide\u00f3 r\u00e9tegek -->\n  <div class=\"video-wrapper\">\n    <!-- 1. r\u00e9teg (legals\u00f3 vide\u00f3) -->\n    <video id=\"hero-vid-2\" muted playsinline>\n      <source src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/szolgvideo.mp4\" type=\"video\/mp4\">\n    <\/video>\n    \n    <!-- 2. r\u00e9teg (fels\u0151 vide\u00f3) -->\n    <video id=\"hero-vid-1\" muted playsinline autoplay>\n      <source src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/flamencovideoi.mp4\" type=\"video\/mp4\">\n    <\/video>\n\n    <!-- 3. r\u00e9teg: IDE SZ\u00daRD BE (A vide\u00f3k ut\u00e1n, de az overlay el\u00e9) -->\n    <div id=\"glass-slider\" class=\"glass-slider\"><\/div>\n    \n    <!-- 4. r\u00e9teg (a s\u00f6t\u00e9t\u00edt\u0151 maszk, ami m\u00e1r ott volt) -->\n    <div class=\"video-overlay\"><\/div>\n<\/div>\n\n  <!-- Tartalom -->\n  <div class=\"hero-container\">\n    \n    <!-- ELS\u0150 SZ\u00d6VEG R\u00c9TEG (Vide\u00f3 1-hez) -->\n    <div id=\"text-layer-1\" class=\"text-layer\">\n      <h1>\n        <span class=\"word\" style=\"animation-delay: 0.1s;\">A<\/span>\n        <span class=\"word\" style=\"animation-delay: 0.2s;\">SPANYOL<\/span>\n        <i class=\"word\" style=\"animation-delay: 0.3s;\">szenved\u00e9ly.<\/i><br>\n        <span class=\"word\" style=\"animation-delay: 0.4s;\">Karny\u00fajt\u00e1snyira.<\/span>\n      <\/h1>\n      \n      <div class=\"divider word\" style=\"animation-delay: 0.5s;\"><\/div>\n      \n      <p class=\"word\" style=\"animation-delay: 0.6s;\">\n        \u00c9ljen \u00e1t egy leny\u0171g\u00f6z\u0151, autentikus el\u0151ad\u00e1st a legjobb, el\u0151re lefoglalt \u00e9s teljesen akad\u00e1lymentes\u00edtett helyekr\u0151l. Garant\u00e1lt l\u00e1that\u00f3s\u00e1g \u00e9s maxim\u00e1lis k\u00e9nyelem \u2013 \u00d6nnek csak \u00e1t kell adnia mag\u00e1t a tiszta m\u0171v\u00e9szetnek.\n      <\/p>\n    <\/div>\n\n    <!-- M\u00c1SODIK SZ\u00d6VEG R\u00c9TEG (Vide\u00f3 2-h\u00f6z) -->\n    <!-- Kezdetben rejtve van, a JS fogja bekapcsolni a CSS anim\u00e1ci\u00f3kkal egy\u00fctt -->\n    <div id=\"text-layer-2\" class=\"text-layer\" style=\"display: none;\">\n      <h1>\n        <span class=\"word\" style=\"animation-delay: 0.1s;\">A<\/span>\n        <span class=\"word\" style=\"animation-delay: 0.2s;\">REJTETT<\/span>\n        <i class=\"word\" style=\"animation-delay: 0.3s;\">Madrid.<\/i><br>\n        <span class=\"word\" style=\"animation-delay: 0.4s;\">Az<\/span>\n        <span class=\"word\" style=\"animation-delay: 0.5s;\">\u00d6n<\/span>\n        <span class=\"word\" style=\"animation-delay: 0.6s;\">temp\u00f3j\u00e1ban.<\/span>\n      <\/h1>\n      \n      <div class=\"divider word\" style=\"animation-delay: 0.7s;\"><\/div>\n      \n      <p class=\"word\" style=\"animation-delay: 0.8s;\">\n        Fedezze fel a v\u00e1ros ikonikus helysz\u00edneit \u00e9s titkait Laur\u00e1val, profi idegenvezet\u0151nkkel. Szem\u00e9lyesen tesztelt, l\u00e9pcs\u0151mentes \u00fatvonalak \u00e9s megnyugtat\u00f3 temp\u00f3, hogy a rohan\u00e1s helyett a felfedez\u00e9s tiszta \u00e9lm\u00e9ny\u00e9 lehessen a f\u0151szerep.\n      <\/p>\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n<script>\n  document.addEventListener('DOMContentLoaded', function() {\n    const video1 = document.getElementById('hero-vid-1');\n    const video2 = document.getElementById('hero-vid-2');\n    const textLayer1 = document.getElementById('text-layer-1');\n    const textLayer2 = document.getElementById('text-layer-2');\n\n    \/\/ Ha az els\u0151 vide\u00f3 befejez\u0151d\u00f6tt\n    video1.addEventListener('ended', function() {\n    const glass = document.getElementById('glass-slider');\n    \n    \/\/ 1. \u00dcveg aktiv\u00e1l\u00e1sa \u00e9s ind\u00edt\u00e1sa balra\n    glass.style.opacity = '1';\n    glass.style.left = '-20vw'; \n\n    \/\/ 2. Vide\u00f3 v\u00e1g\u00e1sa (Wipe)\n    video1.style.clipPath = 'inset(0 100% 0 0)';\n    video2.currentTime = 0;\n    video2.play();\n\n    \/\/ 3. Sz\u00f6vegcsere \u00e9s az \u00fcveg elt\u00fcntet\u00e9se a v\u00e9g\u00e9n\n    textLayer1.style.opacity = '0';\n    setTimeout(function() {\n        textLayer1.style.display = 'none';\n        textLayer2.style.display = 'block';\n        void textLayer2.offsetWidth;\n        textLayer2.style.opacity = '1';\n        \n        \/\/ Amikor a vonal \u00e1t\u00e9rt, elhalv\u00e1ny\u00edtjuk az \u00fcveget\n        setTimeout(() => { glass.style.opacity = '0'; }, 1000);\n    }, 500);\n});\n\n    \/\/ Ha a m\u00e1sodik vide\u00f3 befejez\u0151d\u00f6tt (V\u00e9gtelen\u00edtett ciklus)\n    video2.addEventListener('ended', function() {\n    const glass = document.getElementById('glass-slider');\n    \n    \/\/ 1. \u00dcveg pozicion\u00e1l\u00e1sa balra (transition n\u00e9lk\u00fcl), majd ind\u00edt\u00e1sa jobbra\n    glass.style.transition = 'none';\n    glass.style.left = '-20vw';\n    void glass.offsetWidth; \/\/ k\u00e9nyszer\u00edtett renderel\u00e9s\n    glass.style.transition = 'left 1.5s cubic-bezier(0.77, 0, 0.175, 1), opacity 0.4s ease';\n    \n    glass.style.opacity = '1';\n    glass.style.left = '100vw';\n\n    \/\/ 2. Vide\u00f3 vissza\u00e1ll\u00edt\u00e1sa\n    video1.currentTime = 0;\n    video1.play();\n    video1.style.clipPath = 'inset(0 0 0 0)';\n\n    \/\/ 3. Sz\u00f6vegcsere vissza\n    textLayer2.style.opacity = '0';\n    setTimeout(function() {\n        textLayer2.style.display = 'none';\n        textLayer1.style.display = 'block';\n        void textLayer1.offsetWidth;\n        textLayer1.style.opacity = '1';\n        \n        setTimeout(() => { glass.style.opacity = '0'; }, 1000);\n    }, 500);\n});\n    \/\/ Biztos\u00edt\u00e9k, ha a b\u00f6ng\u00e9sz\u0151 biztons\u00e1gi okokb\u00f3l blokkoln\u00e1 az autoplay-t\n    let playPromise = video1.play();\n    if (playPromise !== undefined) {\n      playPromise.catch(error => {\n        \/\/ Automatikus lej\u00e1tsz\u00e1s blokkolva.\n      });\n    }\n  });\n<\/script>\n\n\n    <style>\n        @import url('https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,600;1,600&family=Montserrat:wght@400;600;700&display=swap');\n\n        #somoza-floating-booking-area {\n            --bg-alabaster: #F5F8FA;\n            --text-navy: #1A2A3A;\n            --text-anthracite: #222222;\n            --accent-gold: #D4AF37;\n            position: relative;\n            width: 100%;\n            z-index: 99;\n            margin-top: -60px !important; \n            padding: 0 20px 220px 20px; \n            display: flex;\n            justify-content: center;\n            will-change: margin-top;\n        }\n\n        #somoza-floating-booking-area::before {\n            content: '';\n            position: absolute;\n            top: 60px;\n            bottom: 0; \n            left: -50vw;\n            width: 200vw;\n            background-color: var(--bg-alabaster);\n            z-index: -1;\n        }\n\n        .somoza-booking-bar {\n            width: 100%;\n            max-width: 1200px;\n            background-color: var(--bg-alabaster);\n            display: flex;\n            box-shadow: 0 30px 60px rgba(0, 0, 0, 0.08);\n            border-radius: 20px;\n            position: relative;\n            z-index: 2;\n        }\n\n        .somoza-booking-field {\n            flex: 1;\n            padding: 24px 30px;\n            border: none;\n            background: transparent;\n            border-right: 1px solid rgba(26, 42, 58, 0.15);\n            cursor: pointer;\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            position: relative;\n            transition: background 0.3s;\n            text-align: left;\n            outline: none;\n        }\n\n        .somoza-field-ripple-bg {\n            position: absolute;\n            inset: 0;\n            overflow: hidden;\n            pointer-events: none;\n            z-index: 0;\n            border-radius: inherit;\n        }\n\n        .somoza-field-ripple-bg::before {\n            content: '';\n            position: absolute;\n            top: var(--y, 50%);\n            left: var(--x, 50%);\n            width: 0; height: 0;\n            background-color: rgba(26, 42, 58, 0.05);\n            border-radius: 50%;\n            transform: translate(-50%, -50%);\n            transition: width 0.5s ease-out, height 0.5s ease-out;\n            pointer-events: none;\n        }\n\n        .somoza-booking-field:hover { background-color: rgba(26, 42, 58, 0.03); }\n\n        .somoza-booking-field:hover .somoza-field-ripple-bg::before {\n            width: 1000px; height: 1000px;\n            transition: width 2s cubic-bezier(0.19, 1, 0.22, 1), height 2s cubic-bezier(0.19, 1, 0.22, 1);\n        }\n\n        .somoza-field-label, .somoza-field-value { position: relative; z-index: 1; }\n        .somoza-booking-field:nth-child(4) { border-right: none; }\n\n        .somoza-field-label {\n            font-family: 'Montserrat', sans-serif;\n            font-size: 11px;\n            font-weight: 600;\n            text-transform: uppercase;\n            letter-spacing: 1.5px;\n            color: var(--text-navy);\n            margin-bottom: 8px;\n            opacity: 0.8;\n            pointer-events: none;\n        }\n\n        .somoza-field-value {\n            font-family: 'Cormorant Garamond', serif;\n            font-size: 22px;\n            color: var(--text-anthracite);\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            width: 100%;\n            pointer-events: none;\n        }\n\n        .somoza-field-value svg {\n            width: 14px;\n            height: 14px;\n            stroke: var(--accent-gold);\n            transition: transform 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);\n        }\n\n        .somoza-booking-field.is-open .somoza-field-value svg { transform: rotate(180deg); }\n\n        .somoza-cta-button {\n            flex: 1;\n            background-color: var(--text-navy);\n            color: var(--accent-gold);\n            position: relative;\n            overflow: hidden;\n            z-index: 1;\n            border: none;\n            font-family: 'Montserrat', sans-serif;\n            font-size: 14px;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 1.5px;\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            gap: 10px;\n            border-radius: 0 20px 20px 0;\n            transition: color 0.4s ease;\n            flex-direction: column; \n            line-height: 1.2;      \n            padding: 15px 10px;    \n        }\n\n        .somoza-cta-button::before {\n            content: '';\n            position: absolute;\n            top: var(--y, 50%); left: var(--x, 50%);\n            width: 0; height: 0;\n            background-color: var(--accent-gold);\n            border-radius: 50%;\n            transform: translate(-50%, -50%);\n            transition: width 0.4s ease-out, height 0.4s ease-out;\n            z-index: -1;\n        }\n\n        .somoza-cta-button:hover { color: var(--text-navy); }\n        .somoza-cta-button:hover::before {\n            width: 500px; height: 500px; \n            transition: width 2s cubic-bezier(0.19, 1, 0.22, 1), height 2s cubic-bezier(0.19, 1, 0.22, 1);\n        }\n        .somoza-cta-button svg { width: 18px; height: 18px; stroke: currentColor; }\n\n        @media (max-width: 1024px) {\n            .somoza-field-value { font-size: 18px; }\n            .somoza-booking-field { padding: 20px 15px; }\n        }\n        @media (max-width: 768px) {\n            #somoza-floating-booking-area { margin-top: -40px !important; padding: 0 15px 60px 15px; }\n            #somoza-floating-booking-area::before { top: 40px; }\n            .somoza-booking-bar { flex-direction: column; }\n            .somoza-booking-field { border-right: none; border-bottom: 1px solid rgba(26, 42, 58, 0.1); padding: 20px 25px; }\n            .somoza-cta-button { min-height: 70px; border-radius: 0 0 20px 20px;}\n        }\n\n        .swp-dropdown {\n            position: absolute;\n            top: calc(100% + 15px);\n            left: 0;\n            width: 100%;\n            min-width: 320px;\n            background: #F9F9F7;\n            padding: 30px;\n            border-radius: 15px;\n            text-align: center;\n            border-top: 4px solid #004C99;\n            box-shadow: 0 20px 50px rgba(0,0,0,0.15);\n            z-index: 100;\n            cursor: default; \n            opacity: 0;\n            visibility: hidden;\n            transform: translateY(20px);\n            transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);\n        }\n\n        .somoza-booking-field:nth-child(3) .swp-dropdown,\n        .somoza-booking-field:nth-child(4) .swp-dropdown { left: auto; right: 0; }\n        .somoza-booking-field.is-open .swp-dropdown { opacity: 1; visibility: visible; transform: translateY(0); }\n        \n        .swp-title { font-family: 'Cormorant Garamond', serif; font-size: 24px; color: #1A2A3A; margin-top: 0; margin-bottom: 20px; }\n\n        .swp-option-btn {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            width: 100%; padding: 15px 20px; margin-bottom: 10px; background: #fff;\n            border: 1px solid rgba(26,42,58,0.1); border-radius: 8px; font-family: 'Montserrat', sans-serif;\n            font-size: 14px; color: #1A2A3A; cursor: pointer; transition: color 0.4s ease, border-color 0.4s ease;\n            position: relative; \n            overflow: hidden; \n            z-index: 1;\n            text-align: left;\n        }\n\n        .swp-price-hint {\n            font-weight: 400;\n            font-size: 12px;\n            opacity: 0.6;\n            margin-left: 10px;\n        }\n\n        .swp-option-btn::before {\n            content: '';\n            position: absolute;\n            top: var(--y, 50%);\n            left: var(--x, 50%);\n            width: 0;\n            height: 0;\n            background-color: #1A2A3A; \n            border-radius: 50%;\n            transform: translate(-50%, -50%);\n            transition: width 0.5s ease-out, height 0.5s ease-out;\n            z-index: -1;\n        }\n\n        .swp-option-btn:hover {\n            color: #ffffff;\n            border-color: #1A2A3A;\n            background-color: transparent !important;\n        }\n\n        .swp-option-btn:hover .swp-price-hint { color: #fff; opacity: 0.8; }\n\n        .swp-option-btn:hover::before {\n            width: 800px; \n            height: 800px;\n            transition: width 2.5s cubic-bezier(0.19, 1, 0.22, 1), height 2.5s cubic-bezier(0.19, 1, 0.22, 1);\n        }\n\n        \/* NAPT\u00c1R ST\u00cdLUSOK *\/\n        .swp-cal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }\n        .swp-cal-nav { background: transparent; border: 1px solid rgba(26,42,58,0.1); width: 35px; height: 35px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; color: #1A2A3A; font-size: 18px; transition: 0.3s; }\n        .swp-cal-nav:hover { border-color: #004C99; color: #004C99; background: rgba(212,175,55,0.05); }\n        .swp-cal-month-title { font-family: 'Cormorant Garamond', serif; font-size: 22px; font-weight: 600; color: #1A2A3A; margin: 0; text-transform: capitalize; }\n        .swp-cal-weekdays { display: grid; grid-template-columns: repeat(7, 1fr); margin-bottom: 15px; }\n        .swp-cal-weekday { font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 700; color: #1A2A3A; opacity: 0.4; text-transform: uppercase; }\n        .swp-cal-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }\n        .swp-cal-day { aspect-ratio: 1\/1; display: flex; align-items: center; justify-content: center; font-family: 'Montserrat', sans-serif; font-size: 14px; color: #222; border-radius: 50%; cursor: pointer; transition: 0.2s; position: relative;}\n        .swp-cal-day.empty { cursor: default; pointer-events: none; }\n        .swp-cal-day.booked {\n            color: #ccc;                     \n            text-decoration: line-through;   \n            pointer-events: none;            \n            background: rgba(0,0,0,0.03);    \n            cursor: not-allowed;\n        }\n        .swp-cal-day:not(.empty):hover { \n            background: rgba(0, 76, 153, 0.1); \n            color: #004C99; \n            font-weight: 600; \n            cursor: pointer;\n        }\n        .swp-cal-day.selected { background: #004C99; color: #fff; font-weight: 700; }\n                                \n        .swp-drop-label {\n            font-family: 'Montserrat', sans-serif;\n            font-size: 10px;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 1.5px;\n            color: #004C99;\n            text-align: left;\n            margin: 15px 0 10px 5px;\n            border-bottom: 1px solid rgba(212, 175, 55, 0.2);\n            padding-bottom: 4px;\n        }\n                                \n     \/* Alap\u00e9rtelmezett, rugalmas elrendez\u00e9s (Asztali n\u00e9zet) *\/\n        #field-exp .swp-dropdown {\n            width: 100vw;\n            max-width: 1050px;\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 10px;\n            padding: 25px;\n            align-items: start;\n        }\n\n        \/* Gombok bels\u0151 igaz\u00edt\u00e1sa: a sz\u00f6veg balra, az \u00e1r jobbra tapad, felesleges \u0171r n\u00e9lk\u00fcl *\/\n        #field-exp .swp-option-btn {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            gap: 15px;\n            margin-bottom: 0; \n            padding: 15px 20px;\n        }\n\t\t\t\t\t  \n\t\t\t\t\t  \/* A L\u00e9tsz\u00e1m \u00e9s Extr\u00e1k leg\u00f6rd\u00fcl\u0151 ablak\u00e1nak egyedi sz\u00e9less\u00e9ge *\/\n#field-guests .swp-dropdown {\n    min-width: 400px; \/* \u00c1ll\u00edtsd \u00e1t ezt az \u00e9rt\u00e9ket a k\u00edv\u00e1nt m\u00e9retre (pl. 350px, 450px) *\/\n    \/* Ide opcion\u00e1lisan tehetsz max-width-et is, ha nem akarod, hogy t\u00fal sz\u00e9les legyen: *\/\n    \/* max-width: 500px; *\/\n}\n\n        #field-exp .swp-drop-label {\n            grid-column: span 2;\n            margin-top: 10px;\n        }\n\n        #field-exp .swp-option-btn { margin-bottom: 0; padding: 15px 20px; }\n                                          \n      .swp-overlay {\n            position: fixed; top: 0; left: 0; width: 100vw; height: 100vh;\n            background: rgba(26, 42, 58, 0.85); \n            z-index: 99999999; opacity: 0; visibility: hidden; transition: 0.3s ease;\n            \/* UJ: G\u00f6rget\u00e9s enged\u00e9lyez\u00e9se \u00e9s bels\u0151 t\u00e9rk\u00f6z, hogy ne tapadjon a k\u00e9perny\u0151 sz\u00e9l\u00e9re *\/\n            overflow-y: auto; \n            padding: 100px 20px 50px 20px;\n            box-sizing: border-box;\n        }\n        .swp-overlay.is-open { opacity: 1; visibility: visible; }\n        \n        .swp-popup {\n            background: #F9F9F7; padding: 40px; border-radius: 15px; width: 95%; max-width: 1000px !important;\n            text-align: left; border-top: 4px solid #004C99; box-shadow: 0 30px 60px rgba(0,0,0,0.3);\n            position: relative; transform: translateY(30px); transition: 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);\n            \/* UJ: K\u00f6z\u00e9pre igaz\u00edt\u00e1s flexbox helyett, ami engedi a g\u00f6rget\u00e9st *\/\n            margin: 0 auto; \n        }\n        .swp-overlay.is-open .swp-popup { transform: translateY(0); }\n\n        \/* K\u00e9toszlopos Grid az \u00faj diz\u00e1jnhoz *\/\n        .swp-popup-grid {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 40px;\n            align-items: start;\n        }\n\n        \/* Input mez\u0151k st\u00edlusa *\/\n        .swp-input-group { margin-bottom: 20px; }\n        .swp-input-group label {\n            display: block; font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #1A2A3A; margin-bottom: 8px; opacity: 0.8;\n        }\n        .swp-input {\n            width: 100%; padding: 14px 20px; border: 1px solid rgba(26,42,58,0.15); border-radius: 8px; background: #ffffff; font-family: 'Montserrat', sans-serif; font-size: 14px; color: #1A2A3A; outline: none; transition: border-color 0.3s;\n        }\n        .swp-input:focus { border-color: #004C99; }\n\n        \/* Mobil n\u00e9zet: az oszlopok egym\u00e1s al\u00e1 ker\u00fclnek *\/\n        @media (max-width: 768px) {\n            .swp-popup-grid { grid-template-columns: 1fr; gap: 20px; }\n            .swp-popup { padding: 30px 20px; }\n        }\n\n        .swp-close {\n            position: absolute; top: 15px; right: 20px; background: none; border: none; font-size: 32px;\n            color: #1A2A3A; cursor: pointer; opacity: 0.5; padding: 0; line-height: 1;\n        }\n        .swp-close:hover {\n            opacity: 1;\n            color: #004C99;\n            background: transparent !important;\n            box-shadow: none !important;\n        }\n\n        \/* === WIZARD: PROGRESS BAR \u00c9S L\u00c9P\u00c9SEK === *\/\n        .swp-wizard-progress {\n            display: flex;\n            align-items: flex-start;\n            justify-content: space-between;\n            margin: 5px 0 35px 0;\n            padding: 0 8%;\n            position: relative;\n        }\n        .swp-wizard-progress::before {\n            content: '';\n            position: absolute;\n            top: 18px;\n            left: calc(8% + 50px);\n            right: calc(8% + 50px);\n            height: 2px;\n            background: rgba(26, 42, 58, 0.15);\n            z-index: 0;\n        }\n        .swp-wizard-progress-fill {\n            position: absolute;\n            top: 18px;\n            left: calc(8% + 50px);\n            right: calc(8% + 50px);\n            height: 2px;\n            background: #28a745;\n            z-index: 0;\n            transform: scaleX(0);\n            transform-origin: left center;\n            transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);\n        }\n        .swp-wizard-step {\n            position: relative;\n            z-index: 1;\n            flex: 0 0 auto;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            gap: 10px;\n        }\n        .swp-wizard-step-circle {\n            width: 38px;\n            height: 38px;\n            border-radius: 50%;\n            background: #ffffff;\n            border: 2px solid rgba(26, 42, 58, 0.15);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-family: 'Montserrat', sans-serif;\n            font-size: 14px;\n            font-weight: 700;\n            color: rgba(26, 42, 58, 0.4);\n            transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1);\n        }\n        .swp-wizard-step-label {\n            font-family: 'Montserrat', sans-serif;\n            font-size: 11px;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            color: rgba(26, 42, 58, 0.4);\n            transition: color 0.5s cubic-bezier(0.16, 1, 0.3, 1);\n            white-space: nowrap;\n        }\n        .swp-wizard-step.is-active .swp-wizard-step-circle {\n            background: #004C99;\n            border-color: #004C99;\n            color: #ffffff;\n            transform: scale(1.1);\n            box-shadow: 0 6px 20px rgba(0, 76, 153, 0.35);\n        }\n        .swp-wizard-step.is-active .swp-wizard-step-label {\n            color: #004C99;\n        }\n        .swp-wizard-step.is-done .swp-wizard-step-circle {\n            background: #28a745;\n            border-color: #28a745;\n            color: #ffffff;\n        }\n        .swp-wizard-step.is-done .swp-wizard-step-circle::before {\n            content: '\\2713';\n            font-size: 18px;\n        }\n        .swp-wizard-step.is-done .swp-wizard-step-circle-num {\n            display: none;\n        }\n        .swp-wizard-step.is-done .swp-wizard-step-label {\n            color: #28a745;\n        }\n\n        .swp-wizard-pane { display: none; }\n        .swp-wizard-pane.is-current {\n            display: block;\n            animation: swpWizardFadeIn 0.5s cubic-bezier(0.16, 1, 0.3, 1);\n        }\n        @keyframes swpWizardFadeIn {\n            from { opacity: 0; transform: translateX(15px); }\n            to   { opacity: 1; transform: translateX(0); }\n        }\n\n        .swp-wizard-actions {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            gap: 15px;\n            margin-top: 25px;\n        }\n        .swp-wizard-actions.is-end { justify-content: flex-end; }\n        .swp-wizard-back-btn {\n            background: transparent;\n            color: #1A2A3A;\n            border: 1.5px solid rgba(26, 42, 58, 0.25);\n            font-family: 'Montserrat', sans-serif;\n            font-size: 13px;\n            font-weight: 600;\n            padding: 13px 28px;\n            border-radius: 8px;\n            cursor: pointer;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1);\n            display: inline-flex;\n            align-items: center;\n            gap: 8px;\n        }\n        .swp-wizard-back-btn:hover {\n            color: #1A2A3A;\n            border-color: #1A2A3A;\n            background: rgba(26, 42, 58, 0.04);\n            transform: translateX(-3px);\n        }\n\n        @media (max-width: 768px) {\n            .swp-wizard-progress { padding: 0 5px; }\n            .swp-wizard-progress::before,\n            .swp-wizard-progress-fill {\n                left: calc(5px + 30px);\n                right: calc(5px + 30px);\n            }\n            .swp-wizard-step-label { font-size: 10px; letter-spacing: 0.5px; }\n            .swp-wizard-step-circle { width: 32px; height: 32px; font-size: 13px; }\n            .swp-wizard-progress::before,\n            .swp-wizard-progress-fill { top: 15px; }\n            .swp-wizard-actions { flex-direction: column-reverse; align-items: stretch; }\n            .swp-wizard-actions .swp-wizard-back-btn,\n            .swp-wizard-actions .swp-option-btn { width: 100% !important; justify-content: center; }\n        }\n\n        .swp-summary-details {\n            background: #ffffff; border: 1px solid rgba(26,42,58,0.1); border-radius: 8px;\n            padding: 20px; margin: 20px 0; text-align: left; font-family: 'Montserrat', sans-serif;\n            color: #1A2A3A; line-height: 1.8; font-size: 15px;\n        }\n        .swp-summary-details strong { color: #004C99; display: inline-block; width: 110px; }\n        .swp-summary-price {\n            font-size: 18px; border-top: 1px solid rgba(26,42,58,0.1); margin-top: 15px; padding-top: 15px;\n        }\n        .swp-legal-text {\n            font-family: 'Montserrat', sans-serif; font-size: 10px; color: #666; \n            text-transform: uppercase; letter-spacing: 1px; margin-top: 5px;\n        }\n\n        #somoza-final-pay-btn::before { background-color: #D4AF37 !important; }\n        #somoza-final-pay-btn:hover { color: #1A2A3A !important; border-color: #D4AF37 !important; }\n        #ins-next-btn::before { background-color: #D4AF37 !important; }\n        #ins-next-btn:hover { color: #1A2A3A !important; border-color: #D4AF37 !important; }\n        #contract-next-btn:not([disabled])::before { background-color: #D4AF37 !important; }\n        #contract-next-btn:not([disabled]):hover { color: #1A2A3A !important; border-color: #D4AF37 !important; }\n        #ins-next-btn:hover::before, #somoza-final-pay-btn:hover::before, #contract-next-btn:not([disabled]):hover::before {\n            width: 800px; height: 800px;\n            transition: width 2.5s cubic-bezier(0.4, 0, 0.2, 1), height 2.5s cubic-bezier(0.4, 0, 0.2, 1);\n        }\n                                     \n        \/* === GOMB SZ\u00d6VEG \u00c9S \u00c1R ANIM\u00c1CI\u00d3 === *\/\n        .btn-text-container {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n        }\n\n        .somoza-dynamic-price {\n            font-size: 20px;\n            font-weight: 700;\n            text-transform: none;\n            opacity: 0;\n            max-height: 0;\n            margin-top: 0;\n            overflow: hidden;\n            transform: translateY(10px); \n            transition: max-height 0.4s cubic-bezier(0.165, 0.84, 0.44, 1), margin-top 0.4s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.3s ease, transform 0.3s ease; \n        }\n\n        .somoza-dynamic-price.show-price {\n            opacity: 1;\n            max-height: 40px; \n            margin-top: 12px;\n            transform: translateY(0);\n        }\n\n        .somoza-dynamic-price.fade-value {\n            opacity: 0 !important;\n            transform: scale(0.95);\n        }\n\n        \/* === MULTI-SELECT AKT\u00cdV \u00c1LLAPOT === *\/\n        .swp-option-btn.selected {\n            background-color: #004C99 !important;\n            color: #ffffff !important;\n            border-color: #004C99 !important;\n        }\n        .swp-option-btn.selected .swp-price-hint {\n            color: #ffffff !important;\n            opacity: 0.9;\n        }\n\t\t\t\t\t\t\t\t\t \n\t\t\t\/* === JOGI SZ\u00d6VEGEK \u00c9S CHECKBOXOK === *\/\n        .swp-popup { max-width: 950px !important; } \/* Kicsit sz\u00e9lesebb ablak, hogy minden kif\u00e9rjen *\/\n        \n        .swp-legal-consent-box {\n            background: rgba(26, 42, 58, 0.02);\n            border: 1px solid rgba(26, 42, 58, 0.1);\n            border-radius: 8px;\n            padding: 15px 15px 0px 15px; \/* Fent, Jobb, Lent, Bal *\/\n            margin-bottom: 0px;\n        }\n        .swp-legal-smalltext {\n            font-family: 'Montserrat', sans-serif;\n            font-size: 9px;\n            line-height: 1.5;\n            color: #666;\n            margin: 0 0 12px 0;\n            text-align: justify;\n        }\n        .swp-checkbox-label {\n            display: flex;\n            align-items: flex-start;\n            gap: 10px;\n            font-family: 'Montserrat', sans-serif;\n            font-size: 11px;\n            color: #1A2A3A;\n            margin-bottom: 10px;\n            cursor: pointer;\n            line-height: 1.4;\n        }\n        .swp-checkbox-label:last-child { margin-bottom: 0; }\n       .swp-checkbox-label input[type=\"checkbox\"] {\n            margin: 2px 0 0 0 !important; \/* Elt\u00fcnteti a sablon \u00e1ltal hozz\u00e1adott extra marg\u00f3kat *\/\n            padding: 0 !important;\n            accent-color: #004C99;\n            width: 14px !important;\n            height: 14px !important;\n            cursor: pointer;\n            flex-shrink: 0;\n            position: static !important; \/* Megakad\u00e1lyozza, hogy a sablon elcs\u00fasztassa az elemet *\/\n            opacity: 1 !important;\n        }\n\n        .swp-checkbox-label span {\n            margin: 0 !important;\n            padding: 0 !important;\n            display: inline-block;\n        }\n        .swp-checkbox-label a { color: #004C99; text-decoration: underline; font-weight: 600; }\t\t\t\t\t\t \/* Ez a sor k\u00e9nyszer\u00edti ki az \u00faj sz\u00e9less\u00e9get *\/\n        .swp-popup { width: 100% !important; max-width: 1300px !important; }\n\t\t\t\/* === G\u00d6RGET\u00c9S LETILT\u00c1SA (GOLY\u00d3\u00c1LL\u00d3 VERZI\u00d3) === *\/\n        .somoza-no-scroll {\n            overflow: hidden !important;\n            touch-action: none !important;\n            -ms-touch-action: none !important;\n        }\t\t\n\t\t\t\n\t\t\t\/* === RESPONSIVE \u00c9LM\u00c9NY LEG\u00d6RD\u00dcL\u0150 (TAB & MOBIL) === *\/\n        @media (max-width: 1024px) {\n            \/* Tablet n\u00e9zetben sz\u0171k\u00edtj\u00fck a dobozt, hogy igazodjon a fejl\u00e9c funkci\u00f3ihoz *\/\n            #field-exp .swp-dropdown {\n                width: calc(100vw - 40px);\n                max-width: 700px;\n                padding: 20px;\n            }\n            #field-exp .swp-option-btn {\n                padding: 12px 15px; \/* Kisebb bels\u0151 t\u00e9rk\u00f6z a gomboknak *\/\n                font-size: 13px;\n\t\t\t\t\t\t\t   min-height: 60px !important; \n                align-items: center !important;\n            }\n\t\t\t\/* 1. Kiszabad\u00edtjuk a k\u00e9t jobb oldali mez\u0151t a saj\u00e1t sz\u0171k doboz\u00e1b\u00f3l tableten *\/\n            #field-time, #field-guests { \n                position: static !important; \n            }\n\n            \/* 2. A l\u00e9tsz\u00e1m ablakot a teljes foglal\u00e1si s\u00e1v jobb sz\u00e9l\u00e9hez igaz\u00edtjuk, \u00edgy befel\u00e9 ny\u00edlik \u00e9s 100%, hogy el f\u00e9r *\/\n            #field-guests .swp-dropdown {\n                width: 400px !important;\n                max-width: calc(100vw - 40px) !important;\n                left: auto !important;\n                right: 0 !important; \/* \u00cdgy hajsz\u00e1lpontosan a teljes s\u00e1v jobb sz\u00e9l\u00e9re tapad *\/\n            }\n\n            \/* 3. Biztons\u00e1gi j\u00e1t\u00e9kb\u00f3l az id\u0151pont ablakot is a teljes s\u00e1v jobb sz\u00e9l\u00e9re r\u00f6gz\u00edtj\u00fck *\/\n            #field-time .swp-dropdown {\n                width: 320px !important;\n                left: 300px !important;\n                right: auto !important;\n            }\t\t\t \n        }\n\n        @media (max-width: 768px) {\n            \/* Mobilon megsz\u00fcntetj\u00fck a 2 oszlopot: a programok egym\u00e1s al\u00e1 ker\u00fclnek *\/\n            #field-exp .swp-dropdown {\n                grid-template-columns: 1fr !important; \n                min-width: 100% !important;\n                max-width: 100% !important;\n                left: 0 !important;\n                right: 0 !important;\n                padding: 15px;\n            }\n            #field-exp .swp-drop-label {\n                grid-column: span 1 !important;\n            }\n\t\t\t\t\t  \/* Mobil: A r\u00e1csos elrendez\u00e9sben teljes sz\u00e9less\u00e9g\u0171re nyitjuk \u00e9s null\u00e1zzuk a sz\u00e9leit *\/\n            #field-guests .swp-dropdown {\n                min-width: 100% !important;\n                max-width: 100% !important;\n                left: 0 !important;\n                right: 0 !important;\n            }\n\/* Mobil: Az id\u0151pont ablak elcs\u00fasz\u00e1s\u00e1nak jav\u00edt\u00e1sa, teljes sz\u00e9less\u00e9gre nyit\u00e1sa *\/\n            #field-time .swp-dropdown {\n                min-width: 100% !important;\n                max-width: 100% !important;\n                left: 0 !important;\n                right: 0 !important;\n            }\n            #field-time.is-multi .swp-dropdown{width:100% !important;}\n            .time-multi-grid{grid-template-columns:1fr !important;}\n        }\t\t\t\t   \n\t\t\t\t\t\t\t   \n.time-multi-grid{display:grid;gap:15px;}\n.time-prog-label{font-family:'Montserrat',sans-serif;font-size:10px;font-weight:700;color:#004C99;text-transform:uppercase;letter-spacing:1px;margin:0 0 10px 0;padding-bottom:6px;border-bottom:2px solid rgba(212,175,55,0.3);line-height:1.3;}\n#field-time.is-multi .swp-dropdown{right:0 !important;left:auto !important;width:auto !important;min-width:260px !important;max-width:calc(100vw - 40px) !important;}\n.tr-time-input-wrap{margin-bottom:12px;}.tr-time-input-label{font-family:'Montserrat',sans-serif;font-size:10px;font-weight:700;color:#004C99;text-transform:uppercase;letter-spacing:1px;margin:0 0 6px 0;display:block;}.tr-time-input{width:100%;padding:12px 16px;border:1px solid rgba(26,42,58,0.15);border-radius:8px;background:#fff;font-family:'Montserrat',sans-serif;font-size:14px;color:#1A2A3A;outline:none;transition:border-color 0.3s;box-sizing:border-box;}.tr-time-input:focus{border-color:#004C99 !important;}\n.lang-expand{overflow:hidden;max-height:0;}.lang-expand.is-open{max-height:220px;}.lang-expand-label{font-family:'Montserrat',sans-serif;font-size:10px;font-weight:700;color:#004C99;text-transform:uppercase;letter-spacing:1px;padding:8px 0 5px;display:block;}.lang-expand-inner{padding:0 0 4px;display:flex;gap:8px;}.lang-expand-inner .swp-option-btn{flex:1;justify-content:center;margin-bottom:0;font-size:13px;}\n    <\/style>\n\n    <div id=\"somoza-floating-booking-area\">\n        <form class=\"somoza-booking-bar\" id=\"somoza-stripe-form\">\n            \n            <input type=\"hidden\" name=\"experience\" id=\"inp-exp\" value=\"\">\n            <input type=\"hidden\" name=\"date\" id=\"inp-date\" value=\"\">\n            <input type=\"hidden\" name=\"time\" id=\"inp-time\" value=\"\">\n            \n            <input type=\"hidden\" name=\"guests\" id=\"inp-guests\" value=\"2\">\n            <input type=\"hidden\" name=\"luggage\" id=\"inp-luggage\" value=\"0\">\n            <input type=\"hidden\" name=\"wheelchair\" id=\"inp-wheelchair\" value=\"0\">\n            <input type=\"hidden\" name=\"flight_info\" id=\"inp-flight-info\" value=\"\">\n            <input type=\"hidden\" name=\"tour_language\" id=\"inp-tour-language\" value=\"\">\n            <input type=\"hidden\" name=\"allergy_info\" id=\"inp-allergy-info\" value=\"\">\n\n            <div class=\"somoza-booking-field\" id=\"field-exp\" onclick=\"toggleSwpDropdown('field-exp', event)\">\n                <div class=\"somoza-field-ripple-bg\"><\/div>\n                <span class=\"somoza-field-label\">Kiv\u00e1lasztott \u00c9lm\u00e9ny<\/span>\n                <span class=\"somoza-field-value\">\n                    <span id=\"txt-exp\">V\u00e1lasszon programot<\/span>\n                    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"><path d=\"m6 9 6 6 6-6\"\/><\/svg>\n                <\/span>\n                <div class=\"swp-dropdown\" onclick=\"event.stopPropagation()\">\n                    \n                    <div class=\"swp-drop-label\">Szolg\u00e1ltat\u00e1sok<\/div>\n                    <button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Autentikus flamenco est (Standard)')\">Autentikus Flamenco est (Standard) <span class=\"swp-price-hint\">50\u20ac \/ f\u0151<\/span><\/button>\n                    <button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Autentikus flamenco est (Pr\u00e9mium)')\">Autentikus Flamenco est (Pr\u00e9mium) <span class=\"swp-price-hint\">60\u20ac \/ f\u0151<\/span><\/button>\n                    <button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Autentikus spanyol gasztro\u00e9lm\u00e9ny')\">Autentikus spanyol gasztro\u00e9lm\u00e9ny <span class=\"swp-price-hint\">50\u20ac \/ f\u0151<\/span><\/button>\n                    <div style=\"display:flex;flex-direction:column;\"><button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val')\">Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val<span class=\"swp-price-hint\">60\u20ac \/ f\u0151<\/span><\/button><div class=\"lang-expand\" id=\"lang-expand-sanmiguel\"><span class=\"lang-expand-label\">K\u00e9rj\u00fck v\u00e1lassza ki az idegenvezet\u00e9s nyelv\u00e9t<\/span><div class=\"lang-expand-inner\"><button type=\"button\" class=\"swp-option-btn lang-btn\" onmousemove=\"this.style.setProperty('--x',event.offsetX+'px');this.style.setProperty('--y',event.offsetY+'px')\" onclick=\"setTourLanguage('Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val','en',this)\">\ud83c\uddec\ud83c\udde7 Angol (English)<\/button><button type=\"button\" class=\"swp-option-btn lang-btn\" onmousemove=\"this.style.setProperty('--x',event.offsetX+'px');this.style.setProperty('--y',event.offsetY+'px')\" onclick=\"setTourLanguage('Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val','es',this)\">\ud83c\uddea\ud83c\uddf8 Spanyol (Espa\u00f1ol)<\/button><\/div><\/div><\/div>\n                    <div style=\"display:flex;flex-direction:column;\"><button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s')\">Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s <span class=\"swp-price-hint\">45\u201395\u20ac \/ f\u0151<\/span><\/button><div class=\"lang-expand\" id=\"lang-expand-varosnez\"><span class=\"lang-expand-label\">K\u00e9rj\u00fck v\u00e1lassza ki az idegenvezet\u00e9s nyelv\u00e9t<\/span><div class=\"lang-expand-inner\"><button type=\"button\" class=\"swp-option-btn lang-btn\" onmousemove=\"this.style.setProperty('--x',event.offsetX+'px');this.style.setProperty('--y',event.offsetY+'px')\" onclick=\"setTourLanguage('Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s','en',this)\">\ud83c\uddec\ud83c\udde7 Angol (English)<\/button><button type=\"button\" class=\"swp-option-btn lang-btn\" onmousemove=\"this.style.setProperty('--x',event.offsetX+'px');this.style.setProperty('--y',event.offsetY+'px')\" onclick=\"setTourLanguage('Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s','es',this)\">\ud83c\uddea\ud83c\uddf8 Spanyol (Espa\u00f1ol)<\/button><\/div><\/div><\/div>\n                    <button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Priv\u00e1t rept\u00e9ri transzfer')\">Priv\u00e1t rept\u00e9ri transzfer <span class=\"swp-price-hint\">100\u20ac \/ \u00fat<\/span><\/button>\n\n                    <div class=\"swp-drop-label\" style=\"margin-top:20px;\">Csomagok<\/div>\n                    <button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Complete Madrid Experience (Standard)')\">Complete Madrid experience (Standard) <span class=\"swp-price-hint\">159\u2013255\u20ac \/ f\u0151<\/span><\/button>\n                    <button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Complete Madrid Experience (P\u00e1ros VIP)')\">Complete Madrid experience (P\u00e1ros VIP) <span class=\"swp-price-hint\">299\u20ac \/ f\u0151<\/span><\/button>\n                    <button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Madrid Gast-cult pack')\">Gast-Cult Pack <span class=\"swp-price-hint\">129\u2013195\u20ac \/ f\u0151<\/span><\/button>\n                    <button type=\"button\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"toggleExperience(this, 'Gastro pack')\">Gastro Pack <span class=\"swp-price-hint\">109\u20ac \/ f\u0151<\/span><\/button>\n                    \n                <\/div>\n            <\/div>\n\n            <div class=\"somoza-booking-field\" id=\"field-date\" onclick=\"toggleSwpDropdown('field-date', event)\">\n                <div class=\"somoza-field-ripple-bg\"><\/div>\n                <span class=\"somoza-field-label\">\u00c9rkez\u00e9s D\u00e1tuma<\/span>\n                <span class=\"somoza-field-value\">\n                    <span id=\"txt-date\">V\u00e1lasszon napot<\/span>\n                    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"><path d=\"m6 9 6 6 6-6\"\/><\/svg>\n                <\/span>\n                <div class=\"swp-dropdown\" onclick=\"event.stopPropagation()\">\n                    <div class=\"swp-cal-header\">\n                        <button type=\"button\" class=\"swp-cal-nav\" onclick=\"changeSwpMonth(-1)\">&#8249;<\/button>\n                        <h3 class=\"swp-cal-month-title\" id=\"swp-month-title\">H\u00f3nap<\/h3>\n                        <button type=\"button\" class=\"swp-cal-nav\" onclick=\"changeSwpMonth(1)\">&#8250;<\/button>\n                    <\/div>\n                    <div class=\"swp-cal-weekdays\">\n                        <div class=\"swp-cal-weekday\">H<\/div><div class=\"swp-cal-weekday\">K<\/div><div class=\"swp-cal-weekday\">Sze<\/div>\n                        <div class=\"swp-cal-weekday\">Cs<\/div><div class=\"swp-cal-weekday\">P<\/div><div class=\"swp-cal-weekday\">Szo<\/div><div class=\"swp-cal-weekday\">V<\/div>\n                    <\/div>\n                    <div class=\"swp-cal-days\" id=\"swp-cal-grid\"><\/div>\n                    <div id=\"swp-flamenco-cal-note\" style=\"display:none;margin-top:10px;padding:8px 12px;background:rgba(212,175,55,0.1);border-left:3px solid #D4AF37;border-radius:0 6px 6px 0;font-size:12px;color:#555;line-height:1.5;\">A Flamenco el\u0151ad\u00e1sokra a jegyet k\u00e9t nappal el\u0151re kell lefoglalni.<\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"somoza-booking-field\" id=\"field-time\" onclick=\"toggleSwpDropdown('field-time', event)\">\n                <div class=\"somoza-field-ripple-bg\"><\/div>\n                <span class=\"somoza-field-label\">Prefer\u00e1lt Id\u0151pont<\/span>\n                <span class=\"somoza-field-value\">\n                    <span id=\"txt-time\">V\u00e1lasszon \u00f3r\u00e1t<\/span>\n                    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"><path d=\"m6 9 6 6 6-6\"\/><\/svg>\n                <\/span>\n                <div class=\"swp-dropdown\" onclick=\"event.stopPropagation()\">\n                    <div id=\"time-options-container\"><p style=\"font-family:'Montserrat',sans-serif;font-size:13px;color:#999;text-align:center;margin:0;\">El\u0151sz\u00f6r v\u00e1lasszon programot!<\/p><\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"somoza-booking-field\" id=\"field-guests\" onclick=\"toggleSwpDropdown('field-guests', event)\">\n                <div class=\"somoza-field-ripple-bg\"><\/div>\n                <span class=\"somoza-field-label\">R\u00e9sztvev\u0151k Sz\u00e1ma<\/span>\n                <span class=\"somoza-field-value\">\n                    <span id=\"txt-guests\">2 f\u0151<\/span>\n                    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"><path d=\"m6 9 6 6 6-6\"\/><\/svg>\n                <\/span>\n                <div class=\"swp-dropdown\" onclick=\"event.stopPropagation()\">\n                    <h3 class=\"swp-title\" style=\"font-size:20px; margin-bottom:10px;\">L\u00e9tsz\u00e1m \u00e9s csomagok<\/h3>\n                    <div id=\"guest-rule-text\" style=\"font-family:'Montserrat',sans-serif; font-size: 11px; color: #004C99; font-weight:600; margin-bottom: 6px; min-height: 14px;\"><\/div>\n                    <div id=\"transfer-price-info\" style=\"display:none;font-family:'Montserrat',sans-serif;font-size:10px;color:#888;margin:0 0 15px 0;line-height:1.4;\">Az \u00e1r 1 aut\u00f3ra vonatkozik (max. 7 f\u0151), nem fejenk\u00e9nt ker\u00fcl felsz\u00e1m\u00edt\u00e1sra.<\/div>\n                    \n                    <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:15px;\">\n                        <span style=\"font-family:'Montserrat',sans-serif; font-size:14px; font-weight:600; color:#1A2A3A;\">Szem\u00e9lyek<\/span>\n                        <div style=\"display:flex; align-items:center; gap:20px;\">\n                            <button type=\"button\" class=\"swp-cal-nav\" onclick=\"changeSwpGuests(-1, 'guests')\" id=\"btn-guests-minus\">-<\/button>\n                            <span id=\"swp-guests-count\" style=\"font-family:'Montserrat',sans-serif; font-size:20px; font-weight:700; color:#1A2A3A; width:25px;\">2<\/span>\n                            <button type=\"button\" class=\"swp-cal-nav\" onclick=\"changeSwpGuests(1, 'guests')\" id=\"btn-guests-plus\">+<\/button>\n                        <\/div>\n                    <\/div>\n\n                    <div id=\"row-luggage\" style=\"display:none; justify-content:space-between; align-items:center; margin-bottom:15px; border-top:1px solid #eee; padding-top:15px;\">\n                        <span style=\"font-family:'Montserrat',sans-serif; font-size:14px; font-weight:600; color:#1A2A3A;\">Poggy\u00e1szok (max 8)<\/span>\n                        <div style=\"display:flex; align-items:center; gap:20px;\">\n                            <button type=\"button\" class=\"swp-cal-nav\" onclick=\"changeSwpGuests(-1, 'luggage')\" id=\"btn-luggage-minus\">-<\/button>\n                            <span id=\"swp-luggage-count\" style=\"font-family:'Montserrat',sans-serif; font-size:20px; font-weight:700; color:#1A2A3A; width:25px;\">0<\/span>\n                            <button type=\"button\" class=\"swp-cal-nav\" onclick=\"changeSwpGuests(1, 'luggage')\" id=\"btn-luggage-plus\">+<\/button>\n                        <\/div>\n                    <\/div>\n\n                    <div id=\"row-wheelchair\" style=\"display:none; justify-content:space-between; align-items:center; border-top:1px solid #eee; padding-top:15px;\">\n                        <span style=\"font-family:'Montserrat',sans-serif; font-size:14px; font-weight:600; color:#1A2A3A; text-align: left;\">Kerekessz\u00e9kkel utaz\u00f3 szem\u00e9lyek<\/span>\n\n                        <div style=\"display:flex; align-items:center; gap:20px;\">\n                            <button type=\"button\" class=\"swp-cal-nav\" onclick=\"changeSwpGuests(-1, 'wheelchair')\" id=\"btn-wheelchair-minus\">-<\/button>\n                            <span id=\"swp-wheelchair-count\" style=\"font-family:'Montserrat',sans-serif; font-size:20px; font-weight:700; color:#1A2A3A; width:25px;\">0<\/span>\n                            <button type=\"button\" class=\"swp-cal-nav\" onclick=\"changeSwpGuests(1, 'wheelchair')\" id=\"btn-wheelchair-plus\">+<\/button>\n                        <\/div>\n                    <\/div>\n\n                    <div id=\"transfer-warning-text\" style=\"display:none; margin-top:15px; padding-top:15px; border-top:1px solid #eee; font-family:'Montserrat',sans-serif; font-size:11px; color:#d9534f; font-weight:600; line-height:1.5; text-align:left;\">\n                        A j\u00e1rm\u0171vek NEM akad\u00e1lymentes\u00edtettek (nincs r\u00e1mpa).<br>\n                        Csak \u00f6sszecsukhat\u00f3 kerekessz\u00e9k sz\u00e1ll\u00edthat\u00f3 a csomagtart\u00f3ban.\n                        A vend\u00e9gnek saj\u00e1t erej\u00e9b\u0151l k\u00e9pesnek kell lennie \u00e1t\u00fclni a kerekessz\u00e9kb\u0151l az aut\u00f3 \u00fcl\u00e9s\u00e9re.\n                    <\/div>\n\n                    <div id=\"experience-warning-text\" style=\"display:none; margin-top:15px; padding-top:15px; border-top:1px solid #eee; font-family:'Montserrat',sans-serif; font-size:11px; color:#d9534f; font-weight:600; line-height:1.5; text-align:left;\">\n                        A transzferbusz NEM akad\u00e1lymentes\u00edtett (nincs r\u00e1mp\u00e1ja).<br>\n                        Csak olyan kerekessz\u00e9kes vend\u00e9get tudnak sz\u00e1ll\u00edtani, aki saj\u00e1t er\u0151b\u0151l k\u00e9pes \u00e1t\u00fclni a kerekessz\u00e9kb\u0151l az aut\u00f3 \u00fcl\u00e9s\u00e9re.<br>\n                        A kerekessz\u00e9knek \u00f6sszecsukhat\u00f3nak kell lennie, hogy bef\u00e9rjen a csomagtart\u00f3ba.\n                    <\/div>\n\n                    <div id=\"row-allergy\" style=\"display:none; margin-top:15px; padding-top:15px; border-top:1px solid #eee;\"><p style=\"font-family:'Montserrat',sans-serif;font-size:11px;color:#d9534f;font-weight:600;line-height:1.5;margin:0 0 8px 0;\">K\u00e9rj\u00fck, adja meg a csoportban el\u0151fordul\u00f3 allergi\u00e1kat, \u00e9tel\u00e9rz\u00e9kenys\u00e9geket \u00e9s intoleranci\u00e1kat, hogy s\u00e9f\u00fcnk el\u0151re fel tudjon k\u00e9sz\u00fclni az \u00d6n ig\u00e9nyeire!<\/p><label style=\"font-family:'Montserrat',sans-serif;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#1A2A3A;margin-bottom:6px;display:block;\">Allergi\u00e1k \/ \u00c9tel\u00e9rz\u00e9kenys\u00e9gek<\/label><input type=\"text\" id=\"allergy-info-input\" class=\"tr-time-input\" placeholder=\"Pl. glut\u00e9n, lakt\u00f3z, mogyor\u00f3, toj\u00e1s...\" oninput=\"document.getElementById('inp-allergy-info').value=this.value\" onchange=\"document.getElementById('inp-allergy-info').value=this.value\"><\/div>\n\n                <\/div>\n            <\/div>\n\n            <button type=\"submit\" id=\"somoza-submit-btn\" class=\"somoza-cta-button\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\">\n            <span id=\"somoza-btn-text-wrapper\" class=\"btn-text-container\">\n                <span class=\"btn-main-title\">Fizet\u00e9s \/<br>Foglal\u00e1s<\/span>\n                <span id=\"somoza-btn-price\" class=\"somoza-dynamic-price\"><\/span>\n            <\/span>\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>\n            <\/button>\n            \n        <\/form>\n\n        <!-- === EGYS\u00c9GES WIZARD POPUP (3 l\u00e9p\u00e9s: Biztos\u00edt\u00e1s \u2192 Szerz\u0151d\u00e9s \u2192 \u00d6sszegz\u00e9s) === -->\n        <div class=\"swp-overlay\" id=\"swp-popup-wizard\" onclick=\"closeSwpPopup('swp-popup-wizard')\">\n            <div class=\"swp-popup swp-wizard-popup\" onclick=\"event.stopPropagation()\" style=\"max-width:920px !important;\">\n                <button type=\"button\" class=\"swp-close\" onclick=\"closeSwpPopup('swp-popup-wizard')\">&times;<\/button>\n\n                <!-- Progress bar -->\n                <div class=\"swp-wizard-progress\" id=\"swp-wizard-progress\">\n                    <div class=\"swp-wizard-progress-fill\" id=\"swp-wizard-progress-fill\"><\/div>\n                    <div class=\"swp-wizard-step is-active\" data-progress=\"1\">\n                        <div class=\"swp-wizard-step-circle\"><span class=\"swp-wizard-step-circle-num\">1<\/span><\/div>\n                        <div class=\"swp-wizard-step-label\">Biztos\u00edt\u00e1s<\/div>\n                    <\/div>\n                    <div class=\"swp-wizard-step\" data-progress=\"2\">\n                        <div class=\"swp-wizard-step-circle\"><span class=\"swp-wizard-step-circle-num\">2<\/span><\/div>\n                        <div class=\"swp-wizard-step-label\">Szerz\u0151d\u00e9s<\/div>\n                    <\/div>\n                    <div class=\"swp-wizard-step\" data-progress=\"3\">\n                        <div class=\"swp-wizard-step-circle\"><span class=\"swp-wizard-step-circle-num\">3<\/span><\/div>\n                        <div class=\"swp-wizard-step-label\">\u00d6sszegz\u00e9s<\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- STEP 1: BIZTOS\u00cdT\u00c1S -->\n                <div class=\"swp-wizard-pane is-current\" data-pane=\"1\">\n                <h3 class=\"swp-title\" style=\"color: #004C99;\">Pr\u00e9mium Utasbiztos\u00edt\u00e1s (Escapadas Plus)<\/h3>\n                <p style=\"font-family:'Montserrat', sans-serif; font-size:14px; color:#444; margin-bottom:30px; line-height:1.6;\">A madridi \u00e9lm\u00e9ny akkor a legszebb, ha gondtalan. V\u00e1lassza ki a legink\u00e1bb megfelel\u0151 v\u00e9delmet a v\u00e1ratlan helyzetekre (betegs\u00e9g, j\u00e1ratk\u00e9s\u00e9s, \u00fatmegszak\u00edt\u00e1s). Ha m\u00e1r rendelkezik saj\u00e1t utasbiztos\u00edt\u00e1ssal, egyszer\u0171en l\u00e9pjen tov\u00e1bb.<\/p>\n\n                <div id=\"insurance-options-wrapper\" style=\"display:block; transition:0.3s;\">\n                    <div class=\"swp-popup-grid\" style=\"grid-template-columns: 1fr 1fr 1fr; gap: 20px;\">\n                        <div class=\"swp-input-group\">\n                            <label>Ter\u00fcleti hat\u00e1ly<\/label>\n                            <select id=\"ins-region\" class=\"swp-input\" onchange=\"calcInsurance()\">\n                                <option value=\"spain\">Csak Spanyolorsz\u00e1g<\/option>\n                                <option value=\"europe\">Eg\u00e9sz Eur\u00f3pa<\/option>\n                            <\/select>\n                        <\/div>\n                        <div class=\"swp-input-group\">\n                            <label>\u00datlemond\u00e1si \u00f6sszeghat\u00e1r<\/label>\n                            <select id=\"ins-limit\" class=\"swp-input\" onchange=\"calcInsurance()\">\n                                <option value=\"500\">Legfeljebb 500 \u20ac<\/option>\n                                <option value=\"1000\">Legfeljebb 1.000 \u20ac<\/option>\n                                <option value=\"1500\">Legfeljebb 1.500 \u20ac<\/option>\n                            <\/select>\n                        <\/div>\n                        <div class=\"swp-input-group\">\n                            <label>Utaz\u00e1s id\u0151tartama<\/label>\n                            <select id=\"ins-days\" class=\"swp-input\" onchange=\"calcInsurance()\">\n                                <option value=\"3\">Legfeljebb 3 nap<\/option>\n                                <option value=\"5\">Legfeljebb 5 nap<\/option>\n                                <option value=\"10\">Legfeljebb 10 nap<\/option>\n                                <option value=\"17\">Legfeljebb 17 nap<\/option>\n                            <\/select>\n                        <\/div>\n                    <\/div>\n                    \n                    <div id=\"ins-persons-section\" style=\"margin-top:20px;\"><div style=\"font-family:'Montserrat',sans-serif;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#1A2A3A;margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid rgba(26,42,58,0.1);\">Biztos\u00edtottak adatai<\/div><div id=\"ins-persons-container\"><\/div><\/div>\n\n                    <div style=\"font-family:'Montserrat', sans-serif; font-size:11px; color:#d9534f; margin-bottom:20px; font-weight:600;\">* A pr\u00e9mium utasbiztos\u00edt\u00e1s folyami haj\u00f3utakra \u00e9rv\u00e9nyes, tengeri haj\u00f3utakra nem terjed ki a hat\u00e1lya.<\/div>\n\n                    <div style=\"background: rgba(212,175,55,0.1); border:1px solid rgba(212,175,55,0.4); padding: 20px; border-radius:10px; display:flex; justify-content:space-between; align-items:center; font-family:'Montserrat', sans-serif; font-weight:700; color:#1A2A3A; margin-bottom:25px;\">\n                        <span style=\"font-size:14px;\">Biztos\u00edt\u00e1s d\u00edja (<span id=\"ins-guests-count\">2<\/span> f\u0151re):<\/span>\n                        <span id=\"ins-total-price\" style=\"font-size:24px; color:#004C99;\">0.00 EUR<\/span>\n                    <\/div>\n                <\/div>\n\n                <label class=\"swp-checkbox-label\" style=\"margin-top:20px; margin-bottom:25px; font-weight:700; color:#1A2A3A; font-size:13px; background: rgba(26,42,58,0.05); padding:15px; border-radius:8px;\">\n                    <input type=\"checkbox\" id=\"ins-optout\" onchange=\"toggleInsuranceForm()\" style=\"width:18px !important; height:18px !important;\">\n                    <span>K\u00f6sz\u00f6n\u00f6m, nem k\u00e9rek biztos\u00edt\u00e1st \/ K\u00e9s\u0151bb int\u00e9zem magamnak.<\/span>\n                <\/label>\n\n                <div class=\"swp-wizard-actions is-end\">\n                    <button type=\"button\" id=\"ins-next-btn\" class=\"swp-option-btn\" style=\"background:#1A2A3A; color:#ffffff; border:none; font-weight:700; display:inline-flex; width:auto; padding:15px 35px; justify-content:center; text-transform:uppercase; letter-spacing:1px; gap:10px;\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"proceedToContract()\">Tov\u00e1bb <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M5 12H19M12 5l7 7-7 7\"\/><\/svg><\/button>\n                <\/div>\n                <\/div>\n\n                <!-- STEP 2: SZERZ\u0150D\u00c9S -->\n                <div class=\"swp-wizard-pane\" data-pane=\"2\">\n                <h3 class=\"swp-title\" style=\"color: #004C99;\">Szolg\u00e1ltat\u00e1si Szerz\u0151d\u00e9s Megk\u00f6t\u00e9se<\/h3>\n                <p style=\"font-family:'Montserrat', sans-serif; font-size:13px; color:#444; margin-bottom:25px; line-height:1.6;\">\n                    T\u00f6ltse ki az al\u00e1bbi adatokat, hogy a rendszer elk\u00e9sz\u00edtse az \u00d6n nev\u00e9re kit\u00f6lt\u00f6tt szolg\u00e1ltat\u00e1si szerz\u0151d\u00e9st. A szerz\u0151d\u00e9st k\u00f6telez\u0151 let\u00f6lteni a tov\u00e1bbl\u00e9p\u00e9shez.\n                <\/p>\n\n                <h4 style=\"font-family:'Montserrat',sans-serif; font-size:12px; color:#004C99; font-weight:700; text-transform:uppercase; letter-spacing:1px; margin:0 0 15px 0; padding-bottom:5px; border-bottom:1px solid rgba(0,76,153,0.2);\">F\u0151utas (megrendel\u0151) adatai *<\/h4>\n\n                <div class=\"swp-popup-grid\" style=\"grid-template-columns: 1fr 1fr; gap: 20px;\">\n                    <div class=\"swp-input-group\">\n                        <label>Teljes n\u00e9v *<\/label>\n                        <input type=\"text\" id=\"con-name\" class=\"swp-input\" placeholder=\"Pl. Kov\u00e1cs J\u00e1nos\" required>\n                    <\/div>\n                    <div class=\"swp-input-group\">\n                        <label>Szem\u00e9lyi azonos\u00edt\u00f3 (szem. ig. \/ \u00fatlev\u00e9l \/ DNI) *<\/label>\n                        <input type=\"text\" id=\"con-dni\" class=\"swp-input\" placeholder=\"Pl. 123456AB\" required>\n                    <\/div>\n                <\/div>\n                <div class=\"swp-input-group\">\n                    <label>Lakc\u00edm (ir\u00e1ny\u00edt\u00f3sz\u00e1m, v\u00e1ros, utca, h\u00e1zsz\u00e1m) *<\/label>\n                    <input type=\"text\" id=\"con-address\" class=\"swp-input\" placeholder=\"Pl. 1051 Budapest, P\u00e9lda utca 1.\" required>\n                <\/div>\n                <div class=\"swp-popup-grid\" style=\"grid-template-columns: 1fr 1fr 1fr; gap: 20px;\">\n                    <div class=\"swp-input-group\">\n                        <label>Szerz\u0151d\u00e9sk\u00f6t\u00e9s helye *<\/label>\n                        <input type=\"text\" id=\"con-city\" class=\"swp-input\" placeholder=\"Pl. Madrid\" value=\"Madrid\" required>\n                    <\/div>\n                    <div class=\"swp-input-group\">\n                        <label>Telefonsz\u00e1m *<\/label>\n                        <input type=\"tel\" id=\"con-phone\" class=\"swp-input\" placeholder=\"+36 30 123 4567\" required>\n                    <\/div>\n                    <div class=\"swp-input-group\">\n                        <label>E-mail c\u00edm *<\/label>\n                        <input type=\"email\" id=\"con-email\" class=\"swp-input\" placeholder=\"pelda@email.com\" required>\n                    <\/div>\n                <\/div>\n\n                <h4 style=\"font-family:'Montserrat',sans-serif; font-size:12px; color:#004C99; font-weight:700; text-transform:uppercase; letter-spacing:1px; margin:20px 0 15px 0; padding-bottom:5px; border-bottom:1px solid rgba(0,76,153,0.2);\">\u00datit\u00e1rsak adatai (opcion\u00e1lis, max. 4 f\u0151)<\/h4>\n\n                <div class=\"swp-popup-grid\" style=\"grid-template-columns: 1fr 1fr; gap: 15px; margin-bottom:10px;\">\n                    <input type=\"text\" id=\"co-name-1\" class=\"swp-input\" placeholder=\"1. \u00fatit\u00e1rs teljes neve\">\n                    <input type=\"text\" id=\"co-dni-1\" class=\"swp-input\" placeholder=\"1. \u00fatit\u00e1rs szem. ig. \/ DNI\">\n                <\/div>\n                <div class=\"swp-popup-grid\" style=\"grid-template-columns: 1fr 1fr; gap: 15px; margin-bottom:10px;\">\n                    <input type=\"text\" id=\"co-name-2\" class=\"swp-input\" placeholder=\"2. \u00fatit\u00e1rs teljes neve\">\n                    <input type=\"text\" id=\"co-dni-2\" class=\"swp-input\" placeholder=\"2. \u00fatit\u00e1rs szem. ig. \/ DNI\">\n                <\/div>\n                <div class=\"swp-popup-grid\" style=\"grid-template-columns: 1fr 1fr; gap: 15px; margin-bottom:10px;\">\n                    <input type=\"text\" id=\"co-name-3\" class=\"swp-input\" placeholder=\"3. \u00fatit\u00e1rs teljes neve\">\n                    <input type=\"text\" id=\"co-dni-3\" class=\"swp-input\" placeholder=\"3. \u00fatit\u00e1rs szem. ig. \/ DNI\">\n                <\/div>\n                <div class=\"swp-popup-grid\" style=\"grid-template-columns: 1fr 1fr; gap: 15px; margin-bottom:20px;\">\n                    <input type=\"text\" id=\"co-name-4\" class=\"swp-input\" placeholder=\"4. \u00fatit\u00e1rs teljes neve\">\n                    <input type=\"text\" id=\"co-dni-4\" class=\"swp-input\" placeholder=\"4. \u00fatit\u00e1rs szem. ig. \/ DNI\">\n                <\/div>\n\n                <div class=\"swp-legal-consent-box\" style=\"margin-top:20px;\">\n                    <p class=\"swp-legal-smalltext\">Az ezen az \u0171rlapon kereszt\u00fcl megadott adatokat Terdik Tibor egy\u00e9ni v\u00e1llalkoz\u00f3 (aut\u00f3nomo) \u2013 kereskedelmi nev\u00e9n Rollio de Madrid (<a href=\"https:\/\/www.rolliodemadrid.com\" target=\"_blank\">www.rolliodemadrid.com<\/a>) \u2013 fogja kezelni, mint a megadott adatok kezel\u00e9s\u00e9\u00e9rt felel\u0151s szem\u00e9ly (adatkezel\u0151). Az adatgy\u0171jt\u00e9s c\u00e9lja az utaz\u00e1s foglal\u00e1s\u00e1nak \u00e9s szerz\u0151d\u00e9sk\u00f6t\u00e9s\u00e9nek kezel\u00e9se. A kezel\u00e9s jogalapja a szerz\u0151d\u00e9ses kapcsolat fenn\u00e1ll\u00e1sa. Az adatokat \u00e1tadhatjuk harmadik f\u00e9l turisztikai szolg\u00e1ltat\u00f3knak, kiz\u00e1r\u00f3lag a szolg\u00e1ltat\u00e1sok teljes\u00edt\u00e9s\u00e9nek biztos\u00edt\u00e1sa \u00e9rdek\u00e9ben. Az \u00dcgyf\u00e9l garant\u00e1lja az adatok pontoss\u00e1g\u00e1t, \u00e9s azt, hogy beszerezte az \u00fatit\u00e1rsak (ha vannak) hozz\u00e1j\u00e1rul\u00e1s\u00e1t. \u00d6n gyakorolhatja a hozz\u00e1f\u00e9r\u00e9shez, helyesb\u00edt\u00e9shez, t\u00f6rl\u00e9shez, korl\u00e1toz\u00e1shoz \u00e9s tiltakoz\u00e1shoz val\u00f3 jog\u00e1t az adatv\u00e9delmi ir\u00e1nyelveinkben r\u00f6gz\u00edtett ir\u00e1nymutat\u00e1sok szerint.<\/p>\n                <\/div>\n\n                <div style=\"margin-top:20px; padding:20px; background:rgba(212,175,55,0.1); border:1px solid rgba(212,175,55,0.4); border-radius:10px;\">\n                    <p style=\"font-family:'Montserrat',sans-serif; font-size:13px; color:#1A2A3A; margin:0 0 8px 0; font-weight:600;\">\n                        A tov\u00e1bbl\u00e9p\u00e9shez k\u00f6telez\u0151 let\u00f6lteni \u00e9s elolvasni a szerz\u0151d\u00e9st:\n                    <\/p>\n                    <p style=\"font-family:'Montserrat',sans-serif; font-size:11px; color:#666; margin:0 0 12px 0; line-height:1.5;\">\n                        A gombra kattintva megny\u00edlik egy nyomtat\u00e1si ablak. A \"C\u00e9l\" \/ \"Destination\" mez\u0151ben v\u00e1lassza a <strong style=\"color:#004C99;\">\"Ment\u00e9s PDF-k\u00e9nt\"<\/strong> opci\u00f3t, majd kattintson a <strong>Ment\u00e9s<\/strong> gombra a f\u00e1jl g\u00e9p\u00e9re t\u00f6lt\u00e9s\u00e9hez.\n                    <\/p>\n                    <button type=\"button\" id=\"download-contract-btn\" onclick=\"downloadContract()\" style=\"background:#004C99; color:#fff; border:none; font-family:'Montserrat',sans-serif; font-size:13px; font-weight:700; padding:14px 25px; border-radius:8px; cursor:pointer; text-transform:uppercase; letter-spacing:1px; transition:0.3s; display:inline-flex; align-items:center; gap:10px;\">\n                        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3\"\/><\/svg>\n                        Szerz\u0151d\u00e9s let\u00f6lt\u00e9se (PDF)\n                    <\/button>\n                    <div id=\"download-status\" style=\"display:none; margin-top:12px; font-family:'Montserrat',sans-serif; font-size:12px; color:#28a745; font-weight:600;\">&#10003; Let\u00f6ltve \u00e9s napl\u00f3zva<\/div>\n                <\/div>\n\n                <label class=\"swp-checkbox-label\" id=\"contract-accept-label\" style=\"margin-top:20px; margin-bottom:25px; font-weight:600; color:#1A2A3A; font-size:13px; background: rgba(26,42,58,0.05); padding:15px; border-radius:8px; opacity:0.5; cursor:not-allowed;\">\n                    <input type=\"checkbox\" id=\"contract-accept\" disabled style=\"width:18px !important; height:18px !important;\">\n                    <span>Elolvastam, meg\u00e9rtettem \u00e9s elfogadom a let\u00f6lt\u00f6tt szerz\u0151d\u00e9ses dokumentumot. *<\/span>\n                <\/label>\n\n                <div class=\"swp-wizard-actions\">\n                    <button type=\"button\" class=\"swp-wizard-back-btn\" onclick=\"goToWizardStep(1)\">\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M19 12H5M12 19l-7-7 7-7\"\/><\/svg>\n                        Vissza\n                    <\/button>\n                    <button type=\"button\" id=\"contract-next-btn\" disabled class=\"swp-option-btn\" style=\"background:#999; color:#ffffff; border:none; font-weight:700; display:inline-flex; width:auto; padding:15px 35px; justify-content:center; text-transform:uppercase; letter-spacing:1px; cursor:not-allowed; gap:10px;\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" onclick=\"proceedFromContractToSummary()\">Tov\u00e1bb az \u00f6sszegz\u00e9shez <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M5 12H19M12 5l7 7-7 7\"\/><\/svg><\/button>\n                <\/div>\n                <\/div>\n\n                <!-- STEP 3: \u00d6SSZEGZ\u00c9S -->\n                <div class=\"swp-wizard-pane\" data-pane=\"3\">\n                        <h3 class=\"swp-title\" style=\"color: #004C99;\">Foglal\u00e1s \u00d6sszegz\u00e9se<\/h3>\n                        <div class=\"swp-summary-details\" style=\"margin-top:0;\">\n                            <div><strong>\u00c9lm\u00e9ny:<\/strong> <span id=\"sum-exp\"><\/span><\/div>\n                            <div><strong>D\u00e1tum:<\/strong> <span id=\"sum-date\"><\/span><\/div>\n                            <div><strong>Id\u0151pont:<\/strong> <span id=\"sum-time\"><\/span><\/div>\n                            <div id=\"sum-flight-row\" style=\"display:none;\"><strong>J\u00e1rat:<\/strong> <span id=\"sum-flight\"><\/span><\/div>\n                            <div id=\"sum-language-row\" style=\"display:none;\"><strong>Nyelv:<\/strong> <span id=\"sum-language\"><\/span><\/div>\n                            <div id=\"sum-allergy-row\" style=\"display:none;\"><strong>Allergi\u00e1k:<\/strong> <span id=\"sum-allergy\"><\/span><\/div>\n                            <div><strong>L\u00e9tsz\u00e1m:<\/strong> <span id=\"sum-guests\"><\/span><\/div>\n                            <div id=\"sum-extras-row\" style=\"display:none; margin-top:5px; font-size:13px;\"><strong>Extr\u00e1k:<\/strong> <span id=\"sum-extras\"><\/span><\/div>\n\t\t\t\t\t\t\t\t<div id=\"sum-insurance-row\" style=\"margin-top:5px; font-size:13px;\"><strong>Biztos\u00edt\u00e1s:<\/strong> <span id=\"sum-insurance-val\"><\/span><\/div>\n                            <div id=\"sum-price-breakdown\" style=\"margin-top:10px; padding-top:10px; border-top:1px solid rgba(26,42,58,0.1); font-family:'Montserrat',sans-serif; font-size:13px; color:#1A2A3A;\">\n                                <div><strong style=\"display:inline-block; width:110px;\">Program:<\/strong> <span id=\"sum-program-price\"><\/span><\/div>\n                                <div id=\"sum-ins-breakdown-row\" style=\"display:none;\"><strong style=\"display:inline-block; width:110px;\">Biztos\u00edt\u00e1s:<\/strong> <span id=\"sum-ins-price\"><\/span><\/div>\n                            <\/div>\n                            <div class=\"swp-summary-price\"><strong>Fizetend\u0151:<\/strong> <span id=\"sum-price\" style=\"color:#004C99; font-weight:700;\"><\/span><\/div>\n                        <\/div>\n\t\t\t\t\t\t\t\t<div class=\"swp-legal-consent-box\">\n                            <p class=\"swp-legal-smalltext\">Az ezen az \u0171rlapon kereszt\u00fcl megadott adatokat Terdik Tibor egy\u00e9ni v\u00e1llalkoz\u00f3, kereskedelmi nev\u00e9n Rollio de Madrid (www.rolliodemadrid.com) kezeli a megadott adatok adatkezel\u0151jek\u00e9nt. Ezen adatok gy\u0171jt\u00e9s\u00e9nek c\u00e9lja a k\u00e9rt inform\u00e1ci\u00f3k kezel\u00e9se. A jogalap egy szerz\u0151d\u00e9sk\u00f6t\u00e9st megel\u0151z\u0151 kapcsolat fenn\u00e1ll\u00e1sa, valamint az ahhoz f\u0171z\u0151d\u0151 jogos \u00e9rdek\u00fcnk, hogy v\u00e1laszt adjunk a megkeres\u00e9s\u00e9re, vagy az \u00d6n kifejezett hozz\u00e1j\u00e1rul\u00e1sa. Az adatok k\u00f6z\u00f6lhet\u0151k az \u00d6n k\u00e9r\u00e9s\u00e9ben \u00e9rintett v\u00e1llalatokkal. Ezeken az eseteken k\u00edv\u00fcl nem adunk \u00e1t adatokat harmadik feleknek, kiv\u00e9ve jogi k\u00f6telezetts\u00e9g eset\u00e9n. \u00d6n gyakorolhatja az adatokhoz val\u00f3 hozz\u00e1f\u00e9r\u00e9shez, azok helyesb\u00edt\u00e9s\u00e9hez \u00e9s t\u00f6rl\u00e9s\u00e9hez val\u00f3 jog\u00e1t, k\u00f6vetve adatv\u00e9delmi szab\u00e1lyzatunk ir\u00e1nymutat\u00e1sait.<\/p>\n\n                            <label class=\"swp-checkbox-label\">\n                                <input type=\"checkbox\" id=\"consent-privacy\" required>\n                                <span>Elolvastam, \u00e9s elfogadom az <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/adatvedelmi-tajekoztato\/\" target=\"_blank\">Adatv\u00e9delmi szab\u00e1lyzatot<\/a>. *<\/span>\n                            <\/label>\n                            \n                            <label class=\"swp-checkbox-label\">\n                                <input type=\"checkbox\" id=\"consent-terms\" required>\n                                <span>Elolvastam \u00e9s elfogadom az <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/altalanos-szerzodesi-feltetelek\/\" target=\"_blank\">\u00c1ltal\u00e1nos Szerz\u0151d\u00e9si Felt\u00e9teleket<\/a>. *<\/span>\n                            <\/label>\n                            \n                          <label class=\"swp-checkbox-label\" style=\"display: flex !important; align-items: flex-start !important; gap: 10px !important; margin-bottom: 0px !important;\">\n                                <input type=\"checkbox\" id=\"consent-marketing\" name=\"marketing_consent\" value=\"yes\" style=\"margin: 3px 0 0 0 !important; padding: 0 !important; width: 14px !important; height: 14px !important; position: static !important; flex-shrink: 0 !important; opacity: 1 !important;\">\n                                <span style=\"margin: 0 !important; padding: 0 !important; display: inline-block !important; text-align: left !important; text-indent: 0 !important; padding-left: 0 !important; margin-left: 0 !important;\">Szeretn\u00e9k \u00fajdons\u00e1gokat \u00e9s exkluz\u00edv tartalmakat kapni kereskedelmi kommunik\u00e1ci\u00f3kon kereszt\u00fcl.<\/span>\n                            <\/label>\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/div>\n\n                    <div class=\"swp-wizard-actions\">\n                        <button type=\"button\" class=\"swp-wizard-back-btn\" onclick=\"goToWizardStep(2)\">\n                            <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M19 12H5M12 19l-7-7 7-7\"\/><\/svg>\n                            Vissza\n                        <\/button>\n                        <button type=\"button\" id=\"somoza-final-pay-btn\" class=\"swp-option-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\" style=\"background:#1A2A3A; color:#ffffff; border:none; font-weight:700; display:inline-flex; width:auto; padding:15px 35px; justify-content:center; margin:0;\">Foglal\u00e1s \u00e9s fizet\u00e9s<\/button>\n                    <\/div>\n                <\/div>\n                <!-- \/STEP 3 -->\n\n            <\/div>\n        <\/div>\n        <div id=\"contract-template-hu\" data-lang=\"hu\" class=\"contract-template\" style=\"position:fixed; top:0; left:0; width:794px; padding:40px; background:#ffffff; color:#000000; font-family:'Times New Roman', Times, serif; font-size:11pt; line-height:1.5; opacity:0; pointer-events:none; z-index:-9999;\">\n            <h2 style=\"text-align:center; font-size:14pt; margin:0 0 20px 0; text-transform:uppercase;\">Szolg\u00e1ltat\u00e1si Szerz\u0151d\u00e9s<\/h2>\n\n            <p><strong><span data-fill=\"city\">______________<\/span><\/strong> helys\u00e9gben, <strong><span data-fill=\"year\">20__<\/span><\/strong> \u00e9v <strong><span data-fill=\"month\">__________<\/span><\/strong> h\u00f3 <strong><span data-fill=\"day\">___<\/span><\/strong> napj\u00e1n<\/p>\n\n            <h3 style=\"font-size:12pt; margin:20px 0 10px 0;\">JELENLEV\u0150K<\/h3>\n\n            <p style=\"text-align:justify;\">EGYR\u00c9SZR\u0150L, <strong>D.\/D\u00aa <span data-fill=\"name\">______________________________<\/span><\/strong>, nagykor\u00fa, lakhelye minden joghat\u00e1s szempontj\u00e1b\u00f3l: <strong><span data-fill=\"address\">__________________________________<\/span><\/strong>, szem\u00e9lyi azonos\u00edt\u00f3 sz\u00e1ma: <strong><span data-fill=\"dni\">_______________________<\/span><\/strong>, a tov\u00e1bbiakban <strong>AZ UTAS (EL VIAJERO)<\/strong>.<\/p>\n\n            <p data-cotrav-block=\"intro\">Saj\u00e1t nev\u00e9ben \u00e9s a k\u00f6vetkez\u0151 szem\u00e9lyek k\u00e9pviselet\u00e9ben:<\/p>\n            <p data-cotrav-row=\"1\">D.\/D\u00aa <span data-fill=\"co-name-1\">_______________<\/span> &nbsp;&nbsp; szem. ig. sz\u00e1m: <span data-fill=\"co-dni-1\">_______________<\/span><\/p>\n            <p data-cotrav-row=\"2\">D.\/D\u00aa <span data-fill=\"co-name-2\">_______________<\/span> &nbsp;&nbsp; szem. ig. sz\u00e1m: <span data-fill=\"co-dni-2\">_______________<\/span><\/p>\n            <p data-cotrav-row=\"3\">D.\/D\u00aa <span data-fill=\"co-name-3\">_______________<\/span> &nbsp;&nbsp; szem. ig. sz\u00e1m: <span data-fill=\"co-dni-3\">_______________<\/span><\/p>\n            <p data-cotrav-row=\"4\">D.\/D\u00aa <span data-fill=\"co-name-4\">_______________<\/span> &nbsp;&nbsp; szem. ig. sz\u00e1m: <span data-fill=\"co-dni-4\">_______________<\/span><\/p>\n\n            <p data-cotrav-block=\"closing\">A tov\u00e1bbiakban egy\u00fcttesen: <strong>AZ UTASOK<\/strong>.<\/p>\n\n            <p style=\"text-align:justify;\">M\u00c1SR\u00c9SZR\u0150L, <strong>Rollio De Madrid<\/strong>, C.I.MU.529.m. enged\u00e9lysz\u00e1m\u00fa utaz\u00e1si irodak\u00e9nt, sz\u00e9khelye minden joghat\u00e1s szempontj\u00e1b\u00f3l: Calle San Leandro 2., 30383 Los Nietos, Murcia, ad\u00f3azonos\u00edt\u00f3 sz\u00e1m: Z3360877F, e-mail: info@rolliodemadrid.com, weboldal: www.rolliodemadrid.com, a tov\u00e1bbiakban <strong>AZ \u00dcGYN\u00d6KS\u00c9G (LA AGENCIA)<\/strong>.<\/p>\n\n            <p style=\"text-align:justify;\">Mindk\u00e9t f\u00e9l elismeri a m\u00e1sik f\u00e9l jelen szerz\u0151d\u00e9s megk\u00f6t\u00e9s\u00e9hez sz\u00fcks\u00e9ges \u00e1ltal\u00e1nos jogk\u00e9pess\u00e9g\u00e9t, \u00e9s<\/p>\n\n            <h3 style=\"font-size:12pt; margin:20px 0 10px 0;\">KIJELENTIK<\/h3>\n            <p style=\"text-align:justify;\"><strong>I.-<\/strong> Hogy AZ \u00dcGYN\u00d6KS\u00c9G leg\u00e1lisan bejegyzett Utaz\u00e1si Iroda, amely rendelkezik minden sz\u00fcks\u00e9ges enged\u00e9llyel \u00e9s felhatalmaz\u00e1ssal tev\u00e9kenys\u00e9g\u00e9nek gyakorl\u00e1s\u00e1hoz.<\/p>\n            <p style=\"text-align:justify;\"><strong>II.-<\/strong> AZ UTAS kifejezi \u00e9rdekl\u0151d\u00e9s\u00e9t az Utaz\u00e1si Iroda \u00e1ltal k\u00edn\u00e1lt szolg\u00e1ltat\u00e1sok ig\u00e9nybev\u00e9tele ir\u00e1nt, mint p\u00e9ld\u00e1ul jegyfoglal\u00e1sok k\u00f6zleked\u00e9si eszk\u00f6z\u00f6kre, kir\u00e1ndul\u00e1sok vagy g\u00e9pj\u00e1rm\u0171b\u00e9rl\u00e9s, illetve egy\u00e9b, az Utaz\u00e1si Iroda \u00e1ltal ny\u00fajtott szolg\u00e1ltat\u00e1sok. Kifejezetten r\u00f6gz\u00edt\u00e9sre ker\u00fcl, hogy a szolg\u00e1ltat\u00e1sok nem tartalmaznak sz\u00e1ll\u00e1st, \u00e9s id\u0151tartamuk huszonn\u00e9gy \u00f3r\u00e1n\u00e1l r\u00f6videbb, az 1\/2007. sz\u00e1m\u00fa Kir\u00e1lyi T\u00f6rv\u00e9nyerej\u0171 Rendelet (a Fogyaszt\u00f3k \u00e9s Felhaszn\u00e1l\u00f3k V\u00e9delm\u00e9r\u0151l sz\u00f3l\u00f3 \u00c1ltal\u00e1nos T\u00f6rv\u00e9ny egys\u00e9ges szerkezetbe foglalt sz\u00f6vege) 150.2.a) cikk\u00e9nek rendelkez\u00e9seivel \u00f6sszhangban. K\u00f6vetkez\u00e9sk\u00e9ppen a jelen szerz\u0151d\u00e9sk\u00f6t\u00e9s nem min\u0151s\u00fcl utaz\u00e1si csomagszerz\u0151d\u00e9snek, amely k\u00f6zleked\u00e9s, sz\u00e1ll\u00e1s vagy egy\u00e9b utaz\u00e1si szolg\u00e1ltat\u00e1sok egyetlen szerz\u0151d\u00e9s keret\u00e9ben t\u00f6rt\u00e9n\u0151 egy\u00fcttes kombin\u00e1ci\u00f3j\u00e1t jelenti, \u00e9s egy\u00e9rtelm\u0171en k\u00edv\u00fcl esik az utaz\u00e1si csomagokra \u00e9s kapcsol\u00f3d\u00f3 utaz\u00e1si szolg\u00e1ltat\u00e1sokra vonatkoz\u00f3 k\u00fcl\u00f6n\u00f6s jogszab\u00e1lyok hat\u00e1ly\u00e1n.<\/p>\n            <p style=\"text-align:justify;\">A felek ennek \u00e9rdek\u00e9ben \u2013 miut\u00e1n a t\u00e1rgyban meg\u00e1llapod\u00e1sra jutottak \u2013 az al\u00e1bbi felt\u00e9telek szerint megk\u00f6tik a jelen szolg\u00e1ltat\u00e1sny\u00fajt\u00e1si szerz\u0151d\u00e9st (a tov\u00e1bbiakban: SZERZ\u0150D\u00c9S):<\/p>\n\n            <h3 style=\"font-size:12pt; margin:20px 0 10px 0;\">Z\u00c1RAD\u00c9KOK<\/h3>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">ELS\u0150.- T\u00c1RGY<\/p>\n            <p style=\"text-align:justify;\">A r\u00e9szletes el\u0151terjeszt\u00e9s alapj\u00e1n a felek k\u00f6lcs\u00f6n\u00f6s szolg\u00e1ltat\u00e1sokat nyilv\u00e1n\u00edtanak ki, amelyek a SZERZ\u0150D\u00c9S t\u00e1rgy\u00e1t k\u00e9pezik, az al\u00e1bbiak szerint:<\/p>\n            <p style=\"text-align:justify;\">AZ \u00dcGYN\u00d6KS\u00c9G \u00e1ltal AZ UTAS r\u00e9sz\u00e9re ny\u00fajtott szervez\u00e9si \u00e9s k\u00f6zvet\u00edt\u0151i szolg\u00e1ltat\u00e1sok, melyek magukban foglalj\u00e1k a kultur\u00e1lis, gasztron\u00f3miai, sz\u00f3rakoztat\u00f3 l\u00e1togat\u00e1sokat vagy idegenvezetett t\u00far\u00e1kat kis csoportok sz\u00e1m\u00e1ra, bele\u00e9rtve adott esetben a priv\u00e1t rept\u00e9ri transzfert is, ha azt AZ UTAS megrendelte.<\/p>\n            <p style=\"text-align:justify;\">A szolg\u00e1ltat\u00e1sok konkr\u00e9t tartalm\u00e1t, r\u00e9szletes le\u00edr\u00e1s\u00e1t, egyedi felt\u00e9teleit, id\u0151pontjait, \u00e1rait \u00e9s adott esetben a lemond\u00e1si ir\u00e1nyelveket az AZ \u00dcGYN\u00d6KS\u00c9G \u00e1ltal AZ UTAS r\u00e9sz\u00e9re a szerz\u0151d\u00e9sk\u00f6t\u00e9st megel\u0151z\u0151en ny\u00fajtott szerz\u0151d\u00e9sk\u00f6t\u00e9s el\u0151tti t\u00e1j\u00e9koztat\u00e1s tartalmazza.<\/p>\n            <p style=\"text-align:justify;\">A szolg\u00e1ltat\u00f3k \u00e1ltal ny\u00fajtott szolg\u00e1ltat\u00e1sok min\u0151s\u00e9g\u00e9t \u00e9s tartalm\u00e1t az orsz\u00e1g illet\u00e9kes szervei \u00e9s\/vagy felhatalmazott hat\u00f3s\u00e1ga \u00e1ltal kiosztott hivatalos turisztikai kateg\u00f3ria hat\u00e1rozza meg, ha van ilyen.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">M\u00c1SODIK.- A FELEK K\u00d6TELEZETTS\u00c9GEI<\/p>\n            <p style=\"text-align:justify;\">A jelen SZERZ\u0150D\u00c9SBEN \u00e9s\/vagy a t\u00f6rv\u00e9nyben meghat\u00e1rozott egy\u00e9b k\u00f6telezetts\u00e9gek s\u00e9relme n\u00e9lk\u00fcl a felek k\u00f6telezetts\u00e9get v\u00e1llalnak az al\u00e1bbiakra:<\/p>\n            <p><strong>AZ \u00dcGYN\u00d6KS\u00c9G k\u00f6telezetts\u00e9gei:<\/strong><\/p>\n            <p style=\"text-align:justify;\">A megb\u00edzotti gondoss\u00e1ggal elj\u00e1rva elv\u00e9gezni az el\u0151z\u0151 z\u00e1rad\u00e9kban megjel\u00f6lt szolg\u00e1ltat\u00e1sokat, megt\u00e9ve minden sz\u00fcks\u00e9ges int\u00e9zked\u00e9st a szerz\u0151d\u00f6tt szolg\u00e1ltat\u00e1sok k\u00fcl\u00f6nb\u00f6z\u0151 szolg\u00e1ltat\u00f3ival szemben, \u00e9s halad\u00e9ktalanul k\u00f6z\u00f6lni AZ UTASSAL minden olyan v\u00e1ltoz\u00e1st, m\u00f3dos\u00edt\u00e1st vagy esem\u00e9nyt, amelyr\u0151l AZ \u00dcGYN\u00d6KS\u00c9G tudom\u00e1st szerez.<\/p>\n            <p><strong>AZ \u00dcGYF\u00c9L \u00e1ltal v\u00e1llalt k\u00f6telezetts\u00e9gek:<\/strong><\/p>\n            <p style=\"text-align:justify;\">A megfelel\u0151 \u00e1rak, d\u00edjak, illet\u00e9kek \u00e9s k\u00f6lts\u00e9gek megfizet\u00e9se, valamint a jelen meg\u00e1llapod\u00e1sban meghat\u00e1rozott egy\u00e9b k\u00f6telezetts\u00e9gek betart\u00e1sa.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">HARMADIK.- HAT\u00c1LY<\/p>\n            <p style=\"text-align:justify;\">A jelen SZERZ\u0150D\u00c9S hat\u00e1lya egybeesik az ELS\u0150 Z\u00c1RAD\u00c9KBAN meghat\u00e1rozott szolg\u00e1ltat\u00e1s teljes\u00edt\u00e9s\u00e9nek id\u0151tartam\u00e1val.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">NEGYEDIK.- \u00c1R \u00c9S FIZET\u00c9SI M\u00d3D<\/p>\n            <p style=\"text-align:justify;\">A szerz\u0151d\u00f6tt szolg\u00e1ltat\u00e1sok \u00e1ra: <strong><span data-fill=\"price\">_____________<\/span>&nbsp;\u20ac<\/strong>.<\/p>\n            <p style=\"text-align:justify;\">AZ UTAS a foglal\u00e1s id\u0151pontj\u00e1ban fizet az \u00dcGYN\u00d6KS\u00c9GNEK az \u00f6sszes szolg\u00e1ltat\u00e1s ut\u00e1n teljes \u00f6sszegben. Elfogadott fizet\u00e9si m\u00f3dok: banki \u00e1tutal\u00e1s vagy bankk\u00e1rty\u00e1s fizet\u00e9s az online foglal\u00e1si rendszeren kereszt\u00fcl. Banki \u00e1tutal\u00e1s eset\u00e9n az \u00fcgyn\u00f6ks\u00e9g al\u00e1bbi sz\u00e1ml\u00e1j\u00e1ra t\u00f6rt\u00e9nik a fizet\u00e9s:<\/p>\n            <p>IBAN: ES61 2100 6318 1102 0012 5101<\/p>\n            <p>K\u00e9szp\u00e9nzes fizet\u00e9st nem fogadunk el.<\/p>\n            <p style=\"text-align:justify;\">AZ UTAS k\u00f6teles a fizet\u00e9st a szerz\u0151d\u00f6tt szolg\u00e1ltat\u00e1sok (ak\u00e1r az \u00dcGYN\u00d6KS\u00c9G, ak\u00e1r annak partnerei \u00e1ltal ny\u00fajtott) megkezd\u00e9se el\u0151tt teljes\u00edteni.<\/p>\n            <p>Az \u00f6sszegek megfizet\u00e9s\u00e9nek napja: <strong><span data-fill=\"payyear\">202_<\/span><\/strong>. <strong><span data-fill=\"paymonth\">________<\/span><\/strong>. <strong><span data-fill=\"payday\">__<\/span><\/strong><\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">\u00d6T\u00d6DIK.- LEMOND\u00c1SI D\u00cdJAK<\/p>\n            <p style=\"text-align:justify;\">A jelen SZERZ\u0150D\u00c9S lemond\u00e1si d\u00edjakkal j\u00e1r. AZ UTAS b\u00e1rmikor lemondhatja a szolg\u00e1ltat\u00e1st a szolg\u00e1ltat\u00e1s kezdete el\u0151tt, a k\u00f6vetkez\u0151 lemond\u00e1si d\u00edjak mellett:<\/p>\n            <p><strong>Lemond\u00e1si felt\u00e9telek:<\/strong><\/p>\n            <p style=\"text-align:justify;\">&bull; A szolg\u00e1ltat\u00e1s d\u00e1tuma el\u0151tt legal\u00e1bb 7 nappal t\u00f6rt\u00e9n\u0151 lemond\u00e1s eset\u00e9n: a befizetett \u00f6sszeg <strong>100%<\/strong>-\u00e1nak visszat\u00e9r\u00edt\u00e9se.<\/p>\n            <p style=\"text-align:justify;\">&bull; 7 napon bel\u00fcl, de a szolg\u00e1ltat\u00e1s megkezd\u00e9se el\u0151tt 24 \u00f3r\u00e1val t\u00f6rt\u00e9n\u0151 lemond\u00e1s eset\u00e9n: a befizetett \u00f6sszeg <strong>50%<\/strong>-\u00e1nak visszat\u00e9r\u00edt\u00e9se.<\/p>\n            <p style=\"text-align:justify;\">&bull; 24 \u00f3r\u00e1n\u00e1l kevesebb id\u0151vel a megkezd\u00e9s el\u0151tt t\u00f6rt\u00e9n\u0151 lemond\u00e1s, illetve a megadott helyen \u00e9s id\u0151pontban val\u00f3 meg nem jelen\u00e9s eset\u00e9n: nem j\u00e1r visszat\u00e9r\u00edt\u00e9s.<\/p>\n            <p style=\"text-align:justify;\">Ezen felt\u00e9telek alkalmaz\u00e1sa nem \u00e9rinti, hogy kiv\u00e9teles esetekben az \u00dcGYN\u00d6KS\u00c9G saj\u00e1t m\u00e9rlegel\u00e9se szerint alternat\u00edv megold\u00e1sokat \u00e9rt\u00e9kelhet.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">HATODIK.- SZEM\u00c9LYES ADATOK V\u00c9DELME<\/p>\n            <p style=\"text-align:justify;\">Az Eur\u00f3pai Parlament \u00e9s a Tan\u00e1cs 2016. \u00e1prilis 27-i (EU) 2016\/679 rendelet\u00e9nek (\u00c1ltal\u00e1nos Adatv\u00e9delmi Rendelet, GDPR) \u00e9s a 3\/2018. december 5-i, a Szem\u00e9lyes Adatok V\u00e9delm\u00e9r\u0151l \u00e9s a Digit\u00e1lis Jogok Garanci\u00e1j\u00e1r\u00f3l sz\u00f3l\u00f3 Sarkalatos T\u00f6rv\u00e9ny rendelkez\u00e9seinek megfelel\u0151en AZ UTAS t\u00e1j\u00e9koztatva van arr\u00f3l, hogy szem\u00e9lyes adatait az \u00dcGYN\u00d6KS\u00c9G mint adatkezel\u0151 kezeli, a jelen turisztikai szolg\u00e1ltat\u00e1sny\u00fajt\u00e1si SZERZ\u0150D\u00c9SB\u0150L sz\u00e1rmaz\u00f3 kapcsolat kezel\u00e9se, v\u00e9grehajt\u00e1sa \u00e9s fenntart\u00e1sa \u00e9rdek\u00e9ben. Ez mag\u00e1ban foglalja mindazt, ami a megrendelt szolg\u00e1ltat\u00e1sok megfelel\u0151 megszervez\u00e9s\u00e9hez \u00e9s ny\u00fajt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges.<\/p>\n            <p style=\"text-align:justify;\">Az adatokat a jelen SZERZ\u0150D\u00c9S hat\u00e1lya alatt \u00e9s a szerz\u0151d\u00e9ses kapcsolatb\u00f3l ered\u0151 felel\u0151ss\u00e9gek el\u00e9v\u00fcl\u00e9s\u00e9ig \u0151rizz\u00fck. T\u00e1j\u00e9koztatjuk AZ UTAST, hogy a megrendelt turisztikai szolg\u00e1ltat\u00e1sok megfelel\u0151 kezel\u00e9se \u00e9s ny\u00fajt\u00e1sa \u00e9rdek\u00e9ben a szem\u00e9lyes adatok tov\u00e1bb\u00edt\u00e1sra ker\u00fclnek az utaz\u00e1s megszervez\u00e9s\u00e9ben k\u00f6zvetlen\u00fcl \u00e9rintett turisztikai c\u00e9geknek. Ez mag\u00e1ban foglal t\u00f6bbek k\u00f6z\u00f6tt l\u00e9git\u00e1rsas\u00e1gokat, k\u00f6zleked\u00e9si v\u00e1llalatokat, sz\u00e1llod\u00e1kat \u00e9s m\u00e1s sz\u00e1ll\u00e1sad\u00f3kat, foglal\u00e1si k\u00f6zpontokat, g\u00e9pj\u00e1rm\u0171k\u00f6lcs\u00f6nz\u0151 c\u00e9geket, utasbiztos\u00edt\u00f3kat, tev\u00e9kenys\u00e9gek vagy kir\u00e1ndul\u00e1sok szervez\u0151it \u00e9s szolg\u00e1ltat\u00f3it.<\/p>\n            <p style=\"text-align:justify;\">Ugyan\u00edgy, amikor jogi k\u00f6telezetts\u00e9gek teljes\u00edt\u00e9s\u00e9hez sz\u00fcks\u00e9ges, az adatok k\u00f6z\u00f6lhet\u0151k a K\u00f6zigazgat\u00e1si Szervekkel.<\/p>\n            <p style=\"text-align:justify;\">Azokban az esetekben, amikor valamelyik szolg\u00e1ltat\u00f3, akinek az adatokat tov\u00e1bb\u00edtjuk, az Eur\u00f3pai Gazdas\u00e1gi T\u00e9rs\u00e9gen k\u00edv\u00fcl tal\u00e1lhat\u00f3, ez a tov\u00e1bb\u00edt\u00e1s szem\u00e9lyes adatok nemzetk\u00f6zi tov\u00e1bb\u00edt\u00e1s\u00e1t jelenti. Ezekben az esetekben az \u00dcGYN\u00d6KS\u00c9G garant\u00e1lja, hogy az ilyen tov\u00e1bb\u00edt\u00e1s biztons\u00e1gosan \u00e9s a hat\u00e1lyos szab\u00e1lyoz\u00e1ssal \u00f6sszhangban t\u00f6rt\u00e9nik, megfelel\u0151 garanci\u00e1kkal, mint p\u00e9ld\u00e1ul az Eur\u00f3pai Bizotts\u00e1g \u00e1ltal j\u00f3v\u00e1hagyott \u00c1ltal\u00e1nos Szerz\u0151d\u00e9si Felt\u00e9telek (CCT) al\u00e1\u00edr\u00e1sa vagy egy\u00e9b, jogszab\u00e1lyban el\u0151\u00edrt v\u00e9delmi mechanizmusok.<\/p>\n            <p style=\"text-align:justify;\">Mindenesetre AZ UTAS gyakorolhatja a hozz\u00e1f\u00e9r\u00e9si, helyesb\u00edt\u00e9si, t\u00f6rl\u00e9si, tiltakoz\u00e1si, korl\u00e1toz\u00e1si \u00e9s adathordozhat\u00f3s\u00e1gi jogait az \u00dcGYN\u00d6KS\u00c9G fel\u00e9, \u00edr\u00e1sbeli \u00e9rtes\u00edt\u00e9ssel a jelen dokumentum elej\u00e9n szerepl\u0151 sz\u00e9khelyre. Ugyan\u00edgy, ha \u00fagy \u00edt\u00e9li meg, hogy szem\u00e9lyes adatainak v\u00e9delm\u00e9hez val\u00f3 joga s\u00e9r\u00fclt, panaszt ny\u00fajthat be a Spanyol Adatv\u00e9delmi Hat\u00f3s\u00e1ghoz (www.aepd.es).<\/p>\n            <p style=\"text-align:justify;\">Harmadik felek (pl. \u00fatit\u00e1rsak) adatainak megk\u00fcld\u00e9se azt jelenti, hogy az \u00fcgyf\u00e9l \u00e9rtes\u00edtette \u0151ket \u00e9s megszerezte a hozz\u00e1j\u00e1rul\u00e1sukat adataik itt le\u00edrt felt\u00e9telek szerinti kezel\u00e9s\u00e9hez.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">HETEDIK.- ALKALMAZAND\u00d3 JOGHAT\u00d3S\u00c1G<\/p>\n            <p style=\"text-align:justify;\">A jelen SZERZ\u0150D\u00c9S \u00e9rtelmez\u00e9s\u00e9b\u0151l vagy v\u00e9grehajt\u00e1s\u00e1b\u00f3l ered\u0151 b\u00e1rmely elt\u00e9r\u00e9s eset\u00e9n a felek kifejezetten lemondanak b\u00e1rmely m\u00e1s rendelkez\u00e9sre \u00e1ll\u00f3 illet\u00e9kess\u00e9gr\u0151l, \u00e9s AZ UTAS lak\u00f3helye szerinti v\u00e1ros B\u00edr\u00f3s\u00e1gainak \u00e9s T\u00f6rv\u00e9nysz\u00e9keinek illet\u00e9kess\u00e9g\u00e9t vetik magukat al\u00e1.<\/p>\n            <p style=\"text-align:justify;\">\u00c9S EGYET\u00c9RT\u00c9S\u00dcK BIZONYS\u00c1G\u00c1UL a felek a jelen SZERZ\u0150D\u00c9ST kett\u0151 p\u00e9ld\u00e1nyban, egy \u00e9s ugyanazon hat\u00e1llyal, a fejl\u00e9cben megjel\u00f6lt helyen \u00e9s id\u0151pontban al\u00e1\u00edrj\u00e1k.<\/p>\n\n            <table style=\"width:100%; margin-top:40px; border-collapse:collapse;\">\n                <tr>\n                    <td style=\"text-align:center; width:50%; padding:10px; vertical-align:top;\">\n                        <div style=\"border-top:1px solid #000; padding-top:8px; margin-top:50px;\">AZ \u00dcGYN\u00d6KS\u00c9G AL\u00c1\u00cdR\u00c1SA<\/div>\n                        <div style=\"margin-top:10px;\">Tibor Terdik<br><strong>ROLLIO DE MADRID<\/strong><\/div>\n                    <\/td>\n                    <td style=\"text-align:center; width:50%; padding:10px; vertical-align:top;\">\n                        <div style=\"border-top:1px solid #000; padding-top:8px; margin-top:50px;\">AZ UTAS AL\u00c1\u00cdR\u00c1SA<\/div>\n                        <div style=\"margin-top:10px;\"><span data-fill=\"name\">_____________<\/span><\/div>\n                    <\/td>\n                <\/tr>\n            <\/table>\n        <\/div>\n\n        <div id=\"contract-template-en\" data-lang=\"en\" class=\"contract-template\" style=\"position:fixed; top:0; left:0; width:794px; padding:40px; background:#ffffff; color:#000000; font-family:'Times New Roman', Times, serif; font-size:11pt; line-height:1.5; opacity:0; pointer-events:none; z-index:-9999;\">\n            <h2 style=\"text-align:center; font-size:14pt; margin:0 0 20px 0; text-transform:uppercase;\">Service Contract<\/h2>\n\n            <p>In <strong><span data-fill=\"city\">______________<\/span><\/strong>, on <strong><span data-fill=\"day\">___<\/span><\/strong> of <strong><span data-fill=\"month\">__________<\/span><\/strong>, <strong><span data-fill=\"year\">20__<\/span><\/strong><\/p>\n\n            <h3 style=\"font-size:12pt; margin:20px 0 10px 0;\">BY AND BETWEEN<\/h3>\n\n            <p style=\"text-align:justify;\">OF THE ONE PART, <strong>Mr.\/Ms. <span data-fill=\"name\">______________________________<\/span><\/strong>, of legal age, with address for all purposes at <strong><span data-fill=\"address\">__________________________________<\/span><\/strong>, with National ID (DNI) <strong><span data-fill=\"dni\">_______________________<\/span><\/strong>, hereinafter, <strong>THE TRAVELLER<\/strong>.<\/p>\n\n            <p data-cotrav-block=\"intro\">In their own name and on behalf of:<\/p>\n            <p data-cotrav-row=\"1\">Mr.\/Ms. <span data-fill=\"co-name-1\">_______________<\/span> &nbsp;&nbsp; with DNI <span data-fill=\"co-dni-1\">_______________<\/span><\/p>\n            <p data-cotrav-row=\"2\">Mr.\/Ms. <span data-fill=\"co-name-2\">_______________<\/span> &nbsp;&nbsp; with DNI <span data-fill=\"co-dni-2\">_______________<\/span><\/p>\n            <p data-cotrav-row=\"3\">Mr.\/Ms. <span data-fill=\"co-name-3\">_______________<\/span> &nbsp;&nbsp; with DNI <span data-fill=\"co-dni-3\">_______________<\/span><\/p>\n            <p data-cotrav-row=\"4\">Mr.\/Ms. <span data-fill=\"co-name-4\">_______________<\/span> &nbsp;&nbsp; with DNI <span data-fill=\"co-dni-4\">_______________<\/span><\/p>\n\n            <p data-cotrav-block=\"closing\">Hereinafter and collectively, <strong>THE TRAVELLERS<\/strong>.<\/p>\n\n            <p style=\"text-align:justify;\">AND OF THE OTHER PART, <strong>Rollio De Madrid<\/strong>, with license-title C.I.MU.529.m., with address for all purposes at Calle San Leandro 2., 30383 Los Nietos, Murcia, with tax identification number Z3360877F, with email address info@rolliodemadrid.com, website: www.rolliodemadrid.com, hereinafter, <strong>THE AGENCY<\/strong>.<\/p>\n\n            <p style=\"text-align:justify;\">Both parties recognizing each other, in the capacities in which they intervene, as having sufficient general legal capacity to execute this agreement and<\/p>\n\n            <h3 style=\"font-size:12pt; margin:20px 0 10px 0;\">STATE<\/h3>\n            <p style=\"text-align:justify;\"><strong>I.-<\/strong> That THE AGENCY is a legally constituted Travel Agency that possesses all the necessary permits and authorizations for the exercise of its activity.<\/p>\n            <p style=\"text-align:justify;\"><strong>II.-<\/strong> THE TRAVELLER expresses their interest in contracting the services offered by the Travel Agency, such as booking management for tickets on any means of transport, excursions, or vehicle rentals, or other services operated by the Travel Agency. It is expressly clarified that the services do not combine with accommodation, and that they have a duration of less than twenty-four hours, in accordance with the provisions of Article 150.2.a) of Royal Legislative Decree 1\/2007, approving the Revised Text of the General Law for the Defense of Consumers and Users; consequently, this contracting does not constitute a package travel contract, understood as the joint combination of transport, accommodation, or other travel services under a single contract, and falls clearly outside the scope of application of the specific regulations on package travel and linked travel services.<\/p>\n            <p style=\"text-align:justify;\">And to this end, the parties agree, having reached an agreement on this matter, to execute this Service Provision Agreement, hereinafter the CONTRACT, in accordance with the following:<\/p>\n\n            <h3 style=\"font-size:12pt; margin:20px 0 10px 0;\">CLAUSES<\/h3>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">FIRST.- PURPOSE<\/p>\n            <p style=\"text-align:justify;\">Taking into account the provisions of the recitals, the intervening parties express the reciprocity of the services to be provided, establishing the purpose of the CONTRACT in the following terms:<\/p>\n            <p style=\"text-align:justify;\">The provision by THE AGENCY of organization and intermediation services in the Contracting, by THE TRAVELLER, consisting of cultural, gastronomic, leisure visits or guided tours for small groups, including, where applicable, a private airport transfer service, when so contracted by THE TRAVELLER.<\/p>\n            <p style=\"text-align:justify;\">Likewise, the specific content of the contracted services, including their detailed description, specific conditions, schedules, prices and, where applicable, cancellation policy, will be that which appears in the pre-contractual information provided by THE AGENCY to THE TRAVELLER prior to contracting.<\/p>\n            <p style=\"text-align:justify;\">The quality and content of the services provided by the suppliers will be determined by the official tourist category, if any, assigned by the competent bodies of the country and\/or delegated authority.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">SECOND.- OBLIGATIONS OF THE PARTIES<\/p>\n            <p style=\"text-align:justify;\">Without prejudice to the other commitments indicated in this CONTRACT and\/or the law, the parties bind themselves to:<\/p>\n            <p><strong>Obligations assumed by THE AGENCY:<\/strong><\/p>\n            <p style=\"text-align:justify;\">To carry out with the due diligence of an agent the provisions indicated in the previous clause, performing all necessary procedures and steps required with the various providers of the contracted services and to communicate to THE TRAVELLER, immediately upon THE AGENCY becoming aware, any modification, variation, or incident that may occur.<\/p>\n            <p><strong>Obligations assumed by THE CLIENT:<\/strong><\/p>\n            <p style=\"text-align:justify;\">To proceed with the payment of the corresponding prices, fees, taxes, and disbursements incurred, as well as to respect the remaining obligations established in this agreement.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">THIRD.- TERM<\/p>\n            <p style=\"text-align:justify;\">This CONTRACT shall have a duration that coincides with the provision of the service indicated in the FIRST CLAUSE.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">FOURTH.- PRICE AND METHOD OF PAYMENT<\/p>\n            <p style=\"text-align:justify;\">The price of the contracted services is <strong><span data-fill=\"price\">_____________<\/span>&nbsp;\u20ac<\/strong>.<\/p>\n            <p style=\"text-align:justify;\">THE TRAVELLER shall pay THE AGENCY for all services through payment to be made in full at the time of booking. Bank transfer or card payment through the online booking system are accepted as payment methods. In the case of a bank transfer, payment shall be made to the agency's holding account:<\/p>\n            <p>IBAN: ES61 2100 6318 1102 0012 5101<\/p>\n            <p>Cash payment is not accepted.<\/p>\n            <p style=\"text-align:justify;\">The payment must be settled, by THE TRAVELLER, prior to the start of the provision of the contracted services, whether these are provided by THE AGENCY or by third-party collaborators thereof.<\/p>\n            <p>Date on which the amounts must be settled: <strong><span data-fill=\"payday\">__<\/span><\/strong> of <strong><span data-fill=\"paymonth\">________<\/span><\/strong> of <strong><span data-fill=\"payyear\">202_<\/span><\/strong>.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">FIFTH.- CANCELLATION FEES<\/p>\n            <p style=\"text-align:justify;\">This CONTRACT entails cancellation fees. THE TRAVELLER may cancel the contracted service at any time before its start, with the following cancellation fees:<\/p>\n            <p><strong>Cancellation conditions:<\/strong><\/p>\n            <p style=\"text-align:justify;\">&bull; Cancellations made up to 7 days in advance of the date of the service: <strong>100%<\/strong> refund of the amount paid.<\/p>\n            <p style=\"text-align:justify;\">&bull; Cancellations made between 7 days and 24 hours before the start of the service: <strong>50%<\/strong> refund of the amount paid.<\/p>\n            <p style=\"text-align:justify;\">&bull; Cancellations made less than 24 hours in advance, as well as the non-appearance of the client at the indicated place and time: shall not entitle to a refund.<\/p>\n            <p style=\"text-align:justify;\">These conditions shall apply without prejudice to the fact that, in exceptional cases, THE AGENCY may assess alternative solutions at its discretion.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">SIXTH.- PERSONAL DATA PROTECTION<\/p>\n            <p style=\"text-align:justify;\">In compliance with the provisions of Regulation (EU) 2016\/679 of the European Parliament and of the Council of 27 April 2016 (General Data Protection Regulation) and Organic Law 3\/2018 of 5 December on the Protection of Personal Data and guarantee of digital rights, THE TRAVELLER is informed that their personal data will be processed by THE AGENCY, as the data controller, in order to manage, execute, and maintain the relationship derived from this CONTRACT for the provision of tourist services. This includes everything necessary to correctly organize and provide the contracted services.<\/p>\n            <p style=\"text-align:justify;\">The data will be retained for the duration of this CONTRACT and until the corresponding liabilities derived from the contractual relationship prescribe. Likewise, THE TRAVELLER is informed that in order to correctly manage and provide the contracted tourist services, personal data will be communicated to companies in the tourism sector directly involved in the organization of the trip. This includes, among others, airlines, transport companies, hotels and other accommodations, booking centers, car rental companies, travel insurance companies, operators, and providers of activities or excursions.<\/p>\n            <p style=\"text-align:justify;\">Likewise, when necessary to comply with legal obligations, the data may be communicated to Public Administrations.<\/p>\n            <p style=\"text-align:justify;\">In those cases where any of the providers to whom the data is communicated is located outside the European Economic Area, this communication will involve an international transfer of personal data. In these scenarios, THE AGENCY guarantees that said transfer is carried out securely and in accordance with current regulations, having adequate safeguards for this purpose, such as the signing of Standard Contractual Clauses (SCC) approved by the European Commission or other legally provided protection mechanisms.<\/p>\n            <p style=\"text-align:justify;\">In any case, THE TRAVELLER may exercise their rights of access, rectification, erasure, objection, restriction, and portability before THE AGENCY through written communication to the registered office listed at the beginning of this document. Likewise, if they consider their right to personal data protection to have been violated, they may file a complaint with the Spanish Data Protection Agency (www.aepd.es).<\/p>\n            <p style=\"text-align:justify;\">The sending of third-party data (for example, companions) implies that the client has informed them and obtained their consent for the processing of their data under the terms described herein.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">SEVENTH.- APPLICABLE JURISDICTION<\/p>\n            <p style=\"text-align:justify;\">For any discrepancy resulting from the interpretation or execution of this CONTRACT, the parties agree to submit to the Courts and Tribunals of the city of the domicile of THE TRAVELLER, expressly waiving any other jurisdiction that might correspond to them.<\/p>\n            <p style=\"text-align:justify;\">AND IN WITNESS WHEREOF, both parties sign this CONTRACT in duplicate copies and to a single effect at the place and date indicated in the heading.<\/p>\n\n            <table style=\"width:100%; margin-top:40px; border-collapse:collapse;\">\n                <tr>\n                    <td style=\"text-align:center; width:50%; padding:10px; vertical-align:top;\">\n                        <div style=\"border-top:1px solid #000; padding-top:8px; margin-top:50px;\">SIGNED THE AGENCY<\/div>\n                        <div style=\"margin-top:10px;\">Tibor Terdik<br><strong>ROLLIO DE MADRID<\/strong><\/div>\n                    <\/td>\n                    <td style=\"text-align:center; width:50%; padding:10px; vertical-align:top;\">\n                        <div style=\"border-top:1px solid #000; padding-top:8px; margin-top:50px;\">SIGNED THE TRAVELLER<\/div>\n                        <div style=\"margin-top:10px;\"><span data-fill=\"name\">_____________<\/span><\/div>\n                    <\/td>\n                <\/tr>\n            <\/table>\n        <\/div>\n\n        <div id=\"contract-template-es\" data-lang=\"es\" class=\"contract-template\" style=\"position:fixed; top:0; left:0; width:794px; padding:40px; background:#ffffff; color:#000000; font-family:'Times New Roman', Times, serif; font-size:11pt; line-height:1.5; opacity:0; pointer-events:none; z-index:-9999;\">\n            <h2 style=\"text-align:center; font-size:14pt; margin:0 0 20px 0; text-transform:uppercase;\">Contrato de Prestaci\u00f3n de Servicios<\/h2>\n\n            <p>En <strong><span data-fill=\"city\">______________<\/span><\/strong>, a <strong><span data-fill=\"day\">___<\/span><\/strong> de <strong><span data-fill=\"month\">__________<\/span><\/strong> de <strong><span data-fill=\"year\">20__<\/span><\/strong><\/p>\n\n            <h3 style=\"font-size:12pt; margin:20px 0 10px 0;\">REUNIDOS<\/h3>\n\n            <p style=\"text-align:justify;\">DE UNA PARTE, <strong>D.\/D\u00aa <span data-fill=\"name\">______________________________<\/span><\/strong>, mayor de edad, con domicilio a todos los efectos en <strong><span data-fill=\"address\">__________________________________<\/span><\/strong>, con DNI <strong><span data-fill=\"dni\">_______________________<\/span><\/strong>, en adelante, <strong>EL VIAJERO<\/strong>.<\/p>\n\n            <p data-cotrav-block=\"intro\">En nombre propio y representaci\u00f3n de<\/p>\n            <p data-cotrav-row=\"1\">D.\/D\u00aa <span data-fill=\"co-name-1\">_______________<\/span> &nbsp;&nbsp; con DNI <span data-fill=\"co-dni-1\">_______________<\/span><\/p>\n            <p data-cotrav-row=\"2\">D.\/D\u00aa <span data-fill=\"co-name-2\">_______________<\/span> &nbsp;&nbsp; con DNI <span data-fill=\"co-dni-2\">_______________<\/span><\/p>\n            <p data-cotrav-row=\"3\">D.\/D\u00aa <span data-fill=\"co-name-3\">_______________<\/span> &nbsp;&nbsp; con DNI <span data-fill=\"co-dni-3\">_______________<\/span><\/p>\n            <p data-cotrav-row=\"4\">D.\/D\u00aa <span data-fill=\"co-name-4\">_______________<\/span> &nbsp;&nbsp; con DNI <span data-fill=\"co-dni-4\">_______________<\/span><\/p>\n\n            <p data-cotrav-block=\"closing\">En adelante y conjuntamente, <strong>LOS VIAJEROS<\/strong>.<\/p>\n\n            <p style=\"text-align:justify;\">Y DE OTRA PARTE, <strong>Rollio De Madrid<\/strong>, con t\u00edtulo-licencia C.I.MU.529.m., con domicilio a todos los efectos en Calle San Leandro 2., 30383 Los Nietos, Murcia con n\u00famero de identificaci\u00f3n fiscal Z3360877F con correo electr\u00f3nico info@rolliodemadrid.com p\u00e1gina web: www.rolliodemadrid.com, en adelante, <strong>LA AGENCIA<\/strong>.<\/p>\n\n            <p style=\"text-align:justify;\">Reconoci\u00e9ndose ambas partes en las calidades que intervienen capacidad jur\u00eddica general bastante para suscribir el presente y<\/p>\n\n            <h3 style=\"font-size:12pt; margin:20px 0 10px 0;\">EXPONEN<\/h3>\n            <p style=\"text-align:justify;\"><strong>I.-<\/strong> Que LA AGENCIA es una Agencia de Viajes legalmente constituida que cuenta con todos los permisos y autorizaciones necesarios para el ejercicio de su actividad.<\/p>\n            <p style=\"text-align:justify;\"><strong>II.-<\/strong> El VIAJERO manifiesta su inter\u00e9s en contratar los servicios ofrecidos por la Agencia de Viajes, tales como la gesti\u00f3n de reserva de billetes en cualquier medio de transporte, excursi\u00f3n o alquiler de veh\u00edculos u otros servicios operados por la Agencia de Viajes. Se aclara expresamente que los servicios no combinan con alojamiento, y que tienen una duraci\u00f3n inferior a veinticuatro horas, conforme a lo previsto en el Art\u00edculo 150.2.a) del Real Decreto Legislativo 1\/2007, por el que se aprueba el Texto Refundido de la Ley General para la Defensa de los Consumidores y Usuarios, en consecuencia, la presente contrataci\u00f3n no constituye un contrato de viaje combinado, entendido como la combinaci\u00f3n conjunta de transporte, alojamiento u otros servicios de viaje bajo un \u00fanico contrato, y queda claramente fuera del \u00e1mbito de aplicaci\u00f3n de la normativa espec\u00edfica de viajes combinados y servicios de viaje vinculados.<\/p>\n            <p style=\"text-align:justify;\">Y a tal fin, las partes acuerdan, habiendo llegado las mismas a un acuerdo sobre el particular, la realizaci\u00f3n del presente contrato de prestaci\u00f3n de Servicios, en adelante el CONTRATO, de acuerdo con las siguientes:<\/p>\n\n            <h3 style=\"font-size:12pt; margin:20px 0 10px 0;\">CL\u00c1USULAS<\/h3>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">PRIMERA.- OBJETO<\/p>\n            <p style=\"text-align:justify;\">Habida cuenta lo expuesto en la parte expositiva, las partes intervinientes manifiestan la reciprocidad de los servicios objeto de prestaci\u00f3n, configur\u00e1ndose el objeto del CONTRATO en los siguientes t\u00e9rminos:<\/p>\n            <p style=\"text-align:justify;\">La prestaci\u00f3n por parte de LA AGENCIA de servicios de organizaci\u00f3n e intermediaci\u00f3n en la Contrataci\u00f3n, por parte de EL VIAJERO, consistentes en visitas culturales, gastron\u00f3micas, de ocio o visitas guiadas para grupos reducidos, incluyendo, en su caso, un servicio de traslado privado al aeropuerto, cuando as\u00ed sea contratado por EL VIAJERO.<\/p>\n            <p style=\"text-align:justify;\">Asimismo, el contenido concreto de los servicios contratados, incluyendo su descripci\u00f3n detallada, condiciones espec\u00edficas, horarios, precios y, en su caso, pol\u00edtica de cancelaci\u00f3n, ser\u00e1 el que figure en la informaci\u00f3n precontractual facilitada por LA AGENCIA al VIAJERO con car\u00e1cter previo a la contrataci\u00f3n.<\/p>\n            <p style=\"text-align:justify;\">La calidad y contenido de los servicios prestados por los proveedores vendr\u00e1 determinada por la categor\u00eda tur\u00edstica oficial, si la hubiera, asignada por los \u00f3rganos competentes del pa\u00eds y\/o autoridad delegada.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">SEGUNDA.- OBLIGACIONES DE LAS PARTES<\/p>\n            <p style=\"text-align:justify;\">Sin perjuicio de los dem\u00e1s compromisos que se indican en este CONTRATO y\/o la ley, las partes se obligan a:<\/p>\n            <p><strong>Obligaciones asumidas por la AGENCIA:<\/strong><\/p>\n            <p style=\"text-align:justify;\">Llevar a cabo con la debida diligencia de un mandatario las prestaciones que han sido indicadas en la cl\u00e1usula anterior, realizando todas las gestiones necesarias y que fueren menester con los distintos proveedores de los servicios contratados y comunicar a EL VIAJERO, con car\u00e1cter inmediato, una vez tenga conocimiento LA AGENCIA, cualquier modificaci\u00f3n, variaci\u00f3n o incidencia que se produzca.<\/p>\n            <p><strong>Obligaciones asumidas por EL CLIENTE:<\/strong><\/p>\n            <p style=\"text-align:justify;\">Proceder al pago de los correspondientes precios, honorarios, tasas y suplidos correspondientes, as\u00ed como respetar el resto de obligaciones establecidas en el presente acuerdo.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">TERCERA.- VIGENCIA<\/p>\n            <p style=\"text-align:justify;\">El presente CONTRATO tendr\u00e1 una duraci\u00f3n que ser\u00e1 coincidente con la prestaci\u00f3n del servicio indicado en la CL\u00c1USULA PRIMERA.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">CUARTA.- PRECIO Y FORMA DE PAGO<\/p>\n            <p style=\"text-align:justify;\">El precio de los servicios contratados es de <strong><span data-fill=\"price\">_____________<\/span>&nbsp;\u20ac<\/strong>.<\/p>\n            <p style=\"text-align:justify;\">EL VIAJERO abonar\u00e1 a LA AGENCIA todos los servicios mediante pago que se realizar\u00e1 \u00edntegramente en el momento de la reserva. Se admite como m\u00e9todos de pago la transferencia bancaria o el pago con tarjeta a trav\u00e9s del sistema de reserva online. En caso de transferencia bancaria, el pago se realizar\u00e1 a la cuenta titular de la agencia:<\/p>\n            <p>IBAN: ES61 2100 6318 1102 0012 5101<\/p>\n            <p>No se admite el pago en efectivo.<\/p>\n            <p style=\"text-align:justify;\">El pago deber\u00e1 ser satisfecho, por parte de EL VIAJERO, con anterioridad al inicio de la prestaci\u00f3n de los servicios contratados ya sean estos proporcionados por parte de LA AGENCIA o de terceros colaboradores de la misma.<\/p>\n            <p>D\u00eda en el que deben ser satisfechos los importes: <strong><span data-fill=\"payday\">__<\/span><\/strong> de <strong><span data-fill=\"paymonth\">________<\/span><\/strong> de <strong><span data-fill=\"payyear\">202_<\/span><\/strong>.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">QUINTA.- GASTOS DE CANCELACI\u00d3N<\/p>\n            <p style=\"text-align:justify;\">El presente CONTRATO lleva aparejados unos gastos de cancelaci\u00f3n. EL VIAJERO podr\u00e1 cancelar el servicio contratado en cualquier momento antes del inicio del mismo, con los siguientes gastos de cancelaci\u00f3n:<\/p>\n            <p><strong>Condiciones de cancelaci\u00f3n:<\/strong><\/p>\n            <p style=\"text-align:justify;\">&bull; Cancelaciones realizadas con hasta 7 d\u00edas de antelaci\u00f3n respecto de la fecha del servicio: reembolso del <strong>100%<\/strong> del importe abonado.<\/p>\n            <p style=\"text-align:justify;\">&bull; Cancelaciones realizadas entre 7 d\u00edas y 24 horas antes del inicio del servicio: reembolso del <strong>50%<\/strong> del importe abonado.<\/p>\n            <p style=\"text-align:justify;\">&bull; Cancelaciones realizadas con menos de 24 horas de antelaci\u00f3n, as\u00ed como la no comparecencia del cliente en el lugar y hora indicados: no dar\u00e1n derecho a reembolso.<\/p>\n            <p style=\"text-align:justify;\">Estas condiciones se aplicar\u00e1n sin perjuicio de que, en casos excepcionales, LA AGENCIA pueda valorar soluciones alternativas de forma discrecional.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">SEXTA.- PROTECCI\u00d3N DE DATOS PERSONALES<\/p>\n            <p style=\"text-align:justify;\">En cumplimiento con lo previsto en las disposiciones del Reglamento (UE) 2016\/679 del Parlamento Europeo y el Consejo, de 27 de abril de 2016 (Reglamento General de Protecci\u00f3n de Datos) y de la Ley Org\u00e1nica 3\/2018, de 5 de diciembre, de Protecci\u00f3n de Datos Personales y garant\u00eda de los derechos digitales, EL VIAJERO es informado de que sus datos de car\u00e1cter personal ser\u00e1n tratados por LA AGENCIA, en calidad de responsable del tratamiento, para poder gestionar, ejecutar y mantener la relaci\u00f3n derivada de este CONTRATO de prestaci\u00f3n de servicios tur\u00edsticos. Esto incluye todo lo necesario para organizar y prestar correctamente los servicios contratados.<\/p>\n            <p style=\"text-align:justify;\">Los datos ser\u00e1n conservados durante la vigencia del presente CONTRATO y hasta que prescriban las correspondientes responsabilidades derivadas de la relaci\u00f3n contractual. Asimismo, se informa a EL VIAJERO de que para poder gestionar y prestar correctamente los servicios tur\u00edsticos contratados, los datos personales ser\u00e1n comunicados a empresas del sector tur\u00edstico directamente implicadas en la organizaci\u00f3n del viaje. Esto incluye, entre otros, aerol\u00edneas, compa\u00f1\u00edas de transporte, hoteles y otros alojamientos, centrales de reservas, empresas de alquiler de veh\u00edculos, aseguradoras de viaje, operadores y proveedores de actividades o excursiones.<\/p>\n            <p style=\"text-align:justify;\">Igualmente, cuando sea necesario para cumplir con obligaciones legales, los datos podr\u00e1n ser comunicados a las Administraciones P\u00fablicas.<\/p>\n            <p style=\"text-align:justify;\">En aquellos casos en que alguno de los proveedores a los que se comunican los datos se encuentre fuera del Espacio Econ\u00f3mico Europeo, esta comunicaci\u00f3n implicar\u00e1 una transferencia internacional de datos personales. En estos supuestos, LA AGENCIA garantiza que dicha transferencia se realiza de forma segura y conforme a la normativa vigente, contando para ello con las garant\u00edas adecuadas, como la firma de Cl\u00e1usulas Contractuales Tipo (CCT) aprobadas por la Comisi\u00f3n Europea u otros mecanismos de protecci\u00f3n legalmente previstos.<\/p>\n            <p style=\"text-align:justify;\">En todo caso, EL VIAJERO podr\u00e1 ejercer sus derechos de acceso, rectificaci\u00f3n, supresi\u00f3n, oposici\u00f3n, limitaci\u00f3n y portabilidad ante LA AGENCIA a trav\u00e9s de comunicaci\u00f3n por escrito al domicilio social que consta al comienzo del presente documento. Asimismo, en caso de considerar vulnerado su derecho a la protecci\u00f3n de datos personales, podr\u00e1 interponer una reclamaci\u00f3n ante la Agencia Espa\u00f1ola de Protecci\u00f3n de Datos (www.aepd.es).<\/p>\n            <p style=\"text-align:justify;\">El env\u00edo de datos de terceros (por ejemplo, acompa\u00f1antes) implica que el cliente les ha informado y obtenido su consentimiento para el tratamiento de sus datos en los t\u00e9rminos aqu\u00ed descritos.<\/p>\n\n            <p style=\"font-weight:bold; margin:15px 0 5px 0;\">S\u00c9PTIMA.- JURISDICCI\u00d3N APLICABLE<\/p>\n            <p style=\"text-align:justify;\">Para cualquier discrepancia que resulte de la interpretaci\u00f3n o ejecuci\u00f3n de este CONTRATO, las partes convienen en someterse a los Juzgados y Tribunales de la ciudad del domicilio de EL VIAJERO con renuncia expresa a cualquier otro fuero que pudiera corresponderles.<\/p>\n            <p style=\"text-align:justify;\">Y EN PRUEBA DE CONFORMIDAD, ambas partes firman el presente CONTRATO en duplicado ejemplar y a un solo efecto en lugar y fecha indicados en el encabezamiento.<\/p>\n\n            <table style=\"width:100%; margin-top:40px; border-collapse:collapse;\">\n                <tr>\n                    <td style=\"text-align:center; width:50%; padding:10px; vertical-align:top;\">\n                        <div style=\"border-top:1px solid #000; padding-top:8px; margin-top:50px;\">FIRMADO LA AGENCIA<\/div>\n                        <div style=\"margin-top:10px;\">Tibor Terdik<br><strong>ROLLIO DE MADRID<\/strong><\/div>\n                    <\/td>\n                    <td style=\"text-align:center; width:50%; padding:10px; vertical-align:top;\">\n                        <div style=\"border-top:1px solid #000; padding-top:8px; margin-top:50px;\">FIRMADO EL VIAJERO<\/div>\n                        <div style=\"margin-top:10px;\"><span data-fill=\"name\">_____________<\/span><\/div>\n                    <\/td>\n                <\/tr>\n            <\/table>\n        <\/div>\n    <\/div>\n\n    <script>\n        var somozaPrices = {\n            'Autentikus flamenco est (Standard)': 50, \n            'Autentikus flamenco est (Pr\u00e9mium)': 60,\n            'Priv\u00e1t rept\u00e9ri transzfer': 100,\n            'Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val': 60,\n            'Autentikus spanyol gasztro\u00e9lm\u00e9ny': 50,\n            'Complete Madrid Experience (Standard)': 0,\n            'Complete Madrid Experience (P\u00e1ros VIP)': 299,\n            'Madrid Gast-cult pack': 0,\n            'Gastro pack': 109\n        };\n\/\/ \u00daJ: BIZTOS\u00cdT\u00c1SI \u00c1RM\u00c1TRIX\n        const insMatrix = {\n            'spain': {\n                '500':  {'3': 9.90,  '5': 12.50, '10': 15.50, '17': 19.90},\n                '1000': {'3': 14.90, '5': 19.90, '10': 24.90, '17': 34.90},\n                '1500': {'3': 19.90, '5': 24.90, '10': 29.90, '17': 39.90}\n            },\n            'europe': {\n                '500':  {'3': 12.50, '5': 14.90, '10': 19.90, '17': 24.90},\n                '1000': {'3': 18.90, '5': 24.90, '10': 29.90, '17': 39.90},\n                '1500': {'3': 24.90, '5': 29.90, '10': 39.90, '17': 49.90}\n            }\n        };\n\n        \/\/ \ud83c\udf10 SZERZ\u0150D\u00c9S NYELVI BE\u00c1LL\u00cdT\u00c1SOK (TranslatePress kompatibilis)\n        var contractI18n = {\n            hu: {\n                templateId: 'contract-template-hu',\n                months: ['janu\u00e1r','febru\u00e1r','m\u00e1rcius','\u00e1prilis','m\u00e1jus','j\u00fanius','j\u00falius','augusztus','szeptember','okt\u00f3ber','november','december'],\n                pdfPrefix: 'Szolgaltatasi_Szerzodes',\n                pdfDocTitle: 'Szolg\u00e1ltat\u00e1si Szerz\u0151d\u00e9s',\n                alertFillFields: 'A szerz\u0151d\u00e9s let\u00f6lt\u00e9s\u00e9hez k\u00e9rj\u00fck, t\u00f6ltse ki az \u00f6sszes csillaggal (*) jel\u00f6lt mez\u0151t a f\u0151utas adatain\u00e1l!',\n                btnGenerating: '\u23f3 PDF gener\u00e1l\u00e1sa...',\n                btnGenerated: '&#10003; Szerz\u0151d\u00e9s gener\u00e1lva',\n                printError: 'Hiba t\u00f6rt\u00e9nt a nyomtat\u00e1si ablak megnyit\u00e1sakor. Pr\u00f3b\u00e1lja \u00fajra.',\n                saveAsPdfTip: '&#10003; A nyomtat\u00e1si ablakban v\u00e1lassza a <strong>\"Ment\u00e9s PDF-k\u00e9nt\"<\/strong> opci\u00f3t'\n            },\n            en: {\n                templateId: 'contract-template-en',\n                months: ['January','February','March','April','May','June','July','August','September','October','November','December'],\n                pdfPrefix: 'Service_Contract',\n                pdfDocTitle: 'Service Contract',\n                alertFillFields: 'To download the contract, please fill in all fields marked with an asterisk (*) in the main traveller details!',\n                btnGenerating: '\u23f3 Generating PDF...',\n                btnGenerated: '&#10003; Contract generated',\n                printError: 'An error occurred while opening the print dialog. Please try again.',\n                saveAsPdfTip: '&#10003; In the print dialog, select <strong>\"Save as PDF\"<\/strong>'\n            },\n            es: {\n                templateId: 'contract-template-es',\n                months: ['enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre'],\n                pdfPrefix: 'Contrato_de_Servicio',\n                pdfDocTitle: 'Contrato de Prestaci\u00f3n de Servicios',\n                alertFillFields: 'Para descargar el contrato, por favor complete todos los campos marcados con asterisco (*) en los datos del viajero principal.',\n                btnGenerating: '\u23f3 Generando PDF...',\n                btnGenerated: '&#10003; Contrato generado',\n                printError: 'Se produjo un error al abrir la ventana de impresi\u00f3n. Int\u00e9ntelo de nuevo.',\n                saveAsPdfTip: '&#10003; En la ventana de impresi\u00f3n, seleccione <strong>\"Guardar como PDF\"<\/strong>'\n            }\n        };\n\n        function getCurrentContractLang() {\n            \/\/ 1) Explicit override (data-attrib\u00fatum a <html>-en, ha valaki k\u00e9zzel akarja \u00e1ll\u00edtani)\n            var override = document.documentElement.getAttribute('data-contract-lang');\n            if (override && contractI18n[override]) return override;\n            \/\/ 2) <html lang=\"...\"> attrib\u00fatum (TranslatePress be\u00e1ll\u00edtja)\n            var l = (document.documentElement.lang || '').toLowerCase();\n            if (l.indexOf('en') === 0) return 'en';\n            if (l.indexOf('es') === 0) return 'es';\n            if (l.indexOf('hu') === 0) return 'hu';\n            \/\/ 3) URL prefix fallback (\/en\/..., \/es\/...)\n            var p = (window.location.pathname || '').toLowerCase();\n            if (p.indexOf('\/en\/') === 0 || p === '\/en') return 'en';\n            if (p.indexOf('\/es\/') === 0 || p === '\/es') return 'es';\n            \/\/ 4) default\n            return 'hu';\n        }\n\n        let selectedExperiences = [];\n        var selectedTimes = {};\n        var selectedLanguages = {};\n\n        function toggleExperience(btn, value) {\n            \/\/ --- 1. KIZ\u00c1R\u00d3LAGOS P\u00c1ROK DEFINI\u00c1L\u00c1SA ---\n            var exclusivePairs = {\n                'Autentikus flamenco est (Standard)': 'Autentikus flamenco est (Pr\u00e9mium)',\n                'Autentikus flamenco est (Pr\u00e9mium)': 'Autentikus flamenco est (Standard)',\n                'Complete Madrid Experience (Standard)': 'Complete Madrid Experience (P\u00e1ros VIP)',\n                'Complete Madrid Experience (P\u00e1ros VIP)': 'Complete Madrid Experience (Standard)'\n            };\n\n            \/\/ --- 2. KIV\u00c1LASZT\u00c1S \u00c9S \u00dcTK\u00d6Z\u00c9SVIZSG\u00c1LAT ---\n            if (btn.classList.contains('selected')) {\n                btn.classList.remove('selected');\n                selectedExperiences = selectedExperiences.filter(item => item !== value);\n                if (isLanguageExp(value)) {\n                    var pId=getLangExpandId(value);var pEl=document.getElementById(pId);pEl.style.transition='none';pEl.style.maxHeight='220px';pEl.offsetHeight;pEl.style.transition='max-height 0.5s cubic-bezier(0.16,1,0.3,1)';pEl.style.maxHeight='0px';pEl.classList.remove('is-open');\n                    pEl.querySelectorAll('.lang-btn').forEach(function(b){b.classList.remove('selected');});\n                    delete selectedLanguages[value];\n                    syncLanguageInput();\n                }\n            } else {\n                var conflict = exclusivePairs[value];\n                if (conflict && selectedExperiences.includes(conflict)) {\n                    selectedExperiences = selectedExperiences.filter(item => item !== conflict);\n                    var allBtns = document.querySelectorAll('#field-exp .swp-option-btn');\n                    allBtns.forEach(function(b) {\n                        if (b.getAttribute('onclick') && b.getAttribute('onclick').indexOf(conflict) !== -1) {\n                            b.classList.remove('selected');\n                        }\n                    });\n                }\n                btn.classList.add('selected');\n                selectedExperiences.push(value);\n                if (isLanguageExp(value)) {\n                    var langEl=document.getElementById(getLangExpandId(value));langEl.style.transition='none';langEl.style.maxHeight='0px';langEl.offsetHeight;langEl.style.transition='max-height 0.5s cubic-bezier(0.16,1,0.3,1)';langEl.style.maxHeight='220px';langEl.classList.add('is-open');\n                    syncLanguageInput();\n                }\n            }\n            \n            \/\/ --- 3. INPUT \u00c9S MEZ\u0150 FELIRAT FRISS\u00cdT\u00c9SE ---\n            document.getElementById('inp-exp').value = selectedExperiences.join(', ');\n            \n            if (selectedExperiences.length === 0) {\n                document.getElementById('txt-exp').innerText = 'V\u00e1lasszon programot';\n            } else if (selectedExperiences.length === 1) {\n                document.getElementById('txt-exp').innerText = '1 program kiv\u00e1lasztva';\n            } else {\n                document.getElementById('txt-exp').innerText = selectedExperiences.length + ' program kiv\u00e1lasztva';\n            }\n            \n            \/\/ --- 4. SZAB\u00c1LYOK \u00c9RV\u00c9NYES\u00cdT\u00c9SE \u00c9S \u00c1R FRISS\u00cdT\u00c9SE ---\n            updateTimeDropdown();\n            syncTimeInput();\n            applyGuestLimits();\n            updateSmartButton();\n            renderSwpCalendar();\n        }\n\n        function isLanguageExp(exp){return exp==='Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s'||exp==='Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val';}\n        function getLangExpandId(exp){return exp==='Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val'?'lang-expand-sanmiguel':'lang-expand-varosnez';}\n        function setTourLanguage(expName,lang,btn){\n            selectedLanguages[expName]=lang;\n            var panel=document.getElementById(getLangExpandId(expName));\n            panel.querySelectorAll('.lang-btn').forEach(function(b){b.classList.remove('selected');});\n            btn.classList.add('selected');\n            syncLanguageInput();\n        }\n        function syncLanguageInput(){\n            var parts=[];\n            selectedExperiences.forEach(function(exp){if(isLanguageExp(exp)&&selectedLanguages[exp]){var lbl=selectedLanguages[exp]==='en'?'Angol (English)':'Spanyol (Espa\u00f1ol)';parts.push(exp+': '+lbl);}});\n            var el=document.getElementById('inp-tour-language');if(el)el.value=parts.join(', ');\n        }\n\n        \/\/ --- DINAMIKUS VEND\u00c9G SZAB\u00c1LYOK LEK\u00c9RDEZ\u00c9SE ---\n        function getGuestLimits() {\n            var minG = 1;\n            var maxG = 20;\n            var needsLuggage = false;\n            var needsWheelchair = false;\n\n            selectedExperiences.forEach(function(exp) {\n              \/\/ CSER\u00c9LD ERRE:\nif (exp === 'Priv\u00e1t rept\u00e9ri transzfer') {\n    if (maxG > 7) maxG = 7; \/\/ A sima transzfer marad maximum 7 f\u0151\n    needsLuggage = true;\n}\nif (exp.indexOf('Complete Madrid Experience') !== -1) {\n    needsLuggage = true; \/\/ A csomag is k\u00e9ri a poggy\u00e1szt, de NEM korl\u00e1tozza le 7 f\u0151re!\n}\n                if (exp === 'Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val') {\n                    if (minG < 3) minG = 3;\n                    if (maxG > 10) maxG = 10;\n                    needsWheelchair = true;\n                }\n                if (exp.indexOf('Gastro pack') !== -1) {\n                    if (minG < 2) minG = 2;\n                    if (maxG > 10) maxG = 10;\n                }\n                if (exp.indexOf('Madrid Gast-cult pack') !== -1) {\n                    if (minG < 3) minG = 3;\n                    if (maxG > 10) maxG = 10;\n                }\n                if (exp === 'Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s') {\n                    if (minG < 4) minG = 4;\n                    if (maxG > 10) maxG = 10;\n                    needsWheelchair = true;\n                }\n               \/\/ CSER\u00c9LD ERRE:\nif (exp === 'Complete Madrid Experience (Standard)') {\n    if (minG < 4) minG = 4; \/\/ A Standard minimuma 4 f\u0151\n    if (maxG > 10) maxG = 10;\n    needsWheelchair = true;\n}\nif (exp === 'Complete Madrid Experience (P\u00e1ros VIP)') {\n    if (minG < 2) minG = 2; \n    if (maxG > 10) maxG = 10; \/\/ Ez korl\u00e1tozza le maximum 10 f\u0151re\n    needsWheelchair = true;\n}\n            });\n\n            return { minG: minG, maxG: maxG, needsLuggage: needsLuggage, needsWheelchair: needsWheelchair };\n        }\n\n      \/\/ --- SZAB\u00c1LYOK \u00c9RV\u00c9NYES\u00cdT\u00c9SE A UI-RA ---\n        function applyGuestLimits() {\n            var limits = getGuestLimits();\n            var gInput = document.getElementById('inp-guests');\n            var wInput = document.getElementById('inp-wheelchair');\n            var g = parseInt(gInput.value);\n            var w = parseInt(wInput.value);\n            \n            var totalG = g + w;\n            \n            \/\/ Ha t\u00fall\u00e9pj\u00fck a maxot, visszav\u00e1gjuk\n            if (totalG > limits.maxG) {\n                var diff = totalG - limits.maxG;\n                if (g >= diff) { g -= diff; } \n                else { diff -= g; g = 0; w -= diff; }\n                totalG = limits.maxG;\n            } \n            \/\/ Ha alatta vagyunk a minimumnak, a norm\u00e1l vend\u00e9gekhez adjuk hozz\u00e1\n            else if (totalG < limits.minG) {\n                g += (limits.minG - totalG);\n                totalG = limits.minG;\n            }\n\n            gInput.value = g;\n            wInput.value = w;\n            document.getElementById('txt-guests').innerText = totalG + ' f\u0151';\n            document.getElementById('swp-guests-count').innerText = g;\n            document.getElementById('swp-wheelchair-count').innerText = w;\n\n            \/\/ Sorok megjelen\u00edt\u00e9se\/elrejt\u00e9se\n            document.getElementById('row-luggage').style.display = limits.needsLuggage ? 'flex' : 'none';\n            document.getElementById('row-wheelchair').style.display = limits.needsWheelchair ? 'flex' : 'none';\n\t\t\t\/\/ Transzfer \u00e9s Gastro Pack figyelmeztet\u00e9s megjelen\u00edt\u00e9se\/elrejt\u00e9se\nvar hasWarning = selectedExperiences.includes('Priv\u00e1t rept\u00e9ri transzfer') || selectedExperiences.includes('Gastro pack');\ndocument.getElementById('transfer-warning-text').style.display = hasWarning ? 'block' : 'none';\n\t\t\t\n\t\t\t\/\/ Complete Madrid Experience figyelmeztet\u00e9s megjelen\u00edt\u00e9se\/elrejt\u00e9se\n            var hasExperiencePack = selectedExperiences.includes('Complete Madrid Experience (Standard)') || selectedExperiences.includes('Complete Madrid Experience (P\u00e1ros VIP)');\n            document.getElementById('experience-warning-text').style.display = hasExperiencePack ? 'block' : 'none';\n            var hasGastro=selectedExperiences.includes('Autentikus spanyol gasztro\u00e9lm\u00e9ny')||selectedExperiences.includes('Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val')||selectedExperiences.includes('Madrid Gast-cult pack')||selectedExperiences.includes('Gastro pack');document.getElementById('row-allergy').style.display=hasGastro?'block':'none';if(!hasGastro){var ai=document.getElementById('allergy-info-input');if(ai)ai.value='';document.getElementById('inp-allergy-info').value='';}\n\n            \/\/ Seg\u00edt\u0151 sz\u00f6veg\n            var ruleText = \"\";\n            if (limits.minG > 1 || limits.maxG < 20) {\n                ruleText = \"Erre az \u00f6ssze\u00e1ll\u00edt\u00e1sra min. \" + limits.minG + \", max. \" + limits.maxG + \" f\u0151 foglalhat \u00f6sszesen.\";\n            }\n            document.getElementById('guest-rule-text').innerText = ruleText;\n            var transferInfoEl=document.getElementById('transfer-price-info');if(transferInfoEl)transferInfoEl.style.display=selectedExperiences.includes('Priv\u00e1t rept\u00e9ri transzfer')?'block':'none';\n\n            \/\/ Rejtett \u00e9rt\u00e9kek null\u00e1z\u00e1sa, ha elt\u0171nnek\n            if (!limits.needsLuggage) {\n                document.getElementById('inp-luggage').value = 0;\n                document.getElementById('swp-luggage-count').innerText = 0;\n            }\n            if (!limits.needsWheelchair) {\n                document.getElementById('inp-wheelchair').value = 0;\n                document.getElementById('swp-wheelchair-count').innerText = 0;\n            }\n\n            updateGuestButtonsStyle(limits.minG, limits.maxG);\n        }\n\n        \/\/ --- GOMBOK VIZU\u00c1LIS TILT\u00c1SA (Sz\u00fcrk\u00edt\u00e9s) ---\n        function updateGuestButtonsStyle(minG, maxG) {\n            var g = parseInt(document.getElementById('inp-guests').value);\n            var w = parseInt(document.getElementById('inp-wheelchair').value);\n            var l = parseInt(document.getElementById('inp-luggage').value);\n            var totalG = g + w;\n\n            \/\/ Norm\u00e1l vend\u00e9g gombok\n            var disableGMinus = (totalG <= minG || g <= 0);\n            document.getElementById('btn-guests-minus').style.opacity = disableGMinus ? '0.3' : '1';\n            document.getElementById('btn-guests-minus').style.cursor = disableGMinus ? 'not-allowed' : 'pointer';\n            \n            var disableGPlus = (totalG >= maxG);\n            document.getElementById('btn-guests-plus').style.opacity = disableGPlus ? '0.3' : '1';\n            document.getElementById('btn-guests-plus').style.cursor = disableGPlus ? 'not-allowed' : 'pointer';\n\n            \/\/ Kerekessz\u00e9k gombok\n            var disableWMinus = (totalG <= minG || w <= 0);\n            document.getElementById('btn-wheelchair-minus').style.opacity = disableWMinus ? '0.3' : '1';\n            document.getElementById('btn-wheelchair-minus').style.cursor = disableWMinus ? 'not-allowed' : 'pointer';\n            \n            var disableWPlus = (totalG >= maxG || w >= 3);\n            document.getElementById('btn-wheelchair-plus').style.opacity = disableWPlus ? '0.3' : '1';\n            document.getElementById('btn-wheelchair-plus').style.cursor = disableWPlus ? 'not-allowed' : 'pointer';\n\n            \/\/ Poggy\u00e1sz gombok\n            var disableLMinus = (l <= 0);\n            document.getElementById('btn-luggage-minus').style.opacity = disableLMinus ? '0.3' : '1';\n            document.getElementById('btn-luggage-minus').style.cursor = disableLMinus ? 'not-allowed' : 'pointer';\n            \n            var disableLPlus = (l >= 8);\n            document.getElementById('btn-luggage-plus').style.opacity = disableLPlus ? '0.3' : '1';\n            document.getElementById('btn-luggage-plus').style.cursor = disableLPlus ? 'not-allowed' : 'pointer';\n        }\n\n        \/\/ --- \u00c1LTAL\u00c1NOS VEND\u00c9G \u00c9S EXTRA \u00c1LL\u00cdT\u00d3 ---\n        function changeSwpGuests(dir, type) {\n            var gInput = document.getElementById('inp-guests');\n            var wInput = document.getElementById('inp-wheelchair');\n            var lInput = document.getElementById('inp-luggage');\n            \n            var g = parseInt(gInput.value);\n            var w = parseInt(wInput.value);\n            var l = parseInt(lInput.value);\n            var totalG = g + w;\n            var limits = getGuestLimits();\n\n            if (type === 'guests') {\n                if (dir === 1 && totalG < limits.maxG) { g++; totalG++; }\n                else if (dir === -1 && totalG > limits.minG && g > 0) { g--; totalG--; }\n                gInput.value = g;\n                document.getElementById('swp-guests-count').innerText = g;\n            } \n            else if (type === 'wheelchair') {\n                if (dir === 1 && totalG < limits.maxG && w < 3) { w++; totalG++; }\n                else if (dir === -1 && totalG > limits.minG && w > 0) { w--; totalG--; }\n                wInput.value = w;\n                document.getElementById('swp-wheelchair-count').innerText = w;\n            } \n            else if (type === 'luggage') {\n                if (dir === 1 && l < 8) l++;\n                else if (dir === -1 && l > 0) l--;\n                lInput.value = l;\n                document.getElementById('swp-luggage-count').innerText = l;\n            }\n\n            \/\/ F\u0151 s\u00e1v kijelz\u0151je az \u00d6SSZES vend\u00e9get mutatja\n            document.getElementById('txt-guests').innerText = totalG + ' f\u0151';\n\n            updateGuestButtonsStyle(limits.minG, limits.maxG);\n            updateSmartButton();\n            renderInsPersons();\n        }\n\n        function updateSmartButton() {\n            var expStr = document.getElementById('inp-exp').value;\n            \/\/ \u00daJ: Az \u00e1rkalkul\u00e1ci\u00f3hoz a teljes l\u00e9tsz\u00e1mot n\u00e9zz\u00fck!\n            var totalGuests = parseInt(document.getElementById('inp-guests').value) + parseInt(document.getElementById('inp-wheelchair').value);\n            var priceSpan = document.getElementById('somoza-btn-price');\n            \n            var total = 0;\n            \n            if (expStr) {\n                var expArray = expStr.split(', ');\n                for (var i = 0; i < expArray.length; i++) {\n                    var expI = expArray[i];\n                    if (expI === 'Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s') {\n                        total += getVarosnezesPrice(totalGuests) * totalGuests;\n                    } else if (expI === 'Complete Madrid Experience (Standard)') {\n                        total += getCompleteStandardPrice(totalGuests) * totalGuests;\n                    } else if (expI === 'Madrid Gast-cult pack') {\n                        total += getGastCultPrice(totalGuests) * totalGuests;\n                    } else if (somozaPrices[expI]) {\n                        if (expI === 'Priv\u00e1t rept\u00e9ri transzfer') {\n                            total += somozaPrices[expI];\n                        } else {\n                            total += somozaPrices[expI] * totalGuests;\n                        }\n                    }\n                }\n            }\n\n            if (total > 0) {\n                var newText = total + ' EUR';\n\n                if (priceSpan.classList.contains('show-price') && priceSpan.innerText !== newText) {\n                    priceSpan.classList.add('fade-value');\n                    setTimeout(function() {\n                        priceSpan.innerText = newText;\n                        priceSpan.classList.remove('fade-value');\n                    }, 200); \n                } else if (!priceSpan.classList.contains('show-price')) {\n                    priceSpan.innerText = newText;\n                    requestAnimationFrame(() => {\n                        priceSpan.classList.add('show-price');\n                    });\n                }\n            } else {\n                priceSpan.classList.remove('show-price'); \n                setTimeout(function() {\n                    if(!priceSpan.classList.contains('show-price')) {\n                        priceSpan.innerText = '';\n                    }\n                }, 400); \n            }\n        }\n\n        \/\/ F\u0151 \u0171rlap gombnyom\u00e1s (Most m\u00e1r a biztos\u00edt\u00e1si ablakot nyitja meg!)\n        document.getElementById('somoza-stripe-form').addEventListener('submit', function(e) {\n            e.preventDefault();\n            var exp = document.getElementById('inp-exp').value;\n            var date = document.getElementById('inp-date').value;\n            var time = document.getElementById('inp-time').value;\n\n            if(!exp || !date || !time) {\n                alert('K\u00e9rj\u00fck, v\u00e1lasszon ki minden adatot a fizet\u00e9shez!');\n                return;\n            }\n            if(selectedExperiences.some(isTransferExp)&&!document.getElementById('inp-flight-info').value.trim()){alert('K\u00e9rj\u00fck, adja meg a j\u00e1ratsz\u00e1mot \u00e9s a termin\u00e1lt!');return;}\n            if(selectedExperiences.length>1){var allT=selectedExperiences.every(function(e){return!!selectedTimes[e];});if(!allT){alert('K\u00e9rj\u00fck, minden programhoz v\u00e1lasszon id\u0151pontot!');return;}}\n            var langMissing=selectedExperiences.filter(isLanguageExp).filter(function(e){return!selectedLanguages[e];});if(langMissing.length>0){alert('K\u00e9rj\u00fck, v\u00e1lassza ki az idegenvezet\u00e9s nyelv\u00e9t a(z) \"'+langMissing[0]+'\" programhoz!');return;}\n\n            \/\/ Alap\u00e1llapot: opt-out ki, biztos\u00edt\u00e1s opci\u00f3k l\u00e1that\u00f3k\n            document.getElementById('ins-optout').checked = false;\n\n            if (typeof toggleInsuranceForm === \"function\") {\n                toggleInsuranceForm();\n            }\n\n            \/\/ Wizard megnyit\u00e1sa az 1. (biztos\u00edt\u00e1s) l\u00e9p\u00e9sen\n            goToWizardStep(1);\n            document.getElementById('swp-popup-wizard').classList.add('is-open');\n            document.body.classList.add('somoza-no-scroll');\n            document.documentElement.classList.add('somoza-no-scroll');\n        });\n\n\/\/ \ud83c\udfaf \u00daJ: BIZTOS\u00cdT\u00c1S KI-\/BEKAPCSOL\u00c1SA \u00c9S KALKUL\u00c1CI\u00d3JA\n        let currentInsTotal = 0;\n\n        function toggleInsuranceForm() {\n            const isOptout = document.getElementById('ins-optout').checked;\n            const wrapper = document.getElementById('insurance-options-wrapper');\n            if (isOptout) {\n                wrapper.style.display = 'none';\n                currentInsTotal = 0;\n            } else {\n                wrapper.style.display = 'block';\n                calcInsurance();\n            }\n        }\n\n        function calcInsurance() {\n            const region = document.getElementById('ins-region').value;\n            const limit = document.getElementById('ins-limit').value;\n            const days = document.getElementById('ins-days').value;\n\n            const totalGuests = parseInt(document.getElementById('inp-guests').value) + parseInt(document.getElementById('inp-wheelchair').value);\n            document.getElementById('ins-guests-count').innerText = totalGuests;\n\n            const unitPrice = insMatrix[region][limit][days];\n            currentInsTotal = unitPrice * totalGuests;\n\n            document.getElementById('ins-total-price').innerText = currentInsTotal.toFixed(2) + ' EUR';\n            renderInsPersons();\n        }\n        function renderInsPersons() {\n            var totalGuests = parseInt(document.getElementById('inp-guests').value) + parseInt(document.getElementById('inp-wheelchair').value);\n            var c = document.getElementById('ins-persons-container');\n            if (!c) return;\n            var ex = [];\n            c.querySelectorAll('.ins-person-row').forEach(function(row, idx) {\n                ex[idx] = {n: row.querySelector('.ins-person-name').value, b: row.querySelector('.ins-person-dob').value};\n            });\n            c.innerHTML = '';\n            for (var i = 0; i < totalGuests; i++) {\n                var sv = ex[i] || {};\n                c.innerHTML += '<div class=\"ins-person-row\" style=\"display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:10px;\">'\n                    + '<div><label style=\"font-family:\\'Montserrat\\',sans-serif;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#1A2A3A;margin-bottom:5px;display:block;\">' + (i+1) + '. biztos\u00edtott neve<\/label>'\n                    + '<input type=\"text\" class=\"swp-input ins-person-name\" placeholder=\"Teljes n\u00e9v\" value=\"' + (sv.n||'') + '\"><\/div>'\n                    + '<div><label style=\"font-family:\\'Montserrat\\',sans-serif;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#1A2A3A;margin-bottom:5px;display:block;\">Sz\u00fclet\u00e9si d\u00e1tum<\/label>'\n                    + '<input type=\"date\" class=\"swp-input ins-person-dob\" value=\"' + (sv.b||'') + '\"><\/div>'\n                    + '<\/div>';\n            }\n        }\n\n        \/\/ \ud83c\udfaf \u00daJ: BIZTOS\u00cdT\u00c1S UT\u00c1N A SZERZ\u0150D\u00c9S POPUP NY\u00cdLIK MEG\n        let contractDownloaded = false;\n\n        function proceedToContract() {\n            \/\/ Szerz\u0151d\u00e9s l\u00e9p\u00e9s \u00e1llapot\u00e1nak null\u00e1z\u00e1sa\n            contractDownloaded = false;\n            var cb = document.getElementById('contract-accept');\n            var lbl = document.getElementById('contract-accept-label');\n            cb.checked = false;\n            cb.disabled = true;\n            lbl.style.opacity = '0.5';\n            lbl.style.cursor = 'not-allowed';\n            document.getElementById('download-status').style.display = 'none';\n\n            var dbtn = document.getElementById('download-contract-btn');\n            dbtn.disabled = false;\n            dbtn.style.background = '#004C99';\n            dbtn.innerHTML = '<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3\"\/><\/svg> Szerz\u0151d\u00e9s let\u00f6lt\u00e9se (PDF)';\n\n            updateContractNextButton();\n\n            \/\/ \u00c1tv\u00e1lt\u00e1s a 2. (szerz\u0151d\u00e9s) l\u00e9p\u00e9sre a wizardon bel\u00fcl\n            goToWizardStep(2);\n        }\n\n        function updateContractNextButton() {\n            var btn = document.getElementById('contract-next-btn');\n            var accepted = document.getElementById('contract-accept').checked;\n            if (contractDownloaded && accepted) {\n                btn.disabled = false;\n                btn.style.background = '#1A2A3A';\n                btn.style.cursor = 'pointer';\n            } else {\n                btn.disabled = true;\n                btn.style.background = '#999';\n                btn.style.cursor = 'not-allowed';\n            }\n        }\n\n        function downloadContract() {\n            \/\/ Akt\u00edv nyelv \u00e9s hozz\u00e1 tartoz\u00f3 sz\u00f6vegek meghat\u00e1roz\u00e1sa\n            var contractLang = getCurrentContractLang();\n            var i18n = contractI18n[contractLang];\n\n            var name    = document.getElementById('con-name').value.trim();\n            var dni     = document.getElementById('con-dni').value.trim();\n            var address = document.getElementById('con-address').value.trim();\n            var city    = document.getElementById('con-city').value.trim();\n            var phone   = document.getElementById('con-phone').value.trim();\n            var email   = document.getElementById('con-email').value.trim();\n\n            if (!name || !dni || !address || !city || !phone || !email) {\n                alert(i18n.alertFillFields);\n                return;\n            }\n\n            var btn = document.getElementById('download-contract-btn');\n            var originalHtml = btn.innerHTML;\n            btn.innerHTML = i18n.btnGenerating;\n            btn.disabled = true;\n            btn.style.background = '#888';\n\n            var today = new Date();\n            var dStr = today.getDate();\n            var mStr = i18n.months[today.getMonth()];\n            var yStr = today.getFullYear();\n\n            \/\/ Teljes \u00e1r sz\u00e1mol\u00e1sa (program + biztos\u00edt\u00e1s)\n            var totalPrice = 0;\n            var exp = document.getElementById('inp-exp').value;\n            var totalGuests = parseInt(document.getElementById('inp-guests').value) + parseInt(document.getElementById('inp-wheelchair').value);\n            if (exp) {\n                var expArray = exp.split(', ');\n                for (var i = 0; i < expArray.length; i++) {\n                    var expI = expArray[i];\n                    if (expI === 'Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s') {\n                        totalPrice += getVarosnezesPrice(totalGuests) * totalGuests;\n                    } else if (expI === 'Complete Madrid Experience (Standard)') {\n                        totalPrice += getCompleteStandardPrice(totalGuests) * totalGuests;\n                    } else if (expI === 'Madrid Gast-cult pack') {\n                        totalPrice += getGastCultPrice(totalGuests) * totalGuests;\n                    } else if (somozaPrices[expI]) {\n                        if (expI === 'Priv\u00e1t rept\u00e9ri transzfer') totalPrice += somozaPrices[expI];\n                        else totalPrice += somozaPrices[expI] * totalGuests;\n                    }\n                }\n            }\n            if (!document.getElementById('ins-optout').checked) {\n                calcInsurance();\n                totalPrice += currentInsTotal;\n            }\n\n            \/\/ \u00datit\u00e1rsak begy\u0171jt\u00e9se\n            var cotravelersText = '';\n            for (var k = 1; k <= 4; k++) {\n                var cn = document.getElementById('co-name-' + k).value.trim();\n                var cd = document.getElementById('co-dni-' + k).value.trim();\n                if (cn || cd) cotravelersText += k + '. ' + (cn || '-') + ' (DNI: ' + (cd || '-') + ')\\n';\n            }\n\n            \/\/ Szerz\u0151d\u00e9s sablon kit\u00f6lt\u00e9se (a nyelvnek megfelel\u0151 template-en)\n            var tpl = document.getElementById(i18n.templateId);\n            if (!tpl) {\n                \/\/ Biztons\u00e1gi fallback magyar sablonra\n                tpl = document.getElementById('contract-template-hu');\n            }\n            tpl.querySelector('[data-fill=\"city\"]').textContent = city;\n            tpl.querySelector('[data-fill=\"day\"]').textContent = dStr;\n            tpl.querySelector('[data-fill=\"month\"]').textContent = mStr;\n            tpl.querySelector('[data-fill=\"year\"]').textContent = yStr;\n            tpl.querySelectorAll('[data-fill=\"name\"]').forEach(function(el) { el.textContent = name; });\n            tpl.querySelector('[data-fill=\"address\"]').textContent = address;\n            tpl.querySelector('[data-fill=\"dni\"]').textContent = dni;\n            for (var j = 1; j <= 4; j++) {\n                var cName = document.getElementById('co-name-' + j).value.trim();\n                var cDni  = document.getElementById('co-dni-' + j).value.trim();\n                tpl.querySelector('[data-fill=\"co-name-' + j + '\"]').textContent = cName || '_______________';\n                tpl.querySelector('[data-fill=\"co-dni-' + j + '\"]').textContent  = cDni  || '_______________';\n            }\n            tpl.querySelector('[data-fill=\"price\"]').textContent = totalPrice.toFixed(2);\n            tpl.querySelector('[data-fill=\"payday\"]').textContent = dStr;\n            tpl.querySelector('[data-fill=\"paymonth\"]').textContent = mStr;\n            tpl.querySelector('[data-fill=\"payyear\"]').textContent = yStr;\n\n            \/\/ Kl\u00f3n k\u00e9sz\u00edt\u00e9se, hogy az \u00fcres \u00fatit\u00e1rs sorokat elt\u00e1vol\u00edthassuk a PDF-b\u0151l\n            \/\/ (de az eredeti sablon \u00e9rintetlen maradjon a k\u00f6vetkez\u0151 megnyit\u00e1sig)\n            var tplClone = tpl.cloneNode(true);\n            var hasAnyCotrav = false;\n            for (var m = 1; m <= 4; m++) {\n                var cName_m = document.getElementById('co-name-' + m).value.trim();\n                var cDni_m  = document.getElementById('co-dni-' + m).value.trim();\n                if (cName_m || cDni_m) {\n                    hasAnyCotrav = true;\n                } else {\n                    var rowEl = tplClone.querySelector('[data-cotrav-row=\"' + m + '\"]');\n                    if (rowEl && rowEl.parentNode) rowEl.parentNode.removeChild(rowEl);\n                }\n            }\n            \/\/ Ha egyetlen \u00fatit\u00e1rs sincs kit\u00f6ltve, a bevezet\u0151 \u00e9s z\u00e1r\u00f3 mondatot is t\u00f6r\u00f6lj\u00fck\n            if (!hasAnyCotrav) {\n                var introEl   = tplClone.querySelector('[data-cotrav-block=\"intro\"]');\n                var closingEl = tplClone.querySelector('[data-cotrav-block=\"closing\"]');\n                if (introEl   && introEl.parentNode)   introEl.parentNode.removeChild(introEl);\n                if (closingEl && closingEl.parentNode) closingEl.parentNode.removeChild(closingEl);\n            }\n\n            \/\/ \ud83c\udfaf NAT\u00cdV B\u00d6NG\u00c9SZ\u0150 PRINT API (CSP-kompatibilis, eval n\u00e9lk\u00fcl)\n            \/\/ A html2pdf\/html2canvas a CSP eval tilt\u00e1s miatt nem m\u0171k\u00f6dik a WordPress oldalon.\n            \/\/ Helyette egy rejtett iframe-be tessz\u00fck a szerz\u0151d\u00e9st \u00e9s a b\u00f6ng\u00e9sz\u0151 saj\u00e1t\n            \/\/ \"Ment\u00e9s PDF-k\u00e9nt\" funkci\u00f3j\u00e1t haszn\u00e1ljuk a print() API-n kereszt\u00fcl.\n\n            var safeName = name.replace(\/[^a-zA-Z0-9_\\-]+\/g, '_');\n            var pdfTitle = i18n.pdfPrefix + '_' + safeName + '_' + yStr;\n\n            \/\/ \u00d6n\u00e1ll\u00f3, st\u00edlusozott HTML dokumentum a szerz\u0151d\u00e9shez\n            var contractHTML = '<!DOCTYPE html><html lang=\"hu\"><head><meta charset=\"UTF-8\"><title>' + pdfTitle + '<\/title>' +\n                '<style>' +\n                    '@page { size: A4; margin: 18mm 15mm; }' +\n                    'html, body { margin: 0; padding: 0; }' +\n                    'body { font-family: \"Times New Roman\", Times, serif; font-size: 11pt; line-height: 1.5; color: #000; background: #fff; }' +\n                    'h2 { text-align: center; font-size: 14pt; margin: 0 0 20px 0; text-transform: uppercase; }' +\n                    'h3 { font-size: 12pt; margin: 20px 0 10px 0; }' +\n                    'p { text-align: justify; margin: 5px 0; }' +\n                    'table { width: 100%; margin-top: 40px; border-collapse: collapse; page-break-inside: avoid; }' +\n                    'td { vertical-align: top; padding: 10px; text-align: center; width: 50%; }' +\n                    '@media print { body { -webkit-print-color-adjust: exact; print-color-adjust: exact; } }' +\n                '<\/style><\/head><body>' +\n                tplClone.innerHTML +\n                '<\/body><\/html>';\n\n            \/\/ Rejtett iframe l\u00e9trehoz\u00e1sa\n            var iframe = document.createElement('iframe');\n            iframe.style.cssText = 'position:fixed; top:-9999px; left:-9999px; width:794px; height:1px; border:none;';\n            document.body.appendChild(iframe);\n\n            var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;\n            iframeDoc.open();\n            iframeDoc.write(contractHTML);\n            iframeDoc.close();\n\n            console.log('[Szerz\u0151d\u00e9s PDF] Iframe l\u00e9trehozva, print dialog megnyit\u00e1sa...');\n\n            \/\/ V\u00e1runk, hogy az iframe DOM \u00e9s a fontok bet\u00f6lt\u0151djenek, majd nyitjuk a print dialogot\n            setTimeout(function() {\n                try {\n                    iframe.contentWindow.focus();\n                    iframe.contentWindow.print();\n                    console.log('[Szerz\u0151d\u00e9s PDF] Print dialog megnyitva.');\n                } catch (e) {\n                    console.error('[Szerz\u0151d\u00e9s PDF] Print hiba:', e);\n                    alert(i18n.printError);\n                }\n\n                \/\/ Szerveroldali napl\u00f3 k\u00fcld\u00e9se (elektronikus bizony\u00edt\u00e9k)\n                var logData = new FormData();\n                logData.append('action', 'somoza_log_contract');\n                logData.append('c_name', name);\n                logData.append('c_email', email);\n                logData.append('c_phone', phone);\n                logData.append('c_address', address);\n                logData.append('c_dni', dni);\n                logData.append('c_city', city);\n                logData.append('experience', exp);\n                logData.append('price', totalPrice.toFixed(2));\n                logData.append('cotravelers', cotravelersText);\n                logData.append('language', contractLang);\n\n                fetch('https:\/\/rolliodemadrid.com\/wp-admin\/admin-ajax.php', { method: 'POST', body: logData })\n                    .then(function(r) { return r.json(); })\n                    .then(function(data) { console.log('[Szerz\u0151d\u00e9s PDF] Napl\u00f3zva (' + contractLang + ').'); })\n                    .catch(function(err) { console.error('[Szerz\u0151d\u00e9s PDF] Napl\u00f3z\u00e1si hiba:', err); });\n\n                \/\/ UI \u00e1llapot friss\u00edt\u00e9se (enged\u00e9lyezz\u00fck a checkboxot)\n                contractDownloaded = true;\n                btn.innerHTML = i18n.btnGenerated;\n                btn.style.background = '#28a745';\n                btn.disabled = false;\n                document.getElementById('download-status').style.display = 'inline-block';\n                document.getElementById('download-status').innerHTML = i18n.saveAsPdfTip;\n                var cb = document.getElementById('contract-accept');\n                var lbl = document.getElementById('contract-accept-label');\n                cb.disabled = false;\n                lbl.style.opacity = '1';\n                lbl.style.cursor = 'pointer';\n                updateContractNextButton();\n\n                \/\/ Iframe takar\u00edt\u00e1sa 2 mp ut\u00e1n (hogy a print dial\u00f3g el tudjon indulni)\n                setTimeout(function() {\n                    if (iframe && iframe.parentNode) {\n                        iframe.parentNode.removeChild(iframe);\n                    }\n                }, 2000);\n            }, 350);\n        }\n\n        function proceedFromContractToSummary() {\n            var exp = document.getElementById('inp-exp').value;\n            var date = document.getElementById('inp-date').value;\n            var time = document.getElementById('inp-time').value;\n            var guests = parseInt(document.getElementById('inp-guests').value);\n            var luggage = parseInt(document.getElementById('inp-luggage').value);\n            var wheelchair = parseInt(document.getElementById('inp-wheelchair').value);\n            var totalGuests = guests + wheelchair;\n\n            \/\/ Program alap\u00e1r kalkul\u00e1ci\u00f3\n            var totalPrice = 0;\n            var expArray = exp.split(', ');\n            for (var i = 0; i < expArray.length; i++) {\n                var expI = expArray[i];\n                if (expI === 'Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s') {\n                    totalPrice += getVarosnezesPrice(totalGuests) * totalGuests;\n                } else if (expI === 'Complete Madrid Experience (Standard)') {\n                    totalPrice += getCompleteStandardPrice(totalGuests) * totalGuests;\n                } else if (expI === 'Madrid Gast-cult pack') {\n                    totalPrice += getGastCultPrice(totalGuests) * totalGuests;\n                } else if (somozaPrices[expI]) {\n                    if (expI === 'Priv\u00e1t rept\u00e9ri transzfer') {\n                        totalPrice += somozaPrices[expI];\n                    } else {\n                        totalPrice += somozaPrices[expI] * totalGuests;\n                    }\n                }\n            }\n            var programPrice = totalPrice;\n\n            \/\/ Biztos\u00edt\u00e1s \u00e1r\u00e1nak hozz\u00e1ad\u00e1sa \u00e9s a sz\u00f6veg kinyer\u00e9se\n            var isOptout = document.getElementById('ins-optout').checked;\n            var insText = \"Nem k\u00e9rtek biztos\u00edt\u00e1st\";\n\n            if (!isOptout) {\n                calcInsurance();\n                totalPrice += currentInsTotal;\n\n                var rSel = document.getElementById('ins-region');\n                var lSel = document.getElementById('ins-limit');\n                var dSel = document.getElementById('ins-days');\n\n                var rText = rSel.options[rSel.selectedIndex].text;\n                var lText = lSel.options[lSel.selectedIndex].text;\n                var dText = dSel.options[dSel.selectedIndex].text;\n\n                insText = rText + \", \" + lText + \", \" + dText;\n            }\n            \n            \/\/ Extr\u00e1k \u00f6sszes\u00edt\u00e9se\n            var extrasArr = [];\n            if (luggage > 0) extrasArr.push(luggage + ' db poggy\u00e1sz');\n            if (wheelchair > 0) extrasArr.push(wheelchair + ' db kerekessz\u00e9k');\n            \n            if (extrasArr.length > 0) {\n                document.getElementById('sum-extras').innerText = extrasArr.join(', ');\n                document.getElementById('sum-extras-row').style.display = 'block';\n            } else {\n                document.getElementById('sum-extras-row').style.display = 'none';\n            }\n            \n            \/\/ \u00d6sszegz\u0151 ablak felt\u00f6lt\u00e9se\n            document.getElementById('sum-exp').innerText = exp;\n            document.getElementById('sum-date').innerText = date;\n            document.getElementById('sum-time').innerText = time;\n            var flInfo=document.getElementById('inp-flight-info').value.trim();if(flInfo){document.getElementById('sum-flight').innerText=flInfo;document.getElementById('sum-flight-row').style.display='block';}else{document.getElementById('sum-flight-row').style.display='none';}\n            var langVal=document.getElementById('inp-tour-language').value.trim();if(langVal){document.getElementById('sum-language').innerText=langVal;document.getElementById('sum-language-row').style.display='block';}else{document.getElementById('sum-language-row').style.display='none';}\n            var allergyVal=document.getElementById('inp-allergy-info').value.trim();if(allergyVal){document.getElementById('sum-allergy').innerText=allergyVal;document.getElementById('sum-allergy-row').style.display='block';}else{document.getElementById('sum-allergy-row').style.display='none';}\n            document.getElementById('sum-guests').innerText = totalGuests + ' f\u0151';\n            document.getElementById('sum-insurance-val').innerText = insText;\n            document.getElementById('sum-program-price').innerText = programPrice.toFixed(2) + ' EUR';\n            if (!isOptout) {\n                document.getElementById('sum-ins-price').innerText = currentInsTotal.toFixed(2) + ' EUR';\n                document.getElementById('sum-ins-breakdown-row').style.display = 'block';\n            } else {\n                document.getElementById('sum-ins-breakdown-row').style.display = 'none';\n            }\n            document.getElementById('sum-price').innerText = totalPrice.toFixed(2) + ' EUR';\n\n            \/\/ \u00c1tv\u00e1lt\u00e1s a 3. (\u00f6sszegz\u00e9s) l\u00e9p\u00e9sre a wizardon bel\u00fcl\n            goToWizardStep(3);\n        }\n\n   document.getElementById('somoza-final-pay-btn').addEventListener('click', function(e) {\n            e.preventDefault();\n\n            \/\/ Adatok beolvas\u00e1sa a szerz\u0151d\u00e9s ablakb\u00f3l\n            var cName = document.getElementById('con-name').value.trim();\n            var cPhone = document.getElementById('con-phone').value.trim();\n            var cEmail = document.getElementById('con-email').value.trim();\n\n            if (!cName || !cPhone || !cEmail) {\n                alert('K\u00e9rj\u00fck, t\u00f6ltse ki az \u00f6sszes szem\u00e9lyes adatot a szerz\u0151d\u00e9s ablakban!');\n                return;\n            }\n\n            \/\/ Checkboxok ellen\u0151rz\u00e9se\n            var consentPrivacy = document.getElementById('consent-privacy').checked;\n            var consentTerms = document.getElementById('consent-terms').checked;\n            var consentMarketing = document.getElementById('consent-marketing').checked ? 'Igen' : 'Nem';\n\n            if (!consentPrivacy || !consentTerms) {\n                alert('A foglal\u00e1s folytat\u00e1s\u00e1hoz k\u00e9rj\u00fck, fogadja el az Adatv\u00e9delmi szab\u00e1lyzatot \u00e9s az \u00c1ltal\u00e1nos Szerz\u0151d\u00e9si Felt\u00e9teleket!');\n                return;\n            }\n\n            \/\/ Eredeti r\u00e9sz folytat\u00e1sa\n            var btn = this;\n            var originalText = btn.innerText;\n            btn.innerText = '\u00c1tir\u00e1ny\u00edt\u00e1s Stripe-ra...';\n            btn.disabled = true;\n\n            var formData = new FormData(document.getElementById('somoza-stripe-form'));\n            formData.append('action', 'somoza_submit_booking');\n            \n            \/\/ Szem\u00e9lyes adatok hozz\u00e1csatol\u00e1sa a k\u00fcldend\u0151 adatokhoz\n            formData.append('c_name', cName);\n            formData.append('c_phone', cPhone);\n            formData.append('c_email', cEmail);\n            formData.append('c_marketing', consentMarketing);\n\t   \/\/ \ud83c\udfaf \u00daJ: Biztos\u00edt\u00e1si adatok csatol\u00e1sa a szerver fel\u00e9\n            formData.append('ins_optout', document.getElementById('ins-optout').checked ? 'yes' : 'no');\n            formData.append('ins_region', document.getElementById('ins-region').value);\n            formData.append('ins_limit', document.getElementById('ins-limit').value);\n            formData.append('ins_days', document.getElementById('ins-days').value);\n            var insPersons = [];\n            document.querySelectorAll('.ins-person-row').forEach(function(row) {\n                insPersons.push({name: row.querySelector('.ins-person-name').value.trim(), dob: row.querySelector('.ins-person-dob').value});\n            });\n            formData.append('ins_persons', JSON.stringify(insPersons));\n            formData.append('flight_info', document.getElementById('inp-flight-info').value.trim()||'');\n            formData.append('tour_language', document.getElementById('inp-tour-language').value.trim()||'');\n            formData.append('allergy_info', document.getElementById('inp-allergy-info').value.trim()||'');\n            var _pl=(document.documentElement.lang||'hu').toLowerCase();formData.append('page_lang',_pl.indexOf('en')===0?'en':_pl.indexOf('es')===0?'es':'hu');\n\n            fetch('https:\/\/rolliodemadrid.com\/wp-admin\/admin-ajax.php', { method: 'POST', body: formData })\n            .then(response => response.json())\n            .then(data => {\n                if(data.success && data.data.stripe_url) { \n                    window.open(data.data.stripe_url, '_blank'); \n                    closeSwpPopup('swp-popup-wizard');\n                } else { \n                    alert('Hiba: ' + (data.data.message || 'Pr\u00f3b\u00e1lja \u00fajra.')); \n                }\n                btn.innerText = originalText; btn.disabled = false;\n            })\n            .catch(error => { \n                alert('Szerverhiba.'); \n                btn.innerText = originalText; \n                btn.disabled = false; \n            });\n        });\n\n       \/\/ \ud83c\udfaf WIZARD: L\u00e9p\u00e9sv\u00e1lt\u00f3 a 3 l\u00e9pcs\u0151s foglal\u00e1si folyamatban (Biztos\u00edt\u00e1s \u2192 Szerz\u0151d\u00e9s \u2192 \u00d6sszegz\u00e9s)\n       function goToWizardStep(step) {\n           var panes = document.querySelectorAll('#swp-popup-wizard .swp-wizard-pane');\n           panes.forEach(function(p) {\n               p.classList.toggle('is-current', parseInt(p.getAttribute('data-pane'), 10) === step);\n           });\n           var steps = document.querySelectorAll('#swp-wizard-progress .swp-wizard-step');\n           steps.forEach(function(s) {\n               var n = parseInt(s.getAttribute('data-progress'), 10);\n               s.classList.toggle('is-active', n === step);\n               s.classList.toggle('is-done', n < step);\n           });\n           var fill = document.getElementById('swp-wizard-progress-fill');\n           if (fill) {\n               var scale = step <= 1 ? 0 : (step === 2 ? 0.5 : 1);\n               fill.style.transform = 'scaleX(' + scale + ')';\n           }\n           var popup = document.querySelector('#swp-popup-wizard .swp-popup');\n           if (popup) popup.scrollTop = 0;\n           var overlay = document.getElementById('swp-popup-wizard');\n           if (overlay) overlay.scrollTop = 0;\n       }\n\n       function closeSwpPopup(id) {\n    document.getElementById(id).classList.remove('is-open');\n    document.body.classList.remove('somoza-no-scroll');\n    document.documentElement.classList.remove('somoza-no-scroll');\n}\n        \n        function toggleSwpDropdown(fieldId, event) {\n            if(event) event.stopPropagation();\n            var field = document.getElementById(fieldId);\n            var isOpen = field.classList.contains('is-open');\n            document.querySelectorAll('.somoza-booking-field').forEach(f => f.classList.remove('is-open'));\n            if(!isOpen) field.classList.add('is-open');\n        }\n\n        function closeSwpDropdown(fieldId) { document.getElementById(fieldId).classList.remove('is-open'); }\n\n        document.addEventListener('click', function() { document.querySelectorAll('.somoza-booking-field').forEach(f => f.classList.remove('is-open')); });\n\n        function selectSwpOption(field, value, popupId) {\n            document.getElementById('txt-' + field).innerText = value;\n            document.getElementById('inp-' + field).value = value;\n            closeSwpDropdown(popupId);\n            updateSmartButton();\n        }\n\n        function isFlamencoExp(exp){return exp==='Autentikus flamenco est (Standard)'||exp==='Autentikus flamenco est (Pr\u00e9mium)';}\n        function isTransferExp(exp){return exp==='Priv\u00e1t rept\u00e9ri transzfer'||exp==='Complete Madrid Experience (Standard)'||exp==='Complete Madrid Experience (P\u00e1ros VIP)';}\n        function getTimesForExp(exp){return isFlamencoExp(exp)?['17:00','19:00','20:45']:exp==='Pr\u00e9mium kiscsoportos v\u00e1rosn\u00e9z\u00e9s'?['17:00','18:00','19:00','20:00']:exp==='Autentikus spanyol gasztro\u00e9lm\u00e9ny'?['12:00','12:30','13:00','13:30','14:00','14:30','15:00','15:30','16:00','16:30','17:00','17:30','18:00','18:30','19:00','19:30','20:00','20:30','21:00','21:30','22:00','22:30','23:00']:['D\u00e9lel\u0151tt (10:00)','D\u00e9lut\u00e1n (14:00)','Este (19:00)'];}\n        function getVarosnezesPrice(n){return n<=4?95:n<=6?75:n<=8?55:45;}\n        function getCompleteStandardPrice(n){return n<=4?255:n<=6?215:n<=8?179:159;}\n        function getGastCultPrice(n){return n<=4?195:n<=6?165:n<=8?145:129;}\n        function buildTimeBtn(exp,t){var mm=\"this.style.setProperty('--x',event.offsetX+'px');this.style.setProperty('--y',event.offsetY+'px')\";var isSel=selectedTimes[exp]===t;var expEsc=exp.replace(\/\\\\\/g,'\\\\\\\\').replace(\/'\/g,\"\\\\'\");return '<button type=\"button\" class=\"swp-option-btn'+(isSel?' selected':'')+'\" style=\"margin-bottom:8px;\" onmousemove=\"'+mm+'\" onclick=\"selectProgramTime(\\''+expEsc+'\\',\\''+t+'\\',this)\">'+t+'<\/button>';}\n        function buildTransferBlock(exp){var curTime=selectedTimes[exp]||'';var curFlight=document.getElementById('inp-flight-info')?document.getElementById('inp-flight-info').value:'';var expEsc=exp.replace(\/\\\\\/g,'\\\\\\\\').replace(\/'\/g,\"\\\\'\");return '<div class=\"tr-time-input-wrap\"><label class=\"tr-time-input-label\">\u00c9rkez\u00e9si \/ Indul\u00e1si id\u0151<\/label><input type=\"text\" class=\"tr-time-input\" placeholder=\"Pl. 14:35\" value=\"'+curTime+'\" oninput=\"setExpTime(\\''+expEsc+'\\',this.value)\" onchange=\"setExpTime(\\''+expEsc+'\\',this.value)\"><\/div><div class=\"tr-time-input-wrap\"><label class=\"tr-time-input-label\">J\u00e1ratsz\u00e1m \/ Termin\u00e1l<\/label><input type=\"text\" class=\"tr-time-input\" placeholder=\"Pl. IB3456 \u2013 T4 termin\u00e1l\" value=\"'+curFlight+'\" oninput=\"setFlightInfo(this.value)\" onchange=\"setFlightInfo(this.value)\"><p style=\"font-family:\\'Montserrat\\',sans-serif;font-size:10px;color:#888;margin:4px 0 0 2px;line-height:1.4;\">Rep\u00fcl\u0151j\u00e1rat sz\u00e1ma \u00e9s \u00e9rkez\u00e9si termin\u00e1l (\u00e9rkez\u0151nek), vagy indul\u00f3 termin\u00e1l (vissza\u00fatn\u00e1l).<\/p><\/div>';}\n        function setTransferTime(val){selectedTimes['Priv\u00e1t rept\u00e9ri transzfer']=val;syncTimeInput();}\n        function setExpTime(expName,val){selectedTimes[expName]=val;syncTimeInput();}\n        function setFlightInfo(val){var el=document.getElementById('inp-flight-info');if(el)el.value=val;}\n        function updateTimeDropdown(){\n            var c=document.getElementById('time-options-container');\n            if(!c)return;\n            Object.keys(selectedTimes).forEach(function(k){if(selectedExperiences.indexOf(k)===-1)delete selectedTimes[k];});\n            if(!selectedExperiences.some(isTransferExp)){var flEl=document.getElementById('inp-flight-info');if(flEl)flEl.value='';}\n            var n=selectedExperiences.length;\n            var field=document.getElementById('field-time');\n            if(n===0){c.innerHTML='<p style=\"font-family:\\'Montserrat\\',sans-serif;font-size:13px;color:#999;text-align:center;margin:0;\">El\u0151sz\u00f6r v\u00e1lasszon programot!<\/p>';field.classList.remove('is-multi');return;}\n            if(n===1){var exp=selectedExperiences[0];var html='';if(isTransferExp(exp)){html=buildTransferBlock(exp);}else{var tt=getTimesForExp(exp);if(tt.length>6){html+='<div style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:8px;\">';tt.forEach(function(t){html+=buildTimeBtn(exp,t);});html+='<\/div>';}else{tt.forEach(function(t){html+=buildTimeBtn(exp,t);});}}c.innerHTML=html;field.classList.remove('is-multi');}\n            else{field.classList.add('is-multi');var html='<div class=\"time-multi-grid\" style=\"grid-template-columns:repeat('+n+',minmax(200px,1fr));\">';selectedExperiences.forEach(function(exp){var lbl=exp.length>32?exp.substring(0,30)+'\u2026':exp;html+='<div><div class=\"time-prog-label\">'+lbl+'<\/div>';if(isTransferExp(exp)){html+=buildTransferBlock(exp);}else{var tt=getTimesForExp(exp);if(tt.length>6){html+='<div style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:8px;\">';tt.forEach(function(t){html+=buildTimeBtn(exp,t);});html+='<\/div>';}else{tt.forEach(function(t){html+=buildTimeBtn(exp,t);});}}html+='<\/div>';});html+='<\/div>';c.innerHTML=html;}\n        }\n        function selectProgramTime(expName,time,btn){\n            selectedTimes[expName]=time;\n            if(selectedExperiences.length===1){document.querySelectorAll('#time-options-container .swp-option-btn').forEach(function(b){b.classList.remove('selected');});}\n            else{var cols=document.querySelectorAll('#time-options-container .time-multi-grid>div');var idx=selectedExperiences.indexOf(expName);if(idx>=0&&cols[idx])cols[idx].querySelectorAll('.swp-option-btn').forEach(function(b){b.classList.remove('selected');});}\n            btn.classList.add('selected');\n            syncTimeInput();\n        }\n        function syncTimeInput(){\n            var n=selectedExperiences.length;\n            var selCount=0;\n            selectedExperiences.forEach(function(e){if(selectedTimes[e])selCount++;});\n            var hasTransfer=selectedExperiences.some(isTransferExp);\n            if(n===0){document.getElementById('txt-time').innerText='V\u00e1lasszon \u00f3r\u00e1t';document.getElementById('inp-time').value='';}\n            else if(n===1){var t=selectedTimes[selectedExperiences[0]]||'';document.getElementById('txt-time').innerText=t||'V\u00e1lasszon \u00f3r\u00e1t';document.getElementById('inp-time').value=t;if(t&&!hasTransfer)setTimeout(function(){closeSwpDropdown('field-time');},200);}\n            else{var parts=selectedExperiences.map(function(e){return e+': '+(selectedTimes[e]||'\u2013');});document.getElementById('inp-time').value=parts.join(', ');document.getElementById('txt-time').innerText=selCount===n?(n+' id\u0151pont kiv\u00e1lasztva'):(selCount+' \/ '+n+' id\u0151pont');if(selCount===n&&!hasTransfer)setTimeout(function(){closeSwpDropdown('field-time');},200);}\n            updateSmartButton();\n        }\n\n        var swpCurMonth = new Date().getMonth();\n        var swpCurYear = new Date().getFullYear();\n        var swpSelDate = null;\n        var swpMonthNames = [\"Janu\u00e1r\", \"Febru\u00e1r\", \"M\u00e1rcius\", \"\u00c1prilis\", \"M\u00e1jus\", \"J\u00fanius\", \"J\u00falius\", \"Augusztus\", \"Szeptember\", \"Okt\u00f3ber\", \"November\", \"December\"];\n\n        \/\/ --- A PHP-b\u0151l j\u00f6v\u0151 foglalt d\u00e1tumok bet\u00f6lt\u00e9se a JS-be ---\n        var bookedDates = [\"2026. 06. 07.\",\"2026. 06. 06.\",\"2026. 06. 05.\",\"2026. 05. 31.\"];\n\n        function renderSwpCalendar() {\n            var grid = document.getElementById('swp-cal-grid');\n            var title = document.getElementById('swp-month-title');\n            if(!grid || !title) return;\n            grid.innerHTML = '';\n            title.innerText = swpMonthNames[swpCurMonth] + \" \" + swpCurYear;\n\n            var today = new Date(); today.setHours(0,0,0,0);\n            var hasFlamenco = selectedExperiences.some(function(e){return isFlamencoExp(e);});\n            var minDate = new Date(today);\n            if (hasFlamenco) minDate.setDate(minDate.getDate() + 2);\n            var noteEl = document.getElementById('swp-flamenco-cal-note');\n            if (noteEl) noteEl.style.display = hasFlamenco ? 'block' : 'none';\n\n            var firstDay = new Date(swpCurYear, swpCurMonth, 1).getDay();\n            var emptyDays = firstDay === 0 ? 6 : firstDay - 1;\n            var daysInMonth = new Date(swpCurYear, swpCurMonth + 1, 0).getDate();\n\n            for(var i=0; i<emptyDays; i++) {\n                grid.innerHTML += '<div class=\"swp-cal-day empty\"><\/div>';\n            }\n\n            for(var d=1; d<=daysInMonth; d++) {\n                var currentDateStr = swpCurYear + \". \" + (swpCurMonth + 1).toString().padStart(2, '0') + \". \" + d.toString().padStart(2, '0') + \".\";\n                var isBooked = bookedDates.includes(currentDateStr);\n                var dayDate = new Date(swpCurYear, swpCurMonth, d);\n                var isTooSoon = dayDate < minDate;\n                var isSel = (swpSelDate && d === swpSelDate.getDate() && swpCurMonth === swpSelDate.getMonth() && swpCurYear === swpSelDate.getFullYear());\n\n                if (isBooked) {\n                    grid.innerHTML += '<div class=\"swp-cal-day booked\" title=\"Ez a nap m\u00e1r foglalt\">' + d + '<\/div>';\n                } else if (isTooSoon) {\n                    grid.innerHTML += '<div class=\"swp-cal-day booked\" title=\"Flamencoestre legal\u00e1bb 2 nappal el\u0151re kell foglalni\">' + d + '<\/div>';\n                } else {\n                    var cls = 'swp-cal-day' + (isSel ? ' selected' : '');\n                    grid.innerHTML += '<div class=\"' + cls + '\" onclick=\"pickSwpDate(' + d + ')\">' + d + '<\/div>';\n                }\n            }\n        }\n\n        function changeSwpMonth(dir) { swpCurMonth += dir; if (swpCurMonth > 11) { swpCurMonth = 0; swpCurYear++; } else if (swpCurMonth < 0) { swpCurMonth = 11; swpCurYear--; } renderSwpCalendar(); }\n\n        function pickSwpDate(d) {\n            swpSelDate = new Date(swpCurYear, swpCurMonth, d);\n            var formatted = swpCurYear + \". \" + (swpCurMonth + 1).toString().padStart(2, '0') + \". \" + d.toString().padStart(2, '0') + \".\";\n            document.getElementById('txt-date').innerText = formatted;\n            document.getElementById('inp-date').value = formatted;\n            renderSwpCalendar();\n            setTimeout(function() { closeSwpDropdown('field-date'); }, 250);\n        }\n\n        document.addEventListener('DOMContentLoaded', function() {\n            renderSwpCalendar();\n            applyGuestLimits();\n            document.querySelectorAll('.somoza-booking-field').forEach(function(field) {\n                field.addEventListener('mousemove', function(e) {\n                    this.style.setProperty('--x', e.offsetX + 'px');\n                    this.style.setProperty('--y', e.offsetY + 'px');\n                });\n            });\n\n            \/\/ Szerz\u0151d\u00e9s-elfogad\u00e1s checkbox figyel\u0151\n            var caCb = document.getElementById('contract-accept');\n            if (caCb) caCb.addEventListener('change', updateContractNextButton);\n            const pSection = document.getElementById('somoza-floating-booking-area');\n            if (!pSection) return;\n            if (window.innerWidth > 768) {\n                window.addEventListener('scroll', function() {\n                    const scrollPos = window.scrollY || window.pageYOffset;\n                    if (scrollPos < 1200) pSection.style.setProperty('margin-top', (-60 - (scrollPos * 0.4)) + 'px', 'important');\n                }, { passive: true });\n            }\n        });\n    <\/script>\n    \n\n\n\n<style>\n  \/* === FONT BET\u00d6LT\u00c9SE === *\/\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,600;1,600&family=Montserrat:wght@400;500&display=swap');\n\n  \/* === GLOB\u00c1LIS SZEKCI\u00d3 BE\u00c1LL\u00cdT\u00c1SOK === *\/\n  .somoza-guarantee-section {\n    --bg-alabaster: #F5F8FA;\n    --text-navy: #1A2A3A;\n    --text-anthracite: #222222;\n    --font-heading: 'Cormorant Garamond', serif;\n    --font-body: 'Montserrat', sans-serif;\n    \n    background-color: var(--bg-alabaster);\n    padding: 80px 20px; \/* Hatalmas t\u00e9rk\u00f6z a dr\u00e1mai hat\u00e1s\u00e9rt *\/\n    width: 100%;\n    min-height: 80vh;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    overflow: hidden;\n  }\n\n  \/* === K\u00d6Z\u00c9PRE Z\u00c1RT TARTALOM === *\/\n  .somoza-guarantee-content {\n    max-width: 900px;\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    \n    \/* Alaphelyzetben rejtett, a JS fogja mozgatni a g\u00f6rget\u00e9s alapj\u00e1n *\/\n    opacity: 0;\n    transform: translateY(80px);\n    will-change: opacity, transform; \/* Hardveres gyors\u00edt\u00e1s a sima g\u00f6rget\u00e9s\u00e9rt *\/\n  }\n\n  \/* === FELS\u0150 D\u00cdSZ\u00cdT\u0150 ELEM (VONAL - SZ\u00d6VEG - VONAL) === *\/\n  .somoza-discover-badge {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 20px;\n    margin-bottom: 40px;\n    width: 100%;\n  }\n\n  .somoza-line {\n    height: 1px;\n    width: 80px;\n    background-color: #D4AF37;\n    opacity: 0.6;\n  }\n\n  .somoza-discover-badge span {\n    font-family: var(--font-body);\n    font-size: 13px;\n    font-weight: 500;\n    color: var(--text-navy);\n    letter-spacing: 3px;\n    text-transform: uppercase;\n  }\n\n  \/* === TIPOGR\u00c1FIA === *\/\n  .somoza-guarantee-content h2 {\n    font-family: var(--font-heading);\n    font-size: 56px; \/* Megn\u00f6velt m\u00e9ret *\/\n    color: var(--text-navy);\n    line-height: 1.15;\n    margin: 0 0 40px 0;\n    letter-spacing: -0.5px;\n  }\n\n  .somoza-guarantee-content h2 i {\n    font-style: italic;\n    font-weight: 600;\n  }\n\n  .somoza-guarantee-content p {\n    font-family: var(--font-body);\n    font-size: 20px; \/* Megn\u00f6velt m\u00e9ret *\/\n    font-weight: 400;\n    color: var(--text-anthracite);\n    line-height: 1.7;\n    margin: 0 auto;\n    max-width: 700px; \/* Sz\u00e9lesebb lett, de m\u00e9g mindig k\u00e9nyelmes olvasni *\/\n  }\n\n  \/* === RESZPONZ\u00cdV BE\u00c1LL\u00cdT\u00c1SOK === *\/\n  @media (max-width: 1024px) {\n    .somoza-guarantee-section { padding: 140px 20px; }\n    .somoza-guarantee-content h2 { font-size: 52px; }\n    .somoza-guarantee-content p { font-size: 20px; }\n    .somoza-line { width: 50px; }\n  }\n\n  @media (max-width: 768px) {\n    .somoza-guarantee-section { padding: 100px 20px; min-height: auto; }\n    .somoza-guarantee-content h2 { font-size: 38px; margin-bottom: 30px; }\n    .somoza-guarantee-content p { font-size: 16px; }\n    .somoza-line { width: 30px; }\n    .somoza-discover-badge span { font-size: 11px; letter-spacing: 2px; }\n    .somoza-discover-badge { gap: 15px; margin-bottom: 30px; }\n  }\n<\/style>\n\n<!-- === HTML STRUKT\u00daRA === -->\n<section class=\"somoza-guarantee-section\">\n  <div class=\"somoza-guarantee-content somoza-dynamic-scroll\">\n    \n    <!-- FELS\u0150 D\u00cdSZ\u00cdT\u0150 ELEM -->\n    <div class=\"somoza-discover-badge\">\n      <div class=\"somoza-line\"><\/div>\n      <span>Fedezze fel vel\u00fcnk Madridot<\/span>\n      <div class=\"somoza-line\"><\/div>\n    <\/div>\n\n    <!-- SZ\u00d6VEG -->\n    <h2>Autentikus \u00e9lm\u00e9ny.<br><i>Szabadon \u00e1t\u00e9lve.<\/i><\/h2>\n    <p>Hissz\u00fck, hogy a legszebb madridi pillanatokat a prec\u00edz helyismeret \u00e9s az emberi t\u00f6r\u0151d\u00e9s teszi lehet\u0151v\u00e9. Minden \u00e9ttermet, t\u00f6rt\u00e9nelmi \u00fatvonalat \u00e9s programot szem\u00e9lyesen tesztelt\u00fcnk, \u00edgy Tibor \u00e9s Laura val\u00f3s, helyi tapasztalata jelenti a garanci\u00e1t a z\u00f6kken\u0151mentes utaz\u00e1sra. Nincs kapkod\u00e1s \u00e9s nincsenek v\u00e1ratlan akad\u00e1lyok \u2013 csak a spanyol kult\u00fara tiszta, akad\u00e1lymentes \u00e1t\u00e9l\u00e9se.<\/p>\n    \n  <\/div>\n<\/section>\n\n<!-- === JAVASCRIPT: DINAMIKUS G\u00d6RGET\u00c9S K\u00d6VET\u00c9S === -->\n<script>\n  (function() {\n    function initDynamicScroll() {\n      const contentBlock = document.querySelector('.somoza-dynamic-scroll');\n      if (!contentBlock) return;\n\n      \/\/ Friss\u00edtj\u00fck az elemet g\u00f6rget\u00e9skor\n      const onScroll = () => {\n        const rect = contentBlock.getBoundingClientRect();\n        const windowHeight = window.innerHeight;\n        \n        \/\/ Kisz\u00e1moljuk, mennyire van benne a k\u00e9perny\u0151ben az elem\n        \/\/ 0 = \u00e9pp most \u00e9rte el a k\u00e9perny\u0151 alj\u00e1t\n        \/\/ 1 = fel\u00e9rt a k\u00e9perny\u0151 als\u00f3 60%-\u00e1ba (itt m\u00e1r teljesen l\u00e1tszik)\n        let progress = (windowHeight - rect.top) \/ (windowHeight * 0.6);\n        \n        \/\/ Korl\u00e1tozzuk az \u00e9rt\u00e9ket 0 \u00e9s 1 k\u00f6z\u00e9\n        if (progress < 0) progress = 0;\n        if (progress > 1) progress = 1;\n\n        \/\/ Az \u00e1tl\u00e1tsz\u00f3s\u00e1g \u00e9s a felcs\u00fasz\u00e1s m\u00e9rt\u00e9ke szorosan k\u00f6veti a g\u00f6rget\u00e9st\n        \/\/ Ha lefel\u00e9 g\u00f6rgetsz, a progress n\u0151 (1 fel\u00e9) -> megjelenik\n        \/\/ Ha felfel\u00e9 g\u00f6rgetsz, a progress cs\u00f6kken (0 fel\u00e9) -> elt\u0171nik\n        contentBlock.style.opacity = progress;\n        contentBlock.style.transform = `translateY(${(1 - progress) * 80}px)`;\n      };\n\n      \/\/ Kezdeti be\u00e1ll\u00edt\u00e1s \u00e9s g\u00f6rget\u00e9s figyel\u0151 hozz\u00e1ad\u00e1sa\n      window.addEventListener('scroll', onScroll, { passive: true });\n      onScroll(); \/\/ Lefuttatjuk egyszer bet\u00f6lt\u00e9skor is, h\u00e1tha m\u00e1r ott \u00e1ll a g\u00f6rget\u0151s\u00e1v\n    }\n\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', initDynamicScroll);\n    } else {\n      initDynamicScroll();\n    }\n  })();\n<\/script>\n\n\n\n<meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Somoza Madrid &#8211; Interakt\u00edv T\u00e9rk\u00e9p<\/title>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@300;400;600;700&amp;display=swap\" rel=\"stylesheet\">\n    <style>\n        :root {\n            --color-primary: #1A2A3A;\n            --color-accent: #D4AF37;\n            --color-blue: #004C99;\n            --color-bg: #F5F8FA;\n            --font-main: 'Montserrat', sans-serif;\n        }\n\n        * { margin: 0; padding: 0; box-sizing: border-box; }\n\n        \/* === 1. SZEKCI\u00d3 ALAPOK === *\/\n        #somoza-experience-map {\n            background-color: var(--color-bg);\n            min-height: 100vh;\n            width: 100%;\n            padding: 80px 20px;\n            font-family: var(--font-main);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            overflow-x: hidden;\n            position: relative;\n        }\n\n       \/* === 2. KAPCSOL\u00d3 (GOMB DIZ\u00c1JN) === *\/\n.toggle-wrapper {\n    margin-bottom: 60px;\n    z-index: 50;\n    position: relative;\n}\n\n.editorial-toggle {\n    display: flex;\n    gap: 15px; \/* Kisebb t\u00e1vols\u00e1g a gombok k\u00f6z\u00f6tt *\/\n    background: rgba(0,0,0,0.03); \/* Halv\u00e1ny keret a gombok k\u00f6r\u00fcl *\/\n    padding: 8px;\n    border-radius: 50px; \/* Teljesen kerek\u00edtett k\u00fcls\u0151 keret *\/\n}\n\n.toggle-btn {\n    font-size: 13px;\n    font-weight: 700;\n    letter-spacing: 1px;\n    color: var(--color-primary);\n    text-transform: uppercase;\n    cursor: pointer;\n    padding: 12px 25px;\n    border-radius: 40px; \/* Kerek\u00edtett sarkok *\/\n    background-color: transparent;\n    transition: all 0.4s ease;\n    border: 1px solid transparent;\n}\n\n\/* Akt\u00edv gomb st\u00edlusa: Feh\u00e9r h\u00e1tt\u00e9r, \u00e1rny\u00e9kkal *\/\n.toggle-btn.active {\n    background-color: #ffffff;\n    color: var(--color-primary);\n    box-shadow: 0 4px 15px rgba(0,0,0,0.08);\n    border: 1px solid rgba(0,0,0,0.05);\n    opacity: 1;\n}\n\n\/* Hover effekt a nem akt\u00edv gombra *\/\n.toggle-btn:not(.active):hover {\n    opacity: 0.8;\n    background-color: rgba(255,255,255,0.5);\n}\n\n\/* Az al\u00e1h\u00faz\u00e1st t\u00f6r\u00f6lj\u00fck, mert gombos lett a diz\u00e1jn *\/\n.toggle-underline {\n    display: none;\n}\n\n        \/* === 3. T\u00c9RK\u00c9P KONT\u00c9NER === *\/\n        .map-layout {\n            position: relative;\n            width: 100%;\n            max-width: 700px;\n            margin: 0 auto;\n        }\n\n        .map-image {\n            width: 100%;\n            height: auto;\n            display: block;\n            opacity: 0.85;\n            filter: drop-shadow(0 20px 40px rgba(0,0,0,0.05));\n        }\n\n        #connection-canvas {\n            position: absolute;\n            top: 0; left: 0;\n            width: 100%; height: 100%;\n            pointer-events: none;\n            z-index: 5;\n            overflow: visible;\n        }\n\n        .animated-line {\n            fill: none;\n            stroke: var(--color-primary);\n            stroke-width: 1.5px;\n            opacity: 0.3;\n            stroke-dasharray: 1000;\n            stroke-dashoffset: 1000;\n        }\n\n        .draw-anim { animation: drawLine 1.5s forwards cubic-bezier(0.6, 0.04, 0.15, 1); }\n        @keyframes drawLine { to { stroke-dashoffset: 0; } }\n\n        \/* === 4. C\u00c9LPONTOK === *\/\n        .targets-layer {\n            position: absolute;\n            top: 0; left: 0;\n            width: 100%; height: 100%;\n            z-index: 10;\n            pointer-events: none;\n        }\n\n        .map-dot {\n            position: absolute;\n            width: 24px; height: 24px;\n            background-color: var(--color-blue);\n            border-radius: 50%;\n            transform: translate(-50%, -50%);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: #fff;\n            font-size: 11px;\n            font-weight: 700;\n            box-shadow: 0 0 15px rgba(0, 76, 153, 0.6);\n        }\n\n        .map-dot::after {\n            content: '';\n            position: absolute;\n            width: 100%; height: 100%;\n            border-radius: 50%;\n            background-color: var(--color-blue);\n            z-index: -1;\n            animation: pulseDot 2s infinite;\n        }\n\n        @keyframes pulseDot {\n            0% { transform: scale(1); opacity: 0.8; }\n            100% { transform: scale(2.5); opacity: 0; }\n        }\n\n        .map-radar-zone {\n            position: absolute;\n            transform: translate(-50%, -50%);\n            border-radius: 50%;\n            background-color: rgba(0, 76, 153, 0.05);\n            border: 1px dashed rgba(0, 76, 153, 0.6);\n            pointer-events: none;\n            animation: rotateRadar 20s linear infinite;\n        }\n\n        .map-radar-zone::before {\n            content: '';\n            position: absolute;\n            top: 15%; left: 15%;\n            width: 70%; height: 70%;\n            border-radius: 50%;\n            border: 1px solid rgba(0, 76, 153, 0.2);\n        }\n\n        @keyframes rotateRadar {\n            0% { transform: translate(-50%, -50%) rotate(0deg); }\n            100% { transform: translate(-50%, -50%) rotate(360deg); }\n        }\n\n        \/* === 5. K\u00c1RTY\u00c1K === *\/\n        .cards-layer {\n            position: absolute;\n            top: 0; left: 0;\n            width: 100%; height: 100%;\n            z-index: 60;\n        }\n\n        .info-card {\n            position: absolute;\n            \/* MEGN\u00d6VELT ALAPM\u00c9RET A K\u00c9P MIATT *\/\n            width: 380px;\n            height: 150px; \n            background: #fff;\n            padding: 15px; \/* Kisebb padding, hogy a k\u00e9pnek t\u00f6bb helye legyen *\/\n            box-shadow: 0 10px 30px rgba(0,0,0,0.08);\n            border-radius: 20px;\n            opacity: 0;\n            visibility: hidden;\n            transform: translateY(20px);\ntext-decoration: none !important;\n    cursor: pointer;\n    color: inherit;\n            \n            \/* K\u00c9P \u00c9S SZ\u00d6VEG OSZTOTT ELRENDEZ\u00c9SE *\/\n            display: flex;\n            flex-direction: row; \/* Egym\u00e1s mell\u00e9 ker\u00fcl a k\u00e9p \u00e9s a sz\u00f6veg *\/\n            gap: 15px;\n            align-items: stretch; \/* Hogy a k\u00e9p kit\u00f6ltse a magass\u00e1got *\/\n            \n            margin: 0;\n            transition: all 0.7s cubic-bezier(0.16, 1, 0.3, 1);\n            border-top: 3px solid var(--color-blue);\n        }\n\n        .info-card.visible {\n            opacity: 1;\n            visibility: visible;\n            transform: translateY(0);\n        }\n\n        \/* --- HOVER N\u00d6VEKED\u00c9S BE\u00c1LL\u00cdT\u00c1SAI --- *\/\n        .info-card.visible:hover {\n            width: 600px;\n            height: 280px;\n            \/* Szimmetrikus n\u00f6veked\u00e9s k\u00f6zpontb\u00f3l *\/\n            margin-top: -65px;  \/* (280-150)\/2 *\/\n            margin-left: -30px; \/* (380-320)\/2 *\/\n            z-index: 70;\n            box-shadow: 0 25px 50px rgba(0, 76, 153, 0.15);\n            border-radius: 35px;\n        }\n\n      \/* --- K\u00c1RTYA BELS\u0150 R\u00c9SZEI: K\u00c9P --- *\/\n        .card-image {\n            flex: 0 0 110px; \/* Alap\u00e9rtelmezett a kis k\u00e1rty\u00e1knak *\/\n            border-radius: 12px;\n            overflow: hidden;\n            position: relative;\n            \/* \u00daJ: hogy a sz\u00e9less\u00e9g is selymesen v\u00e1ltozzon *\/\n            transition: flex 0.7s cubic-bezier(0.16, 1, 0.3, 1);\n        }\n\n\/* Szolg\u00e1ltat\u00e1s k\u00e1rtya k\u00e9p\u00e9nek sz\u00e9less\u00e9ge hover (eg\u00e9r r\u00e1mutat\u00e1s) \u00e1llapotban *\/\n.info-card.visible:hover .card-image {\n    flex: 0 0 230px; \/* <--- Ezt a sz\u00e1mot n\u00f6veld meg pl. 180px-re, ha sz\u00e9lesebb k\u00e9pet akarsz *\/\n}\n        \n        .card-image img {\n            width: 100%;\n            height: 100%;\n            object-fit: cover; \/* Kit\u00f6lti a keretet ar\u00e1nyosan *\/\n            transition: transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);\n        }\n\n        \/* Hoverkor a k\u00e9p finoman r\u00e1k\u00f6zel\u00edt (zoom) *\/\n        .info-card.visible:hover .card-image img {\n            transform: scale(1.1);\n        }\n\n        \/* --- K\u00c1RTYA BELS\u0150 R\u00c9SZEI: SZ\u00d6VEG --- *\/\n        .card-content {\n            flex: 1;\n            display: flex;\n            flex-direction: column;\n            overflow: hidden;\n        }\n\n        .info-card h3 {\n            font-size: 13px;\n            color: var(--color-primary);\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            margin-bottom: 8px;\n            line-height: 1.4;\n        }\n\n        .info-card p.short-text {\n            font-size: 12px;\n            color: #666;\n            line-height: 1.5;\n            margin: 0;\n        }\n\n        .extra-text-wrapper {\n            opacity: 0;\n            margin-top: 0;\n            clip-path: circle(0% at 50% 0%);\n            transition: all 0.7s cubic-bezier(0.16, 1, 0.3, 1);\n        }\n\n        .info-card.visible:hover .extra-text-wrapper {\n            opacity: 1;\n            margin-top: 15px;\n            clip-path: circle(150% at 50% 0%);\n        }\n        \n        .extra-text-content {\n            font-size: 12px;\n            color: #888;\n            line-height: 1.5;\n            padding-top: 15px;\n            border-top: 1px solid #eee;\n        }\n        \/* ------------------------------------------- *\/\n\n        \/* PR\u00c9MIUM CSOMAGOK SPECI\u00c1LIS M\u00c9RETEI *\/\n        .info-card.package-card {\n            width: 360px;\n            height: 170px;\n        }\n\n        .info-card.package-card.visible:hover {\n            width: 600px;\n            height: 320px;\n            margin-top: -75px; \/* (320-170)\/2 *\/\n            margin-left: -40px; \/* (440-360)\/2 *\/\n        }\n\n\/* \u00daJ: Csomagk\u00e1rtya k\u00e9p\u00e9nek alapm\u00e9rete (sz\u00e9lesebb, kocka alak\u00fa) *\/\n        .info-card.package-card .card-image {\n            flex: 0 0 130px; \n        }\n\n        \/* \u00daJ: Csomagk\u00e1rtya k\u00e9p\u00e9nek megn\u00f6velt m\u00e9rete hoverkor (hogy ne legyen keskeny) *\/\n        .info-card.package-card.visible:hover .card-image {\n            flex: 0 0 250px; \n        }\n\n        \/* === \u00c1LLAPOT KEZEL\u00c9S === *\/\n        .state-group { transition: opacity 0.4s ease; }\n        .hide-state { opacity: 0; pointer-events: none; }\n\n        \/* === 6. MOBIL N\u00c9ZET === *\/\n        .mobile-gallery { display: none; }\n\/* Alaphelyzetben (asztali n\u00e9zetben) rejtve van *\/\n        .mobile-gallery-hint { display: none; }\n        @media (max-width: 1024px) {\n            #somoza-experience-map { padding: 40px 0; min-height: auto; }\n            .map-layout { max-width: 90%; margin-bottom: 30px; }\n            \n            .cards-layer, #connection-canvas { display: none !important; }\n            \n            .mobile-gallery {\n                display: block;\n                width: 100%;\n                overflow-x: auto;\n                padding: 20px;\n                scroll-snap-type: x mandatory;\n                scrollbar-width: none;\n            }\n            .mobile-gallery::-webkit-scrollbar { display: none; }\n\/* Kifejezetten tab \u00e9s mobil n\u00e9zetben gy\u00f6ny\u00f6r\u0171en megjelen\u00edtj\u00fck *\/\n            .mobile-gallery-hint {\n                display: block !important;\n                font-family: var(--font-main);\n                font-size: 11px;\n                font-weight: 700;\n                color: var(--color-blue); \/* A brand eleg\u00e1ns k\u00e9k sz\u00edne *\/\n                text-transform: uppercase;\n                letter-spacing: 1.5px;\n                text-align: center;\n                margin-bottom: 5px;\n                width: 100%;\n                opacity: 0.8;\npadding: 10px 35px !important;\n            }\n\n            .gallery-track {\n                display: flex;\n                gap: 20px;\n                width: max-content;\n            }\n\n            .m-card {\n                scroll-snap-align: center;\nscroll-snap-stop: always !important;\n                width: 280px;\n                background: #fff;\n                padding: 20px;\n                box-shadow: 0 5px 20px rgba(0,0,0,0.05);\n                border-radius: 15px;\ndisplay: block;\n    text-decoration: none !important;\n    cursor: pointer;\n    color: inherit;\n            }\n            \n            .m-card .num {\n                color: var(--color-blue);\n                font-weight: 700;\n                font-size: 14px;\n                margin-bottom: 10px;\n                display: block;\n            }\n            \n            .m-card h3 { font-size: 14px; color: var(--color-primary); margin-bottom: 10px; }\n            .m-card p { font-size: 13px; color: #666; }\n        }\n    <\/style>\n\n\n\n<section id=\"somoza-experience-map\">\n    \n    <!-- 1. KAPCSOL\u00d3 -->\n    <div class=\"toggle-wrapper\">\n        <div class=\"editorial-toggle\">\n            <span class=\"toggle-btn active\" data-target=\"state-services\">V\u00e1logatott programok<\/span>\n            <span class=\"toggle-btn\" data-target=\"state-packages\">Pr\u00e9mium Csomagok<\/span>\n            <div class=\"toggle-underline\"><\/div>\n        <\/div>\n    <\/div>\n\n    <!-- 2. T\u00c9RK\u00c9P KONT\u00c9NER -->\n    <div class=\"map-layout\" id=\"map-bounds\">\n        \n        <!-- Alap K\u00e9p -->\n        <img decoding=\"async\" class=\"map-image\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/mardrid-terkep.png\" alt=\"Madrid Map\">\n        \n        <!-- Dinamikus Vonalak -->\n        <svg id=\"connection-canvas\"><\/svg>\n\n        <!-- === \u00c1LLAPOT A: SZOLG\u00c1LTAT\u00c1SOK === -->\n        <div class=\"state-group\" id=\"state-services\">\n            <div class=\"targets-layer\">\n                <div class=\"map-dot\" id=\"dot-1\" style=\"top: 55%; left: 45%;\">1<\/div>\n                <div class=\"map-dot\" id=\"dot-2\" style=\"top: 20%; left: 60%;\">2<\/div>\n                <div class=\"map-dot\" id=\"dot-3\" style=\"top: 50%; left: 55%;\">3<\/div>\n                <div class=\"map-dot\" id=\"dot-4\" style=\"top: 65%; left: 40%;\">4<\/div>\n                <div class=\"map-dot\" id=\"dot-5\" style=\"top: 75%; left: 60%;\">5<\/div>\n            <\/div>\n\n            <div class=\"cards-layer\">\n               <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/programok-es-csomagok\/autentikus-flamenco-est\/\" class=\"info-card\" data-connect=\"dot-1\" style=\"top: 5%; left: -25%;\">\n                    <div class=\"card-image\">\n                        <img decoding=\"async\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/Flamenco-est.png\" alt=\"Flamenco Est\">\n                    <\/div>\n                    <div class=\"card-content\">\n                        <h3>AUTENTIKUS FLAMENCO EST<\/h3>\n                        <p style=\"font-size: 10px; color: var(--color-blue); font-weight: 700; margin-bottom: 8px; letter-spacing: 1px;\">\/ 100% AKAD\u00c1LYMENTES \/<\/p>\n                        <p class=\"short-text\">Spanyolorsz\u00e1g lelke egyetlen l\u00e9legzetel\u00e1ll\u00edt\u00f3 el\u0151ad\u00e1sban.<\/p>\n                        <div class=\"extra-text-wrapper\">\n                            <div class=\"extra-text-content\">Egy madridi utaz\u00e1s elk\u00e9pzelhetetlen a flamenco m\u00e9ly, \u0151szinte szenved\u00e9lye n\u00e9lk\u00fcl. \u00c9lje \u00e1t az igazi spanyol \u00e9let\u00e9rz\u00e9st professzion\u00e1lis t\u00e1ncosok \u00e9s zen\u00e9szek tolm\u00e1csol\u00e1s\u00e1ban! El\u0151re lefoglalt, garant\u00e1ltan akad\u00e1lymentes \u00e9s t\u00f6k\u00e9letes r\u00e1l\u00e1t\u00e1st biztos\u00edt\u00f3 \u00fcl\u0151helyek v\u00e1rj\u00e1k, sorban \u00e1ll\u00e1s \u00e9s kompromisszumok n\u00e9lk\u00fcl.<\/div>\n                        <\/div>\n                    <\/div>\n                <\/a>\n\n                <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/programok-es-csomagok\/privat-repteri-transzfer\/\" class=\"info-card\" data-connect=\"dot-2\" style=\"top: -5%; right: -20%;\">\n                    <div class=\"card-image\">\n                        <img decoding=\"async\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/repteritranszfer.png\" alt=\"Rept\u00e9ri Transzfer\">\n                    <\/div>\n                    <div class=\"card-content\">\n                        <h3>PRIV\u00c1T REPT\u00c9RI TRANSZFER<\/h3>\n                        <p style=\"font-size: 10px; color: var(--color-blue); font-weight: 700; margin-bottom: 8px; letter-spacing: 1px;\">\/ H\u00e1zt\u00f3l h\u00e1zig szolg\u00e1ltat\u00e1s \/<\/p>\n                        <p class=\"short-text\">A gondtalan meg\u00e9rkez\u00e9s \u00e9s elutaz\u00e1s garanci\u00e1ja.<\/p>\n                        <div class=\"extra-text-wrapper\">\n                            <div class=\"extra-text-content\">Felejtse el a sorban \u00e1ll\u00e1st \u00e9s a csomagokkal val\u00f3 bajl\u00f3d\u00e1st! Pr\u00e9mium, t\u00e1gas g\u00e9pj\u00e1rm\u0171veinkkel \u00e9s tapasztalt sof\u0151rjeinkkel z\u00f6kken\u0151mentes, h\u00e1zt\u00f3l h\u00e1zig tart\u00f3 k\u00e9nyelmet biztos\u00edtunk a rep\u00fcl\u0151t\u00e9r \u00e9s a sz\u00e1ll\u00e1sa k\u00f6z\u00f6tt. \u00d6nnek csak h\u00e1tra kell d\u0151lnie, mi minden logisztik\u00e1t megoldunk m\u00e1r a landol\u00e1s pillanat\u00e1t\u00f3l.<\/div>\n                        <\/div>\n                    <\/div>\n                <\/a>\n\n                <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/programok-es-csomagok\/premium-kiscsoportos-varosnezes\/\" class=\"info-card\" data-connect=\"dot-3\" style=\"top: 40%; right: -25%;\">\n                    <div class=\"card-image\">\n                        <img decoding=\"async\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/premium-kiscsoportos.png\" alt=\"Vezetett V\u00e1rosn\u00e9z\u00e9s\">\n                    <\/div>\n                    <div class=\"card-content\">\n                        <h3>PR\u00c9MIUM KISCSOPORTOS V\u00c1ROSN\u00c9Z\u00c9S<\/h3>\n                        <p style=\"font-size: 10px; color: var(--color-blue); font-weight: 700; margin-bottom: 8px; letter-spacing: 1px;\">\/ 100% Akad\u00e1lymentes \/<\/p>\n                        <p class=\"short-text\">Fedezze fel Madrid legszebb titkait k\u00e9nyelmes, nyugodt temp\u00f3ban.<\/p>\n                        <div class=\"extra-text-wrapper\">\n                            <div class=\"extra-text-content\">Ismerje meg a spanyol f\u0151v\u00e1ros ikonikus l\u00e1tnival\u00f3it \u2013 az \u00d3per\u00e1t\u00f3l a Kir\u00e1lyi Palot\u00e1n \u00e1t a pezsg\u0151 Plaza Mayor-ig \u2013 profi idegenvezet\u0151nk, Laura k\u00eds\u00e9ret\u00e9ben! Szem\u00e9lyre szabott, kiscsoportos t\u00far\u00e1nk teljesen l\u00e9pcs\u0151mentes \u00fatvonalon halad, \u00edgy \u00d6nnek csak Madrid leny\u0171g\u00f6z\u0151 sz\u00e9ps\u00e9g\u00e9re \u00e9s t\u00f6rt\u00e9nelm\u00e9re kell f\u00f3kusz\u00e1lnia.<\/div>\n                        <\/div>\n                    <\/div>\n                <\/a>\n\n                <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/programok-es-csomagok\/mercado-de-san-miguel\/\" class=\"info-card\" data-connect=\"dot-4\" style=\"bottom: 5%; left: -25%;\">\n                    <div class=\"card-image\">\n                        <img decoding=\"async\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/MERCADO-DE-SAN-MIGUEL-PREMIUM-KOSTOLO2.png\" alt=\"Mercado K\u00f3stol\u00f3\">\n                    <\/div>\n                    <div class=\"card-content\">\n                        <h3>Mercado de San Miguel piact\u00fara k\u00f3stol\u00f3val<\/h3>\n                        <p style=\"font-size: 10px; color: var(--color-blue); font-weight: 700; margin-bottom: 8px; letter-spacing: 1px;\">\/ 100% Akad\u00e1lymentes \/<\/p>\n                        <p class=\"short-text\">A spanyol \u00edzek kult\u00far\u00e1ja, szak\u00e9rt\u0151 vezet\u00e9ssel.<\/p>\n                        <div class=\"extra-text-wrapper\">\n                            <div class=\"extra-text-content\">Tapasztalja meg Madrid legh\u00edresebb t\u00f6rt\u00e9nelmi piac\u00e1nak pezsg\u00e9s\u00e9t egy exkluz\u00edv k\u00f3stol\u00f3 keret\u00e9ben! Ez nem csup\u00e1n egy \u00e9tkez\u00e9s: szak\u00e9rt\u0151 idegenvezet\u0151nk beavatja \u00d6nt a spanyol kulin\u00e1ris hagyom\u00e1nyok titkaiba, mik\u00f6zben gondosan v\u00e1logatott, autentikus tapasokat \u00e9s pr\u00e9mium italokat k\u00f3stolhat. Val\u00f3di \u00e9rt\u00e9k \u00e9s tud\u00e1s a legig\u00e9nyesebb utaz\u00f3knak.<\/div>\n                        <\/div>\n                    <\/div>\n                <\/a>\n\n                <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/programok-es-csomagok\/autentikus-spanyol-gasztronomiai-elmeny\/\" class=\"info-card\" data-connect=\"dot-5\" style=\"bottom: -5%; right: -10%;\">\n                    <div class=\"card-image\">\n                        <img decoding=\"async\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/spanyol-gasztoelmenyu.png\" alt=\"Autentikus \u00c9tterem\">\n                    <\/div>\n                    <div class=\"card-content\">\n                        <h3>AUTENTIKUS SPANYOL GASZTRO\u00c9LM\u00c9NY<\/h3>\n                        <p style=\"font-size: 10px; color: var(--color-blue); font-weight: 700; margin-bottom: 8px; letter-spacing: 1px;\">\/ 100% Akad\u00e1lymentes \/<\/p>\n                        <p class=\"short-text\">Hagyom\u00e1nyos \u00edzek \u00e9s val\u00f3di spanyol vend\u00e9gszeretet.<\/p>\n                        <div class=\"extra-text-wrapper\">\n                            <div class=\"extra-text-content\">L\u00e9pjen be a hamis\u00edtatlan spanyol gasztron\u00f3mia vil\u00e1g\u00e1ba egy gondosan kiv\u00e1lasztott, tradicion\u00e1lis \u00e9tteremben! El\u0151re lefoglalt asztal\u00e1n\u00e1l, k\u00e9nyelmes \u00e9s teljesen akad\u00e1lymentes k\u00f6rnyezetben \u00e9lvezheti a h\u00edres paell\u00e1t \u00e9s a klasszikus fog\u00e1sokat. \u0150szinte vend\u00e9gszeretet, nyugodt atmoszf\u00e9ra \u00e9s tiszta \u00edzek v\u00e1rj\u00e1k, sorban \u00e1ll\u00e1s n\u00e9lk\u00fcl.<\/div>\n                        <\/div>\n                    <\/div>\n                <\/a>\n            <\/div>\n        <\/div>\n\n        <!-- === \u00c1LLAPOT B: CSOMAGOK === -->\n        <div class=\"state-group hide-state\" id=\"state-packages\">\n            <div class=\"targets-layer\">\n                <div class=\"map-radar-zone\" id=\"aura-1\" style=\"top: 50%; left: 50%; width: 250px; height: 250px;\"><\/div>\n                <div class=\"map-radar-zone\" id=\"aura-2\" style=\"top: 60%; left: 30%; width: 180px; height: 180px;\"><\/div>\n                <div class=\"map-radar-zone\" id=\"aura-3\" style=\"top: 30%; left: 65%; width: 220px; height: 220px;\"><\/div>\n            <\/div>\n\n            <div class=\"cards-layer\">\n                <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/programok-es-csomagok\/the-complete-madrid-experience-pack\/\" class=\"info-card package-card\" data-connect=\"aura-1\" style=\"top: 20%; left: -30%;\">\n                    <div class=\"card-image\">\n                        <img decoding=\"async\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/Complete-Madrid-Experience2.png\" alt=\"VIP All-Inclusive\">\n                    <\/div>\n                    <div class=\"card-content\">\n                        <h3>The Complete Madrid Experience<\/h3>\n                        <p style=\"font-size: 10px; color: var(--color-blue); font-weight: 700; margin-bottom: 8px; letter-spacing: 1px;\">\/ Korl\u00e1tozott el\u00e9rhet\u0151s\u00e9g \/<\/p>\n                        <p class=\"short-text\">A t\u00f6k\u00e9letes spanyol utaz\u00e1s, landol\u00e1st\u00f3l az elutaz\u00e1sig.<\/p>\n                        <div class=\"extra-text-wrapper\">\n                            <div class=\"extra-text-content\">Hagyja maga m\u00f6g\u00f6tt a logisztika minden terh\u00e9t! Ez a pr\u00e9mium csomagunk a v\u00e1ros legjav\u00e1t ny\u00fajtja egyetlen z\u00f6kken\u0151mentes \u00e9lm\u00e9nyben. Priv\u00e1t rept\u00e9ri transzfer, szem\u00e9lyre szabott idegenvezet\u00e9s, tradicion\u00e1lis h\u00e1romfog\u00e1sos vacsora \u00e9s egy l\u00e9legzetel\u00e1ll\u00edt\u00f3 flamenco est \u2013 minden el\u0151re lefoglalva, kiz\u00e1r\u00f3lag az \u00d6n k\u00e9nyelm\u00e9re hangolva.<\/div>\n                        <\/div>\n                    <\/div>\n                <\/a>\n\n                <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/programok-es-csomagok\/madrid-gastro-pack\/\" class=\"info-card package-card\" data-connect=\"aura-2\" style=\"bottom: 10%; left: -20%;\">\n                    <div class=\"card-image\">\n                        <img decoding=\"async\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/gastro-pack2.png\" alt=\"Gastro Pack\">\n                    <\/div>\n                    <div class=\"card-content\">\n                        <h3>Gastro Pack<\/h3>\n                        <p style=\"font-size: 10px; color: var(--color-blue); font-weight: 700; margin-bottom: 8px; letter-spacing: 1px;\">\/ 100% AKAD\u00c1LYMENTES \/<\/p>\n                        <p class=\"short-text\">K\u00e9t autentikus \u00edz\u00e9lm\u00e9ny egyetlen t\u00f6k\u00e9letes est\u00e9be s\u0171r\u00edtve.<\/p>\n                        <div class=\"extra-text-wrapper\">\n                            <div class=\"extra-text-content\">Mer\u00fclj\u00f6n el a spanyol kulin\u00e1ria vil\u00e1g\u00e1ban! Ez a pr\u00e9mium csomag a k\u00e9t legfontosabb madridi \u00e9lm\u00e9nyt \u00f6tv\u00f6zi: egy szak\u00e9rt\u0151 \u00e1ltal vezetett, exkluz\u00edv tapask\u00f3stol\u00f3t a pezsg\u0151 San Miguel piacon, melyet egy tradicion\u00e1lis, h\u00e1romfog\u00e1sos spanyol vacsora k\u00f6vet. Autentikus \u00edzek, sorban \u00e1ll\u00e1s \u00e9s l\u00e9pcs\u0151k n\u00e9lk\u00fcl.<\/div>\n                        <\/div>\n                    <\/div>\n                <\/a>\n\n                <a href=\"https:\/\/rolliodemadrid.com\/fooldal\/programok-es-csomagok\/madrid-gast-cult-pack\/\" class=\"info-card package-card\" data-connect=\"aura-3\" style=\"top: 50%; right: -30%;\">\n                    <div class=\"card-image\">\n                        <img decoding=\"async\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/Gas-cult-pack.png\" alt=\"Gast-Cult Pack\">\n                    <\/div>\n                    <div class=\"card-content\">\n                        <h3>Gast-Cult Pack<\/h3>\n                        <p style=\"font-size: 10px; color: var(--color-blue); font-weight: 700; margin-bottom: 8px; letter-spacing: 1px;\">\/ 100% Akad\u00e1lymentes \/<\/p>\n                        <p class=\"short-text\">A spanyol kult\u00fara \u00e9s gasztron\u00f3mia esszenci\u00e1ja, kompromisszumok n\u00e9lk\u00fcl.<\/p>\n                        <div class=\"extra-text-wrapper\">\n                            <div class=\"extra-text-content\">Ismerje meg Madrid igazi arc\u00e1t a legn\u00e9pszer\u0171bb \u00e9lm\u00e9nycsomagunkkal! Egy pr\u00e9mium, l\u00e9pcs\u0151mentes t\u00f6rt\u00e9nelmi v\u00e1rosn\u00e9z\u00e9s ut\u00e1n \u00e1tadhatja mag\u00e1t a tradicion\u00e1lis spanyol \u00edzeknek egy h\u00e1romfog\u00e1sos vacsor\u00e1n, az est\u00e9t pedig egy l\u00e9legzetel\u00e1ll\u00edt\u00f3 flamenco el\u0151ad\u00e1s koron\u00e1zza meg. H\u00e1rom felejthetetlen \u00e9lm\u00e9ny, egyetlen z\u00f6kken\u0151mentes \u00fatitervben.<\/div>\n                        <\/div>\n                    <\/div>\n                <\/a>\n            <\/div>\n        <\/div>\n\n    <\/div>\n\n    <!-- 3. MOBIL GAL\u00c9RIA -->\n<div class=\"mobile-gallery-hint\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" style=\"width: 16px; height: 16px; vertical-align: middle; margin-right: 6px; display: inline-block;\"><path d=\"M19 12H5M12 19l-7-7 7-7\"><\/path><\/svg>\n        A k\u00e1rty\u00e1k megtekint\u00e9s\u00e9hez h\u00fazd balra a k\u00e1rty\u00e1kat\n    <\/div>\n    \n    <div class=\"mobile-gallery\">\n    <div class=\"mobile-gallery\">\n        <div class=\"gallery-track\" id=\"mobile-track\"><\/div>\n    <\/div>\n\n<\/div><\/section>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n    const btns = document.querySelectorAll('.toggle-btn');\n    const underline = document.querySelector('.toggle-underline');\n    const canvas = document.getElementById('connection-canvas');\n    const mapBounds = document.getElementById('map-bounds');\n    const mobileTrack = document.getElementById('mobile-track');\n\n    function updateUnderline(activeBtn) {\n        underline.style.width = `${activeBtn.offsetWidth}px`;\n        underline.style.left = `${activeBtn.offsetLeft}px`;\n    }\n\n    updateUnderline(document.querySelector('.toggle-btn.active'));\n\n    function drawConnections(stateId) {\n        canvas.innerHTML = ''; \n        if (window.innerWidth <= 1024) return;\n\n        const cards = document.querySelectorAll(`#${stateId} .info-card`);\n        const boundsRect = mapBounds.getBoundingClientRect(); \n\n        cards.forEach((card, index) => {\n            setTimeout(() => { card.classList.add('visible'); }, index * 150);\n\n            const targetId = card.getAttribute('data-connect');\n            const target = document.getElementById(targetId);\n            \n            if (!target) return;\n\n            const cardRect = card.getBoundingClientRect();\n            const targetRect = target.getBoundingClientRect();\n\n            const startX = (cardRect.left + cardRect.width \/ 2) - boundsRect.left;\n            const startY = (cardRect.top + cardRect.height \/ 2) - boundsRect.top;\n            \n            const endX = (targetRect.left + targetRect.width \/ 2) - boundsRect.left;\n            const endY = (targetRect.top + targetRect.height \/ 2) - boundsRect.top;\n\n            const path = document.createElementNS(\"http:\/\/www.w3.org\/2000\/svg\", \"path\");\n            const controlPointX = startX; \n            const controlPointY = endY; \n            \n            const d = `M ${startX} ${startY} Q ${controlPointX} ${controlPointY} ${endX} ${endY}`;\n            \n            path.setAttribute(\"d\", d);\n            path.setAttribute(\"class\", \"animated-line draw-anim\");\n            \n            setTimeout(() => { canvas.appendChild(path); }, index * 150 + 200);\n        });\n    }\n\n    function updateMobileGallery(stateId) {\n        mobileTrack.innerHTML = '';\n        const cards = document.querySelectorAll(`#${stateId} .info-card`);\n        \n        cards.forEach((card, index) => {\n            const title = card.querySelector('h3').innerText;\n            const desc = card.querySelector('.short-text').innerText;\n            const extra = card.querySelector('.extra-text-content').innerText;\n            \/\/ Dinamikusan kinyerj\u00fck a k\u00e9pet a k\u00e1rty\u00e1b\u00f3l\n            const imgSrc = card.querySelector('.card-image img').src;\n            const num = `0${index + 1}`;\n\n            const mCard = document.createElement('a');\n            mCard.href = card.getAttribute('href') || '#';\n            mCard.className = 'm-card';\n            mCard.innerHTML = `\n                <img decoding=\"async\" src=\"${imgSrc}\" alt=\"${title}\" style=\"width: 100%; height: 160px; object-fit: cover; border-radius: 10px; margin-bottom: 15px;\">\n                <span class=\"num\">${num}<\/span>\n                <h3>${title}<\/h3>\n                <p>${desc}<\/p>\n                <p style=\"margin-top: 12px; font-size: 11px; color: #888; border-top: 1px solid #eee; padding-top: 12px;\">${extra}<\/p>\n            `;\n            mobileTrack.appendChild(mCard);\n        });\n    }\n\n    btns.forEach(btn => {\n        btn.addEventListener('click', function() {\n            if (this.classList.contains('active')) return;\n\n            btns.forEach(b => b.classList.remove('active'));\n            this.classList.add('active');\n            \n\n            const targetState = this.getAttribute('data-target');\n\n            document.querySelectorAll('.info-card').forEach(c => c.classList.remove('visible'));\n            canvas.innerHTML = ''; \n            document.querySelectorAll('.state-group').forEach(group => group.classList.add('hide-state'));\n\n            setTimeout(() => {\n                document.getElementById(targetState).classList.remove('hide-state');\n                drawConnections(targetState);\n                updateMobileGallery(targetState);\n            }, 400); \n        });\n    });\n\n    setTimeout(() => {\n        drawConnections('state-services');\n        updateMobileGallery('state-services');\n    }, 500);\n\n    window.addEventListener('resize', () => {\n        updateUnderline(document.querySelector('.toggle-btn.active'));\n        const activeState = document.querySelector('.toggle-btn.active').getAttribute('data-target');\n        \n        if (window.innerWidth > 1024) {\n            canvas.innerHTML = '';\n            setTimeout(() => drawConnections(activeState), 200);\n        } else {\n            updateMobileGallery(activeState);\n        }\n    });\n\n});\n<\/script>\n\n\n\n<style>\n  \/* === FONT BET\u00d6LT\u00c9SE === *\/\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,600;1,600&family=Montserrat:wght@400;500&display=swap');\n\n  \/* === GLOB\u00c1LIS SZEKCI\u00d3 BE\u00c1LL\u00cdT\u00c1SOK === *\/\n  .lux-madrid-outer {\n    --bg-alabaster: #F5F8FA;\n    --text-navy: #1A2A3A;\n    --text-anthracite: #222222;\n--accent-gold: #D4AF37;\n    --font-heading: 'Cormorant Garamond', serif;\n    --font-body: 'Montserrat', sans-serif;\n    \n    background-color: var(--bg-alabaster);\n    padding: 80px 20px; \/* Hatalmas t\u00e9rk\u00f6z a dr\u00e1mai hat\u00e1s\u00e9rt *\/\n    width: 100%;\n    min-height: 80vh;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    overflow: hidden;\n  }\n\n  \/* === K\u00d6Z\u00c9PRE Z\u00c1RT TARTALOM === *\/\n  .lux-madrid-container {\n    max-width: 900px;\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    \n    \/* Alaphelyzetben rejtett, a JS fogja mozgatni a g\u00f6rget\u00e9s alapj\u00e1n *\/\n    opacity: 0;\n    transform: translateY(80px);\n    will-change: opacity, transform; \/* Hardveres gyors\u00edt\u00e1s a sima g\u00f6rget\u00e9s\u00e9rt *\/\n  }\n\n  \/* === FELS\u0150 D\u00cdSZ\u00cdT\u0150 ELEM (VONAL - SZ\u00d6VEG - VONAL) === *\/\n  .lux-madrid-label-wrap {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 20px;\n    margin-bottom: 40px;\n    width: 100%;\n  }\n\n  .lux-madrid-divider {\n    height: 1px;\n    width: 80px;\n    background-color: #D4AF37;\n    opacity: 0.6;\n  }\n\n  .lux-madrid-label-wrap span {\n    font-family: var(--font-body);\n    font-size: 13px;\n    font-weight: 500;\n    color: var(--text-navy);\n    letter-spacing: 3px;\n    text-transform: uppercase;\n  }\n\n  \/* === TIPOGR\u00c1FIA === *\/\n  .lux-madrid-container h2 {\n    font-family: var(--font-heading);\n    font-size: 46px; \/* Megn\u00f6velt m\u00e9ret *\/\n    color: var(--text-navy);\n    line-height: 1.15;\n    margin: 0 0 40px 0;\n    letter-spacing: -0.5px;\n  }\n\n  .lux-madrid-container h2 i {\n    font-style: italic;\n    font-weight: 600;\n  }\n\n  .lux-madrid-container p {\n    font-family: var(--font-body);\n    font-size: 16px; \/* Megn\u00f6velt m\u00e9ret *\/\n    font-weight: 400;\n    color: var(--text-anthracite);\n    line-height: 1.7;\n    margin: 0 auto;\n    max-width: 700px; \/* Sz\u00e9lesebb lett, de m\u00e9g mindig k\u00e9nyelmes olvasni *\/\n  }\n\n  \/* === RESZPONZ\u00cdV BE\u00c1LL\u00cdT\u00c1SOK === *\/\n  @media (max-width: 1024px) {\n    .lux-madrid-outer { padding: 140px 20px; }\n    .lux-madrid-container h2 { font-size: 52px; }\n    .lux-madrid-container p { font-size: 20px; }\n    .lux-madrid-divider { width: 50px; }\n  }\n\n  @media (max-width: 768px) {\n    .lux-madrid-outer { padding: 100px 20px; min-height: auto; }\n    .lux-madrid-container h2 { font-size: 38px; margin-bottom: 30px; }\n    .lux-madrid-container p { font-size: 16px; }\n    .lux-madrid-divider { width: 30px; }\n    .lux-madrid-label-wrap span { font-size: 11px; letter-spacing: 2px; }\n    .lux-madrid-label-wrap { gap: 15px; margin-bottom: 30px; }\n  }\n<\/style>\n\n<section class=\"lux-madrid-outer\">\n  <div class=\"lux-madrid-container lux-madrid-reveal\">\n    \n    <div class=\"lux-madrid-label-wrap\">\n      <div class=\"lux-madrid-divider\"><\/div>\n      <span>Kompromisszumok n\u00e9lk\u00fcl<\/span>\n      <div class=\"lux-madrid-divider\"><\/div>\n    <\/div>\n\n    <h2>A gondtalans\u00e1g<br><i>luxusa<\/i><\/h2>\n    <p>K\u00edn\u00e1latunk nem egy v\u00e9gtelen lista, hanem egy gondosan kur\u00e1lt gy\u0171jtem\u00e9ny. Portf\u00f3li\u00f3nkba kiz\u00e1r\u00f3lag azok az \u00fatvonalak \u00e9s \u00e9lm\u00e9nyek ker\u00fclhettek be, amelyek a spanyol elegancia mellett a legmagasabb szint\u0171 k\u00e9nyelmet \u00e9s pr\u00e9mium min\u0151s\u00e9get ny\u00fajtj\u00e1k. A h\u00e1tt\u00e9rben minden apr\u00f3 logisztikai l\u00e9p\u00e9st elrendezt\u00fcnk, \u00edgy az igazi luxus a t\u00f6k\u00e9letes nyugalomban \u00f6lt testet: \u00d6nnek egyetlen feladata marad \u2013 jelen lenni a pillanatban, \u00e9s \u00e1tadni mag\u00e1t a madridi \u00e9let\u00e9rz\u00e9snek.<\/p>\n    \n  <\/div>\n<\/section>\n\n<script>\n  (function() {\n    function setupLuxReveal() {\n      const targetElement = document.querySelector('.lux-madrid-reveal');\n      if (!targetElement) return;\n\n      \/\/ Friss\u00edtj\u00fck az elemet g\u00f6rget\u00e9skor\n      const handleMotion = () => {\n        const boundary = targetElement.getBoundingClientRect();\n        const viewportHeight = window.innerHeight;\n        \n        \/\/ Kisz\u00e1moljuk, mennyire van benne a k\u00e9perny\u0151ben az elem\n        \/\/ 0 = \u00e9pp most \u00e9rte el a k\u00e9perny\u0151 alj\u00e1t\n        \/\/ 1 = fel\u00e9rt a k\u00e9perny\u0151 als\u00f3 60%-\u00e1ba (itt m\u00e1r teljesen l\u00e1tszik)\n        let scrollProgress = (viewportHeight - boundary.top) \/ (viewportHeight * 0.6);\n        \n        \/\/ Korl\u00e1tozzuk az \u00e9rt\u00e9ket 0 \u00e9s 1 k\u00f6z\u00e9\n        if (scrollProgress < 0) scrollProgress = 0;\n        if (scrollProgress > 1) scrollProgress = 1;\n\n        \/\/ Az \u00e1tl\u00e1tsz\u00f3s\u00e1g \u00e9s a felcs\u00fasz\u00e1s m\u00e9rt\u00e9ke szorosan k\u00f6veti a g\u00f6rget\u00e9st\n        targetElement.style.opacity = scrollProgress;\n        targetElement.style.transform = `translateY(${(1 - scrollProgress) * 80}px)`;\n      };\n\n      \/\/ Kezdeti be\u00e1ll\u00edt\u00e1s \u00e9s g\u00f6rget\u00e9s figyel\u0151 hozz\u00e1ad\u00e1sa\n      window.addEventListener('scroll', handleMotion, { passive: true });\n      handleMotion(); \/\/ Lefuttatjuk egyszer bet\u00f6lt\u00e9skor is, h\u00e1tha m\u00e1r ott \u00e1ll a g\u00f6rget\u0151s\u00e1v\n    }\n\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', setupLuxReveal);\n    } else {\n      setupLuxReveal();\n    }\n  })();\n<\/script>\n\n\n\n<style>\n    \/* === A TELJES SZEKCI\u00d3 (H\u00e1tt\u00e9rk\u00e9p) === *\/\n    .madrid-hero-section {\n        position: relative;\n        width: 100%;\n        height: 100vh; \/* Teljes k\u00e9perny\u0151magass\u00e1g *\/\n        min-height: 600px;\n        background-image: url('https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/fooldalmardridkep.png');\n        background-size: contain;\n        background-color: #F5F8FA; \n        background-position: center;\n        background-repeat: no-repeat;\n        overflow: hidden;\n        font-family: 'Montserrat', sans-serif;\n    }\n\n    \/* === PIN + K\u00c1RTYA KONT\u00c9NER === *\/\n    \/* Most m\u00e1r csak \u00f6sszefogja az elemeket, nem mozgunk vele egy\u00fctt *\/\n    .landmark-pin {\n        position: absolute;\n        z-index: 10;\n        \/* Elt\u00e1vol\u00edtottuk a display: flex-et \u00e9s a gap-et *\/\n    }\n\n    \/* === POZ\u00cdCI\u00d3K BE\u00c1LL\u00cdT\u00c1SA === *\/\n    \/* Ez most a K\u00c1RTYA fix hely\u00e9t hat\u00e1rozza meg *\/\n    .pin-left {\n        top: 45%; \n        left: 20%;  \n    }\n\n    .pin-right {\n        top: 35%;  \n        right: 8%; \n    }\n\n    \/* === A PIN IKON ST\u00cdLUSA === *\/\n    .pin-icon {\n        position: absolute; \/* Ezzel elszak\u00edtjuk a k\u00e1rty\u00e1t\u00f3l, \u00e9s oda toljuk, ahova akarjuk *\/\n        width: 45px;\n        height: 45px;\n        color: #D4AF37; \n        \n        filter: drop-shadow(0 6px 8px rgba(0,0,0,0.6));\n        transition: transform 0.3s ease, filter 0.3s ease;\n        cursor: pointer;\n    }\n    \n    \/* Csak a PIN n\u0151 meg, ha r\u00e1viszed az egeret (a hover anim\u00e1ci\u00f3 le\u00e1ll ilyenkor, hogy ne zavarjon) *\/\n    .pin-icon:hover {\n        transform: scale(1.2) !important;\n        animation-play-state: paused;\n        filter: drop-shadow(0 8px 12px rgba(0,0,0,0.8));\n    }\n\n    \/* === PIN EGYEDI POZ\u00cdCION\u00c1L\u00c1SA === *\/\n    \/* Itt tudod a PINT tologatni a k\u00e1rty\u00e1hoz k\u00e9pest! *\/\n    .pin-left .pin-icon {\n        top: -60px;   \/* Told fel vagy le *\/\n        left: 280px;  \/* Told jobbra (pozit\u00edv \u00e9rt\u00e9k) vagy balra (negat\u00edv) *\/\n    }\n\n    .pin-right .pin-icon {\n        top: -25px;  \/* Told fel vagy le *\/\n        right: 320px; \/* Told balra (pozit\u00edv) vagy jobbra (negat\u00edv) *\/\n    }\n\n    \/* === \u00dcVEG HAT\u00c1S\u00da K\u00c1RTY\u00c1K (Glassmorphism) === *\/\n    \/* Ez teljesen fixen marad *\/\n    .glass-card {\n        background: rgba(255, 255, 255, 0.15); \n        backdrop-filter: blur(12px); \n        -webkit-backdrop-filter: blur(12px); \n       \n        border-radius: 15px;\n        padding: 15px 25px;\n        color: #ffffff;\n        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);\n        max-width: 260px;\n    }\n\n    \/* K\u00e1rtya sz\u00f6veg st\u00edlusok *\/\n    .glass-card h3 {\n        margin: 0 0 5px 0;\n        font-size: 16px;\n        font-weight: 700;\n        text-shadow: 0 2px 5px rgba(0,0,0,0.6); \n        line-height: 1.3;\n    }\n\n    .glass-card p {\n        margin: 0;\n        font-size: 12px;\n        opacity: 0.9;\n        text-shadow: 0 1px 3px rgba(0,0,0,0.6);\n    }\n\n    \/* === UGR\u00c1L\u00d3 ANIM\u00c1CI\u00d3 === *\/\n    \/* Most a Y tengelyen mozog, de a transzform\u00e1ci\u00f3kat a CSS kezeli k\u00fcl\u00f6n *\/\n    @keyframes bounce-pin {\n        0%, 20%, 50%, 80%, 100% { margin-top: 0; }\n        40% { margin-top: -15px; }\n        60% { margin-top: -7px; }\n    }\n\n \/* === MOBILOS N\u00c9ZET === *\/\n    @media (max-width: 768px) {\n        \n        .madrid-hero-section {\n            background-image: url('https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/fooldal-madridkep-2.png') !important;\n            background-size: contain !important; \n            background-color: #F5F8FA; \nheight: 72vh !important;       \/* 100vh-r\u00f3l visszav\u00e1gjuk kb. a fel\u00e9re (\u00edgy f\u00fcgg\u0151legesen \u00f6sszeugrik a doboz) *\/\n            min-height: 360px !important;   \/* Az asztali 600px-es minimum korl\u00e1tot is elt\u00f6r\u00f6lj\u00fck mobilra *\/\n\/* \ud83c\udfaf A 3. k\u00e1rtya \u00e9s pin teljes elrejt\u00e9se mobilon *\/\n        .pin-bottom-left { \n            display: none !important; \n        }\n        }\n\n        \/* KIR\u00c1LYI PALOTA (K\u00e1rtya \u00e9s Pin egy\u00fctt mozog fel-le) *\/\n        .pin-left { \n            top: 25%; \/* HA FELJEBB AKAROD VINNI: cs\u00f6kkentsd (pl. 5%). HA LEJJEBB: n\u00f6veld (pl. 18%) *\/\n            left: 35%; \n            transform: translateX(-50%); \n        }\n\n        \/* SZ\u00c9KESEGYH\u00c1Z (K\u00e1rtya \u00e9s Pin egy\u00fctt mozog fel-le) *\/\n        .pin-right { \n            top: 50%; \/*  HA FELJEBB AKAROD VINNI: cs\u00f6kkentsd (pl. 65%). HA LEJJEBB: n\u00f6veld (pl. 85%) *\/\n            right: 35%; \n            transform: translateX(50%); \n        }\n\n        .glass-card { text-align: center; padding: 12px 15px; width: 220px; margin: 0 auto; }\n        \n        \/* Csak a Palota S\u00c1RGA IKONJ\u00c1NAK a tologat\u00e1sa a saj\u00e1t k\u00e1rty\u00e1j\u00e1hoz k\u00e9pest *\/\n        .pin-left .pin-icon { \n            top: 80px; \/* N\u00f6veld (pl. 100px), ha lejjebbtoln\u00e1d a k\u00e1rty\u00e1t\u00f3l. Cs\u00f6kkentsd, ha k\u00f6zelebb hozn\u00e1d *\/\n            left: 50%; \n            transform: translateX(-50%); \n        }\n\n        \/* Csak a Sz\u00e9kesegyh\u00e1z S\u00c1RGA IKONJ\u00c1NAK a tologat\u00e1sa a saj\u00e1t k\u00e1rty\u00e1j\u00e1hoz k\u00e9pest *\/\n        .pin-right .pin-icon { \n            top: -60px; \/* Negat\u00edvabb sz\u00e1m (pl. -80px) = messzebb megy felfel\u00e9. K\u00f6zelebb a null\u00e1hoz (pl. -40px) = lejjebb j\u00f6n *\/\n            right: 20%; \n            transform: translateX(50%); \n        }\n        \n        .pin-icon:hover { transform: translateX(-50%) scale(1.2) !important; }\n        .pin-right .pin-icon:hover { transform: translateX(50%) scale(1.2) !important; }\n    }\n\n\/* === 3. K\u00c1RTYA POZ\u00cdCI\u00d3JA (Bal lent) === *\/\n    .pin-bottom-left {\n        bottom: 20%; \/* A k\u00e9perny\u0151 alj\u00e1t\u00f3l m\u00e9rt t\u00e1vols\u00e1g *\/\n        left: 15%;    \/* A k\u00e9perny\u0151 bal sz\u00e9l\u00e9t\u0151l m\u00e9rt t\u00e1vols\u00e1g *\/\n    }\n\n    \/* Csak a 3. k\u00e1rtya s\u00e1rga ikonj\u00e1nak a tologat\u00e1sa a saj\u00e1t k\u00e1rty\u00e1j\u00e1hoz k\u00e9pest *\/\n    .pin-bottom-left .pin-icon {\n        top: -20px;   \/* Told fel vagy le *\/\n        left: -50px;  \/* Told jobbra vagy balra *\/\n    }\n<\/style>\n\n<section class=\"madrid-hero-section\">\n    \n    <!-- === BAL OLDALI R\u00c9SZ: KIR\u00c1LYI PALOTA === -->\n    <div class=\"landmark-pin pin-left\">\n        <!-- \u00dcveg K\u00e1rtya (FIX) -->\n        <div class=\"glass-card\">\n            <h3>Madridi Kir\u00e1lyi Palota<\/h3>\n            <p>(Palacio Real de Madrid)<\/p>\n        <\/div>\n        <!-- SVG Pin Ikon (MOZGATHAT\u00d3) -->\n        <div class=\"pin-icon\">\n            <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" stroke=\"none\"><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"><\/path><\/svg>\n        <\/div>\n    <\/div>\n\n    <!-- === JOBB OLDALI R\u00c9SZ: ALMUDENA SZ\u00c9KESEGYH\u00c1Z === -->\n    <div class=\"landmark-pin pin-right\">\n        <!-- \u00dcveg K\u00e1rtya (FIX) -->\n        <div class=\"glass-card\" style=\"text-align: left;\">\n            <h3>Almudena sz\u00e9kesegyh\u00e1z<\/h3>\n            <p>(Catedral de la Almudena)<\/p>\n        <\/div>\n        <!-- SVG Pin Ikon (MOZGATHAT\u00d3) -->\n        <div class=\"pin-icon\">\n            <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" stroke=\"none\"><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"><\/path><\/svg>\n        <\/div>\n    <\/div>\n<div class=\"landmark-pin pin-bottom-left\">\n        <div class=\"glass-card\">\n            <h3>Plaza Mayor<\/h3>\n            \n        <\/div>\n        <div class=\"pin-icon\">\n            <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" stroke=\"none\"><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"><\/path><\/svg>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n\n<style>\n    \/* === FONT BET\u00d6LT\u00c9SE (Ha m\u00e9g nincs az oldalon) === *\/\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,600;1,600&family=Montserrat:wght@400;600;700&display=swap');\n\n    \/* === SZEKCI\u00d3 KONT\u00c9NER === *\/\n    .somoza-expert-section {\n        background-color: #F5F8FA; \/* Alab\u00e1strom h\u00e1tt\u00e9r a kor\u00e1bbi diz\u00e1jnhoz *\/\n        padding: 100px 20px;\n        display: flex;\n        justify-content: center;\n        overflow: hidden; \/* Ne l\u00f3gjon ki az anim\u00e1ci\u00f3 az oldalr\u00f3l *\/\n        font-family: 'Montserrat', sans-serif;\n    }\n\n    .somoza-expert-container {\n        max-width: 1200px;\n        width: 100%;\n        display: flex;\n        align-items: center;\n        gap: 60px;\n    }\n\n    \/* === BAL OLDAL: K\u00c9P === *\/\n    .somoza-expert-image {\n        flex: 1;\n        max-width: 45%;\n        position: relative;\n        z-index: 2;\n    }\n\n    .somoza-expert-image img {\n        width: 100%;\n        height: auto;\n        border-radius: 15px;\n        box-shadow: 0 20px 40px rgba(26, 42, 58, 0.15); \/* Eleg\u00e1ns \u00e1rny\u00e9k *\/\n        object-fit: cover;\n    }\n\n    \/* === JOBB OLDAL: SZ\u00d6VEG === *\/\n    .somoza-expert-content {\n        flex: 1;\n        max-width: 55%;\n        color: #1A2A3A; \/* S\u00f6t\u00e9tk\u00e9k sz\u00f6veg *\/\n        z-index: 1;\n        \n        \/* Anim\u00e1ci\u00f3 alap\u00e1llapota (Balra tolva, \u00e1tl\u00e1tsz\u00f3) - LASS\u00cdTVA 1.8 m\u00e1sodpercre *\/\n        opacity: 0;\n        transform: translateX(-80px);\n        transition: opacity 1.8s cubic-bezier(0.165, 0.84, 0.44, 1), transform 1.8s cubic-bezier(0.165, 0.84, 0.44, 1);\n    }\n\n    \/* Amikor a JavaScript r\u00e1toldja a \"show\" oszt\u00e1lyt, kics\u00faszik jobbra *\/\n    .somoza-expert-content.show {\n        opacity: 1;\n        transform: translateX(0);\n    }\n\n    \/* === TIPOGR\u00c1FIA === *\/\n    .somoza-expert-kicker {\n        font-family: 'Montserrat', sans-serif;\n        font-size: 13px;\n        font-weight: 500;\n        text-transform: uppercase;\n        letter-spacing: 3px;\n        var(--text-navy);\n        margin-bottom: 15px;\n        display: flex;\n        align-items: center;\n        gap: 10px;\n    }\n\n    .somoza-expert-kicker::before,\n    .somoza-expert-kicker::after {\n        content: '';\n        display: inline-block;\n        width: 30px;\n        height: 1px;\n        background-color: #D4AF37;\n    }\n\n    .somoza-expert-title {\n        font-family: 'Cormorant Garamond', serif;\n        font-size: 46px;\n        line-height: 1.1;\n        font-weight: 600;\n        color: #1A2A3A;\n        margin-top: 0;\n        margin-bottom: 30px;\n    }\n\n    .somoza-expert-content p {\n        font-size: 16px;\n        line-height: 1.8;\n        margin-bottom: 20px;\n        color: #333333;\n    }\n\n    .somoza-expert-content p:last-child {\n        margin-bottom: 0;\n    }\n\n   \/* === GOMB ST\u00cdLUS: EG\u00c9R-\u00c9RZ\u00c9KENY KIT\u00d6LT\u00c9SSEL === *\/\n    .somoza-expert-btn {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        margin-top: 30px;\n        padding: 16px 36px;\n        background-color: transparent;\n        color: #1A2A3A;\n        font-family: 'Montserrat', sans-serif;\n        font-size: 13px;\n        font-weight: 700;\n        text-transform: uppercase;\n        letter-spacing: 1.5px;\n        text-decoration: none;\n        border-radius: 25px;\n        border: 1px solid #1A2A3A;\n        position: relative;\n        overflow: hidden;\n        z-index: 1;\n        transition: color 0.4s ease, border-color 0.4s ease;\n    }\n\n    \/* Az anim\u00e1lt k\u00f6r - a poz\u00edci\u00f3j\u00e1t a --x \u00e9s --y v\u00e1ltoz\u00f3k adj\u00e1k *\/\n    .somoza-expert-btn::before {\n        content: '';\n        position: absolute;\n        \/* A JavaScriptb\u0151l kapott koordin\u00e1t\u00e1kra helyezz\u00fck a k\u00f6r k\u00f6zep\u00e9t *\/\n        top: var(--y, 50%);\n        left: var(--x, 50%);\n        width: 0;\n        height: 0;\n        background-color: #1A2A3A;\n        border-radius: 50%;\n        transform: translate(-50%, -50%);\n        \/* Selymesen lass\u00fa t\u00e1gul\u00e1s *\/\n        transition: width 0.8s cubic-bezier(0.19, 1, 0.22, 1), height 0.8s cubic-bezier(0.19, 1, 0.22, 1);\n        z-index: -1;\n    }\n\n    .somoza-expert-btn:hover {\n        color: #D4AF37; \/* Arany sz\u00f6veg hoverkor *\/\n        border-color: #1A2A3A;\n    }\n\n    \/* Hoverkor a k\u00f6r akkor\u00e1ra n\u0151, hogy mindenk\u00e9pp kit\u00f6ltse a t\u00e9glalapot *\/\n    .somoza-expert-btn:hover::before {\n        width: 500px;\n        height: 500px;\n    }\n\n    \/* === MOBILOS N\u00c9ZET === *\/\n    @media (max-width: 900px) {\n.somoza-expert-section {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 padding: 30px 20px 80px 20px !important; \/* Fent 30px, lent 80px a sz\u00f6veg alatt *\/\n\u00a0 \u00a0 \u00a0 \u00a0 }\n        .somoza-expert-container {\n            flex-direction: column;\n            gap: 40px;\n        }\n        \n        .somoza-expert-image,\n        .somoza-expert-content {\n            max-width: 100%;\n        }\n\n        .somoza-expert-title {\n            font-size: 36px;\n        }\n\n        \/* Mobilon a sz\u00f6veg ink\u00e1bb alulr\u00f3l cs\u00fasszon be, hogy term\u00e9szetesebb legyen *\/\n        .somoza-expert-content {\n            transform: translateY(50px);\n        }\n        .somoza-expert-content.show {\n            transform: translateY(0);\n        }\n    }\n<\/style>\n\n<!-- === HTML STRUKT\u00daRA === -->\n<section class=\"somoza-expert-section\">\n    <div class=\"somoza-expert-container\">\n        \n        <!-- K\u00e9p a bal oldalon -->\n        <div class=\"somoza-expert-image\">\n            <img decoding=\"async\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/Laura-idegenvezeto.png\" alt=\"Laura - A Rollio De Madrid szak\u00e9rt\u0151je\">\n        <\/div>\n\n        <!-- Sz\u00f6veg a jobb oldalon (Anim\u00e1lva) -->\n        <div class=\"somoza-expert-content\" id=\"somoza-scroll-text\">\n            <div class=\"somoza-expert-kicker\">Az \u00d6n Madridi Szak\u00e9rt\u0151je<\/div>\n            <h2 class=\"somoza-expert-title\">Aki \u00e9letre kelti a v\u00e1rost<\/h2>\n            <p>Laura nem csup\u00e1n hivatalos, profi idegenvezet\u0151; \u0151 a Rollio De Madrid lelke \u00e9s az \u00d6n szem\u00e9lyes, helyi t\u00e1masza. Szak\u00e9rtelm\u00e9vel a spanyol f\u0151v\u00e1ros nem csup\u00e1n \u00e9vsz\u00e1mok \u00e9s \u00e9p\u00fcletek halmaza \u2013 a keze alatt az ikonikus helysz\u00ednek izgalmas, emberi t\u00f6rt\u00e9netekk\u00e9 v\u00e1lnak.<\/p>\n            <p>A pr\u00e9mium \u00e9lm\u00e9ny titka az \u0151 kiv\u00e9teles emp\u00e1ti\u00e1ja \u00e9s figyelme. Laura pontosan \u00e9rzi a csoport ritmus\u00e1t, \u00e9s garant\u00e1lja, hogy a felfedez\u00e9s soha nem egy rohan\u00f3, stresszes t\u00fara, hanem egy mindenki sz\u00e1m\u00e1ra k\u00e9nyelmes temp\u00f3j\u00fa, megnyugtat\u00f3 \u00e9lm\u00e9ny.<\/p>\n            <p>M\u00e9ly helyismeret\u00e9nek k\u00f6sz\u00f6nhet\u0151en let\u00e9r a kitaposott turistautakr\u00f3l: ismeri a legfinomabb rejtett tapas-b\u00e1rokat, a legszebb fot\u00f3pontokat \u00e9s a val\u00f3di madridi \u00e9let\u00e9rz\u00e9st. Vele az oldal\u00e1n \u00d6n minden nyelvi \u00e9s kultur\u00e1lis akad\u00e1lyt maga m\u00f6g\u00f6tt hagyhat, hogy csak a tiszta \u00e9lvezetre f\u00f3kusz\u00e1lhasson.<\/p>\n            \n            <!-- \u00daj gomb -->\n            <a href=\"\/fooldal\/rolunk\/\" class=\"somoza-expert-btn\" onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\">\n    Ismerje meg t\u00f6rt\u00e9net\u00fcnket\n<\/a>\n        <\/div>\n\n    <\/div>\n<\/section>\n\n<!-- === G\u00d6RGET\u00c9S ANIM\u00c1CI\u00d3 (JavaScript) === -->\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        const textElement = document.getElementById(\"somoza-scroll-text\");\n        \n        \/\/ IntersectionObserver l\u00e9trehoz\u00e1sa a g\u00f6rget\u00e9s figyel\u00e9s\u00e9hez\n        const observer = new IntersectionObserver((entries) => {\n            entries.forEach(entry => {\n                if (entry.isIntersecting) {\n                    \/\/ Ha a sz\u00f6veg be\u00e9r a k\u00e9perny\u0151re (lefel\u00e9 g\u00f6rget\u00e9s), kics\u00faszik jobbra\n                    textElement.classList.add(\"show\");\n                } else {\n                    \/\/ Ha a sz\u00f6veg kiker\u00fcl a k\u00e9perny\u0151r\u0151l (felfel\u00e9 g\u00f6rget\u00e9s), visszah\u00faz\u00f3dik balra\n                    textElement.classList.remove(\"show\");\n                }\n            });\n        }, {\n            \/\/ A k\u00fcsz\u00f6b\u00e9rt\u00e9keket megn\u00f6velt\u00fck, \u00edgy sokkal m\u00e9lyebbre kell g\u00f6rgetni,\n            \/\/ hogy az anim\u00e1ci\u00f3 elinduljon (k\u00e9s\u0151bb jelenik meg, hamarabb t\u0171nik el).\n            threshold: 0.25,\n            rootMargin: \"0px 0px -25% 0px\"\n        });\n\n        \/\/ Figyel\u00e9s elind\u00edt\u00e1sa a sz\u00f6veg kont\u00e9ner\u00e9n\n        if(textElement) {\n            observer.observe(textElement);\n        }\n    });\n<\/script>\n\n\n    <style>\n        \/* === FONT BET\u00d6LT\u00c9SE === *\/\n        @import url('https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&family=Montserrat:wght@400;600;700&display=swap');\n\n      \/* === SZEKCI\u00d3 ALAPOK (Teljes k\u00e9perny\u0151 sz\u00e9less\u00e9g\u0171 h\u00e1tt\u00e9rrel) === *\/\n.somoza-home-blog {\n    width: 100%;\n    \/* Ha a WordPress sablonod alapb\u00f3l \"dobozolt\" (boxed), ez a 3 sor k\u00e9nyszer\u00edti ki a teljes sz\u00e9less\u00e9get: *\/\n    position: relative;\n    left: 50%;\n    right: 50%;\n    margin-left: -50vw;\n    margin-right: -50vw;\n    width: 100vw;\n    \n    background-color: #F5F8FA; \/* Itt \u00e1ll\u00edtsd be a k\u00edv\u00e1nt h\u00e1tt\u00e9rsz\u00ednt *\/\n    padding: 100px 0; \/* Als\u00f3-fels\u0151 t\u00e9rk\u00f6z a l\u00e1tv\u00e1nyos elv\u00e1laszt\u00e1shoz *\/\n}\n\n\/* === TARTALOM K\u00d6Z\u00c9PRE IGAZ\u00cdT\u00c1SA === *\/\n\/* Ez biztos\u00edtja, hogy a sz\u00f6veg \u00e9s a r\u00e1cs ne cs\u00fasszon ki a k\u00e9perny\u0151 sz\u00e9l\u00e9re *\/\n.somoza-blog-header, \n.somoza-blog-grid {\n    max-width: 1200px;\n    margin-left: auto;\n    margin-right: auto;\n    padding: 0 20px;\n}\n\n        \/* === FEJL\u00c9C (Kicker + C\u00edm) === *\/\n        .somoza-blog-header {\n            margin-bottom: 40px;\n        }\n\n        .somoza-blog-kicker {\n            font-size: 11px;\n            font-weight: 600;\n            color: #888888;\n            text-transform: uppercase;\n            letter-spacing: 2px;\n            display: block;\n            margin-bottom: 10px;\n        }\n\n        .somoza-blog-main-title {\n            font-family: 'Cormorant Garamond', serif;\n            font-size: 48px;\n            color: #1A2A3A;\n            font-weight: 400;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            margin: 0;\n        }\n\n        \/* === R\u00c1CS ELRENDEZ\u00c9S (3 OSZLOP) === *\/\n        .somoza-blog-grid {\n            display: grid;\n            grid-template-columns: repeat(3, 1fr);\n            gap: 40px;\n        }\n\n        \/* === K\u00c1RTYA DIZ\u00c1JN === *\/\n        .somoza-blog-card {\n            display: flex;\n            flex-direction: column;\n        }\n\n        .somoza-blog-img-wrapper {\n            width: 100%;\n            aspect-ratio: 16 \/ 9; \/* V\u00edzszintes t\u00e9glalap ar\u00e1ny *\/\n            overflow: hidden;\n            margin-bottom: 20px;\n            background-color: #f0f0f0;\n\t\t\tborder-radius: 15px;\n        }\n\n        .somoza-blog-img-wrapper img {\n            width: 100%;\n            height: 100%;\n            object-fit: cover;\n            transition: transform 0.6s cubic-bezier(0.25, 1, 0.5, 1);\n        }\n\n        \/* K\u00e9p nagy\u00edt\u00e1sa hoverkor *\/\n        .somoza-blog-card:hover .somoza-blog-img-wrapper img {\n            transform: scale(1.05);\n        }\n\n        .somoza-blog-date {\n            font-size: 10px;\n            color: #A0A0A0;\n            text-transform: uppercase;\n            letter-spacing: 1.5px;\n            margin-bottom: 12px;\n            display: block;\n        }\n\n        .somoza-blog-card-title {\n            font-family: 'Cormorant Garamond', serif;\n            font-size: 22px;\n            color: #1A2A3A;\n            line-height: 1.3;\n            text-transform: uppercase;\n            margin: 0 0 20px 0;\n            font-weight: 600;\n        }\n\n        .somoza-blog-card-title a {\n            color: inherit;\n            text-decoration: none;\n            transition: color 0.3s ease;\n        }\n\n        .somoza-blog-card-title a:hover {\n            color: #D4AF37; \/* C\u00edm aranyra v\u00e1lt hoverkor *\/\n        }\n\n        .somoza-read-more {\n            margin-top: auto; \/* Mindig az alj\u00e1ra tolja a gombot *\/\n            font-size: 11px;\n            font-weight: 700;\n            color: #00449C; \/* Arany sz\u00edn\u0171 gomb a k\u00e9pen l\u00e9v\u0151 piros helyett *\/\n            text-transform: uppercase;\n            letter-spacing: 2px;\n            text-decoration: none;\n            display: inline-flex;\n            align-items: center;\n            gap: 5px;\n            transition: opacity 0.3s ease;\n        }\n\n        .somoza-read-more:hover {\n            opacity: 0.7;\n        }\n\n        \/* Nincs tal\u00e1lat \u00fczenet *\/\n        .somoza-no-posts {\n            font-size: 16px;\n            color: #666;\n            font-style: italic;\n        }\n\n        \/* === MOBILOS N\u00c9ZET === *\/\n        @media (max-width: 900px) {\n            .somoza-blog-grid {\n                grid-template-columns: repeat(2, 1fr); \/* Tableten 2 oszlop *\/\n            }\n        }\n\n        @media (max-width: 600px) {\n            .somoza-blog-grid {\n                grid-template-columns: 1fr; \/* Mobilon 1 oszlop *\/\n            }\n            .somoza-blog-main-title {\n                font-size: 36px;\n            }\n        }\n    <\/style>\n\n    <section class=\"somoza-home-blog\">\n        <div class=\"somoza-blog-header\">\n            <span class=\"somoza-blog-kicker\">Blogcikkek<\/span>\n            <h2 class=\"somoza-blog-main-title\">A MI MADRIDUNK<\/h2>\n        <\/div>\n\n        <div class=\"somoza-blog-grid\">\n                                <article class=\"somoza-blog-card\">\n                        <a href=\"https:\/\/rolliodemadrid.com\/en\/san-miguel-piaci-gasztrotura\/\" class=\"somoza-blog-img-wrapper\">\n                            <img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"477\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/sanmiguelblogkep-768x477.png\" class=\"attachment-medium_large size-medium_large wp-post-image\" alt=\"\" srcset=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/sanmiguelblogkep-768x477.png 768w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/sanmiguelblogkep-300x186.png 300w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/sanmiguelblogkep-1024x636.png 1024w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/sanmiguelblogkep-1536x953.png 1536w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/sanmiguelblogkep.png 1611w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>                        <\/a>\n                        <span class=\"somoza-blog-date\">2026. 05. 11.<\/span>\n                        <h3 class=\"somoza-blog-card-title\">\n                            <a href=\"https:\/\/rolliodemadrid.com\/en\/san-miguel-piaci-gasztrotura\/\">San Miguel piaci gasztrot\u00fara<\/a>\n                        <\/h3>\n                        <a href=\"https:\/\/rolliodemadrid.com\/en\/san-miguel-piaci-gasztrotura\/\" class=\"somoza-read-more\">Tov\u00e1bb olvasom<\/a>\n                    <\/article>\n                                        <article class=\"somoza-blog-card\">\n                        <a href=\"https:\/\/rolliodemadrid.com\/en\/flamenco-est\/\" class=\"somoza-blog-img-wrapper\">\n                            <img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"477\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/flamenco-blogcikk-kep2-1-768x477.png\" class=\"attachment-medium_large size-medium_large wp-post-image\" alt=\"\" srcset=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/flamenco-blogcikk-kep2-1-768x477.png 768w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/flamenco-blogcikk-kep2-1-300x186.png 300w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/flamenco-blogcikk-kep2-1-1024x636.png 1024w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/flamenco-blogcikk-kep2-1-1536x953.png 1536w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/flamenco-blogcikk-kep2-1.png 1611w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>                        <\/a>\n                        <span class=\"somoza-blog-date\">2026. 05. 11.<\/span>\n                        <h3 class=\"somoza-blog-card-title\">\n                            <a href=\"https:\/\/rolliodemadrid.com\/en\/flamenco-est\/\">Flamenco Est<\/a>\n                        <\/h3>\n                        <a href=\"https:\/\/rolliodemadrid.com\/en\/flamenco-est\/\" class=\"somoza-read-more\">Tov\u00e1bb olvasom<\/a>\n                    <\/article>\n                                        <article class=\"somoza-blog-card\">\n                        <a href=\"https:\/\/rolliodemadrid.com\/en\/a-vezetett-varosnezo-tura-cornerstone-content\/\" class=\"somoza-blog-img-wrapper\">\n                            <img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"477\" src=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/blog1kep-768x477.png\" class=\"attachment-medium_large size-medium_large wp-post-image\" alt=\"\" srcset=\"https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/blog1kep-768x477.png 768w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/blog1kep-300x186.png 300w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/blog1kep-1024x636.png 1024w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/blog1kep-1536x953.png 1536w, https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/blog1kep.png 1611w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>                        <\/a>\n                        <span class=\"somoza-blog-date\">2026. 05. 10.<\/span>\n                        <h3 class=\"somoza-blog-card-title\">\n                            <a href=\"https:\/\/rolliodemadrid.com\/en\/a-vezetett-varosnezo-tura-cornerstone-content\/\">A vezetett v\u00e1rosn\u00e9z\u0151 t\u00fara<\/a>\n                        <\/h3>\n                        <a href=\"https:\/\/rolliodemadrid.com\/en\/a-vezetett-varosnezo-tura-cornerstone-content\/\" class=\"somoza-read-more\">Tov\u00e1bb olvasom<\/a>\n                    <\/article>\n                            <\/div>\n    <\/section>\n    \n\n\n\n<style>\n    \/* === FONT BET\u00d6LT\u00c9SE === *\/\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&family=Montserrat:wght@300;400;500;700&display=swap');\n\n    \/* === SZEKCI\u00d3 ALAPOK \u00c9S H\u00c1TT\u00c9RK\u00c9P === *\/\n    .somoza-cta-section {\n        position: relative;\n        left: 50%;\n        right: 50%;\n        margin-left: -50vw;\n        margin-right: -50vw;\n        width: 100vw;\n        \n        min-height: 80vh;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        \n        background-image: linear-gradient(rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.35)), url('https:\/\/rolliodemadrid.com\/wp-content\/uploads\/2026\/05\/cta-hatterkep2.png');\n        background-size: cover;\n        background-position: center;\n        background-attachment: scroll;\n        \n        padding: 100px 20px;\n        font-family: 'Montserrat', sans-serif;\n    }\n\n    \/* === \u00dcVEGHAT\u00c1S\u00da (GLASSMORPHISM) KONT\u00c9NER === *\/\n    .somoza-cta-glass-panel {\n        background: rgba(255, 255, 255, 0.05);\n        backdrop-filter: blur(10px);\n        -webkit-backdrop-filter: blur(10px);\n        \n        border-radius: 20px;\n        padding: 70px 50px;\n        max-width: 850px;\n        text-align: center;\n        box-shadow: 0 30px 60px rgba(0, 0, 0, 0.12);\n        z-index: 10;\n    }\n\n    \/* === TIPOGR\u00c1FIA \u00c9S TARTALOM === *\/\n    .somoza-cta-glass-panel h2 {\n        font-family: 'Cormorant Garamond', serif;\n        font-size: clamp(38px, 5vw, 56px);\n        color: #FFFFFF;\n        line-height: 1.15;\n        font-weight: 600;\n        margin-bottom: 25px;\n        letter-spacing: -1px;\n    }\n\n    .somoza-cta-line {\n        width: 60px;\n        height: 1px;\n        background-color: #D4AF37;\n        margin: 0 auto 35px auto;\n    }\n\n    .somoza-cta-glass-panel p {\n        font-size: 19px;\n        line-height: 1.8;\n        color: #FFFFFF;\n        margin-bottom: 45px;\n        max-width: 700px;\n        margin-left: auto;\n        margin-right: auto;\n    }\n\n    \/* === CTA GOMB: FEH\u00c9R ALAP, K\u00d6R-KIT\u00d6LT\u0150VEL, HIB\u00c1TLAN SZ\u00c9LEKKEL === *\/\n    .somoza-cta-btn {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        padding: 18px 45px;\n        background-color: #ffffff !important;\n        color: #1A2A3A !important;\n        border-radius: 50px;\n        font-size: 13px;\n        font-weight: 700;\n        text-transform: uppercase;\n        letter-spacing: 2px;\n        text-decoration: none;\n        \n        \/* Teljesen elt\u00e1vol\u00edtjuk a kereteket \u00e9s k\u00f6rvonalakat *\/\n        border: none !important;\n        outline: none !important;\n        box-shadow: none !important;\n        \n        position: relative;\n        overflow: hidden;\n        z-index: 1;\n        \n        \/* HARDVERES GYORS\u00cdT\u00c1S (Ez \u00f6li meg a \"feh\u00e9r \u00e9l\" bugot a b\u00f6ng\u00e9sz\u0151kben) *\/\n        transform: translateZ(0);\n        -webkit-transform: translateZ(0);\n        backface-visibility: hidden;\n        -webkit-backface-visibility: hidden;\n        \n        transition: color 0.5s ease;\n    }\n\n    \/* A sz\u00f6veg r\u00e9tege *\/\n    .somoza-cta-btn span {\n        position: relative;\n        z-index: 2; \n        pointer-events: none;\n    }\n\n    \/* Az anim\u00e1lt k\u00f6r *\/\n    .somoza-cta-btn::before {\n        content: '';\n        position: absolute;\n        top: var(--y, 50%);\n        left: var(--x, 50%);\n        width: 0;\n        height: 0;\n        background-color: #1A2A3A;\n        border-radius: 50%;\n        transform: translate(-50%, -50%);\n        z-index: 1;\n        transition: width 0.5s ease-out, height 0.5s ease-out; \/* Gyors elt\u0171n\u00e9s *\/\n    }\n\n    \/* HOVER \u00c1LLAPOT *\/\n    .somoza-cta-btn:hover {\n        color: #D4AF37 !important; \/* Arany sz\u00f6veg *\/\n        \/* Nincs semmilyen keret vagy \u00e1rny\u00e9k defin\u00edci\u00f3 itt! *\/\n    }\n\n    .somoza-cta-btn:hover::before {\n        width: 600px;\n        height: 600px;\n        transition: width 1.5s cubic-bezier(0.19, 1, 0.22, 1), \n                    height 1.5s cubic-bezier(0.19, 1, 0.22, 1); \/* Lass\u00fa kit\u00f6lt\u00e9s *\/\n    }\n\n    \/* === MOBILOS N\u00c9ZET === *\/\n    @media (max-width: 768px) {\n        .somoza-cta-section {\n            min-height: 70vh;\n            padding: 80px 15px;\n        }\n        .somoza-cta-glass-panel {\n            padding: 40px 20px;\n            border-radius: 15px;\n        }\n        .somoza-cta-glass-panel h2 {\n            font-size: 34px;\n            margin-bottom: 20px;\n        }\n        .somoza-cta-line {\n            margin-bottom: 25px;\n        }\n        .somoza-cta-glass-panel p {\n            font-size: 16px;\n            line-height: 1.6;\n            margin-bottom: 35px;\n        }\n        .somoza-cta-btn {\n            width: 100%;\n            padding: 16px 20px;\n        }\n    }\n<\/style>\n\n<section class=\"somoza-cta-section\">\n    <div class=\"somoza-cta-glass-panel\">\n        <h2>\u00c9lje \u00e1t Madridot.<br><i>Kompromisszumok n\u00e9lk\u00fcl.<\/i><\/h2>\n        \n        <div class=\"somoza-cta-line\"><\/div>\n        \n        <p>Ne hagyja, hogy a logisztika vagy a rejtett akad\u00e1lyok be\u00e1rny\u00e9kolj\u00e1k az utaz\u00e1st. B\u00edzza r\u00e1nk a r\u00e9szleteket, \u00e9s tapasztalja meg azt a megnyugtat\u00f3 luxust, amikor minden az \u00d6n k\u00e9nyelm\u00e9re van szabva. V\u00e1lasszon id\u0151pontot, \u00e9s induljunk el egy z\u00f6kken\u0151mentes, felejthetetlen felfedez\u00e9sre!<\/p>\n        \n        <a href=\"\/foglalasi-oldal\/#somoza-full-wizard-container\" \n           class=\"somoza-cta-btn\" \n           onmousemove=\"this.style.setProperty('--x', event.offsetX + 'px'); this.style.setProperty('--y', event.offsetY + 'px')\">\n            <span>Id\u0151pontot v\u00e1lasztok<\/span>\n        <\/a>\n    <\/div>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>SPANISH passion. Within reach. Experience a captivating, authentic performance from the best seats, pre-booked and fully accessible. Guaranteed visibility and maximum comfort \u2013 you just need to surrender to the pure art. HIDDEN Madrid. At your pace. Discover the city's iconic sites and secrets with Laura, our professional guide. Personally tested, step-free routes and\u2026 <a title=\"A guided city tour\" class=\"read-more\" href=\"https:\/\/rolliodemadrid.com\/en\/a-vezetett-varosnezo-tura-cornerstone-content\/\" aria-label=\"Read more about the guided city tour\">Read more<\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7301","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/rolliodemadrid.com\/en\/wp-json\/wp\/v2\/pages\/7301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rolliodemadrid.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rolliodemadrid.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rolliodemadrid.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rolliodemadrid.com\/en\/wp-json\/wp\/v2\/comments?post=7301"}],"version-history":[{"count":0,"href":"https:\/\/rolliodemadrid.com\/en\/wp-json\/wp\/v2\/pages\/7301\/revisions"}],"wp:attachment":[{"href":"https:\/\/rolliodemadrid.com\/en\/wp-json\/wp\/v2\/media?parent=7301"}],"curies":[{"name":"Wordpress","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}