*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--h-bg);
  color: var(--h-text);
  font-family: var(--h-font-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
body.is-menu-open, body.is-popup-open { overflow: hidden; }
::selection { background: var(--h-primary); color: var(--h-dark-ink); }
img { display: block; max-width: 100%; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
input::placeholder, textarea::placeholder { color: rgba(var(--h-ink), .32); }
select option { background: var(--h-card-2); color: var(--h-text); }
::-webkit-scrollbar { width: 11px; }
::-webkit-scrollbar-track { background: var(--h-bg); }
::-webkit-scrollbar-thumb { background: var(--h-scroll-thumb); border: 3px solid var(--h-bg); border-radius: 8px; }
.h-site { min-height: 100vh; overflow-x: clip; background: var(--h-bg); }
.h-main { min-height: 30vh; }
.h-container { width: min(100%, var(--h-container)); margin-inline: auto; padding-inline: var(--h-gutter); }
.h-container--narrow { max-width: 1180px; }
.h-container--history { max-width: 1080px; }
.h-container--form { max-width: 720px; }
.h-section {
  position: relative;
  padding-block: var(--h-section-pad);
  background: var(--h-section-bg-light, var(--h-bg));
  color: var(--h-text);
  scroll-margin-top: 80px;
}
html[data-theme='dark'] .h-section { background: var(--h-section-bg-dark, var(--h-bg)); }
.h-section.h-dark-context { background: var(--h-section-bg-dark, #140f0c); }
.h-skip-link { position: fixed; left: 12px; top: -100px; z-index: 9999; background: #fff; color: #111; padding: 10px 16px; border-radius: 6px; }
.h-skip-link:focus { top: 12px; }
.h-section-title {
  margin: 0 0 22px;
  color: var(--h-text);
  font-family: var(--h-font-display);
  font-weight: 500;
  font-size: clamp(36px, 4.6vw, 62px);
  line-height: 1.04;
  letter-spacing: -.01em;
  text-wrap: balance;
}
.h-section-title--large { font-size: clamp(40px, 5.5vw, 76px); line-height: 1.02; }
.h-section-title em { color: var(--h-primary-hover); font-style: italic; }
.h-garden__copy .h-section-title em { color: var(--h-green); }
.h-copy { margin: 0; color: rgba(var(--h-ink), .7); font-size: 17px; line-height: 1.72; }
.h-copy + .h-copy { margin-top: 20px; }
.h-copy--bright { color: rgba(var(--h-ink), .82); font-size: 18px; }
.h-section-intro { max-width: 680px; margin-bottom: 70px; }
.h-section-intro--center { margin-inline: auto; text-align: center; }
.h-section-cta { margin-top: 48px; text-align: center; }
.h-split { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: clamp(48px, 7vw, 110px); }
.h-article { color: var(--h-text); }
.h-article h1, .h-content-page h1 { font-family: var(--h-font-display); font-size: clamp(44px, 6vw, 76px); line-height: 1; font-weight: 500; }
.h-article h2 { font-family: var(--h-font-display); font-size: clamp(30px, 4vw, 46px); }
.h-article p, .h-article li { font-size: 17px; line-height: 1.75; }
.h-content-page { min-height: 70vh; padding-top: clamp(150px, 20vh, 220px); }
.h-content-page__inner { max-width: 880px; }
.h-content-page__inner--center { text-align: center; }
.h-article__meta { color: rgba(var(--h-ink), .5); }

[data-reveal] { will-change: opacity, transform; }
@keyframes h-reveal-up { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
@keyframes h-reveal-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes h-reveal-scale { from { opacity: 0; transform: scale(1.045); } to { opacity: 1; transform: none; } }
@keyframes h-drift-y { from { transform: translateY(28px); } to { transform: translateY(-28px); } }
@supports (animation-timeline: view()) {
  [data-reveal] { opacity: 0; animation: h-reveal-up both; animation-timeline: view(); animation-range: entry 4% cover 34%; animation-timing-function: cubic-bezier(.22,.61,.36,1); }
  [data-reveal='fade'] { animation-name: h-reveal-fade; }
  .h-gallery__item[data-reveal] { animation-name: h-reveal-scale; animation-range: entry 0% cover 30%; }
  [data-drift] { animation: h-drift-y linear both; animation-timeline: view(); animation-range: cover; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  [data-reveal] { opacity: 1 !important; animation: none !important; transform: none !important; }
  [data-drift] { animation: none !important; transform: none !important; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
