@charset "UTF-8";

:root {

  --c-ink-900: #0B1A15;
  --c-ink-800: #142922;
  --c-ink-700: #1F4A3E;
  --c-ink-600: #2A5F50;
  --c-ink-500: #35755F;
  --c-ink-200: #B9CFC6;
  --c-ink-100: #E4EDE9;
  --c-ink-50:  #F1F6F4;

  --c-gold-700: #8E6F33;
  --c-gold-600: #A57F3C;
  --c-cinnabar: #9E2B25;
  --c-cinnabar-soft: rgba(158, 43, 37, 0.10);
  --c-cinnabar-line: rgba(158, 43, 37, 0.5);
  --c-gold-500: #B8924A;
  --c-gold-300: #D4B276;
  --c-gold-100: #F4EADA;

  --c-paper:    #F7F4EE;
  --c-paper-2:  #FBFAF7;
  --c-white:    #FFFFFF;
  --c-sand:     #EFEBE1;

  --c-text:     #1A1A1A;
  --c-text-2:   #3D3D3D;
  --c-text-3:   #6B6B6B;
  --c-text-4:   #9A9A9A;
  --c-text-inv: #FFFFFF;
  --c-text-inv-2: rgba(255, 255, 255, 0.78);
  --c-text-inv-3: rgba(255, 255, 255, 0.58);

  --c-line:        #E5E0D5;
  --c-line-strong: #D5CEBF;
  --c-line-ink:    rgba(255, 255, 255, 0.16);
  --c-line-gold:   rgba(184, 146, 74, 0.42);

  --c-success: #1F8A70;
  --c-warning: #C8871A;
  --c-danger:  #B4271F;
  --c-success-bg: #E8F5F1;
  --c-warning-bg: #FBF2E2;
  --c-danger-bg:  #FAEDEC;

  --bg-page:      var(--c-paper);
  --bg-surface:   var(--c-white);
  --bg-subtle:    var(--c-paper-2);
  --bg-ink:       var(--c-ink-700);
  --bg-ink-deep:  var(--c-ink-800);
  --text-body:    var(--c-text-2);
  --text-heading: var(--c-text);
  --text-muted:   var(--c-text-3);
  --text-accent:  var(--c-gold-600);
  --border-color: var(--c-line);

  --scrim-hero: linear-gradient(
      100deg,
      rgba(6, 32, 29, 0.88) 0%,
      rgba(6, 32, 29, 0.72) 38%,
      rgba(6, 32, 29, 0.34) 68%,
      rgba(6, 32, 29, 0.18) 100%
    );
  --scrim-card: linear-gradient(
      to top,
      rgba(6, 32, 29, 0.78) 0%,
      rgba(6, 32, 29, 0.28) 46%,
      rgba(6, 32, 29, 0) 100%
    );
}

:root {
  --font-serif: "Source Han Serif SC", "Noto Serif SC", "Songti SC", "STSong",
                "SimSun", Georgia, serif;
  --font-sans:  "Source Han Sans SC", "Noto Sans SC", "PingFang SC",
                "HarmonyOS Sans SC", "Microsoft YaHei", -apple-system,
                BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  --font-num:   "Inter", "Playfair Display", ui-monospace, "SFMono-Regular",
                Menlo, Consolas, monospace;

  --fs-display: clamp(2.25rem, 1.35rem + 3.4vw, 4rem);
  --fs-h1:      clamp(1.875rem, 1.2rem + 2.5vw, 3.25rem);
  --fs-h2:      clamp(1.5rem, 1.05rem + 1.7vw, 2.5rem);
  --fs-h3:      clamp(1.25rem, 1.06rem + 0.8vw, 1.75rem);
  --fs-h4:      clamp(1.0625rem, 1rem + 0.3vw, 1.375rem);
  --fs-lead:    clamp(1.0625rem, 1rem + 0.3vw, 1.25rem);
  --fs-body:    1rem;
  --fs-sm:      0.875rem;
  --fs-xs:      0.75rem;

  --lh-tight:   1.15;
  --lh-heading: 1.28;
  --lh-body:    1.78;
  --lh-loose:   1.9;

  --ls-display: -0.022em;
  --ls-heading: -0.012em;
  --ls-body:    0.012em;
  --ls-eyebrow: 0.2em;
  --ls-button:  0.04em;

  --fw-regular: 400;
  --fw-medium:  500;
  --fw-semibold: 600;
  --fw-bold:    700;

  --text-display: var(--fs-display);
  --text-h1: var(--fs-h1);
  --text-h2: var(--fs-h2);
  --text-h3: var(--fs-h3);
  --text-h4: var(--fs-h4);
}

