{"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-02-02T16:40:42","modified_gmt":"2026-02-02T16:40:42","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          Accetta i cookie per caricare la mappa\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      <div class=\"video-consent-pill\" id=\"afterMapConsentPill\" aria-hidden=\"true\">\r\n        Accetta i cookie per caricare il video\r\n      <\/div>\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: url('MAP_POSTER_URL');\r\n\r\n    \/* Poster placeholder video prima del consenso video *\/\r\n    --video-poster: url('VIDEO_POSTER_URL');\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-card.is-video-loaded .video-consent-pill{ opacity: 0; }\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  const vals = [\r\n    getCookie('cmplz_marketing'),\r\n    getCookie('cmplz_statistics'),\r\n    getCookie('cmplz_preferences'),\r\n    getCookie('cmplz_functional')\r\n  ].map(v => (v || '').toLowerCase());\r\n\r\n  return vals.includes('allow') || vals.includes('yes') || vals.includes('true') || vals.includes('1');\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 (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 (mapsBootstrapped) return;\r\n  mapsBootstrapped = true;\r\n\r\n  await loadLeaflet();\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      modal.setAttribute('aria-hidden','false');\r\n      modalLocked.style.display = 'flex';\r\n      return;\r\n    }\r\n\r\n    try { await bootstrapMaps(); } catch(e) {}\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  const poll = setInterval(async () => {\r\n    if (hasMapConsent()) {\r\n      clearInterval(poll);\r\n      try { await bootstrapMaps(); } catch(e) {}\r\n    }\r\n  }, 600);\r\n  setTimeout(()=> clearInterval(poll), 120000);\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\r\n  \/* \u2705 ALLINEATO A COMPLIANZ: categorie realmente usate *\/\r\n  const REQUIRED_COOKIES = [\r\n    'cmplz_marketing',\r\n    'cmplz_statistics',\r\n    'cmplz_preferences',\r\n    'cmplz_functional'\r\n  ];\r\n\r\n  function hasYoutubeConsent(){\r\n    \/\/ 1) Consenso per categoria (marketing\/statistics\/preferences\/functional)\r\n    const anyCategoryAllowed = REQUIRED_COOKIES.some(c => {\r\n      const v = getCookie(c);\r\n      return v ? isTruthy(v) : false;\r\n    });\r\n    if (anyCategoryAllowed) return true;\r\n\r\n    \/\/ 2) Fallback: stato globale (se presente)\r\n    const status = getCookie('cmplz_consent_status');\r\n    if (status) return isTruthy(status);\r\n\r\n    return false;\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  setTimeout(() => clearInterval(poll), 120000);\r\n})();\r\n<\/script>\r\n\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":43,"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/pages\/1125\/revisions"}],"predecessor-version":[{"id":1701,"href":"https:\/\/bergold.it\/en\/wp-json\/wp\/v2\/pages\/1125\/revisions\/1701"}],"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}]}}