{
  "id": "ahv-page-article-reader-desktop",
  "file": "AHV Page Article Reader Desktop.dc.html",
  "sourceSha256": "f766a7218410f2075077a6fee6d65422a9c821dbbfa60c93358eeda5b51459d6",
  "variant": "desktop",
  "template": "\n<helmet>\n<link href=\"/ahv/fonts/ahv-33eeac48ab44.css\" rel=\"stylesheet\">\n\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)}\n[role=region][tabindex=\"0\"]:focus{outline:3px solid #6B7726;outline-offset:2px}\ntable{border-collapse:collapse}\na:active,button:active{filter:brightness(.88)}\nh1,h2,h3,h4,h5,h6{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<link rel=\"icon\" href=\"/ahv/assets/img/logo_color-da22eb.svg\" sizes=\"192x192\">\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</helmet>\n<div data-screen-label=\"Article reader — 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\" style=\"display:flow-root\">\n  <sc-if value=\"{{ isReader }}\" hint-placeholder-val=\"{{ true }}\">\n\n<section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 24px\">\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\">\n    <sc-for list=\"{{ crumbs }}\" as=\"c\" hint-placeholder-count=\"1\"><a href=\"{{ c.url }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ c.label }}</a><span aria-hidden=\"true\">/</span></sc-for>\n    <span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">{{ crumbLast }}</span>\n  </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(34px,3.6vw,50px);line-height:1.12;margin:12px 0 0;max-width:26ch;text-wrap:balance\">{{ R.h1 }}</h1>\n  </div>\n</section>\n\n<div style=\"width:min(1220px,94%);margin:0 auto\">\n  <sc-if value=\"{{ hasHero }}\" hint-placeholder-val=\"{{ false }}\">\n    <div style=\"position:relative;min-width:0\">\n      {{ heroEl }}\n      <sc-if value=\"{{ hasHeroLotus }}\" hint-placeholder-val=\"{{ false }}\">{{ heroLotusEl }}</sc-if>\n    </div>\n  </sc-if>\n</div>\n\n<div style=\"width:min(1220px,94%);margin:0 auto;padding:40px 0 72px;display:flex;flex-wrap:wrap;gap:32px 56px;align-items:flex-start\">\n  <sc-if value=\"{{ hasNav }}\" hint-placeholder-val=\"{{ true }}\">\n  <nav aria-labelledby=\"ctx-h\" style=\"position:sticky;top:96px;flex:0 0 320px;border:1px solid #E0D7C4;border-radius:4px;background:#fff;padding:20px;min-width:0\">\n    <h2 id=\"ctx-h\" style=\"font-family:'Marcellus',serif;font-size:22px;line-height:1.25;margin:0 0 14px;color:#5A4420\">{{ nav.heading }}</h2>\n    <ul style=\"list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px\">\n      <sc-for list=\"{{ navGroups }}\" as=\"g\" hint-placeholder-count=\"4\">\n        <li style=\"min-width:0;border-top:1px solid #EFE9DA\">\n          <h3 style=\"margin:0;font-family:'Mulish',sans-serif;font-size:16.5px\">\n            <button type=\"button\" id=\"{{ g.id }}\" aria-expanded=\"{{ g.expanded }}\" aria-controls=\"{{ g.panelId }}\" onClick=\"{{ g.toggle }}\" style=\"width:100%;box-sizing:border-box;min-height:48px;display:flex;align-items:center;gap:12px;padding:10px 4px;border:0;background:transparent;font-family:inherit;font-size:16.5px;font-weight:700;color:#2A2118;text-align:left;cursor:pointer\"><span aria-hidden=\"true\" style=\"color:#006038;flex:none;width:14px;font-size:18px\">{{ g.marker }}</span>{{ g.title }}</button>\n          </h3>\n          <div id=\"{{ g.panelId }}\" role=\"region\" aria-labelledby=\"{{ g.id }}\" hidden=\"{{ g.hidden }}\" style=\"display:{{ g.display }};padding:0 4px 10px 26px\">\n            <ul style=\"list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px\">\n              <sc-for list=\"{{ g.items }}\" as=\"it\" hint-placeholder-count=\"3\">\n                <li style=\"min-width:0\">\n                  <sc-if value=\"{{ it.linked }}\" hint-placeholder-val=\"{{ true }}\"><a href=\"{{ it.href }}\" onClick=\"{{ navClick }}\" aria-current=\"{{ it.ariaCurrent }}\" style=\"display:flex;align-items:center;min-height:44px;font-size:16px;line-height:1.45;color:#006038\">{{ it.text }}</a></sc-if>\n                  <sc-if value=\"{{ it.unlinked }}\" hint-placeholder-val=\"{{ false }}\"><span style=\"display:flex;align-items:center;min-height:44px;font-size:16px;line-height:1.45;color:#514a3f\">{{ it.text }}</span></sc-if>\n                </li>\n              </sc-for>\n            </ul>\n          </div>\n        </li>\n      </sc-for>\n    </ul>\n  </nav>\n\n  </sc-if>\n  <article aria-labelledby=\"page-h1\" style=\"flex:1 1 520px;min-width:0;max-width:74ch\">\n    <sc-if value=\"{{ hasFaq }}\" hint-placeholder-val=\"{{ false }}\">\n    <div data-faq=\"grouped\" style=\"min-width:0\">\n      <div data-faq-intro=\"true\" style=\"margin:0 0 26px\">{{ faqIntroEl }}</div>\n      <sc-for list=\"{{ faqGroups }}\" as=\"g\" hint-placeholder-count=\"12\">\n        <section aria-labelledby=\"{{ g.headingId }}\" style=\"margin:0 0 30px;min-width:0\">\n          <h3 id=\"{{ g.headingId }}\" data-source-pointer=\"{{ g.ptr }}\" style=\"font-family:'Marcellus',serif;font-weight:400;font-size:clamp(22px,2.1vw,27px);line-height:1.25;margin:0 0 12px;color:#006038\">{{ g.label }}</h3>\n          <ul style=\"list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px\">\n            <sc-for list=\"{{ g.pairs }}\" as=\"q\" hint-placeholder-count=\"4\">\n              <li data-source-pointer=\"{{ q.itemPtr }}\" style=\"min-width:0;border:1px solid #DCD3C0;border-radius:4px;background:#fff;overflow:hidden\">\n                <button type=\"button\" id=\"{{ q.btnId }}\" aria-expanded=\"{{ q.expanded }}\" aria-controls=\"{{ q.panelId }}\" onClick=\"{{ q.toggle }}\" data-source-pointer=\"{{ q.questionPtr }}\" style=\"display:flex;align-items:center;gap:14px;width:100%;min-height:56px;padding:12px 18px;background:none;border:0;text-align:left;font-family:'Mulish',sans-serif;font-weight:700;font-size:17px;line-height:1.45;color:#1F1B16;cursor:pointer\" style-hover=\"background:#F4F0E4\">\n                  <span aria-hidden=\"true\" style=\"flex:0 0 24px;font-size:22px;line-height:1;color:#006038;text-align:center\">{{ q.marker }}</span>\n                  <span style=\"min-width:0\">{{ q.question }}</span>\n                </button>\n                <div id=\"{{ q.panelId }}\" role=\"region\" aria-labelledby=\"{{ q.btnId }}\" hidden=\"{{ q.hidden }}\" data-source-pointer=\"{{ q.answerPtr }}\" style=\"display:{{ q.display }};padding:2px 18px 16px 56px;border-top:1px solid #EAE3D4;overflow-wrap:anywhere\">{{ q.answerEl }}</div>\n              </li>\n            </sc-for>\n          </ul>\n        </section>\n      </sc-for>\n      <div data-faq-closing=\"true\" style=\"margin:6px 0 0;padding-top:18px;border-top:1px solid #DCD3C0\">{{ faqClosingEl }}</div>\n    </div>\n    </sc-if>\n    <sc-for list=\"{{ items }}\" as=\"i\" hint-placeholder-count=\"12\">\n      <div style=\"min-width:0\">\n        <sc-if value=\"{{ i.isH2 }}\" hint-placeholder-val=\"{{ false }}\">\n          <h2 data-source-pointer=\"{{ i.ptr }}\" style=\"font-family:'Marcellus',serif;font-size:clamp(26px,2.3vw,32px);line-height:1.25;margin:34px 0 14px;text-wrap:balance\">{{ i.inline }}</h2>\n        </sc-if>\n        <sc-if value=\"{{ i.isH3 }}\" hint-placeholder-val=\"{{ false }}\">\n          <h3 data-source-pointer=\"{{ i.ptr }}\" style=\"font-family:'Marcellus',serif;font-size:24px;line-height:1.3;margin:28px 0 12px\">{{ i.inline }}</h3>\n        </sc-if>\n        <sc-if value=\"{{ i.isH4 }}\" hint-placeholder-val=\"{{ false }}\">\n          <h4 data-source-pointer=\"{{ i.ptr }}\" style=\"font-family:'Mulish',sans-serif;font-weight:700;font-size:19px;line-height:1.4;margin:24px 0 10px;color:#5A4420\">{{ i.inline }}</h4>\n        </sc-if>\n        <sc-if value=\"{{ i.isH5 }}\" hint-placeholder-val=\"{{ false }}\">\n          <h5 data-source-pointer=\"{{ i.ptr }}\" style=\"font-weight:700;font-size:17.5px;line-height:1.45;margin:20px 0 8px\">{{ i.inline }}</h5>\n        </sc-if>\n        <sc-if value=\"{{ i.isH6 }}\" hint-placeholder-val=\"{{ false }}\">\n          <h6 data-source-pointer=\"{{ i.ptr }}\" style=\"font-weight:700;font-size:16.5px;line-height:1.45;margin:18px 0 8px\">{{ i.inline }}</h6>\n        </sc-if>\n        <sc-if value=\"{{ i.isPara }}\" hint-placeholder-val=\"{{ true }}\">\n          <p data-source-pointer=\"{{ i.ptr }}\" style=\"margin:0 0 18px;font-size:17.5px;line-height:1.75;text-wrap:pretty\">{{ i.inline }}</p>\n        </sc-if>\n        <sc-if value=\"{{ i.isList }}\" hint-placeholder-val=\"{{ false }}\">{{ i.listEl }}</sc-if>\n        <sc-if value=\"{{ i.isRule }}\" hint-placeholder-val=\"{{ false }}\">\n          <hr data-source-pointer=\"{{ i.ptr }}\" style=\"border:0;border-top:1px solid #E0D7C4;margin:28px 0\">\n        </sc-if>\n        <sc-if value=\"{{ i.isTable }}\" hint-placeholder-val=\"{{ false }}\">{{ i.tableEl }}</sc-if>\n        <sc-if value=\"{{ i.isDownload }}\" hint-placeholder-val=\"{{ false }}\">\n          <p style=\"margin:6px 0 22px\">\n            <a href=\"{{ i.href }}\" download=\"{{ true }}\" data-source-pointer=\"{{ i.ptr }}\" data-implementation-href=\"{{ i.implementationHref }}\" style=\"display:inline-flex;align-items:center;min-height:52px;padding:14px 26px;background:#5A4420;color:#F7F4EA;border-radius:4px;font-weight:700;font-size:16px\" style-hover=\"background:#3E2E14;text-decoration:none\">{{ i.text }}</a>\n          </p>\n        </sc-if>\n        <sc-if value=\"{{ i.isCard }}\" hint-placeholder-val=\"{{ false }}\">\n          <div data-source-pointer=\"{{ i.ptr }}\" style=\"border:1px solid #E0D7C4;border-radius:4px;background:#fff;padding:22px;display:flex;flex-direction:column;gap:12px;align-items:flex-start;margin:0 0 16px\">\n            <sc-if value=\"{{ i.cardImageLinked }}\" hint-placeholder-val=\"{{ false }}\"><a href=\"{{ i.cardImageHref }}\" onClick=\"{{ guard }}\" aria-label=\"{{ i.cardImageAria }}\" data-source-pointer=\"{{ i.cardImage.linkPtr }}\" style=\"display:block;width:100%\"><img src=\"{{ i.cardImage.src }}\" alt=\"{{ i.cardImage.alt }}\" width=\"{{ i.cardImage.width }}\" height=\"{{ i.cardImage.height }}\" loading=\"lazy\" data-source-pointer=\"{{ i.cardImage.ptr }}\" style=\"display:block;width:100%;max-width:{{ i.cardImage.maxWidth }};height:auto;border-radius:4px\"></a></sc-if>\n            <sc-if value=\"{{ i.cardImagePlain }}\" hint-placeholder-val=\"{{ true }}\"><img src=\"{{ i.cardImage.src }}\" alt=\"{{ i.cardImage.alt }}\" width=\"{{ i.cardImage.width }}\" height=\"{{ i.cardImage.height }}\" loading=\"lazy\" data-source-pointer=\"{{ i.cardImage.ptr }}\" style=\"display:block;width:100%;max-width:{{ i.cardImage.maxWidth }};height:auto\"></sc-if>\n            <sc-if value=\"{{ i.cardTitleLinked }}\" hint-placeholder-val=\"{{ false }}\"><h3 data-source-pointer=\"{{ i.cardTitlePtr }}\" style=\"font-family:'Marcellus',serif;font-size:22px;line-height:1.3;margin:0\"><a href=\"{{ i.cardTitleHref }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ i.title }}</a></h3></sc-if>\n            <sc-if value=\"{{ i.cardTitlePlain }}\" hint-placeholder-val=\"{{ true }}\"><h3 data-source-pointer=\"{{ i.cardTitlePtr }}\" style=\"font-family:'Marcellus',serif;font-size:22px;line-height:1.3;margin:0\">{{ i.title }}</h3></sc-if>\n            <sc-if value=\"{{ i.hasCardBody }}\" hint-placeholder-val=\"{{ true }}\"><p data-source-pointer=\"{{ i.cardBodyPtr }}\" style=\"margin:0;font-size:17px;line-height:1.7;text-wrap:pretty\">{{ i.cardBodyInline }}</p></sc-if>\n            <sc-if value=\"{{ i.hasCta }}\" hint-placeholder-val=\"{{ false }}\"><a href=\"{{ i.cardCta.href }}\" onClick=\"{{ guard }}\" data-source-pointer=\"{{ i.cardCta.ptr }}\" style=\"display:inline-flex;align-items:center;min-height:48px;font-weight:700;font-size:15px;letter-spacing:1px\">{{ i.cardCta.text }}</a></sc-if>\n            <sc-if value=\"{{ i.hasMoreLink }}\" hint-placeholder-val=\"{{ false }}\"><a href=\"{{ i.cardMore.href }}\" onClick=\"{{ guard }}\" data-source-pointer=\"{{ i.cardMore.ptr }}\" style=\"display:inline-flex;align-items:center;min-height:48px;font-weight:700;font-size:16px\">{{ i.cardMore.text }}</a></sc-if>\n            <sc-if value=\"{{ i.hasMoreLabel }}\" hint-placeholder-val=\"{{ false }}\"><span data-source-pointer=\"{{ i.cardMore.ptr }}\" style=\"display:inline-flex;align-items:center;min-height:44px;font-size:16px;color:#75695A\">{{ i.cardMore.text }}</span></sc-if>\n          </div>\n        </sc-if>\n        <sc-if value=\"{{ i.isJob }}\" hint-placeholder-val=\"{{ false }}\">\n          <div data-source-pointer=\"{{ i.ptr }}\" style=\"border:1px solid #E0D7C4;border-radius:4px;background:#fff;padding:20px;display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:0 0 16px\">\n            <img src=\"{{ i.jobImage.src }}\" alt=\"{{ i.jobImage.alt }}\" width=\"{{ i.jobImage.width }}\" height=\"{{ i.jobImage.height }}\" loading=\"lazy\" data-source-pointer=\"{{ i.jobImage.ptr }}\" style=\"display:block;width:72px;height:72px;border-radius:4px;object-fit:cover;flex:none\">\n            <h2 style=\"font-family:'Marcellus',serif;font-size:24px;line-height:1.3;margin:0;min-width:0;flex:1 1 220px\"><a href=\"{{ i.jobHref }}\" onClick=\"{{ guard }}\" data-source-pointer=\"{{ i.jobLinkPtr }}\">{{ i.title }}</a></h2>\n            <sc-if value=\"{{ i.hasMore }}\" hint-placeholder-val=\"{{ false }}\"><a href=\"{{ i.jobMore.href }}\" onClick=\"{{ guard }}\" data-source-pointer=\"{{ i.jobMore.ptr }}\" style=\"display:inline-flex;align-items:center;min-height:48px;padding:12px 20px;border:1.5px solid #5A4420;border-radius:4px;font-weight:700;font-size:15px;color:#5A4420\" style-hover=\"background:#5A4420;color:#F7F4EA;text-decoration:none\">{{ i.jobMore.text }}</a></sc-if>\n          </div>\n        </sc-if>\n        <sc-if value=\"{{ i.isFigure }}\" hint-placeholder-val=\"{{ false }}\">\n          <figure style=\"margin:8px 0 22px\">\n            <sc-if value=\"{{ i.hasLink }}\" hint-placeholder-val=\"{{ false }}\">\n              <a href=\"{{ i.href }}\" onClick=\"{{ guard }}\" aria-label=\"{{ i.ariaLabel }}\" style=\"display:inline-block\"><img src=\"{{ i.src }}\" alt=\"{{ i.alt }}\" width=\"{{ i.width }}\" height=\"{{ i.height }}\" loading=\"lazy\" data-source-pointer=\"{{ i.ptr }}\" style=\"display:block;width:100%;max-width:{{ i.maxWidth }};height:auto;border-radius:4px\"></a>\n            </sc-if>\n            <sc-if value=\"{{ i.plainImage }}\" hint-placeholder-val=\"{{ true }}\">\n              <img src=\"{{ i.src }}\" alt=\"{{ i.alt }}\" width=\"{{ i.width }}\" height=\"{{ i.height }}\" loading=\"lazy\" data-source-pointer=\"{{ i.ptr }}\" style=\"display:block;width:100%;max-width:{{ i.maxWidth }};height:auto;border-radius:4px\">\n            </sc-if>\n          </figure>\n        </sc-if>\n        <sc-if value=\"{{ i.isLink }}\" hint-placeholder-val=\"{{ false }}\">\n          <p style=\"margin:0 0 18px\">\n            <a href=\"{{ i.href }}\" onClick=\"{{ guard }}\" rel=\"{{ i.rel }}\" data-source-pointer=\"{{ i.ptr }}\" style=\"display:inline-flex;align-items:center;min-height:48px;padding:12px 22px;border:1.5px solid #006038;border-radius:4px;font-weight:700;font-size:16px\" style-hover=\"background:#006038;color:#F7F4EA;text-decoration:none\">{{ i.text }}</a>\n          </p>\n        </sc-if>\n      </div>\n    </sc-for>\n  </article>\n</div>\n</sc-if>\n  <sc-if value=\"{{ hasUtility }}\" hint-placeholder-val=\"{{ false }}\">\n  <section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 8px\">\n    <sc-if value=\"{{ hasCrumbs }}\" hint-placeholder-val=\"{{ false }}\">\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\">\n        <sc-for list=\"{{ crumbs }}\" as=\"c\" hint-placeholder-count=\"1\"><a href=\"{{ c.url }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ c.label }}</a><span aria-hidden=\"true\">/</span></sc-for>\n        <span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">{{ crumbLast }}</span>\n      </nav>\n    </sc-if>\n    <h1 id=\"u7-h1\" style=\"font-family:'Marcellus',serif;font-size:clamp(32px,3.4vw,50px);line-height:1.14;margin:6px 0 0;text-wrap:balance\">{{ U.h1 }}</h1>\n  </section>\n  <sc-for list=\"{{ sections }}\" as=\"s\" hint-placeholder-count=\"3\">\n    <section data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:10px 0;min-width:0;overflow-wrap:anywhere\">{{ s.el }}</section>\n  </sc-for>\n  <sc-if value=\"{{ hasNeutralState }}\" hint-placeholder-val=\"{{ false }}\">\n    <section aria-labelledby=\"u7-neutral-h\" style=\"width:min(1220px,94%);margin:0 auto;padding:10px 0 40px\">\n      <h2 id=\"u7-neutral-h\" style=\"font-family:'Marcellus',serif;font-weight:400;font-size:22px;line-height:1.25;margin:0 0 10px;color:#006038\">{{ neutralHeading }}</h2>\n      <p style=\"margin:0;font-size:16.5px;line-height:1.7;max-width:70ch;text-wrap:pretty\">{{ neutralText }}</p>\n    </section>\n  </sc-if>\n  <sc-if value=\"{{ hasFixtureControls }}\" hint-placeholder-val=\"{{ false }}\">\n    <section aria-label=\"源数据控件\" style=\"width:min(1220px,94%);margin:0 auto;padding:8px 0 34px\">\n      <div data-fixture-controls=\"true\" style=\"display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;max-width:640px\">\n        <sc-for list=\"{{ fixtureFields }}\" as=\"f\" hint-placeholder-count=\"1\">\n          <div style=\"display:flex;flex-direction:column;gap:6px;flex:1 1 260px;min-width:0\">\n            <label for=\"{{ f.id }}\" style=\"font-weight:700;font-size:15.5px\">{{ f.label }}</label>\n            <input id=\"{{ f.id }}\" type=\"{{ f.type }}\" placeholder=\"{{ f.placeholder }}\" required=\"{{ f.required }}\" aria-required=\"{{ f.ariaRequired }}\" data-source-pointer=\"{{ f.ptr }}\" onKeyDown=\"{{ fixtureGuard }}\" style=\"min-height:52px;padding:0 14px;border:1px solid #8A7B63;border-radius:4px;font-size:16.5px;background:#fff;min-width:0\" />\n          </div>\n        </sc-for>\n        <sc-for list=\"{{ fixtureButtons }}\" as=\"b\" hint-placeholder-count=\"1\">\n          <button type=\"button\" id=\"{{ b.id }}\" onClick=\"{{ fixtureGuard }}\" data-source-pointer=\"{{ b.ptr }}\" style=\"display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 24px;background:#5A4420;color:#F7F4EA;border:0;border-radius:4px;font-weight:700;font-size:16px;cursor:pointer\">{{ b.label }}</button>\n        </sc-for>\n      </div>\n      <p aria-live=\"polite\" style=\"margin:12px 0 0;font-size:15.5px;line-height:1.6;color:#514a3f;max-width:640px\">{{ fixtureNotice }}</p>\n    </section>\n  </sc-if>\n  <sc-if value=\"{{ hasSearch }}\" hint-placeholder-val=\"{{ false }}\">\n    <section aria-labelledby=\"u7-search-h\" style=\"width:min(1220px,94%);margin:0 auto;padding:8px 0 40px\">\n      <h2 id=\"u7-search-h\" style=\"font-family:'Marcellus',serif;font-weight:400;font-size:22px;line-height:1.25;margin:0 0 12px;color:#006038\">搜索</h2>\n      <form id=\"u7-search\" noValidate=\"{{ true }}\" onSubmit=\"{{ searchGuard }}\" style=\"display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;max-width:640px\">\n        <sc-for list=\"{{ searchFields }}\" as=\"f\" hint-placeholder-count=\"1\">\n          <div style=\"display:flex;flex-direction:column;gap:6px;flex:1 1 260px;min-width:0\">\n            <label for=\"{{ f.id }}\" style=\"font-weight:700;font-size:15.5px\">{{ f.label }}</label>\n            <input id=\"{{ f.id }}\" name=\"{{ f.name }}\" type=\"{{ f.type }}\" placeholder=\"{{ f.placeholder }}\" required=\"{{ f.required }}\" aria-required=\"{{ f.ariaRequired }}\" data-source-pointer=\"{{ f.ptr }}\" style=\"min-height:52px;padding:0 14px;border:1px solid #8A7B63;border-radius:4px;font-size:16.5px;background:#fff;min-width:0\" />\n          </div>\n        </sc-for>\n        <button type=\"submit\" style=\"display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 24px;background:#5A4420;color:#F7F4EA;border:0;border-radius:4px;font-weight:700;font-size:16px;cursor:pointer\">{{ searchButtonLabel }}</button>\n      </form>\n      <p aria-live=\"polite\" style=\"margin:12px 0 0;font-size:15.5px;line-height:1.6;color:#514a3f;max-width:640px\">{{ searchNotice }}</p>\n    </section>\n  </sc-if>\n  </sc-if>\n  <sc-if value=\"{{ hasHist9 }}\" hint-placeholder-val=\"{{ false }}\">\n  <section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 8px\">\n    <sc-if value=\"{{ hasCrumbs }}\" hint-placeholder-val=\"{{ true }}\">\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\">\n        <sc-for list=\"{{ crumbs }}\" as=\"c\" hint-placeholder-count=\"3\"><a href=\"{{ c.url }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ c.label }}</a><span aria-hidden=\"true\">/</span></sc-for>\n        <span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">{{ crumbLast }}</span>\n      </nav>\n    </sc-if>\n    <p id=\"hist9-status\" style=\"margin:8px 0 0;display:inline-flex;align-items:center;min-height:40px;padding:0 16px;border:1px solid #5A4420;border-radius:4px;font-family:'Mulish',sans-serif;font-weight:700;font-size:14.5px;letter-spacing:1.2px;text-transform:uppercase;color:#5A4420\">{{ H.statusLabel }}</p>\n    <h1 id=\"hist9-h1\" style=\"font-family:'Marcellus',serif;font-size:clamp(32px,3.4vw,50px);line-height:1.14;margin:10px 0 0;text-wrap:balance\">{{ H.h1 }}</h1>\n    <p id=\"hist9-notice\" role=\"note\" style=\"margin:16px 0 0;padding:14px 18px;background:#F4F0E4;border-left:4px solid #5A4420;font-size:16.5px;line-height:1.7;max-width:78ch;text-wrap:pretty;overflow-wrap:anywhere\">{{ H.historicalNotice }}</p>\n    <p style=\"margin:14px 0 0;font-size:16px\"><a href=\"{{ archiveUrl }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ H.archiveLink.label }}</a></p>\n    <sc-if value=\"{{ hasHeroImage }}\" hint-placeholder-val=\"{{ false }}\">\n      <div style=\"margin:22px 0 0;min-width:0\">{{ heroEl }}</div>\n    </sc-if>\n  </section>\n  <section aria-labelledby=\"hist9-src-h\" style=\"width:min(1220px,94%);margin:0 auto;padding:10px 0 0\">\n    <h2 id=\"hist9-src-h\" style=\"font-family:'Marcellus',serif;font-weight:400;font-size:clamp(22px,2.1vw,28px);line-height:1.25;margin:18px 0 4px;color:#006038\">{{ H.sourceHeadingLabel }}</h2>\n  </section>\n  <sc-for list=\"{{ sections }}\" as=\"s\" hint-placeholder-count=\"6\">\n    <section data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:8px 0;min-width:0;overflow-wrap:anywhere\">{{ s.el }}</section>\n  </sc-for>\n  <sc-if value=\"{{ hasContextGroups }}\" hint-placeholder-val=\"{{ false }}\">\n    <nav aria-labelledby=\"lk-ctx-h\" data-context-nav=\"grouped\" style=\"width:min(1220px,94%);margin:0 auto;padding:18px 0 40px;border-top:1px solid #DCD3C0\">\n      <h2 id=\"lk-ctx-h\" data-source-pointer=\"{{ contextHeadingPtr }}\" style=\"font-family:'Marcellus',serif;font-weight:400;font-size:24px;line-height:1.25;margin:14px 0 12px;color:#006038\">{{ contextHeading }}</h2>\n      <ul style=\"list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:18px 40px\">\n        <sc-for list=\"{{ contextGroups }}\" as=\"g\" hint-placeholder-count=\"5\">\n          <li style=\"min-width:0;flex:1 1 240px\">\n            <h3 id=\"{{ g.labelId }}\" data-source-pointer=\"{{ g.ptr }}\" style=\"font-family:'Mulish',sans-serif;font-weight:700;font-size:16.5px;margin:0 0 6px\">{{ g.title }}</h3>\n            <ul aria-labelledby=\"{{ g.labelId }}\" style=\"list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px\">\n              <sc-for list=\"{{ g.links }}\" as=\"l\" hint-placeholder-count=\"3\">\n                <li style=\"min-width:0\"><a href=\"{{ l.url }}\" onClick=\"{{ guard }}\" data-source-pointer=\"{{ l.ptr }}\" data-source-href=\"{{ l.sourceHref }}\" style=\"display:flex;align-items:center;min-height:44px;font-size:16px;line-height:1.45;overflow-wrap:anywhere\">{{ l.label }}</a></li>\n              </sc-for>\n            </ul>\n          </li>\n        </sc-for>\n      </ul>\n    </nav>\n  </sc-if>\n  <sc-if value=\"{{ hasRelated }}\" hint-placeholder-val=\"{{ false }}\">\n    <nav aria-labelledby=\"hist9-rel-h\" style=\"width:min(1220px,94%);margin:0 auto;padding:18px 0 40px;border-top:1px solid #DCD3C0\">\n      <h2 id=\"hist9-rel-h\" style=\"font-family:'Marcellus',serif;font-weight:400;font-size:24px;line-height:1.25;margin:14px 0 10px;color:#006038\">{{ H.currentHeading }}</h2>\n      <ul style=\"list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px\">\n        <sc-for list=\"{{ relatedLinks }}\" as=\"l\" hint-placeholder-count=\"9\">\n          <li style=\"min-width:0\"><a href=\"{{ l.url }}\" onClick=\"{{ guard }}\" style=\"display:flex;align-items:center;min-height:44px;font-size:16.5px;line-height:1.45\">{{ l.label }}</a></li>\n        </sc-for>\n      </ul>\n    </nav>\n  </sc-if>\n  </sc-if>\n  <sc-if value=\"{{ hasReader6c }}\" hint-placeholder-val=\"{{ false }}\">\n  <section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 8px\">\n    <sc-if value=\"{{ hasCrumbs }}\" hint-placeholder-val=\"{{ true }}\">\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\">\n        <sc-for list=\"{{ crumbs }}\" as=\"c\" hint-placeholder-count=\"2\"><a href=\"{{ c.url }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ c.label }}</a><span aria-hidden=\"true\">/</span></sc-for>\n        <span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">{{ crumbLast }}</span>\n      </nav>\n    </sc-if>\n    <h1 id=\"r6c-h1\" style=\"font-family:'Marcellus',serif;font-size:clamp(34px,3.6vw,54px);line-height:1.12;margin:6px 0 0;text-wrap:balance\">{{ Z.h1 }}</h1>\n  </section>\n  <sc-for list=\"{{ sections }}\" as=\"s\" hint-placeholder-count=\"3\">\n    <sc-if value=\"{{ s.isNav }}\" hint-placeholder-val=\"{{ false }}\">\n      <nav aria-label=\"{{ s.navLabel }}\" data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</nav>\n    </sc-if>\n    <sc-if value=\"{{ s.isSection }}\" hint-placeholder-val=\"{{ true }}\">\n      <section data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</section>\n    </sc-if>\n  </sc-for>\n  </sc-if>\n  <sc-if value=\"{{ hasReader25b }}\" hint-placeholder-val=\"{{ false }}\">\n  <section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 8px\">\n    <sc-if value=\"{{ hasCrumbs }}\" hint-placeholder-val=\"{{ true }}\">\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\">\n        <sc-for list=\"{{ crumbs }}\" as=\"c\" hint-placeholder-count=\"2\"><a href=\"{{ c.url }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ c.label }}</a><span aria-hidden=\"true\">/</span></sc-for>\n        <span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">{{ crumbLast }}</span>\n      </nav>\n    </sc-if>\n    <h1 id=\"r25b-h1\" style=\"font-family:'Marcellus',serif;font-size:clamp(34px,3.6vw,54px);line-height:1.12;margin:6px 0 0;text-wrap:balance\">{{ Y.h1 }}</h1>\n    <sc-if value=\"{{ hasAvailability }}\" hint-placeholder-val=\"{{ false }}\">\n      <p id=\"r25b-availability\" style=\"margin:14px 0 0;display:inline-flex;align-items:center;min-height:40px;padding:0 16px;border:1px solid #5A4420;border-radius:4px;font-family:'Mulish',sans-serif;font-weight:700;font-size:15px;letter-spacing:1.2px;text-transform:uppercase;color:#5A4420\">{{ availability }}</p>\n    </sc-if>\n  </section>\n  <sc-for list=\"{{ sections }}\" as=\"s\" hint-placeholder-count=\"3\">\n    <sc-if value=\"{{ s.isNav }}\" hint-placeholder-val=\"{{ false }}\">\n      <nav aria-label=\"{{ s.navLabel }}\" data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</nav>\n    </sc-if>\n    <sc-if value=\"{{ s.isSection }}\" hint-placeholder-val=\"{{ true }}\">\n      <section data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</section>\n    </sc-if>\n  </sc-for>\n  </sc-if>\n  <sc-if value=\"{{ hasReader25 }}\" hint-placeholder-val=\"{{ false }}\">\n  <section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 8px\">\n    <sc-if value=\"{{ hasCrumbs }}\" hint-placeholder-val=\"{{ true }}\">\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\">\n        <sc-for list=\"{{ crumbs }}\" as=\"c\" hint-placeholder-count=\"2\"><a href=\"{{ c.url }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ c.label }}</a><span aria-hidden=\"true\">/</span></sc-for>\n        <span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">{{ crumbLast }}</span>\n      </nav>\n    </sc-if>\n    <h1 id=\"r25-h1\" style=\"font-family:'Marcellus',serif;font-size:clamp(34px,3.6vw,54px);line-height:1.12;margin:6px 0 0;text-wrap:balance\">{{ X.h1 }}</h1>\n  </section>\n  <sc-for list=\"{{ sections }}\" as=\"s\" hint-placeholder-count=\"3\">\n    <sc-if value=\"{{ s.isNav }}\" hint-placeholder-val=\"{{ false }}\">\n      <nav aria-label=\"{{ s.navLabel }}\" data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</nav>\n    </sc-if>\n    <sc-if value=\"{{ s.isSection }}\" hint-placeholder-val=\"{{ true }}\">\n      <section data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</section>\n    </sc-if>\n  </sc-for>\n  </sc-if>\n  <sc-if value=\"{{ hasCommercial }}\" hint-placeholder-val=\"{{ false }}\">\n  <section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 8px\">\n    <sc-if value=\"{{ hasCrumbs }}\" hint-placeholder-val=\"{{ true }}\">\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\">\n        <sc-for list=\"{{ crumbs }}\" as=\"c\" hint-placeholder-count=\"2\"><a href=\"{{ c.url }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ c.label }}</a><span aria-hidden=\"true\">/</span></sc-for>\n        <span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">{{ crumbLast }}</span>\n      </nav>\n    </sc-if>\n    <h1 id=\"com-h1\" style=\"font-family:'Marcellus',serif;font-size:clamp(34px,3.6vw,54px);line-height:1.12;margin:6px 0 0;text-wrap:balance\">{{ K.h1 }}</h1>\n  </section>\n  <sc-for list=\"{{ sections }}\" as=\"s\" hint-placeholder-count=\"4\">\n    <sc-if value=\"{{ s.isNav }}\" hint-placeholder-val=\"{{ false }}\">\n      <div data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">\n        <sc-if value=\"{{ hasNavToggle }}\" hint-placeholder-val=\"{{ false }}\">\n          <button type=\"button\" id=\"com-nav-toggle\" aria-expanded=\"{{ navExpanded }}\" aria-controls=\"com-nav\" onClick=\"{{ toggleNav }}\" style=\"display:inline-flex;align-items:center;gap:12px;min-height:52px;padding:0 22px;border:1px solid #5A4420;border-radius:4px;background:#fff;font-family:'Mulish',sans-serif;font-weight:700;font-size:16px;color:#2A2118;cursor:pointer\">\n            <span aria-hidden=\"true\" style=\"font-size:20px;line-height:1;color:#006038\">{{ navToggleGlyph }}</span>{{ navToggleLabel }}\n          </button>\n        </sc-if>\n        <nav id=\"com-nav\" aria-label=\"分类导航\" hidden=\"{{ navHidden }}\" style=\"display:{{ navDisplay }};margin:14px 0 0;min-width:0\">{{ s.el }}</nav>\n      </div>\n    </sc-if>\n    <sc-if value=\"{{ s.isSection }}\" hint-placeholder-val=\"{{ true }}\">\n      <section data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</section>\n    </sc-if>\n  </sc-for>\n  </sc-if>\n  <sc-if value=\"{{ hasCollection }}\" hint-placeholder-val=\"{{ false }}\">\n  <section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 8px\">\n    <sc-if value=\"{{ hasCrumbs }}\" hint-placeholder-val=\"{{ true }}\">\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\">\n        <sc-for list=\"{{ crumbs }}\" as=\"c\" hint-placeholder-count=\"2\"><a href=\"{{ c.url }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ c.label }}</a><span aria-hidden=\"true\">/</span></sc-for>\n        <span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">{{ crumbLast }}</span>\n      </nav>\n    </sc-if>\n    <h1 id=\"coll-h1\" style=\"font-family:'Marcellus',serif;font-size:clamp(34px,3.6vw,54px);line-height:1.12;margin:6px 0 0;text-wrap:balance\">{{ C.h1 }}</h1>\n  </section>\n  <sc-for list=\"{{ sections }}\" as=\"s\" hint-placeholder-count=\"4\">\n    <section data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</section>\n  </sc-for>\n  </sc-if>\n  <sc-if value=\"{{ hasTravel }}\" hint-placeholder-val=\"{{ false }}\">\n  <section style=\"width:min(1220px,94%);margin:0 auto;padding:32px 0 8px\">\n    <sc-if value=\"{{ hasCrumbs }}\" hint-placeholder-val=\"{{ true }}\">\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\">\n      <sc-for list=\"{{ crumbs }}\" as=\"c\" hint-placeholder-count=\"2\"><a href=\"{{ c.url }}\" onClick=\"{{ guard }}\" style=\"display:inline-flex;align-items:center;min-height:44px\">{{ c.label }}</a><span aria-hidden=\"true\">/</span></sc-for>\n      <span aria-current=\"page\" style=\"color:#2A2118;display:inline-flex;align-items:center;min-height:44px\">{{ crumbLast }}</span>\n    </nav>\n    </sc-if>\n    <h1 id=\"travel-h1\" style=\"font-family:'Marcellus',serif;font-size:clamp(34px,3.6vw,54px);line-height:1.12;margin:6px 0 0;text-wrap:balance\">{{ T.h1 }}</h1>\n  </section>\n  <sc-if value=\"{{ hasHeroVideo }}\" hint-placeholder-val=\"{{ false }}\">\n    <div style=\"width:min(1220px,94%);margin:22px auto 0\">{{ heroVideoEl }}</div>\n  </sc-if>\n  <sc-for list=\"{{ sections }}\" as=\"s\" hint-placeholder-count=\"4\">\n    <sc-if value=\"{{ s.isNav }}\" hint-placeholder-val=\"{{ false }}\">\n      <nav aria-label=\"{{ s.navLabel }}\" data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</nav>\n    </sc-if>\n    <sc-if value=\"{{ s.isSection }}\" hint-placeholder-val=\"{{ true }}\">\n      <section data-source-component=\"{{ s.component }}\" data-source-pointer=\"{{ s.ptr }}\" style=\"width:min(1220px,94%);margin:0 auto;padding:14px 0;min-width:0\">{{ s.el }}</section>\n    </sc-if>\n  </sc-for>\n  <sc-if value=\"{{ hasVideoCards }}\" hint-placeholder-val=\"{{ false }}\">\n    <section aria-labelledby=\"tv-vids\" style=\"width:min(1220px,94%);margin:0 auto;padding:26px 0 8px\">\n      <h2 id=\"tv-vids\" style=\"font-family:'Marcellus',serif;font-size:clamp(24px,2.4vw,32px);line-height:1.2;margin:0 0 20px\">视频</h2>\n      <ul style=\"list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,272px),1fr));gap:20px\">\n        <sc-for list=\"{{ videoCards }}\" as=\"v\" hint-placeholder-count=\"20\">\n          <li data-video-card=\"{{ v.order }}\" data-source-pointer=\"{{ v.ptr }}\" style=\"border:1px solid #DCD3C0;border-radius:4px;background:#fff;padding:18px;display:flex;flex-direction:column;gap:12px;min-width:0\">\n            <button type=\"button\" data-ahv-video=\"{{ v.youtubeId }}\" aria-label=\"播放视频：{{ v.title }}\" style=\"display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:16/9;border:1px solid #EAE3D4;border-radius:3px;background:#F4F0E4;color:#5A4420;font-size:34px;line-height:1;cursor:pointer;padding:0\">▶</button> <p style=\"margin:0;font-weight:700;font-size:16.5px;line-height:1.5;color:#1F1B16;text-wrap:pretty\">{{ v.title }}</p>\n          </li>\n        </sc-for>\n      </ul>\n    </section>\n  </sc-if>\n  <sc-if value=\"{{ hasMaps }}\" hint-placeholder-val=\"{{ false }}\">\n    <sc-for list=\"{{ mapGroups }}\" as=\"g\" hint-placeholder-count=\"1\">\n      <section style=\"width:min(1220px,94%);margin:0 auto;padding:26px 0 8px\">\n        <h2 style=\"font-family:'Marcellus',serif;font-size:clamp(22px,2.1vw,28px);line-height:1.2;margin:0 0 16px\">{{ g.heading }}</h2>\n        <ul style=\"list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:18px\">\n          <sc-for list=\"{{ g.items }}\" as=\"m\" hint-placeholder-count=\"6\">\n            <li data-map-slot=\"{{ m.order }}\" data-source-pointer=\"{{ m.ptr }}\" style=\"border:1px solid #DCD3C0;border-radius:4px;background:#fff;padding:16px;display:flex;flex-direction:column;gap:10px;min-width:0\">\n              <div aria-hidden=\"true\" style=\"display:flex;align-items:center;justify-content:center;height:120px;border:1px dashed #C9BEA6;border-radius:3px;background:#F7F4EA;color:#75695A;font-size:14px;letter-spacing:1.4px;text-transform:uppercase\">地图</div>\n              <p style=\"margin:0;font-size:16px;line-height:1.55;color:#1F1B16;text-wrap:pretty\">{{ m.title }}</p>\n              <p style=\"margin:0;font-size:14.5px;line-height:1.5;color:#75695A\">{{ m.inactiveLabel }}</p>\n            </li>\n          </sc-for>\n        </ul>\n      </section>\n    </sc-for>\n  </sc-if>\n  <div id=\"travel-viewer\" role=\"dialog\" aria-modal=\"true\" aria-label=\"{{ viewerLabel }}\" onKeyDown=\"{{ viewerKey }}\" style=\"display:{{ viewerDisplay }};position:fixed;inset:0;z-index:200;background:rgba(20,16,10,.94);flex-direction:column;align-items:center;justify-content:center;padding:24px\">\n    <sc-if value=\"{{ viewerOpen }}\" hint-placeholder-val=\"{{ false }}\">{{ viewerEl }}</sc-if>\n    <div aria-live=\"polite\" style=\"color:#F7F4EA;font-size:15px;letter-spacing:1.2px\">{{ viewerCounter }}</div>\n    <div style=\"display:flex;flex-wrap:wrap;gap:12px;margin:16px 0 0\">\n      <button type=\"button\" id=\"travel-prev\" onClick=\"{{ prev }}\" style=\"display:inline-flex;align-items:center;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:14px;cursor:pointer\">上一页</button>\n      <button type=\"button\" id=\"travel-next\" onClick=\"{{ next }}\" style=\"display:inline-flex;align-items:center;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:14px;cursor:pointer\">下一步</button>\n      <button type=\"button\" id=\"travel-close\" onClick=\"{{ close }}\" style=\"display:inline-flex;align-items:center;min-height:48px;padding:0 20px;border:1px solid #F7F4EA;border-radius:4px;background:#F7F4EA;color:#2A2118;font-weight:700;font-size:14px;cursor:pointer\">关闭</button>\n    </div>\n  </div>\n  </sc-if>\n<section data-ahv-maps aria-label=\"我们的位置\" style=\"margin-top:8px\"><h2>我们的位置</h2><p>Kairali 位于印度西南部喀拉拉邦内陆的巴拉卡德（Palakkad）县。</p><div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr));gap:26px;margin:22px 0 30px\"><figure style=\"margin:0\"><img src=\"/ahv/assets/img/travel/9653d662c2fc437a5f8c23e8bef405d70675dedd13aa48633614f1e30dc79abf.webp\" alt=\"印度地图，突出显示西南部的喀拉拉邦，并标出德里和孟买\" loading=\"lazy\" style=\"width:100%;height:190px;object-fit:contain;display:block\"><figcaption style=\"margin-top:10px;font-family:Mulish,system-ui,sans-serif;font-size:12px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:#75695A;text-align:center\">印度喀拉拉邦</figcaption></figure><figure style=\"margin:0\"><img src=\"/ahv/assets/img/travel/f36802a3b9f5345de250dc23004d4b5e14396915f863443e0466434a125d9b9e.webp\" alt=\"喀拉拉邦地图，突出显示巴拉卡德（Palakkad）县，并标出科钦和特里凡得琅\" loading=\"lazy\" style=\"width:100%;height:190px;object-fit:contain;display:block\"><figcaption style=\"margin-top:10px;font-family:Mulish,system-ui,sans-serif;font-size:12px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:#75695A;text-align:center\">喀拉拉邦巴拉卡德（Palakkad）</figcaption></figure><figure style=\"margin:0\"><img src=\"/ahv/assets/img/travel/04afbaee86de67ca8098ebe956cd7dcd3904bb93a88c8e7cbf8507a92dca27cd.webp\" alt=\"帕拉卡德县地图，标出了 Kairali – 阿育吠陀疗愈村的位置\" loading=\"lazy\" style=\"width:100%;height:190px;object-fit:contain;display:block\"><figcaption style=\"margin-top:10px;font-family:Mulish,system-ui,sans-serif;font-size:12px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:#75695A;text-align:center\">位于巴拉卡德（Palakkad）的医院</figcaption></figure></div><figure style=\"margin:0\"><img src=\"/ahv/assets/img/travel/89310cfa7faa54ee1eecf73b427105b0af81fd179ce8fad0e6992eaa563b51c1.webp\" alt=\"园区插画鸟瞰图，按编号标出接待处、阿育吠陀医院、瑜伽中心、冥想厅、别墅、草药园及其他设施\" loading=\"lazy\" style=\"width:100%;height:auto;display:block;border-radius:4px\"><figcaption style=\"margin-top:10px;font-family:Mulish,system-ui,sans-serif;font-size:14.5px;color:#75695A\">园区平面图，标有前台、阿育吠陀医院、瑜伽中心、草药园和别墅的编号。</figcaption></figure></section><section aria-label=\"指导\" data-ahv-article-cta style=\"margin-top:56px;padding:50px 0 56px;background:repeating-linear-gradient(0deg,rgba(193,136,44,.045) 0 1px,transparent 1px 8px),#fff;border-top:1px solid #E9E2D3;border-bottom:1px solid #E9E2D3\">\n    <div style=\"width:min(760px,92%);margin:0 auto;text-align:center\">\n      <ul style=\"margin:0 auto 22px;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:10px 24px;max-width:640px;text-align:left\"> <li style=\"display:flex;gap:10px;align-items:baseline\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span><span>NABH 认证医院</span></li> <li style=\"display:flex;gap:10px;align-items:baseline\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span><span>118+ 年传承</span></li> <li style=\"display:flex;gap:10px;align-items:baseline\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span><span>个体化治疗方案</span></li> <li style=\"display:flex;gap:10px;align-items:baseline\"><span aria-hidden=\"true\" style=\"color:#C1882C\">◆</span><span>World Luxury Award 获奖者</span></li> </ul> <h2 style=\"font-family:'Marcellus',serif;font-size:26px;margin:0 0 12px\">不确定哪个方案适合您？</h2>\n      <p style=\"margin:0 auto 28px;font-size:16.5px;line-height:1.7;color:#514a3f;max-width:56ch\">请用您自己的话说明您的目标——患者护理团队或阿育吠陀医生将为您推荐合适的方案。</p>\n      <div style=\"display:flex;justify-content:center;gap:16px;flex-wrap:wrap\">\n        <a href=\"https://ayurvedichealingvillage.com/zh/online-consultation/\" style=\"background:#EEB41E;color:#2A2118;border-radius:4px;padding:0 34px;min-height:52px;display:inline-flex;align-items:center;font-weight:700;font-size:14px;letter-spacing:1.5px;text-transform:uppercase\" style-hover=\"filter:brightness(.94);text-decoration:none;color:#2A2118\">免费医生问诊</a> <a href=\"https://wa.me/919289838797\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"background:#006038;border:1.5px solid #006038;color:#F7F4EA;border-radius:4px;padding:0 30px;min-height:52px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;text-align:center;font-weight:700;font-size:14px;letter-spacing:1.5px;text-transform:uppercase\" style-hover=\"filter:brightness(.9);color:#F7F4EA;text-decoration:none\">WhatsApp 患者护理</a> <a href=\"https://ayurvedichealingvillage.com/zh/contact-us/\" style=\"border:1.5px solid #5A4420;color:#5A4420;border-radius:4px;padding:0 30px;min-height:52px;display:inline-flex;align-items:center;font-weight:700;font-size:14px;letter-spacing:1.5px;text-transform:uppercase\" style-hover=\"background:#5A4420;color:#F7F4EA;text-decoration:none\">立即咨询</a>\n      </div>\n    </div>\n  </section> </main>\n<dc-import name=\"AHV Chrome Footer\" hint-size=\"100%,320px\"></dc-import>\n</div>\n",
  "logic": "\nclass Component extends DCLogic {\n  state = { navOpen: null };\n  route() { return window.AHV_ARTICLE_RENDER ? window.AHV_ARTICLE_RENDER.resolveRoute(this.props.route) : null; }\n  // A travel route owns the head; the article contract must not overwrite it.\n  isTravel() { const T = window.AHV_TRAVEL_RENDER; return !!(T && T.resolveRoute(this.props.route)); }\n  componentDidMount() {\n    if (this.isUtility7()) { this.syncUtility7Head(); return; }\n    if (this.isHist9()) { this.syncHist9Head(); return; }\n    if (this.isReader6c()) { this.syncReader6cHead(); return; }\n    if (this.isReader25b()) { this.syncReader25bHead(); return; }\n    if (this.isReader25()) { this.syncReader25Head(); return; }\n    if (this.isCommercial()) { this.syncCommercialHead(); return; }\n    if (this.isCollection()) { this.syncCollectionHead(); return; }\n    if (this.isTravel()) { this.syncTravelHead(); return; }\n    const R = this.route(); if (R) { window.AHV_ARTICLE_RENDER.applyHead(R); this._head = R.path; } }\n  componentDidUpdate() {\n    if (this.isUtility7()) { this.syncUtility7Head(); return; }\n    if (this.isHist9()) { this.syncHist9Head(); return; }\n    if (this.isReader6c()) { this.syncReader6cHead(); return; }\n    if (this.isReader25b()) { this.syncReader25bHead(); return; }\n    if (this.isReader25()) { this.syncReader25Head(); return; }\n    if (this.isCommercial()) { this.syncCommercialHead(); return; }\n    if (this.isCollection()) { this.syncCollectionHead(); return; }\n    if (this.isTravel()) { this.syncTravelHead(); return; }\n    const R = this.route(); if (R && R.path !== this._head) { window.AHV_ARTICLE_RENDER.applyHead(R); this._head = R.path; } }\n  openTravel(i) {\n    this._tvFrom = i;\n    this.setState({ tvImage: i });\n    document.body.style.overflow = 'hidden';\n    setTimeout(() => { const c = document.getElementById('travel-close'); if (c) c.focus(); }, 30);\n  }\n  closeTravel() {\n    const from = this._tvFrom;\n    this.setState({ tvImage: null });\n    document.body.style.overflow = '';\n    setTimeout(() => {\n      const T = window.AHV_TRAVEL_RENDER, R = T && T.resolveRoute(this.props.route);\n      if (!R) return;\n      const ptrs = []; R.components.forEach(c => c.blocks.forEach(b => { if (b.kind === 'image') ptrs.push(b.ptr); }));\n      const b = document.querySelector('button[data-travel-image=\"' + ptrs[from] + '\"]');\n      if (b) b.focus();\n    }, 30);\n  }\n  stepTravel(d) {\n    const T = window.AHV_TRAVEL_RENDER, R = T && T.resolveRoute(this.props.route);\n    if (!R || this.state.tvImage == null) return;\n    let n = 0; R.components.forEach(c => c.blocks.forEach(b => { if (b.kind === 'image') n++; }));\n    this.setState(s => ({ tvImage: (s.tvImage + d + n) % n }));\n  }\n  syncTravelHead() {\n    const T = window.AHV_TRAVEL_RENDER, R = T && T.resolveRoute(this.props.route);\n    if (!R) return;\n    if (this._tvHead !== R.path) { T.applyHead(R); this._tvHead = R.path; }\n    if (document.title !== R.metadata.title) document.title = R.metadata.title;\n  }\n  isCollection() { const C = window.AHV_COLLECTION_RENDER; return !!(C && C.resolveRoute(this.props.route)); }\n  isCommercial() { const C = window.AHV_COMMERCIAL_RENDER; return !!(C && C.resolveRoute(this.props.route)); }\n  isReader25() { const C = window.AHV_READER25A_RENDER; return !!(C && C.resolveRoute(this.props.route)); }\n  isReader25b() { const C = window.AHV_READER25B_RENDER; return !!(C && C.resolveRoute(this.props.route)); }\n  // The training-seven dataset binds onto this same accepted reader view through its own thin resolver.\n  isReader6c() { const C = window.AHV_READER6C_RENDER, T = window.AHV_TRAINING7_RENDER, S = window.AHV_STORY_RENDER, N = window.AHV_SEVEN_RENDER;\n    return !!((N && N.resolveRoute(this.props.route)) || (S && S.resolveRoute(this.props.route)) || (T && T.resolveRoute(this.props.route)) || (C && C.resolveRoute(this.props.route))); }\n  // The exception-five datasets bind onto this same accepted utility view through their own thin resolver.\n  isUtility7() { const C = window.AHV_UTILITY7_RENDER, E = window.AHV_EXCEPTION5_RENDER;\n    return !!((E && E.resolveRoute(this.props.route)) || (C && C.resolveRoute(this.props.route))); }\n  syncUtility7Head() {\n    const E = window.AHV_EXCEPTION5_RENDER, ER = E && E.resolveRoute(this.props.route);\n    const C = ER ? E : window.AHV_UTILITY7_RENDER, R = ER || (C && C.resolveRoute(this.props.route));\n    if (!R) return;\n    if (this._u7Head !== R.path) { C.applyHead(R); this._u7Head = R.path; }\n    if (document.title !== R.metadata.title) document.title = R.metadata.title;\n  }\n  isHist9() { const C = window.AHV_HIST9_RENDER, K = window.AHV_LAKSHYA_RENDER;\n    return !!((C && C.resolveRoute(this.props.route)) || (K && K.resolveRoute(this.props.route))); }\n  syncHist9Head() {\n    const K = window.AHV_LAKSHYA_RENDER, KR = K && K.resolveRoute(this.props.route);\n    const C = KR ? K : window.AHV_HIST9_RENDER, R = KR || (C && C.resolveRoute(this.props.route));\n    if (!R) return;\n    if (this._h9Head !== R.path) { C.applyHead(R); this._h9Head = R.path; }\n    if (document.title !== R.metadata.title) document.title = R.metadata.title;\n  }\n  syncReader6cHead() {\n    const NI = window.AHV_SEVEN_RENDER, NIR = NI && NI.resolveRoute(this.props.route);\n    const SY = window.AHV_STORY_RENDER, SYR = !NIR && SY && SY.resolveRoute(this.props.route);\n    const T = window.AHV_TRAINING7_RENDER, TR = !NIR && !SYR && T && T.resolveRoute(this.props.route);\n    const C = NIR ? NI : (SYR ? SY : (TR ? T : window.AHV_READER6C_RENDER)), R = NIR || SYR || TR || (C && C.resolveRoute(this.props.route));\n    if (!R) return;\n    if (this._r6cHead !== R.path) { C.applyHead(R); this._r6cHead = R.path; }\n    if (document.title !== R.metadata.title) document.title = R.metadata.title;\n  }\n  syncReader25bHead() {\n    const C = window.AHV_READER25B_RENDER, R = C && C.resolveRoute(this.props.route);\n    if (!R) return;\n    if (this._r25bHead !== R.path) { C.applyHead(R); this._r25bHead = R.path; }\n    if (document.title !== R.metadata.title) document.title = R.metadata.title;\n  }\n  syncReader25Head() {\n    const C = window.AHV_READER25A_RENDER, R = C && C.resolveRoute(this.props.route);\n    if (!R) return;\n    if (this._r25Head !== R.path) { C.applyHead(R); this._r25Head = R.path; }\n    if (document.title !== R.metadata.title) document.title = R.metadata.title;\n  }\n  syncCommercialHead() {\n    const C = window.AHV_COMMERCIAL_RENDER, R = C && C.resolveRoute(this.props.route);\n    if (!R) return;\n    if (this._comHead !== R.path) { C.applyHead(R); this._comHead = R.path; }\n    if (document.title !== R.metadata.title) document.title = R.metadata.title;\n  }\n  syncCollectionHead() {\n    const C = window.AHV_COLLECTION_RENDER, R = C && C.resolveRoute(this.props.route);\n    if (!R) return;\n    if (this._collHead !== R.path) { C.applyHead(R); this._collHead = R.path; }\n    if (document.title !== R.metadata.title) document.title = R.metadata.title;\n  }\n  renderVals() {\n    const EP = window.AHV_EXCEPTION5_RENDER;\n    const ER = EP ? EP.resolveRoute(this.props.route) : null;\n    const UP = ER ? EP : window.AHV_UTILITY7_RENDER;\n    const UR = ER || (UP ? UP.resolveRoute(this.props.route) : null);\n    if (UR) {\n      const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n      return Object.assign({ guard, isReader: false, hasTravel: false, hasCollection: false, hasCommercial: false,\n        hasReader25: false, hasReader25b: false, hasReader6c: false, hasHist9: false, hasFaq: false, faqGroups: [],\n        hasHero: false, items: [], nav: {}, navGroups: [], navClick: guard,\n        R: { h1: '', heroImg: {} } }, UP.utilityVals(UR, guard));\n    }\n    // The recovered Lakshya route reuses the historical view branch through its own thin resolver.\n    const LKP = window.AHV_LAKSHYA_RENDER;\n    const LKR = LKP ? LKP.resolveRoute(this.props.route) : null;\n    const HP = LKR ? LKP : window.AHV_HIST9_RENDER;\n    const HR9 = LKR || (HP ? HP.resolveRoute(this.props.route) : null);\n    if (HR9) {\n      const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n      return Object.assign({ guard, isReader: false, hasTravel: false, hasCollection: false, hasCommercial: false,\n        hasReader25: false, hasReader25b: false, hasReader6c: false, hasFaq: false, faqGroups: [], hasHero: false,\n        items: [], nav: {}, navGroups: [], navClick: guard, R: { h1: '', heroImg: {} } }, HP.histVals(HR9, guard));\n    }\n    const NIP = window.AHV_SEVEN_RENDER;\n    const NIR = NIP ? NIP.resolveRoute(this.props.route) : null;\n    const SYP = window.AHV_STORY_RENDER;\n    const SYR = NIR ? null : (SYP ? SYP.resolveRoute(this.props.route) : null);\n    const T7P = window.AHV_TRAINING7_RENDER;\n    const T7R = (NIR || SYR) ? null : (T7P ? T7P.resolveRoute(this.props.route) : null);\n    const ZP = NIR ? NIP : (SYR ? SYP : (T7R ? T7P : window.AHV_READER6C_RENDER));\n    const ZR = NIR || SYR || T7R || (ZP ? ZP.resolveRoute(this.props.route) : null);\n    if (ZR) {\n      const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n      return Object.assign({ guard, isReader: false, hasTravel: false, hasCollection: false, hasCommercial: false,\n        hasReader25: false, hasReader25b: false, hasFaq: false, faqGroups: [], hasHero: false, items: [], nav: {},\n        navGroups: [], navClick: guard, R: { h1: '', heroImg: {} }, hasHist9: false }, ZP.readerVals(ZR, guard));\n    }\n    const YP = window.AHV_READER25B_RENDER;\n    const YR = YP ? YP.resolveRoute(this.props.route) : null;\n    if (YR) {\n      const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n      return Object.assign({ guard, isReader: false, hasTravel: false, hasCollection: false, hasCommercial: false,\n        hasReader25: false, hasFaq: false, faqGroups: [], hasHero: false, items: [], nav: {}, navGroups: [],\n        navClick: guard, R: { h1: '', heroImg: {} }, hasReader6c: false, hasHist9: false }, YP.readerVals(YR, guard));\n    }\n    const XP = window.AHV_READER25A_RENDER;\n    const XR = XP ? XP.resolveRoute(this.props.route) : null;\n    if (XR) {\n      const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n      return Object.assign({ guard, isReader: false, hasTravel: false, hasCollection: false, hasCommercial: false,\n        hasFaq: false, faqGroups: [], hasHero: false, items: [], nav: {}, navGroups: [], navClick: guard,\n        R: { h1: '', heroImg: {} }, hasReader25b: false, hasReader6c: false, hasHist9: false }, XP.readerVals(XR, guard));\n    }\n    const MP = window.AHV_COMMERCIAL_RENDER;\n    const MR = MP ? MP.resolveRoute(this.props.route) : null;\n    if (MR) {\n      const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n      const api = { toggleNav: () => this.setState(s => ({ comNavOpen: !s.comNavOpen })) };\n      return Object.assign({ guard, isReader: false, hasTravel: false, hasCollection: false, hasFaq: false,\n        faqGroups: [], hasHero: false, items: [], nav: {}, navGroups: [], navClick: guard, R: { h1: '', heroImg: {} } },\n        MP.commercialVals(MR, this.state, api, guard), { hasReader25: false, hasReader25b: false, hasReader6c: false, hasHist9: false });\n    }\n    const CP = window.AHV_COLLECTION_RENDER;\n    const CR = CP ? CP.resolveRoute(this.props.route) : null;\n    if (CR) {\n      const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n      return Object.assign({ guard, isReader: false, hasTravel: false, hasCommercial: false, hasFaq: false,\n        faqGroups: [], hasHero: false, items: [], nav: {}, navGroups: [], navClick: guard, R: { h1: '', heroImg: {} } },\n        CP.collectionVals(CR, guard), { hasReader25: false, hasReader25b: false, hasReader6c: false, hasHist9: false });\n    }\n    const TP = window.AHV_TRAVEL_RENDER;\n    const TR = TP ? TP.resolveRoute(this.props.route) : null;\n    if (TR) {\n      const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n      const api = { open: (i) => this.openTravel(i), close: () => this.closeTravel(), step: (d) => this.stepTravel(d) };\n      return Object.assign({ guard, isReader: false, hasCollection: false, hasFaq: false, faqGroups: [], hasHero: false,\n        items: [], nav: {}, navGroups: [], navClick: guard, R: { h1: '', heroImg: {} } },\n        TP.travelVals(TR, this.state, api, guard), { hasCommercial: false, hasReader25: false, hasReader25b: false, hasReader6c: false, hasHist9: false });\n    }\n    const P = window.AHV_ARTICLE_RENDER; const R = this.route();\n    const guard = () => {}; /* preview-only nav guard neutralised for the published site */\n    if (!R || !P) return { guard, isReader: true, hasTravel: false, hasCollection: false, hasCommercial: false, hasReader25: false, R: { h1: '', heroImg: {} }, items: [], nav: {}, navGroups: [], crumbs: [], crumbLast: '', hasHero: false, navClick: guard };\n    const vals = P.articleVals(R, this.state, (i) => this.setState({ navOpen: i }), guard);\n    // Grouped FAQ variation: only routes carrying a faq block render it. Multiple panels may stay open, so the\n    // open set is a map keyed by question id rather than a single index.\n    const faq = R.faq ? P.faqVals(R, this.state, (id) => this.setState(s => {\n      const next = Object.assign({}, s.faqOpen || {}); if (next[id]) { delete next[id]; } else { next[id] = true; }\n      return { faqOpen: next };\n    }), guard) : { hasFaq: false, faqGroups: [], faqIntroEl: null, faqClosingEl: null };\n    const hi = R.heroImg || {};\n    return Object.assign({}, faq, { guard, isReader: true, hasTravel: false, hasCollection: false, hasCommercial: false, hasReader25: false, hasReader25b: false, hasReader6c: false, hasHist9: false, R, hasHero: !!(R.heroImg && R.heroImg.src),\n      heroEl: hi.src ? React.createElement('img', { src: hi.src, alt: hi.alt || '', width: hi.width, height: hi.height,\n        'data-source-pointer': hi.ptr, style: { width: '100%', maxWidth: (hi.width || 1440) + 'px', height: 'auto', display: 'block', borderRadius: '4px' } }) : null,\n      // Own-source hero overlay (this route carries one): rendered at its exact source 95x57, never scaled.\n      hasHeroLotus: !!(R.heroLotus && R.heroLotus.src),\n      heroLotusEl: (R.heroLotus && R.heroLotus.src) ? React.createElement('img', { src: R.heroLotus.src, alt: R.heroLotus.alt || '',\n        width: R.heroLotus.width, height: R.heroLotus.height, 'data-source-pointer': R.heroLotus.ptr,\n        style: { position: 'absolute', left: '50%', bottom: '18px', transform: 'translateX(-50%)',\n          width: R.heroLotus.width + 'px', height: R.heroLotus.height + 'px', display: 'block' } }) : null,\n      hasNav: !!(R.nav && R.nav.groups && R.nav.groups.length),\n      // In-reader context links switch route in place; every off-route destination is blocked in review.\n      navClick: (e) => {\n        const href = e.currentTarget.getAttribute('href') || '';\n        e.preventDefault();\n        if (href.charAt(0) !== '?') return;\n        try { history.replaceState(null, '', href); } catch (err) {}\n        this.forceUpdate();\n        const R2 = this.route();\n        if (R2) { window.AHV_ARTICLE_RENDER.applyHead(R2); this._head = R2.path; }\n        const h = document.getElementById('page-h1');\n        if (h) { h.setAttribute('tabindex', '-1'); h.focus({ preventScroll: true }); window.scrollTo({ top: 0, behavior: 'instant' }); }\n      }\n    }, vals, { items: vals.items.map(i => Object.assign({}, i, { plainImage: i.isFigure && !i.hasLink })) });\n  }\n}\n",
  "props": "{\"route\":{\"editor\":\"enum\",\"default\":\"/ayurvedic-products/\",\"tsType\":\"string\",\"options\":[\"/ayurvedic-products/\",\"/ayurvedic-proprietary-medicines/\",\"/ayurvedic-proprietary-organics/\",\"/ayurvedic-resturant-and-cooking-at-healing-village/\",\"/back-water-tour/\",\"/books/\",\"/brief-on-kairali/\",\"/consultancy/\",\"/cooking-classes/\",\"/destination-palakkad/\",\"/elephant-safari/\",\"/ayurvedic-links/\",\"/butterfly-booklet/\",\"/careers/\",\"/chef-retreat-food-to-wellness/\",\"/cultural-events/\",\"/experience/\",\"/ayurveda-training/\",\"/training-course-fees/\",\"/archive/\",\"/awards-and-accreditations/\",\"/ayurveda-offers/\",\"/ayurveda-package/\",\"/ayurveda-retreats-for-everyone/\",\"/defence-and-paramilitary-forces/\"],\"section\":\"Prototype route binding (not part of the public design)\"}}",
  "scripts": [
    "/ahv/l10n/zh/assets/article-family-data.js",
    "/ahv/l10n/zh/assets/article-family-render.js",
    "/ahv/l10n/zh/assets/travel-family-data.js",
    "/ahv/l10n/zh/assets/travel-family-render.js",
    "/ahv/l10n/zh/assets/collection-family-data.js",
    "/ahv/l10n/zh/assets/collection-family-render.js",
    "/ahv/l10n/zh/assets/commercial-family-data.js",
    "/ahv/l10n/zh/assets/commercial-family-render.js",
    "/ahv/l10n/zh/assets/reader25a-family-data.js",
    "/ahv/l10n/zh/assets/reader25a-family-render.js",
    "/ahv/l10n/zh/assets/reader25b-family-data.js",
    "/ahv/l10n/zh/assets/reader25b-family-render.js",
    "/ahv/l10n/zh/assets/seven-informational-data.js",
    "/ahv/l10n/zh/assets/seven-informational-render.js",
    "/ahv/l10n/zh/assets/story-family-data.js",
    "/ahv/l10n/zh/assets/story-family-render.js",
    "/ahv/l10n/zh/assets/training7-family-data.js",
    "/ahv/l10n/zh/assets/training7-family-render.js",
    "/ahv/l10n/zh/assets/reader6c-family-data.js",
    "/ahv/l10n/zh/assets/reader6c-family-render.js",
    "/ahv/l10n/zh/assets/hist9-family-data.js",
    "/ahv/l10n/zh/assets/utility7-family-data.js",
    "/ahv/l10n/zh/assets/utility7-family-render.js",
    "/ahv/l10n/zh/assets/exception-five-family-data.js",
    "/ahv/l10n/zh/assets/exception-five-family-render.js",
    "/ahv/l10n/zh/assets/lakshya-recovered-family-data.js",
    "/ahv/l10n/zh/assets/lakshya-recovered-family-render.js",
    "/ahv/l10n/zh/assets/hist9-family-render.js"
  ],
  "locale": "zh-Hans"
}
