/* ==========================================================================
   ShoreVest — LEGAL PAGES (2026-06-23 rebuild)
   Privacy Policy · Cookie Notice · Terms of Use · Legal Notices & Disclaimers
   · Investor Portal / Access Terms (EN + CN). Self-contained (hardcoded values,
   no token dependency) so it can sit on the shared chrome (sv-chrome.css,
   injected by shared-header.js) without pulling the legacy type stack. Scoped
   to the legal body classes so it never touches other pages. Institutional
   system matching the homepage: warm ivory + ink, Arial/PingFang, cinnabar as
   structure, square edges, thin rules. No cards/shadows/rounded/green/serif.
   ========================================================================== */

body.privacy-page,
body.cookie-page,
body.terms-page,
body.legal-page,
body.disclaimers-page {
  overflow-x: hidden;
  --lg-cinnabar: var(--sv26-cinnabar, #C93B2A);
  --lg-ink: var(--sv26-head, #24221F);
  --lg-ink-2: var(--sv26-text, #3B3732);
  --lg-muted: var(--sv26-text-2, #6B635B);
  --lg-line: var(--sv26-rule, #E5E0D7);
  --lg-line-strong: var(--sv26-rule-2, #CDC5B8);
  --lg-ivory: var(--sv26-paper, #FDFCFA);
  --lg-stone: var(--sv26-xuan, #F2ECD8);
  --lg-font: Arial, "Helvetica Neue", Helvetica, sans-serif;
  --lg-cn: "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
  background: var(--lg-ivory);
  color: var(--lg-ink-2);
  font-family: var(--lg-font);
}

/* Keep any browser canvas, safe-area, or post-footer whitespace on legal pages
   aligned with the dark footer so no ivory/white strip can show below it. */
html:has(body.privacy-page),
html:has(body.cookie-page),
html:has(body.terms-page),
html:has(body.legal-page),
html:has(body.disclaimers-page),
body.privacy-page,
body.cookie-page,
body.terms-page,
body.legal-page,
body.disclaimers-page {
  background: var(--sv-dark-footer, #20211F);
}

body.privacy-page .sv-footer,
body.cookie-page .sv-footer,
body.terms-page .sv-footer,
body.legal-page .sv-footer,
body.disclaimers-page .sv-footer {
  margin-bottom: 0;
  border-bottom: 0;
}

/* Clear the fixed top bar (forced position:fixed, ~80px) so the masthead
   never tucks under the header. Anchor jumps clear it too. */
html:has(body.privacy-page),
html:has(body.cookie-page),
html:has(body.terms-page),
html:has(body.legal-page),
html:has(body.disclaimers-page) {
  scroll-padding-top: calc(var(--sv-header-height-desktop, 80px) + 24px);
}

/* ---- Layout shell ---- */
body.privacy-page .legal-main,
body.cookie-page .legal-main,
body.terms-page .legal-main,
body.legal-page .legal-main,
body.disclaimers-page .legal-main {
  background: var(--lg-ivory);
  padding: clamp(40px, 4.5vw, 68px) 0 clamp(44px, 5vw, 72px);
}
body.privacy-page .legal-content,
body.cookie-page .legal-content,
body.terms-page .legal-content,
body.legal-page .legal-content,
body.disclaimers-page .legal-content {
  width: 100%;
  max-width: min(1120px, calc(100vw - clamp(40px, 9vw, 128px)));
  margin-inline: auto;
  padding-inline: 0;
}

/* ---- Intro block — cinnabar-ruled masthead ---- */
body.privacy-page .legal-page__intro-block,
body.cookie-page .legal-page__intro-block,
body.terms-page .legal-page__intro-block,
body.legal-page .legal-page__intro-block,
body.disclaimers-page .legal-page__intro-block {
  position: relative;
  margin-bottom: clamp(40px, 4.4vw, 60px);
  padding-top: clamp(26px, 2.8vw, 38px);
  padding-bottom: clamp(28px, 3vw, 40px);
  border-top: 3px solid var(--lg-cinnabar);
  border-bottom: 1px solid var(--lg-line-strong);
}
body.privacy-page .legal-page__kicker,
body.cookie-page .legal-page__kicker,
body.terms-page .legal-page__kicker,
body.legal-page .legal-page__kicker,
body.disclaimers-page .legal-page__kicker {
  margin: 0 0 22px;
  font: 600 12px/1.4 var(--lg-font);
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--lg-cinnabar) !important;
  display: flex; align-items: center; gap: 11px;
}
body.privacy-page .legal-page__kicker::before,
body.cookie-page .legal-page__kicker::before,
body.terms-page .legal-page__kicker::before,
body.legal-page .legal-page__kicker::before,
body.disclaimers-page .legal-page__kicker::before {
  content: ""; display: block; width: 7px; height: 7px;
  background: var(--lg-cinnabar); flex: 0 0 auto;
}
body.privacy-page .legal-content h1,
body.cookie-page .legal-content h1,
body.terms-page .legal-content h1,
body.legal-page .legal-content h1,
body.disclaimers-page .legal-content h1 {
  margin: 0; font: 500 clamp(34px, 4.4vw, 52px)/1.05 var(--lg-font);
  letter-spacing: -0.025em; color: var(--lg-ink); text-wrap: balance;
}
body.privacy-page .effective-date,
body.cookie-page .effective-date,
body.terms-page .effective-date,
body.legal-page .effective-date,
body.disclaimers-page .effective-date {
  display: inline-block;
  margin: 48px 0 0 !important; font: 500 13px/1.4 var(--lg-font); color: var(--lg-muted);
  letter-spacing: 0.04em; text-transform: uppercase;
  padding: 8px 14px; background: var(--lg-stone); border-left: 2px solid var(--lg-cinnabar);
}
body.privacy-page .effective-date strong,
body.cookie-page .effective-date strong,
body.terms-page .effective-date strong,
body.legal-page .effective-date strong,
body.disclaimers-page .effective-date strong {
  color: var(--lg-ink-2); font-weight: 600;
}

/* ---- Section headings ---- */
body.privacy-page .legal-content h2,
body.cookie-page .legal-content h2,
body.terms-page .legal-content h2,
body.legal-page .legal-content h2,
body.disclaimers-page .legal-content h2 {
  margin: clamp(40px, 4vw, 60px) 0 16px;
  padding-top: 22px; border-top: 1px solid var(--lg-line-strong);
  font: 500 clamp(21px, 2vw, 27px)/1.2 var(--lg-font);
  letter-spacing: -0.012em; color: var(--lg-ink); position: relative;
}
body.privacy-page .legal-content h2::before,
body.cookie-page .legal-content h2::before,
body.terms-page .legal-content h2::before,
body.legal-page .legal-content h2::before,
body.disclaimers-page .legal-content h2::before {
  content: none; display: none;
}
body.privacy-page .legal-content h3,
body.cookie-page .legal-content h3,
body.terms-page .legal-content h3,
body.legal-page .legal-content h3,
body.disclaimers-page .legal-content h3 {
  margin: 30px 0 10px;
  font: 600 16px/1.35 var(--lg-font); letter-spacing: 0.01em; color: var(--lg-ink);
}

/* ---- Body copy ---- */
body.privacy-page .legal-content p,
body.cookie-page .legal-content p,
body.terms-page .legal-content p,
body.legal-page .legal-content p,
body.disclaimers-page .legal-content p {
  margin: 0 0 1.15em; font: 400 16px/1.72 var(--lg-font); color: var(--lg-ink-2);
  max-width: none;
}
body.privacy-page .legal-content a,
body.cookie-page .legal-content a,
body.terms-page .legal-content a,
body.legal-page .legal-content a,
body.disclaimers-page .legal-content a {
  color: var(--lg-cinnabar); text-decoration: none; border-bottom: 1px solid rgba(201, 59, 42, 0.4);
  transition: border-color .15s ease;
}
body.privacy-page .legal-content a:hover,
body.cookie-page .legal-content a:hover,
body.terms-page .legal-content a:hover,
body.legal-page .legal-content a:hover,
body.disclaimers-page .legal-content a:hover { border-color: var(--lg-cinnabar); }

/* ---- Lists — restrained square cinnabar markers ---- */
body.privacy-page .legal-content ul,
body.cookie-page .legal-content ul,
body.terms-page .legal-content ul,
body.legal-page .legal-content ul,
body.disclaimers-page .legal-content ul {
  margin: 0 0 1.4em; padding: 0; list-style: none; max-width: none;
}
body.privacy-page .legal-content ul li,
body.cookie-page .legal-content ul li,
body.terms-page .legal-content ul li,
body.legal-page .legal-content ul li,
body.disclaimers-page .legal-content ul li {
  position: relative; padding: 0 0 0 22px; margin: 0 0 0.6em;
  font: 400 15.5px/1.65 var(--lg-font); color: var(--lg-ink-2);
}
body.privacy-page .legal-content ul li::before,
body.cookie-page .legal-content ul li::before,
body.terms-page .legal-content ul li::before,
body.legal-page .legal-content ul li::before,
body.disclaimers-page .legal-content ul li::before {
  content: ""; position: absolute; left: 0; top: 0.66em; width: 6px; height: 6px; background: var(--lg-cinnabar);
}

/* ---- Ordered lists ---- */
body.privacy-page .legal-content ol,
body.cookie-page .legal-content ol,
body.terms-page .legal-content ol,
body.legal-page .legal-content ol,
body.disclaimers-page .legal-content ol {
  margin: 0 0 1.4em; padding-left: 22px; max-width: none;
}
body.privacy-page .legal-content ol li,
body.cookie-page .legal-content ol li,
body.terms-page .legal-content ol li,
body.legal-page .legal-content ol li,
body.disclaimers-page .legal-content ol li {
  margin: 0 0 0.6em; padding-left: 6px;
  font: 400 15.5px/1.65 var(--lg-font); color: var(--lg-ink-2);
}
body.privacy-page .legal-content ol li::marker,
body.cookie-page .legal-content ol li::marker,
body.terms-page .legal-content ol li::marker,
body.legal-page .legal-content ol li::marker,
body.disclaimers-page .legal-content ol li::marker { color: var(--lg-cinnabar); font-weight: 600; }

/* ---- Contact actions footer block ---- */
body.privacy-page .legal-contact-actions,
body.cookie-page .legal-contact-actions,
body.terms-page .legal-contact-actions,
body.legal-page .legal-contact-actions,
body.disclaimers-page .legal-contact-actions {
  display: flex; flex-wrap: wrap; gap: 14px 28px; align-items: center;
  margin-top: clamp(40px, 4vw, 60px); padding-top: 26px;
  border-top: 1px solid var(--lg-line-strong);
}
body.privacy-page .legal-contact-actions a,
body.cookie-page .legal-contact-actions a,
body.terms-page .legal-contact-actions a,
body.legal-page .legal-contact-actions a,
body.disclaimers-page .legal-contact-actions a {
  font: 600 11.5px/1 var(--lg-font); letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--lg-cinnabar); text-decoration: none; border: 1px solid var(--lg-line-strong);
  padding: 13px 20px; border-radius: 0; transition: border-color .15s ease, background .15s ease, color .15s ease;
}
body.privacy-page .legal-contact-actions a:hover,
body.cookie-page .legal-contact-actions a:hover,
body.terms-page .legal-contact-actions a:hover,
body.legal-page .legal-contact-actions a:hover,
body.disclaimers-page .legal-contact-actions a:hover { background: var(--lg-cinnabar); border-color: var(--lg-cinnabar); color: var(--lg-ivory); }

/* ---- Chinese pages: serif for CJK body ---- */
body.privacy-page:lang(zh) .legal-content p,
body.cookie-page:lang(zh) .legal-content p,
body.terms-page:lang(zh) .legal-content p,
body.legal-page:lang(zh) .legal-content p,
html[lang^="zh"] body .legal-content p,
html[lang^="zh"] body .legal-content li { line-height: 1.85; }

/* Client directive: no decorative horizontal rules/bars. */
:where(hr, [role="separator"], [class*="__rule"], [class*="-rule"], [class*="__divider"], [class*="-divider"], [class*="topline"], [class*="separator"]):not(svg):not(path):not(img) {
  display: none !important;
  border-top: 0 !important;
  border-bottom: 0 !important;
  background-image: none !important;
}
:where([class*="eyebrow"], [class*="kicker"], [class*="label"])::before,
:where([class*="eyebrow"], [class*="kicker"], [class*="label"])::after {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  border: 0 !important;
  background: transparent !important;
}

/* ==========================================================================
   Page divider standard — warm xuan hairline
   Matches the supplied reference: one full-width, 1px warm paper rule.
   ========================================================================== */
:root {
  --sv-page-divider-color: rgba(216, 206, 176, 0.82);
  --sv-page-divider-thickness: 1px;
  --sv-page-divider-max: var(--page-max, 1684px);
  --sv-page-divider-pad: var(--pad-x, clamp(24px, 8.9vw, 182px));
}

:where(
  hr,
  [role="separator"],
  .section-divider,
  .principles-rule,
  .home-cdd__rule,
  .strategy-section-intro__divider,
  .strategy-section-intro__rule,
  .strategy-rotation__divider,
  .strategy-rotation__rule,
  .opp-lead__rule,
  .tss-row__bar,
  .ip__seal,
  .tss-closer__seal,
  .cdd-arc__closer-seal,
  .cdd-arc__seal-rule,
  .cp-hero__title-rule,
  .cp-hero__divider,
  .cp-routing-card__rule,
  .cp-section-head__rule,
  .ogeo__divider
):not(svg):not(path):not(img) {
  display: block !important;
  width: min(calc(100% - (2 * var(--sv-page-divider-pad))), var(--sv-page-divider-max)) !important;
  height: 0 !important;
  min-height: 0 !important;
  margin: clamp(56px, 6.3vw, 129px) auto !important;
  padding: 0 !important;
  border: 0 !important;
  border-top: var(--sv-page-divider-thickness) solid var(--sv-page-divider-color) !important;
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  color: transparent !important;
  overflow: hidden !important;
}

main > section + section {
  border-top-color: var(--sv-page-divider-color) !important;
  border-top-width: var(--sv-page-divider-thickness) !important;
}

/* ==========================================================================
   FINAL NO HORIZONTAL RULES / BARS — client directive
   Suppresses decorative horizontal rule elements and section hairlines.
   ========================================================================== */
:where(
  hr,
  [role="separator"],
  [class*="__rule"],
  [class*="-rule"],
  [class*="rule-"],
  [class*="__divider"],
  [class*="-divider"],
  [class*="divider-"],
  [class*="topline"],
  [class*="separator"]
):not(svg):not(path):not(img):not(input):not(textarea):not(select) {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  min-width: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  color: transparent !important;
  overflow: hidden !important;
}

:where(main > section + section, .sv-hero__right, .cdd-intro__bar, .cdd-arc__list, .cdd-arc__row, .cdd-stat, .research-sub) {
  border-top: 0 !important;
  border-bottom: 0 !important;
  background-image: none !important;
  box-shadow: none !important;
}

:where([class*="eyebrow"], [class*="kicker"], [class*="label"], [class*="heading"], [class*="title"], [class*="intro"], [class*="hero"], [class*="section"])::before,
:where([class*="eyebrow"], [class*="kicker"], [class*="label"], [class*="heading"], [class*="title"], [class*="intro"], [class*="hero"], [class*="section"])::after {
  border-top: 0 !important;
  border-bottom: 0 !important;
  background-image: none !important;
  box-shadow: none !important;
}

:where([class*="eyebrow"], [class*="kicker"], [class*="label"])::before,
:where([class*="eyebrow"], [class*="kicker"], [class*="label"])::after {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  background: transparent !important;
}
