{"id":1125,"date":"2025-10-14T15:05:57","date_gmt":"2025-10-14T15:05:57","guid":{"rendered":"https:\/\/bergold.it\/?page_id=1125"},"modified":"2026-09-15T11:04:04","modified_gmt":"2026-09-15T11:04:04","slug":"dove-siamo","status":"publish","type":"page","link":"https:\/\/bergold.it\/en\/dove-siamo\/","title":{"rendered":"Where we are"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1125\" class=\"elementor elementor-1125\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c14b1e3 e-con-full e-flex e-con e-parent\" data-id=\"c14b1e3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cf16ddb elementor-widget elementor-widget-html\" data-id=\"cf16ddb\" 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<!-- ====== SFONDO MAPPA CONTINUO (UNICO, FIXED) ====== -->\r\n<div id=\"satStoryBg\" class=\"story-fixed-bg is-poster\" aria-hidden=\"true\"><\/div>\r\n\r\n<!-- ====== WRAPPER CONTENUTI (hero + video) ====== -->\r\n<section class=\"map-story map-locked\" id=\"mapStory\">\r\n  <!-- ====== HERO CON MAPPA SATELLITARE (sotto header) ====== -->\r\n  <div class=\"hero-map\" id=\"heroMap\">\r\n    <div class=\"hero-map__card\">\r\n      <!-- Colonna sinistra: titolo + descrizione -->\r\n      <article class=\"hero-map__left\">\r\n        <h1 class=\"hero-title\">Un luogo meraviglioso<\/h1>\r\n\r\n        <!-- Testo \u201cripulito\u201d e spezzato in paragrafi per una lettura pi\u00f9 bella -->\r\n        <div class=\"hero-copy\" aria-label=\"Descrizione\">\r\n          <p class=\"hero-desc\">\r\n            L\u2019azienda agricola Frammartino si trova immersa nella meravigliosa e incontaminata campagna di Casignana,\r\n            nella Citt\u00e0 Metropolitana di Reggio Calabria.\r\n          <\/p>\r\n          <p class=\"hero-desc\">\r\n            L\u2019Azienda \u00e8 situata nell\u2019area che, a livello mondiale, \u00e8 tra le pi\u00f9 vocate per la produzione di bergamotti\r\n            d\u2019eccellenza: il basso Ionio della Calabria.\r\n          <\/p>\r\n          <p class=\"hero-desc\">\r\n            Dal 2003 opera per la salvaguardia della coltura del bergamotto. In quell\u2019anno, insieme ad altri 24 soci,\r\n            ha costituito l\u2019associazione Unionberg, che oggi riunisce oltre 400 coltivatori della provincia di Reggio Calabria\r\n            e presiede il Consorzio di Tutela del bergamotto.\r\n          <\/p>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <!-- Colonna destra: mappa satellitare -->\r\n      <div class=\"hero-map__right\">\r\n        <div id=\"satMap\" aria-label=\"Mappa satellitare (clicca per aprire)\"><\/div>\r\n\r\n        <!-- Overlay click (apre la modal SOLO se sbloccata) -->\r\n        <button class=\"map-cover\" type=\"button\" aria-controls=\"mapModal\" aria-expanded=\"false\">\r\n          Apri mappa\r\n        <\/button>\r\n\r\n        <!-- Istruzione -->\r\n        <div class=\"map-instruction\" aria-hidden=\"true\">\r\n          <span class=\"mi-text\">Clicca per aprire la mappa<\/span>\r\n        <\/div>\r\n\r\n        <!-- Pill \u201cconsenso\u201d (solo se bloccata) -->\r\n        <div class=\"map-consent-pill\" id=\"mapConsentPill\" aria-hidden=\"true\">\r\n          Abilita i contenuti esterni in Gestisci consenso\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- ====== VIDEO DOPO LA MAPPA (PICCOLO + BORDO VERDE, SENZA TESTI) ====== -->\r\n  <div class=\"video-section\" id=\"afterMapVideoSection\" aria-label=\"Video\">\r\n    <div class=\"video-card\" id=\"afterMapVideoWrap\">\r\n      <div class=\"video-mount\" id=\"afterMapVideoMount\" aria-hidden=\"true\"><\/div>\r\n\r\n      <button type=\"button\" class=\"video-consent-pill\" id=\"afterMapConsentPill\">Gestisci consenso per vedere il video YouTube<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== Modal mappa full-screen (interattiva) ===== -->\r\n<div class=\"map-modal\" id=\"mapModal\" aria-hidden=\"true\" role=\"dialog\" aria-label=\"Mappa satellitare interattiva\">\r\n  <div class=\"map-modal__backdrop\" data-close-modal><\/div>\r\n  <div class=\"map-modal__panel\" role=\"document\">\r\n    <button class=\"map-modal__cta-close\" type=\"button\" aria-label=\"Chiudi mappa\" data-close-modal>Chiudi mappa<\/button>\r\n    <div id=\"satMapModal\"><\/div>\r\n\r\n    <!-- Se l\u2019utente prova ad aprire senza consenso -->\r\n    <div class=\"map-modal__locked\" id=\"mapModalLocked\" aria-hidden=\"true\">\r\n      <div class=\"map-modal__locked-box\">\r\n        <strong>Contenuto esterno<\/strong><br>\r\n        Per caricare la mappa, accetta i cookie.\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n  :root{\r\n    --header-offset: 0px;\r\n    --card-max: 1200px;\r\n    --radius-outer: 28px;\r\n    --radius-inner: 22px;\r\n    --shadow-lg: 0 20px 55px rgba(0,0,0,.14);\r\n    --muted: #4a4a4a;\r\n    --brand: #b6cd43;\r\n    --bg-zoom: 9;\r\n    --hero-extra: 140px;\r\n    --map-pad: clamp(10px, 1.6vw, 16px);\r\n\r\n    \/* Poster (screenshot mappa) quando NON c\u2019\u00e8 consenso *\/\r\n    --map-poster: none;\r\n\r\n    \/* Poster placeholder video prima del consenso video *\/\r\n    --video-poster: none;\r\n  }\r\n\r\n  html, body{ overflow-x:hidden; }\r\n\r\n  \/* =========================\r\n     SFONDO MAPPA UNICO (FIXED) -> CONTINUATIVO\r\n     ========================= *\/\r\n  .story-fixed-bg{\r\n    position: fixed;\r\n    inset: 0;\r\n    z-index: 0;\r\n    pointer-events: none;\r\n    opacity: 0;\r\n    transition: opacity .18s ease;\r\n    background: #e9ece9;\r\n  }\r\n  body.story-bg-on .story-fixed-bg{ opacity: 1; }\r\n\r\n  \/* Se NON c\u2019\u00e8 consenso -> poster (non ripete, \u00e8 unico) *\/\r\n  .story-fixed-bg.is-poster{\r\n    background-image: var(--map-poster);\r\n    background-size: cover;\r\n    background-position: center;\r\n    background-repeat: no-repeat;\r\n    filter: brightness(.85) contrast(1.05) saturate(1.05);\r\n  }\r\n\r\n  \/* =========================\r\n     WRAPPER CONTENUTI sopra lo sfondo\r\n     ========================= *\/\r\n  .map-story{\r\n    margin-top: var(--header-offset);\r\n    margin-left: calc(50% - 50vw);\r\n    margin-right: calc(50% - 50vw);\r\n    position: relative;\r\n    z-index: 1; \/* sopra lo sfondo fixed *\/\r\n  }\r\n\r\n  \/* =========================\r\n     HERO MAP\r\n     ========================= *\/\r\n  .hero-map{\r\n    padding: clamp(24px, 4vw, 40px);\r\n    min-height: clamp(640px, calc(100vh - var(--header-offset) + var(--hero-extra)), 1600px);\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    scroll-margin-top: calc(var(--header-offset) + 12px);\r\n  }\r\n\r\n  .hero-map__card{\r\n    max-width: var(--card-max);\r\n    width: min(92vw, var(--card-max));\r\n    background: #fff;\r\n    border-radius: var(--radius-outer);\r\n    overflow: hidden;\r\n    box-shadow: var(--shadow-lg);\r\n    display: grid;\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n  .hero-map__left{ padding: clamp(22px, 4.5vw, 48px); }\r\n\r\n  .hero-title{\r\n    font-size: clamp(28px, 5vw, 44px);\r\n    line-height: 1.15;\r\n    margin: 0 0 14px;\r\n    color: var(--brand);\r\n    font-weight: 900;\r\n    letter-spacing: .2px;\r\n    white-space: nowrap;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n  }\r\n\r\n  \/* piccolo dettaglio \u201cpulito\u201d sotto al titolo *\/\r\n  .hero-title::after{\r\n    content:\"\";\r\n    display:block;\r\n    width: 86px;\r\n    height: 3px;\r\n    margin-top: 12px;\r\n    background: var(--brand);\r\n    border-radius: 999px;\r\n    opacity: .85;\r\n  }\r\n\r\n  \/* wrapper copy per spacing coerente *\/\r\n  .hero-copy{\r\n    max-width: 60ch;\r\n  }\r\n\r\n  \/* \u2705 paragrafi pi\u00f9 \u201cariosi\u201d e leggibili *\/\r\n  .hero-desc{\r\n    font-size: clamp(16px, 2vw, 18px);\r\n    line-height: 1.75;\r\n    margin: 0 0 12px;\r\n    color: var(--muted);\r\n\r\n    text-align: justify;\r\n    text-justify: inter-word;\r\n    hyphens: auto;\r\n    -webkit-hyphens: auto;\r\n    text-wrap: pretty;\r\n  }\r\n  .hero-copy .hero-desc:last-child{ margin-bottom: 0; }\r\n\r\n  @media (max-width: 640px){\r\n    .hero-desc{ text-align: left; }\r\n  }\r\n\r\n  .hero-map__right{\r\n    position: relative;\r\n    min-height: 340px;\r\n    padding: var(--map-pad);\r\n    overflow: visible;\r\n  }\r\n\r\n  #satMap{\r\n    width: 100%;\r\n    height: clamp(300px, 46vh, 560px);\r\n    border-radius: var(--radius-inner);\r\n    overflow: hidden;\r\n    box-shadow: 0 10px 30px rgba(0,0,0,.10) inset;\r\n    outline: 1px solid rgba(0,0,0,.05);\r\n    background: #111;\r\n  }\r\n  \/* se bloccata -> poster nella preview *\/\r\n  .map-story.map-locked #satMap{\r\n    background-image: var(--map-poster);\r\n    background-size: cover;\r\n    background-position: center;\r\n    background-repeat: no-repeat;\r\n  }\r\n\r\n  .map-cover{\r\n    position: absolute;\r\n    inset: var(--map-pad);\r\n    border-radius: var(--radius-inner);\r\n    background: linear-gradient(to bottom, rgba(0,0,0,0) 60%, rgba(0,0,0,.35));\r\n    border: none;\r\n    cursor: pointer;\r\n    color: transparent;\r\n    z-index: 10;\r\n    transition: transform .15s ease, box-shadow .2s ease, background .2s ease;\r\n  }\r\n  .map-cover:hover{\r\n    transform: translateY(-1px);\r\n    box-shadow: 0 10px 22px rgba(0,0,0,.22);\r\n    background: linear-gradient(to bottom, rgba(0,0,0,0) 55%, rgba(182,205,67,0.78));\r\n  }\r\n\r\n  .map-instruction{\r\n    position: absolute;\r\n    left: 50%;\r\n    bottom: calc(var(--map-pad) - 2px);\r\n    transform: translateX(-50%);\r\n    z-index: 9999;\r\n    pointer-events: none;\r\n    max-width: calc(100% - (var(--map-pad) * 2));\r\n    display: flex;\r\n    justify-content: center;\r\n    animation: mapPulse 2s ease-in-out infinite;\r\n  }\r\n  .map-instruction .mi-text{\r\n    background: rgba(0,0,0,.62);\r\n    color: #fff;\r\n    border: 2px solid var(--brand);\r\n    border-radius: 999px;\r\n    padding: 9px 14px;\r\n    font-size: 12px;\r\n    font-weight: 900;\r\n    letter-spacing: .02em;\r\n    text-transform: uppercase;\r\n    box-shadow: 0 6px 16px rgba(0,0,0,.25);\r\n    backdrop-filter: blur(2px);\r\n  }\r\n  @keyframes mapPulse{\r\n    0%,100%{ transform: translateX(-50%) scale(1); }\r\n    50%{ transform: translateX(-50%) scale(1.04); }\r\n  }\r\n\r\n  .map-consent-pill{\r\n    position: absolute;\r\n    left: 50%;\r\n    top: calc(var(--map-pad) + 12px);\r\n    transform: translateX(-50%);\r\n    z-index: 9999;\r\n    pointer-events: none;\r\n\r\n    background: rgba(0,0,0,.62);\r\n    color: #fff;\r\n    border: 2px solid var(--brand);\r\n    border-radius: 999px;\r\n    padding: 9px 14px;\r\n    font-size: 12px;\r\n    font-weight: 900;\r\n    letter-spacing: .02em;\r\n    text-transform: uppercase;\r\n    box-shadow: 0 6px 16px rgba(0,0,0,.25);\r\n    backdrop-filter: blur(2px);\r\n\r\n    opacity: 0;\r\n    transition: opacity .2s ease, transform .2s ease;\r\n  }\r\n  .map-story.map-locked .map-consent-pill{ opacity: 1; }\r\n  .map-consent-pill.ping{ transform: translateX(-50%) scale(1.06); }\r\n\r\n  @media (min-width: 960px){\r\n    .hero-map__card{ grid-template-columns: 1fr 1.25fr; }\r\n    .hero-map__left{ padding: clamp(28px, 5vw, 64px); }\r\n    #satMap{ height: min(68vh, 620px); }\r\n  }\r\n\r\n  \/* =========================\r\n     VIDEO (piccolo, bordo verde, niente testi)\r\n     ========================= *\/\r\n  .video-section{\r\n    padding: 0 0 clamp(18px, 4vw, 44px);\r\n  }\r\n\r\n  .video-card{\r\n    width: min(92vw, 980px);\r\n    margin: 0 auto;\r\n    border: 2px solid var(--brand);\r\n    border-radius: var(--radius-outer);\r\n    box-shadow: var(--shadow-lg);\r\n    overflow: hidden;\r\n    position: relative;\r\n\r\n    background: #000;\r\n    background-image: var(--video-poster);\r\n    background-size: cover;\r\n    background-position: center;\r\n    background-repeat: no-repeat;\r\n\r\n    aspect-ratio: 16 \/ 9;\r\n  }\r\n  @supports not (aspect-ratio: 1 \/ 1){\r\n    .video-card{ height: 0; padding-top: 56.25%; }\r\n  }\r\n\r\n  .video-mount{\r\n    position: absolute; inset: 0;\r\n    width: 100%; height: 100%;\r\n  }\r\n  .video-mount iframe{\r\n    position: absolute; inset: 0;\r\n    width: 100%; height: 100%;\r\n    border: 0;\r\n    display: block;\r\n  }\r\n\r\n  .video-consent-pill{\r\n    position: absolute;\r\n    left: 50%;\r\n    bottom: 12px;\r\n    transform: translateX(-50%);\r\n    z-index: 2;\r\n    pointer-events: none;\r\n\r\n    background: rgba(0,0,0,.62);\r\n    color: #fff;\r\n    border: 2px solid var(--brand);\r\n    border-radius: 999px;\r\n    padding: 9px 14px;\r\n    font-size: 12px;\r\n    font-weight: 900;\r\n    letter-spacing: .02em;\r\n    text-transform: uppercase;\r\n    box-shadow: 0 6px 16px rgba(0,0,0,.25);\r\n    backdrop-filter: blur(2px);\r\n\r\n    opacity: 1;\r\n    transition: opacity .2s ease;\r\n  }\r\n  .video-consent-pill{pointer-events:auto; cursor:pointer;}\r\n  .video-card.is-video-loaded .video-consent-pill{ display:none; }\r\n\r\n  @media (max-width: 640px){\r\n    .video-card{ width: min(92vw, 560px); }\r\n    .video-consent-pill{ font-size: 11px; bottom: 10px; }\r\n  }\r\n\r\n  \/* ===== Modal ===== *\/\r\n  .map-modal{ position: fixed; inset:0; display:none; z-index: 9999; }\r\n  .map-modal[aria-hidden=\"false\"]{ display:block; }\r\n  .map-modal__backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.55); }\r\n  .map-modal__panel{\r\n    position:relative; inset:0; margin:clamp(12px,2vw,24px);\r\n    background:#fff; border-radius: 18px; overflow:hidden;\r\n    height: calc(100% - clamp(24px,4vw,48px));\r\n    box-shadow: 0 30px 80px rgba(0,0,0,.35);\r\n  }\r\n  .map-modal__cta-close{\r\n    position:absolute; left:50%; bottom:14px; transform:translateX(-50%);\r\n    z-index: 3000;\r\n    padding:12px 20px; border-radius:999px;\r\n    background: var(--brand); color:#fff; border:2px solid var(--brand);\r\n    font-weight:900; letter-spacing:.2px; cursor:pointer;\r\n    box-shadow:0 6px 18px rgba(0,0,0,.18);\r\n    transition: transform .15s ease, box-shadow .2s ease, color .15s ease;\r\n  }\r\n  .map-modal__cta-close:hover{\r\n    transform:translateX(-50%) translateY(-1px);\r\n    box-shadow:0 10px 22px rgba(0,0,0,.22);\r\n    color:#000;\r\n  }\r\n  #satMapModal{ position:absolute; inset:0; }\r\n\r\n  .map-modal__locked{\r\n    position:absolute; inset:0;\r\n    display:none;\r\n    align-items:center;\r\n    justify-content:center;\r\n    z-index: 2000;\r\n    background: rgba(255,255,255,.86);\r\n    backdrop-filter: blur(4px);\r\n    text-align:center;\r\n    padding: 18px;\r\n  }\r\n  .map-modal__locked-box{\r\n    border: 2px solid var(--brand);\r\n    border-radius: 999px;\r\n    padding: 12px 16px;\r\n    background: #fff;\r\n    box-shadow: 0 14px 34px rgba(0,0,0,.14);\r\n    color: #111;\r\n    font-weight: 900;\r\n    letter-spacing: .02em;\r\n    text-transform: uppercase;\r\n    font-size: 12px;\r\n    max-width: 92%;\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n\/* ===== 1) Offset dinamico per stare SEMPRE sotto l'header ===== *\/\r\n(function(){\r\n  const header =\r\n    document.querySelector('#masthead') ||\r\n    document.querySelector('.site-header') ||\r\n    document.querySelector('header[role=\"banner\"]') ||\r\n    document.querySelector('header');\r\n  const adminBar = document.getElementById('wpadminbar');\r\n\r\n  function setHeaderOffset(){\r\n    const h = header ? header.getBoundingClientRect().height : 0;\r\n    const a = adminBar ? adminBar.getBoundingClientRect().height : 0;\r\n    document.documentElement.style.setProperty('--header-offset', (h + a) + 'px');\r\n    if (header) {\r\n      header.style.position = header.style.position || 'relative';\r\n      header.style.zIndex = Math.max(parseInt(getComputedStyle(header).zIndex)||10, 1000);\r\n    }\r\n  }\r\n  window.addEventListener('load', setHeaderOffset);\r\n  window.addEventListener('resize', setHeaderOffset);\r\n  window.addEventListener('scroll', setHeaderOffset, { passive:true });\r\n  if (window.ResizeObserver && header){ new ResizeObserver(setHeaderOffset).observe(header); }\r\n})();\r\n\r\n\/* ===== Mostra lo sfondo fixed SOLO quando la sezione \u00e8 in vista ===== *\/\r\n(function(){\r\n  const story = document.getElementById('mapStory');\r\n  const bg = document.getElementById('satStoryBg');\r\n  if (!story || !bg) return;\r\n\r\n  const io = new IntersectionObserver((entries) => {\r\n    const on = entries.some(e => e.isIntersecting);\r\n    document.body.classList.toggle('story-bg-on', on);\r\n  }, { threshold: 0.01 });\r\n\r\n  io.observe(story);\r\n})();\r\n\r\n\/* ===== Utils cookie ===== *\/\r\nfunction getCookie(name){\r\n  const found = document.cookie.split('; ').find(r => r.startsWith(name + '='));\r\n  return found ? decodeURIComponent(found.split('=')[1]) : '';\r\n}\r\nfunction isTruthy(v){\r\n  return ['allow', 'yes', 'true', '1'].includes(String(v || '').toLowerCase());\r\n}\r\n\r\n\/* ===== Consenso mappa ===== *\/\r\nfunction hasMapConsent(){\r\n  return typeof window.cmplz_has_consent === 'function' && window.cmplz_has_consent('marketing');\r\n}\r\n\r\n\/* ===== Dati sedi ===== *\/\r\nconst SITES = [\r\n  { name: 'Sede impianto di trasformazione', address: 'Contrada Sandrechi 43\/B, 89034 \u2013 Bovalino (RC)', coords: [38.1649, 16.1619] },\r\n  { name: 'Sede agrumeto', address: 'Loc. Palazzi (S.S. 106 km 82\u201383), 89030 \u2013 Casignana (RC)', coords: [38.117603, 16.158088] }\r\n];\r\n\r\n\/* ===== Loader Leaflet (solo dopo consenso) ===== *\/\r\nlet __leafletPromise = null;\r\nfunction loadLeaflet(){\r\n  if (!hasMapConsent()) return Promise.reject(new Error(\"Consenso non presente\"));\r\n  if (window.L) return Promise.resolve();\r\n  if (__leafletPromise) return __leafletPromise;\r\n\r\n  __leafletPromise = new Promise((resolve, reject) => {\r\n    const cssId = 'leaflet-css';\r\n    if (!document.getElementById(cssId)) {\r\n      const link = document.createElement('link');\r\n      link.id = cssId;\r\n      link.rel = 'stylesheet';\r\n      link.href = 'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css';\r\n      link.integrity = 'sha256-p4NxAoJBhIIN+hmNHrzRCf9tD\/miZyoHS5obTRR9BMY=';\r\n      link.crossOrigin = '';\r\n      document.head.appendChild(link);\r\n    }\r\n\r\n    const jsId = 'leaflet-js';\r\n    if (document.getElementById(jsId)) {\r\n      const t0 = Date.now();\r\n      const timer = setInterval(() => {\r\n        if (window.L) { clearInterval(timer); resolve(); }\r\n        if (Date.now() - t0 > 12000) { clearInterval(timer); reject(new Error('Leaflet timeout')); }\r\n      }, 120);\r\n      return;\r\n    }\r\n\r\n    const script = document.createElement('script');\r\n    script.id = jsId;\r\n    script.src = 'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js';\r\n    script.integrity = 'sha256-20nQCchB9co0qIjJZRGuk2\/Z9VM+kNiyxNV1lvTlZBo=';\r\n    script.crossOrigin = '';\r\n    script.async = true;\r\n    script.onload = () => resolve();\r\n    script.onerror = () => reject(new Error('Impossibile caricare Leaflet'));\r\n    document.head.appendChild(script);\r\n  });\r\n\r\n  return __leafletPromise;\r\n}\r\n\r\n\/* ===== Mappe ===== *\/\r\nlet storyBgMap = null;\r\nlet previewMap = null;\r\nlet modalMap = null;\r\nlet modalMapInited = false;\r\nlet mapsBootstrapped = false;\r\n\r\nfunction getCenter(){\r\n  return [\r\n    (SITES[0].coords[0] + SITES[1].coords[0]) \/ 2,\r\n    (SITES[0].coords[1] + SITES[1].coords[1]) \/ 2\r\n  ];\r\n}\r\n\r\nfunction initStoryBgMap(){\r\n  if (storyBgMap) return;\r\n\r\n  const bgEl = document.getElementById('satStoryBg');\r\n  const center = getCenter();\r\n  const BG_ZOOM = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--bg-zoom')) || 9;\r\n\r\n  storyBgMap = L.map('satStoryBg', {\r\n    attributionControl: false,\r\n    zoomControl: false,\r\n    scrollWheelZoom: false,\r\n    dragging: false,\r\n    touchZoom: false,\r\n    doubleClickZoom: false,\r\n    boxZoom: false,\r\n    keyboard: false\r\n  }).setView(center, BG_ZOOM);\r\n\r\n  L.tileLayer('https:\/\/server.arcgisonline.com\/ArcGIS\/rest\/services\/World_Imagery\/MapServer\/tile\/{z}\/{y}\/{x}', {\r\n    maxZoom: 19\r\n  }).addTo(storyBgMap);\r\n\r\n  bgEl.classList.remove('is-poster');\r\n\r\n  const invalidate = ()=> storyBgMap && storyBgMap.invalidateSize();\r\n  window.addEventListener('load', invalidate);\r\n  window.addEventListener('resize', ()=> setTimeout(invalidate, 150));\r\n}\r\n\r\nfunction initPreviewMap(){\r\n  previewMap = L.map('satMap', {\r\n    zoomControl: false,\r\n    scrollWheelZoom: false,\r\n    dragging: false,\r\n    touchZoom: false,\r\n    doubleClickZoom: false,\r\n    boxZoom: false,\r\n    keyboard: false\r\n  });\r\n\r\n  L.tileLayer('https:\/\/server.arcgisonline.com\/ArcGIS\/rest\/services\/World_Imagery\/MapServer\/tile\/{z}\/{y}\/{x}', {\r\n    attribution: '&copy; <a href=\"https:\/\/www.esri.com\/\" target=\"_blank\" rel=\"noopener\">Esri<\/a>, Maxar, Earthstar Geographics',\r\n    maxZoom: 19\r\n  }).addTo(previewMap);\r\n\r\n  const bounds = [];\r\n  SITES.forEach(s => {\r\n    bounds.push(s.coords);\r\n    L.marker(s.coords).addTo(previewMap).bindPopup(`<strong>${s.name}<\/strong><br>${s.address}`);\r\n  });\r\n  previewMap.fitBounds(bounds, { padding: [30, 30] });\r\n}\r\n\r\nfunction initModalMap(){\r\n  if (modalMapInited) { setTimeout(()=> modalMap && modalMap.invalidateSize(), 50); return; }\r\n  modalMapInited = true;\r\n\r\n  modalMap = L.map('satMapModal', {\r\n    zoomControl: true,\r\n    scrollWheelZoom: true,\r\n    dragging: true\r\n  });\r\n\r\n  L.tileLayer('https:\/\/server.arcgisonline.com\/ArcGIS\/rest\/services\/World_Imagery\/MapServer\/tile\/{z}\/{y}\/{x}', {\r\n    attribution: '&copy; <a href=\"https:\/\/www.esri.com\/\" target=\"_blank\" rel=\"noopener\">Esri<\/a>, Maxar, Earthstar Geographics',\r\n    maxZoom: 19\r\n  }).addTo(modalMap);\r\n\r\n  const bounds = [];\r\n  SITES.forEach(s => {\r\n    bounds.push(s.coords);\r\n    L.marker(s.coords).addTo(modalMap).bindPopup(`<strong>${s.name}<\/strong><br>${s.address}`);\r\n  });\r\n  modalMap.fitBounds(bounds, { padding: [50, 50] });\r\n  setTimeout(()=> modalMap.invalidateSize(), 200);\r\n}\r\n\r\nasync function bootstrapMaps(){\r\n  if (!hasMapConsent() || mapsBootstrapped) return;\r\n  mapsBootstrapped = true;\r\n\r\n  await loadLeaflet();\r\n  if (!hasMapConsent()) { mapsBootstrapped = false; return; }\r\n\r\n  document.getElementById('mapStory')?.classList.remove('map-locked');\r\n  initStoryBgMap();\r\n  initPreviewMap();\r\n}\r\n\r\n\/* ===== Gestione click + stato consenso ===== *\/\r\n(function(){\r\n  const story = document.getElementById('mapStory');\r\n  const coverBtn = story.querySelector('.map-cover');\r\n  const pill = document.getElementById('mapConsentPill');\r\n\r\n  const modal = document.getElementById('mapModal');\r\n  const modalLocked = document.getElementById('mapModalLocked');\r\n\r\n  function pingPill(){\r\n    if (!pill) return;\r\n    pill.classList.add('ping');\r\n    setTimeout(()=>pill.classList.remove('ping'), 220);\r\n  }\r\n\r\n  coverBtn.addEventListener('click', async () => {\r\n    if (!hasMapConsent()) {\r\n      pingPill();\r\n      if (typeof window.cmplz_set_banner_status === 'function') window.cmplz_set_banner_status('show');\r\n      return;\r\n    }\r\n\r\n    try { await bootstrapMaps(); } catch(e) { return; }\r\n    if (!hasMapConsent()) return;\r\n\r\n    modalLocked.style.display = 'none';\r\n    modal.setAttribute('aria-hidden','false');\r\n    coverBtn.setAttribute('aria-expanded','true');\r\n    initModalMap();\r\n  });\r\n\r\n  function closeModal(){\r\n    modal.setAttribute('aria-hidden','true');\r\n    coverBtn.setAttribute('aria-expanded','false');\r\n    modalLocked.style.display = 'none';\r\n  }\r\n  modal.querySelectorAll('[data-close-modal]').forEach(el=>el.addEventListener('click', closeModal));\r\n  document.addEventListener('keydown', (e)=>{\r\n    if(e.key === 'Escape' && modal.getAttribute('aria-hidden') === 'false'){ closeModal(); }\r\n  });\r\n\r\n  document.addEventListener('DOMContentLoaded', async ()=>{\r\n    if (hasMapConsent()) {\r\n      try { await bootstrapMaps(); } catch(e) {}\r\n    } else {\r\n      story.classList.add('map-locked');\r\n    }\r\n  });\r\n\r\n  function syncMaps(){\r\n    if (hasMapConsent()) {\r\n      bootstrapMaps().catch(() => { mapsBootstrapped = false; });\r\n      return;\r\n    }\r\n    closeModal();\r\n    [storyBgMap, previewMap, modalMap].forEach(map => { if (map) map.remove(); });\r\n    storyBgMap = previewMap = modalMap = null;\r\n    mapsBootstrapped = modalMapInited = false;\r\n    story.classList.add('map-locked');\r\n    document.getElementById('satStoryBg').classList.add('is-poster');\r\n  }\r\n  ['cmplz_status_change','cmplz_enable_category','cmplz_revoke','cmplz_cookie_warning_loaded'].forEach(name => document.addEventListener(name, () => setTimeout(syncMaps, 0)));\r\n  setInterval(syncMaps, 600);\r\n  syncMaps();\r\n})();\r\n\r\n\/* ===== VIDEO (NO autoplay, avvio normale) ===== *\/\r\n(function(){\r\n  const YT_ID = \"WSTtsY0AEyw\"; \/\/ \u2705 nuovo video richiesto\r\n\r\n  const wrap  = document.getElementById('afterMapVideoWrap');\r\n  const mount = document.getElementById('afterMapVideoMount');\r\n  let loaded = false;\r\n  document.getElementById('afterMapConsentPill').addEventListener('click', () => { if (typeof window.cmplz_set_banner_status === 'function') window.cmplz_set_banner_status('show'); });\r\n\r\n  \/* \u2705 ALLINEATO A COMPLIANZ: categorie realmente usate *\/\r\n  function hasYoutubeConsent(){\r\n    return typeof window.cmplz_has_consent === 'function' && window.cmplz_has_consent('marketing');\r\n  }\r\n\r\n  function buildIframe(){\r\n    const iframe = document.createElement('iframe');\r\n    iframe.title = \"Video YouTube\";\r\n    iframe.loading = \"lazy\";\r\n    iframe.allowFullscreen = true;\r\n    iframe.referrerPolicy = \"strict-origin-when-cross-origin\";\r\n    iframe.allow = \"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\";\r\n\r\n    \/\/ NO autoplay: play manuale\r\n    iframe.src =\r\n      \"https:\/\/www.youtube-nocookie.com\/embed\/\" + YT_ID +\r\n      \"?playsinline=1&controls=1&rel=0&modestbranding=1\";\r\n\r\n    mount.innerHTML = \"\";\r\n    mount.appendChild(iframe);\r\n  }\r\n\r\n  function destroyVideo(){\r\n    mount.innerHTML = \"\";\r\n    loaded = false;\r\n    wrap.classList.remove('is-video-loaded');\r\n  }\r\n\r\n  function loadVideoIfAllowed(){\r\n    if (loaded) return;\r\n    if (!hasYoutubeConsent()) return;\r\n\r\n    loaded = true;\r\n    buildIframe();\r\n    wrap.classList.add('is-video-loaded');\r\n  }\r\n\r\n  function onConsentChange(){\r\n    if (hasYoutubeConsent()) loadVideoIfAllowed();\r\n    else if (loaded) destroyVideo();\r\n  }\r\n\r\n  document.addEventListener('DOMContentLoaded', loadVideoIfAllowed);\r\n\r\n  document.addEventListener('cmplz_status_change', onConsentChange);\r\n  document.addEventListener('cmplz_event_marketing', onConsentChange);\r\n  document.addEventListener('cmplz_event_statistics', onConsentChange);\r\n  document.addEventListener('cmplz_event_preferences', onConsentChange);\r\n  document.addEventListener('cmplz_event_functional', onConsentChange);\r\n\r\n  const poll = setInterval(() => {\r\n    if (loaded && hasYoutubeConsent()) return;\r\n    onConsentChange();\r\n  }, 600);\r\n  ['cmplz_enable_category','cmplz_revoke','cmplz_cookie_warning_loaded'].forEach(name => document.addEventListener(name, () => setTimeout(onConsentChange, 0)));\r\n  onConsentChange();\r\n})();\r\n<\/script>\r\n\r\n<script data-category=\"functional\">\r\ndocument.addEventListener('click', function(event){\r\n  const control = event.target.closest('.map-cover, .video-consent-pill');\r\n  if (!control || typeof window.cmplz_has_consent !== 'function' || typeof window.cmplz_set_banner_status !== 'function') return;\r\n  if (!window.cmplz_has_consent('marketing')) window.cmplz_set_banner_status('show');\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\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>Un luogo meraviglioso L\u2019azienda agricola Frammartino si trova immersa nella meravigliosa e incontaminata campagna di Casignana, nella Citt\u00e0 Metropolitana di [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","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":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","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":""}},"footnotes":""},"class_list":["post-1125","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/pages\/1125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/comments?post=1125"}],"version-history":[{"count":49,"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/pages\/1125\/revisions"}],"predecessor-version":[{"id":1915,"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/pages\/1125\/revisions\/1915"}],"wp:attachment":[{"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/media?parent=1125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}