{
  "id": "ahv-page-about-us-mobile",
  "file": "AHV Page About Us Mobile.dc.html",
  "sourceSha256": "55585d519434dd6654ee2d956dd227abb1b36213b4ec58c337ab3680414e2bb3",
  "variant": "mobile",
  "template": "\n<helmet>\n<link href=\"/ahv/fonts/ahv-33eeac48ab44.css\" rel=\"stylesheet\">\n\n<style>\nbody{margin:0;background:#EFE9DA;color:#2A2118;font-family:'Mulish',sans-serif;font-size:17px;line-height:1.7}\na{color:#006038;text-decoration:none}a:hover{color:#004226;text-decoration:underline}\n:focus-visible{outline:3px solid #6B7726;outline-offset:2px;box-shadow:0 0 0 6px rgba(247,244,234,.85)}\na:active,button:active{filter:brightness(.88)}\nbutton{font-family:inherit;cursor:pointer}\nh1,h2,h3,h4{font-weight:400;margin:0}\n@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}\n@media (prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}\n</style>\n<title>Kairali - The Ayurvedic Healing Village</title>\n<meta name=\"description\" content=\"Chi siamo: Kairali – The Ayurvedic Healing Village, ospedale ayurvedico accreditato NABH a Palakkad, Kerala, con programmi terapeutici guidati da medici.\">\n<link rel=\"canonical\" href=\"https://ayurvedichealingvillage.com/it/about-us/\">\n<meta name=\"robots\" content=\"noindex, nofollow\">\n<meta property=\"og:locale\" content=\"it_IT\">\n<meta property=\"og:type\" content=\"article\">\n<meta property=\"og:title\" content=\"Chi siamo\">\n<meta property=\"og:description\" content=\"Chi siamo: Kairali – The Ayurvedic Healing Village, ospedale ayurvedico accreditato NABH a Palakkad, Kerala, con programmi terapeutici guidati da medici.\">\n<meta property=\"og:url\" content=\"https://ayurvedichealingvillage.com/it/about-us/\">\n<meta property=\"og:image\" content=\"https://ayurvedichealingvillage.com/wp-content/uploads/2023/11/our-story.png\">\n<meta property=\"og:image:width\" content=\"1440\">\n<meta property=\"og:image:height\" content=\"524\">\n<meta property=\"og:image:type\" content=\"image/png\">\n<meta property=\"og:site_name\" content=\"Ayurvedic Healing Village\">\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<link rel=\"icon\" href=\"/ahv/assets/img/logo_color-da22eb.svg\" sizes=\"192x192\">\n<script type=\"application/ld+json\">\n{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https://ayurvedichealingvillage.com/it/about-us/\",\"url\":\"https://ayurvedichealingvillage.com/it/about-us/\",\"name\":\"Kairali - The Ayurvedic Healing Village\",\"description\":\"Chi siamo: Kairali – The Ayurvedic Healing Village, ospedale ayurvedico accreditato NABH a Palakkad, Kerala, con programmi terapeutici guidati da medici.\",\"isPartOf\":{\"@id\":\"https://ayurvedichealingvillage.com/it/#website\"},\"inLanguage\":\"it\",\"breadcrumb\":{\"@id\":\"https://ayurvedichealingvillage.com/it/about-us/#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://ayurvedichealingvillage.com/it/about-us/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://ayurvedichealingvillage.com/it/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chi siamo\",\"item\":\"https://ayurvedichealingvillage.com/it/about-us/\"}]},{\"@type\":\"WebSite\",\"@id\":\"https://ayurvedichealingvillage.com/it/#website\",\"url\":\"https://ayurvedichealingvillage.com/it/\",\"name\":\"Kairali — The Ayurvedic Healing Village\",\"inLanguage\":\"it\"}]}\n</script>\n</helmet>\n<div data-screen-label=\"About Us — Mobile\" style=\"max-width:430px;margin:0 auto;background:#F7F4EA;box-shadow:0 0 40px rgba(70,50,20,.15);position:relative;box-sizing:border-box\">\n<a href=\"#main-content\" style=\"position:fixed;left:-9999px;top:12px;z-index:120;background:#5A4420;color:#F7F4EA;padding:14px 24px;border-radius:4px;font-weight:700;font-size:15px\" style-focus=\"left:16px\">Vai al contenuto principale</a>\n<dc-import name=\"AHV Chrome Header\" narrow=\"true\" style=\"position:sticky;top:0;z-index:80\" hint-size=\"100%,64px\"></dc-import>\n<main id=\"main-content\">\n<section style=\"width:min(1220px,94%);margin:0 auto;padding:20px 0 22px\">\n  <nav aria-label=\"Percorso di navigazione\" style=\"font-size:15px;color:#75695A;display:flex;flex-wrap:wrap;gap:0 8px;align-items:center;line-height:1.4\"><a href=\"https://ayurvedichealingvillage.com/it/\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px;min-width:44px\">Home</a><span aria-hidden=\"true\">/</span><span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">Chi siamo</span></nav>\n  <div style=\"padding-top:4px\">\n    <div style=\"font-weight:700;font-size:12px;letter-spacing:2.4px;color:#8F6212;text-transform:uppercase\">Kairali — The Ayurvedic Healing Village · Dal 1908</div>\n    <h1 id=\"page-h1\" style=\"font-family:'Marcellus',serif;font-size:32px;line-height:1.12;margin:10px 0 0;text-wrap:balance\">Chi siamo</h1>\n  </div>\n</section>\n<div style=\"width:min(1220px,94%);margin:0 auto\">\n  <img src=\"/ahv/assets/img/AHV-About-Landscape.webp\" alt=\"Veduta aerea di risaie e palme da cocco nella campagna del Kerala intorno all’ospedale\" width=\"1440\" height=\"524\" style=\"width:100%;height:auto;display:block;border-radius:4px\">\n</div>\n\n<article aria-labelledby=\"page-h1\" style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 0\">\n  <blockquote data-pos=\"/3\" style=\"margin:0;text-align:center;font-family:'Marcellus',serif;font-size:22px;line-height:1.4;color:#2A2118;text-wrap:balance;display:flex;flex-direction:column;align-items:center;gap:12px\">\n    <img src=\"/ahv/assets/img/AHV-About-lotus.svg\" alt=\"\" width=\"95\" height=\"57\" style=\"width:56px;height:auto;display:block\">\n    <p style=\"margin:0\"><strong style=\"font-weight:inherit\">{{ quoteText }}</strong></p>\n  </blockquote>\n\n  <section id=\"introduction\" aria-labelledby=\"intro-h\" style=\"padding:40px 0 0;display:flex;flex-direction:column;gap:18px\">\n    <div>\n      <p style=\"margin:0 0 6px;font-weight:700;font-size:12.5px;letter-spacing:2.4px;color:#8F6212;text-transform:uppercase\">{{ intro.eyebrow }}</p>\n      <h2 id=\"intro-h\" style=\"font-family:'Marcellus',serif;font-size:27px;line-height:1.2;margin:0;text-wrap:balance\">{{ intro.heading }}</h2>\n    </div>\n    <figure data-ahv-banner=\"about-wellness\" style=\"margin:0;width:100%;position:relative;aspect-ratio:448/455;border-radius:4px;overflow:hidden;background:#E0D7C4\"><img src=\"/ahv/assets/img/gallery/a5340555d384edc72099bc9f721bde48ec6e61c57202a233cb9c498d9680b505.webp\" alt=\"Sentiero in pietra che si snoda tra giardini curati fino a un edificio con tetto di tegole tra le palme\" loading=\"lazy\" style=\"position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block\"><figcaption style=\"position:absolute;left:8%;right:8%;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.93);border:1px solid rgba(233,226,211,.9);border-radius:4px;padding:26px 22px;text-align:center;box-sizing:border-box\"><img src=\"/ahv/assets/img/kairali-colorful-logo.webp\" alt=\"Kairali – The Ayurvedic Healing Village\" width=\"150\" height=\"35\" loading=\"lazy\" style=\"width:150px;height:auto;display:block;margin:0 auto 14px\"><strong style=\"display:block;font-family:'Marcellus',serif;font-weight:400;font-size:22px;line-height:1.2;color:#2A2118;text-wrap:balance\">Il miglior ritiro ayurvedico dell’Asia dal 1999</strong><span style=\"display:block;margin-top:12px;font-size:15.5px;line-height:1.6;color:#514A3F\">Kairali-The Ayurvedic Healing Village, a Palakkad (Kerala), è uno spazio olistico unico nel suo genere, che offre terapie ayurvediche tradizionali e autentiche.</span></figcaption></figure>\n    <p style=\"margin:0;font-size:17px;line-height:1.7;text-wrap:pretty\">{{ intro.paragraph }}</p>\n    <a href=\"{{ intro.linkHref }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:44px;font-weight:700;font-size:15.5px\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span>{{ intro.linkText }}</a>\n  </section>\n\n  <section id=\"founder\" aria-labelledby=\"founder-h\" style=\"padding:40px 0 0;margin-top:40px;border-top:1px solid #E0D7C4;display:flex;flex-direction:column;gap:18px\">\n    <div>\n      <p style=\"margin:0 0 6px;font-weight:700;font-size:12.5px;letter-spacing:2.4px;color:#8F6212;text-transform:uppercase\">{{ founder.eyebrow }}</p>\n      <h2 id=\"founder-h\" style=\"font-family:'Marcellus',serif;font-size:27px;line-height:1.2;margin:0;text-wrap:balance\">{{ founder.heading }}</h2>\n    </div>\n    <p style=\"margin:0;font-size:19px;line-height:1.65;border-left:3px solid #C1882C;padding-left:16px;text-wrap:pretty\">{{ founder.lead }}</p>\n    <p style=\"margin:0;font-size:17px;line-height:1.7;text-wrap:pretty\">{{ founder.paragraph }}</p>\n    <a href=\"{{ founder.linkHref }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:44px;font-weight:700;font-size:15.5px\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span>{{ founder.linkText }}</a>\n    <figure style=\"margin:0\">\n      <img src=\"/ahv/assets/img/team-gita1.webp\" alt=\"Gita Ramesh seduta nei giardini di Kairali\" width=\"482\" height=\"618\" loading=\"lazy\" style=\"width:100%;height:auto;display:block;border-radius:4px\">\n      <figcaption style=\"padding-top:12px\">\n        <h3 style=\"font-family:'Marcellus',serif;font-size:21px;line-height:1.25;margin:0 0 2px\">{{ founder.name }}</h3>\n        <p style=\"margin:0;font-weight:700;font-size:15px;color:#8F6212;line-height:1.5\">{{ founder.role }}</p>\n      </figcaption>\n    </figure>\n  </section>\n\n  <section id=\"founders-letter\" aria-labelledby=\"founders-letter-heading\" style=\"padding:48px 0;margin-top:48px;border-top:1px solid #E0D7C4\"><div style=\"max-width:72ch;margin:0 auto\"><h2 id=\"founders-letter-heading\" style=\"font-family:Marcellus,serif;font-size:clamp(28px,3vw,38px);line-height:1.25;margin:0 0 28px\">Una lettera di K.V. Ramesh</h2><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\"><strong>Cari amici, </strong></p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">Un cordiale saluto da Kairali – The Ayurvedic Healing Village, un luogo in cui l'antica sapienza dell'Ayurveda si unisce alle esigenze della vita contemporanea. È per me un grande piacere condividere con Voi i valori fondamentali di Kairali: la dedizione al benessere olistico, l'autentica terapia ayurvedica e il progresso dell'umanità.</p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">La mia visione per Kairali Ayurvedic Group si è sempre fondata saldamente sull'antica scienza dell'Ayurveda, che considero la via migliore verso l'armonia e la salute. Essendo cresciuto in una famiglia immersa nelle tradizioni ayurvediche, ho visto di persona la profonda influenza che essa esercita sulla vita delle persone. Questo mi ha spinto a dedicare la mia vita a tutelare questa inestimabile eredità e a farla conoscere al mondo. </p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">Autenticità ed eccellenza sono sempre state i pilastri di Kairali. Questa idea si riflette in Kairali – The Ayurvedic Healing Village. Dalle terapie e dai trattamenti all'ambiente tranquillo ed ecosostenibile, ogni elemento di questa struttura è stato pensato per offrire un'esperienza ayurvedica pienamente immersiva. Qui creiamo un luogo protetto in cui i visitatori possono ritrovare tranquillità, rinnovamento ed equilibrio, unendo le pratiche tradizionali agli standard di accoglienza contemporanei.</p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">Il nostro obiettivo va oltre l'offerta di assistenza ayurvedica: vogliamo promuovere uno stile di vita che valorizzi il benessere mentale, spirituale e fisico. Attraverso terapie personalizzate, diete terapeutiche, lezioni di yoga e tecniche di meditazione, desideriamo aiutare i nostri pazienti a vivere una vita migliore e più appagante. </p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">Sebbene nel corso degli anni Kairali Ayurvedic Group sia diventato un marchio noto in tutto il mondo, i nostri principi non sono cambiati. Siamo qui per essere custodi dell'Ayurveda, offrendo i suoi benefici terapeutici a chi li cerca e preservando l'integrità che ci ha resi un punto di riferimento autorevole per la salute olistica.</p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">A tutti coloro che visitano Kairali – The Ayurvedic Healing Village esprimo la mia più sincera gratitudine. La Vostra fiducia nell'Ayurveda e in Kairali ci spinge a innovare e a migliorarci continuamente. Vi invito a iniziare questo processo trasformativo di scoperta di sé, guarigione e rigenerazione, guidati dai principi senza tempo dell'Ayurveda. </p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">Insieme, creiamo un mondo più sano e più felice.<br><br>Cordiali saluti,<br><strong>K.V. Ramesh<br></strong>Amministratore Delegato, Kairali Ayurvedic Group</p></div></section>\n<section id=\"leadership\" aria-labelledby=\"leadership-h\" style=\"padding:40px 0 0;margin-top:40px;border-top:1px solid #E0D7C4\">\n    <p style=\"margin:0 0 6px;font-weight:700;font-size:12.5px;letter-spacing:2.4px;color:#8F6212;text-transform:uppercase\">{{ leadership.eyebrow }}</p>\n    <h2 id=\"leadership-h\" style=\"font-family:'Marcellus',serif;font-size:27px;line-height:1.2;margin:0 0 8px;text-wrap:balance\">{{ leadership.heading }}</h2>\n    <ul style=\"list-style:none;margin:0;padding:0;display:flex;flex-direction:column\">\n      <sc-for list=\"{{ directors }}\" as=\"d\" hint-placeholder-count=\"4\">\n        <li id=\"{{ d.id }}\" data-profile=\"director\" style=\"display:flex;flex-direction:column;gap:14px;padding:28px 0;border-top:1px solid #E0D7C4\">\n          <div style=\"display:grid;grid-template-columns:104px minmax(0,1fr);gap:16px;align-items:center\">\n            <img src=\"{{ d.portrait.src }}\" alt=\"{{ d.portrait.alt }}\" width=\"{{ d.portrait.width }}\" height=\"{{ d.portrait.height }}\" loading=\"lazy\" style=\"width:104px;height:auto;display:block;border-radius:4px\">\n            <div style=\"min-width:0\">\n              <h3 style=\"font-family:'Marcellus',serif;font-size:22px;line-height:1.25;margin:0 0 4px\">{{ d.name }}</h3>\n              <p style=\"margin:0;font-weight:700;font-size:15px;color:#8F6212;line-height:1.5\">{{ d.role }}</p>\n            </div>\n          </div>\n          <p style=\"margin:0;font-size:17px;line-height:1.7;text-wrap:pretty\">{{ d.paragraph }}</p>\n          <sc-if value=\"{{ d.hasLinkedin }}\" hint-placeholder-val=\"{{ false }}\"><a href=\"{{ d.linkedinHref }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"{{ d.linkedinLabel }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:44px;font-weight:700;font-size:15.5px\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span>LinkedIn</a></sc-if>\n        </li>\n      </sc-for>\n    </ul>\n  </section>\n\n  <section id=\"awards\" aria-labelledby=\"awards-h\" style=\"padding:40px 0 0;margin-top:12px;border-top:1px solid #E0D7C4;display:flex;flex-direction:column;gap:16px\">\n    <div>\n      <p style=\"margin:0 0 6px;font-weight:700;font-size:12.5px;letter-spacing:2.4px;color:#8F6212;text-transform:uppercase\">{{ awards.eyebrow }}</p>\n      <h2 id=\"awards-h\" style=\"font-family:'Marcellus',serif;font-size:27px;line-height:1.2;margin:0;text-wrap:balance\">{{ awards.heading }}</h2>\n    </div>\n    <figure style=\"margin:0\"><img src=\"/ahv/assets/img/AHV-About-698image.webp\" alt=\"Un uomo in smoking riceve un trofeo d'oro agli Spa Awards, est. 2006\" width=\"698\" height=\"642\" loading=\"lazy\" style=\"width:100%;height:auto;display:block;border-radius:4px\"></figure>\n    <h3 style=\"font-family:'Marcellus',serif;font-size:20px;line-height:1.4;margin:0;color:#5A4420;text-wrap:balance\">{{ awards.lead }}</h3>\n    <p style=\"margin:0;font-size:17px;line-height:1.7;text-wrap:pretty\">{{ awards.paragraph }}</p>\n    <a href=\"{{ awards.linkHref }}\" target=\"_blank\" rel=\"noopener\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:44px;font-weight:700;font-size:15.5px\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span>{{ awards.linkText }}</a>\n  </section>\n\n  <section id=\"certificates\" aria-labelledby=\"certificates-h\" style=\"padding:40px 0 56px;margin-top:40px;border-top:1px solid #E0D7C4\">\n    <p style=\"margin:0 0 6px;font-weight:700;font-size:12.5px;letter-spacing:2.4px;color:#8F6212;text-transform:uppercase;text-align:center\">{{ certificates.eyebrow }}</p>\n    <h2 id=\"certificates-h\" style=\"font-family:'Marcellus',serif;font-size:27px;line-height:1.2;margin:0 0 24px;text-align:center;text-wrap:balance\">{{ certificates.heading }}</h2>\n    <ul style=\"list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px\">\n      <sc-for list=\"{{ documents }}\" as=\"c\" hint-placeholder-count=\"7\">\n        <li style=\"background:#fff;border:1px solid #E9E2D3;border-radius:4px;overflow:hidden;min-width:0\">\n          <button type=\"button\" data-doc-index=\"{{ c.i }}\" onClick=\"{{ c.open }}\" style=\"display:flex;flex-direction:column;width:100%;height:100%;padding:0;border:0;background:#fff;color:#2A2118;text-align:left\" style-hover=\"color:#006038\">\n            <img src=\"{{ c.src }}\" alt=\"{{ c.label }}\" width=\"{{ c.width }}\" height=\"{{ c.height }}\" loading=\"lazy\" style=\"width:100%;height:auto;display:block;border-bottom:1px solid #E9E2D3\">\n            <span style=\"display:flex;flex-direction:column;gap:4px;padding:10px 12px 12px;min-height:44px;box-sizing:border-box\"><span style=\"font-weight:700;font-size:14.5px;line-height:1.35\">{{ c.label }}</span><span style=\"font-size:14px;line-height:1.45;color:#514A3F\">{{ c.note }}</span><span style=\"display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:11.5px;letter-spacing:1.6px;text-transform:uppercase;color:#006038\">Visualizza<span aria-hidden=\"true\" style=\"color:#C1882C\">→</span></span></span>\n          </button>\n        </li>\n      </sc-for>\n    </ul>\n  </section>\n</article>\n</main>\n<dc-import name=\"AHV Chrome Footer\" narrow=\"true\" hint-size=\"100%,900px\"></dc-import>\n\n<div id=\"doc-dialog\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"doc-dialog-title\" onKeyDown=\"{{ dlgKey }}\" style=\"display:{{ dlgDisplay }};position:fixed;inset:0;z-index:200;background:rgba(26,20,12,.96);flex-direction:column;padding:12px;box-sizing:border-box;gap:10px\">\n  <div style=\"display:flex;justify-content:space-between;align-items:flex-start;gap:10px;color:#F7F4EA\">\n    <div style=\"display:flex;flex-direction:column;gap:2px;min-width:0\"><span aria-live=\"polite\" style=\"font-weight:700;font-size:12px;letter-spacing:1.8px;text-transform:uppercase;color:#E9E2D3\">{{ counter }}</span><span id=\"doc-dialog-title\" style=\"font-family:'Marcellus',serif;font-size:18px;line-height:1.3\">{{ curLabel }}</span></div>\n    <button type=\"button\" id=\"doc-close\" onClick=\"{{ close }}\" aria-label=\"Chiudi documento\" style=\"display:inline-flex;align-items:center;justify-content:center;flex:none;width:48px;height:48px;border:1px solid rgba(247,244,234,.5);border-radius:4px;background:transparent;color:#F7F4EA;font-size:20px\"><span aria-hidden=\"true\">✕</span></button>\n  </div>\n  <div id=\"doc-stage\" tabindex=\"0\" aria-label=\"Immagine del documento. Scorri o trascina per esplorare a dimensioni reali\" onPointerDown=\"{{ panStart }}\" onPointerMove=\"{{ panMove }}\" onPointerUp=\"{{ panEnd }}\" onPointerCancel=\"{{ panEnd }}\" style=\"flex:1 1 auto;min-height:0;display:flex;justify-content:flex-start;align-items:flex-start;overflow:auto;touch-action:pan-x pan-y pinch-zoom;overscroll-behavior:contain;border-radius:4px\">{{ viewerImg }}</div>\n  <div style=\"display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px\">\n    <button type=\"button\" id=\"doc-prev\" onClick=\"{{ prev }}\" aria-label=\"Documento precedente\" style=\"display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border:1px solid rgba(247,244,234,.5);border-radius:4px;background:transparent;color:#F7F4EA;font-weight:700;font-size:13px;letter-spacing:1.6px;text-transform:uppercase\"><span aria-hidden=\"true\">←</span>Precedente</button>\n    <button type=\"button\" id=\"doc-zoom\" aria-pressed=\"{{ zoomPressed }}\" onClick=\"{{ toggleZoom }}\" style=\"display:inline-flex;align-items:center;justify-content:center;min-height:48px;border:1px solid rgba(247,244,234,.5);border-radius:4px;background:transparent;color:#F7F4EA;font-weight:700;font-size:13px;letter-spacing:1.6px;text-transform:uppercase\">{{ zoomLabel }}</button>\n    <button type=\"button\" id=\"doc-next\" onClick=\"{{ next }}\" aria-label=\"Documento successivo\" style=\"display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border:1px solid #EEB41E;border-radius:4px;background:#EEB41E;color:#2A2118;font-weight:700;font-size:13px;letter-spacing:1.6px;text-transform:uppercase\">Successivo<span aria-hidden=\"true\">→</span></button>\n  </div>\n</div>\n</div>\n",
  "logic": "\n\nfunction ahvDocNote(c) {\n  const e = c.printedEvidence || {};\n  const parts = [];\n  if (e.number) parts.push(\"N. \" + e.number);\n  if (e.order) parts.push(\"Provvedimento \" + e.order);\n  if (e.printedValidFrom && e.printedValidThrough) parts.push(\"Valido \" + e.printedValidFrom + \" al \" + e.printedValidThrough);\n  else if (e.printedIssueDate && e.printedValidThrough) parts.push(\"Data di emissione \" + e.printedIssueDate + \", valido fino al \" + e.printedValidThrough);\n  else if (e.printedValidThrough) parts.push(\"Valido fino al \" + e.printedValidThrough);\n  else if (e.printedDate && e.printedPeriod) parts.push(\"In data \" + e.printedDate + \", \" + e.printedPeriod);\n  else if (e.issued) parts.push(\"Data di emissione \" + e.issued.replace(/(\\d)(\\D)/, \"$1 $2\"));\n  return parts.join(\" · \");\n}\n\nclass Component extends DCLogic {\n  state = { open: false, i: 0, zoom: false };\n  componentDidMount() { document.documentElement.lang = 'it'; if (this.state.open) this.acquireLock(); }\n  componentWillUnmount() { this._gone = true; this.releaseLock(); }\n  // OWNER-REG-07 (iOS: closing the certificate viewer left scrolling stuck). One paired, idempotent lock: acquire saves\n  // the exact prior inline overflow (value + priority) and the settled scroll position; release (close, Escape, unmount)\n  // puts back only a lock this instance still holds, then the position. Pending focus timers are cancelled and a late\n  // callback never focuses into a closed or unmounted viewer; focus never scrolls the page.\n  acquireLock() {\n    if (this._lock) return;\n    const s = document.body.style;\n    this._lock = { x: window.scrollX, y: window.scrollY, saved: ['overflow-x', 'overflow-y'].map((k) => [k, s.getPropertyValue(k), s.getPropertyPriority(k)]) };\n    s.setProperty('overflow', 'hidden');\n    // Escape also closes when a tap left focus on <body> (Safari does not focus tapped buttons, so the dialog's own\n    // onKeyDown never sees the key); the dialog's handler runs first and prevents the default, so this never doubles\n    this._onEsc = (e) => { if (e.key === 'Escape' && !e.defaultPrevented) this.closeViewer(); };\n    document.addEventListener('keydown', this._onEsc);\n  }\n  releaseLock() {\n    this.cancelFocus();\n    if (this._onEsc) { document.removeEventListener('keydown', this._onEsc); this._onEsc = null; }\n    const l = this._lock;\n    if (!l) return;\n    this._lock = null;\n    const s = document.body.style;\n    // only a lock this instance still holds: another owner's later value is left alone\n    if (l.saved.every(([k]) => s.getPropertyValue(k) === 'hidden' && !s.getPropertyPriority(k))) for (const [k, v, p] of l.saved) { if (v) s.setProperty(k, v, p); else s.removeProperty(k); }\n    if (window.scrollX !== l.x || window.scrollY !== l.y) window.scrollTo({ left: l.x, top: l.y, behavior: 'instant' });\n  }\n  cancelFocus() { if (this._focusTimer) { clearTimeout(this._focusTimer); this._focusTimer = null; } }\n  focusLater(find, whenOpen) {\n    this.cancelFocus();\n    this._focusTimer = setTimeout(() => { this._focusTimer = null; if (this._gone || this.state.open !== whenOpen) return; const el = find(); if (el) el.focus({ preventScroll: true }); }, 30);\n  }\n  openAt(idx) {\n    this._opener = idx;\n    // Settle any in-flight smooth scroll (focus() from page top) instantly at the trigger before locking the page,\n    // so the document position under the fixed overlay is stable (reproduced race, notes/about-us-page.md).\n    const btn = document.querySelector('button[data-doc-index=\"' + idx + '\"]');\n    if (btn) { const r = btn.getBoundingClientRect(); if (r.top < 0 || r.bottom > window.innerHeight) window.scrollTo({ top: window.scrollY + r.top - Math.max(0, (window.innerHeight - r.height) / 2), behavior: 'instant' }); else window.scrollTo({ top: window.scrollY, behavior: 'instant' }); }\n    this.setState({ open: true, i: idx, zoom: false });\n    this.acquireLock();\n    this.focusLater(() => document.getElementById('doc-close'), true);\n  }\n  closeViewer() {\n    if (!this.state.open && !this._lock) return;\n    const idx = this._opener != null ? this._opener : this.state.i; // focus returns to the trigger that opened the viewer\n    this.setState({ open: false, zoom: false });\n    this.releaseLock();\n    this.focusLater(() => document.querySelector('button[data-doc-index=\"' + idx + '\"]'), false);\n  }\n  // AHV viewer pan repair 20260929\n  panStart(e) {\n    if (!this.state.zoom || e.pointerType !== 'mouse' || e.button !== 0) return;\n    e.preventDefault();\n    const el = e.currentTarget;\n    this._pan = { x: e.clientX, y: e.clientY, left: el.scrollLeft, top: el.scrollTop };\n    el.setPointerCapture(e.pointerId);\n  }\n  panMove(e) {\n    if (!this._pan) return;\n    e.currentTarget.scrollLeft = this._pan.left + this._pan.x - e.clientX;\n    e.currentTarget.scrollTop = this._pan.top + this._pan.y - e.clientY;\n  }\n  panEnd() { this._pan = null; }\n  renderVals() {\n    const D = window.AHV_ABOUT;\n    const A = 'https://ayurvedichealingvillage.com';\n    const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n    if (!D) return { guard, quoteText: '', intro: {}, founder: {}, leadership: {}, directors: [], awards: {}, certificates: {}, documents: [], dlgDisplay: 'none', viewerImg: null, counter: '', curLabel: '', zoomLabel: 'Zoom', zoomPressed: 'false' };\n    const docs = D.certificates.documents, n = docs.length, i = this.state.i, cur = docs[i] || docs[0];\n    const go = (d) => this.setState(s => ({ i: (s.i + d + n) % n, zoom: false }));\n    const zoom = this.state.zoom;\n    const viewerImg = this.state.open ? React.createElement('img', { id: 'doc-expanded', key: cur.src + (zoom ? 'z' : 'f'), src: cur.src, alt: cur.label, width: cur.width, height: cur.height,\n      style: zoom ? { display: 'block', width: cur.width + 'px', flexShrink: 0, margin: '0 auto', maxWidth: 'none', height: 'auto', background: '#000' } : { display: 'block', margin: '0 auto', flexShrink: 0, width: 'auto', height: 'auto', maxWidth: '100%', maxHeight: '100%', objectFit: 'contain', background: '#000' } }) : null;\n    return {\n      guard, quoteText: D.quote.text,\n      intro: { eyebrow: D.intro.eyebrow, heading: D.intro.heading, paragraph: D.intro.paragraph, linkText: D.intro.link.text, linkHref: A + D.intro.link.href },\n      founder: { eyebrow: D.founder.eyebrow, heading: D.founder.heading, lead: D.founder.lead, paragraph: D.founder.paragraph, linkText: D.founder.link.text, linkHref: A + D.founder.link.href, name: D.founder.name, role: D.founder.role },\n      leadership: { eyebrow: D.leadership.eyebrow, heading: D.leadership.heading },\n      directors: D.leadership.directors.map(d => ({ id: d.id, name: d.name, role: d.role, paragraph: d.paragraph, portrait: d.portrait, hasLinkedin: !!d.linkedin, linkedinHref: d.linkedin ? d.linkedin.href : '', linkedinLabel: d.linkedin ? d.linkedin.label : '' })),\n      awards: { eyebrow: D.awards.eyebrow, heading: D.awards.heading, lead: D.awards.lead, paragraph: D.awards.paragraph, linkText: D.awards.link.text, linkHref: A + D.awards.link.href },\n      certificates: { eyebrow: D.certificates.eyebrow, heading: D.certificates.heading },\n      documents: docs.map((c, idx) => ({ i: idx, src: c.src, label: c.label, note: ahvDocNote(c), width: c.width, height: c.height, open: () => this.openAt(idx) })),\n      dlgDisplay: this.state.open ? 'flex' : 'none', viewerImg, counter: n ? (i + 1) + ' di ' + n : '', curLabel: cur ? cur.label : '',\n      zoomLabel: zoom ? 'Adatta' : 'Zoom', zoomPressed: zoom ? 'true' : 'false', toggleZoom: () => this.setState(s => ({ zoom: !s.zoom })),\n      panStart: (e) => this.panStart(e), panMove: (e) => this.panMove(e), panEnd: () => this.panEnd(), close: () => this.closeViewer(), prev: () => go(-1), next: () => go(1),\n      dlgKey: (e) => {\n        if (e.key === 'Escape') { e.preventDefault(); this.closeViewer(); return; }\n        if (this.state.zoom && ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(e.key)) return;\n        if (e.key === 'ArrowLeft') { e.preventDefault(); go(-1); return; }\n        if (e.key === 'ArrowRight') { e.preventDefault(); go(1); return; }\n        if (e.key === 'Tab') {\n          const f = [...e.currentTarget.querySelectorAll('button')];\n          const first = f[0], last = f[f.length - 1];\n          if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }\n          else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }\n        }\n      }\n    };\n  }\n}\n",
  "props": "",
  "scripts": [
    "/ahv/l10n/it/assets/about-us-data.js"
  ],
  "locale": "it"
}
