body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--bpx-text-main);
  background: var(--bpx-bg-main);
  line-height: var(--leading-normal);
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  font-weight: 700;
  line-height: var(--leading-tight);
  color: inherit;
  letter-spacing: var(--tracking-tight);
}

h1 { font-size: var(--text-hero); font-weight: 800; }
h2 { font-size: var(--text-4xl); font-weight: 700; }
h3 { font-size: var(--text-2xl); }
h4 { font-size: var(--text-xl); }
h5 { font-size: var(--text-lg); }
h6 { font-size: var(--text-base); }

p {
  max-width: 68ch;
  line-height: var(--leading-relaxed);
}

strong {
  font-weight: 600;
}

::selection {
  background: var(--bpx-green-primary);
  color: var(--bpx-white-pure);
}

/* Language specific rules */
html[lang='ko'] body {
  font-family: var(--font-kr), var(--font-body);
  line-height: 1.8;
}

html[lang='ko'] h1, html[lang='ko'] h2, html[lang='ko'] h3 {
  font-family: var(--font-kr), var(--font-heading);
  word-break: keep-all;
}

html[lang='zh-HK'] body {
  font-family: var(--font-tc), var(--font-body);
  line-height: 1.8;
}

html[lang='zh-HK'] h1, html[lang='zh-HK'] h2, html[lang='zh-HK'] h3 {
  font-family: var(--font-tc), var(--font-heading);
}

/* Skip link */
.bpx-skip-link {
  position: absolute;
  left: -9999px;
  top: auto;
  z-index: 9999;
  background: var(--bpx-green-primary);
  color: var(--bpx-white-pure);
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-sm);
}

.bpx-skip-link:focus {
  left: var(--space-md);
  top: var(--space-md);
}

/* Screen reader only */
.bpx-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* Focus visible */
:focus-visible {
  outline: 2px solid var(--bpx-green-premium);
  outline-offset: 2px;
}
