/* Policy pages — structure matches the group site policy pages, guest palette. */

.policy-hero {
  padding: 128px 0 32px;
  background: var(--base);
}
.policy-eyebrow {
  font-family: var(--sans);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--terracotta);
  font-weight: 700;
  margin: 0 0 18px;
}
.policy-hero h1 {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(38px, 5vw, 56px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  margin: 0 0 16px;
  color: var(--ink);
}
.policy-date {
  font-family: var(--sans);
  font-size: 13px;
  color: var(--ink-3);
  font-weight: 600;
  letter-spacing: 0.02em;
  margin: 0 0 22px;
}
.policy-lead {
  font-size: 17px;
  line-height: 1.6;
  color: var(--ink-2);
  max-width: 640px;
  margin: 0;
}

.policy-content {
  padding: 48px 0 120px;
  background: var(--base);
}

/* Table of contents */
.policy-toc {
  padding: 28px 32px;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  margin: 0 0 56px;
}
.policy-toc[hidden] { display: none; }
.policy-toc-title {
  font-family: var(--sans);
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--terracotta);
  font-weight: 700;
  margin: 0 0 14px;
}
.policy-toc ol {
  list-style: none;
  padding: 0;
  margin: 0;
  counter-reset: toc;
}
.policy-toc li {
  counter-increment: toc;
  padding: 9px 0;
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: baseline;
  gap: 14px;
}
.policy-toc li:last-child { border-bottom: 0; }
.policy-toc li::before {
  content: counter(toc, decimal-leading-zero);
  color: var(--terracotta);
  font-weight: 700;
  font-size: 13px;
  font-family: var(--sans);
  flex-shrink: 0;
}
.policy-toc a {
  font-family: var(--sans);
  font-size: 15px;
  color: var(--ink);
  font-weight: 500;
  text-decoration: none;
  transition: color .2s ease;
}
.policy-toc a:hover { color: var(--terracotta); }

/* Body + numbered sections */
.policy-body h2 {
  font-family: var(--serif);
  font-weight: 400;
  font-size: 27px;
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 44px 0 18px;
  scroll-margin-top: 100px;
  display: flex;
  align-items: baseline;
  gap: 16px;
}
.policy-body h2:first-child { margin-top: 0; }

/* Section wrappers (added by script) carry the inter-section spacing so the
   heading's own top margin can collapse to zero as first child of the wrap. */
.policy-section { margin-top: 40px; }
.policy-section:first-child { margin-top: 0; }
.policy-body h2::before {
  content: attr(data-num);
  font-family: var(--sans);
  color: var(--terracotta);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.06em;
  flex-shrink: 0;
}
/* No-JS fallback: heading keeps its inline number, hide the empty accent */
.policy-body h2:not([data-num])::before { content: none; }
.policy-body h3 {
  font-family: var(--sans);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink);
  margin: 28px 0 12px;
}
.policy-body p, .policy-body li {
  font-size: 16px;
  color: var(--ink);
  line-height: 1.7;
  margin: 0 0 14px;
}
.policy-body ul, .policy-body ol {
  margin: 0 0 18px;
  padding-left: 24px;
}
.policy-body li { margin-bottom: 8px; }
.policy-body p strong, .policy-body li strong { color: var(--ink); font-weight: 700; }
.policy-body a {
  color: var(--terracotta);
  text-decoration: none;
  border-bottom: 1px solid var(--line-2);
  transition: border-color .2s ease;
}
.policy-body a:hover { border-color: var(--terracotta); }
.policy-body table {
  width: 100%;
  border-collapse: collapse;
  margin: 0 0 20px;
  font-size: 14px;
}
.policy-body th, .policy-body td {
  padding: 12px 14px;
  text-align: left;
  border-bottom: 1px solid var(--line);
  vertical-align: top;
}
.policy-body th {
  background: var(--base-2);
  font-family: var(--sans);
  font-weight: 700;
  color: var(--ink);
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.policy-body td { color: var(--ink-2); }
.policy-body hr {
  border: none;
  border-top: 1px solid var(--line);
  margin: 44px 0;
}

/* Updated box */
.policy-updated-box {
  padding: 28px 32px;
  background: var(--base-2);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  text-align: center;
  margin-top: 56px;
}
.policy-updated-box p {
  font-family: var(--sans);
  font-size: 14px;
  color: var(--ink-2);
  margin: 0;
}

/* Scroll reveal — matches the group site fade-up (opacity + 28px rise). */
.policy-reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .9s var(--ease), transform .9s var(--ease);
  will-change: opacity, transform;
}
.policy-reveal.in {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  .policy-reveal { opacity: 1; transform: none; transition: none; }
}

@media (max-width: 640px) {
  .policy-hero { padding: 104px 0 28px; }
  .policy-content { padding: 36px 0 96px; }
  .policy-toc { padding: 22px 22px; margin-bottom: 40px; }
  .policy-body h2 { font-size: 23px; }
  .policy-body p, .policy-body li { font-size: 15px; }
}
