{
  "id": "ahv-page-about-us-desktop",
  "file": "AHV Page About Us Desktop.dc.html",
  "sourceSha256": "5de545568d2b9226b9d2589b539fc31e4116696ece74f4ce99c8b83525a2cc7b",
  "variant": "desktop",
  "template": "\n<helmet>\n<link href=\"/ahv/fonts/ahv-33eeac48ab44.css\" rel=\"stylesheet\">\n\n<style>\nbody{margin:0;background:#F7F4EA;color:#2A2118;font-family:'Mulish',sans-serif;font-size:18px;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=\"关于 Kairali – The Ayurvedic Healing Village：位于喀拉拉邦帕拉卡德、获 NABH 认证的阿育吠陀医院，提供由医师主导的治疗方案。\">\n<link rel=\"canonical\" href=\"https://ayurvedichealingvillage.com/zh/about-us/\">\n<meta name=\"robots\" content=\"noindex, nofollow\">\n<meta property=\"og:locale\" content=\"zh_CN\">\n<meta property=\"og:type\" content=\"article\">\n<meta property=\"og:title\" content=\"关于我们\">\n<meta property=\"og:description\" content=\"关于 Kairali – The Ayurvedic Healing Village：位于喀拉拉邦帕拉卡德、获 NABH 认证的阿育吠陀医院，提供由医师主导的治疗方案。\">\n<meta property=\"og:url\" content=\"https://ayurvedichealingvillage.com/zh/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/zh/about-us/\",\"url\":\"https://ayurvedichealingvillage.com/zh/about-us/\",\"name\":\"Kairali – 阿育吠陀疗愈村\",\"description\":\"关于 Kairali – The Ayurvedic Healing Village：位于喀拉拉邦帕拉卡德、获 NABH 认证的阿育吠陀医院，提供由医师主导的治疗方案。\",\"isPartOf\":{\"@id\":\"https://ayurvedichealingvillage.com/zh/#website\"},\"inLanguage\":\"zh-Hans\",\"breadcrumb\":{\"@id\":\"https://ayurvedichealingvillage.com/zh/about-us/#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://ayurvedichealingvillage.com/zh/about-us/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"首页\",\"item\":\"https://ayurvedichealingvillage.com/zh/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"关于我们\",\"item\":\"https://ayurvedichealingvillage.com/zh/about-us/\"}]},{\"@type\":\"WebSite\",\"@id\":\"https://ayurvedichealingvillage.com/zh/#website\",\"url\":\"https://ayurvedichealingvillage.com/zh/\",\"name\":\"Kairali — The Ayurvedic Healing Village\",\"inLanguage\":\"zh-Hans\"}]}\n</script>\n</helmet>\n<div data-screen-label=\"About Us — Desktop\">\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\">跳至主要内容</a>\n<dc-import name=\"AHV Chrome Header\" hint-size=\"100%,72px\"></dc-import>\n<main id=\"main-content\">\n<section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 28px\">\n  <nav aria-label=\"面包屑导航\" 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/zh/\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px;min-width:44px\">首页</a><span aria-hidden=\"true\">/</span><span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">关于我们</span></nav>\n  <div style=\"padding-top:6px\">\n    <div style=\"font-weight:700;font-size:12.5px;letter-spacing:2.6px;color:#8F6212;text-transform:uppercase\">Kairali — The Ayurvedic Healing Village · 始于1908年</div>\n    <h1 id=\"page-h1\" style=\"font-family:'Marcellus',serif;font-size:clamp(36px,4vw,56px);line-height:1.1;margin:12px 0 0;max-width:20ch;text-wrap:balance\">关于我们</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=\"医院周边喀拉拉邦乡村的稻田和椰子林航拍图\" width=\"1440\" height=\"524\" style=\"width:100%;max-width:1440px;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:48px 0 0\">\n  <blockquote data-pos=\"/3\" style=\"margin:0 auto;max-width:36ch;text-align:center;font-family:'Marcellus',serif;font-size:clamp(24px,2.2vw,32px);line-height:1.35;color:#2A2118;text-wrap:balance;display:flex;flex-direction:column;align-items:center;gap:16px\">\n    <img src=\"/ahv/assets/img/AHV-About-lotus.svg\" alt=\"\" width=\"95\" height=\"57\" style=\"width:64px;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=\"display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:32px 64px;align-items:start;padding:64px 0 0\">\n    <div style=\"min-width:0\">\n      <p data-pos=\"h6\" style=\"margin:0 0 8px;font-weight:700;font-size:13px;letter-spacing:2.6px;color:#8F6212;text-transform:uppercase\">{{ intro.eyebrow }}</p>\n      <h2 id=\"intro-h\" style=\"font-family:'Marcellus',serif;font-size:clamp(28px,2.8vw,40px);line-height:1.16;margin:0 0 20px;text-wrap:balance\">{{ intro.heading }}</h2>\n      <p style=\"margin:0;font-size:17.5px;line-height:1.7;text-wrap:pretty;max-width:66ch\">{{ intro.paragraph }}</p>\n      <a href=\"{{ intro.linkHref }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:44px;margin-top:16px;font-weight:700;font-size:15.5px\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span>{{ intro.linkText }}</a>\n    </div>\n    <figure data-ahv-banner=\"about-wellness\" style=\"margin:0;justify-self:end;width:100%;max-width:448px;position:relative;aspect-ratio:448/455;border-radius:4px;overflow:hidden;background:#E0D7C4\"><img src=\"/ahv/assets/img/gallery/a5340555d384edc72099bc9f721bde48ec6e61c57202a233cb9c498d9680b505.webp\" alt=\"石板小径蜿蜒穿过花园，通向棕榈树间一座瓦顶建筑\" 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 – 阿育吠陀疗愈村\" 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:24px;line-height:1.2;color:#2A2118;text-wrap:balance\">自1999年以来的亚洲最佳阿育吠陀静修地</strong><span style=\"display:block;margin-top:12px;font-size:15.5px;line-height:1.6;color:#514A3F\">位于喀拉拉邦的 Kairali – 帕拉卡德的阿育吠陀疗愈村是一处独一无二的整体调养空间，提供传统、正宗的阿育吠陀疗法。</span></figcaption></figure>\n  </section>\n\n  <section id=\"founder\" aria-labelledby=\"founder-h\" style=\"display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:32px 64px;align-items:start;padding:64px 0 0;margin-top:64px;border-top:1px solid #E0D7C4\">\n    <figure style=\"margin:0;width:100%;max-width:520px\">\n      <img src=\"/ahv/assets/img/team-gita1.webp\" alt=\"Gita Ramesh 坐在 Kairali 的花园中\" width=\"482\" height=\"618\" loading=\"lazy\" style=\"width:100%;height:auto;display:block;border-radius:4px\">\n      <figcaption style=\"padding-top:14px\">\n        <h3 style=\"font-family:'Marcellus',serif;font-size:22px;line-height:1.25;margin:0 0 2px\">{{ founder.name }}</h3>\n        <p data-pos=\"h4\" style=\"margin:0;font-weight:700;font-size:15.5px;color:#8F6212;line-height:1.5\">{{ founder.role }}</p>\n      </figcaption>\n    </figure>\n    <div style=\"min-width:0\">\n      <p data-pos=\"h6\" style=\"margin:0 0 8px;font-weight:700;font-size:13px;letter-spacing:2.6px;color:#8F6212;text-transform:uppercase\">{{ founder.eyebrow }}</p>\n      <h2 id=\"founder-h\" style=\"font-family:'Marcellus',serif;font-size:clamp(28px,2.8vw,40px);line-height:1.16;margin:0 0 20px;text-wrap:balance\">{{ founder.heading }}</h2>\n      <p style=\"margin:0 0 16px;font-size:clamp(19px,1.5vw,22px);line-height:1.65;color:#2A2118;border-left:3px solid #C1882C;padding-left:20px;max-width:34ch;text-wrap:pretty\">{{ founder.lead }}</p>\n      <p style=\"margin:0;font-size:17.5px;line-height:1.7;text-wrap:pretty;max-width:66ch\">{{ founder.paragraph }}</p>\n      <a href=\"{{ founder.linkHref }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:44px;margin-top:16px;font-weight:700;font-size:15.5px\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span>{{ founder.linkText }}</a>\n    </div>\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\">K.V. Ramesh的一封信</h2><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\"><strong>亲爱的朋友们： </strong></p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">欢迎来到Kairali – The Ayurvedic Healing Village——在这里，阿育吠陀永恒的智慧与当代生活的需求相融合。我非常荣幸与您分享Kairali的核心价值：致力于身心整体健康、正宗的阿育吠陀疗法，以及人类的福祉与进步。</p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">我对Kairali Ayurvedic Group的愿景始终牢牢植根于古老的阿育吠陀科学，我认为它是通往身心和谐与健康的最佳途径。我成长于一个浸润在阿育吠陀传统中的家庭，亲眼见证了它对人们生活的深远影响。这激励我将毕生精力投入到守护这份珍贵遗产、并将其介绍给世界的事业之中。 </p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">正宗与卓越始终是Kairali的基石，这一理念也体现在Kairali – The Ayurvedic Healing Village之中。从各项疗法与治疗，到宁静、环保的环境，这里的每一个细节都经过精心规划，旨在提供全面沉浸式的阿育吠陀体验。在这里，我们将传统习俗与现代接待服务标准相结合，营造一处让来访者得以寻得宁静、焕新与平衡的疗愈之所。</p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">我们的目标不仅是提供阿育吠陀护理，更是倡导一种重视心理、精神与身体健康的生活方式。我们希望通过个性化疗法、治疗性饮食、瑜伽课程和冥想练习，帮助患者过上更好、更充实的生活。 </p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">多年来，Kairali Ayurvedic Group已成长为享誉全球的品牌，但我们的原则始终如一。我们在此担当阿育吠陀的守护者，将其疗愈益处带给有需要的人，同时坚守正直诚信——正是这份坚守，使我们成为整体健康领域公认的权威之一。</p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">我向每一位来到Kairali – The Ayurvedic Healing Village的朋友致以衷心的感谢。您对阿育吠陀和Kairali的信任，激励着我们不断创新与进步。诚邀您在阿育吠陀永恒原则的指引下，开启这一自我发现、疗愈与焕新的转变过程。 </p><p style=\"font-size:18px;line-height:1.8;margin:0 0 20px\">让我们携手共创一个更健康、更幸福的世界。<br><br>此致敬礼，<br><strong>K.V. Ramesh<br></strong>Kairali Ayurvedic Group董事总经理</p></div></section>\n<section id=\"leadership\" aria-labelledby=\"leadership-h\" style=\"padding:64px 0 0;margin-top:64px;border-top:1px solid #E0D7C4\">\n    <p style=\"margin:0 0 8px;font-weight:700;font-size:13px;letter-spacing:2.6px;color:#8F6212;text-transform:uppercase\">{{ leadership.eyebrow }}</p>\n    <h2 id=\"leadership-h\" style=\"font-family:'Marcellus',serif;font-size:clamp(28px,2.8vw,40px);line-height:1.16;margin:0 0 12px;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:grid;grid-template-columns:200px minmax(0,1fr);gap:16px 40px;align-items:start;padding:36px 0;border-top:1px solid #E0D7C4\">\n          <img src=\"{{ d.portrait.src }}\" alt=\"{{ d.portrait.alt }}\" width=\"{{ d.portrait.width }}\" height=\"{{ d.portrait.height }}\" loading=\"lazy\" style=\"width:100%;max-width:200px;height:auto;display:block;border-radius:4px\">\n          <div style=\"min-width:0;max-width:70ch\">\n            <h3 style=\"font-family:'Marcellus',serif;font-size:26px;line-height:1.25;margin:0 0 4px\">{{ d.name }}</h3>\n            <p data-pos=\"h4\" style=\"margin:0 0 14px;font-weight:700;font-size:15.5px;color:#8F6212;line-height:1.5\">{{ d.role }}</p>\n            <p style=\"margin:0;font-size:17.5px;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;margin-top:10px;font-weight:700;font-size:15.5px\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span>LinkedIn</a></sc-if>\n          </div>\n        </li>\n      </sc-for>\n    </ul>\n  </section>\n\n  <section id=\"awards\" aria-labelledby=\"awards-h\" style=\"display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:32px 64px;align-items:start;padding:64px 0 0;margin-top:28px;border-top:1px solid #E0D7C4\">\n    <figure style=\"margin:0;width:100%;max-width:520px\"><img src=\"/ahv/assets/img/AHV-About-698image.webp\" alt=\"一位身着燕尾服的男士在 Spa Awards（创立于 2006 年）上领取金色奖杯\" width=\"698\" height=\"642\" loading=\"lazy\" style=\"width:100%;height:auto;display:block;border-radius:4px\"></figure>\n    <div style=\"min-width:0\">\n      <p data-pos=\"h6\" style=\"margin:0 0 8px;font-weight:700;font-size:13px;letter-spacing:2.6px;color:#8F6212;text-transform:uppercase\">{{ awards.eyebrow }}</p>\n      <h2 id=\"awards-h\" style=\"font-family:'Marcellus',serif;font-size:clamp(28px,2.8vw,40px);line-height:1.16;margin:0 0 16px;text-wrap:balance\">{{ awards.heading }}</h2>\n      <h3 style=\"font-family:'Marcellus',serif;font-size:clamp(20px,1.6vw,24px);line-height:1.4;margin:0 0 16px;color:#5A4420;text-wrap:balance\">{{ awards.lead }}</h3>\n      <p style=\"margin:0;font-size:17.5px;line-height:1.7;text-wrap:pretty;max-width:66ch\">{{ 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;margin-top:16px;font-weight:700;font-size:15.5px\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span>{{ awards.linkText }}</a>\n    </div>\n  </section>\n\n  <section id=\"certificates\" aria-labelledby=\"certificates-h\" style=\"padding:64px 0 72px;margin-top:64px;border-top:1px solid #E0D7C4\">\n    <p style=\"margin:0 0 8px;font-weight:700;font-size:13px;letter-spacing:2.6px;color:#8F6212;text-transform:uppercase;text-align:center\">{{ certificates.eyebrow }}</p>\n    <h2 id=\"certificates-h\" style=\"font-family:'Marcellus',serif;font-size:clamp(28px,2.8vw,40px);line-height:1.16;margin:0 0 32px;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(auto-fill,minmax(min(220px,100%),1fr));gap:28px 24px\">\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%;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:14px 16px 16px;min-height:44px;box-sizing:border-box\"><span style=\"font-weight:700;font-size:15.5px;line-height:1.4\">{{ 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:8px;font-weight:700;font-size:12.5px;letter-spacing:2px;text-transform:uppercase;color:#006038\">查看文件<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\" hint-size=\"100%,560px\"></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,.94);flex-direction:column;align-items:center;justify-content:center;padding:24px;box-sizing:border-box\">\n  <div style=\"width:100%;max-width:1280px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;color:#F7F4EA\">\n    <div style=\"display:flex;flex-direction:column;gap:2px;min-height:44px;justify-content:center\"><span aria-live=\"polite\" style=\"font-weight:700;font-size:13px;letter-spacing:2px;text-transform:uppercase;color:#E9E2D3\">{{ counter }}</span><span id=\"doc-dialog-title\" style=\"font-family:'Marcellus',serif;font-size:22px;line-height:1.25\">{{ curLabel }}</span></div>\n    <div style=\"display:flex;gap:12px;flex-wrap:wrap\">\n      <button type=\"button\" id=\"doc-zoom\" aria-pressed=\"{{ zoomPressed }}\" onClick=\"{{ toggleZoom }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 20px;border:1px solid rgba(247,244,234,.5);border-radius:4px;background:transparent;color:#F7F4EA;font-weight:700;font-size:13.5px;letter-spacing:2px;text-transform:uppercase\" style-hover=\"background:rgba(247,244,234,.12)\">{{ zoomLabel }}</button>\n      <button type=\"button\" id=\"doc-close\" onClick=\"{{ close }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 20px;border:1px solid rgba(247,244,234,.5);border-radius:4px;background:transparent;color:#F7F4EA;font-weight:700;font-size:13.5px;letter-spacing:2px;text-transform:uppercase\" style-hover=\"background:rgba(247,244,234,.12)\">关闭文件<span aria-hidden=\"true\">✕</span></button>\n    </div>\n  </div>\n  <div id=\"doc-stage\" tabindex=\"0\" aria-label=\"文档图像。以实际大小查看时，滚动或拖动可平移图像\" onPointerDown=\"{{ panStart }}\" onPointerMove=\"{{ panMove }}\" onPointerUp=\"{{ panEnd }}\" onPointerCancel=\"{{ panEnd }}\" style=\"width:100%;max-width:1280px;flex:1 1 auto;min-height:0;margin:20px 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=\"width:100%;max-width:1280px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap\">\n    <button type=\"button\" id=\"doc-prev\" onClick=\"{{ prev }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;border:1px solid rgba(247,244,234,.5);border-radius:4px;background:transparent;color:#F7F4EA;font-weight:700;font-size:13.5px;letter-spacing:2px;text-transform:uppercase\" style-hover=\"background:rgba(247,244,234,.12)\"><span aria-hidden=\"true\">←</span>上一个文件</button>\n    <button type=\"button\" id=\"doc-next\" onClick=\"{{ next }}\" style=\"display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;border:1px solid #EEB41E;border-radius:4px;background:#EEB41E;color:#2A2118;font-weight:700;font-size:13.5px;letter-spacing:2px;text-transform:uppercase\" style-hover=\"filter:brightness(.94)\">下一个文件<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(\"编号 \" + e.number);\n  if (e.order) parts.push(\"命令 \" + e.order);\n  if (e.printedValidFrom && e.printedValidThrough) parts.push(\"有效 \" + e.printedValidFrom + \" 至 \" + e.printedValidThrough);\n  else if (e.printedIssueDate && e.printedValidThrough) parts.push(\"发布日期 \" + e.printedIssueDate + \"，有效期至 \" + e.printedValidThrough);\n  else if (e.printedValidThrough) parts.push(\"有效期至 \" + e.printedValidThrough);\n  else if (e.printedDate && e.printedPeriod) parts.push(\"日期 \" + e.printedDate + \", \" + e.printedPeriod);\n  else if (e.issued) parts.push(\"发布日期 \" + 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 = 'zh-Hans'; 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: '实际大小', 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    // Viewer image built here so no placeholder request fires at parse time (Gallery limitation avoided) and state survives re-render.\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: 'calc(100vh - 240px)', 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) + ' / ' + n : '', curLabel: cur ? cur.label : '',\n      zoomLabel: 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', '首页', '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/zh/assets/about-us-data.js"
  ],
  "locale": "zh-Hans"
}