:root {
  --sp-1:  0.25rem;
  --sp-2:  0.5rem;
  --sp-3:  0.75rem;
  --sp-4:  1rem;
  --sp-5:  1.5rem;
  --sp-6:  2rem;
  --sp-7:  3rem;
  --sp-8:  4rem;
  --sp-9:  6rem;
  --sp-10: 8rem;
  --sp-11: 10rem;

  --section-y:        clamp(3.5rem, 1.8rem + 6vw, 6rem);
  --section-y-lg:     clamp(4.5rem, 2rem + 8vw, 8rem);

  --r-xs:   3px;
  --r-sm:   4px;
  --r-md:   6px;
  --r-lg:   8px;
  --r-xl:   12px;
  --r-2xl:  16px;
  --r-full: 999px;

  --sh-1: 0 1px 2px rgba(11, 15, 14, 0.05);
  --sh-2: 0 8px 24px rgba(11, 15, 14, 0.08);
  --sh-3: 0 18px 48px rgba(6, 32, 29, 0.14);
  --sh-ink: 0 10px 30px rgba(8, 40, 36, 0.22);

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-std: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-in:  cubic-bezier(0.4, 0, 1, 1);

  --d-fast:   150ms;
  --d-base:   200ms;
  --d-mid:    320ms;
  --d-slow:   500ms;
  --d-slower: 700ms;

  --z-base: 1;
  --z-sticky: 50;
  --z-header: 100;
  --z-float: 150;
  --z-drawer: 300;
  --z-toast: 400;
}

:root {
  --w-wide:      1440px;
  --w-container: 1280px;
  --w-content:   1200px;
  --w-prose:     880px;
  --gutter:      1.25rem;
  --grid-gap:    1rem;
  --header-h:    4.5rem;
}

@media (min-width: 48rem) {
  :root {
    --gutter: 1.5rem;
    --grid-gap: 1.5rem;
  }
}

@media (min-width: 80rem) {
  :root {
    --gutter: 2rem;
    --grid-gap: 1.5rem;
    --header-h: 5rem;
  }
}

*,
*::before,
*::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + var(--sp-4));
}

body {
  margin: 0;
  background-color: var(--bg-page);
  color: var(--text-body);
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: var(--ls-body);
  font-weight: var(--fw-regular);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

body.is-locked { overflow: hidden; }

img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}

img[width][height] { height: auto; }

a {
  color: inherit;
  text-decoration: none;
  transition: color var(--d-base) var(--ease-std);
}

a:hover { color: var(--c-ink-500); }

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
}

button { cursor: pointer; background: none; border: 0; padding: 0; }

ul, ol { margin: 0; padding: 0; list-style: none; }

dl, dt, dd { margin: 0; }

figure { margin: 0; }

hr {
  border: 0;
  border-top: 1px solid var(--c-line);
  margin: var(--sp-7) 0;
}

table { border-collapse: collapse; width: 100%; }

h1, h2, h3, h4, h5, h6 {
  margin: 0;
  color: var(--text-heading);
  font-weight: var(--fw-semibold);
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-heading);
  text-wrap: balance;
}

h1 { font-size: var(--fs-h1); font-family: var(--font-serif); line-height: var(--lh-tight); letter-spacing: var(--ls-display); }
h2 { font-size: var(--fs-h2); font-family: var(--font-serif); }
h3 { font-size: var(--fs-h3); }
h4 { font-size: var(--fs-h4); font-weight: var(--fw-semibold); }

p { margin: 0 0 var(--sp-4); }
p:last-child { margin-bottom: 0; }

strong, b { font-weight: var(--fw-semibold); color: var(--text-heading); }

::selection { background: var(--c-gold-300); color: var(--c-ink-800); }

.num,
[data-num],
.kpi__value,
.stat__value {
  font-family: var(--font-num);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

:focus { outline: none; }

:focus-visible {
  outline: 2px solid var(--c-ink-500);
  outline-offset: 3px;
  border-radius: var(--r-xs);
}

.section--ink :focus-visible,
.footer :focus-visible {
  outline-color: var(--c-gold-500);
}

.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: absolute;
  top: 0; left: 50%;
  transform: translate(-50%, -120%);
  z-index: var(--z-toast);
  padding: var(--sp-3) var(--sp-5);
  background: var(--c-ink-700);
  color: var(--c-text-inv);
  border-radius: 0 0 var(--r-md) var(--r-md);
  font-size: var(--fs-sm);
  transition: transform var(--d-base) var(--ease-out);
}

.skip-link:focus { transform: translate(-50%, 0); color: var(--c-text-inv); }

.is-hidden { display: none !important; }

[hidden] { display: none !important; }

.text-center { text-align: center; }
.text-accent { color: var(--text-accent); }
.text-muted  { color: var(--text-muted); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

@media print {
  .header, .footer, .float-actions, .mobile-bar, .breadcrumb__sep { display: none !important; }
  body { background: #fff; color: #000; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 0.8em; color: #555; }
}
