/* ============================================================
   HeartEase — legal pages (privacy.html / terms.html + zh-hant twins)
   Shared "lp-" layer. Chrome (hh-util/hh-nav/hh-footer) styles are
   inlined per page like every other marketing page; this file only
   carries the legal-document layout so all four pages stay in lockstep.
   ============================================================ */

/* Links inside legal prose */
.lp-prose a { color: var(--brand-navy); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(26,62,110,0.35); }
.lp-prose a:hover { color: var(--brand-red); text-decoration-color: var(--brand-red); }

/* ---------- Header ---------- */
.lp-head { background: var(--parchment); padding: 64px 0 48px; border-bottom: 1px solid var(--rule); }
.lp-head__inner { max-width: 1180px; margin: 0 auto; padding: 0 40px; display: grid; grid-template-columns: 1.35fr 1fr; gap: 72px; align-items: end; }
.lp-head__crumbs { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-mute); margin: 0 0 24px; }
.lp-head__crumbs a { color: var(--ink-mute); text-decoration: none; }
.lp-head__crumbs a:hover { color: var(--brand-red); }
.lp-head__eyebrow { font-family: var(--font-sans); font-weight: 700; font-size: 12px; letter-spacing: 0.28em; text-transform: uppercase; color: var(--brand-red); margin-bottom: 18px; }
.lp-head__title { font-family: var(--font-display); font-weight: 700; font-size: 56px; line-height: 1.03; letter-spacing: -0.02em; color: var(--brand-navy); margin: 0 0 18px; text-wrap: balance; }
.lp-head__title em { color: var(--brand-red); font-style: italic; }
.lp-head__sub { font-size: 16.5px; line-height: 1.65; color: var(--ink-soft); margin: 0; max-width: 560px; text-wrap: pretty; }

/* Meta panel (effective date / version / entity / contact) */
.lp-meta { background: #fff; border: 1px solid var(--rule); border-top: 3px solid var(--brand-red); padding: 6px 24px; margin: 0; }
.lp-meta__row { display: grid; grid-template-columns: 130px 1fr; gap: 16px; padding: 13px 0; border-top: 1px solid var(--rule-soft, rgba(26,62,110,0.08)); margin: 0; align-items: baseline; }
.lp-meta__row:first-child { border-top: none; }
.lp-meta__row dt { font-family: var(--font-sans); font-weight: 700; font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-mute); margin: 0; }
.lp-meta__row dd { margin: 0; font-family: var(--font-sans); font-size: 13.5px; line-height: 1.5; color: var(--ink); }
.lp-meta__row dd a { color: var(--brand-navy); font-weight: 600; text-decoration: none; }
.lp-meta__row dd a:hover { color: var(--brand-red); }
.lp-meta__row dd .lp-mono { font-family: var(--font-mono); font-size: 12px; }

/* ---------- Body layout: sticky TOC + prose ---------- */
.lp-body { max-width: 1180px; margin: 0 auto; padding: 72px 40px 104px; display: grid; grid-template-columns: 264px minmax(0, 1fr); gap: 72px; align-items: start; }
.lp-toc { position: sticky; top: 104px; }
.lp-toc__label { font-family: var(--font-sans); font-weight: 700; font-size: 10.5px; letter-spacing: 0.24em; text-transform: uppercase; color: var(--brand-red); margin: 0 0 14px; padding-bottom: 10px; border-bottom: 1px solid var(--rule); }
.lp-toc__group { font-family: var(--font-sans); font-weight: 700; font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-mute); margin: 20px 0 8px; }
.lp-toc ol { list-style: none; margin: 0; padding: 0; }
.lp-toc li { margin: 0; }
.lp-toc a { display: grid; grid-template-columns: 30px 1fr; gap: 10px; align-items: baseline; padding: 6.5px 0; font-family: var(--font-sans); font-size: 13px; line-height: 1.35; color: var(--ink-soft); text-decoration: none; transition: color var(--dur-fast) var(--ease-out); }
.lp-toc a:hover { color: var(--brand-red); }
.lp-toc a .lp-toc__num { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.06em; color: var(--ink-mute); }
.lp-toc a:hover .lp-toc__num { color: var(--brand-red); }
.lp-toc__xlink { margin-top: 26px; padding-top: 18px; border-top: 1px solid var(--rule); }
.lp-toc__xlink a { display: inline-flex; align-items: center; gap: 8px; grid-template-columns: none; font-family: var(--font-sans); font-weight: 700; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--brand-navy); padding: 0; }

