{"compiledCode":"\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _react = require('react'); var _react2 = _interopRequireDefault(_react);\n\n\nconst kind = \"collection\";\nconst css = \"/* Marketing templates own their canvas; the host still owns navigation/footer.\\n   Match suffixes because public builds namespace the kernel classes. */\\nmain[class*=\\\"-site__main\\\"]:has(.hwt) {\\n  padding: 0;\\n}\\nmain[class*=\\\"-site__main\\\"] :is([class*=\\\"-site__container\\\"], [class*=\\\"-site__page-stack\\\"]):has(.hwt) {\\n  width: 100%;\\n  max-width: none;\\n  gap: 0;\\n}\\nmain[class*=\\\"-site__main\\\"] :is([class*=\\\"-site__authored-runtime\\\"], [class*=\\\"-site__authored-document\\\"], [class*=\\\"-site__authored-zone\\\"]):has(.hwt) {\\n  gap: 0;\\n  padding: 0;\\n  margin: 0;\\n}\\nmain[class*=\\\"-site__main\\\"] [class*=\\\"-site__authored-document\\\"]:has(.hwt) {\\n  display: block;\\n}\\nmain[class*=\\\"-site__main\\\"] [class*=\\\"-runtime__block\\\"]:has(.hwt) {\\n  display: block;\\n  gap: 0;\\n  padding: 0;\\n  border: 0;\\n  border-radius: 0;\\n  background: transparent;\\n  box-shadow: none;\\n}\\n.hwt {\\n  --t-bg: var(--cedros-runtime-bg, #f6f5f2);\\n  --t-panel: var(--cedros-runtime-panel, #fffdf7);\\n  --t-ink: var(--cedros-runtime-text, #07111f);\\n  --t-muted: var(--cedros-runtime-muted, #555b60);\\n  --t-line: var(--cedros-runtime-border, #d9d7d2);\\n  --t-accent: var(--cedros-runtime-accent, #315b59);\\n  --t-action-bg: var(--cedros-runtime-action-bg, #07111f);\\n  --t-action-fg: var(--cedros-runtime-action-fg, #f6f5f2);\\n  box-sizing: border-box;\\n  width: 100%;\\n  max-width: 100%;\\n  min-width: 0;\\n  background: var(--t-bg);\\n  color: var(--t-ink);\\n  font: 400 17px/1.65 var(--cedros-font-body, \\\"IBM Plex Sans\\\", sans-serif);\\n  overflow-wrap: break-word;\\n}\\n/* Public raw-code styles retain their token names while the host namespaces\\n   its tokens. Keep the fallback palette aligned with the host's resolved mode. */\\n@media screen {\\n  html:is([class*=\\\"-dark\\\"], .dark) .hwt {\\n    --t-bg: var(--cedros-runtime-bg, #101618);\\n    --t-panel: var(--cedros-runtime-panel, #202927);\\n    --t-ink: var(--cedros-runtime-text, #f6f5f2);\\n    --t-muted: var(--cedros-runtime-muted, #b9c2c0);\\n    --t-line: var(--cedros-runtime-border, #46514e);\\n    --t-accent: var(--cedros-runtime-accent, #9bbfba);\\n    --t-action-bg: var(--cedros-runtime-action-bg, #f6f5f2);\\n    --t-action-fg: var(--cedros-runtime-action-fg, #101618);\\n  }\\n}\\n.hwt * {\\n  box-sizing: border-box;\\n}\\n.hwt .t-wrap {\\n  max-width: var(--cedros-container-wide, 76rem);\\n  padding-inline: clamp(1.25rem, 4vw, 4rem);\\n  margin-inline: auto;\\n}\\n.hwt h1,\\n.hwt h2,\\n.hwt h3,\\n.hwt p,\\n.hwt figure {\\n  margin: 0;\\n}\\n.hwt h1,\\n.hwt h2 {\\n  font-family: var(--cedros-font-heading, \\\"Newsreader\\\", Georgia, serif);\\n  font-weight: 400;\\n  text-wrap: balance;\\n}\\n.hwt h1 {\\n  font-size: clamp(2.75rem, 5.4vw, 5.4rem);\\n  line-height: 1.02;\\n  letter-spacing: -0.045em;\\n  max-width: 16ch;\\n}\\n.hwt h2 {\\n  font-size: clamp(2rem, 3.6vw, 3.5rem);\\n  line-height: 1.12;\\n  letter-spacing: -0.025em;\\n}\\n.hwt h3 {\\n  font-size: 1.25rem;\\n  line-height: 1.4;\\n  font-weight: 500;\\n}\\n.hwt p {\\n  max-width: 66ch;\\n}\\n.hwt a {\\n  color: var(--t-accent);\\n  text-underline-offset: 0.25em;\\n}\\n.hwt button,\\n.hwt input,\\n.hwt select {\\n  font: inherit;\\n}\\n.hwt :is(a, button, input, summary, select):focus-visible {\\n  outline: 3px solid var(--t-accent);\\n  outline-offset: 5px;\\n}\\n.hwt button {\\n  cursor: pointer;\\n}\\n.hwt .t-kicker {\\n  font-size: 0.8rem;\\n  font-weight: 500;\\n  color: var(--t-accent);\\n  margin-bottom: 1.25rem;\\n}\\n.hwt .t-hero {\\n  padding-block: clamp(3rem, 6vw, 5.5rem);\\n  border-bottom: 1px solid var(--t-line);\\n}\\n.hwt .t-hero-grid {\\n  display: grid;\\n  grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.85fr);\\n  gap: clamp(2rem, 6vw, 6rem);\\n  align-items: start;\\n}\\n.hwt .t-lead {\\n  font-size: clamp(1.1rem, 1.7vw, 1.35rem);\\n  line-height: 1.55;\\n  color: var(--t-muted);\\n}\\n.hwt .t-hero-copy {\\n  display: grid;\\n  gap: 1.75rem;\\n}\\n.hwt .t-actions {\\n  display: flex;\\n  gap: 1rem 1.5rem;\\n  align-items: center;\\n  flex-wrap: wrap;\\n}\\n.hwt .t-action {\\n  min-height: 48px;\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  gap: 1rem;\\n  padding: 0.7rem 1.2rem;\\n  border: 1px solid transparent;\\n  border-radius: var(--cedros-radius-sm, 5px);\\n  font-size: 0.94rem;\\n  font-weight: 500;\\n  text-decoration: none;\\n  color: var(--t-action-fg);\\n  background: var(--t-action-bg);\\n}\\n.hwt .t-action:hover {\\n  filter: brightness(0.92);\\n}\\n.hwt .t-text-link {\\n  display: inline-flex;\\n  align-items: center;\\n  min-height: 44px;\\n  font-size: 0.94rem;\\n}\\n.hwt .t-nav {\\n  display: grid;\\n  gap: 0.5rem;\\n  align-self: start;\\n  position: sticky;\\n  top: 6rem;\\n}\\n.hwt .t-nav a {\\n  font-size: 0.88rem;\\n  min-height: 44px;\\n  display: inline-flex;\\n  align-items: center;\\n  color: var(--t-muted);\\n  text-decoration: none;\\n  border-inline-start: 2px solid var(--t-line);\\n  padding-inline-start: 1rem;\\n  gap: 0.8rem;\\n}\\n.hwt .t-nav a[aria-current] {\\n  color: var(--t-accent);\\n  border-color: var(--t-accent);\\n}\\n.hwt [id] {\\n  scroll-margin-top: 6rem;\\n}\\n.hwt .t-band {\\n  padding-block: clamp(3rem, 5vw, 5rem);\\n  border-bottom: 1px solid var(--t-line);\\n}\\n.hwt\\n  :is(\\n    .t-benefits,\\n    .t-explorer,\\n    .t-process,\\n    .t-journey,\\n    .t-story:nth-of-type(even)\\n  ) {\\n  background: var(--t-panel);\\n}\\n.hwt .t-section {\\n  display: grid;\\n  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);\\n  gap: clamp(2rem, 5vw, 5rem);\\n  align-items: start;\\n}\\n.hwt .t-section-copy {\\n  display: grid;\\n  gap: 1.4rem;\\n}\\n.hwt .t-section-copy:only-child {\\n  grid-column: 1 / -1;\\n}\\n.hwt .t-prose {\\n  display: grid;\\n  gap: 1rem;\\n  color: var(--t-muted);\\n}\\n.hwt .t-prose strong {\\n  color: var(--t-ink);\\n}\\n.hwt .t-number {\\n  font: 400 0.85rem/1.4 var(--cedros-font-mono, monospace);\\n  color: var(--t-accent);\\n  margin-bottom: 1.25rem;\\n}\\n.hwt .t-media {\\n  display: grid;\\n  gap: 0.8rem;\\n}\\n.hwt .t-media button:not(.t-inspect) {\\n  width: 100%;\\n  display: block;\\n  padding: 0;\\n  border: 1px solid var(--t-line);\\n  background: var(--t-panel);\\n  border-radius: var(--cedros-radius-md, 8px);\\n  overflow: hidden;\\n}\\n.hwt .t-media img {\\n  display: block;\\n  width: 100%;\\n  height: auto;\\n}\\n.hwt figcaption {\\n  font-size: 0.83rem;\\n  line-height: 1.5;\\n  color: var(--t-muted);\\n}\\n.hwt .t-inspect {\\n  display: inline-flex;\\n  min-height: 44px;\\n  align-items: center;\\n  background: none;\\n  border: 0;\\n  color: var(--t-accent);\\n  padding: 0;\\n  text-decoration: underline;\\n  text-underline-offset: 0.25em;\\n}\\n.hwt .t-media-error {\\n  padding: 2rem;\\n  border: 1px solid var(--t-line);\\n  color: var(--t-muted);\\n}\\n.hwt .t-heading-row {\\n  display: flex;\\n  align-items: end;\\n  justify-content: space-between;\\n  gap: 2rem;\\n  margin-bottom: 2.5rem;\\n}\\n.hwt .t-heading-row p {\\n  max-width: 34rem;\\n  color: var(--t-muted);\\n}\\n.hwt .t-fit {\\n  display: grid;\\n  grid-template-columns: 1fr 1fr;\\n  gap: clamp(2rem, 5vw, 5rem);\\n}\\n.hwt .t-fit article {\\n  border-top: 3px solid var(--t-accent);\\n  padding-top: 1.5rem;\\n  display: grid;\\n  align-content: start;\\n  gap: 1rem;\\n}\\n.hwt .t-fit article + article {\\n  border-color: var(--t-line);\\n}\\n.hwt .t-table-wrap {\\n  overflow-x: auto;\\n}\\n.hwt table {\\n  width: 100%;\\n  border-collapse: collapse;\\n  table-layout: fixed;\\n  font-size: 0.95rem;\\n  line-height: 1.55;\\n}\\n.hwt caption {\\n  text-align: start;\\n  font-family: var(--cedros-font-heading, Georgia, serif);\\n  font-size: clamp(2rem, 3.6vw, 3.5rem);\\n  line-height: 1.15;\\n  margin-bottom: 2rem;\\n}\\n.hwt th,\\n.hwt td {\\n  text-align: start;\\n  vertical-align: top;\\n  padding: 1.3rem 1rem;\\n  border-bottom: 1px solid var(--t-line);\\n  overflow-wrap: anywhere;\\n}\\n.hwt thead th {\\n  font-weight: 500;\\n  border-top: 1px solid var(--t-line);\\n  color: var(--t-accent);\\n}\\n.hwt tbody th {\\n  font-weight: 500;\\n  width: 24%;\\n}\\n.hwt td {\\n  color: var(--t-muted);\\n}\\n.hwt td:nth-child(2),\\n.hwt thead th:nth-child(2) {\\n  background: color-mix(in srgb, var(--t-accent) 6%, var(--t-bg));\\n}\\n.hwt .t-faq {\\n  display: grid;\\n  grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr);\\n  gap: clamp(2rem, 5vw, 5rem);\\n}\\n.hwt .t-faq h2 {\\n  margin-bottom: 2rem;\\n}\\n.hwt details {\\n  border-top: 1px solid var(--t-line);\\n}\\n.hwt details:last-child {\\n  border-bottom: 1px solid var(--t-line);\\n}\\n.hwt summary {\\n  cursor: pointer;\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  gap: 1.5rem;\\n  list-style: none;\\n  min-height: 64px;\\n  padding: 1rem 0;\\n  font-weight: 500;\\n}\\n.hwt summary::-webkit-details-marker {\\n  display: none;\\n}\\n.hwt summary::after {\\n  content: \\\"+\\\";\\n  font-weight: 400;\\n  font-size: 1.5rem;\\n  flex-shrink: 0;\\n}\\n.hwt details[open] summary::after {\\n  content: \\\"−\\\";\\n}\\n.hwt details .t-prose {\\n  padding: 0 2.5rem 1.5rem 0;\\n  animation: t-answer 0.2s ease-out;\\n}\\n.hwt .t-close {\\n  padding-block: clamp(3rem, 5vw, 5rem);\\n  background: var(--t-bg);\\n  border-top: 3px solid var(--t-accent);\\n}\\n.hwt .t-close-inner {\\n  display: grid;\\n  grid-template-columns: 1.3fr 1fr;\\n  gap: 2rem;\\n  align-items: center;\\n}\\n.hwt .t-close h2 {\\n  max-width: 20ch;\\n}\\n.hwt .t-close-copy {\\n  display: grid;\\n  gap: 1.5rem;\\n}\\n.hwt .t-directory-controls {\\n  display: flex;\\n  gap: 1rem;\\n  align-items: end;\\n  flex-wrap: wrap;\\n  margin-block: 2rem;\\n}\\n.hwt label {\\n  display: grid;\\n  gap: 0.5rem;\\n  font-size: 0.85rem;\\n  color: var(--t-muted);\\n}\\n.hwt input,\\n.hwt select {\\n  min-height: 48px;\\n  max-width: 100%;\\n  min-width: 0;\\n  padding: 0.6rem 0.8rem;\\n  border: 1px solid var(--t-line);\\n  border-radius: var(--cedros-radius-sm, 5px);\\n  background: var(--t-bg);\\n  color: var(--t-ink);\\n}\\n.hwt .t-search {\\n  flex: 1;\\n  min-width: min(100%, 18rem);\\n}\\n.hwt .t-directory {\\n  display: grid;\\n  grid-template-columns: 1fr 1fr;\\n  column-gap: 3rem;\\n}\\n.hwt .t-entry {\\n  padding: 1.75rem 0;\\n  border-top: 1px solid var(--t-line);\\n  display: grid;\\n  gap: 0.6rem;\\n  text-decoration: none;\\n  color: var(--t-ink);\\n}\\n.hwt .t-entry:hover h3 {\\n  text-decoration: underline;\\n  text-underline-offset: 0.25em;\\n}\\n.hwt .t-entry p {\\n  font-size: 0.95rem;\\n  color: var(--t-muted);\\n}\\n.hwt .t-entry small {\\n  font-size: 0.8rem;\\n  color: var(--t-accent);\\n}\\n.hwt .t-entry h3 {\\n  display: flex;\\n  justify-content: space-between;\\n  gap: 1rem;\\n}\\n.hwt .t-result-count {\\n  font-size: 0.85rem;\\n  color: var(--t-muted);\\n  margin-bottom: 1rem;\\n}\\n.hwt .t-empty {\\n  padding: 2rem 0;\\n  color: var(--t-muted);\\n}\\n.hwt .t-tool {\\n  border: 1px solid var(--t-line);\\n  border-radius: var(--cedros-radius-md, 8px);\\n  padding: clamp(1.25rem, 3vw, 2.5rem);\\n  background: var(--t-panel);\\n  display: grid;\\n  grid-template-columns: 1fr 1fr;\\n  gap: 3rem;\\n}\\n.hwt .t-tool-inputs {\\n  display: grid;\\n  gap: 1.25rem;\\n}\\n.hwt .t-tool-result {\\n  display: grid;\\n  gap: 1rem;\\n  align-content: center;\\n  border-inline-start: 1px solid var(--t-line);\\n  padding-inline-start: 3rem;\\n}\\n.hwt output {\\n  display: block;\\n  font-family: var(--cedros-font-heading, Georgia, serif);\\n  font-size: clamp(2.5rem, 5vw, 4.5rem);\\n  line-height: 1.1;\\n}\\n.hwt .t-tool-result p {\\n  font-size: 0.95rem;\\n  color: var(--t-muted);\\n}\\n.hwt .t-tool-host {\\n  width: 100%;\\n  height: 650px;\\n  border: 1px solid var(--t-line);\\n  border-radius: var(--cedros-radius-md, 8px);\\n  background: var(--t-panel);\\n}\\n.hwt .t-legal {\\n  display: grid;\\n  grid-template-columns: 14rem minmax(0, 46rem);\\n  gap: clamp(2rem, 5vw, 5rem);\\n  padding-block: 3rem;\\n}\\n.hwt .t-legal .t-nav {\\n  position: sticky;\\n  top: 6rem;\\n  display: grid;\\n  align-self: start;\\n  border: 0;\\n  padding: 0;\\n  gap: 0.5rem;\\n}\\n.hwt .t-legal .t-nav a {\\n  padding: 0.25rem 0;\\n  line-height: 1.4;\\n}\\n.hwt .t-legal article {\\n  display: grid;\\n  gap: 3rem;\\n}\\n.hwt .t-legal section {\\n  display: grid;\\n  gap: 1.25rem;\\n  padding-bottom: 2rem;\\n  border-bottom: 1px solid var(--t-line);\\n}\\n.hwt .t-legal h2 {\\n  font-size: 2rem;\\n}\\n.hwt dialog {\\n  width: min(96vw, 88rem);\\n  max-height: 94svh;\\n  padding: 0;\\n  overflow: hidden;\\n  background: var(--t-panel);\\n  color: var(--t-ink);\\n  border: 1px solid var(--t-line);\\n  border-radius: 8px;\\n}\\n.hwt dialog::backdrop {\\n  background: #000b;\\n}\\n.hwt .t-dialog-top {\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n  gap: 1rem;\\n  position: sticky;\\n  top: 0;\\n  padding: 1rem;\\n  background: var(--t-panel);\\n  border-bottom: 1px solid var(--t-line);\\n}\\n.hwt .t-dialog-top button {\\n  min-height: 44px;\\n  padding: 0.4rem 0.9rem;\\n  border: 1px solid var(--t-line);\\n  background: var(--t-bg);\\n  color: var(--t-ink);\\n  border-radius: 4px;\\n}\\n.hwt dialog img {\\n  display: block;\\n  max-width: none;\\n  height: auto;\\n}\\n.hwt .t-dialog-note {\\n  padding: 1rem;\\n  color: var(--t-muted);\\n}\\n.hwt .t-enter {\\n  animation: t-enter 0.55s cubic-bezier(0.16, 1, 0.3, 1) both;\\n}\\n.hwt .t-extension-meta {\\n  display: flex;\\n  flex-wrap: wrap;\\n  gap: 0.5rem 2rem;\\n  padding-top: 1.5rem;\\n  border-top: 1px solid var(--t-line);\\n  font-size: 0.85rem;\\n  color: var(--t-muted);\\n}\\n\\n/* Each family has a reading rhythm appropriate to its task. */\\n.hwt\\n  :is(\\n    .t-wrap,\\n    .t-section,\\n    .t-hero-copy,\\n    .t-story-copy,\\n    .t-explorer-layout,\\n    .t-explorer-panels,\\n    .t-process-layout,\\n    .t-journey-layout\\n  )\\n  > * {\\n  min-width: 0;\\n}\\n.hwt .t-hero-media {\\n  margin-top: clamp(2rem, 4vw, 4rem);\\n}\\n.hwt .t-hero-media .t-media {\\n  max-width: 68rem;\\n  margin-inline: auto;\\n}\\n.hwt .t-story-copy {\\n  display: grid;\\n  gap: 1.5rem;\\n}\\n.hwt .t-story-copy .t-number {\\n  margin: 0;\\n}\\n.hwt .t-story-media .t-section {\\n  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);\\n  align-items: center;\\n}\\n.hwt .t-story-reverse.t-story-media .t-story-copy {\\n  order: 2;\\n}\\n.hwt .t-story-reverse.t-story-media .t-section {\\n  grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);\\n}\\n.hwt .t-group-title {\\n  max-width: 22ch;\\n  margin-bottom: clamp(2rem, 4vw, 3.5rem);\\n}\\n.hwt .t-nav-label {\\n  color: var(--t-muted);\\n  font-size: 0.8rem;\\n  margin-bottom: 0.5rem;\\n}\\n.hwt .t-nav a span {\\n  color: var(--t-accent);\\n  font: 0.7rem var(--cedros-font-mono, monospace);\\n}\\n.hwt .t-explorer-layout {\\n  display: grid;\\n  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.6fr);\\n  gap: clamp(2rem, 5vw, 4.5rem);\\n  align-items: start;\\n}\\n.hwt .t-tabs {\\n  display: grid;\\n}\\n.hwt .t-tabs button {\\n  display: grid;\\n  grid-template-columns: 1.5rem 1fr 1rem;\\n  align-items: center;\\n  gap: 0.8rem;\\n  padding: 1.4rem 1rem;\\n  min-height: 72px;\\n  text-align: start;\\n  border: 0;\\n  border-top: 1px solid var(--t-line);\\n  border-inline-start: 3px solid transparent;\\n  background: transparent;\\n  color: var(--t-muted);\\n  line-height: 1.4;\\n  transition:\\n    background 160ms,\\n    border-color 160ms,\\n    color 160ms;\\n}\\n.hwt .t-tabs button:last-child {\\n  border-bottom: 1px solid var(--t-line);\\n}\\n.hwt .t-tabs button[aria-selected=\\\"true\\\"] {\\n  color: var(--t-ink);\\n  border-inline-start-color: var(--t-accent);\\n  background: color-mix(in srgb, var(--t-accent) 7%, var(--t-panel));\\n}\\n.hwt .t-tab-index {\\n  font: 0.75rem var(--cedros-font-mono, monospace);\\n}\\n.hwt .t-tab-arrow {\\n  color: var(--t-accent);\\n}\\n.hwt .t-tabs button:hover {\\n  background: var(--t-bg);\\n}\\n.hwt .t-explorer-panels {\\n  display: grid;\\n}\\n.hwt .t-explorer-panel {\\n  grid-area: 1 / 1;\\n  display: grid;\\n  gap: 2rem;\\n  align-content: start;\\n}\\n/* Inactive content must not reserve a tall blank area under the selected capability. */\\n.hwt .t-explorer-panel[hidden] {\\n  display: none;\\n}\\n.hwt .t-explorer-panel:not([hidden]) {\\n  animation: t-resolve 320ms cubic-bezier(0.16, 1, 0.3, 1);\\n}\\n.hwt .t-panel-copy {\\n  display: grid;\\n  gap: 1.25rem;\\n}\\n.hwt .t-panel-copy h3 {\\n  font: 400 clamp(1.75rem, 2.8vw, 2.75rem) / 1.15\\n    var(--cedros-font-heading, Georgia, serif);\\n  letter-spacing: -0.025em;\\n  text-wrap: balance;\\n}\\n.hwt .t-explorer-text {\\n  padding: clamp(1.5rem, 3vw, 3rem);\\n  background: var(--t-bg);\\n  border-top: 3px solid var(--t-accent);\\n  min-height: 20rem;\\n}\\n.hwt .t-benefit-grid {\\n  display: grid;\\n  grid-template-columns: repeat(2, minmax(0, 1fr));\\n  gap: clamp(2rem, 5vw, 5rem);\\n}\\n.hwt .t-benefit-grid article {\\n  display: grid;\\n  align-content: start;\\n  gap: 1.25rem;\\n  border-top: 1px solid var(--t-line);\\n  padding-top: 1.5rem;\\n}\\n.hwt .t-process {\\n  background: var(--t-bg);\\n}\\n.hwt .t-process-layout {\\n  display: grid;\\n  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);\\n  gap: clamp(2rem, 5vw, 5rem);\\n  align-items: start;\\n}\\n.hwt .t-process-layout > h2 {\\n  position: sticky;\\n  top: 6rem;\\n}\\n.hwt .t-process-layout article {\\n  display: grid;\\n  grid-template-columns: 2rem 1fr;\\n  gap: 1rem;\\n  padding-block: 1.5rem 2rem;\\n  border-top: 1px solid var(--t-line);\\n}\\n.hwt .t-process-layout article > div {\\n  display: grid;\\n  gap: 1rem;\\n}\\n.hwt .t-process .t-number {\\n  padding-top: 0.3rem;\\n}\\n.hwt .t-journey-layout {\\n  display: grid;\\n  grid-template-columns: minmax(0, 0.65fr) minmax(0, 1.35fr);\\n  gap: clamp(2rem, 6vw, 6rem);\\n}\\n.hwt .t-journey-step {\\n  position: relative;\\n  display: grid;\\n  gap: 1.5rem;\\n  padding: 0 0 3.5rem 2.5rem;\\n  border-inline-start: 1px solid var(--t-line);\\n}\\n.hwt .t-journey-step:last-child {\\n  padding-bottom: 0;\\n}\\n.hwt .t-journey-step::before {\\n  content: \\\"\\\";\\n  position: absolute;\\n  top: 0;\\n  inset-inline-start: -4px;\\n  width: 7px;\\n  height: 7px;\\n  background: var(--t-accent);\\n}\\n.hwt .t-journey-step .t-number {\\n  margin: 0;\\n}\\n.hwt .t-journey-step h2 {\\n  font-size: clamp(1.9rem, 3vw, 2.8rem);\\n}\\n.hwt .t-comparison-mobile {\\n  display: none;\\n}\\n.hwt .t-comparison-desktop th:first-child {\\n  width: 22%;\\n}\\n.hwt .t-comparison-desktop tbody tr:hover {\\n  background: color-mix(in srgb, var(--t-accent) 4%, var(--t-bg));\\n}\\n.hwt .t-reset {\\n  padding: 0.6rem 0;\\n  min-height: 44px;\\n  border: 0;\\n  background: none;\\n  color: var(--t-accent);\\n  text-decoration: underline;\\n  text-underline-offset: 0.25em;\\n}\\n.hwt .t-directory {\\n  animation: t-answer 180ms ease-out;\\n}\\n.hwt .t-entry h3 span {\\n  transition: transform 160ms ease-out;\\n}\\n.hwt .t-entry:is(:hover, :focus-visible) h3 span {\\n  transform: translate(2px, -2px);\\n}\\n.hwt .t-entry:focus-visible {\\n  outline-offset: -3px;\\n}\\n.hwt .t-entry {\\n  padding: 1.75rem 1rem;\\n}\\n.hwt .t-entry:is(:hover, :focus-visible) {\\n  background: var(--t-panel);\\n}\\n.hwt .t-tool-result output {\\n  font-variant-numeric: tabular-nums;\\n}\\n.hwt.hwt-tool .t-hero-grid,\\n.hwt.hwt-collection .t-hero-grid,\\n.hwt.hwt-legal .t-hero-grid {\\n  grid-template-columns: 1fr;\\n  gap: 1.5rem;\\n}\\n.hwt:is(.hwt-tool, .hwt-collection, .hwt-legal) h1 {\\n  font-size: clamp(2.6rem, 4.5vw, 4.3rem);\\n  max-width: 24ch;\\n}\\n.hwt:is(.hwt-tool, .hwt-collection) .t-hero {\\n  padding-block: 2.75rem 2.25rem;\\n}\\n.hwt:is(.hwt-tool, .hwt-collection) .t-band:first-of-type {\\n  padding-top: 2rem;\\n}\\n.hwt:is(.hwt-tool, .hwt-collection) .t-lead {\\n  max-width: 58ch;\\n}\\n.hwt.hwt-legal .t-hero {\\n  padding-bottom: 2.5rem;\\n}\\n.hwt.hwt-legal .t-extension-meta {\\n  border: 0;\\n  padding: 0;\\n}\\n.hwt.hwt-legal .t-actions:empty,\\n.hwt .t-actions:empty {\\n  display: none;\\n}\\n.hwt.hwt-legal .t-close {\\n  padding-block: 2.5rem;\\n  border-top: 1px solid var(--t-line);\\n}\\n.hwt.hwt-legal .t-close h2 {\\n  font-size: 2rem;\\n}\\n.hwt dialog[open] {\\n  animation: t-resolve 240ms ease-out;\\n}\\n@keyframes t-resolve {\\n  from {\\n    transform: translateY(6px);\\n  }\\n  to {\\n    transform: none;\\n  }\\n}\\n@keyframes t-enter {\\n  from {\\n    transform: translateY(8px);\\n  }\\n  to {\\n    transform: none;\\n  }\\n}\\n@keyframes t-answer {\\n  from {\\n    transform: translateY(3px);\\n  }\\n  to {\\n    transform: none;\\n  }\\n}\\n@media (max-width: 760px) {\\n  .hwt .t-hero-grid,\\n  .hwt .t-section,\\n  .hwt .t-fit,\\n  .hwt .t-close-inner,\\n  .hwt .t-tool,\\n  .hwt .t-legal,\\n  .hwt .t-explorer-layout,\\n  .hwt .t-benefit-grid,\\n  .hwt .t-process-layout,\\n  .hwt .t-journey-layout,\\n  .hwt .t-story-media .t-section,\\n  .hwt .t-faq {\\n    grid-template-columns: 1fr;\\n  }\\n  .hwt .t-hero {\\n    padding-block: 2.5rem 3rem;\\n  }\\n  .hwt .t-hero-grid {\\n    gap: 1.5rem;\\n  }\\n  .hwt h1 {\\n    max-width: 18ch;\\n  }\\n  .hwt .t-band {\\n    padding-block: 3rem;\\n  }\\n  .hwt .t-heading-row {\\n    display: grid;\\n    gap: 1rem;\\n  }\\n  .hwt .t-directory {\\n    grid-template-columns: 1fr;\\n  }\\n  .hwt .t-legal .t-nav {\\n    position: static;\\n    display: flex;\\n  }\\n  .hwt .t-tool {\\n    gap: 2rem;\\n  }\\n  .hwt .t-tool-result {\\n    border-inline-start: 0;\\n    border-top: 1px solid var(--t-line);\\n    padding: 1.5rem 0 0;\\n  }\\n  .hwt th,\\n  .hwt td {\\n    padding: 0.9rem 0.55rem;\\n    font-size: 0.82rem;\\n  }\\n  .hwt .t-table-wrap table {\\n    min-width: 0;\\n  }\\n  .hwt .t-nav {\\n    position: static;\\n  }\\n  .hwt .t-journey .t-nav {\\n    display: none;\\n  }\\n  .hwt .t-legal .t-nav {\\n    display: grid;\\n    gap: 0.25rem;\\n  }\\n  .hwt .t-legal .t-nav a {\\n    padding: 0.5rem 0.8rem;\\n  }\\n  .hwt .t-story-reverse.t-story-media .t-story-copy {\\n    order: 0;\\n  }\\n  .hwt .t-process-layout > h2 {\\n    position: static;\\n  }\\n  .hwt .t-tabs button {\\n    min-height: 56px;\\n    padding-block: 1rem;\\n  }\\n  .hwt .t-explorer-text {\\n    min-height: 0;\\n    padding: 1.5rem;\\n  }\\n  .hwt .t-explorer-panel[hidden] {\\n    display: none;\\n  }\\n  .hwt .t-journey-step {\\n    padding-inline-start: 1.5rem;\\n  }\\n  .hwt .t-comparison-desktop {\\n    display: none;\\n  }\\n  .hwt .t-comparison-mobile {\\n    display: grid;\\n    gap: 2rem;\\n  }\\n  .hwt .t-comparison-mobile article {\\n    border-top: 1px solid var(--t-line);\\n    padding-top: 1.25rem;\\n  }\\n  .hwt .t-comparison-mobile dl {\\n    margin: 1rem 0 0;\\n    display: grid;\\n    gap: 1rem;\\n  }\\n  .hwt .t-comparison-mobile dl > div {\\n    padding: 1rem;\\n    background: var(--t-panel);\\n  }\\n  .hwt .t-comparison-mobile dl > div:first-child {\\n    border-inline-start: 2px solid var(--t-accent);\\n  }\\n  .hwt .t-comparison-mobile dt {\\n    color: var(--t-accent);\\n    font-size: 0.85rem;\\n    font-weight: 500;\\n  }\\n  .hwt .t-comparison-mobile dd {\\n    margin: 0.5rem 0 0;\\n    font-size: 1rem;\\n    color: var(--t-muted);\\n  }\\n\\n  .hwt .t-close-inner {\\n    gap: 1.5rem;\\n  }\\n}\\n@media (prefers-reduced-motion: reduce) {\\n  .hwt * {\\n    animation: none !important;\\n    scroll-behavior: auto !important;\\n    transition: none !important;\\n  }\\n}\\n\\n@media print {\\n  .hwt {\\n    --t-bg: white;\\n    --t-panel: white;\\n    --t-ink: black;\\n    --t-muted: #333;\\n    --t-line: #bbb;\\n    --t-accent: #222;\\n    font-size: 11pt;\\n  }\\n  .hwt :is(.t-nav, .t-actions, .t-inspect, dialog, .t-tabs) {\\n    display: none;\\n  }\\n  .hwt\\n    :is(\\n      .t-hero-grid,\\n      .t-section,\\n      .t-legal,\\n      .t-explorer-layout,\\n      .t-explorer-panels,\\n      .t-process-layout,\\n      .t-journey-layout\\n    ) {\\n    display: block;\\n  }\\n  .hwt .t-explorer-panel[hidden] {\\n    display: grid;\\n    visibility: visible;\\n  }\\n  .hwt :is(.t-band, .t-hero, .t-close) {\\n    padding-block: 1.5rem;\\n  }\\n  .hwt h1 {\\n    font-size: 30pt;\\n  }\\n  .hwt h2 {\\n    font-size: 22pt;\\n  }\\n  .hwt :is(h2, h3) {\\n    break-after: avoid;\\n  }\\n  .hwt p {\\n    orphans: 3;\\n    widows: 3;\\n  }\\n  .hwt .t-wrap {\\n    padding: 0;\\n  }\\n  .hwt .t-process-layout > h2 {\\n    position: static;\\n  }\\n}\\n\\n.hwt .t-entry-image {\\n  width: 100%;\\n  aspect-ratio: 16 / 9;\\n  object-fit: cover;\\n  border-radius: var(--cedros-radius-sm, 5px);\\n  margin-bottom: 0.75rem;\\n}\\n.hwt .t-entry-image[hidden] {\\n  display: none;\\n}\\n.hwt .t-contribution {\\n  display: grid;\\n  gap: 0.75rem;\\n}\\n.hwt .t-contribution-bar {\\n  height: 6px;\\n  background: var(--t-line);\\n  overflow: hidden;\\n}\\n.hwt .t-contribution-bar span {\\n  display: block;\\n  height: 100%;\\n  background: var(--t-accent);\\n  transition: width 220ms ease-out;\\n}\\n.hwt .t-contribution strong {\\n  color: var(--t-ink);\\n  font-weight: 500;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n  .hwt .t-contribution-bar span {\\n    transition: none;\\n  }\\n}\\n\\n.hwt.hwt-extension.t-has-hero-media .t-hero-grid {\\n  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);\\n  align-items: start;\\n  column-gap: 3rem;\\n  row-gap: 1.5rem;\\n}\\n.hwt.hwt-extension.t-has-hero-media .t-hero-copy {\\n  grid-column: 1;\\n}\\n.hwt.hwt-extension.t-has-hero-media .t-hero-media {\\n  grid-column: 2;\\n  grid-row: 1 / span 2;\\n  margin: 0;\\n  align-self: center;\\n}\\n.hwt.hwt-extension.t-has-hero-media h1 {\\n  font-size: clamp(2.6rem, 4.5vw, 4.5rem);\\n}\\n.hwt .t-legal-index {\\n  position: sticky;\\n  top: 6rem;\\n  align-self: start;\\n}\\n.hwt .t-legal-index-mobile {\\n  display: none;\\n}\\n@media (max-width: 760px) {\\n  .hwt.hwt-extension.t-has-hero-media .t-hero-grid {\\n    grid-template-columns: 1fr;\\n  }\\n  .hwt.hwt-extension.t-has-hero-media .t-hero-media {\\n    grid-column: 1;\\n    grid-row: auto;\\n    margin-top: 0.5rem;\\n  }\\n  .hwt .t-legal-index {\\n    position: static;\\n  }\\n  .hwt .t-legal-index-desktop {\\n    display: none;\\n  }\\n  .hwt .t-legal-index-mobile {\\n    display: block;\\n  }\\n  .hwt .t-legal-index-mobile .t-nav-label {\\n    display: none;\\n  }\\n  .hwt .t-legal-index-mobile .t-nav {\\n    padding-bottom: 1rem;\\n  }\\n}\\n@media print {\\n  .hwt .t-legal-index {\\n    display: none;\\n  }\\n}\\n\\n.hwt .t-journey-step[data-current]::before {\\n  box-shadow: 0 0 0 4px color-mix(in srgb, var(--t-accent) 15%, transparent);\\n}\\n.hwt .t-journey-layout > :only-child,\\n.hwt .t-process-layout > :only-child,\\n.hwt .t-legal > :only-child {\\n  grid-column: 1 / -1;\\n}\\n.hwt .t-legal > article:only-child {\\n  max-width: 68ch;\\n}\\n.hwt .t-explorer-panel:not([hidden]) .t-media img {\\n  animation: t-uncover 550ms cubic-bezier(0.16, 1, 0.3, 1);\\n}\\n@keyframes t-uncover {\\n  from {\\n    clip-path: inset(0 0 5% 0);\\n    transform: translateY(4px);\\n  }\\n  to {\\n    clip-path: inset(0);\\n    transform: none;\\n  }\\n}\\n@media (prefers-reduced-motion: reduce) {\\n  .hwt .t-explorer-panel .t-media img {\\n    animation: none;\\n  }\\n}\\n\\n.hwt .t-scene-image {\\n  border-radius: var(--cedros-radius-md, 8px);\\n}\\n\\n.hwt .t-media button:not(.t-inspect) img {\\n  max-height: 32rem;\\n  object-fit: cover;\\n  object-position: top;\\n}\\n.hwt .t-explorer-mobile {\\n  display: none;\\n}\\n.hwt .t-story-empty {\\n  display: none;\\n}\\n.hwt .t-section:has(.t-story-empty) .t-section-copy {\\n  grid-column: 1 / -1;\\n  max-width: 68ch;\\n}\\n.hwt .t-fit:empty {\\n  display: none;\\n}\\n.hwt .t-fit article:only-child {\\n  grid-column: 1 / -1;\\n  max-width: 68ch;\\n}\\n.hwt .t-benefit-grid article:only-child {\\n  grid-column: 1 / -1;\\n  max-width: 68ch;\\n}\\n.hwt .t-zoom-controls {\\n  display: flex;\\n  align-items: center;\\n  flex-wrap: wrap;\\n  gap: 0.5rem;\\n  padding: 0.5rem 1rem;\\n  border-bottom: 1px solid var(--t-line);\\n}\\n.hwt :is(.t-zoom-controls, .t-image-status) button {\\n  min-height: 44px;\\n  min-width: 44px;\\n  padding: 0.4rem 0.75rem;\\n  border: 1px solid var(--t-line);\\n  border-radius: var(--cedros-radius-sm, 5px);\\n  color: var(--t-ink);\\n  background: var(--t-bg);\\n}\\n.hwt .t-zoom-controls button:disabled {\\n  opacity: 0.45;\\n  cursor: default;\\n}\\n.hwt .t-zoom-controls [role=\\\"status\\\"] {\\n  min-width: 4ch;\\n  text-align: center;\\n  font-variant-numeric: tabular-nums;\\n}\\n.hwt .t-zoom-hint {\\n  color: var(--t-muted);\\n  font-size: 0.85rem;\\n  margin-inline-start: auto;\\n}\\n.hwt .t-image-viewport {\\n  overflow: auto;\\n  max-height: 65svh;\\n  min-height: 8rem;\\n  overscroll-behavior: contain;\\n  background: var(--t-bg);\\n}\\n.hwt .t-image-viewport:focus-visible {\\n  outline: 2px solid var(--t-accent);\\n  outline-offset: -3px;\\n}\\n.hwt .t-image-status {\\n  padding: 1.5rem;\\n  display: grid;\\n  justify-items: start;\\n  gap: 1rem;\\n  color: var(--t-muted);\\n}\\n@media (max-width: 760px) {\\n  .hwt .t-explorer-layout {\\n    display: none;\\n  }\\n  .hwt .t-explorer-mobile {\\n    display: block;\\n  }\\n  .hwt .t-capability-row {\\n    border-top: 1px solid var(--t-line);\\n  }\\n  .hwt .t-capability-row:last-child {\\n    border-bottom: 1px solid var(--t-line);\\n  }\\n  .hwt .t-capability-row :is(h2, h3) button {\\n    display: grid;\\n    grid-template-columns: 1.5rem 1fr 1rem;\\n    align-items: center;\\n    gap: 0.75rem;\\n    width: 100%;\\n    text-align: start;\\n    padding: 1.2rem 0;\\n    min-height: 64px;\\n    border: 0;\\n    background: none;\\n    color: var(--t-ink);\\n    font-size: 1.05rem;\\n  }\\n  .hwt .t-capability-row button[aria-expanded=\\\"true\\\"] {\\n    color: var(--t-accent);\\n  }\\n  .hwt .t-capability-content {\\n    display: grid;\\n    gap: 1.25rem;\\n    padding-bottom: 1.5rem;\\n    animation: t-answer 180ms ease-out;\\n  }\\n  .hwt .t-capability-content[hidden] {\\n    display: none;\\n  }\\n  .hwt .t-zoom-hint {\\n    display: none;\\n  }\\n  .hwt .t-dialog-note {\\n    max-height: 12svh;\\n    overflow: auto;\\n  }\\n}\\n@media (prefers-reduced-motion: reduce) {\\n  .hwt .t-capability-content {\\n    animation: none;\\n  }\\n}\\n@media print {\\n  .hwt .t-explorer-mobile {\\n    display: none;\\n  }\\n  .hwt .t-explorer-layout {\\n    display: block;\\n  }\\n  .hwt .t-explorer-panel[hidden] {\\n    display: grid;\\n  }\\n  .hwt .t-media button:not(.t-inspect) img {\\n    max-height: none;\\n  }\\n}\\n\\n.hwt dialog[open] {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.hwt :is(.t-dialog-top, .t-zoom-controls, .t-dialog-note) {\\n  flex-shrink: 0;\\n}\\n.hwt .t-dialog-note {\\n  max-height: 12svh;\\n  overflow: auto;\\n}\\n\\n\\n\\n/* Stable editorial media v3 */\\n.hwt .t-media button:not(.t-inspect), .hwt .t-media-error { aspect-ratio:16/10; max-height:32rem; }\\n.hwt .t-media button:not(.t-inspect) img { height:100%; object-fit:contain; }\\n.hwt .t-media > .t-scene-image { width:100%; height:auto; aspect-ratio:16/10; object-fit:cover; }\\n.hwt .t-media--scene .t-media-error { max-height:none; }\\n.hwt .t-media-error { box-sizing:border-box; width:100%; margin:0; display:grid; place-content:center; }\\n.hwt .t-explorer-panel:not([hidden]) .t-media img { animation:none; }\\n\";\n\n\n\n\n\n\n\n\n\n\n\n\nfunction href(value = \"\") {\n  const v = value.trim();\n  if (/\\s/.test(v) || /[\\\\<>]/.test(v)) return \"\";\n  if (/^(mailto:.+|tel:.+|\\/(?!\\/)|#)/i.test(v)) return v;\n  try {\n    const parsed = new URL(v);\n    return parsed.protocol === \"https:\" && !parsed.username && !parsed.password\n      ? parsed.href\n      : \"\";\n  } catch (e2) {\n    return \"\";\n  }\n}\nfunction imageUrl(value = \"\") {\n  const safe = href(value);\n  return /^(https:\\/\\/|\\/(?!\\/))/.test(safe) ? safe : \"\";\n}\nfunction Paragraphs({ text = \"\" }) {\n  return (\n    _react2.default.createElement('div', { className: \"t-prose\",}\n      , text\n        .split(/\\n\\s*\\n/)\n        .filter(Boolean)\n        .map((p, i) =>\n          p.split(\"\\n\").every((line) => line.startsWith(\"- \")) ? (\n            _react2.default.createElement('ul', { key: i,}\n              , p.split(\"\\n\").map((line, j) => (\n                _react2.default.createElement('li', { key: j,}, line.slice(2))\n              ))\n            )\n          ) : (\n            _react2.default.createElement('p', { key: i,}, p)\n          ),\n        )\n    )\n  );\n}\nfunction Action({\n  label,\n  url,\n  primary = false,\n}\n\n\n\n) {\n  const to = href(url);\n  return label && to ? (\n    _react2.default.createElement('a', { className: primary ? \"t-action\" : \"t-text-link\", href: to,}\n      , label\n      , _react2.default.createElement('span', { 'aria-hidden': \"true\",}, \" →\" )\n    )\n  ) : null;\n}\nfunction ProductImage({\n  src,\n  alt,\n  caption,\n  inspect,\n  eager = false,\n  presentation = \"product\",\n}\n\n\n\n\n\n\n) {\n  const [failed, setFailed] = _react.useState.call(void 0, false);\n  _react.useEffect.call(void 0, () => setFailed(false), [src]);\n  if (!imageUrl(src)) return null;\n  return (\n    _react2.default.createElement('figure', { className: presentation === \"scene\" ? \"t-media t-media--scene\" : \"t-media\",}\n      , failed ? (\n        _react2.default.createElement(_react2.default.Fragment, null, _react2.default.createElement('p', { className: \"t-media-error\",}, \"This image could not load. \"\n               , _react2.default.createElement('a', { href: imageUrl(src),}, \"Open the image\"  )\n        ), presentation !== \"scene\" ? _react2.default.createElement('button', { type: \"button\", className: \"t-inspect\", disabled: true,}, \"Inspect image \"  , _react2.default.createElement('span', { 'aria-hidden': \"true\",}, \"↗\")) : null)\n      ) : presentation === \"scene\" ? (\n        _react2.default.createElement('img', {\n          className: \"t-scene-image\",\n          src: imageUrl(src),\n          alt: alt,\n          loading: eager ? \"eager\" : \"lazy\",\n          decoding: \"async\",\n          onError: () => setFailed(true),}\n        )\n      ) : (\n        _react2.default.createElement(_react2.default.Fragment, null\n          , _react2.default.createElement('button', { type: \"button\", onClick: inspect, 'aria-label': `Inspect ${alt}`,}\n            , _react2.default.createElement('img', {\n              src: imageUrl(src),\n              alt: alt,\n              loading: eager ? \"eager\" : \"lazy\",\n              decoding: \"async\",\n              onError: () => setFailed(true),}\n            )\n          )\n          , _react2.default.createElement('button', { type: \"button\", className: \"t-inspect\", onClick: inspect,}, \"Inspect image \"\n              , _react2.default.createElement('span', { 'aria-hidden': \"true\",}, \"↗\")\n          )\n        )\n      )\n      , caption && _react2.default.createElement('figcaption', null, caption)\n    )\n  );\n}\nfunction BreakEven({ content: c }) {\n  const uid = _react.useId.call(void 0, );\n  const [fixed, setFixed] = _react.useState.call(void 0, \"1500\");\n  const [price, setPrice] = _react.useState.call(void 0, \"50\");\n  const [variable, setVariable] = _react.useState.call(void 0, \"20\");\n  const values = [fixed, price, variable].map(Number);\n  const valid =\n    [fixed, price, variable].every((v) => v.trim() !== \"\") &&\n    values.every((v) => Number.isFinite(v) && v >= 0);\n  const margin = values[1] - values[2];\n  const ratio = valid && margin > 0 ? values[0] / margin : NaN;\n  const supported = Number.isFinite(ratio) && ratio <= Number.MAX_SAFE_INTEGER;\n  const nearest = Math.round(ratio);\n  const units = supported\n    ? Math.abs(ratio - nearest) <= Number.EPSILON * Math.abs(ratio) * 2\n      ? nearest\n      : Math.ceil(ratio)\n    : null;\n  return (\n    _react2.default.createElement('div', { className: \"t-tool\",}\n      , _react2.default.createElement('div', { className: \"t-tool-inputs\",}\n        , [\n          {\n            key: \"fixed\",\n            label: \"Fixed costs per month\",\n            value: fixed,\n            set: setFixed,\n          },\n          {\n            key: \"price\",\n            label: \"Selling price per unit\",\n            value: price,\n            set: setPrice,\n          },\n          {\n            key: \"variable\",\n            label: \"Variable cost per unit\",\n            value: variable,\n            set: setVariable,\n          },\n        ].map((f) => (\n          _react2.default.createElement('label', { key: f.key, htmlFor: `${uid}-${f.key}`,}\n            , f.label\n            , _react2.default.createElement('input', {\n              id: `${uid}-${f.key}`,\n              type: \"number\",\n              min: \"0\",\n              step: \"any\",\n              inputMode: \"decimal\",\n              value: f.value,\n              onChange: (e) => f.set(e.target.value),}\n            )\n          )\n        ))\n      )\n      , _react2.default.createElement('div', { className: \"t-tool-result\", 'aria-live': \"polite\", 'aria-atomic': \"true\",}\n        , _react2.default.createElement('p', null, c.resultLabel || \"Monthly break-even volume\")\n        , _react2.default.createElement('output', null\n          , units === null ? \"—\" : new Intl.NumberFormat().format(units)\n        )\n        , valid && margin > 0 && supported && (\n          _react2.default.createElement('div', { className: \"t-contribution\",}\n            , _react2.default.createElement('div', { className: \"t-contribution-bar\", 'aria-hidden': \"true\",}\n              , _react2.default.createElement('span', {\n                style: {\n                  width: `${Math.max(0, Math.min(100, (margin / values[1]) * 100))}%`,\n                },}\n              )\n            )\n            , _react2.default.createElement('p', null, \"Each sale contributes\"\n                , \" \"\n              , _react2.default.createElement('strong', null\n                , new Intl.NumberFormat(undefined, {\n                  maximumSignificantDigits: 6,\n                }).format(margin)\n              ), \" \", \"toward fixed costs.\"\n\n            )\n          )\n        )\n        , _react2.default.createElement('p', null\n          , !valid\n            ? \"Enter a non-negative number in each field.\"\n            : margin <= 0\n              ? \"The selling price must exceed the variable cost to cover fixed costs.\"\n              : !supported\n                ? \"These inputs produce a result outside the supported range. Use smaller amounts.\"\n                : \"Units per month, rounded up. Use the same currency for all three inputs.\"\n        )\n      )\n    )\n  );\n}\nfunction toolDefinition() { return null; } function ExtraTool() { return null; }\n function HeartwoodTemplate({\n  content = {},\n}\n\n) {\n  const c = _react.useMemo.call(void 0, \n    () =>\n      Object.fromEntries(\n        Object.entries(content).map(([key, value]) => [key, value.trim()]),\n      ),\n    [content],\n  );\n  const uid = _react.useId.call(void 0, ).replace(/:/g, \"\");\n  const root = _react.useRef(null);\n  const dialog = _react.useRef(null);\n  const inspectionViewport = _react.useRef(null);\n  const [zoom, setZoom] = _react.useState.call(void 0, 1);\n  const [imageState, setImageState] = _react.useState(\n    \"loading\",\n  );\n  const [imageAttempt, setImageAttempt] = _react.useState.call(void 0, 0);\n  const returnFocus = _react.useRef(null);\n  const [inspected, setInspected] = _react.useState\n\n\n\n(null);\n  const [active, setActive] = _react.useState.call(void 0, \"\");\n  const [selected, setSelected] = _react.useState.call(void 0, 0);\n  const [mobileCollapsed, setMobileCollapsed] = _react.useState.call(void 0, false);\n  const [query, setQuery] = _react.useState.call(void 0, \"\");\n  const [category, setCategory] = _react.useState.call(void 0, \"\");\n  const sections = Array.from(\n    { length: kind === \"legal\" ? 12 : 8 },\n    (_, i) => ({\n      index: i + 1,\n      title: c[`section${i + 1}Title`],\n      body: c[`section${i + 1}Body`],\n      image: c[`section${i + 1}Image`],\n      alt: c[`section${i + 1}Alt`],\n      caption: c[`section${i + 1}Caption`],\n      presentation: c[`section${i + 1}Presentation`],\n      label: c[`section${i + 1}LinkLabel`],\n      href: c[`section${i + 1}LinkHref`],\n    }),\n  ).filter(\n    (s) => s.title || s.body || imageUrl(s.image) || (s.label && href(s.href)),\n  );\n  const faqs = Array.from({ length: 4 }, (_, i) => ({\n    question: c[`faq${i + 1}Question`],\n    answer: c[`faq${i + 1}Answer`],\n  })).filter((f) => f.question && f.answer);\n  const entries = Array.from({ length: 16 }, (_, i) => ({\n    title: c[`entry${i + 1}Title`],\n    body: c[`entry${i + 1}Body`],\n    category: c[`entry${i + 1}Category`],\n    href: href(c[`entry${i + 1}Href`]),\n    image: imageUrl(c[`entry${i + 1}Image`]),\n  })).filter((e) => e.title && e.href);\n  const categories = [\n    ...new Set(entries.map((e) => e.category).filter(Boolean)),\n  ];\n  const matches = entries.filter(\n    (e) =>\n      (!category || e.category === category) &&\n      `${e.title} ${e.body} ${e.category}`\n        .toLowerCase()\n        .includes(query.toLowerCase().trim()),\n  );\n  _react.useEffect.call(void 0, () => {\n    const container = root.current;\n    if (!container || (kind !== \"industry\" && kind !== \"legal\")) return;\n    let frame = 0;\n    const update = () => {\n      frame = 0;\n      const chapters = [\n        ...container.querySelectorAll(\"[data-chapter]\"),\n      ];\n      const visible = chapters.filter((el) => el.getClientRects().length);\n      const passed = visible.filter(\n        (el) => el.getBoundingClientRect().top <= window.innerHeight * 0.3,\n      );\n      const atEnd =\n        window.scrollY > 0 &&\n        window.scrollY + window.innerHeight >=\n          document.documentElement.scrollHeight - 2;\n      setActive(\n        _optionalChain([(atEnd ? visible.at(-1) : passed.at(-1) || visible[0]), 'optionalAccess', _2 => _2.id]) || \"\",\n      );\n    };\n    const schedule = () => {\n      if (!frame) frame = requestAnimationFrame(update);\n    };\n    update();\n    window.addEventListener(\"scroll\", schedule, { passive: true });\n    window.addEventListener(\"resize\", schedule);\n    return () => {\n      if (frame) cancelAnimationFrame(frame);\n      window.removeEventListener(\"scroll\", schedule);\n      window.removeEventListener(\"resize\", schedule);\n    };\n  }, [c]);\n  _react.useEffect.call(void 0, () => {\n    if (inspected && dialog.current && !dialog.current.open)\n      dialog.current.showModal();\n  }, [inspected]);\n  const inspect = (src, alt, caption = \"\") => {\n    if (!imageUrl(src)) return;\n    returnFocus.current =\n      document.activeElement instanceof HTMLElement\n        ? document.activeElement\n        : null;\n    setZoom(1);\n    setImageState(\"loading\");\n    setImageAttempt(0);\n    setInspected({ src, alt, caption });\n  };\n  const close = () => {\n    _optionalChain([dialog, 'access', _3 => _3.current, 'optionalAccess', _4 => _4.close, 'call', _5 => _5()]);\n    setInspected(null);\n    _optionalChain([returnFocus, 'access', _6 => _6.current, 'optionalAccess', _7 => _7.focus, 'call', _8 => _8()]);\n  };\n  const setInspectionZoom = (next) => {\n    setZoom(Math.max(1, Math.min(4, next)));\n    if (next === 1 && inspectionViewport.current) {\n      inspectionViewport.current.scrollTop = 0;\n      inspectionViewport.current.scrollLeft = 0;\n    }\n  };\n  const chapter = (n) => `${uid}-chapter-${n}`;\n  const navigation =\n    sections.filter((s) => s.title).length > 1 ? (\n      _react2.default.createElement('nav', { className: \"t-nav\", 'aria-label': \"On this page\"  ,}\n        , _react2.default.createElement('p', { className: \"t-nav-label\",}, \"On this page\"  )\n        , sections\n          .filter((s) => s.title)\n          .map((s) => (\n            _react2.default.createElement('a', {\n              key: s.index,\n              href: `#${chapter(s.index)}`,\n              'aria-current': \n                active === chapter(s.index) ? \"location\" : undefined\n              ,}\n\n              , _react2.default.createElement('span', { 'aria-hidden': \"true\",}, String(s.index).padStart(2, \"0\"))\n              , s.title\n            )\n          ))\n      )\n    ) : null;\n  const media = (s) =>\n    imageUrl(s.image) ? (\n      _react2.default.createElement(ProductImage, {\n        src: s.image,\n        alt: s.alt || s.title || \"Product detail\",\n        caption: s.caption,\n        presentation: s.presentation,\n        inspect: () =>\n          inspect(s.image, s.alt || s.title || \"Product detail\", s.caption)\n        ,}\n      )\n    ) : null;\n  const sectionCopy = (s) => (\n    _react2.default.createElement(_react2.default.Fragment, null\n      , _react2.default.createElement(Paragraphs, { text: s.body,} )\n      , _react2.default.createElement(Action, { label: s.label, url: s.href,} )\n    )\n  );\n  const story = (s, position) => (\n    _react2.default.createElement('section', {\n      className: `t-band t-story ${imageUrl(s.image) ? \"t-story-media\" : \"\"} ${position % 2 ? \"t-story-reverse\" : \"\"}`,\n      id: chapter(s.index),\n      'data-chapter': true,\n      key: s.index,}\n\n      , _react2.default.createElement('div', { className: \"t-wrap t-section\" ,}\n        , _react2.default.createElement('div', {\n          className: `t-story-copy ${!s.title && !imageUrl(s.image) ? \"t-story-empty\" : \"\"}`,}\n\n          , s.title && (\n            _react2.default.createElement(_react2.default.Fragment, null\n              , _react2.default.createElement('p', { className: \"t-number\",}, String(s.index).padStart(2, \"0\"))\n              , _react2.default.createElement('h2', null, s.title)\n            )\n          )\n          , imageUrl(s.image) && sectionCopy(s)\n        )\n        , imageUrl(s.image) ? (\n          media(s)\n        ) : (\n          _react2.default.createElement('div', { className: \"t-section-copy\",}, sectionCopy(s))\n        )\n      )\n    )\n  );\n  const explorerSections = sections.filter((s) => s.index <= 4 && s.title);\n  const selectedIndex = Math.min(\n    selected,\n    Math.max(0, explorerSections.length - 1),\n  );\n  const CapabilityHeading = c.overviewTitle ? \"h3\" : \"h2\";\n  const hasFits = [1, 2].some(\n    (i) => c[`fit${i}Label`] || c[`fit${i}Title`] || c[`fit${i}Body`],\n  );\n  const hasComparisons = Array.from(\n    { length: 8 },\n    (_, i) => c[`row${i + 1}Label`],\n  ).some(Boolean);\n  const explorer =\n    explorerSections.length > 0 ? (\n      _react2.default.createElement('section', { className: \"t-band t-explorer\" ,}\n        , _react2.default.createElement('div', { className: \"t-wrap\",}\n          , c.overviewTitle && (\n            _react2.default.createElement('h2', { className: \"t-group-title\",}, c.overviewTitle)\n          )\n          , _react2.default.createElement('div', { className: \"t-explorer-mobile\",}\n            , explorerSections.map((s, i) => {\n              const open = selectedIndex === i && !mobileCollapsed;\n              return (\n                _react2.default.createElement('article', { key: s.index, className: \"t-capability-row\",}\n                  , _react2.default.createElement(CapabilityHeading, null\n                    , _react2.default.createElement('button', {\n                      type: \"button\",\n                      id: `${uid}-mobile-tab-${s.index}`,\n                      'aria-expanded': open,\n                      'aria-controls': `${chapter(s.index)}-mobile`,\n                      onClick: () => {\n                        setSelected(i);\n                        setMobileCollapsed(\n                          selectedIndex === i ? !mobileCollapsed : false,\n                        );\n                      },}\n\n                      , _react2.default.createElement('span', { className: \"t-tab-index\", 'aria-hidden': \"true\",}\n                        , String(i + 1).padStart(2, \"0\")\n                      )\n                      , _react2.default.createElement('span', null, s.title)\n                      , _react2.default.createElement('span', { 'aria-hidden': \"true\",}, open ? \"−\" : \"+\")\n                    )\n                  )\n                  , _react2.default.createElement('div', {\n                    id: `${chapter(s.index)}-mobile`,\n                    role: \"region\",\n                    'aria-labelledby': `${uid}-mobile-tab-${s.index}`,\n                    hidden: !open,\n                    className: \"t-capability-content\",}\n\n                    , sectionCopy(s)\n                    , media(s)\n                  )\n                )\n              );\n            })\n          )\n          , _react2.default.createElement('div', { className: \"t-explorer-layout\",}\n            , _react2.default.createElement('div', {\n              className: \"t-tabs\",\n              role: \"tablist\",\n              'aria-label': c.overviewTitle || \"Explore capabilities\",\n              'aria-orientation': \"vertical\",}\n\n              , explorerSections.map((s, i) => (\n                _react2.default.createElement('button', {\n                  type: \"button\",\n                  role: \"tab\",\n                  key: s.index,\n                  id: `${uid}-tab-${s.index}`,\n                  'aria-controls': chapter(s.index),\n                  'aria-selected': selectedIndex === i,\n                  tabIndex: selectedIndex === i ? 0 : -1,\n                  onClick: () => setSelected(i),\n                  onKeyDown: (e) => {\n                    let next = i;\n                    if (e.key === \"ArrowDown\")\n                      next = (i + 1) % explorerSections.length;\n                    else if (e.key === \"ArrowUp\")\n                      next =\n                        (i - 1 + explorerSections.length) %\n                        explorerSections.length;\n                    else if (e.key === \"Home\") next = 0;\n                    else if (e.key === \"End\")\n                      next = explorerSections.length - 1;\n                    else return;\n                    e.preventDefault();\n                    setSelected(next);\n                    _optionalChain([root, 'access', _9 => _9.current\n, 'optionalAccess', _10 => _10.querySelectorAll, 'call', _11 => _11(\".t-tabs button\")\n, 'access', _12 => _12[next], 'optionalAccess', _13 => _13.focus, 'call', _14 => _14()]);\n                  },}\n\n                  , _react2.default.createElement('span', { className: \"t-tab-index\", 'aria-hidden': \"true\",}\n                    , String(i + 1).padStart(2, \"0\")\n                  )\n                  , _react2.default.createElement('span', null, s.title)\n                  , _react2.default.createElement('span', { className: \"t-tab-arrow\", 'aria-hidden': \"true\",}, \"→\"\n\n                  )\n                )\n              ))\n            )\n            , _react2.default.createElement('div', { className: \"t-explorer-panels\",}\n              , explorerSections.map((s, i) => (\n                _react2.default.createElement('div', {\n                  className: `t-explorer-panel ${imageUrl(s.image) ? \"\" : \"t-explorer-text\"}`,\n                  role: \"tabpanel\",\n                  tabIndex: 0,\n                  hidden: selectedIndex !== i,\n                  id: chapter(s.index),\n                  'aria-labelledby': `${uid}-tab-${s.index}`,\n                  key: s.index,}\n\n                  , _react2.default.createElement('div', { className: \"t-panel-copy\",}\n                    , c.overviewTitle ? _react2.default.createElement('h3', null, s.title) : _react2.default.createElement('h2', null, s.title)\n                    , sectionCopy(s)\n                  )\n                  , media(s)\n                )\n              ))\n            )\n          )\n        )\n      )\n    ) : null;\n  const leadMedia = imageUrl(c.heroImage) ? (\n    _react2.default.createElement('div', { className: \"t-hero-media\",}\n      , _react2.default.createElement(ProductImage, {\n        eager: true,\n        src: c.heroImage,\n        alt: c.heroAlt || \"Cedros product view\",\n        caption: c.heroCaption,\n        presentation: c.heroPresentation,\n        inspect: () =>\n          inspect(\n            c.heroImage,\n            c.heroAlt || \"Cedros product view\",\n            c.heroCaption,\n          )\n        ,}\n      )\n    )\n  ) : null;\n  return (\n    _react2.default.createElement('div', {\n      ref: root,\n      className: `hwt hwt-${kind} ${leadMedia ? \"t-has-hero-media\" : \"\"}`,}\n\n      , _react2.default.createElement('style', null, css)\n      , _react2.default.createElement('header', { className: \"t-hero\",}\n        , _react2.default.createElement('div', { className: \"t-wrap t-hero-grid\" ,}\n          , _react2.default.createElement('div', { className: \"t-enter\",}\n            , c.eyebrow && _react2.default.createElement('p', { className: \"t-kicker\",}, c.eyebrow)\n            , _react2.default.createElement('h1', null, c.title)\n          )\n          , _react2.default.createElement('div', { className: \"t-hero-copy\",}\n            , _react2.default.createElement('p', { className: \"t-lead\",}, c.intro)\n            , _react2.default.createElement('div', { className: \"t-actions\",}\n              , _react2.default.createElement(Action, { primary: true, label: c.primaryLabel, url: c.primaryHref,} )\n              , _react2.default.createElement(Action, { label: c.secondaryLabel, url: c.secondaryHref,} )\n            )\n            , c.meta && _react2.default.createElement('p', { className: \"t-extension-meta\",}, c.meta)\n          )\n          , kind === \"extension\" && leadMedia\n        )\n        , kind !== \"extension\" && leadMedia && (\n          _react2.default.createElement('div', { className: \"t-wrap\",}, leadMedia)\n        )\n      )\n      , kind === \"comparison\" && (\n        _react2.default.createElement(_react2.default.Fragment, null\n          , hasFits && (\n            _react2.default.createElement('section', { className: \"t-band\",}\n              , _react2.default.createElement('div', { className: \"t-wrap t-fit\" ,}\n                , [1, 2]\n                  .filter(\n                    (i) =>\n                      c[`fit${i}Label`] ||\n                      c[`fit${i}Title`] ||\n                      c[`fit${i}Body`],\n                  )\n                  .map((i) => (\n                    _react2.default.createElement('article', { key: i,}\n                      , _react2.default.createElement('p', { className: \"t-kicker\",}, c[`fit${i}Label`])\n                      , c[`fit${i}Title`] && _react2.default.createElement('h2', null, c[`fit${i}Title`])\n                      , _react2.default.createElement(Paragraphs, { text: c[`fit${i}Body`],} )\n                    )\n                  ))\n              )\n            )\n          )\n          , hasComparisons && (\n            _react2.default.createElement('section', { className: \"t-band\",}\n              , _react2.default.createElement('div', { className: \"t-wrap t-table-wrap\" ,}\n                , _react2.default.createElement('table', { className: \"t-comparison-desktop\",}\n                  , _react2.default.createElement('caption', null, c.tableTitle)\n                  , _react2.default.createElement('thead', null\n                    , _react2.default.createElement('tr', null\n                      , _react2.default.createElement('th', { scope: \"col\",}, c.rowLabel)\n                      , _react2.default.createElement('th', { scope: \"col\",}, c.column1)\n                      , _react2.default.createElement('th', { scope: \"col\",}, c.column2)\n                    )\n                  )\n                  , _react2.default.createElement('tbody', null\n                    , Array.from({ length: 8 }, (_, i) => i + 1)\n                      .filter((i) => c[`row${i}Label`])\n                      .map((i) => (\n                        _react2.default.createElement('tr', { key: i,}\n                          , _react2.default.createElement('th', { scope: \"row\",}, c[`row${i}Label`])\n                          , _react2.default.createElement('td', null, c[`row${i}Left`])\n                          , _react2.default.createElement('td', null, c[`row${i}Right`])\n                        )\n                      ))\n                  )\n                )\n                , _react2.default.createElement('div', { className: \"t-comparison-mobile\",}\n                  , _react2.default.createElement('h2', null, c.tableTitle)\n                  , Array.from({ length: 8 }, (_, i) => i + 1)\n                    .filter((i) => c[`row${i}Label`])\n                    .map((i) => (\n                      _react2.default.createElement('article', { key: i,}\n                        , _react2.default.createElement('h3', null, c[`row${i}Label`])\n                        , _react2.default.createElement('dl', null\n                          , _react2.default.createElement('div', null\n                            , _react2.default.createElement('dt', null, c.column1)\n                            , _react2.default.createElement('dd', null, c[`row${i}Left`])\n                          )\n                          , _react2.default.createElement('div', null\n                            , _react2.default.createElement('dt', null, c.column2)\n                            , _react2.default.createElement('dd', null, c[`row${i}Right`])\n                          )\n                        )\n                      )\n                    ))\n                )\n              )\n            )\n          )\n        )\n      )\n      , kind === \"collection\" && (\n        _react2.default.createElement('section', { className: \"t-band\",}\n          , _react2.default.createElement('div', { className: \"t-wrap\",}\n            , _react2.default.createElement('h2', null, c.directoryTitle || \"Explore the collection\")\n            , _react2.default.createElement('div', { className: \"t-directory-controls\",}\n              , _react2.default.createElement('label', { className: \"t-search\", htmlFor: `${uid}-search`,}, \"Search\"\n\n                , _react2.default.createElement('input', {\n                  id: `${uid}-search`,\n                  type: \"search\",\n                  value: query,\n                  onChange: (e) => setQuery(e.target.value),\n                  placeholder: c.searchHint,}\n                )\n              )\n              , categories.length > 1 && (\n                _react2.default.createElement('label', { htmlFor: `${uid}-category`,}, \"Category\"\n\n                  , _react2.default.createElement('select', {\n                    id: `${uid}-category`,\n                    'aria-label': \"Category\",\n                    value: category,\n                    onChange: (e) => setCategory(e.target.value),}\n\n                    , _react2.default.createElement('option', { value: \"\",}, \"All categories\" )\n                    , categories.map((value) => (\n                      _react2.default.createElement('option', { key: value,}, value)\n                    ))\n                  )\n                )\n              )\n            )\n            , _react2.default.createElement('p', { className: \"t-result-count\", role: \"status\",}\n              , matches.length, \" \" , matches.length === 1 ? \"result\" : \"results\"\n            )\n            , _react2.default.createElement('div', { className: \"t-directory\", key: `${query}:${category}`,}\n              , matches.map((e, i) => (\n                _react2.default.createElement('a', { className: \"t-entry\", href: e.href, key: `${e.href}:${i}`,}\n                  , e.image && (\n                    _react2.default.createElement('img', {\n                      className: \"t-entry-image\",\n                      key: e.image,\n                      src: e.image,\n                      alt: \"\",\n                      loading: \"lazy\",\n                      decoding: \"async\",\n                      onError: (e) => {\n                        e.currentTarget.hidden = true;\n                      },}\n                    )\n                  )\n                  , e.category && _react2.default.createElement('small', null, e.category)\n                  , _react2.default.createElement('h3', null\n                    , e.title\n                    , _react2.default.createElement('span', { 'aria-hidden': \"true\",}, \"↗\")\n                  )\n                  , _react2.default.createElement('p', null, e.body)\n                )\n              ))\n            )\n            , matches.length === 0 && (\n              _react2.default.createElement('div', { className: \"t-empty\",}\n                , _react2.default.createElement('p', null, \"No matches. Try a different search or category.\"       )\n                , _react2.default.createElement('button', {\n                  type: \"button\",\n                  className: \"t-reset\",\n                  onClick: () => {\n                    setQuery(\"\");\n                    setCategory(\"\");\n                  },}\n, \"Clear filters\"\n\n                )\n              )\n            )\n          )\n        )\n      )\n      , kind === \"tool\" && (\n        _react2.default.createElement('section', { className: \"t-band\", id: \"tool\",}\n          , _react2.default.createElement('div', { className: \"t-wrap\",}\n            , _react2.default.createElement('div', { className: \"t-heading-row\",}\n              , _react2.default.createElement('h2', null, c.toolTitle)\n              , _react2.default.createElement('p', null, c.toolNote)\n            )\n            , c.toolMode === \"break-even\" ? (\n              _react2.default.createElement(BreakEven, { content: c,} )\n            ) : toolDefinition(c.toolMode) ? (\n              _react2.default.createElement(ExtraTool, { key: c.toolMode, mode: c.toolMode,} )\n            ) : imageUrl(c.toolUrl) ? (\n              _react2.default.createElement(_react2.default.Fragment, null\n                , _react2.default.createElement('iframe', {\n                  className: \"t-tool-host\",\n                  src: imageUrl(c.toolUrl),\n                  title: c.toolTitle,\n                  loading: \"lazy\",\n                  sandbox: \"allow-scripts allow-forms\" ,\n                  referrerPolicy: \"no-referrer\",}\n                )\n                , _react2.default.createElement(Action, { url: c.toolUrl, label: \"Open tool on its own page\"     ,} )\n              )\n            ) : (\n              _react2.default.createElement(Paragraphs, { text: c.toolUnavailable,} )\n            )\n          )\n        )\n      )\n      , kind === \"legal\" ? (\n        _react2.default.createElement('div', { className: \"t-wrap t-legal\" ,}\n          , navigation && (\n            _react2.default.createElement('aside', { className: \"t-legal-index\",}\n              , _react2.default.createElement('div', { className: \"t-legal-index-desktop\",}, navigation)\n              , _react2.default.createElement('details', { className: \"t-legal-index-mobile\",}\n                , _react2.default.createElement('summary', null, \"On this page\"  )\n                , navigation\n              )\n            )\n          )\n          , _react2.default.createElement('article', null\n            , sections.map((s) => (\n              _react2.default.createElement('section', { id: chapter(s.index), 'data-chapter': true, key: s.index,}\n                , s.title && _react2.default.createElement('h2', null, s.title)\n                , _react2.default.createElement(Paragraphs, { text: s.body,} )\n              )\n            ))\n          )\n        )\n      ) : kind === \"feature\" ? (\n        _react2.default.createElement(_react2.default.Fragment, null\n          , explorer\n          , sections.filter((s) => s.index > 4 || !s.title).map(story)\n        )\n      ) : kind === \"industry\" ? (\n        _react2.default.createElement('section', { className: \"t-band t-journey\" ,}\n          , _react2.default.createElement('div', { className: \"t-wrap\",}\n            , c.overviewTitle && (\n              _react2.default.createElement('h2', { className: \"t-group-title\",}, c.overviewTitle)\n            )\n            , _react2.default.createElement('div', { className: \"t-journey-layout\",}\n              , navigation\n              , _react2.default.createElement('div', { className: \"t-journey-steps\",}\n                , sections.map((s) => (\n                  _react2.default.createElement('section', {\n                    className: \"t-journey-step\",\n                    'data-current': active === chapter(s.index) || undefined,\n                    id: chapter(s.index),\n                    'data-chapter': true,\n                    key: s.index,}\n\n                    , _react2.default.createElement('p', { className: \"t-number\",}\n                      , String(s.index).padStart(2, \"0\")\n                    )\n                    , s.title && _react2.default.createElement('h2', null, s.title)\n                    , sectionCopy(s)\n                    , media(s)\n                  )\n                ))\n              )\n            )\n          )\n        )\n      ) : kind === \"extension\" || kind === \"program\" ? (\n        _react2.default.createElement(_react2.default.Fragment, null\n          , sections.some((s) => s.index <= 2) && (\n            _react2.default.createElement('section', { className: \"t-band t-benefits\" ,}\n              , _react2.default.createElement('div', { className: \"t-wrap\",}\n                , c.overviewTitle && (\n                  _react2.default.createElement('h2', { className: \"t-group-title\",}, c.overviewTitle)\n                )\n                , _react2.default.createElement('div', { className: \"t-benefit-grid\",}\n                  , sections\n                    .filter((s) => s.index <= 2)\n                    .map((s) => (\n                      _react2.default.createElement('article', { id: chapter(s.index), 'data-chapter': true, key: s.index,}\n                        , s.title &&\n                          (c.overviewTitle ? (\n                            _react2.default.createElement('h3', null, s.title)\n                          ) : (\n                            _react2.default.createElement('h2', null, s.title)\n                          ))\n                        , sectionCopy(s)\n                        , media(s)\n                      )\n                    ))\n                )\n              )\n            )\n          )\n          , sections.some((s) => s.index > 2) && (\n            _react2.default.createElement('section', { className: \"t-band t-process\" ,}\n              , _react2.default.createElement('div', { className: \"t-wrap t-process-layout\" ,}\n                , c.detailsTitle && _react2.default.createElement('h2', null, c.detailsTitle)\n                , _react2.default.createElement('div', null\n                  , sections\n                    .filter((s) => s.index > 2)\n                    .map((s, i) => (\n                      _react2.default.createElement('article', { id: chapter(s.index), 'data-chapter': true, key: s.index,}\n                        , _react2.default.createElement('p', { className: \"t-number\",}\n                          , String(i + 1).padStart(2, \"0\")\n                        )\n                        , _react2.default.createElement('div', null\n                          , s.title &&\n                            (c.detailsTitle ? (\n                              _react2.default.createElement('h3', null, s.title)\n                            ) : (\n                              _react2.default.createElement('h2', null, s.title)\n                            ))\n                          , sectionCopy(s)\n                          , media(s)\n                        )\n                      )\n                    ))\n                )\n              )\n            )\n          )\n        )\n      ) : (\n        sections.map(story)\n      )\n      , faqs.length > 0 && (\n        _react2.default.createElement('section', { className: \"t-band\",}\n          , _react2.default.createElement('div', { className: \"t-wrap\",}\n            , _react2.default.createElement('div', { className: \"t-faq\",}\n              , _react2.default.createElement('h2', null, c.faqTitle || \"Questions, answered.\")\n              , _react2.default.createElement('div', { className: \"t-faq-answers\",}\n                , faqs.map((f, i) => (\n                  _react2.default.createElement('details', { key: i,}\n                    , _react2.default.createElement('summary', null, f.question)\n                    , _react2.default.createElement(Paragraphs, { text: f.answer,} )\n                  )\n                ))\n              )\n            )\n          )\n        )\n      )\n      , c.closeTitle && (\n        _react2.default.createElement('footer', { className: \"t-close\",}\n          , _react2.default.createElement('div', { className: \"t-wrap t-close-inner\" ,}\n            , _react2.default.createElement('h2', null, c.closeTitle)\n            , _react2.default.createElement('div', { className: \"t-close-copy\",}\n              , _react2.default.createElement(Paragraphs, { text: c.closeBody,} )\n              , _react2.default.createElement('div', { className: \"t-actions\",}\n                , _react2.default.createElement(Action, { primary: true, label: c.closeLabel, url: c.closeHref,} )\n              )\n            )\n          )\n        )\n      )\n      , _react2.default.createElement('dialog', {\n        ref: dialog,\n        'aria-label': _optionalChain([inspected, 'optionalAccess', _15 => _15.alt]) || \"Image inspection\",\n        onCancel: (e) => {\n          e.preventDefault();\n          close();\n        },\n        onClick: (e) => {\n          if (e.target === dialog.current) close();\n        },}\n\n        , _react2.default.createElement('div', { className: \"t-dialog-top\",}\n          , _react2.default.createElement('span', null, _optionalChain([inspected, 'optionalAccess', _16 => _16.alt]))\n          , _react2.default.createElement('button', { type: \"button\", onClick: close,}, \"Close\"\n\n          )\n        )\n        , inspected && (\n          _react2.default.createElement(_react2.default.Fragment, null\n            , _react2.default.createElement('div', { className: \"t-zoom-controls\", 'aria-label': \"Image zoom\" ,}\n              , _react2.default.createElement('button', {\n                type: \"button\",\n                onClick: () => setInspectionZoom(zoom - 0.5),\n                disabled: zoom === 1 || imageState !== \"ready\",\n                'aria-label': \"Zoom out\" ,}\n, \"−\"\n\n              )\n              , _react2.default.createElement('span', { role: \"status\", 'aria-live': \"polite\",}\n                , Math.round(zoom * 100), \"%\"\n              )\n              , _react2.default.createElement('button', {\n                type: \"button\",\n                onClick: () => setInspectionZoom(zoom + 0.5),\n                disabled: zoom === 4 || imageState !== \"ready\",\n                'aria-label': \"Zoom in\" ,}\n, \"+\"\n\n              )\n              , _react2.default.createElement('button', {\n                type: \"button\",\n                onClick: () => setInspectionZoom(1),\n                disabled: zoom === 1 || imageState !== \"ready\",}\n, \"Fit image\"\n\n              )\n              , _react2.default.createElement('span', { className: \"t-zoom-hint\",}, \"Zoom in to read details. Scroll to explore.\"\n\n              )\n            )\n            , _react2.default.createElement('div', {\n              ref: inspectionViewport,\n              className: \"t-image-viewport\",\n              tabIndex: 0,\n              role: \"region\",\n              'aria-label': \"Image detail; scroll to explore when zoomed\"      ,}\n\n              , imageState === \"loading\" && (\n                _react2.default.createElement('p', { className: \"t-image-status\", role: \"status\",}, \"Loading image…\"\n\n                )\n              )\n              , imageState === \"error\" ? (\n                _react2.default.createElement('div', { className: \"t-image-status\", role: \"alert\",}\n                  , _react2.default.createElement('p', null, \"This image could not load.\"    )\n                  , _react2.default.createElement('button', {\n                    type: \"button\",\n                    onClick: () => {\n                      setImageState(\"loading\");\n                      setImageAttempt((n) => n + 1);\n                    },}\n, \"Try again\"\n\n                  )\n                  , _react2.default.createElement(Action, { label: \"Open original image\"  , url: inspected.src,} )\n                )\n              ) : (\n                _react2.default.createElement('img', {\n                  key: `${inspected.src}:${imageAttempt}`,\n                  src: imageUrl(inspected.src),\n                  alt: inspected.alt,\n                  style: { width: `${zoom * 100}%` },\n                  onLoad: () => setImageState(\"ready\"),\n                  onError: () => setImageState(\"error\"),}\n                )\n              )\n            )\n            , inspected.caption && (\n              _react2.default.createElement('p', { className: \"t-dialog-note\",}, inspected.caption)\n            )\n          )\n        )\n      )\n    )\n  );\n} exports.default = HeartwoodTemplate;"}