{"id":732,"date":"2026-05-18T10:39:11","date_gmt":"2026-05-18T09:39:11","guid":{"rendered":"https:\/\/glidesuptours.pt\/?st-import=d0ff8aac267098373fb2c5a5cac3855e"},"modified":"2026-10-29T13:02:33","modified_gmt":"2026-10-29T12:02:33","slug":"home","status":"publish","type":"page","link":"https:\/\/glidesuptours.pt\/en\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"732\" class=\"elementor elementor-732\">\n\t\t\t\t<div class=\"elementor-element elementor-element-gstr0001 e-con-full e-flex e-con e-parent\" data-id=\"gstr0001\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-gsthtml01 elementor-widget elementor-widget-html\" data-id=\"gsthtml01\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Outfit:wght@500;600;700;800&display=swap');\n\n  :root {\n    --gst-primary: #0b233a;\n    --gst-ocean: #0077b6;\n    --gst-ocean-light: #00a8e8;\n    --gst-accent: #ffb703;\n    --gst-accent-hover: #f59e0b;\n    --gst-white: #ffffff;\n    --gst-sand: #fbf8f2;\n    --gst-sand-warm: #f4eee2;\n    --gst-text: #14283b;\n    --gst-muted: #5a7184;\n    --gst-teal: #7fd8c8;\n    --gst-radius: 16px;\n    --gst-pill: 50px;\n    --gst-shadow: 0 10px 30px rgba(11, 35, 58, 0.08);\n    --gst-shadow-hover: 0 20px 45px rgba(0, 119, 182, 0.22);\n  }\n\n  .gst-hero, .gst-trust-bar, .gst-tours, .gst-values, .gst-editorial, .gst-gallery, .gst-cta-final {\n    font-family: 'DM Sans', -apple-system, sans-serif;\n    box-sizing: border-box;\n  }\n  .gst-hero *, .gst-trust-bar *, .gst-tours *, .gst-values *, .gst-editorial *, .gst-gallery *, .gst-cta-final * {\n    box-sizing: border-box;\n  }\n  .gst-hero img, .gst-tours img, .gst-editorial img, .gst-gallery img {\n    max-width: 100%;\n    display: block;\n  }\n\n  \/* ===== HERO KITESURF LODGE STYLE ===== *\/\n  .gst-hero {\n    position: relative;\n    min-height: 72vh;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    background-image: url('https:\/\/glidesuptours.pt\/wp-content\/uploads\/2026\/09\/hero-natural.jpg');\n    background-size: cover;\n    background-position: center center;\n    background-attachment: fixed;\n    background-repeat: no-repeat;\n    padding: 100px 24px 90px;\n  }\n  .gst-hero__overlay {\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(180deg, rgba(11, 35, 58, 0.50) 0%, rgba(11, 35, 58, 0.30) 45%, rgba(11, 35, 58, 0.80) 100%);\n    z-index: 1;\n  }\n  .gst-hero__content {\n    position: relative;\n    z-index: 2;\n    max-width: 980px;\n    width: 100%;\n    margin: 0 auto;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    text-align: center;\n  }\n  .gst-hero__badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    padding: 8px 22px;\n    border-radius: var(--gst-pill);\n    background: rgba(255, 255, 255, 0.15);\n    backdrop-filter: blur(10px);\n    -webkit-backdrop-filter: blur(10px);\n    border: 1px solid rgba(255, 255, 255, 0.25);\n    font-family: 'Outfit', sans-serif;\n    font-size: 0.8125rem;\n    font-weight: 700;\n    letter-spacing: 0.18em;\n    text-transform: uppercase;\n    color: var(--gst-accent);\n    margin-bottom: 20px;\n  }\n  .gst-hero__title {\n    font-family: 'Outfit', sans-serif;\n    font-size: clamp(2.4rem, 5.5vw, 4.2rem);\n    color: var(--gst-white);\n    font-weight: 800;\n    line-height: 1.1;\n    letter-spacing: -0.02em;\n    margin: 0 0 16px;\n    max-width: 860px;\n    text-shadow: 0 4px 24px rgba(0,0,0,0.45);\n  }\n  .gst-hero__subtitle {\n    font-size: clamp(1.1rem, 2.2vw, 1.35rem);\n    color: #e3effa;\n    margin: 0 0 34px;\n    max-width: 680px;\n    text-shadow: 0 2px 10px rgba(0,0,0,0.4);\n    line-height: 1.6;\n    font-weight: 400;\n  }\n  .gst-hero__buttons {\n    display: flex;\n    gap: 18px;\n    flex-wrap: wrap;\n    justify-content: center;\n    align-items: center;\n  }\n  .gst-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    padding: 14px 32px;\n    border-radius: var(--gst-pill);\n    font-family: 'Outfit', sans-serif;\n    font-weight: 700;\n    font-size: 0.9375rem;\n    letter-spacing: 0;\n    text-transform: none;\n    text-decoration: none;\n    transition: all .25s ease;\n    cursor: pointer;\n    border: none;\n  }\n  .gst-btn--primary {\n    background: var(--gst-accent);\n    color: var(--gst-primary);\n    box-shadow: 0 6px 22px rgba(255, 183, 3, 0.45);\n  }\n  .gst-btn--primary:hover {\n    background: var(--gst-accent-hover);\n    transform: translateY(-3px) scale(1.02);\n    box-shadow: 0 10px 30px rgba(255, 183, 3, 0.6);\n    color: var(--gst-primary);\n  }\n  .gst-btn--ghost {\n    background: rgba(255, 255, 255, 0.12);\n    color: var(--gst-white);\n    border: 1.5px solid rgba(255, 255, 255, 0.7);\n    backdrop-filter: blur(8px);\n    -webkit-backdrop-filter: blur(8px);\n  }\n  .gst-btn--ghost:hover {\n    background: var(--gst-white);\n    color: var(--gst-primary);\n    border-color: var(--gst-white);\n    transform: translateY(-3px);\n  }\n\n  \/* ===== TRUST BAR ===== *\/\n  .gst-trust-bar {\n    background: #081c2e;\n    padding: 22px 20px;\n    position: relative;\n    z-index: 5;\n    border-top: 1px solid rgba(255,255,255,0.08);\n    border-bottom: 1px solid rgba(0,0,0,0.15);\n  }\n  .gst-trust {\n    max-width: 1160px;\n    margin: 0 auto;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .gst-trust__item {\n    flex: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    padding: 4px 20px;\n  }\n  .gst-trust__item + .gst-trust__item {\n    border-left: 1px solid rgba(255,255,255,0.12);\n  }\n  .gst-trust__item svg {\n    color: var(--gst-accent);\n    flex: none;\n  }\n  .gst-trust__txt {\n    color: #ffffff;\n    font-size: 0.95rem;\n    font-weight: 600;\n    letter-spacing: 0.02em;\n  }\n\n  \/* ===== TOURS SECTION (KITESURF LODGE CARDS) ===== *\/\n  .gst-tours {\n    padding: 90px 24px 96px;\n    background: var(--gst-sand);\n  }\n  .gst-tours__head {\n    max-width: 860px;\n    margin: 0 auto 50px;\n    text-align: center;\n  }\n  .gst-tours__eyebrow {\n    font-family: 'Outfit', sans-serif;\n    font-size: 0.875rem;\n    font-weight: 600;\n    letter-spacing: 0.05em;\n    text-transform: none;\n    color: var(--gst-ocean);\n    margin: 0 0 10px;\n  }\n  .gst-tours__title {\n    font-family: 'Outfit', sans-serif;\n    font-size: clamp(2.1rem, 4vw, 3.2rem);\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    margin: 0 0 14px;\n    color: var(--gst-primary);\n  }\n  .gst-tours__subtitle {\n    font-size: 1.1rem;\n    color: var(--gst-muted);\n    margin: 0 auto;\n    max-width: 880px;\n    line-height: 1.7;\n    text-wrap: balance;\n  }\n  .gst-desk-br {\n    display: block;\n    content: \"\";\n    margin-top: 6px;\n  }\n  @media (max-width: 768px) {\n    .gst-desk-br {\n      display: inline;\n      content: normal;\n      margin-top: 0;\n    }\n  }\n  .gst-tours__subtitle strong {\n    color: var(--gst-primary);\n  }\n  .gst-tours__grid {\n    max-width: 1180px;\n    margin: 0 auto;\n    display: grid;\n    gap: 32px;\n    grid-template-columns: repeat(3, 1fr);\n  }\n  .gst-card {\n    position: relative;\n    background: #ffffff;\n    border-radius: var(--gst-radius);\n    overflow: hidden;\n    box-shadow: var(--gst-shadow);\n    transition: transform .3s ease, box-shadow .3s ease;\n    display: flex;\n    flex-direction: column;\n    cursor: pointer;\n    border: 1px solid rgba(11, 35, 58, 0.05);\n  }\n  .gst-card:hover {\n    transform: translateY(-8px);\n    box-shadow: var(--gst-shadow-hover);\n  }\n  .gst-card__cover {\n    position: absolute;\n    inset: 0;\n    z-index: 3;\n    border-radius: var(--gst-radius);\n  }\n  .gst-card__img {\n    width: 100%;\n    aspect-ratio: 16\/11;\n    overflow: hidden;\n    background: #e2e8f0;\n    position: relative;\n  }\n  .gst-card__img img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    transition: transform .5s ease;\n  }\n  .gst-card:hover .gst-card__img img {\n    transform: scale(1.08);\n  }\n  .gst-card__spot-badge {\n    position: absolute;\n    top: 16px;\n    left: 16px;\n    z-index: 2;\n    background: rgba(11, 35, 58, 0.88);\n    backdrop-filter: blur(6px);\n    color: var(--gst-accent);\n    padding: 5px 14px;\n    border-radius: var(--gst-pill);\n    font-size: 0.8125rem;\n    font-weight: 600;\n    letter-spacing: 0.02em;\n    text-transform: none;\n  }\n  .gst-card__body {\n    padding: 24px 26px 28px;\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n  }\n  .gst-card__title {\n    font-family: 'Outfit', sans-serif;\n    font-size: 1.45rem;\n    font-weight: 700;\n    margin: 0 0 8px;\n    color: var(--gst-primary);\n  }\n  .gst-card__desc {\n    font-size: 0.95rem;\n    margin: 0 0 20px;\n    color: #4a5d6e;\n    line-height: 1.6;\n    flex: 1;\n  }\n  .gst-card__meta {\n    display: flex;\n    gap: 12px;\n    flex-wrap: wrap;\n    margin: 0 0 22px;\n    border-top: 1px solid #edf2f7;\n    padding-top: 14px;\n  }\n  .gst-card__meta-item {\n    font-size: 0.85rem;\n    font-weight: 600;\n    color: var(--gst-muted);\n    background: #f8fafc;\n    padding: 4px 10px;\n    border-radius: 6px;\n  }\n  .gst-card__cta {\n    position: relative;\n    z-index: 4;\n    margin-top: auto;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    background: var(--gst-accent);\n    color: var(--gst-primary);\n    text-decoration: none;\n    font-family: 'Outfit', sans-serif;\n    font-weight: 700;\n    font-size: 0.9375rem;\n    letter-spacing: 0;\n    text-transform: none;\n    padding: 13px 22px;\n    border-radius: var(--gst-pill);\n    transition: all .25s ease;\n    box-shadow: 0 4px 14px rgba(255, 183, 3, 0.35);\n  }\n  .gst-card:hover .gst-card__cta {\n    background: var(--gst-accent-hover);\n    color: var(--gst-primary);\n    transform: translateY(-2px);\n    box-shadow: 0 6px 20px rgba(255, 183, 3, 0.55);\n  }\n\n  \/* ===== OS NOSSOS VALORES (DARK ACCENT SECTION) ===== *\/\n  .gst-values {\n    background: linear-gradient(180deg, #0b233a 0%, #081c2e 100%);\n    padding: 96px 24px;\n    position: relative;\n  }\n  .gst-values__head {\n    max-width: 860px;\n    margin: 0 auto 48px;\n    text-align: center;\n  }\n  .gst-values__eyebrow {\n    font-family: 'Outfit', sans-serif;\n    font-size: 0.875rem;\n    font-weight: 600;\n    letter-spacing: 0.05em;\n    text-transform: none;\n    color: var(--gst-accent);\n    margin: 0 0 10px;\n  }\n  .gst-values__title {\n    font-family: 'Outfit', sans-serif;\n    font-size: clamp(2rem, 3.8vw, 3rem);\n    color: #ffffff;\n    font-weight: 800;\n    margin: 0;\n    letter-spacing: -0.02em;\n  }\n  .gst-values__grid {\n    max-width: 1180px;\n    margin: 0 auto;\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 24px;\n  }\n  .gst-value {\n    background: rgba(255, 255, 255, 0.05);\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: var(--gst-radius);\n    padding: 44px 24px 34px;\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    transition: transform .25s ease, background .25s ease;\n  }\n  .gst-value:hover {\n    background: rgba(255, 255, 255, 0.09);\n    transform: translateY(-5px);\n    border-color: rgba(255, 183, 3, 0.35);\n  }\n  .gst-value__ico {\n    color: var(--gst-accent);\n    margin: 0 auto 20px;\n    width: 68px;\n    height: 68px;\n    border-radius: 50%;\n    background: rgba(255, 183, 3, 0.12);\n    border: 1px solid rgba(255, 183, 3, 0.25);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: transform .3s ease;\n  }\n  .gst-value:hover .gst-value__ico {\n    transform: scale(1.12);\n  }\n  .gst-value__ico svg {\n    display: block;\n  }\n  .gst-value h3 {\n    font-family: 'Outfit', sans-serif;\n    color: #ffffff;\n    font-size: 1.25rem;\n    font-weight: 700;\n    margin: 0 0 12px;\n  }\n  .gst-value p {\n    color: #c4d7e6;\n    font-size: 0.9375rem;\n    line-height: 1.6;\n    margin: 0;\n  }\n\n  \/* ===== EDITORIAL SECTION ===== *\/\n  .gst-editorial {\n    padding: 96px 24px;\n    background: #ffffff;\n  }\n  .gst-editorial__wrap {\n    max-width: 1160px;\n    margin: 0 auto;\n    display: grid;\n    grid-template-columns: 1.1fr 0.9fr;\n    gap: 60px;\n    align-items: center;\n  }\n  .gst-editorial__img {\n    border-radius: var(--gst-radius);\n    overflow: hidden;\n    aspect-ratio: 4\/3;\n    box-shadow: 0 20px 50px rgba(11, 35, 58, 0.14);\n  }\n  .gst-editorial__img img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .gst-editorial__title {\n    font-family: 'Outfit', sans-serif;\n    font-size: clamp(2rem, 3.5vw, 2.8rem);\n    color: var(--gst-primary);\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    margin: 0 0 20px;\n    line-height: 1.15;\n  }\n  .gst-editorial__text {\n    font-size: 1.1rem;\n    color: #4a5d6e;\n    margin: 0 0 28px;\n    line-height: 1.75;\n  }\n\n  \/* ===== GALERIA ===== *\/\n  .gst-gallery {\n    padding: 80px 24px 96px;\n    background: var(--gst-sand);\n    border-top: 1px solid rgba(11, 35, 58, 0.05);\n  }\n  .gst-gallery__head {\n    max-width: 1160px;\n    margin: 0 auto 36px;\n    text-align: center;\n  }\n  .gst-gallery__title {\n    font-family: 'Outfit', sans-serif;\n    font-size: clamp(1.8rem, 3.2vw, 2.5rem);\n    color: var(--gst-primary);\n    font-weight: 800;\n    margin: 0;\n  }\n  .gst-gallery__grid {\n    max-width: 1160px;\n    margin: 0 auto;\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 18px;\n  }\n  .gst-gallery__item {\n    aspect-ratio: 1\/1;\n    overflow: hidden;\n    border-radius: 12px;\n    box-shadow: 0 6px 18px rgba(0,0,0,0.06);\n  }\n  .gst-gallery__item img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    transition: transform .4s ease;\n  }\n  .gst-gallery__item:hover img {\n    transform: scale(1.08);\n  }\n\n  \/* ===== CTA FINAL ===== *\/\n  .gst-cta-final {\n    background: linear-gradient(160deg, #0b233a 0%, #0077b6 100%);\n    padding: 86px 24px;\n    text-align: center;\n    color: #ffffff;\n  }\n  .gst-cta-final__title {\n    font-family: 'Outfit', sans-serif;\n    color: #ffffff;\n    font-size: clamp(1.8rem, 3.5vw, 2.6rem);\n    margin: 0 0 26px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n  }\n\n  \n\n  \/* ===== RESPONSIVIDADE ===== *\/\n  @media (max-width: 980px) {\n    .gst-tours__grid { grid-template-columns: 1fr; max-width: 580px; }\n    .gst-editorial__wrap { grid-template-columns: 1fr; gap: 36px; }\n    .gst-values__grid { grid-template-columns: repeat(2, 1fr); }\n  }\n  @media (max-width: 768px) {\n    .gst-hero { min-height: 60vh; background-attachment: scroll; padding: 70px 20px; }\n    .gst-hero__buttons { flex-direction: column; width: 100%; max-width: 320px; }\n    .gst-btn { width: 100%; text-align: center; }\n    .gst-trust { flex-direction: column; padding: 6px 10px; }\n    .gst-trust__item { padding: 10px 6px; }\n    .gst-trust__item + .gst-trust__item { border-left: 0; border-top: 1px solid rgba(255,255,255,.14); }\n    .gst-gallery__grid { grid-template-columns: repeat(2, 1fr); }\n    \n  }\n  @media (max-width: 560px) {\n    .gst-values__grid { grid-template-columns: 1fr; }\n  }\n\n  .gst-hero__quote {\n    margin: 0 0 32px;\n    max-width: 680px;\n  }\n  .gst-hero__quote-text {\n    font-size: clamp(1.15rem, 2.2vw, 1.45rem);\n    font-style: italic;\n    color: #ffffff;\n    text-shadow: 0 2px 12px rgba(0,0,0,0.55);\n    line-height: 1.5;\n    font-weight: 500;\n    display: block;\n    margin-bottom: 6px;\n    letter-spacing: 0.2px;\n  }\n  .gst-hero__quote-author {\n    display: inline-block;\n    font-size: 0.85rem;\n    font-weight: 700;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    color: var(--gst-accent, #ffb703);\n    text-shadow: 0 2px 8px rgba(0,0,0,0.5);\n  }\n<\/style>\n\n<!-- HERO -->\n<section class=\"gst-hero\" id=\"inicio\">\n  <div class=\"gst-hero__overlay\"><\/div>\n  <div class=\"gst-hero__content\">\n    <div class=\"gst-hero__badge\">\n    <svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"flex-shrink:0; vertical-align:middle; margin-right:4px;\">\n      <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"><\/path>\n      <circle cx=\"12\" cy=\"10\" r=\"3\"><\/circle>\n    <\/svg>\n    GLIDE SUP TOURS \u2022 MADEIRA\n  <\/div>\n    <h1 class=\"gst-hero__title\">Explore Madeira's Coast on SUP<\/h1>\n    <p class=\"gst-hero__subtitle\">Guided tours for all experience levels.<\/p>\n    <div class=\"gst-hero__buttons\">\n      <a class=\"gst-btn gst-btn--primary\" href=\"#tours\">Choose a tour<\/a>\n      <a class=\"gst-btn gst-btn--ghost\" href=\"#tours\">View tours<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- TRUST BAR -->\n<section class=\"gst-trust-bar\" id=\"trust-bar\">\n  <div class=\"gst-trust\">\n    <div class=\"gst-trust__item\">\n      <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"\/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"\/><\/svg>\n      <span class=\"gst-trust__txt\">Small groups<\/span>\n    <\/div>\n    <div class=\"gst-trust__item\">\n      <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M16.5 9.4 7.55 4.24\"\/><path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\/><polyline points=\"3.29 7 12 12 20.71 7\"\/><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"12\"\/><\/svg>\n      <span class=\"gst-trust__txt\">Equipment included<\/span>\n    <\/div>\n    <div class=\"gst-trust__item\">\n      <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M2 12c2.5 0 2.5-2 5-2s2.5 2 5 2 2.5-2 5-2 2.5 2 5 2\"\/><\/svg>\n      <span class=\"gst-trust__txt\">All tours are subject to sea conditions<\/span>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- TOURS -->\n<section class=\"gst-tours\" id=\"tours\">\n  <div class=\"gst-tours__head\">\n    <p class=\"gst-tours__eyebrow\">Ocean Experiences<\/p>\n    <h2 class=\"gst-tours__title\">Our Activities<\/h2>\n    <p class=\"gst-tours__subtitle\"><strong>Stand Up Paddle is more than a sport \u2014 it is a way of living the ocean.<\/strong><br class=\"gst-desk-br\"> Discover the cliffs and unique landscapes of Madeira\u2019s south coast on an experience to remember.<\/p>\n  <\/div>\n  <div class=\"gst-tours__grid\"><!-- TOUR PRAIA DA FOZ -->\n    <article class=\"gst-card\">\n      <div class=\"gst-card__img\">\n        <span class=\"gst-card__spot-badge\">Ribeira Brava \u00b7 South Coast<\/span>\n        <img decoding=\"async\" src=\"https:\/\/glidesuptours.pt\/wp-content\/uploads\/2026\/07\/Semttulo2.jpeg\" alt=\"Passeio de SUP na Praia da Foz, Ribeira Brava\" loading=\"lazy\" title=\"Home\">\n      <\/div>\n      <div class=\"gst-card__body\">\n        <h3 class=\"gst-card__title\">Praia da Foz<\/h3>\n        <p class=\"gst-card__desc\">Paddle along Madeira's south coast, between Praia da Foz, dramatic volcanic cliffs and Lugar de Baixo.<\/p>\n        <div class=\"gst-card__meta\">\n          <span class=\"gst-card__meta-item\">\u23f1 2h<\/span>\n          <span class=\"gst-card__meta-item\">\ud83c\udf0a Easy<\/span>\n          <span class=\"gst-card__meta-item\">\ud83d\udc65 Max. 6<\/span>\n        <\/div>\n        <a href=\"https:\/\/glidesuptours.pt\/ribeira-brava-sup-tours\/\" class=\"gst-card__cta\">\n          <span>Learn more<\/span>\n          <span>\u2192<\/span>\n        <\/a>\n      <\/div>\n      <a class=\"gst-card__cover\" href=\"https:\/\/glidesuptours.pt\/ribeira-brava-sup-tours\/\" aria-label=\"Praia da Foz \u2014 ver tour\"><\/a>\n    <\/article>\n\n    \n<!-- TOUR SUP TOURING -->\n    <article class=\"gst-card\">\n      <div class=\"gst-card__img\">\n        <span class=\"gst-card__spot-badge\">South Coast<\/span>\n        <img decoding=\"async\" src=\"https:\/\/glidesuptours.pt\/wp-content\/uploads\/2026\/05\/IMG_20250915_110438-scaled.jpg\" alt=\"West Coast Tour na South Coast da Madeira\" loading=\"lazy\" title=\"Home\">\n      <\/div>\n      <div class=\"gst-card__body\">\n        <h3 class=\"gst-card__title\">West Coast Tour<\/h3>\n        <p class=\"gst-card__desc\">Paddle on touring boards designed for longer distances, greater stability and full exploration.<\/p>\n        <div class=\"gst-card__meta\">\n          <span class=\"gst-card__meta-item\">\ud83c\udf0a Beginner<\/span>\n          <span class=\"gst-card__meta-item\">\ud83c\udf0a Intermediate<\/span>\n          <span class=\"gst-card__meta-item\">\ud83d\udc65 Max 4<\/span>\n        <\/div>\n        <a href=\"https:\/\/glidesuptours.pt\/sup-touring\/\" class=\"gst-card__cta\">\n          <span>Choose your tour<\/span>\n          <span>\u2192<\/span>\n        <\/a>\n      <\/div>\n      <a class=\"gst-card__cover\" href=\"https:\/\/glidesuptours.pt\/sup-touring\/\" aria-label=\"West Coast Tour \u2014 ver tour\"><\/a>\n    <\/article>\n\n  \n\n\n    <!-- TOUR PRAIA DA BARREIRINHA -->\n    <article class=\"gst-card\">\n      <div class=\"gst-card__img\">\n        <span class=\"gst-card__spot-badge\">Funchal \u00b7 Madeira<\/span>\n        <span class=\"gst-card__soon-badge\" style=\"position: absolute; top: 16px; right: 16px; z-index: 2; background: #FF6210; color: #FFFFFF; padding: 5px 12px; border-radius: 9999px; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase; box-shadow: 0 2px 8px rgba(0,0,0,0.25);\">Coming soon<\/span>\n        <img decoding=\"async\" src=\"https:\/\/glidesuptours.pt\/wp-content\/uploads\/2026\/08\/barreirinha-2.jpeg\" alt=\"Passeio de SUP na Praia da Barreirinha, Funchal\" loading=\"lazy\" title=\"Home\">\n      <\/div>\n      <div class=\"gst-card__body\">\n        <h3 class=\"gst-card__title\">Praia da Barreirinha <span style=\"font-size:0.72rem;font-weight:700;color:#FF6210;background:rgba(255,98,16,0.12);padding:3px 8px;border-radius:6px;vertical-align:middle;margin-left:6px;display:inline-block;\">Coming soon<\/span><\/h3>\n        <p class=\"gst-card__desc\">Funchal\u2019s most iconic spot \u2014 rema na ba\u00eda e descobre a costa da cidade a partir do mar com \u00e1guas abrigadas.<\/p>\n        <div class=\"gst-card__meta\">\n          <span class=\"gst-card__meta-item\">\u23f1 2h<\/span>\n          <span class=\"gst-card__meta-item\">\ud83c\udf0a Easy<\/span>\n          <span class=\"gst-card__meta-item\">\ud83d\udc65 Max 8<\/span>\n        <\/div>\n        <a href=\"https:\/\/glidesuptours.pt\/barreirinha-sup-tours\/\" class=\"gst-card__cta\">\n          <span>Learn more<\/span>\n          <span>\u2192<\/span>\n        <\/a>\n      <\/div>\n      <a class=\"gst-card__cover\" href=\"https:\/\/glidesuptours.pt\/barreirinha-sup-tours\/\" aria-label=\"Praia da Barreirinha \u2014 ver tour\"><\/a>\n    <\/article>\n\n    <\/div>\n<\/section>\n\n<!-- OS NOSSOS VALORES -->\n<section class=\"gst-values\">\n  <div class=\"gst-values__head\">\n    <p class=\"gst-values__eyebrow\">The GLIDE Commitment<\/p>\n    <h2 class=\"gst-values__title\">Our Values<\/h2>\n  <\/div>\n  <div class=\"gst-values__grid\">\n    <div class=\"gst-value\">\n      <span class=\"gst-value__ico\">\n        <svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><polyline points=\"9 11.5 11 13.5 15 9.5\"\/><\/svg>\n      <\/span>\n      <h3>Safety<\/h3>\n      <p>Attention to sea conditions and the well-being of every participant.<\/p>\n    <\/div>\n    <div class=\"gst-value\">\n      <span class=\"gst-value__ico\">\n        <svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M2 12c2.5 0 2.5-2 5-2s2.5 2 5 2 2.5-2 5-2 2.5 2 5 2\"\/><path d=\"M2 17c2.5 0 2.5-2 5-2s2.5 2 5 2 2.5-2 5-2 2.5 2 5 2\"\/><\/svg>\n      <\/span>\n      <h3>Respect for the ocean<\/h3>\n      <p>Responsible contact with nature and Madeira's coastline.<\/p>\n    <\/div>\n    <div class=\"gst-value\">\n      <span class=\"gst-value__ico\">\n        <svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polygon points=\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"\/><\/svg>\n      <\/span>\n      <h3>Personalized experience<\/h3>\n      <p>Close guidance tailored to each person's skill level.<\/p>\n    <\/div>\n    <div class=\"gst-value\">\n      <span class=\"gst-value__ico\">\n        <svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><\/svg>\n      <\/span>\n      <h3>Passion for Madeira<\/h3>\n      <p>Sharing unique landscapes and moments from the sea.<\/p>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- BLOCO EDITORIAL -->\n<section class=\"gst-editorial\">\n  <div class=\"gst-editorial__wrap\">\n    <div class=\"gst-editorial__img\">\n      <img decoding=\"async\" src=\"https:\/\/glidesuptours.pt\/wp-content\/uploads\/2026\/05\/IMG_20250923_130643-scaled.jpg\" alt=\"Guia a remar em SUP na costa da Madeira\" loading=\"lazy\" title=\"Home\">\n    <\/div>\n    <div>\n      <h2 class=\"gst-editorial__title\">The Ocean & the Experience<\/h2>\n      <p class=\"gst-editorial__text\">A GLIDE SUP Tours nasceu da paix\u00e3o pelo mar da Madeira. O nosso compromisso \u00e9 garantir a qualidade e a seguran\u00e7a em cada passeio, guiando-te pelas \u00e1guas da costa sul com aten\u00e7\u00e3o e cuidado from start to finish.<\/p>\n      <a href=\"#tours\" class=\"gst-btn gst-btn--primary\">Explore Tours \u2192<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- GALERIA -->\n<section class=\"gst-gallery\">\n  <div class=\"gst-gallery__head\">\n    <h2 class=\"gst-gallery__title\">Gallery<\/h2>\n  <\/div>\n  <div class=\"gst-gallery__grid\">\n    <div class=\"gst-gallery__item\"><img decoding=\"async\" src=\"https:\/\/glidesuptours.pt\/wp-content\/uploads\/2026\/08\/barreirinha-2.jpeg\" alt=\"SUP na Praia da Barreirinha, Funchal\" loading=\"lazy\" title=\"Home\"><\/div>\n    <div class=\"gst-gallery__item\"><img decoding=\"async\" src=\"https:\/\/glidesuptours.pt\/wp-content\/uploads\/2026\/05\/IMG_20250521_122858-scaled.jpg\" alt=\"SUP na Madeira\" loading=\"lazy\" title=\"Home\"><\/div>\n    <div class=\"gst-gallery__item\"><img decoding=\"async\" src=\"https:\/\/glidesuptours.pt\/wp-content\/uploads\/2026\/07\/Semttulo2.jpeg\" alt=\"Passeio de SUP na Ribeira Brava\" loading=\"lazy\" title=\"Home\"><\/div>\n    <div class=\"gst-gallery__item\"><img decoding=\"async\" src=\"https:\/\/glidesuptours.pt\/wp-content\/uploads\/2026\/05\/IMG_20250915_110438-scaled.jpg\" alt=\"Fal\u00e9sias da Madeira em SUP\" loading=\"lazy\" title=\"Home\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- CTA FINAL -->\n<section class=\"gst-cta-final\">\n  <h2 class=\"gst-cta-final__title\">Ready to get in the water?<\/h2>\n  <a class=\"gst-btn gst-btn--primary\" href=\"#tours\">Choose a tour<\/a>\n<\/section>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-736b08b e-flex e-con-boxed e-con e-parent\" data-id=\"736b08b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-44d3831 elementor-widget elementor-widget-html\" data-id=\"44d3831\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================================================================\n     GLIDE - SUP TOURS \u2014 CONDI\u00c7\u00d5ES MAR\u00cdTIMAS (HOMEPAGE)\n     Totalmente Bilingue (PT \/ EN), Sem Termo \"Favor\u00e1vel\", Alinhado \u00e0 Decis\u00e3o\n     ========================================================================= -->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@500;600;700;800&family=Noto+Sans:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n.glide-home-section {\n  font-family: 'Montserrat', 'Noto Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n  color: #1E293B;\n  box-sizing: border-box;\n  margin: 18px auto 14px;\n  max-width: 980px;\n  padding: 0 10px;\n}\n.glide-home-section * { box-sizing: border-box; }\n\n\/* Cabe\u00e7alho *\/\n.glide-home-header {\n  text-align: center;\n  margin-bottom: 16px;\n}\n.glide-home-header h2 {\n  font-size: 1.22rem;\n  font-weight: 800;\n  color: #1E293B;\n  margin: 0 0 4px 0;\n  letter-spacing: -0.01em;\n}\n.glide-home-header p {\n  font-size: 0.82rem;\n  color: #64748B;\n  margin: 0;\n}\n\n\/* Grelha dos 3 Spots \u2014 Quadrados bem preenchidos *\/\n.glide-home-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 14px;\n  margin-bottom: 12px;\n}\n\n.glide-spot-card-compact {\n  background: #FFFFFF;\n  border-radius: 14px;\n  border: 1px solid #E2E8F0;\n  padding: 16px 14px 14px 14px;\n  box-shadow: 0 4px 12px rgba(15, 23, 42, 0.05);\n  transition: all 0.22s ease;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  text-decoration: none;\n  color: inherit;\n  min-height: 142px;\n}\n.glide-spot-card-compact:hover {\n  background: #FFFFFF;\n  border-color: #CBD5E1;\n  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.10);\n  transform: translateY(-3px);\n}\n\n\/* Topo do Cart\u00e3o *\/\n.glide-card-top {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 10px;\n  padding-bottom: 8px;\n  border-bottom: 1px solid #F1F5F9;\n  gap: 8px;\n}\n.glide-card-info {\n  flex: 1;\n  min-width: 0;\n}\n\/* Evitar quebra de linha \/ par\u00e1grafo em 'Praia da Foz' *\/\n.glide-card-info h3 {\n  font-size: 1rem;\n  font-weight: 800;\n  color: #1E293B;\n  margin: 0;\n  line-height: 1.2;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.glide-card-info span {\n  font-size: 0.74rem;\n  color: #64748B;\n  font-weight: 600;\n  letter-spacing: 0.2px;\n  display: block;\n  margin-top: 2px;\n  white-space: nowrap;\n}\n\n\/* Badge de Estado *\/\n.glide-live-badge {\n  display: inline-flex;\n  align-items: center;\n  gap: 5px;\n  font-size: 0.72rem;\n  font-weight: 700;\n  padding: 3px 8px;\n  border-radius: 9999px;\n  background: #F0FDF4;\n  color: #166534;\n  white-space: nowrap;\n  flex-shrink: 0;\n}\n.glide-live-badge.yellow {\n  background: #FEF3C7;\n  color: #92400E;\n}\n.glide-live-badge.red {\n  background: #FEE2E2;\n  color: #991B1B;\n}\n.glide-live-badge.emerald {\n  background: #ECFDF5;\n  color: #065F46;\n}\n.glide-live-badge.emerald .glide-live-dot {\n  background: #10B981;\n}\n.glide-live-dot {\n  width: 6px;\n  height: 6px;\n  border-radius: 50%;\n  background: #22C55E;\n  display: inline-block;\n  flex-shrink: 0;\n}\n.glide-live-badge.yellow .glide-live-dot {\n  background: #F59E0B;\n}\n.glide-live-badge.red .glide-live-dot {\n  background: #EF4444;\n}\n\n\/* Linha de M\u00e9tricas \u2014 Enche bem o quadrado *\/\n.glide-metrics-row {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 4px;\n  background: #F8FAFC;\n  border-radius: 10px;\n  border: 1px solid #EDF2F7;\n  padding: 8px 4px 6px 4px;\n  text-align: center;\n}\n.glide-spot-card-compact:hover .glide-metrics-row {\n  background: #F1F5F9;\n}\n\n.glide-metric-item {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: flex-end;\n}\n.glide-metric-title {\n  font-size: 0.7rem;\n  font-weight: 700;\n  color: #64748B;\n  text-transform: uppercase;\n  letter-spacing: 0.3px;\n  margin-bottom: 2px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: flex-end;\n  min-height: 25px;\n}\n.glide-metric-value {\n  font-size: 1.05rem;\n  font-weight: 800;\n  color: #0F172A;\n  line-height: 1.15;\n  display: flex;\n  align-items: baseline;\n  gap: 2px;\n}\n.glide-metric-sub {\n  font-size: 0.72rem;\n  font-weight: 600;\n  color: #0284C7;\n  margin-top: 2px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: 16px;\n  min-height: 16px;\n  line-height: 16px;\n  gap: 3px;\n}\n.glide-sub-arrow {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 0.8rem;\n  line-height: 1;\n}\n.glide-thermo-icon {\n  width: 13px;\n  height: 13px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  stroke: #EA580C;\n  transform: translateY(1px);\n}\n\n\/* Rodap\u00e9 \u2014 2 Frases em par\u00e1grafo espa\u00e7ado e Powered na linha da 1\u00aa frase *\/\n.glide-home-footer {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-start;\n  margin-top: 18px;\n  padding: 0 14px;\n  gap: 16px;\n  box-sizing: border-box;\n}\n.glide-home-disclaimer {\n  font-size: 0.72rem;\n  color: #64748B;\n  text-align: left;\n  max-width: 740px;\n  margin: 0;\n}\n.glide-home-disclaimer p {\n  margin: 0 0 8px 0;\n  line-height: 1.4;\n  font-size: 0.72rem;\n}\n.glide-home-disclaimer p:last-child {\n  margin-bottom: 0;\n}\n.glide-home-disclaimer strong {\n  color: #334155;\n  font-weight: 700;\n}\n.glide-home-brand {\n  font-size: 0.72rem;\n  line-height: 1.4;\n  color: #94A3B8;\n  white-space: nowrap;\n  text-align: right;\n  flex-shrink: 0;\n  margin: 0;\n}\n\n@media (max-width: 768px) {\n  .glide-home-grid {\n    grid-template-columns: 1fr;\n    gap: 12px;\n  }\n  .glide-home-footer {\n    display: flex !important;\n    flex-direction: column !important;\n    align-items: center !important;\n    text-align: center !important;\n    gap: 6px !important;\n    margin-top: 16px !important;\n    padding: 12px 14px !important;\n    background: #F8FAFC !important;\n    border: 1px solid #E2E8F0 !important;\n    border-radius: 12px !important;\n    width: 100% !important;\n    box-sizing: border-box !important;\n  }\n  .glide-home-disclaimer {\n    width: 100% !important;\n    max-width: 100% !important;\n    text-align: center !important;\n    margin: 0 !important;\n  }\n  .glide-home-disclaimer p {\n    margin: 0 0 5px 0 !important;\n    line-height: 1.4 !important;\n    font-size: 0.72rem !important;\n    color: #64748B !important;\n  }\n  .glide-home-disclaimer p:last-child {\n    margin-bottom: 0 !important;\n  }\n  .glide-home-disclaimer strong {\n    color: #0F172A !important;\n    font-weight: 600 !important;\n  }\n  .glide-home-brand {\n    width: 100% !important;\n    text-align: center !important;\n    font-size: 0.68rem !important;\n    line-height: 1.3 !important;\n    color: #94A3B8 !important;\n    margin-top: 2px !important;\n  }\n}\n<\/style>\n\n<div class=\"glide-home-section\" id=\"glide-homepage-weather-widget\">\n  <div style=\"text-align:center; padding: 20px; color:#64748B; font-size:0.85rem;\">\n    <span>Loading live sea conditions...<\/span>\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n  const isEn = document.documentElement.lang.startsWith('en') ||\n               window.location.pathname.startsWith('\/en\/') ||\n               window.location.pathname.includes('\/en') ||\n               (new URLSearchParams(window.location.search)).get('lang') === 'en';\n\n  const t = {\n    title: isEn ? \"Glide Along Madeira's Coast\" : \"Desliza pela Costa da Madeira em SUP\",\n    subtitle: isEn ? \"Real-time marine forecast on Madeira's South Coast\" : \"Previs\u00e3o mar\u00edtima em tempo real na South Coast da Madeira\",\n    statusGood: isEn ? \"Recommended\" : \"Recomendado\",\n    statusExcellent: isEn ? \"Recommended\" : \"Recomendado\",\n    statusModerate: isEn ? \"Moderate Conditions\" : \"Condi\u00e7\u00f5es Moderadas\",\n    statusNotRec: isEn ? \"Not Recommended\" : \"N\u00e3o Recomendado\",\n    wind: isEn ? \"Wind\" : \"Vento\",\n    swell: isEn ? \"Waves\" : \"Ondula\u00e7\u00e3o\",\n    temp: isEn ? \"Temp\" : \"Temp\",\n    moderate: isEn ? \"Moderate\" : \"Moderado\",\n    disclaimer1: isEn\n      ? \"Forecasts are indicative only and may not reflect real-time local conditions.\"\n      : \"As previs\u00f5es s\u00e3o meramente indicativas e podem n\u00e3o corresponder \u00e0s condi\u00e7\u00f5es reais no local.\",\n    disclaimer2: isEn\n      ? \"If in doubt, contact us to confirm your tour.\"\n      : \"Em caso de d\u00favida, Contact us para confirmar o tour.\",\n    powered: \"Powered by <strong>GLIDE<\/strong>\"\n  };\n\n  \/* Regras por spot \u2014 Barreirinha limpo sem 'Coming soon' *\/\n  const SPOTS = [\n    {\n      id: \"ribeira-brava\",\n      rule: \"foz\",\n      name: \"Praia da Foz\",\n      location: \"Ribeira Brava\",\n      lat: 32.671, lon: -17.065,\n      windLimit: 6.0, moderateLimit: 4.5,\n      shelterOffshore: 0.45, shelterOnshore: 1.00, shelterFrom: 292.5,\n      swellBad: 1.5, swellBadSecondary: 1.10, swellBadTotal: 1.20,\n      swellWarn: 0.85,\n      link: isEn ? \"\/en\/ribeira-brava-sup-tours\/\" : \"\/ribeira-brava-sup-tours\/\"\n    },\n    {\n      id: \"costa-sul\",\n      rule: \"costa\",\n      name: \"SUP Touring\",\n      location: isEn ? \"South Coast\" : \"South Coast\",\n      lat: 32.660, lon: -17.000,\n      windLimit: 6.0, moderateLimit: 4.5,\n      shelterOffshore: 0.35, shelterOnshore: 1.00,\n      shelterNEOnly: true,\n      swellBad: 1.5, swellWarn: 0.85,\n      link: isEn ? \"\/en\/sup-touring\/\" : \"\/sup-touring\/\"\n    },\n    {\n      id: \"barreirinha\",\n      rule: \"barreirinha\",\n      name: \"Barreirinha\",\n      location: \"Funchal\",\n      lat: 32.647, lon: -16.898,\n      windLimit: 9.0, moderateLimit: 6.0,\n      shelterOffshore: 0.35, shelterOnshore: 1.20,\n      swellBad: 1.5, swellWarn: 0.85,\n      link: isEn ? \"\/en\/barreirinha-sup-tours\/\" : \"\/barreirinha-sup-tours\/\"\n    }\n  ];\n\n  const _az = (x) => (x !== null && x !== undefined && x !== \"\" && !isNaN(x)) ? ((Number(x) % 360) + 360) % 360 : null;\n  const isSSE = (a) => a != null && a >= 157.5 && a < 247.5;\n\n  function degToCard(deg) {\n    if (deg === null || deg === undefined || isNaN(deg)) return \"--\";\n    const d = (deg % 360 + 360) % 360;\n    const dirs = isEn ? [\n      { c: \"N\", min: 337.5, max: 360 }, { c: \"N\", min: 0, max: 22.5 },\n      { c: \"NE\", min: 22.5, max: 67.5 }, { c: \"E\", min: 67.5, max: 112.5 },\n      { c: \"SE\", min: 112.5, max: 157.5 }, { c: \"S\", min: 157.5, max: 202.5 },\n      { c: \"SW\", min: 202.5, max: 247.5 }, { c: \"W\", min: 247.5, max: 292.5 },\n      { c: \"NW\", min: 292.5, max: 337.5 }\n    ] : [\n      { c: \"N\", min: 337.5, max: 360 }, { c: \"N\", min: 0, max: 22.5 },\n      { c: \"NE\", min: 22.5, max: 67.5 }, { c: \"E\", min: 67.5, max: 112.5 },\n      { c: \"SE\", min: 112.5, max: 157.5 }, { c: \"S\", min: 157.5, max: 202.5 },\n      { c: \"SO\", min: 202.5, max: 247.5 }, { c: \"O\", min: 247.5, max: 292.5 },\n      { c: \"NO\", min: 292.5, max: 337.5 }\n    ];\n    for (const x of dirs) if (d >= x.min && d < x.max) return x.c;\n    return \"N\";\n  }\n\n  function getWindArrow(cardinal) {\n    const arrows = { \"N\": \"\u2193\", \"NE\": \"\u2199\", \"E\": \"\u2190\", \"SE\": \"\u2196\", \"S\": \"\u2191\", \"SO\": \"\u2197\", \"SW\": \"\u2197\", \"O\": \"\u2192\", \"W\": \"\u2192\", \"NO\": \"\u2198\", \"NW\": \"\u2198\" };\n    return arrows[cardinal] || \"\u2193\";\n  }\n\n  function shelterFactor(spot, dirDeg) {\n    const d = dirDeg == null ? null : ((Number(dirDeg) % 360) + 360) % 360;\n    if (d == null) return 1;\n    if (spot.shelterNEOnly) {\n      return (d >= 22.5 && d <= 67.5) ? (spot.shelterOffshore != null ? spot.shelterOffshore : 1) : (spot.shelterOnshore != null ? spot.shelterOnshore : 1);\n    }\n    return (d <= 112.5 || d >= (spot.shelterFrom != null ? spot.shelterFrom : 337.5)) ? (spot.shelterOffshore != null ? spot.shelterOffshore : 1)\n                                       : (spot.shelterOnshore != null ? spot.shelterOnshore : 1);\n  }\n\n  function evalSpot(spot, rawWind, gustSpeed, windDirDeg, waveHeight, domD, opts) {\n    opts = opts || {};\n    const card = degToCard(windDirDeg);\n    const dD = domD != null ? domD : opts.waveDirDeg;\n    const waveCard = degToCard(dD);\n    const s2H = opts.s2H || 0;\n    const s2D = opts.s2D != null ? opts.s2D : null;\n\n    const sf = opts.obs ? 1 : shelterFactor(spot, windDirDeg);\n    let effWind = Math.max(0.3, Math.round(rawWind * sf * 10) \/ 10);\n    let effGust = (gustSpeed !== null && gustSpeed !== undefined && !isNaN(gustSpeed))\n      ? Math.max(0.3, Math.round(gustSpeed * sf * 10) \/ 10)\n      : null;\n\n    let swellBad;\n    if (spot.rule === \"foz\") {\n      swellBad = (isSSE(_az(dD)) && waveHeight >= spot.swellBad) ||\n                 (isSSE(_az(s2D)) && s2H >= spot.swellBadSecondary && waveHeight >= spot.swellBadTotal);\n    } else {\n      swellBad = (isSSE(_az(dD)) && waveHeight >= spot.swellBad) || (isSSE(_az(s2D)) && s2H >= spot.swellBad);\n    }\n    const swellWarn = (isSSE(_az(dD)) && waveHeight >= spot.swellWarn) && !swellBad;\n    const isShelteredSwell = (_az(dD) != null && (_az(dD) >= 280 || _az(dD) <= 80)) ||\n                             [\"NO\", \"NW\", \"N\", \"NE\"].includes(waveCard) || waveHeight <= 0.6;\n\n    let status = \"green\";\n    let label = t.statusGood;\n\n    if (spot.rule === \"costa\") {\n      if (swellBad) { status = \"red\"; label = t.statusNotRec; }\n      else if (swellWarn) { status = \"yellow\"; label = t.statusModerate; }\n      else if (effGust !== null && effGust >= 17.0 && effWind >= 8.0) { status = \"red\"; label = t.statusNotRec; }\n      else if (effWind >= ((windDirDeg != null && windDirDeg >= 22.5 && windDirDeg <= 67.5) ? 8.0 : spot.windLimit)) { status = \"red\"; label = t.statusNotRec; }\n      else if (effWind >= spot.moderateLimit || (effGust !== null && effGust >= 14.0 && effWind >= 5.0)) { status = \"yellow\"; label = t.statusModerate; }\n    } else {\n      const isShelteredWind = (windDirDeg != null && (windDirDeg >= 337.5 || windDirDeg <= 112.5));\n      const isExcellent = isShelteredWind && !swellBad && !swellWarn && effWind <= (spot.rule === \"foz\" ? 5.8 : 5.0) &&\n        (effGust === null || (isShelteredSwell ? effGust <= (spot.rule === \"foz\" ? 13.5 : 10.0) : effGust <= (spot.rule === \"foz\" ? 10.0 : 8.5))) &&\n        s2H < (spot.rule === \"foz\" ? 0.45 : 0.4);\n      if (spot.rule === \"foz\") {\n        if (swellBad || (effGust !== null && effGust >= 17.0) || effWind >= spot.windLimit) { status = \"red\"; label = t.statusNotRec; }\n        else if (swellWarn || effWind >= spot.moderateLimit || (effGust !== null && effGust >= 14.0 && effWind >= 5.0)) { status = \"yellow\"; label = t.statusModerate; }\n        else if (isExcellent) { status = \"emerald\"; label = t.statusExcellent; }\n      } else {\n        if (swellBad || effWind >= spot.windLimit || (effGust !== null && effGust >= 14.0)) { status = \"red\"; label = t.statusNotRec; }\n        else if (swellWarn || effWind >= spot.moderateLimit || (effGust !== null && effGust >= 11.5)) { status = \"yellow\"; label = t.statusModerate; }\n        else if (isExcellent) { status = \"emerald\"; label = t.statusExcellent; }\n      }\n    }\n\n    if (spot.rule === \"costa\" && windDirDeg !== null && windDirDeg !== undefined && !isNaN(windDirDeg)) {\n      const og = (windDirDeg >= 100 && windDirDeg <= 250 && gustSpeed !== null && gustSpeed !== undefined && !isNaN(gustSpeed)) ? Number(gustSpeed) : -1;\n      if (og >= 10) {\n        effGust = Number(gustSpeed);\n        effWind = Math.round(rawWind * 10) \/ 10;\n        if (status !== \"red\" && effWind >= ((windDirDeg != null && windDirDeg >= 22.5 && windDirDeg <= 67.5) ? 8.0 : spot.windLimit)) { status = \"red\"; label = t.statusNotRec; }\n      }\n      if (og >= 13 && status !== \"red\") { status = \"red\"; label = t.statusNotRec; }\n      else if (og >= 10 && status === \"green\") { status = \"yellow\"; label = t.statusModerate; }\n    }\n\n    return {\n      status, label,\n      wind: effWind, gust: effGust,\n      card, arrow: getWindArrow(card),\n      waveCard, swellBad, swellWarn,\n      swellDomDeg: dD, swell2H: s2H, swell2Deg: s2D\n    };\n  }\n\n  function getStation() {\n    if (window.__glideStation) return window.__glideStation;\n    window.__glideStation = fetch(\"\/wp-json\/glide\/v1\/station\")\n      .then(r => (r && r.ok) ? r.json() : null)\n      .then(d => (d && d.observed === true && typeof d.wind === \"number\")\n        ? { wind: d.wind,\n            gust: typeof d.gust === \"number\" ? d.gust : null,\n            dir: typeof d.dir === \"number\" ? d.dir : null,\n            temp: typeof d.temp === \"number\" ? d.temp : null }\n        : null)\n      .catch(() => null);\n    return window.__glideStation;\n  }\n\n  let _wgCache = null, _wgAt = 0;\n  async function getWGObs() {\n    const now = Date.now();\n    if (_wgCache && now - _wgAt < 120000) return _wgCache;\n    try {\n      const r = await fetch(\"\/wp-json\/glide\/v1\/wg\");\n      if (!r || !r.ok) return _wgCache;\n      const d = await r.json();\n      if (!(d && d.ok && d.data)) return _wgCache;\n      const cs = d.data[\"costa-sul\"];\n      if (!cs || typeof cs.obsWind !== \"number\" || !(cs.n > 0)) return _wgCache;\n      const newest = (cs.stations || []).reduce(function (a, s) { return Math.max(a, s.unixtime || 0); }, 0);\n      if (!newest || (Date.now() \/ 1000 - newest) > 3600) return _wgCache;\n      _wgCache = cs; _wgAt = now;\n      return _wgCache;\n    } catch (e) { return _wgCache; }\n  }\n\n  async function loadSpot(spot, obs, wg) {\n    const wUrl = `https:\/\/api.open-meteo.com\/v1\/forecast?latitude=${spot.lat}&longitude=${spot.lon}&hourly=temperature_2m,wind_speed_10m,wind_direction_10m,wind_gusts_10m&wind_speed_unit=kn&timezone=Atlantic%2FMadeira&forecast_days=6`;\n    const mUrl = `https:\/\/marine-api.open-meteo.com\/v1\/marine?latitude=${spot.lat},${spot.lat - 0.14}&longitude=${spot.lon},${spot.lon}&hourly=wave_height,wave_direction,wave_period,swell_wave_height,swell_wave_direction,swell_wave_period,secondary_swell_wave_height,secondary_swell_wave_direction&timezone=Atlantic%2FMadeira&forecast_days=6`;\n\n    const [rIc, rGf, rUk, mRes] = await Promise.all([\n      fetch(wUrl + '&models=icon_seamless').catch(() => null),\n      fetch(wUrl + '&models=gfs_seamless').catch(() => null),\n      fetch(wUrl + '&models=ukmo_seamless').catch(() => null),\n      fetch(mUrl).catch(() => ({ ok: false }))\n    ]);\n    const wModels = [];\n    for (const r of [rIc, rGf, rUk]) {\n      if (!r || !r.ok) continue;\n      try { const j = await r.json(); if (j && j.hourly && (j.hourly.time || []).length) wModels.push(j.hourly); } catch (e) {}\n    }\n    if (!wModels.length) { try { const j = await (await fetch(wUrl)).json(); if (j && j.hourly) wModels.push(j.hourly); } catch (e) {} }\n    const _med = (arr) => { const v = arr.filter(function (x) { return x != null && !isNaN(x); }).sort(function (a, b) { return a - b; }); return v.length ? v[Math.floor(v.length \/ 2)] : null; };\n    let wData = { hourly: {} };\n    if (wModels.length) {\n      const times = wModels[0].time || [];\n      const wind = [], dirs = [], gusts = [], temps = [];\n      for (let i = 0; i < times.length; i++) {\n        const ws = [], gs = [], ds = [];\n        for (const m of wModels) {\n          ws.push(m.wind_speed_10m ? Number(m.wind_speed_10m[i]) : null);\n          gs.push(m.wind_gusts_10m ? Number(m.wind_gusts_10m[i]) : null);\n          ds.push(m.wind_direction_10m ? Number(m.wind_direction_10m[i]) : null);\n        }\n        const bw = _med(ws), bg = _med(gs);\n        let bd = null;\n        const validDs = ds.filter(d => d != null && !isNaN(d));\n        if (validDs.length === 3) {\n          const cd = (a, b) => Math.abs((a - b + 180) % 360 - 180);\n          const d01 = cd(validDs[0], validDs[1]), d02 = cd(validDs[0], validDs[2]), d12 = cd(validDs[1], validDs[2]);\n          let pair = validDs;\n          if (d01 <= Math.min(d02, d12) && d02 > 80 && d12 > 80) pair = [validDs[0], validDs[1]];\n          else if (d02 <= Math.min(d01, d12) && d01 > 80 && d12 > 80) pair = [validDs[0], validDs[2]];\n          else if (d12 <= Math.min(d01, d02) && d01 > 80 && d02 > 80) pair = [validDs[1], validDs[2]];\n          let _u = 0, _v = 0;\n          for (const d of pair) { const rad = d * Math.PI \/ 180; _u += Math.sin(rad); _v += Math.cos(rad); }\n          bd = Math.round((Math.atan2(_u, _v) * 180 \/ Math.PI + 360) % 360);\n        } else if (validDs.length > 0) {\n          let _u = 0, _v = 0;\n          for (const d of validDs) { const rad = d * Math.PI \/ 180; _u += Math.sin(rad); _v += Math.cos(rad); }\n          bd = Math.round((Math.atan2(_u, _v) * 180 \/ Math.PI + 360) % 360);\n        }\n        wind.push(bw); dirs.push(bd); gusts.push(bg);\n        temps.push(wModels[0].temperature_2m && !isNaN(Number(wModels[0].temperature_2m[i])) ? Number(wModels[0].temperature_2m[i]) : 24);\n      }\n      wData = { hourly: { time: times, wind_speed_10m: wind, wind_direction_10m: dirs, wind_gusts_10m: gusts, temperature_2m: temps } };\n    }\n    const mData = mRes.ok ? await mRes.json() : [{ hourly: {} }, { hourly: {} }];\n\n    const wH = wData.hourly || {};\n    const mArr = (Array.isArray(mData) ? mData : [mData, mData]).map(x => x.hourly || {});\n    const mH = mArr[0];\n    const times = wH.time || [];\n    const currentHourStr = new Intl.DateTimeFormat('sv-SE', {\n      timeZone: \"Atlantic\/Madeira\", year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', hour12: false\n    }).format(new Date()).replace(' ', 'T');\n    let idx = times.findIndex(x => x.startsWith(currentHourStr));\n    if (idx === -1) idx = 0;\n\n    const windSpeeds = wH.wind_speed_10m || [];\n    const windDirs = wH.wind_direction_10m || [];\n    const windGusts = wH.wind_gusts_10m || [];\n    const temps = wH.temperature_2m || [];\n    const waveHeights = mH.wave_height || [];\n    const waveDirs = mH.wave_direction || [];\n\n    let spd = windSpeeds[idx] != null ? Number(windSpeeds[idx]) : 1.5;\n    let dir = windDirs[idx] != null ? Number(windDirs[idx]) : 0;\n    let gst = windGusts[idx] != null ? Number(windGusts[idx]) : null;\n    let temp = temps[idx] != null ? Number(temps[idx]) : 24;\n\n    let wavH = waveHeights[idx] != null ? Number(waveHeights[idx]) : 0.6;\n    let wavD = waveDirs[idx] != null ? Number(waveDirs[idx]) : 300;\n\n    const swellH = mH.swell_wave_height && mH.swell_wave_height[idx] != null ? Number(mH.swell_wave_height[idx]) : 0;\n    const swellD = mH.swell_wave_direction && mH.swell_wave_direction[idx] != null ? Number(mH.swell_wave_direction[idx]) : null;\n    let s2H = mH.secondary_swell_wave_height && mH.secondary_swell_wave_height[idx] != null ? Number(mH.secondary_swell_wave_height[idx]) : 0;\n    let s2D = mH.secondary_swell_wave_direction && mH.secondary_swell_wave_direction[idx] != null ? Number(mH.secondary_swell_wave_direction[idx]) : null;\n\n    const oS2H = mArr[1].secondary_swell_wave_height ? Number(mArr[1].secondary_swell_wave_height[idx] || 0) : 0;\n    if (mArr[1].secondary_swell_wave_direction && oS2H > s2H) { s2H = oS2H; s2D = Number(mArr[1].secondary_swell_wave_direction[idx]); }\n    const domD = swellH >= s2H ? swellD : s2D;\n    const eOpts = { s2H, s2D, domD, waveDirDeg: wavD };\n\n    const _iconD = (wModels[0] && wModels[0].wind_direction_10m && wModels[0].wind_direction_10m[idx] != null)\n      ? Number(wModels[0].wind_direction_10m[idx]) : null;\n    if (spot.id === \"costa-sul\" && wg && typeof wg.obsWind === \"number\") {\n      spd = wg.obsWind;\n      if (_iconD !== null && !isNaN(_iconD)) dir = _iconD;\n      if (typeof wg.obsMax === \"number\") gst = wg.obsMax;\n    }\n\n    let ev = evalSpot(spot, spd, gst, dir, wavH, domD, eOpts);\n    let measured = false;\n\n    if (obs) {\n      if (spot.id === \"barreirinha\") {\n        ev = evalSpot(spot, obs.wind, obs.gust, obs.dir !== null ? obs.dir : dir, wavH, domD,\n                      { s2H, s2D, domD, waveDirDeg: wavD, obs: true });\n        if (obs.temp !== null && obs.temp !== undefined) temp = obs.temp;\n        measured = true;\n      } else {\n        const g = obs.gust;\n        const lvl = g != null ? (g >= 15 ? 2 : (g >= 12 ? 1 : 0)) : 0;\n        const rk = { green: 0, emerald: 0, yellow: 1, red: 2 };\n        if (lvl > (rk[ev.status] || 0)) {\n          const os = evalSpot(spot, obs.wind, g, obs.dir !== null ? obs.dir : dir, wavH, domD,\n                              { s2H, s2D, domD, waveDirDeg: wavD, obs: true });\n          if (lvl > (rk[os.status] || 0)) {\n            os.status = lvl === 2 ? \"red\" : \"yellow\";\n            os.label = lvl === 2 ? t.statusNotRec : t.statusModerate;\n          }\n          ev = os;\n          measured = true;\n        }\n      }\n    }\n\n    const _sh1 = isSSE(_az(swellD)) ? swellH : 0;\n    const _r2H = (mH.secondary_swell_wave_height && mH.secondary_swell_wave_direction) ? Number(mH.secondary_swell_wave_height[idx] || 0) : 0;\n    const _r2D = mH.secondary_swell_wave_direction ? Number(mH.secondary_swell_wave_direction[idx]) : null;\n    const _sh2 = Math.max(isSSE(_az(s2D)) ? s2H : 0, isSSE(_az(_r2D)) ? _r2H : 0);\n    const _sH = Math.max(_sh1, _sh2);\n    const _sD = _sh1 >= _sh2 ? swellD : (isSSE(_az(s2D)) ? s2D : _r2D);\n    const showH = _sH >= 0.15 ? _sH : 0.2;\n    const showCard = _sH >= 0.15 ? degToCard(_sD) : 'S';\n\n    return { spot, ev, measured, waveH: showH, waveCard: showCard, temp: Math.round(temp) };\n  }\n\n  \n  \/* pt-PT: virgula decimal. Em \/en\/ mantem ponto. Igual ao das subpaginas. *\/\n  function glideNum(v, dec) {\n    if (v == null || isNaN(v)) return \"--\";\n    const n = Number(v).toFixed(dec == null ? 1 : dec);\n    return isEn ? n : n.replace(\".\", \",\");\n  }\n\n  async function loadHomeSpots() {\n    try {\n      const obs = await getStation();\n      const wg = await getWGObs();\n      const spotResults = await Promise.all(SPOTS.map(async (spot) => {\n        try {\n          return await loadSpot(spot, obs, wg);\n        } catch (err) {\n          return {\n            spot,\n            ev: { status: \"green\", label: t.statusGood, wind: 1.0, card: isEn ? \"SW\" : \"SO\", arrow: \"\u2197\", waveCard: isEn ? \"SW\" : \"SO\" },\n            measured: false, waveH: 0.6, waveCard: isEn ? \"SW\" : \"SO\", temp: 24\n          };\n        }\n      }));\n      renderHomeGrid(spotResults);\n    } catch (e) {\n      console.warn(\"Erro ao carregar spots na homepage:\", e);\n    }\n  }\n\n  function renderHomeGrid(items) {\n    const el = document.getElementById(\"glide-homepage-weather-widget\");\n    if (!el) return;\n\n    const thermoSvg = `<svg class=\"glide-thermo-icon\" viewBox=\"0 -1.5 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\"\/><\/svg>`;\n\n    el.innerHTML = `\n      <div class=\"glide-home-header\">\n        <h2>${t.title}<\/h2>\n        <p>${t.subtitle}<\/p>\n      <\/div>\n\n      <div class=\"glide-home-grid\">\n        ${items.map(({ spot, ev, measured, waveH, waveCard, temp }) => {\n                    return `\n          <a href=\"${spot.link}\" class=\"glide-spot-card-compact\">\n            <div class=\"glide-card-top\">\n              <div class=\"glide-card-info\">\n                <h3>${spot.name}<\/h3>\n                <span>${spot.location}<\/span>\n              <\/div>\n              <div class=\"glide-live-badge ${ev.status}\">\n                <span class=\"glide-live-dot\"><\/span>\n                <span>${ev.label}<\/span>\n              <\/div>\n            <\/div>\n            <div class=\"glide-metrics-row\">\n              <div class=\"glide-metric-item\">\n                <span class=\"glide-metric-title\">\n                  <span>${t.wind}<\/span>\n                <\/span>\n                <span class=\"glide-metric-value\">${glideNum(ev.wind)} <small style=\"font-size:0.62rem;\">kts<\/small><\/span>\n                <span class=\"glide-metric-sub\"><span class=\"glide-sub-arrow\">${ev.arrow}<\/span> <span>${ev.card}<\/span><\/span>\n              <\/div>\n              <div class=\"glide-metric-item\">\n                <span class=\"glide-metric-title\">\n                  <span>${t.swell}<\/span>\n                <\/span>\n                <span class=\"glide-metric-value\">${glideNum(waveH)} <small style=\"font-size:0.62rem;\">m<\/small><\/span>\n                <span class=\"glide-metric-sub\"><span class=\"glide-sub-arrow\">${getWindArrow(waveCard)}<\/span> <span>${waveCard}<\/span><\/span>\n              <\/div>\n              <div class=\"glide-metric-item\">\n                <span class=\"glide-metric-title\">\n                  <span>${t.temp}<\/span>\n                <\/span>\n                <span class=\"glide-metric-value\">${temp}\u00b0<small style=\"font-size:0.62rem;\">C<\/small><\/span>\n                <span class=\"glide-metric-sub\">${thermoSvg}<\/span>\n              <\/div>\n            <\/div>\n          <\/a>\n        `;}).join(\"\")}\n      <\/div>\n\n      <div class=\"glide-home-footer\">\n        <div class=\"glide-home-disclaimer\">\n          <p>${t.disclaimer1}<\/p>\n          <p><strong>${t.disclaimer2}<\/strong><\/p>\n        <\/div>\n        <div class=\"glide-home-brand\">${t.powered}<\/div>\n      <\/div>\n    `;\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", loadHomeSpots);\n  } else {\n    loadHomeSpots();\n  }\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>GLIDE SUP TOURS \u2022 MADEIRA Explore Madeira&#8217;s Coast on SUP Guided tours for all experience levels. Choose a tour View tours Small groups Equipment included All tours are subject to sea conditions Ocean Experiences Our Activities Stand Up Paddle is more than a sport \u2014 it is a way of living the ocean. Discover the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_joinchat":[],"footnotes":""},"class_list":["post-732","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/glidesuptours.pt\/en\/wp-json\/wp\/v2\/pages\/732","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/glidesuptours.pt\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/glidesuptours.pt\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/glidesuptours.pt\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/glidesuptours.pt\/en\/wp-json\/wp\/v2\/comments?post=732"}],"version-history":[{"count":280,"href":"https:\/\/glidesuptours.pt\/en\/wp-json\/wp\/v2\/pages\/732\/revisions"}],"predecessor-version":[{"id":3242,"href":"https:\/\/glidesuptours.pt\/en\/wp-json\/wp\/v2\/pages\/732\/revisions\/3242"}],"wp:attachment":[{"href":"https:\/\/glidesuptours.pt\/en\/wp-json\/wp\/v2\/media?parent=732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}