/* ---------- Prose ---------- */
.lp-prose { max-width: 720px; }
.lp-prose section { scroll-margin-top: 104px; }
.lp-prose h2 { display: flex; align-items: baseline; gap: 16px; font-family: var(--font-display); font-weight: 700; font-size: 29px; line-height: 1.15; letter-spacing: -0.01em; color: var(--brand-navy); margin: 56px 0 18px; padding-top: 36px; border-top: 1px solid var(--rule); text-wrap: balance; }
.lp-prose section:first-of-type h2 { margin-top: 0; padding-top: 0; border-top: none; }
.lp-prose h2 .lp-num { font-family: var(--font-mono); font-weight: 700; font-size: 13px; letter-spacing: 0.08em; color: var(--brand-red); flex: none; position: relative; top: -2px; }
.lp-prose h3 { font-family: var(--font-sans); font-weight: 700; font-size: 15.5px; color: var(--brand-navy); margin: 26px 0 8px; }
.lp-prose h3 .lp-num { font-family: var(--font-mono); font-weight: 700; font-size: 11.5px; color: var(--brand-red); margin-right: 8px; }
.lp-prose p { font-size: 15px; line-height: 1.72; color: var(--ink); margin: 0 0 14px; text-wrap: pretty; }
.lp-prose p strong, .lp-prose li strong { color: var(--brand-navy-ink, var(--brand-navy)); font-weight: 700; }
.lp-prose ul { list-style: none; margin: 0 0 16px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.lp-prose ul li { position: relative; padding-left: 20px; font-size: 15px; line-height: 1.65; color: var(--ink); }
.lp-prose ul li::before { content: ''; position: absolute; left: 2px; top: 10px; width: 6px; height: 6px; border-radius: 999px; background: var(--brand-gold); }
.lp-prose .lp-lead { font-size: 16.5px; line-height: 1.7; color: var(--ink-soft); }

/* Definition rows (who-we-are register block) */
.lp-facts { margin: 18px 0 20px; border: 1px solid var(--rule); background: #fff; padding: 4px 20px; }
.lp-facts__row { display: grid; grid-template-columns: 220px 1fr; gap: 18px; padding: 11px 0; border-top: 1px solid var(--rule-soft, rgba(26,62,110,0.08)); margin: 0; align-items: baseline; }
.lp-facts__row:first-child { border-top: none; }
.lp-facts__row dt { font-family: var(--font-sans); font-weight: 700; font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-mute); margin: 0; }
.lp-facts__row dd { margin: 0; font-size: 14px; line-height: 1.55; color: var(--ink); }
.lp-facts__row dd .lp-mono { font-family: var(--font-mono); font-size: 12.5px; }

/* Tables (legal basis / cross-border recipients) */
.lp-tablewrap { margin: 20px 0 24px; border: 1px solid var(--rule); background: #fff; overflow-x: auto; }
.lp-table { width: 100%; border-collapse: collapse; }
.lp-table th { font-family: var(--font-sans); font-weight: 700; font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--brand-navy); text-align: left; padding: 13px 16px; border-bottom: 2px solid var(--brand-navy); background: var(--parchment-soft); white-space: nowrap; }
.lp-table td { font-family: var(--font-sans); font-size: 13px; line-height: 1.55; color: var(--ink); padding: 13px 16px; border-bottom: 1px solid var(--rule); vertical-align: top; }
.lp-table tr:last-child td { border-bottom: none; }

/* Navy promise callout (we-do-not-sell / no-shopping guarantee) */
.lp-callout { position: relative; background: var(--brand-navy); color: #F7F2E9; border-left: 4px solid var(--brand-gold); padding: 26px 30px; margin: 24px 0; overflow: hidden; }
.lp-callout::before { content: attr(data-mark); position: absolute; top: -26px; right: -8px; font-family: var(--font-serif-cn); font-weight: 900; font-size: 150px; line-height: 1; color: rgba(247,242,233,0.06); pointer-events: none; }
.lp-callout__kicker { font-family: var(--font-sans); font-weight: 700; font-size: 10.5px; letter-spacing: 0.24em; text-transform: uppercase; color: var(--brand-gold); margin: 0 0 10px; }
.lp-callout p { color: rgba(247,242,233,0.92); margin-bottom: 10px; }
.lp-callout p:last-child { margin-bottom: 0; }
.lp-callout p strong { color: #fff; }

/* Info note */
.lp-note { display: flex; align-items: flex-start; gap: 12px; background: rgba(26,62,110,0.05); border: 1px solid var(--rule); border-radius: 4px; padding: 14px 16px; margin: 18px 0; }
.lp-note svg { width: 15px; height: 15px; color: var(--brand-navy); stroke-width: 2; flex: none; margin-top: 3px; }
.lp-note p { font-family: var(--font-sans); font-size: 13px; line-height: 1.6; color: var(--ink-soft); margin: 0; }

/* Pending-confirmation chips */
.lp-tbd { display: inline-flex; align-items: center; gap: 5px; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--brand-red); background: rgba(211,21,21,0.08); border: 1px dashed rgba(211,21,21,0.4); border-radius: 2px; padding: 2px 8px; white-space: nowrap; vertical-align: baseline; position: relative; top: -1px; }
.lp-prop { display: inline-flex; align-items: center; gap: 5px; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: #7A5A12; background: rgba(230,182,85,0.16); border: 1px dashed rgba(230,182,85,0.7); border-radius: 2px; padding: 2px 8px; white-space: nowrap; vertical-align: baseline; position: relative; top: -1px; }

/* Draft banner under the header (whole document pending confirmations) */
.lp-draftbar { display: flex; align-items: flex-start; gap: 10px; max-width: 560px; font-family: var(--font-sans); font-size: 12.5px; line-height: 1.55; color: var(--ink-mute); background: rgba(211,21,21,0.05); border: 1px solid rgba(211,21,21,0.25); border-radius: 4px; padding: 12px 14px; margin-top: 18px; }
.lp-draftbar svg { width: 15px; height: 15px; color: var(--brand-red); stroke-width: 2; flex: none; margin-top: 2px; }

/* Terms: part divider */
.lp-part { display: grid; grid-template-columns: auto 1fr; gap: 20px; align-items: center; margin: 64px 0 8px; padding: 22px 26px; background: var(--brand-navy); color: #fff; scroll-margin-top: 104px; }
.lp-prose section.lp-part-sec:first-of-type + section .lp-part { margin-top: 0; }
.lp-part__tag { font-family: var(--font-mono); font-weight: 700; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--brand-gold); border: 1px solid rgba(230,182,85,0.5); padding: 6px 10px; }
.lp-part__title { font-family: var(--font-display); font-weight: 700; font-size: 26px; line-height: 1.15; color: #fff; margin: 0; }
.lp-part__sub { grid-column: 1 / -1; font-family: var(--font-sans); font-size: 13px; line-height: 1.55; color: rgba(247,242,233,0.72); margin: 2px 0 0; }

/* Cross-link card at the end of each legal page */
.lp-xcard { margin-top: 64px; border: 1px solid var(--rule); background: #fff; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 26px 30px; text-decoration: none; transition: border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out); }
.lp-xcard:hover { border-color: var(--brand-navy); transform: translateY(-2px); }
.lp-xcard__eyebrow { font-family: var(--font-sans); font-weight: 700; font-size: 10.5px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--brand-red); margin: 0 0 6px; }
.lp-xcard__title { font-family: var(--font-display); font-weight: 700; font-size: 24px; color: var(--brand-navy); margin: 0; line-height: 1.15; }
.lp-xcard__arrow { flex: none; width: 40px; height: 40px; border-radius: 999px; background: var(--brand-navy); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px; transition: background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out); }
.lp-xcard:hover .lp-xcard__arrow { background: var(--brand-red); transform: translateX(3px); }

/* Closing sign-off */
.lp-signoff { margin-top: 56px; padding-top: 28px; border-top: 1px solid var(--rule); }
.lp-signoff__co { font-family: var(--font-display); font-weight: 700; font-size: 17px; color: var(--brand-navy); margin: 0 0 4px; }
.lp-signoff__tag { font-family: var(--font-display); font-style: italic; font-size: 15px; color: var(--brand-red); margin: 0 0 8px; }
.lp-signoff__contact { font-family: var(--font-mono); font-size: 11.5px; letter-spacing: 0.04em; color: var(--ink-mute); margin: 0; }
.lp-signoff__contact a { color: var(--ink-soft); text-decoration: none; }
.lp-signoff__contact a:hover { color: var(--brand-red); }

/* zh-Hant twins: Traditional type sizing niceties */
html[lang="zh-Hant"] .lp-prose p, html[lang="zh-Hant"] .lp-prose ul li { font-size: 15px; line-height: 1.85; }
html[lang="zh-Hant"] .lp-head__title { font-family: var(--font-serif-tc, var(--font-display)); letter-spacing: 0.01em; font-size: 50px; }
html[lang="zh-Hant"] .lp-prose h2 { font-family: var(--font-serif-tc, var(--font-display)); font-size: 26px; letter-spacing: 0.01em; }
html[lang="zh-Hant"] .lp-part__title { font-family: var(--font-serif-tc, var(--font-display)); font-size: 23px; }
html[lang="zh-Hant"] .lp-xcard__title { font-family: var(--font-serif-tc, var(--font-display)); font-size: 21px; }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
  .lp-head__inner { grid-template-columns: 1fr; gap: 36px; align-items: start; }
  .lp-body { grid-template-columns: 1fr; gap: 40px; padding-top: 48px; }
  .lp-toc { position: static; }
  .lp-toc ol { columns: 2; column-gap: 32px; }
  .lp-toc__xlink { display: none; }
}
@media (max-width: 860px) {
  .lp-head__inner, .lp-body { padding-left: 24px; padding-right: 24px; }
  .lp-head { padding: 48px 0 36px; }
  .lp-head__title { font-size: 42px; }
  html[lang="zh-Hant"] .lp-head__title { font-size: 38px; }
}
@media (max-width: 560px) {
  .lp-head__inner, .lp-body { padding-left: 18px; padding-right: 18px; }
  .lp-head__title { font-size: 34px; }
  html[lang="zh-Hant"] .lp-head__title { font-size: 30px; }
  .lp-toc ol { columns: 1; }
  .lp-facts__row { grid-template-columns: 1fr; gap: 4px; }
  .lp-meta__row { grid-template-columns: 1fr; gap: 4px; }
  .lp-prose h2 { font-size: 24px; }
  .lp-part { grid-template-columns: 1fr; gap: 10px; }
  .lp-xcard { flex-direction: column; align-items: flex-start; }
}
