:root {
  --qds-ink: #151714;
  --qds-ink-soft: #242720;
  --qds-paper: #f4f0e7;
  --qds-paper-strong: #e8dfcf;
  --qds-white: #fffdf8;
  --qds-gold: #b7893e;
  --qds-gold-soft: #e0c17c;
  --qds-teal: #1f5552;
  --qds-teal-light: #8cc1bd;
  --qds-blue: #315b73;
  --qds-success: #2f684f;
  --qds-warning: #9b6528;
  --qds-danger: #87443c;
  --qds-line: rgba(21, 23, 20, .16);
  --qds-line-dark: rgba(255, 253, 248, .16);
  --qds-muted: #656860;
  --qds-muted-dark: rgba(255, 253, 248, .66);
  --qds-max: 1240px;
  --qds-reading: 760px;
  --qds-nav-height: 76px;
  --qds-hero-max: 620px;
  --qds-hero-mobile-min: 520px;
  --qds-serif: "Songti SC", "Noto Serif SC", STSong, serif;
  --qds-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", Arial, sans-serif;
  --qds-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --qds-space-1: 8px;
  --qds-space-2: 12px;
  --qds-space-3: 18px;
  --qds-space-4: 24px;
  --qds-space-5: 36px;
  --qds-space-6: 52px;
  --qds-space-7: 76px;
  --qds-space-8: 112px;
  --qds-radius: 0;
  --qds-shadow: 0 26px 70px rgba(21, 23, 20, .1);
}

html {
  background: var(--qds-paper);
  scroll-padding-top: calc(var(--qds-nav-height) + 24px);
}

body {
  background: var(--qds-paper);
  color: var(--qds-ink);
  font-family: var(--qds-sans);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

p,
li,
figcaption {
  text-wrap: pretty;
}

body,
button,
input,
select,
textarea {
  letter-spacing: 0;
}

::selection {
  background: var(--qds-gold-soft);
  color: var(--qds-ink);
}

:focus-visible {
  outline: 2px solid var(--qds-gold);
  outline-offset: 3px;
}

.shell,
.platform-shell,
.gate-shell,
.qds-shell {
  width: min(var(--qds-max), calc(100% - 64px));
  margin-inline: auto;
}

.site-head {
  min-height: var(--qds-nav-height);
  background: rgba(21, 23, 20, .96);
  border-bottom: 1px solid var(--qds-line-dark);
  color: var(--qds-white);
  backdrop-filter: blur(18px);
}

.nav {
  min-height: var(--qds-nav-height);
  height: auto;
}

.brand b,
.brand span,
.nav-links a,
.nav-cta,
.btn,
.eyebrow,
.platform-kicker,
.live-story-meta {
  letter-spacing: 0;
}

.brand b {
  font-weight: 600;
}

.brand span {
  opacity: .72;
}

.nav-links a {
  position: relative;
}

.nav-links a::after {
  position: absolute;
  right: 0;
  bottom: -10px;
  left: 0;
  height: 1px;
  background: var(--qds-gold-soft);
  content: "";
  opacity: 0;
  transform: scaleX(.35);
  transition: opacity .2s ease, transform .2s ease;
}

.nav-links a:hover::after,
.nav-links a[aria-current="page"]::after {
  opacity: 1;
  transform: scaleX(1);
}

.nav-cta,
.btn {
  min-height: 44px;
  border-radius: var(--qds-radius);
  transition: background-color .18s ease, border-color .18s ease, color .18s ease, transform .18s ease;
}

.nav-cta {
  background: var(--qds-gold-soft);
  color: var(--qds-ink);
}

.nav-actions {
  display: flex;
  gap: 10px;
  align-items: center;
}

.nav-member {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  border: 1px solid rgba(255, 253, 248, .24);
  padding: 10px 13px;
  color: var(--qds-white);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0;
  text-decoration: none;
  transition: border-color .18s ease, color .18s ease, transform .18s ease;
}

.nav-cta:active,
.nav-member:active,
.btn:active {
  transform: scale(.96);
}

.nav-member:hover,
.nav-member[aria-current="page"] {
  border-color: var(--qds-gold-soft);
  color: var(--qds-gold-soft);
}

.qds-member-actions {
  align-items: center;
}

.qds-member-signin {
  color: rgba(255, 255, 255, .78);
  font-size: 13px;
  font-weight: 750;
  text-underline-offset: 4px;
  transition: color .18s ease;
}

.qds-member-signin:hover,
.qds-member-signin:focus-visible {
  color: #fff;
}

.footer {
  border-top: 1px solid var(--qds-line-dark);
  background: #0d0f0d;
  color: rgba(255, 253, 248, .62);
}

.footer a:hover {
  color: var(--qds-white);
}

.footer-company,
.footer-meta {
  display: grid;
  gap: 6px;
}

.footer-company b {
  color: var(--qds-white);
}

.footer-company span,
.footer-meta span {
  font-size: 12px;
  line-height: 1.6;
}

.footer-links {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
}

.eyebrow,
.platform-kicker,
.qds-kicker {
  color: var(--qds-gold);
  font: 700 12px/1.4 var(--qds-mono);
  letter-spacing: 0;
  text-transform: uppercase;
}

.qds-editorial-hero {
  position: relative;
  display: grid;
  min-height: min(var(--qds-hero-max), max(440px, calc(100svh - var(--qds-nav-height) - 112px)));
  overflow: hidden;
  background:
    radial-gradient(circle at 78% 24%, rgba(183, 137, 62, .16), transparent 28%),
    #151714;
  color: var(--qds-white);
}

.qds-editorial-hero::before,
.qds-editorial-hero::after {
  position: absolute;
  content: "";
  pointer-events: none;
}

.qds-editorial-hero::before {
  inset: 0;
  background: repeating-linear-gradient(
    90deg,
    transparent 0,
    transparent calc(25% - 1px),
    rgba(255, 253, 248, .04) 25%
  );
}

.qds-editorial-hero::after {
  top: 15%;
  right: 7%;
  width: min(29vw, 390px);
  aspect-ratio: 1;
  border: 1px solid rgba(224, 193, 124, .26);
  transform: rotate(45deg);
}

.qds-editorial-hero__grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(280px, .55fr);
  gap: clamp(48px, 9vw, 140px);
  align-items: end;
  padding-block: clamp(52px, 7vh, 78px) clamp(28px, 4vh, 44px);
}

.qds-editorial-hero h1 {
  max-width: 900px;
  margin: 16px 0 24px;
  font-family: var(--qds-serif);
  font-size: clamp(50px, 5.6vw, 78px);
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: 0;
  text-wrap: balance;
}

.qds-editorial-hero h1 em {
  color: var(--qds-gold-soft);
  font-style: normal;
}

.qds-editorial-hero__lead {
  max-width: 720px;
  color: rgba(255, 253, 248, .78);
  font-size: clamp(17px, 1.4vw, 21px);
  line-height: 1.75;
}

.qds-editorial-hero__brief {
  border-top: 1px solid rgba(255, 253, 248, .34);
  padding-top: 22px;
  color: var(--qds-muted-dark);
  line-height: 1.75;
}

.qds-editorial-hero__brief strong {
  display: block;
  margin-bottom: 12px;
  color: var(--qds-gold-soft);
  font: 500 clamp(22px, 2vw, 30px)/1.35 var(--qds-serif);
}

.qds-section {
  padding-block: clamp(76px, 9vw, 132px);
}

.qds-section--dark {
  background: var(--qds-ink);
  color: var(--qds-white);
}

.qds-section--strong {
  background: var(--qds-paper-strong);
}

.qds-section-head,
.qds-content-index__head {
  display: grid;
  grid-template-columns: minmax(220px, .7fr) minmax(0, 1.3fr);
  gap: clamp(40px, 8vw, 120px);
  align-items: end;
  margin-bottom: clamp(42px, 6vw, 74px);
}

.qds-section-head h2,
.qds-content-index__head h1 {
  margin: 0;
  font-family: var(--qds-serif);
  font-size: clamp(40px, 5.4vw, 72px);
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: 0;
  text-wrap: balance;
}

.qds-section-head p,
.qds-content-index__head p {
  max-width: var(--qds-reading);
  margin: 0;
  color: var(--qds-muted);
  font-size: clamp(16px, 1.35vw, 19px);
  line-height: 1.8;
}

.qds-section--dark .qds-section-head p {
  color: var(--qds-muted-dark);
}

.qds-content-index {
  padding-block: clamp(70px, 9vw, 124px);
}

.qds-content-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 16px;
}

.qds-content-card {
  grid-column: span 4;
  min-height: 300px;
  border: 1px solid var(--qds-line);
  background: var(--qds-white);
  padding: clamp(24px, 3vw, 38px);
  color: var(--qds-ink);
  text-decoration: none;
  transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease;
}

.qds-content-card:hover {
  border-color: var(--qds-gold);
  box-shadow: var(--qds-shadow);
  transform: translateY(-4px);
}

.qds-content-card h2,
.qds-content-card h3 {
  margin: 44px 0 14px;
  font: 500 clamp(26px, 2.6vw, 38px)/1.2 var(--qds-serif);
  letter-spacing: 0;
  text-wrap: balance;
}

.qds-content-card p {
  color: var(--qds-muted);
  line-height: 1.75;
}

.qds-controlled-resource {
  position: relative;
  display: grid;
  min-height: 320px;
  border-top: 2px solid var(--qds-ink);
  background: var(--qds-white);
  padding: clamp(28px, 4vw, 48px);
}

.qds-controlled-resource::after {
  position: absolute;
  top: 28px;
  right: 28px;
  border: 1px solid var(--qds-gold);
  padding: 6px 9px;
  color: var(--qds-gold);
  content: "受控查看";
  font: 700 11px/1.2 var(--qds-mono);
  letter-spacing: 0;
}

.qds-controlled-resource h2,
.qds-controlled-resource h3 {
  max-width: 74%;
  margin: auto 0 16px;
  font: 500 clamp(28px, 3vw, 42px)/1.18 var(--qds-serif);
  letter-spacing: 0;
  text-wrap: balance;
}

.qds-resource-grid,
.qds-role-grid,
.qds-process-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.qds-process-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid var(--qds-line-dark);
  border-bottom: 1px solid var(--qds-line-dark);
  gap: 0;
}

.qds-process-grid article {
  min-height: 300px;
  border-right: 1px solid var(--qds-line-dark);
  padding: 32px 26px;
}

.qds-process-grid article:last-child {
  border-right: 0;
}

.qds-process-grid b {
  color: var(--qds-gold-soft);
  font: 700 12px/1.4 var(--qds-mono);
}

.qds-process-grid h3 {
  margin: 90px 0 16px;
  font: 500 clamp(25px, 2.4vw, 34px)/1.2 var(--qds-serif);
  letter-spacing: 0;
}

.qds-process-grid p {
  margin: 0;
  color: var(--qds-muted-dark);
  line-height: 1.75;
}

.qds-role-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.qds-role-card {
  display: flex;
  min-height: 340px;
  flex-direction: column;
  border-top: 2px solid var(--qds-ink);
  background: var(--qds-white);
  padding: clamp(26px, 3vw, 40px);
  color: var(--qds-ink);
  text-decoration: none;
}

.qds-role-card small,
.qds-controlled-resource small {
  color: var(--qds-gold);
  font: 700 11px/1.4 var(--qds-mono);
  letter-spacing: 0;
}

.qds-role-card h3 {
  margin: auto 0 16px;
  font: 500 clamp(28px, 3vw, 40px)/1.16 var(--qds-serif);
  letter-spacing: 0;
}

.qds-role-card p,
.qds-controlled-resource p {
  color: var(--qds-muted);
  line-height: 1.75;
}

.qds-role-card span,
.qds-controlled-resource span,
.qds-text-entry a {
  margin-top: 18px;
  color: var(--qds-gold);
  font-weight: 700;
}

.qds-ghost-dark {
  border-color: var(--qds-line);
  color: var(--qds-ink);
}

.qds-text-entry {
  padding-block: clamp(72px, 8vw, 110px);
  background: var(--qds-ink);
  color: var(--qds-white);
}

.qds-text-entry__grid,
.qds-contact__grid {
  display: grid;
  grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
  gap: clamp(48px, 9vw, 140px);
  align-items: end;
}

.qds-text-entry h2,
.qds-contact h2 {
  margin: 10px 0 0;
  font: 500 clamp(42px, 5.4vw, 74px)/1.08 var(--qds-serif);
  letter-spacing: 0;
  text-wrap: balance;
}

.qds-text-entry p {
  margin: 0 0 20px;
  color: var(--qds-muted-dark);
  font-size: 18px;
  line-height: 1.8;
}

.qds-contact {
  padding-block: clamp(82px, 10vw, 140px);
  background:
    radial-gradient(circle at 84% 20%, rgba(183, 137, 62, .18), transparent 24%),
    #0d0f0d;
  color: var(--qds-white);
}

.qds-contact p {
  color: var(--qds-muted-dark);
  line-height: 1.8;
}

.qds-contact__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
}

.qds-contact__actions p {
  flex-basis: 100%;
  margin: 12px 0 0;
  font-size: 13px;
}

.qds-live-pulse {
  border-top: 1px solid var(--qds-line-dark);
  border-bottom: 1px solid var(--qds-line-dark);
  background: var(--qds-ink-soft);
  color: var(--qds-white);
}

.qds-live-pulse__grid {
  display: grid;
  grid-template-columns: minmax(160px, .72fr) repeat(3, minmax(0, 1fr));
}

.qds-live-pulse__status,
.qds-live-pulse a {
  min-width: 0;
  min-height: 104px;
  margin: 0;
  border-right: 1px solid var(--qds-line-dark);
  padding: 20px 22px;
}

.qds-live-pulse__status {
  display: flex;
  gap: 10px;
  align-items: center;
  color: var(--qds-gold-soft);
  font: 700 12px/1.4 var(--qds-mono);
}

.qds-live-pulse__status > span {
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--qds-gold-soft);
  box-shadow: 0 0 0 6px rgba(224, 193, 124, .1);
  animation: qds-live-pulse 2.4s ease-in-out infinite;
}

.qds-live-pulse a {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 6px 12px;
  align-content: center;
  color: var(--qds-white);
  text-decoration: none;
  transition: background-color .18s ease, color .18s ease;
}

.qds-live-pulse a:last-child {
  border-right: 0;
}

.qds-live-pulse a:hover,
.qds-live-pulse a:focus-visible {
  background: rgba(255, 253, 248, .06);
}

.qds-live-pulse small {
  grid-column: 1 / -1;
  color: var(--qds-gold-soft);
  font: 700 11px/1.35 var(--qds-mono);
}

.qds-live-pulse strong {
  min-width: 0;
  overflow: hidden;
  font-size: 15px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.qds-live-pulse time,
.qds-live-pulse a > span {
  color: var(--qds-muted-dark);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

@keyframes qds-live-pulse {
  0%, 100% { opacity: .55; transform: scale(.84); }
  50% { opacity: 1; transform: scale(1); }
}

.qds-happening-hero {
  position: relative;
  min-height: min(500px, max(420px, calc(100svh - var(--qds-nav-height) - 150px)));
  overflow: hidden;
  background:
    linear-gradient(90deg, transparent 0 74.9%, rgba(255, 253, 248, .045) 75%, transparent 75.1%),
    radial-gradient(circle at 84% 20%, rgba(183, 137, 62, .16), transparent 24%),
    var(--qds-ink);
  color: var(--qds-white);
}

.qds-happening-hero::after {
  position: absolute;
  top: -42%;
  right: 6%;
  width: min(32vw, 380px);
  aspect-ratio: 1;
  border: 1px solid rgba(224, 193, 124, .2);
  content: "";
  pointer-events: none;
  transform: rotate(45deg);
}

.qds-happening-hero__grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(280px, .65fr);
  gap: clamp(46px, 8vw, 120px);
  align-items: end;
  padding-block: clamp(42px, 6vh, 70px) clamp(26px, 3.5vh, 40px);
}

.qds-happening-hero h1 {
  max-width: 9em;
  margin: 14px 0 18px;
  font: 500 clamp(48px, 5.5vw, 76px)/1.02 var(--qds-serif);
  text-wrap: balance;
}

.qds-happening-hero h1 em {
  display: block;
  color: var(--qds-gold-soft);
  font-style: normal;
}

.qds-happening-hero p {
  max-width: 760px;
  color: var(--qds-muted-dark);
  font-size: clamp(16px, 1.3vw, 19px);
  line-height: 1.75;
}

.qds-happening-hero__summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid rgba(255, 253, 248, .34);
}

.qds-happening-hero__summary > div {
  padding: 20px 18px 18px 0;
}

.qds-happening-hero__summary strong {
  display: block;
  color: var(--qds-gold-soft);
  font: 500 38px/1 var(--qds-serif);
  font-variant-numeric: tabular-nums;
}

.qds-happening-hero__summary span {
  display: block;
  margin-top: 8px;
  color: var(--qds-muted-dark);
  font-size: 13px;
}

.qds-happening-hero__summary p {
  grid-column: 1 / -1;
  margin: 0;
  border-top: 1px solid var(--qds-line-dark);
  padding-top: 16px;
  font-size: 14px;
}

.qds-activity-stream {
  padding-block: clamp(72px, 8vw, 112px);
}

.qds-activity-nav {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: clamp(64px, 8vw, 110px);
  border-top: 1px solid var(--qds-line);
  border-bottom: 1px solid var(--qds-line);
}

.qds-activity-nav a {
  display: flex;
  min-height: 68px;
  gap: 12px;
  align-items: center;
  border-right: 1px solid var(--qds-line);
  padding: 16px 20px;
  color: var(--qds-ink);
  text-decoration: none;
  transition: background-color .18s ease, color .18s ease;
}

.qds-activity-nav a:last-child {
  border-right: 0;
}

.qds-activity-nav a:hover,
.qds-activity-nav a:focus-visible {
  background: var(--qds-ink);
  color: var(--qds-white);
}

.qds-activity-nav span {
  color: var(--qds-gold);
  font: 700 11px/1.2 var(--qds-mono);
}

.qds-activity-category {
  scroll-margin-top: calc(var(--qds-nav-height) + 24px);
  border-top: 1px solid var(--qds-line);
  padding-block: clamp(46px, 6vw, 76px);
}

.qds-activity-category__head {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
  margin-bottom: 38px;
}

.qds-activity-category__head > span {
  color: var(--qds-gold);
  font: 500 38px/1 var(--qds-serif);
  font-variant-numeric: tabular-nums;
}

.qds-activity-category__head h2 {
  margin: 0 0 8px;
  font: 500 clamp(34px, 4vw, 54px)/1.08 var(--qds-serif);
  text-wrap: balance;
}

.qds-activity-category__head p {
  margin: 0;
  color: var(--qds-muted);
  line-height: 1.7;
}

.qds-activity-group {
  border-top: 2px solid var(--qds-ink);
}

.qds-activity-group__header {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(260px, .75fr);
  gap: clamp(36px, 7vw, 100px);
  align-items: end;
  padding-block: 34px 42px;
}

.qds-activity-group__header h3 {
  margin: 12px 0 0;
  font: 500 clamp(36px, 4.4vw, 62px)/1.06 var(--qds-serif);
  text-wrap: balance;
}

.qds-activity-group__header > p {
  margin: 0;
  color: var(--qds-muted);
  font-size: 16px;
  line-height: 1.8;
}

.qds-activity-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  color: var(--qds-gold);
  font: 700 11px/1.35 var(--qds-mono);
  font-variant-numeric: tabular-nums;
}

.qds-activity-gallery {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.qds-activity-photo {
  min-width: 0;
  margin: 0;
  background: var(--qds-white);
  box-shadow: 0 18px 54px rgba(21, 23, 20, .08);
}

.qds-activity-photo--lead {
  grid-column: 1 / -1;
}

.qds-activity-photo img,
.qds-live-grid img,
.qds-live-grid video {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  outline: 1px solid rgba(0, 0, 0, .1);
  outline-offset: -1px;
  transition: transform .35s cubic-bezier(.2, 0, 0, 1), filter .35s ease;
}

.qds-activity-photo--lead img {
  aspect-ratio: 2.15 / 1;
}

.qds-activity-photo:hover img {
  filter: saturate(1.04) contrast(1.02);
  transform: scale(1.012);
}

.qds-activity-photo figcaption {
  display: grid;
  gap: 5px;
  padding: 18px 20px 20px;
}

.qds-activity-photo figcaption b {
  font: 600 15px/1.4 var(--qds-sans);
}

.qds-activity-photo figcaption span {
  color: var(--qds-muted);
  font-size: 13px;
  line-height: 1.6;
}

.qds-activity-empty {
  display: grid;
  grid-template-columns: minmax(180px, .45fr) minmax(0, 1fr);
  gap: 32px;
  border-top: 1px solid var(--qds-line);
  padding-block: 28px;
}

.qds-activity-empty p {
  margin: 0;
  color: var(--qds-muted);
}

.qds-live-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.qds-live-grid .activity-card {
  min-width: 0;
  background: var(--qds-white);
  padding: 18px;
  box-shadow: 0 16px 46px rgba(21, 23, 20, .07);
}

.qds-live-grid .activity-card h3 {
  margin: 18px 0 10px;
  font: 500 28px/1.2 var(--qds-serif);
}

.qds-live-grid .activity-card p,
.qds-live-grid .live-empty {
  color: var(--qds-muted);
  line-height: 1.7;
}

.qds-editorial-responsibility {
  max-width: 920px;
  margin: 28px 0 0 auto;
  border-top: 1px solid var(--qds-line-dark);
  padding-top: 20px;
  color: var(--qds-muted-dark);
  line-height: 1.75;
}

.qds-evidence-band {
  border-top: 1px solid var(--qds-line);
  border-bottom: 1px solid var(--qds-line);
  background: var(--qds-paper-strong);
  padding-block: clamp(54px, 7vw, 96px);
}

.page-hero:has(+ .qds-evidence-band) {
  min-height: 0;
  padding-block: clamp(64px, 7vh, 82px) clamp(28px, 3.5vh, 38px);
}

.qds-evidence-band__grid {
  display: grid;
  grid-template-columns: minmax(280px, 5fr) minmax(0, 7fr);
  gap: clamp(36px, 7vw, 96px);
  align-items: center;
}

.qds-evidence-band__copy {
  min-width: 0;
}

.qds-evidence-band__copy h2 {
  max-width: 12em;
  margin: 18px 0 22px;
  font: 500 clamp(34px, 4vw, 54px)/1.12 var(--qds-serif);
  letter-spacing: 0;
  text-wrap: balance;
}

.qds-evidence-band__copy > p {
  max-width: 580px;
  margin: 0;
  color: var(--qds-muted);
  font-size: clamp(16px, 1.25vw, 18px);
  line-height: 1.82;
}

.qds-keep-phrase {
  white-space: nowrap;
}

.qds-evidence-band__copy > a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  margin-top: 26px;
  border-bottom: 1px solid var(--qds-gold);
  color: var(--qds-ink);
  font-weight: 750;
  letter-spacing: 0;
  text-decoration: none;
}

.qds-evidence-band__copy > a:hover,
.qds-evidence-band__copy > a:focus-visible {
  color: var(--qds-gold);
}

.qds-evidence-band__meta {
  display: grid;
  gap: 6px;
  margin-top: 24px;
  border-left: 2px solid var(--qds-gold);
  padding-left: 14px;
  color: var(--qds-muted);
  font-size: 12px;
  line-height: 1.55;
}

.qds-evidence-band__media {
  min-width: 0;
  margin: 0;
  background: var(--qds-ink);
  box-shadow: var(--qds-shadow);
}

.qds-evidence-band__media img {
  display: block;
  width: 100%;
  max-height: 520px;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}

.qds-evidence-band__media figcaption {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  align-items: baseline;
  justify-content: space-between;
  padding: 16px 18px 18px;
  color: var(--qds-muted-dark);
  font-size: 12px;
  line-height: 1.55;
}

.qds-evidence-band__media figcaption strong {
  color: var(--qds-white);
  font: 500 18px/1.35 var(--qds-serif);
  letter-spacing: 0;
}

.qds-workspace {
  min-height: calc(100svh - var(--qds-nav-height));
  background: #e9e6dd;
}

.qds-workspace__shell {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  min-height: inherit;
}

.qds-workspace__rail {
  border-right: 1px solid var(--qds-line-dark);
  background: var(--qds-ink-soft);
  padding: 32px 24px;
  color: var(--qds-white);
}

.qds-workspace__main {
  min-width: 0;
  padding: clamp(28px, 4vw, 56px);
}

.qds-status-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.qds-status-card {
  min-height: 160px;
  border: 1px solid var(--qds-line);
  background: var(--qds-white);
  padding: 24px;
}

.qds-status-card[data-status="active"] { border-top: 3px solid var(--qds-success); }
.qds-status-card[data-status="review"] { border-top: 3px solid var(--qds-warning); }
.qds-status-card[data-status="blocked"] { border-top: 3px solid var(--qds-danger); }

.qds-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.qds-form-field {
  display: grid;
  gap: 8px;
}

.qds-form-field input,
.qds-form-field select,
.qds-form-field textarea {
  width: 100%;
  min-height: 48px;
  border: 1px solid var(--qds-line);
  border-radius: var(--qds-radius);
  background: var(--qds-white);
  padding: 12px 14px;
  color: var(--qds-ink);
}

.qds-form-field textarea {
  min-height: 132px;
  resize: vertical;
}

.qds-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

@media (max-width: 1020px) {
  .qds-editorial-hero__grid,
  .qds-happening-hero__grid,
  .qds-activity-group__header,
  .qds-section-head,
  .qds-content-index__head {
    grid-template-columns: 1fr;
  }

  .qds-editorial-hero__brief {
    max-width: 520px;
  }

  .qds-content-card {
    grid-column: span 6;
  }

  .qds-live-pulse__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .qds-live-pulse__status,
  .qds-live-pulse a:nth-child(2) {
    border-bottom: 1px solid var(--qds-line-dark);
  }

  .qds-live-pulse a:nth-child(2) {
    border-right: 0;
  }

  .qds-live-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .qds-process-grid,
  .qds-role-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .qds-process-grid article:nth-child(2) {
    border-right: 0;
  }

  .qds-process-grid article:nth-child(-n+2) {
    border-bottom: 1px solid var(--qds-line-dark);
  }

  .qds-text-entry__grid,
  .qds-contact__grid {
    grid-template-columns: 1fr;
  }

  .qds-workspace__shell {
    grid-template-columns: 1fr;
  }

  .qds-workspace__rail {
    border-right: 0;
    border-bottom: 1px solid var(--qds-line-dark);
  }
}

.qds-workspace-hero {
  position: relative;
  min-height: min(560px, calc(100svh - var(--qds-nav-height) - 96px));
  overflow: hidden;
  border-bottom: 1px solid rgba(255, 253, 248, .1);
  background:
    linear-gradient(90deg, transparent 0 24.9%, rgba(255, 253, 248, .04) 25%, transparent 25.1% 49.9%, rgba(255, 253, 248, .04) 50%, transparent 50.1% 74.9%, rgba(255, 253, 248, .04) 75%, transparent 75.1%),
    radial-gradient(circle at 82% 22%, rgba(44, 122, 117, .28), transparent 30%),
    #0e1e1c;
  color: var(--qds-white);
}

.qds-workspace-hero h1 {
  max-width: 12em;
  font-family: var(--qds-sans);
  font-size: clamp(48px, 5.6vw, 78px);
  font-weight: 650;
  line-height: 1.02;
  letter-spacing: 0;
  text-wrap: balance;
}

.qds-workspace-hero p {
  max-width: 48em;
  color: rgba(255, 253, 248, .7);
}

[data-qidian-template="workspace"] .module-card,
[data-qidian-template="workspace"] .gate-card,
[data-qidian-template="workspace"] .workbench-panel,
[data-qidian-template="workspace"] .access-level {
  border-radius: 0;
}

[data-qidian-template="workspace"] .status-step b,
[data-qidian-template="workspace"] .module-card small,
[data-qidian-template="workspace"] .platform-kicker {
  color: var(--qds-teal-light);
}

.qds-page-hero {
  position: relative;
  display: grid;
  min-height: min(520px, calc(100svh - var(--qds-nav-height) - 120px));
  align-items: end;
  overflow: hidden;
  border-bottom: 1px solid var(--qds-line-dark);
  background:
    linear-gradient(90deg, transparent 0 74.9%, rgba(255, 253, 248, .05) 75%, transparent 75.1%),
    radial-gradient(circle at 84% 18%, rgba(183, 137, 62, .14), transparent 24%),
    #111714;
  color: var(--qds-white);
}

.qds-page-hero::after {
  position: absolute;
  right: 7%;
  bottom: -42%;
  width: min(27vw, 340px);
  aspect-ratio: 1;
  border: 1px solid rgba(224, 193, 124, .18);
  content: "";
  pointer-events: none;
  transform: rotate(45deg);
}

.page-hero.qds-page-hero,
.platform-hero.qds-page-hero {
  padding-block: 0;
}

.qds-page-hero > .shell,
.qds-page-hero > .platform-shell {
  position: relative;
  z-index: 1;
  width: min(var(--qds-max), calc(100% - 48px));
  margin-inline: auto;
  padding-block: clamp(76px, 10vh, 112px) clamp(44px, 6vh, 68px);
}

.qds-page-hero h1 {
  max-width: 12em;
  margin-block: 14px 22px;
  font-family: var(--qds-serif);
  font-size: clamp(50px, 6vw, 84px);
  font-weight: 500;
  line-height: 1.03;
  letter-spacing: 0;
  text-wrap: balance;
}

.qds-page-hero p {
  max-width: 46em;
  color: rgba(255, 253, 248, .7);
  font-size: clamp(17px, 1.55vw, 22px);
  line-height: 1.75;
}

[data-qidian-template="content-index"] .entity-grid > a,
[data-qidian-template="content-index"] .card,
[data-qidian-template="controlled-resource"] .module-card,
[data-qidian-template="controlled-resource"] .gate-card {
  border-radius: 0;
}

[data-qidian-template="controlled-resource"] .module-card,
[data-qidian-template="controlled-resource"] .gate-card {
  border-color: var(--qds-line);
  background: rgba(255, 253, 248, .62);
}

.qds-training-products {
  overflow: hidden;
  background:
    linear-gradient(90deg, transparent 0 49.95%, var(--qds-line) 50%, transparent 50.05%),
    var(--qds-paper);
}

.qds-training-product-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 44px;
  border-top: 1px solid var(--qds-line);
  border-bottom: 1px solid var(--qds-line);
}

.qds-training-product {
  position: relative;
  display: flex;
  min-width: 0;
  min-height: 540px;
  flex-direction: column;
  padding: 42px clamp(24px, 4vw, 58px) 36px;
  color: var(--qds-ink);
  text-decoration: none;
}

.qds-training-product:first-child {
  border-right: 1px solid var(--qds-line);
}

.qds-training-product::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 3px;
  background: var(--qds-gold);
  content: "";
  transition: width 180ms ease;
}

.qds-training-product:hover::before,
.qds-training-product:focus-visible::before {
  width: 100%;
}

.qds-training-product-index {
  color: var(--qds-muted);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0;
}

.qds-training-product h3 {
  margin: 70px 0 10px;
  font-size: clamp(34px, 4vw, 58px);
  line-height: 1;
}

.qds-training-product strong {
  color: var(--qds-gold-dark);
  font-size: 17px;
}

.qds-training-product p {
  max-width: 34em;
  margin: 24px 0 0;
  color: var(--qds-muted);
  line-height: 1.8;
}

.qds-training-product ul {
  display: grid;
  gap: 10px;
  margin: 26px 0 30px;
  padding-left: 1.15em;
  color: var(--qds-ink-soft);
  line-height: 1.65;
}

.qds-training-product-link {
  margin-top: auto;
  color: var(--qds-ink);
  font-weight: 700;
}

@media (max-width: 1000px) {
  .nav-actions .nav-cta {
    display: inline-flex;
  }

  .nav-actions .nav-member {
    display: none;
  }
}

@media (max-width: 760px) {
  :root {
    --qds-nav-height: 70px;
  }

  .shell,
  .platform-shell,
  .gate-shell,
  .qds-shell {
    width: min(var(--qds-max), calc(100% - 32px));
  }

  .nav {
    gap: 10px;
  }

  .brand {
    gap: 8px;
    min-width: 0;
  }

  .brand img {
    width: 38px;
    height: 38px;
  }

  .brand b {
    font-size: 16px;
    white-space: nowrap;
  }

  .brand span {
    display: none;
  }

  .nav-actions {
    flex: 0 0 auto;
  }

  .nav-member {
    min-height: 42px;
    padding: 8px 10px;
    font-size: 12px;
    white-space: nowrap;
  }

  .qds-editorial-hero {
    min-height: max(var(--qds-hero-mobile-min), calc(100svh - var(--qds-nav-height) - 120px));
  }

  .qds-editorial-hero::after {
    top: 12%;
    right: -76px;
    width: 230px;
  }

  .qds-editorial-hero__grid {
    gap: 30px;
    padding-block: 56px 28px;
  }

  .qds-editorial-hero__brief {
    display: none;
  }

  .qds-editorial-hero h1 {
    max-width: 9em;
    font-size: clamp(40px, 10.5vw, 44px);
    line-height: 1.05;
  }

  .qds-live-pulse__grid {
    grid-template-columns: 1fr;
  }

  .qds-live-pulse__status,
  .qds-live-pulse a,
  .qds-live-pulse a:nth-child(2) {
    min-height: 86px;
    border-right: 0;
    border-bottom: 1px solid var(--qds-line-dark);
    padding: 16px 4px;
  }

  .qds-live-pulse a:last-child {
    border-bottom: 0;
  }

  .qds-happening-hero {
    min-height: max(560px, calc(100svh - var(--qds-nav-height) - 144px));
  }

  .qds-happening-hero::after {
    top: -8%;
    right: -92px;
    width: 250px;
  }

  .qds-happening-hero__grid {
    grid-template-columns: 1fr;
    gap: 28px;
    padding-block: 52px 30px;
  }

  .qds-happening-hero h1 {
    max-width: 8em;
    font-size: clamp(40px, 10.5vw, 46px);
  }

  .qds-happening-hero__summary p {
    display: none;
  }

  .qds-activity-stream {
    padding-block: 64px;
  }

  .qds-activity-nav,
  .qds-activity-gallery,
  .qds-live-grid {
    grid-template-columns: 1fr;
  }

  .qds-activity-nav {
    margin-bottom: 62px;
  }

  .qds-activity-nav a {
    min-height: 58px;
    border-right: 0;
    border-bottom: 1px solid var(--qds-line);
    padding-inline: 4px;
  }

  .qds-activity-nav a:last-child {
    border-bottom: 0;
  }

  .qds-activity-category__head {
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 12px;
  }

  .qds-activity-category__head > span {
    font-size: 30px;
  }

  .qds-activity-group__header {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .qds-activity-photo--lead {
    grid-column: 1;
  }

  .qds-activity-photo img,
  .qds-activity-photo--lead img {
    aspect-ratio: 4 / 3;
  }

  .qds-activity-empty {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .qds-evidence-band {
    grid-template-columns: 1fr;
    padding-block: 48px;
  }

  .qds-evidence-band__grid {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .qds-evidence-band__copy h2 {
    max-width: 100%;
    font-size: clamp(30px, 8vw, 36px);
    text-wrap: pretty;
  }

  .qds-evidence-band__media img {
    max-height: none;
    aspect-ratio: 4 / 3;
  }

  .qds-evidence-band__media figcaption {
    display: grid;
    justify-content: start;
  }

  .qds-page-hero {
    min-height: min(500px, calc(100svh - var(--qds-nav-height) - 120px));
  }

  .qds-workspace-hero {
    min-height: min(520px, calc(100svh - var(--qds-nav-height) - 110px));
  }

  .qds-workspace-hero h1 {
    max-width: 10em;
    font-size: clamp(36px, 9.2vw, 42px);
  }

  .qds-page-hero > .shell,
  .qds-page-hero > .platform-shell {
    width: min(var(--qds-max), calc(100% - 32px));
    padding-block: 68px 34px;
  }

  .qds-page-hero h1 {
    max-width: 10em;
    font-size: clamp(40px, 11vw, 48px);
  }

  .qds-section,
  .qds-content-index {
    padding-block: 68px;
  }

  .qds-section-head,
  .qds-content-index__head {
    gap: 22px;
  }

  .qds-content-grid,
  .qds-status-grid,
  .qds-form-grid,
  .qds-resource-grid,
  .qds-role-grid,
  .qds-process-grid {
    grid-template-columns: 1fr;
  }

  .qds-content-card {
    grid-column: 1;
    min-height: 240px;
  }

  .qds-controlled-resource h2,
  .qds-controlled-resource h3 {
    max-width: 100%;
    padding-top: 42px;
  }

  .qds-process-grid article,
  .qds-process-grid article:nth-child(2) {
    min-height: auto;
    border-right: 0;
    border-bottom: 1px solid var(--qds-line-dark);
    padding: 28px 0;
  }

  .qds-process-grid article:last-child {
    border-bottom: 0;
  }

  .qds-process-grid h3 {
    margin-top: 44px;
  }

  .qds-role-card {
    min-height: 280px;
  }

  .qds-training-products {
    background: var(--qds-paper);
  }

  .qds-training-product-grid {
    grid-template-columns: 1fr;
    margin-top: 28px;
  }

  .qds-training-product {
    min-height: 0;
    padding: 32px 4px;
  }

  .qds-training-product:first-child {
    border-right: 0;
    border-bottom: 1px solid var(--qds-line);
  }

  .qds-training-product h3 {
    margin-top: 44px;
  }

  .qds-workspace__rail,
  .qds-workspace__main {
    padding: 24px 16px;
  }
}

/* Core index archetypes: service map, controlled library, editorial ledger. */
.qds-index-hero {
  --qds-index-bg: var(--qds-ink);
  --qds-index-fg: var(--qds-white);
  --qds-index-muted: rgba(255, 253, 248, .72);
  --qds-index-rule: rgba(255, 253, 248, .2);
  position: relative;
  display: grid;
  min-height: min(500px, max(360px, calc(100svh - var(--qds-nav-height) - 150px)));
  overflow: hidden;
  border-bottom: 1px solid var(--qds-line);
  background: var(--qds-index-bg);
  color: var(--qds-index-fg);
  isolation: isolate;
}

.qds-index-hero::before {
  position: absolute;
  z-index: -1;
  inset: 0;
  background-image: linear-gradient(90deg, transparent 0, transparent calc(25% - 1px), var(--qds-index-rule) 25%, transparent calc(25% + 1px), transparent calc(75% - 1px), var(--qds-index-rule) 75%, transparent calc(75% + 1px));
  content: "";
  opacity: .5;
}

.qds-index-hero.qds-page-hero::after,
.qds-index-hero.qds-workspace-hero::after {
  content: none;
}

.page-hero.qds-index-hero,
.platform-hero.qds-index-hero {
  padding-block: 0;
}

.qds-index-hero > .shell,
.qds-index-hero > .platform-shell {
  width: min(var(--qds-max), calc(100% - 64px));
  padding-block: 0;
}

.qds-index-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.18fr) minmax(310px, .82fr);
  gap: clamp(48px, 7vw, 104px);
  align-items: stretch;
  padding-block: clamp(32px, 4.5vh, 50px) clamp(24px, 3.5vh, 38px);
}

.qds-index-hero__copy {
  align-self: center;
  min-width: 0;
}

.qds-index-hero .eyebrow,
.qds-index-hero .platform-kicker {
  margin-bottom: 22px;
  color: var(--qds-index-muted);
  letter-spacing: 0;
}

.qds-index-hero h1 {
  max-width: 9.4em;
  margin: 0;
  color: var(--qds-index-fg);
  font-family: var(--qds-serif);
  font-size: clamp(48px, 5.4vw, 76px);
  font-weight: 600;
  line-height: 1.04;
  letter-spacing: 0;
  text-wrap: balance;
}

.qds-index-hero__copy > p {
  max-width: 680px;
  margin: 24px 0 0;
  color: var(--qds-index-muted);
  font-size: clamp(16px, 1.35vw, 19px);
  line-height: 1.82;
}

.qds-index-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 30px;
}

.qds-index-hero__aside {
  display: grid;
  min-width: 0;
  align-content: end;
  border-left: 1px solid var(--qds-index-rule);
  padding: 12px 0 4px clamp(30px, 4vw, 58px);
}

.qds-index-hero__stamp {
  display: grid;
  justify-items: start;
}

.qds-index-hero__stamp span,
.qds-index-hero__stamp small {
  color: var(--qds-index-muted);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0;
}

.qds-index-hero__stamp strong {
  margin-block: 6px 2px;
  color: var(--qds-index-fg);
  font-family: var(--qds-serif);
  font-size: clamp(62px, 7vw, 104px);
  font-weight: 500;
  line-height: .94;
  letter-spacing: 0;
}

.qds-index-hero__facts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  margin-top: 36px;
  border-top: 1px solid var(--qds-index-rule);
  border-bottom: 1px solid var(--qds-index-rule);
}

.qds-index-hero__facts > div {
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 16px 14px 16px 0;
}

.qds-index-hero__facts > div + div {
  border-left: 1px solid var(--qds-index-rule);
  padding-left: 16px;
}

.qds-index-hero__facts b {
  color: var(--qds-index-fg);
  font-size: 14px;
}

.qds-index-hero__facts span,
.qds-index-hero__aside > p {
  color: var(--qds-index-muted);
  font-size: 13px;
  line-height: 1.65;
}

.qds-index-hero__aside > p {
  margin: 18px 0 0;
}

.qds-index-hero--services {
  --qds-index-bg: #101310;
}

.qds-index-hero--ecosystem {
  --qds-index-bg: #173e3c;
  --qds-index-rule: rgba(255, 253, 248, .22);
}

.qds-index-hero--library {
  --qds-index-bg: #f1eadc;
  --qds-index-fg: var(--qds-ink);
  --qds-index-muted: #5f625b;
  --qds-index-rule: rgba(21, 23, 20, .18);
}

.qds-index-hero--editorial {
  --qds-index-bg: linear-gradient(90deg, #f6f2e9 0 67%, #e5dbc9 67% 100%);
  --qds-index-fg: var(--qds-ink);
  --qds-index-muted: #5d6059;
  --qds-index-rule: rgba(21, 23, 20, .2);
}

.qds-index-hero--library .btn.ghost,
.qds-index-hero--editorial .btn.ghost {
  border-color: rgba(21, 23, 20, .34);
  color: var(--qds-ink);
}

@media (min-width: 761px) and (max-height: 640px) {
  [data-qidian-catalog-role] .qds-index-hero__grid {
    padding-block: 24px 18px;
  }

  [data-qidian-catalog-role] .qds-index-hero__copy > p {
    margin-top: 14px;
    font-size: 15px;
    line-height: 1.6;
  }

  [data-qidian-catalog-role] .qds-index-hero__actions {
    margin-top: 16px;
  }

  [data-qidian-catalog-role] .qds-index-hero__facts {
    margin-top: 14px;
  }

  [data-qidian-catalog-role] .qds-index-hero__facts > div {
    padding-block: 9px;
  }

  [data-qidian-catalog-role] .qds-index-hero__stamp strong {
    font-size: 44px;
  }
}

.qds-anchor {
  display: block;
  position: relative;
  top: calc(-1 * var(--qds-nav-height));
  visibility: hidden;
}

[data-qidian-index-style="service-map"] .entity-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  border-top: 1px solid var(--qds-line);
}

[data-qidian-index-style="service-map"] .entity-grid > a {
  min-height: 220px;
  border: 0;
  border-bottom: 1px solid var(--qds-line);
  background: transparent;
  box-shadow: none;
}

[data-qidian-index-style="service-map"] .entity-grid > a:nth-child(odd) {
  border-right: 1px solid var(--qds-line);
}

[data-qidian-index-style="editorial-library"] .case-grid,
[data-qidian-index-style="evidence-ledger"] .case-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  border-top: 1px solid var(--qds-line);
}

[data-qidian-index-style="editorial-library"] .case-card,
[data-qidian-index-style="evidence-ledger"] .case-card {
  display: grid;
  grid-template-columns: minmax(136px, .35fr) minmax(250px, .82fr) minmax(280px, 1fr) minmax(90px, auto);
  gap: clamp(18px, 3vw, 46px);
  align-items: start;
  min-height: 0;
  border: 0;
  border-bottom: 1px solid var(--qds-line);
  padding: 30px 0;
  background: transparent;
  box-shadow: none;
}

[data-qidian-index-style="editorial-library"] .case-card h2,
[data-qidian-index-style="evidence-ledger"] .case-card h2 {
  margin: 0;
  font-size: clamp(22px, 2vw, 30px);
  line-height: 1.32;
}

[data-qidian-index-style="editorial-library"] .case-card p,
[data-qidian-index-style="evidence-ledger"] .case-card p {
  margin: 0;
  line-height: 1.8;
}

[data-qidian-index-style="editorial-library"] .case-card .meta,
[data-qidian-index-style="evidence-ledger"] .case-card .meta {
  display: grid;
  gap: 6px;
  margin: 2px 0 0;
}

[data-qidian-index-style="editorial-library"] .case-card .article-link {
  justify-self: end;
  white-space: nowrap;
}

[data-qidian-index-style="evidence-ledger"] .case-card .flow {
  grid-column: 3 / -1;
  margin-top: -20px;
}

@media (max-width: 980px) {
  [data-qidian-index-style="editorial-library"] .case-card,
  [data-qidian-index-style="evidence-ledger"] .case-card {
    grid-template-columns: minmax(120px, .3fr) minmax(0, 1fr);
  }

  [data-qidian-index-style="editorial-library"] .case-card p,
  [data-qidian-index-style="evidence-ledger"] .case-card p,
  [data-qidian-index-style="editorial-library"] .case-card .article-link,
  [data-qidian-index-style="evidence-ledger"] .case-card .flow {
    grid-column: 2;
    justify-self: start;
    margin-top: 0;
  }
}

@media (max-width: 760px) {
  .qds-index-hero {
    min-height: 0;
  }

  .qds-index-hero::before {
    background-image: linear-gradient(90deg, transparent 0, transparent calc(50% - 1px), var(--qds-index-rule) 50%, transparent calc(50% + 1px));
  }

  .qds-index-hero > .shell,
  .qds-index-hero > .platform-shell {
    width: min(var(--qds-max), calc(100% - 32px));
    padding-block: 0;
  }

  .qds-index-hero__grid {
    grid-template-columns: 1fr;
    gap: 30px;
    padding-block: 42px 28px;
  }

  .qds-index-hero h1 {
    max-width: 8.8em;
    font-size: clamp(38px, 10.6vw, 48px);
    line-height: 1.08;
  }

  .qds-index-hero__copy > p {
    margin-top: 18px;
    font-size: 15px;
    line-height: 1.72;
  }

  .qds-index-hero__actions {
    margin-top: 22px;
  }

  .qds-index-hero__aside {
    border-top: 1px solid var(--qds-index-rule);
    border-left: 0;
    padding: 24px 0 0;
  }

  .qds-index-hero__stamp strong {
    font-size: 58px;
  }

  .qds-index-hero__facts {
    margin-top: 22px;
  }

  [data-qidian-catalog-role] .qds-index-hero__grid {
    gap: 18px;
    padding-block: 30px 20px;
  }

  [data-qidian-catalog-role] .qds-index-hero__copy > p {
    margin-top: 14px;
    line-height: 1.58;
  }

  [data-qidian-catalog-role] .qds-index-hero__actions {
    margin-top: 16px;
  }

  [data-qidian-catalog-role] .qds-index-hero__aside {
    padding-top: 16px;
  }

  [data-qidian-catalog-role] .qds-index-hero__stamp strong {
    font-size: 44px;
  }

  [data-qidian-catalog-role] .qds-index-hero__facts {
    margin-top: 12px;
  }

  [data-qidian-catalog-role] .qds-index-hero__facts > div {
    padding-block: 8px;
  }

  .qds-index-hero--editorial {
    --qds-index-bg: #f1eadc;
  }

  [data-qidian-index-style="service-map"] .entity-grid {
    grid-template-columns: 1fr;
  }

  [data-qidian-index-style="service-map"] .entity-grid > a:nth-child(odd) {
    border-right: 0;
  }

  [data-qidian-index-style="editorial-library"] .case-card,
  [data-qidian-index-style="evidence-ledger"] .case-card {
    grid-template-columns: 1fr;
    gap: 14px;
    padding: 26px 0;
  }

  [data-qidian-index-style="editorial-library"] .case-card p,
  [data-qidian-index-style="evidence-ledger"] .case-card p,
  [data-qidian-index-style="editorial-library"] .case-card .article-link,
  [data-qidian-index-style="evidence-ledger"] .case-card .flow {
    grid-column: 1;
  }
}

/* Ecosystem operating surfaces: action on the left, accountable path on the right. */
.qds-workspace-hero:not(.qds-index-hero) {
  display: grid;
  min-height: min(420px, max(360px, calc(100svh - var(--qds-nav-height) - 128px)));
  padding-block: 0;
}

.qds-workspace-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr);
  gap: clamp(42px, 7vw, 96px);
  align-items: stretch;
  padding-block: clamp(34px, 4.6vh, 48px) clamp(28px, 3.8vh, 40px);
}

.qds-workspace-hero__copy {
  align-self: center;
  min-width: 0;
}

.qds-workspace-hero__copy .platform-kicker,
.qds-workspace-hero__copy .eyebrow {
  margin-bottom: 16px;
}

.qds-workspace-hero__copy h1 {
  max-width: 10.5em;
  margin: 0;
  font-size: clamp(44px, 4.7vw, 64px);
  line-height: 1.04;
}

.qds-workspace-hero__copy > p {
  max-width: 650px;
  margin: 20px 0 0;
  font-size: clamp(15px, 1.25vw, 18px);
  line-height: 1.72;
}

.qds-workspace-hero__copy .platform-actions {
  margin-top: 24px;
}

.qds-workspace-hero__status {
  display: flex;
  min-width: 0;
  flex-direction: column;
  justify-content: center;
  border-left: 1px solid rgba(255, 253, 248, .2);
  padding-left: clamp(28px, 4vw, 52px);
}

.qds-workspace-hero__status-head {
  display: grid;
  gap: 5px;
  margin-bottom: 10px;
}

.qds-workspace-hero__status-head span {
  color: var(--qds-teal-light);
  font: 700 11px/1.4 var(--qds-mono);
}

.qds-workspace-hero__status-head strong {
  color: var(--qds-white);
  font: 600 21px/1.35 var(--qds-sans);
}

.qds-workspace-hero__status ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

.qds-workspace-hero__status li {
  display: grid;
  min-height: 44px;
  grid-template-columns: 36px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  border-top: 1px solid rgba(255, 253, 248, .14);
  padding-block: 11px;
}

.qds-workspace-hero__status li > span {
  color: var(--qds-gold-soft);
  font: 700 12px/1 var(--qds-mono);
  font-variant-numeric: tabular-nums;
}

.qds-workspace-hero__status li div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.qds-workspace-hero__status li b {
  color: var(--qds-white);
  font-size: 14px;
}

.qds-workspace-hero__status li small {
  color: rgba(255, 253, 248, .58);
  font-size: 12px;
  line-height: 1.45;
  text-wrap: pretty;
}

body[data-qidian-workspace-role="opc"] .qds-workspace-hero,
body[data-qidian-workspace-role="matching"] .qds-workspace-hero {
  background:
    linear-gradient(90deg, transparent 0 24.9%, rgba(255, 253, 248, .035) 25%, transparent 25.1% 74.9%, rgba(255, 253, 248, .035) 75%, transparent 75.1%),
    radial-gradient(circle at 82% 20%, rgba(49, 91, 115, .3), transparent 32%),
    #101b21;
}

body[data-qidian-workspace-role="join"] .qds-workspace-hero,
body[data-qidian-workspace-role="workbench"] .qds-workspace-hero {
  background:
    linear-gradient(90deg, transparent 0 24.9%, rgba(255, 253, 248, .035) 25%, transparent 25.1% 74.9%, rgba(255, 253, 248, .035) 75%, transparent 75.1%),
    radial-gradient(circle at 82% 20%, rgba(183, 137, 62, .22), transparent 32%),
    #171b17;
}

body[data-qidian-workspace-role="demands"] .qds-workspace-hero__copy h1,
body[data-qidian-workspace-role="matching"] .qds-workspace-hero__copy h1 {
  max-width: none;
  white-space: nowrap;
}

body[data-qidian-workspace-role="matching"] .qds-workspace-hero__copy h1 {
  font-size: clamp(38px, 3.9vw, 50px);
}

@media (max-width: 720px) {
  .qds-workspace-hero:not(.qds-index-hero) {
    min-height: 0;
  }

  .qds-workspace-hero__grid {
    grid-template-columns: 1fr;
    gap: 26px;
    padding-block: 44px 28px;
  }

  .qds-workspace-hero__copy h1 {
    max-width: 9em;
    font-size: clamp(34px, 9.4vw, 40px);
    line-height: 1.08;
  }

  body[data-qidian-workspace-role="demands"] .qds-workspace-hero__copy h1 {
    font-size: 31px;
  }

  body[data-qidian-workspace-role="matching"] .qds-workspace-hero__copy h1 {
    font-size: 29px;
  }

  .qds-workspace-hero__copy > p {
    margin-top: 16px;
    font-size: 15px;
    line-height: 1.68;
  }

  .qds-workspace-hero__copy .platform-actions {
    display: grid;
    grid-template-columns: 1fr;
    margin-top: 20px;
  }

  .qds-workspace-hero__copy .platform-actions .btn {
    width: 100%;
    justify-content: center;
  }

  .qds-workspace-hero__status {
    border-top: 1px solid rgba(255, 253, 248, .2);
    border-left: 0;
    padding: 22px 0 0;
  }

  .qds-workspace-hero__status-head strong {
    font-size: 18px;
  }

  .qds-workspace-hero__status li {
    padding-block: 9px;
  }
}

/* Public trust and decision surfaces: verifiable records, not generic cards. */
.qds-dossier-hero,
.qds-decision-hero {
  position: relative;
  display: grid;
  min-height: min(430px, max(370px, calc(100svh - var(--qds-nav-height) - 120px)));
  overflow: hidden;
  color: var(--qds-white);
}

.qds-dossier-hero {
  background:
    radial-gradient(circle at 83% 17%, rgba(140, 193, 189, .18), transparent 30%),
    #14201e;
}

.qds-decision-hero {
  background:
    radial-gradient(circle at 82% 18%, rgba(224, 193, 124, .16), transparent 30%),
    #1a1b17;
}

.qds-dossier-hero::before,
.qds-decision-hero::before {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    transparent 0 24.9%,
    rgba(255, 253, 248, .04) 25%,
    transparent 25.1% 74.9%,
    rgba(255, 253, 248, .04) 75%,
    transparent 75.1%
  );
  content: "";
  pointer-events: none;
}

.qds-dossier-hero__grid,
.qds-decision-hero__grid {
  position: relative;
  z-index: 1;
  display: grid;
  align-items: stretch;
  padding-block: clamp(34px, 4.6vh, 48px) clamp(28px, 3.8vh, 40px);
}

.qds-dossier-hero__grid {
  grid-template-columns: minmax(0, 1.18fr) minmax(280px, .82fr);
  gap: clamp(42px, 7vw, 94px);
}

.qds-decision-hero__grid {
  grid-template-columns: minmax(0, 1.24fr) minmax(260px, .76fr);
  gap: clamp(40px, 7vw, 88px);
}

.qds-dossier-hero__copy,
.qds-decision-hero__copy {
  align-self: center;
  min-width: 0;
}

.qds-dossier-hero__copy h1,
.qds-decision-hero__copy h1 {
  max-width: 10.5em;
  margin: 14px 0 0;
  color: var(--qds-white);
  font: 500 clamp(44px, 4.7vw, 64px)/1.04 var(--qds-serif);
  letter-spacing: 0;
  text-wrap: balance;
}

body[data-qidian-page="company"] .qds-dossier-hero__copy h1 {
  max-width: 12em;
  font-size: clamp(38px, 4.2vw, 58px);
}

.qds-dossier-hero__copy > p,
.qds-decision-hero__copy > p {
  max-width: 660px;
  margin: 20px 0 0;
  color: rgba(255, 253, 248, .72);
  font-size: clamp(15px, 1.25vw, 18px);
  line-height: 1.72;
}

.qds-dossier-hero__register,
.qds-decision-hero__index {
  display: flex;
  min-width: 0;
  flex-direction: column;
  justify-content: center;
  border-left: 1px solid rgba(255, 253, 248, .2);
  padding-left: clamp(28px, 4vw, 50px);
}

.qds-dossier-hero__register-head,
.qds-decision-hero__index-head {
  display: grid;
  gap: 5px;
  margin-bottom: 10px;
}

.qds-dossier-hero__register-head span,
.qds-decision-hero__index-head span {
  color: var(--qds-teal-light);
  font: 700 11px/1.4 var(--qds-mono);
  letter-spacing: 0;
}

.qds-decision-hero__index-head span {
  color: var(--qds-gold-soft);
}

.qds-dossier-hero__register-head strong,
.qds-decision-hero__index-head strong {
  color: var(--qds-white);
  font: 600 20px/1.35 var(--qds-sans);
}

.qds-dossier-hero__register ol,
.qds-decision-hero__index ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

.qds-dossier-hero__register li,
.qds-decision-hero__index li {
  display: grid;
  min-height: 44px;
  grid-template-columns: 36px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  border-top: 1px solid rgba(255, 253, 248, .14);
  padding-block: 10px;
}

.qds-dossier-hero__register li {
  min-height: 44px;
}

.qds-decision-hero__index li {
  min-height: 44px;
}

.qds-dossier-hero__register li > span,
.qds-decision-hero__index li > span {
  color: var(--qds-gold-soft);
  font: 700 12px/1 var(--qds-mono);
  font-variant-numeric: tabular-nums;
}

.qds-dossier-hero__register li div,
.qds-decision-hero__index li div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.qds-dossier-hero__register li b,
.qds-decision-hero__index li b {
  color: var(--qds-white);
  font-size: 14px;
}

.qds-dossier-hero__register li small,
.qds-decision-hero__index li small {
  color: rgba(255, 253, 248, .58);
  font-size: 12px;
  line-height: 1.45;
}

@media (max-width: 720px) {
  .qds-dossier-hero,
  .qds-decision-hero {
    min-height: 0;
  }

  .qds-dossier-hero__grid,
  .qds-decision-hero__grid {
    grid-template-columns: 1fr;
    gap: 20px;
    padding-block: 34px 22px;
  }

  .qds-dossier-hero__copy h1,
  .qds-decision-hero__copy h1,
  body[data-qidian-page="company"] .qds-dossier-hero__copy h1 {
    max-width: 9em;
    font-size: clamp(33px, 9.2vw, 39px);
    line-height: 1.08;
  }

  body[data-qidian-page="company"] .qds-dossier-hero__copy h1 {
    max-width: none;
    font-size: 32px;
  }

  .qds-dossier-hero__copy > p,
  .qds-decision-hero__copy > p {
    margin-top: 16px;
    font-size: 15px;
    line-height: 1.66;
  }

  .qds-dossier-hero__register,
  .qds-decision-hero__index {
    border-top: 1px solid rgba(255, 253, 248, .2);
    border-left: 0;
    padding: 16px 0 0;
  }

  .qds-dossier-hero__register-head strong,
  .qds-decision-hero__index-head strong {
    font-size: 18px;
  }

  .qds-dossier-hero__register li,
  .qds-decision-hero__index li {
    padding-block: 7px;
  }
}

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

  *,
  *::before,
  *::after {
    scroll-behavior: auto;
    transition-duration: .01ms !important;
  }

  .qds-live-pulse__status > span {
    animation: none;
  }
}

/* ============================================================================
   QIDIAN_REFINE_V1 · 2026-08-20
   升级层：只追加，不改上面任何一行。整段删掉即可回到改前。
   ============================================================================ */

:root{
  --qds-ink:#17181A;
  --qds-ink-soft:#24262A;
  --qds-paper:#F2EEE6;
  --qds-paper-strong:#E9E3D6;
  --qds-white:#FBF9F5;
  --qds-line:rgba(23,24,26,.13);
  --qds-line-dark:rgba(251,249,245,.10);
  --qds-muted:#63706F;
  --qds-muted-dark:rgba(251,249,245,.62);
  /* 投影：单层灰光 → 双层（近实 + 远柔） */
  --qds-shadow:0 1px 2px rgba(23,24,26,.05), 0 22px 48px rgba(23,24,26,.07);
  --qds-cream:#E8E2D6;
  --qds-glow:rgba(231,196,128,.24);
}

/* ---------- 首屏（全站真正的首屏是这个，不是 .hero） ----------
   撤掉竖条纹和 45° 金框方块，换一盏顶部暖光；金字退成暖白。 */
.qds-editorial-hero{
  background:linear-gradient(180deg,#0C0D0F 0%,#08090A 64%,#0A0B0C 100%);
  min-height:min(700px, max(520px, calc(100svh - var(--qds-nav-height) - 96px)));
}
.qds-editorial-hero::before{
  inset:0;
  background:
    radial-gradient(42% 34% at 50% 0%, var(--qds-glow), transparent 70%),
    radial-gradient(58% 46% at 50% -6%, rgba(206,176,116,.09), transparent 74%);
  filter:blur(44px);
}
/* 那个旋转 45° 的金色方框：换成极弱的一层底噪，不再当装饰 */
.qds-editorial-hero::after{
  top:0;right:0;left:0;bottom:0;
  width:auto;aspect-ratio:auto;
  border:0;transform:none;
  opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
}
.qds-editorial-hero h1{letter-spacing:-.035em;line-height:.98;font-weight:400}
.qds-editorial-hero h1 em{color:#F2EFE8}
.qds-editorial-hero__lead{color:#A9A69F;font-size:clamp(16px,1.25vw,18.5px);line-height:1.85}
.qds-editorial-hero__brief{border-top-color:rgba(255,253,248,.14);color:#A9A69F}
.qds-editorial-hero__brief strong{color:#F2EFE8;letter-spacing:-.02em}
.qds-editorial-hero .eyebrow{color:#B9A87E}
.qds-member-signin{color:#A9A69F}

/* ---------- 修版面硬伤：4 张卡在 12 列里排成 3+1，第 4 张吊着留半行空 ----------
   只在「正好 4 张」时改成 2×2；3 张、5 张、10 张的网格一律不动。 */
.qds-content-grid:has(> .qds-content-card:nth-child(4):last-child) > .qds-content-card{
  grid-column:span 6;
}
@media(max-width:1020px){
  .qds-content-grid:has(> .qds-content-card:nth-child(4):last-child) > .qds-content-card{
    grid-column:span 12;
  }
}

/* ---------- 深色区块：近黑 + 一盏光，禁死黑 ---------- */
.qds-section--dark{
  background:#0A0B0C;
  position:relative;
  overflow:hidden;
}
.qds-section--dark::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(42% 38% at 50% -4%, var(--qds-glow), transparent 70%);
  filter:blur(40px);
}
.qds-section--dark>*{position:relative;z-index:2}

/* ---------- 版面留白 ---------- */
.qds-section{padding-top:var(--qds-space-8);padding-bottom:var(--qds-space-8)}
.qds-section-head{margin-bottom:var(--qds-space-7)}
.qds-section-head h1,.qds-section-head h2{letter-spacing:-.025em;line-height:1.06}
.qds-section-head p{font-size:16.5px;line-height:1.85;color:var(--qds-muted)}

/* ---------- 卡片：去硬框，抬底色，加留白，双层柔影 ---------- */
.qds-content-card,.qds-role-card,.qds-controlled-resource{
  background:var(--qds-white);
  border-color:var(--qds-line);
  transition:border-color .4s cubic-bezier(.16,1,.3,1),transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s;
}
.qds-content-card:hover,.qds-role-card:hover,.qds-controlled-resource:hover{
  border-color:rgba(23,24,26,.24);
  transform:translateY(-2px);
  box-shadow:var(--qds-shadow);
}
.qds-content-card h2,.qds-content-card h3,
.qds-role-card h2,.qds-role-card h3{letter-spacing:-.018em}
.qds-content-card p,.qds-role-card p{font-size:15px;line-height:1.8;color:var(--qds-muted)}

/* 深色区里的卡片不投影，靠亮度递进 */
.qds-section--dark .qds-content-card,
.qds-section--dark .qds-role-card{
  background:rgba(255,255,255,.024);
  border-color:rgba(255,255,255,.07);
  box-shadow:none;
}
.qds-section--dark .qds-content-card:hover,
.qds-section--dark .qds-role-card:hover{
  background:rgba(255,255,255,.046);
  border-color:rgba(255,255,255,.11);
  box-shadow:none;
}
.qds-section--dark .qds-content-card p,
.qds-section--dark .qds-role-card p{color:var(--qds-muted-dark)}

/* ---------- 巨数字：本色 + 负字距，不用金 ---------- */
.qds-stat b,.qds-stat strong,.qds-figure{
  letter-spacing:-.035em;
  color:var(--qds-ink);
}
.qds-section--dark .qds-stat b,
.qds-section--dark .qds-stat strong,
.qds-section--dark .qds-figure{color:#F2EFE8}

/* ---------- 按钮：实心只有暖奶油 ---------- */
.qds-btn--primary,.qds-button--primary{
  background:var(--qds-cream);
  color:#15140F;
  border-color:transparent;
  transition:transform .35s cubic-bezier(.16,1,.3,1),background .35s;
}
.qds-btn--primary:hover,.qds-button--primary:hover{
  background:#F2EEE4;transform:translateY(-2px);
}

/* ---------- 正文可读性 ---------- */
.qds-prose p,.qds-body p{font-size:16px;line-height:1.85;color:var(--qds-muted)}
.qds-eyebrow{letter-spacing:.2em;color:#8A6A34}

/* ---------- 移动端 ---------- */
@media(max-width:760px){
  .qds-section{padding-top:var(--qds-space-7);padding-bottom:var(--qds-space-7)}
  .qds-section-head{margin-bottom:var(--qds-space-5)}
  .qds-content-card,.qds-role-card{padding:24px}
}
@media(prefers-reduced-motion:reduce){
  .qds-content-card,.qds-role-card,.qds-controlled-resource,
  .qds-btn--primary,.qds-button--primary{transition:none}
}

/* ===== QIDIAN_REFINE_V2 ===== */
/* Loads last on all 139 qds pages. Overrides BOTH site.css vars and qds vars.
   Palette decision: ink ground + ONE cream accent for actions.
   Gold demoted to hairline/eyebrow/numerals only (it was the "tacky" source).
   Teal #1f5552 already existed in this file's :root but was never used. */
:root{
  /* --- site.css variables (first sheet) --- */
  --night:#0B0D0E; --navy:#111416; --ink:#15181A;
  --gold:#8C6E33; --gold2:#E8E2D4;          /* gold2 drives .btn.gold -> cream */
  --cyan:#1F5552;
  --line:rgba(21,23,20,.14);
  /* --- qds variables (this sheet) --- */
  --qds-accent:#1F5552; --qds-accent-soft:#8CC1BD;
  --qds-gold:#8C6E33;
  --qds-radius:8px;
  --qds-cream:#E8E2D4;
  --qds-muted:#585B53;        /* was #656860 -> 4.33:1 on paper, now clears 4.5 */
  --qds-muted-dark:rgba(255,253,248,.78);
  --qd-ease:cubic-bezier(.22,1,.36,1);
}

/* ---------- actions: exactly one visual weight for the primary CTA ------- */
.btn,.nav-cta,.qds-btn--primary,.qds-button--primary{
  border-radius:var(--qds-radius);
  transition:transform .16s var(--qd-ease),background-color .16s var(--qd-ease),color .16s var(--qd-ease);
}
.btn.gold,.nav-cta,.qds-btn--primary,.qds-button--primary{
  background:var(--qds-cream); color:#15140F; border:1px solid transparent;
}
.btn.gold:hover,.nav-cta:hover,.qds-btn--primary:hover{background:#FFFDF6;transform:translateY(-1px)}
.btn.ghost{border-color:rgba(255,255,255,.34);color:#fff;background:transparent}
.btn.ghost:hover{border-color:#fff;transform:translateY(-1px)}
.qds-section--strong .btn.ghost,.qds-section:not(.qds-section--dark) .btn.ghost{
  border-color:rgba(21,24,26,.3);color:var(--ink)
}
.qds-section--strong .btn.ghost:hover,.qds-section:not(.qds-section--dark) .btn.ghost:hover{
  border-color:var(--qds-accent);color:var(--qds-accent)
}
button.nav-cta,button.btn{font:inherit;font-weight:800;cursor:pointer;
  padding:11px 16px;letter-spacing:.04em}
button.btn{padding:14px 20px}

/* ---------- gold only as a hairline / eyebrow / numeral ------------------ */
.eyebrow,.qds-eyebrow{color:#5A4419;letter-spacing:.2em}
/* Eyebrow colour is decided by the CONTAINER, not by an enumerated pair list.
   Enumerating ".X .eyebrow" breaks because the same class can be light or dark:
   .page-hero is ink, but .page-hero.qds-page-hero is paper. A cascading custom
   property lets the innermost container win automatically. */
:root{--eb:#5A4419}
/* measured, not guessed: every .page-hero variant paints an ink ground
   (17,23,20 / 20,32,30 / 26,27,23) EXCEPT .qds-index-hero, which is paper
   (241,234,220 on /industries, transparent over paper on /cases). */
.qds-section--dark,.section.dark,.cta,.qds-contact,.qds-editorial-hero,
.hero,.evidence-main,.fact-aside,.article-aside,
.page-hero,.qds-page-hero,.qds-dossier-hero,.qds-decision-hero,
.qds-happening-hero,.qds-workspace-hero,
.case-copy .label,.footer{--eb:#D3B478}
/* paper grounds - listed AFTER so they win at equal specificity */
.section.warm,.qds-section--strong,.qds-content-card,.list-card,.case-card,
.download,.evidence-card,.qds-index-hero{--eb:#5A4419}
.qds-section--dark .qds-content-card,.section.dark .list-card{--eb:#D3B478}
/* same job, different legacy names: platform-kicker(30x) pulls
   --eco-gold-soft from ecosystem.css and never followed the eyebrow rules. */
.eyebrow,.qds-eyebrow,.platform-kicker,.resource-label,.stage-no,
.workbench-stage{color:var(--eb)}
.qds-content-card small,.qds-process-grid small{color:#5A4419;
  font:700 11px/1.4 ui-monospace,monospace;letter-spacing:.14em}
.qds-section--dark .qds-content-card small,.qds-section--dark .qds-process-grid small{color:#D3B478}

/* ---------- hero: real photograph, two columns -------------------------- */
.qds-editorial-hero{background:var(--night);color:#EEF2F3;overflow:hidden}
.qds-editorial-hero::before{display:none}          /* kill the decorative rhombus/stripes */
.qds-editorial-hero__grid{display:grid;grid-template-columns:1.05fr .95fr;
  gap:clamp(28px,5vw,72px);align-items:center;padding:clamp(56px,7vw,104px) 0}
.qds-editorial-hero h1{font-family:var(--qds-serif);
  font-size:clamp(40px,5.6vw,84px);line-height:1.04;letter-spacing:-.03em;margin:18px 0 22px}
.qds-editorial-hero h1 em{display:block;font-style:normal;color:var(--qds-cream)}
.qds-editorial-hero__brief{font-size:clamp(15px,1.15vw,18px);line-height:1.85;
  color:#C6D1D5;max-width:36em;margin:0 0 30px}
.qds-figure{margin:0}
.qds-figure img{width:100%;height:auto;display:block;border-radius:var(--qds-radius)}
.qds-figure figcaption{margin-top:10px;font:12.5px/1.6 var(--qds-sans);color:#9DAAAF}
.qds-editorial-hero__media img{aspect-ratio:16/10;object-fit:cover}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap}

/* ---------- section rhythm --------------------------------------------- */
.qds-section{padding:clamp(64px,7vw,108px) 0}
.qds-section--strong{background:#EFEBE1}
.qds-section--dark{background:var(--night);color:#EAEFF0}
.qds-section-head{display:grid;grid-template-columns:.9fr 1.1fr;
  gap:clamp(20px,4vw,64px);align-items:start;margin-bottom:clamp(28px,3.4vw,52px)}
.qds-section-head h2{font-family:var(--qds-serif);
  font-size:clamp(30px,3.7vw,54px);line-height:1.12;margin:12px 0 0;letter-spacing:-.02em}
.qds-section-head p{margin:0;line-height:1.85;color:var(--qds-muted);font-size:16px}
.qds-section--dark .qds-section-head p{color:#C2CDD1}

/* ---------- cards ------------------------------------------------------- */
.qds-content-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px;
  align-items:start}
.qds-content-grid>.qds-content-card{grid-column:span 4}
/* 4 cards -> 2x2 so the last row is never a lonely orphan */
.qds-content-grid:has(>.qds-content-card:nth-child(4):last-child)>.qds-content-card{grid-column:span 6}
.qds-content-card{background:#FFFDF8;border:1px solid var(--line);
  border-radius:var(--qds-radius);padding:26px 24px;display:flex;flex-direction:column;gap:10px;
  min-height:0;                       /* was 300px in the base sheet -> dead space */
  transition:transform .18s var(--qd-ease),border-color .18s var(--qd-ease)}
.qds-content-card h2,.qds-content-card h3{margin:2px 0 0}
.qds-content-card:hover{transform:translateY(-2px);border-color:var(--qds-accent)}
.qds-content-card h3{font-family:var(--qds-serif);font-size:22px;margin:2px 0 0;line-height:1.3}
.qds-content-card p{margin:0;font-size:14.5px;line-height:1.8;color:var(--qds-muted);max-width:34em}
.qds-content-card b{color:var(--ink);font-weight:700}
.qds-section--dark .qds-content-card{background:#14181A;border-color:rgba(255,255,255,.12);
  color:#EAEFF0}
.qds-section--dark .qds-content-card h2,
.qds-section--dark .qds-content-card h3{color:var(--qds-cream)}
.qds-section--dark .qds-content-card p{color:#C2CDD1}
.qds-section--dark .qds-content-card b{color:var(--qds-cream)}

/* ---------- six stages + five gates ------------------------------------- */
.qds-process-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:0;
  border:1px solid rgba(255,255,255,.14);border-radius:var(--qds-radius);overflow:hidden}
.qds-process-grid>article{padding:24px 20px;border-right:1px solid rgba(255,255,255,.12);
  min-height:210px;display:flex;flex-direction:column;gap:8px}
.qds-process-grid>article:last-child{border-right:0}
.qds-process-grid h3{font-family:var(--qds-serif);font-size:20px;margin:6px 0 0}
.qds-process-grid p{margin:0;font-size:13.5px;line-height:1.75;color:#C2CDD1}
.qds-status-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:26px}
.qds-status-card{border:1px solid rgba(255,255,255,.14);border-radius:var(--qds-radius);
  padding:18px 16px;display:flex;flex-direction:column;gap:7px;background:rgba(255,255,255,.02)}
.qds-status-card b{font-family:var(--qds-serif);font-size:17px;color:var(--qds-cream)}
.qds-status-card span{font-size:13.5px;line-height:1.75;color:#C2CDD1}

/* ---------- FDE band ---------------------------------------------------- */
.qds-evidence-band__grid{display:grid;grid-template-columns:1.05fr .95fr;
  gap:clamp(26px,4.5vw,68px);align-items:center}
.qds-evidence-band__grid>*,.qds-editorial-hero__grid>*,
.qds-section-head>*,.qds-contact__grid>*{min-width:0}
.qds-evidence-band__copy h2{font-family:var(--qds-serif);
  font-size:clamp(30px,3.7vw,54px);line-height:1.12;margin:12px 0 20px;letter-spacing:-.02em}
.qds-evidence-band__copy p{line-height:1.9;color:var(--qds-muted);font-size:16px;margin:0 0 16px}
.qds-keep-phrase{border-left:2px solid var(--qds-gold);padding-left:16px;
  white-space:normal;            /* base sheet sets nowrap -> spills 142px at 360 */
  overflow-wrap:anywhere;word-break:break-word}
.qds-keep-phrase b{color:var(--ink)}
.qds-evidence-band__media img{aspect-ratio:4/5;object-fit:cover;max-height:520px;margin-left:auto}

/* ---------- industry index --------------------------------------------- */
.qds-training-product-index{display:grid;grid-template-columns:repeat(3,1fr);
  border-top:1px solid var(--line)}
.qds-training-product-link{display:block;padding:17px 4px;border-bottom:1px solid var(--line);
  text-decoration:none;color:var(--ink);font-size:15.5px;
  /* transform, not padding-left: padding animates layout and drops frames */
  transition:color .16s var(--qd-ease),transform .16s var(--qd-ease)}
.qds-training-product-link:hover{color:var(--qds-accent);transform:translateX(9px)}

/* ---------- contact ----------------------------------------------------- */
.qds-contact{background:var(--night);color:#EAEFF0;padding:clamp(64px,7vw,104px) 0}
.qds-contact__grid{display:grid;grid-template-columns:1.25fr .75fr;
  gap:clamp(26px,5vw,72px);align-items:center}
.qds-contact h2{font-family:var(--qds-serif);
  font-size:clamp(30px,4vw,58px);line-height:1.1;margin:12px 0 20px}
.qds-contact p{line-height:1.85;color:#C2CDD1;margin:0 0 12px}
.qds-contact__actions{display:flex;justify-content:flex-end}

/* ---------- contact dialog (desktop scan + mobile deep-link) ------------ */
.qd-contact-layer[hidden]{display:none}
.qd-contact-layer{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:18px}
.qd-contact-layer__backdrop{position:absolute;inset:0;background:rgba(8,10,11,.72);
  backdrop-filter:blur(3px)}
.qd-contact-layer__panel{position:relative;background:#FFFDF8;color:var(--ink);
  border-radius:var(--qds-radius);padding:30px 28px 26px;width:min(430px,100%);
  max-height:92vh;overflow:auto;text-align:center;
  box-shadow:0 2px 6px rgba(0,0,0,.16),0 26px 70px rgba(0,0,0,.3)}
.qd-contact-layer__x{position:absolute;top:9px;right:11px;border:0;background:transparent;
  font-size:26px;line-height:1;cursor:pointer;color:#7A756C;padding:5px 9px;border-radius:var(--qds-radius)}
.qd-contact-layer__x:hover{background:rgba(0,0,0,.06);color:var(--ink)}
.qd-contact-layer h2{font-family:var(--qds-serif);font-size:22px;margin:0 0 18px;line-height:1.35}
.qd-contact-layer__qr{width:210px;height:210px;display:block;margin:0 auto 18px;
  border:1px solid var(--line);border-radius:var(--qds-radius)}
.qd-contact-layer__how{display:grid;gap:11px;text-align:left;margin:0 0 16px}
.qd-contact-layer__how>div{display:grid;gap:3px;border-left:2px solid var(--qds-accent);padding-left:12px}
.qd-contact-layer__how b{font-size:13.5px}
.qd-contact-layer__how span{font-size:13px;line-height:1.7;color:var(--qds-muted)}
.qd-contact-layer__go{margin:0 0 16px}
.qd-contact-layer__go .btn{width:100%;justify-content:center}
.qd-contact-layer__tip{font-size:13px;line-height:1.75;color:var(--qds-muted);
  text-align:left;margin:0;border-top:1px solid var(--line);padding-top:15px}
.qd-contact-layer__tip b{color:var(--ink)}
.qd-contact-layer__copy{display:inline-block;margin-top:9px;border:1px solid var(--line);
  background:transparent;border-radius:var(--qds-radius);padding:7px 12px;
  font:inherit;font-size:12.5px;cursor:pointer;color:var(--ink)}
.qd-contact-layer__copy:hover{border-color:var(--qds-accent);color:var(--qds-accent)}
.qd-contact-layer__toast{display:block;margin-top:8px;font-size:12.5px;color:var(--qds-accent);min-height:1.2em}

/* ---------- focus visible everywhere ----------------------------------- */
a:focus-visible,button:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--qds-accent);outline-offset:3px}
.qds-section--dark a:focus-visible,.qds-section--dark button:focus-visible,
.qds-editorial-hero a:focus-visible,.qds-editorial-hero button:focus-visible,
.qds-contact a:focus-visible,.qds-contact button:focus-visible,
.site-head a:focus-visible,.site-head button:focus-visible{outline-color:var(--qds-cream)}
.qds-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap}
.qds-visually-hidden:focus{position:fixed;top:10px;left:10px;width:auto;height:auto;
  clip:auto;background:var(--qds-cream);color:#15140F;padding:10px 14px;
  border-radius:var(--qds-radius);z-index:200}

/* ---------- reveal: visible by DEFAULT (blank-page insurance) ----------- */
.reveal{opacity:1;transform:none}
body.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .5s var(--qd-ease),transform .5s var(--qd-ease)}
body.js .reveal.visible{opacity:1;transform:none}

/* ---------- responsive -------------------------------------------------- */
@media(max-width:1000px){
  .qds-editorial-hero__grid,.qds-section-head,.qds-evidence-band__grid,
  .qds-contact__grid{grid-template-columns:1fr}
  .qds-editorial-hero__grid{padding:44px 0 52px}
  .qds-content-grid>.qds-content-card,
  .qds-content-grid:has(>.qds-content-card:nth-child(5):last-child)>.qds-content-card,
  .qds-content-grid:has(>.qds-content-card:nth-child(4):last-child)>.qds-content-card{grid-column:span 6}
  .qds-process-grid{grid-template-columns:repeat(2,1fr)}
  .qds-process-grid>article{border-right:1px solid rgba(255,255,255,.12);
    border-bottom:1px solid rgba(255,255,255,.12)}
  .qds-process-grid>article:nth-child(2n){border-right:0}
  .qds-status-grid{grid-template-columns:repeat(2,1fr)}
  .qds-training-product-index{grid-template-columns:repeat(2,1fr)}
  .qds-contact__actions{justify-content:flex-start}
  .qds-evidence-band__media img{margin-left:0;max-height:none}
}
@media(max-width:620px){
  .qds-content-grid>.qds-content-card,
  .qds-content-grid:has(>.qds-content-card:nth-child(5):last-child)>.qds-content-card,
  .qds-content-grid:has(>.qds-content-card:nth-child(4):last-child)>.qds-content-card{grid-column:span 12}
  .qds-process-grid,.qds-status-grid,.qds-training-product-index{grid-template-columns:1fr}
  .qds-process-grid>article{border-right:0;min-height:0}
  .qds-editorial-hero h1{font-size:clamp(32px,9vw,44px)}
  .qd-contact-layer__panel{padding:26px 20px 22px}
  .qd-contact-layer__qr{width:180px;height:180px}
  .hero-actions{display:grid;grid-template-columns:1fr}
  .hero-actions .btn{width:100%}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
  body.js .reveal{opacity:1;transform:none}
}

/* ---------- restart note under the stop section ------------------------- */
.qds-restart{margin-top:20px;border:1px solid rgba(255,255,255,.16);
  border-left:2px solid var(--qds-accent-soft);border-radius:var(--qds-radius);
  padding:20px 22px;display:grid;gap:8px;background:rgba(255,255,255,.02)}
.qds-restart b{font-family:var(--qds-serif);font-size:19px;color:var(--qds-cream)}
.qds-restart span{font-size:14.5px;line-height:1.85;color:#C2CDD1}

/* ---------- FDE terms list --------------------------------------------- */
.qds-terms{margin:20px 0 24px;display:grid;gap:0;border-top:1px solid var(--line)}
.qds-terms>div{display:grid;grid-template-columns:104px 1fr;gap:16px;
  padding:13px 0;border-bottom:1px solid var(--line);align-items:baseline}
.qds-terms dt{font-weight:700;font-size:14px;color:var(--ink);margin:0}
.qds-terms dd{margin:0;font-size:14.5px;line-height:1.8;color:var(--qds-muted)}
@media(max-width:620px){
  .qds-terms>div{grid-template-columns:1fr;gap:4px}
}


/* ---------- legacy gold on small text: 3.75-4.43 on paper, fails AA ------ */
:root{ --quiet-gold:#5A4419; }
.metric b,.metric span,.step small,.step h3,.download small,.download h3,
.breadcrumb a,.breadcrumb span,.priority-local-number,.priority-local-copy small,
.priority-local-arrow,.evidence-card b,.case-card .meta,.case-copy .label{
  color:#5A4419;
}
/* the same legacy classes sitting on an ink ground need the light gold instead */
.section.dark .metric b,.section.dark .step small,.section.dark .download small,
.section.dark .breadcrumb a,.section.dark .article-link,
.qds-section--dark .metric b,.qds-section--dark .step small,
.qds-section--dark .download small,.qds-section--dark .article-link,
.evidence-main .article-link,.cta .article-link,.page-hero .breadcrumb a,
.page-hero .breadcrumb span,
.fact-aside .article-link,.fact-aside a,.fact-aside b,.fact-aside small,
.hero .article-link,.hero a:not(.btn),.evidence-main a:not(.btn){
  color:#D3B478;
}
.case-copy .label{background:var(--navy);color:#F0D9A4}


/* ---------- site search (static index, no backend) ---------------------- */
.nav-search{background:transparent;border:1px solid rgba(255,255,255,.26);
  color:#C6D1D5;border-radius:var(--qds-radius);cursor:pointer;font:inherit;
  font-size:13px;padding:9px 13px;display:inline-flex;align-items:center;gap:7px;
  transition:border-color .16s var(--qd-ease),color .16s var(--qd-ease)}
.nav-search:hover{border-color:#fff;color:#fff}
.nav-search kbd{font:11px/1 ui-monospace,monospace;opacity:.7;
  border:1px solid currentColor;border-radius:3px;padding:2px 4px}
.qd-search[hidden]{display:none}
.qd-search{position:fixed;inset:0;z-index:130;display:grid;
  align-items:start;justify-items:center;padding:9vh 18px 18px}
.qd-search__backdrop{position:absolute;inset:0;background:rgba(8,10,11,.74);
  backdrop-filter:blur(3px)}
.qd-search__panel{position:relative;background:#FFFDF8;color:var(--ink);
  border-radius:var(--qds-radius);width:min(660px,100%);max-height:78vh;
  display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 2px 6px rgba(0,0,0,.16),0 30px 80px rgba(0,0,0,.34)}
.qd-search__bar{display:flex;align-items:center;gap:8px;padding:14px 14px 12px;
  border-bottom:1px solid var(--line)}
.qd-search__bar input{flex:1;border:0;background:transparent;font:inherit;
  font-size:16px;color:var(--ink);outline:none;min-width:0}
.qd-search__bar input::placeholder{color:#8E8A80}
.qd-search__x{border:0;background:transparent;font-size:24px;line-height:1;
  cursor:pointer;color:#7A756C;padding:3px 8px;border-radius:var(--qds-radius)}
.qd-search__x:hover{background:rgba(0,0,0,.06);color:var(--ink)}
.qd-search__meta{padding:9px 16px 0;font-size:12.5px;color:var(--qds-muted);min-height:1.2em}
.qd-search__results{list-style:none;margin:0;padding:8px;overflow:auto;flex:1}
.qd-search__results li{border-radius:var(--qds-radius)}
.qd-search__results li.is-active,.qd-search__results li:hover{background:#F1EDE3}
.qd-search__results a{display:grid;gap:3px;padding:11px 12px;text-decoration:none;
  color:var(--ink);grid-template-columns:58px 1fr;align-items:baseline}
.qd-search__results a b{font-size:15px;font-weight:600;grid-column:2}
.qd-search__results a>span:last-child{grid-column:2;font-size:12.5px;
  color:var(--qds-muted);line-height:1.6}
.qd-search__kind{grid-row:1/3;font:700 11px/1.5 ui-monospace,monospace;
  color:var(--qds-accent);letter-spacing:.06em}
/* an author display: value beats the hidden attribute's UA display:none,
   so the empty state stayed on screen next to real results. */
.qd-search__empty[hidden],.qd-contact-layer[hidden],.qd-search[hidden],
[hidden]{display:none!important}
.qd-search__empty{padding:16px 18px 20px;display:grid;gap:12px;justify-items:start}
.qd-search__empty p{margin:0;font-size:14.5px;line-height:1.75;color:var(--qds-muted)}
.qd-search__hints{display:flex;flex-wrap:wrap;gap:7px}
.qd-search__hint{border:1px solid var(--line);background:transparent;
  border-radius:999px;padding:6px 12px;font:inherit;font-size:12.5px;
  cursor:pointer;color:var(--qds-muted)}
.qd-search__hint:hover{border-color:var(--qds-accent);color:var(--qds-accent)}
@media(max-width:620px){
  .qd-search{padding:5vh 12px 12px}
  .qd-search__panel{max-height:88vh}
  .qd-search__bar input{font-size:16px}
  .qd-search__results a{grid-template-columns:1fr}
  .qd-search__kind{grid-row:auto;grid-column:1}
  .nav-search kbd{display:none}
}


/* ---------- demo hook: the one paragraph that proves the H1 ------------- */
.qds-demo-hook{border-left:2px solid var(--qds-accent);padding-left:16px;
  margin:14px 0 0;font-size:15px;line-height:1.85;color:var(--qds-muted)}
.qds-demo-hook b{color:var(--ink);font-weight:700}
.qds-section--dark .qds-demo-hook{border-left-color:var(--qds-accent-soft);color:#C2CDD1}
.qds-section--dark .qds-demo-hook b{color:var(--qds-cream)}


/* ---------- recently viewed (inside the search layer, localStorage only) -- */
.qd-search__clear{padding:8px 12px 4px;border-top:1px solid var(--line);margin-top:6px}
.qd-search__clear button{border:1px solid var(--line);background:transparent;
  border-radius:var(--qds-radius);padding:6px 11px;font:inherit;font-size:12.5px;
  cursor:pointer;color:var(--qds-muted)}
.qd-search__clear button:hover{border-color:var(--red,#87443C);color:#87443C}


/* ---------- overflow fixes found by the 154-page x 3-width scan ---------- */
/* wide tables must scroll inside their own box, never widen the page */
table{max-width:100%}
.privacy-table,.qds-prose table,.list-card table,main table{
  display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
/* long URLs and machine identifiers printed in copy */
main p,main li,main dd,main td,.qds-prose p,.qds-prose li{overflow-wrap:anywhere}
main a[href^="http"]{overflow-wrap:anywhere;word-break:break-word}


/* ---------- Safari needs -webkit-backdrop-filter ----------------------- */
.site-head{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
.site-head{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}


/* ---------- brand lockup overflows at 360 (found by the v2 scanner) ------ */
/* the mono sub-line "QIDIAN INTELLIGENT TECHNOLOGY" needs 99px in a 75px box */
/* the brand must never be the thing that gets squeezed - the row has room
   (91+38+184+gaps = 329 in a 331 shell), it was just flex distribution */
.brand{min-width:0;flex-shrink:0}
.brand div{min-width:0}
.nav-actions{flex-shrink:0}
.brand b{white-space:nowrap}
.brand span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:520px){
  .brand span{display:none}          /* keep the name, drop the sub-line */
  .brand img{width:34px;height:34px}
}
/* at 360 the row needs brand95 + menu36 + search + cta + gaps to fit in 360.
   Shrink the two buttons (touch height stays >=44px), never the brand. */
@media(max-width:400px){
  .nav{gap:8px;height:64px}
  .nav-actions{gap:6px}
  .nav-search{padding:10px 9px;font-size:12px}
  .nav-cta{padding:10px 11px;font-size:12px;letter-spacing:0}
  .menu{width:38px;height:38px}
  .brand img{width:30px;height:30px}
  .brand b{font-size:15px;letter-spacing:.06em}
}

/* ===== /QIDIAN_REFINE_V2 ===== */

/* card titles are now links; they must look exactly as they did before */
.qds-card-title-link{color:inherit;text-decoration:none;display:block}
.qds-card-title-link:hover{text-decoration:underline;text-underline-offset:3px}
.qds-card-title-link:focus-visible{outline:2px solid var(--qds-accent);
  outline-offset:3px;border-radius:2px}

/* "read the method, now check it holds up" - three onward doors */
.qds-next__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;
  margin-top:24px}
.qds-next__card{display:flex;flex-direction:column;gap:9px;padding:22px 20px;
  border:1px solid rgba(23,24,26,.14);background:#fff;text-decoration:none;
  color:inherit;transition:border-color .2s var(--qd-ease),
  transform .2s var(--qd-ease)}
.qds-next__card:hover{border-color:var(--qds-accent);transform:translateY(-2px)}
.qds-next__card:focus-visible{outline:2px solid var(--qds-accent);
  outline-offset:3px}
.qds-next__card b{font-size:17px;line-height:1.45}
.qds-next__card span{color:var(--qds-muted);font-size:14px;line-height:1.7;
  flex:1}
.qds-next__card em{font-style:normal;color:var(--qds-accent);font-size:13px;
  font-weight:700}
@media(max-width:820px){.qds-next__grid{grid-template-columns:1fr}}

/* Touch targets (WCAG 2.5.5 AAA, 44x44). The icons keep their visual size -
   only the hit area grows, via padding plus a transparent ::after that fills
   out any remaining gap. Covers the hamburger, search trigger, and every
   close button, because claiming AAA for one control and not the others
   would be false. */
@media (pointer: coarse), (max-width: 900px){
  .menu,.nav-search,.qd-search__x,.qd-contact-layer__x,
  [data-search-close],[data-contact-close]{
    position:relative;
    min-width:44px;min-height:44px;
  }
  .menu::after,.nav-search::after,.qd-search__x::after,
  .qd-contact-layer__x::after,
  [data-search-close]::after,[data-contact-close]::after{
    content:"";position:absolute;
    top:50%;left:50%;transform:translate(-50%,-50%);
    width:max(100%,44px);height:max(100%,44px);
  }
  /* the row is tight at 360px; claw the space back from the gaps, not from
     the brand, which was the earlier overflow cause */
  .nav{gap:6px}
  .nav-actions{gap:4px}
}


/* ═══════════════════════════════════════════════════════════════════════
   QIDIAN_SITE_SYSTEM_V4  ·  2026-08-22
   全站唯一口径。每个数都有出处，见 _preview/hero-v4.html 顶部注释。
   这一段最后加载，覆盖前面所有表。
   ═══════════════════════════════════════════════════════════════════════ */

:root{
  --q-night:#0A0A0F;
  --q-lift:#12121A;
  --q-ink:#EDEDF2;
  --q-dim:#9A9AA8;
  --q-faint:#6A6A78;
  --q-gold:#C8A96A;
  --q-coral:#E2603C;
  --q-hair:rgba(237,237,242,.08);
  --q-hair2:rgba(237,237,242,.15);
  --q-sans:-apple-system,"PingFang SC","Helvetica Neue",sans-serif;
  --q-mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,monospace;
  --q-ease:cubic-bezier(.25,.46,.45,.94);
  --q-exp:cubic-bezier(.16,1,.3,1);
  --q-t:.16s;
}

/* ── 一盏光：暗场区块统一挂一层，右下沉入暗部 ───────────────────── */
.page-hero,.qds-page-hero,.qds-dossier-hero,.qds-section--dark,
.qds-index-hero,.hero,.qds-workspace-hero{
  position:relative;
  isolation:isolate;
  overflow:hidden;
}
.page-hero::before,.qds-page-hero::before,.qds-dossier-hero::before,
.qds-index-hero::before,.hero::before,.qds-workspace-hero::before{
  content:"";position:absolute;
  top:-40%;left:-10%;width:66%;height:170%;
  background:linear-gradient(158deg,
    rgba(255,242,220,.11) 0%,
    rgba(226,196,140,.06) 22%,
    rgba(160,134,90,.024) 44%,
    transparent 62%);
  transform:rotate(-8deg);
  filter:blur(52px);
  pointer-events:none;z-index:0;
}
.page-hero::after,.qds-page-hero::after,.qds-dossier-hero::after,
.qds-index-hero::after,.hero::after,.qds-workspace-hero::after{
  content:"";position:absolute;inset:0;
  background:radial-gradient(120% 90% at 84% 98%,
    rgba(0,0,0,.55) 0%,rgba(0,0,0,.22) 44%,transparent 74%);
  pointer-events:none;z-index:0;
}
.page-hero > *,.qds-page-hero > *,.qds-dossier-hero > *,
.qds-index-hero > *,.hero > *,.qds-workspace-hero > *{
  position:relative;z-index:1;
}

/* ── 中文巨字：实测 stripe.com/cn 是 48px / 400 / −0.96px ──────────
   原来全站用 80px 衬线，中文在那个字号下发糊，且三行铺满整屏没有留白 */
.page-hero h1,.qds-page-hero h1,.qds-dossier-hero h1,
.qds-index-hero h1,.hero h1,.qds-workspace-hero h1,
h1.qds-page-title,body > main h1:first-of-type{
  font-family:var(--q-sans) !important;
  font-size:clamp(30px,4.1vw,54px) !important;
  font-weight:500 !important;
  line-height:1.26 !important;
  letter-spacing:-.022em !important;
  max-width:20em;
}

/* 区块标题跟着降一档，保持层级但不再压垮版面 */
.qds-section h2,.section h2,.qds-section-head h2{
  font-family:var(--q-sans) !important;
  font-size:clamp(24px,2.6vw,36px) !important;
  font-weight:500 !important;
  line-height:1.34 !important;
  letter-spacing:-.016em !important;
}

/* ── 适老化下限：正文 ≥14px、辅助 ≥12px、行高 ≥1.7 ──────────────── */
body,p,li,dd,dt,td,th{font-family:var(--q-sans)}
p,li,dd{line-height:1.8}
.eyebrow,.qds-eyebrow,.platform-kicker,.resource-label,
small,.meta,.caption,figcaption{
  font-family:var(--q-mono);
  font-size:12px !important;
  letter-spacing:.15em;
  text-transform:uppercase;
}

/* ── 过渡：实测 linear.app 全站统一这一条 ────────────────────────── */
a,button,.btn,.card,.case-card,.choice,.qds-next__card,.qds-card-title-link{
  transition:color var(--q-t) var(--q-ease),
             background-color var(--q-t) var(--q-ease),
             border-color var(--q-t) var(--q-ease),
             transform var(--q-t) var(--q-ease),
             box-shadow var(--q-t) var(--q-ease) !important;
}

/* ── 卡片降级成发丝线分隔：真高级第 6 条「不铺格子」 ───────────── */
.case-card,.demo-card,.qds-content-card{
  border-radius:0 !important;
  box-shadow:none !important;
}
.case-card:hover,.demo-card:hover,.qds-next__card:hover{
  transform:translateY(-2px);
  border-color:var(--q-hair2) !important;
}

/* ── 滚动进场 ────────────────────────────────────────────────────
   🔴 默认必须可见。把 opacity:0 当默认态是事故：观察器不回调（后台标签、
   JS 被挡、IO 不触发）整页就是白的 —— 2026-08-19 已经出过一次。
   只有 JS 真的跑起来（body.q-js）才允许藏，且 3 秒兜底全部放出来。 */
@keyframes qUp{
  from{opacity:0;transform:translateY(18px)}
  to{opacity:1;transform:none}
}
.q-rise{opacity:1}                     /* 默认可见 */
body.q-js .q-rise{opacity:0}           /* JS 在跑才藏 */
body.q-js .q-rise.q-in{animation:qUp .6s var(--q-exp) forwards}
body.q-failsafe .q-rise{opacity:1 !important;transform:none !important;
  animation:none !important}           /* 3 秒兜底 */

@media(prefers-reduced-motion:reduce){
  .q-rise,body.q-js .q-rise{opacity:1;transform:none;animation:none}
}

/* ── 清掉和新光效打架的旧装饰 ──────────────────────────────────── */
.qds-index-hero::before,.qds-index-hero::after{
  /* 旧的菱形轮廓 / 竖切线由伪元素画，现在这两个伪元素归光效用 */
  background-image:none;
}
.qds-index-hero > .qds-hero-deco,.qds-hero-diamond,
.qds-index-hero [class*="deco"]{display:none !important}


/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_HERO_FOLD  ·  2026-08-22
   首屏：左边说主张，右边同一屏就在做这件事。
   进场一律用 CSS 动画，不用观察器——样式表加载了动画就跑，
   不存在「观察器没回调所以永远是空的」那种状态。
   ═══════════════════════════════════════════════════════════════════ */

.qhero{
  position:relative;
  display:flex;align-items:center;
  min-height:calc(100svh - var(--qds-nav-height,76px));
  padding-block:clamp(40px,6vh,76px);
  background:var(--q-night,#0A0A0F) !important;
  color:var(--q-ink,#EDEDF2);
  overflow:hidden;isolation:isolate;
}
/* 一盏光：斜切进来，右下沉入暗部 */
.qhero::before{
  content:"";position:absolute;
  top:-46%;left:-16%;width:58%;height:184%;
  background:
    linear-gradient(163deg,
      rgba(255,246,228,.26) 0%,
      rgba(246,224,182,.155) 15%,
      rgba(210,175,120,.072) 33%,
      rgba(150,124,84,.028) 51%,
      transparent 66%);
  transform:rotate(-11deg);filter:blur(38px);
  pointer-events:none;z-index:0;
  opacity:0;animation:qBeam 1.5s cubic-bezier(.16,1,.3,1) .05s forwards;
}
/* 光落下来的那一摊暖，压在标题后面 */
.qhero__grid::before{
  content:"";position:absolute;z-index:-1;pointer-events:none;
  left:-6%;top:4%;width:62%;height:74%;
  background:radial-gradient(58% 52% at 26% 34%,
    rgba(255,238,206,.105) 0%,
    rgba(206,172,116,.042) 42%,
    transparent 72%);
  filter:blur(46px);
  opacity:0;animation:qBeam 1.8s cubic-bezier(.16,1,.3,1) .2s forwards;
}
.qhero::after{
  content:"";position:absolute;inset:0;
  background:radial-gradient(122% 92% at 86% 100%,
    rgba(0,0,0,.6) 0%,rgba(0,0,0,.24) 45%,transparent 75%);
  pointer-events:none;z-index:0;
}
@keyframes qBeam{
  from{opacity:0;transform:rotate(-8deg) translateX(-40px)}
  to{opacity:1;transform:rotate(-8deg)}
}

.qhero__grid{
  position:relative;z-index:1;
  display:grid;
  grid-template-columns:minmax(0,1.02fr) minmax(384px,.94fr);
  gap:clamp(36px,4.6vw,78px);
  align-items:center;
}

.qhero .eyebrow{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;
  margin-bottom:22px;color:var(--q-dim,#9A9AA8);
}
.qhero .eyebrow i{
  font-style:normal;color:var(--q-gold,#C8A96A);
  font-family:var(--q-mono);letter-spacing:.04em;text-transform:none;
}

.qhero h1{
  margin:0 0 26px;
  font-family:var(--q-sans) !important;
  font-size:clamp(36px,4.5vw,64px) !important;
  font-weight:500 !important;
  line-height:1.16 !important;
  letter-spacing:-.024em !important;
  max-width:none;
}
.qhero h1 .qlit{
  background:linear-gradient(96deg,#F4E9D2 0%,var(--q-gold,#C8A96A) 62%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:var(--q-gold,#C8A96A);
}
.qhero__lede{
  max-width:29em;margin:0 0 34px;
  font-size:clamp(15px,1.15vw,17px);line-height:1.85;
  color:var(--q-dim,#9A9AA8);
}
.qhero__lede b{color:var(--q-ink,#EDEDF2);font-weight:500}

.qhero .hero-actions{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.qhero__lnk{
  display:inline-flex;align-items:center;gap:8px;
  min-height:44px;color:var(--q-dim,#9A9AA8);text-decoration:none;
  font-size:15px;
}
.qhero__lnk:hover{color:var(--q-ink,#EDEDF2)}
.qhero__lnk span{transition:transform .16s cubic-bezier(.25,.46,.45,.94)}
.qhero__lnk:hover span{transform:translateX(4px)}

/* ── 右侧：真实运行记录 ─────────────────────────────────────────── */
.qterm{
  position:relative;overflow:hidden;
  background:var(--q-lift,#12121A);
  border:1px solid rgba(237,237,242,.09);
  box-shadow:0 2px 5px rgba(0,0,0,.34),0 26px 64px rgba(0,0,0,.46);
}
.qterm__scan{
  position:absolute;left:0;right:0;top:51px;height:1px;z-index:2;
  background:linear-gradient(90deg,transparent,rgba(200,169,106,.85),transparent);
  transform:scaleX(0);transform-origin:left;
  animation:qScan 1.1s cubic-bezier(.16,1,.3,1) .5s forwards;
}
@keyframes qScan{
  to{transform:scaleX(1);opacity:0}
}
.qterm__bar{
  display:flex;align-items:center;gap:13px;height:51px;padding:0 19px;
  border-bottom:1px solid rgba(237,237,242,.09);
}
.qterm__led{
  width:7px;height:7px;border-radius:50%;flex:0 0 7px;
  background:var(--q-coral,#E2603C);
  animation:qLed 2.4s ease-in-out infinite;
}
@keyframes qLed{
  0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(226,96,60,.42)}
  50%{opacity:.55;box-shadow:0 0 0 5px rgba(226,96,60,0)}
}
.qterm__lbl{
  font-family:var(--q-mono);font-size:11.5px;letter-spacing:.13em;
  color:var(--q-dim,#9A9AA8);text-transform:uppercase;
}
.qterm__sep{color:rgba(237,237,242,.16)}
.qterm__rid{
  margin-left:auto;font-family:var(--q-mono);font-size:11.5px;
  letter-spacing:.05em;color:var(--q-faint,#6A6A78);
}

.qterm__main{padding:26px 22px 24px}
.qterm__role{
  display:flex;align-items:center;gap:8px;margin-bottom:9px;
  font-family:var(--q-mono);font-size:11px;letter-spacing:.15em;
  color:var(--q-faint,#6A6A78);text-transform:uppercase;
}
.qterm__role i{
  width:4px;height:4px;border-radius:50%;flex:0 0 4px;
  background:var(--q-faint,#6A6A78);
}
.qterm__ask{
  margin:0 0 22px;font-size:clamp(17px,1.35vw,20px);line-height:1.6;
  letter-spacing:-.01em;color:var(--q-ink,#EDEDF2);
}
.qterm__ans{
  position:relative;margin:0;padding-left:20px;
  font-size:15px;line-height:1.82;color:var(--q-dim,#9A9AA8);
}
.qterm__ans::before{
  content:"";position:absolute;left:0;top:.3em;bottom:.2em;width:2px;
  background:var(--q-coral,#E2603C);
  transform:scaleY(0);transform-origin:top;
  animation:qGrow .7s cubic-bezier(.16,1,.3,1) .75s forwards;
}
@keyframes qGrow{
  to{transform:scaleY(1)}
}
.qterm__ans b{color:var(--q-ink,#EDEDF2);font-weight:500}
.qterm__stamp{
  display:inline-flex;align-items:center;margin-top:20px;
  padding:7px 14px;border:1px solid rgba(226,96,60,.34);
  font-family:var(--q-mono);font-size:11.5px;letter-spacing:.11em;
  color:var(--q-coral,#E2603C);
}

.qterm__side{
  padding:22px;border-top:1px solid rgba(237,237,242,.09);
  background:rgba(0,0,0,.2);
}
.qterm__h{
  margin:0 0 4px !important;
  font-family:var(--q-mono) !important;
  font-size:11px !important;font-weight:500 !important;
  letter-spacing:.15em !important;text-transform:uppercase;
  color:var(--q-faint,#6A6A78) !important;line-height:1.4 !important;
}
.qterm__chk{
  display:flex;gap:10px;padding:12px 0;
  border-bottom:1px solid rgba(237,237,242,.09);
}
.qterm__chk:last-of-type{border-bottom:0}
.qterm__mk{
  flex:0 0 16px;height:16px;margin-top:2px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  border:1px solid rgba(200,169,106,.5);color:var(--q-gold,#C8A96A);
  font-size:9px;line-height:1;
}
.qterm__chk.is-no .qterm__mk{
  border-color:rgba(226,96,60,.5);color:var(--q-coral,#E2603C);
}
.qterm__tx{font-size:13px;line-height:1.62;color:var(--q-dim,#9A9AA8)}
.qterm__tx b{
  display:block;margin-bottom:2px;
  color:var(--q-ink,#EDEDF2);font-weight:500;font-size:13.5px;
}
.qterm__foot{
  margin:16px 0 0;padding-top:14px;
  border-top:1px solid rgba(237,237,242,.09);
  font-size:12.5px;line-height:1.7;color:var(--q-faint,#6A6A78);
}
.qterm__foot a{
  color:var(--q-gold,#C8A96A);text-decoration:none;
  border-bottom:1px solid rgba(200,169,106,.34);
}
.qterm__foot a:hover{border-color:var(--q-gold,#C8A96A)}

/* 团队现场照搬到「交到了哪一步」那一节，在那里它才是证据 */
.qds-proof-media{margin:0 0 44px}
.qds-proof-media img{width:100%;height:auto;display:block}
.qds-proof-media figcaption{
  margin-top:11px;font-family:var(--q-mono);font-size:11.5px;
  letter-spacing:.05em;color:var(--q-faint,#6A6A78);
}

/* 进场：纯 CSS，加载即跑 */
@keyframes qUpIn{
  from{opacity:0;transform:translateY(18px)}
  to{opacity:1;transform:none}
}
.qup{opacity:0;animation:qUpIn .7s cubic-bezier(.16,1,.3,1) forwards}
.q1{animation-delay:.06s}
.q2{animation-delay:.16s}
.q3{animation-delay:.26s}
.q4{animation-delay:.36s}

@media(max-width:1080px){
  .qhero__grid{grid-template-columns:1fr;gap:40px}
  .qhero{min-height:0}
}
@media(prefers-reduced-motion:reduce){
  .qup,.qhero::before{opacity:1;transform:none;animation:none}
  .qterm__scan{display:none}
  .qterm__led{animation:none}
  .qterm__ans::before{transform:none;animation:none}
}


/* ── 首屏收尾 ─────────────────────────────────────────────────────
   导航条原本刷 rgba(21,23,20,.96)，压在 #0A0A0F 的 hero 上有一道接缝。 */
.qds-nav,.site-nav,header.nav,body > header{
  background:rgba(10,10,15,.96) !important;
}

/* 左栏底部那条事实线：数字全部数得出来，不是形容词
   industry/ 15 · service/ 18 · insights/ 53 · demo-center/ 4 */
.qhero__facts{
  display:flex;flex-wrap:wrap;gap:0 34px;
  margin-top:clamp(38px,5.5vh,64px);padding-top:18px;
  border-top:1px solid rgba(237,237,242,.09);
}
.qhero__facts div{display:flex;align-items:baseline;gap:8px}
.qhero__facts b{
  font-family:var(--q-mono);font-size:19px;font-weight:500;
  letter-spacing:-.01em;color:var(--q-ink,#EDEDF2);
}
.qhero__facts span{
  font-size:12.5px;letter-spacing:.02em;color:var(--q-faint,#6A6A78);
}
@media(max-width:1080px){
  .qhero__facts{gap:0 24px}
}


/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_DARK_GROUND  ·  2026-08-22
   一块地，从头守到尾。反转只留两处事件：首屏开场、页脚收束。
   口径来自我们自己那份标准，不是现编的：
     底 #0A0A0F · 抬起 #12121A · 正文 #EDEDF2 · 次要 #9A9AA8 · 金 #C8A96A
   米色只剩一个角色：主按钮的底。整屏唯一的亮块。
   ═══════════════════════════════════════════════════════════════════ */

:root{
  /* 地与面 */
  --paper:#0A0A0F;      --paper2:#101017;
  --q-paper:#0A0A0F;    --q-paper-2:#101017;
  --qds-paper:#0A0A0F;  --qds-paper-strong:#101017;
  --eco-paper:#0A0A0F;
  --qds-ink:#0A0A0F;

  /* 字 */
  --ink:#EDEDF2;        --q-ink:#EDEDF2;      --qds-white:#EDEDF2;
  --muted:#9A9AA8;      --q-muted:#9A9AA8;    --qds-muted-dark:#9A9AA8;

  /* 线 */
  --line:rgba(237,237,242,.09);
  --q-line:rgba(237,237,242,.09);
  --line-dark:rgba(237,237,242,.09);
}

html,body{background:#0A0A0F;color:#EDEDF2}

/* 所有整幅区块回到同一块地 */
.qds-section,.qds-section--dark,.qds-section--strong,
.premium-intro,.activity-stream,.member-route,
section[class*="qds-"],main > section{
  background:transparent;
  color:#EDEDF2;
}
/* 需要和地拉开一点点的，用「抬起」，不是用反转 */
.qds-section--strong,.member-route{
  background:#101017;
  border-top:1px solid rgba(237,237,242,.07);
  border-bottom:1px solid rgba(237,237,242,.07);
}

/* 卡片：抬起面 + 发丝线，不投影不圆角（真高级第6条：不铺格子） */
.qds-content-card,.case-card,.demo-card,.case-feature,.brief-box,
.case-facts div,.qr{
  background:#12121A !important;
  border:1px solid rgba(237,237,242,.09) !important;
  color:#EDEDF2;
}
.qds-content-card h3,.case-card h3,.demo-card h3{color:#EDEDF2}
.qds-content-card p,.case-card p,.demo-card p{color:#9A9AA8}
.qds-content-card small,.case-card small,.demo-card small{color:#6A6A78}

/* 浮层（搜索、联系）同样落到抬起面上 */
.qd-contact-layer__panel,.qd-search__panel{
  background:#12121A !important;color:#EDEDF2 !important;
  border:1px solid rgba(237,237,242,.11);
}
.qd-search__results li.is-active,.qd-search__results li:hover{
  background:#1A1A24 !important;
}
.qd-contact-layer__panel input,.qd-contact-layer__panel textarea,
.qd-contact-layer__panel select,.qd-search__panel input{
  background:#0A0A0F;color:#EDEDF2;
  border:1px solid rgba(237,237,242,.16);
}
.qd-contact-layer__panel ::placeholder,.qd-search__panel ::placeholder{
  color:#6A6A78;
}

/* 正文里的字，跟着地走 */
.qds-section h2,.qds-section h3,.qds-section h4,
.qds-section-head h2,article h1,article h2,article h3{color:#EDEDF2}
.qds-section p,.qds-section li,article p,article li,
.qds-section-head p{color:#9A9AA8}
.qds-section p b,.qds-section li b,article p b,article strong{color:#EDEDF2}
.eyebrow,.qds-eyebrow{color:#6A6A78}

/* 表格、引用、分隔 */
table,th,td{border-color:rgba(237,237,242,.09) !important;color:#EDEDF2}
th{background:#101017;color:#EDEDF2}
blockquote{border-left-color:rgba(200,169,106,.4);color:#9A9AA8}
hr{border-color:rgba(237,237,242,.09)}

/* 链接 */
a{color:inherit}
article a,.qds-section p a,.qds-section li a{
  color:#C8A96A;
  border-bottom:1px solid rgba(200,169,106,.32);
  text-decoration:none;
}
article a:hover,.qds-section p a:hover{border-bottom-color:#C8A96A}

/* 🔴 米色只剩这一个角色：主按钮。整屏唯一的亮块，别把它也刷黑了 */
.btn.gold,.nav-cta,.qds-btn--primary{
  background:#EDE9E1 !important;color:#0A0A0F !important;
  border-color:transparent !important;
}
.btn.gold:hover,.nav-cta:hover,.qds-btn--primary:hover{
  background:#FFFDF6 !important;color:#0A0A0F !important;
}
/* 次按钮：发丝线，不抢 */
.btn.ghost,.qds-btn--ghost,.btn:not(.gold):not(.ghost){
  background:transparent;color:#EDEDF2;
  border:1px solid rgba(237,237,242,.22);
}
.btn.ghost:hover,.qds-btn--ghost:hover{
  border-color:rgba(237,237,242,.44);
}

/* 图片在暗场里别硬切白边 */
figure img,article img{
  border:1px solid rgba(237,237,242,.07);
}
figcaption{color:#6A6A78}


/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_DARK_LEFTOVERS  ·  2026-08-22
   换地之后对比度闸抓到的两类漏网，按闸给的实测值修。
   ═══════════════════════════════════════════════════════════════════ */

/* A · 米色时代的「安静金」在暗场里等于隐形（实测 2.14:1，需 4.5） */
:root{
  --eb:#8A8A98;
  --quiet-gold:#C8A96A;
  --gold:#C8A96A;
  --qds-gold:#C8A96A;
  /* --gold2 不动：它是主按钮的米色底 */
}
.download,.evidence-card,.qds-index-hero{--eb:#8A8A98}
.eyebrow,.qds-eyebrow{color:#8A8A98}
.qds-content-card small,.qds-process-grid small{color:#8A8A98}

/* 面包屑：原来靠深金，现在靠次要字色 + 金色当前项 */
.breadcrumb a,.qds-breadcrumb a,nav[aria-label*="面包屑"] a,
nav[aria-label*="readcrumb"] a{color:#9A9AA8}
.breadcrumb a:hover,.qds-breadcrumb a:hover{color:#EDEDF2}

a.article-link{color:#EDEDF2}
a.article-link:hover{color:#C8A96A}
div.meta,.meta{color:#8A8A98}

/* B · 还在刷浅底的容器（实测 rgb(251,249,245) / 纯白，1.11:1） */
article,details,article.list-card,a.demo-open,
div.notice-panel,a.qds-next__card,p.metric-note,
.list-card,.notice-panel,.qds-next__card{
  background:#12121A !important;
  border-color:rgba(237,237,242,.09) !important;
  color:#EDEDF2;
}
article > p,details > p,.list-card p,.notice-panel p,.qds-next__card p,
p.metric-note{color:#9A9AA8}
article h2,article h3,article h4,details summary,
.list-card h3,.notice-panel h3,.qds-next__card h3{color:#EDEDF2}
details summary{cursor:pointer}
details summary::marker{color:#6A6A78}

/* 这些是版心里的长文，不该被当成卡片再套一层底 */
article.qds-article,article.prose,main > article{
  background:transparent !important;border:0 !important;
}


/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_LEGACY_COLOR_FIX  ·  2026-08-22
   为米色地调暗过的三族颜色，在暗场里全部低于 AA。按闸给的实测值修。
   ═══════════════════════════════════════════════════════════════════ */

:root{--qds-muted:#9A9AA8}

/* 数字和点睛处给金，标题给正文色，标签给次要色 —— 不是一律刷金 */
.metric b,.evidence-card b,.priority-local-number,
.qds-index-hero__stamp{color:#C8A96A}

.step h3,.download h3{color:#EDEDF2}

.metric span,.case-card .meta{color:#9A9AA8}
.step small,.download small,.priority-local-copy small{color:#8A8A98}
.priority-local-arrow{color:#6A6A78}

.breadcrumb a,.qds-breadcrumb a{color:#9A9AA8}
.breadcrumb a:hover,.qds-breadcrumb a:hover{color:#EDEDF2}
.breadcrumb span,.qds-breadcrumb span{color:#6A6A78}

/* 53 篇洞察的正文 —— 全站读得最多的字 */
.article-body p,.article-body li,.profile-copy p{color:#EDEDF2}
.article-body h2,.article-body h3,.article-body h4{color:#EDEDF2}
.article-body blockquote{color:#9A9AA8}
.article-body small,.article-body figcaption{color:#8A8A98}

/* 标签块自带深底，底色也是米色时代的，一起换 */
.case-copy .label{background:#1A1A24;color:#C8A96A}


/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_REMAINING_SURFACES  ·  2026-08-22
   最后一批米色时代的面，逐个点名。半透明白（.66/.65/.62/.55）在暗底上
   合成出来是浅灰，字压上去照样不合格，所以必须换掉而不是调透明度。
   ═══════════════════════════════════════════════════════════════════ */

.notice-panel,.method-grid article,.faq-list details,
.entity-grid a,.download-grid a,.media-card,
.status-rail,.access-levels,.locked-preview,.empty-state,
.platform-note,.platform-quick a,.member-session-note,
.status-step,.access-level,.module-card,.role-card{
  background:#12121A !important;
  color:#EDEDF2 !important;
  border-color:rgba(237,237,242,.09) !important;
}
.entity-grid a:hover,.download-grid a:hover,.platform-quick a:hover{
  background:#1A1A24 !important;
  border-color:rgba(237,237,242,.2) !important;
}
.entity-grid h3,.download-grid h3,.media-card h3,
.status-step h3,.access-level h3,.notice-panel h3{color:#EDEDF2 !important}
.entity-grid p,.download-grid p,.media-card p,
.status-step p,.access-level p,.notice-panel p,.empty-state{color:#9A9AA8 !important}
.entity-grid span,.download-grid span,.status-step b{color:#C8A96A !important}

/* 受控内容那枚角标，原本米黄底深棕字 */
.locked-preview:after,.member-session-note{
  background:#1A160E !important;color:#D9BE86 !important;
  border-color:rgba(200,169,106,.34) !important;
}
.member-session-note span{color:#C6C6D2 !important}
.preview-lines i{background:rgba(237,237,242,.1) !important}
.platform-note{border-left-color:#C8A96A !important;color:#9A9AA8 !important}
.empty-state{border-color:rgba(237,237,242,.18) !important}

/* 我自己那个 --q-faint 定得太暗：实测 3.71:1，低于 4.5 */
:root{--q-faint:#8A8A98}
.qhero__facts span,.breadcrumb span,.qds-breadcrumb span,
.qterm__foot,.qterm__rid,figcaption,.qds-proof-media figcaption{
  color:#8A8A98;
}
/* 不承载文字的地方才留原来那档更暗的灰 */
.qterm__role,.qterm__role i,.qterm__mk{color:#7E7E8C}


/* 长文里的列表块原本刷 rgba(255,255,255,.65)，在暗底上合成出浅灰，
   金色链接压上去实测 2.25:1（需 4.5）。2026-08-22 */
.article-body ul,.article-body ol,.article-body table,
.article-body .callout,.article-body aside{
  background:transparent !important;
  border:1px solid rgba(237,237,242,.09);
  color:#EDEDF2;
}
.article-body ul a,.article-body ol a{color:#C8A96A}


/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_ANSWER_CAPSULE  ·  2026-08-22
   57 个 GEO 块散在 19 个页面上，之前没有任何样式，所以整条出血、
   文字贴死在 x=0。给它版心，并做成文章开头的「答案胶囊」。
   ═══════════════════════════════════════════════════════════════════ */

section[data-marker^="QIDIAN_"]{
  width:min(1320px,92vw);
  margin:0 auto;
  padding:26px 28px 24px;
  border:1px solid rgba(237,237,242,.09);
  border-left:2px solid var(--q-gold,#C8A96A);
  background:#12121A;
}
main > section[data-marker^="QIDIAN_"]:first-child{margin-top:34px}
section[data-marker^="QIDIAN_"] + section[data-marker^="QIDIAN_"]{
  margin-top:14px;
}

section[data-marker^="QIDIAN_"] h2,
section[data-marker^="QIDIAN_"] h3{
  margin:0 0 14px !important;
  font-family:var(--q-sans) !important;
  font-size:clamp(17px,1.35vw,20px) !important;
  font-weight:500 !important;
  line-height:1.5 !important;
  letter-spacing:-.012em !important;
  color:#EDEDF2 !important;
}
section[data-marker^="QIDIAN_"] p{
  margin:0 0 10px;
  font-size:14.5px;line-height:1.82;color:#9A9AA8;
}
section[data-marker^="QIDIAN_"] p:last-child{margin-bottom:0}
section[data-marker^="QIDIAN_"] strong{
  display:inline-block;margin-right:6px;
  font-family:var(--q-mono);font-size:11px;font-weight:500;
  letter-spacing:.13em;text-transform:uppercase;
  color:#7E7E8C;
}
section[data-marker^="QIDIAN_"] a{
  color:#C8A96A;text-decoration:none;
  border-bottom:1px solid rgba(200,169,106,.32);
}
section[data-marker^="QIDIAN_"] a:hover{border-bottom-color:#C8A96A}
section[data-marker^="QIDIAN_"] ul,
section[data-marker^="QIDIAN_"] ol{
  margin:10px 0 0;padding-left:1.2em;
  font-size:14px;line-height:1.8;color:#9A9AA8;
}

@media(max-width:680px){
  section[data-marker^="QIDIAN_"]{padding:20px 18px 18px}
}


/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_LAYOUT_FIX  ·  2026-08-22
   ═══════════════════════════════════════════════════════════════════ */

/* 1 · 那个 45° 描边方块：覆写伪元素必须把旧规则设过的属性全部收掉，
       只改 background/inset 的话 border、transform、width 会穿透过来。 */
.page-hero::after,.qds-page-hero::after,.qds-dossier-hero::after,
.qds-index-hero::after,.hero::after,.qds-workspace-hero::after,
.qds-editorial-hero::after,.qds-happening-hero::after,
.premium-hero-brand::after{
  border:0 !important;
  transform:none !important;
  width:auto !important;height:auto !important;
  aspect-ratio:auto !important;
  inset:0 !important;
}
.qds-happening-hero::after,.premium-hero-brand::after{
  background:radial-gradient(120% 90% at 86% 100%,
    rgba(0,0,0,.55) 0%,rgba(0,0,0,.22) 45%,transparent 75%) !important;
}
/* 那几条 4% 的竖网格线也一起收掉，它们只是噪点 */
.qds-editorial-hero::before,.premium-hero-brand::before{
  background-image:none !important;
}

/* 2 · .section-head 是两列网格却塞了三个孩子，眉标占了第一列、
       标题被挤到第二列。显式指定位置。 */
.section-head{align-items:start}
.section-head > .eyebrow,.section-head > .qds-eyebrow{
  grid-column:1;grid-row:1;margin-bottom:14px;
}
.section-head > h2{grid-column:1;grid-row:2;margin:0}
.section-head > p{grid-column:2;grid-row:1 / span 2;align-self:start}
.section-head > p ~ p{grid-row:auto}

@media(max-width:1000px){
  .section-head > .eyebrow,.section-head > .qds-eyebrow,
  .section-head > h2,.section-head > p{
    grid-column:1;grid-row:auto;
  }
}


/* 跨行的说明文字会把第一行撑高，于是眉标和标题之间裂开一道空。
   把第一行钉死在眉标自己的高度上，剩下的交给第二行。2026-08-22 */
.section-head,.qds-section-head{
  grid-template-rows:min-content auto;
  align-content:start;
}
.section-head > .eyebrow,.section-head > .qds-eyebrow{
  align-self:start;margin-bottom:0;
}
.section-head > h2{align-self:start;margin-top:16px}
.section-head > p{margin-top:0}


/* gap:7vw 同时给了行和列，1440 宽下行间距就是 100px —— 眉标和标题
   之间那道空是这么来的，不是行高算错。行列分开给。2026-08-22 */
.section-head,.qds-section-head{
  column-gap:clamp(40px,6vw,96px);
  row-gap:0;
}
.section-head > h2,.qds-section-head > h2{margin-top:14px}


/* 阅读栏不该是卡片：它是版心本身，直接坐在地上。
   右侧边栏才是那个被抬起来的东西。2026-08-22 */
.article-body,article.article-body,.article-layout > .article-body,
.profile-copy,.article-main{
  background:transparent !important;
  border:0 !important;
  padding-left:0 !important;padding-right:0 !important;
}
.article-body > h2:first-child{margin-top:0}
.article-aside,.article-side,.evidence-side{
  background:#12121A;
  border:1px solid rgba(237,237,242,.09);
  padding:26px 24px;
}


/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_SCAN_FIXES  ·  2026-08-22
   40 页 × 3 宽体检的收口。
   ═══════════════════════════════════════════════════════════════════ */

/* 🔴 我自己砸的：--qds-ink / --qds-white 既当文字色又当背景色，
   我照背景改了，于是标题和按钮变成 #0A0A0F 压在 #0A0A0F 上 = 1:1 隐形。
   token 认回文字这一职，用它当底的两处单独写死。 */
:root{
  --qds-ink:#EDEDF2;
  --qds-white:#EDEDF2;
}
.qds-section--dark{background:transparent !important}
figure.qds-activity-photo,.qds-activity-photo{
  background:#12121A !important;
  border:1px solid rgba(237,237,242,.09);
}
.qds-activity-photo b{color:#EDEDF2 !important}
.qds-activity-photo span,.qds-activity-photo figcaption{color:#9A9AA8 !important}

/* 这两页的标题和幽灵按钮跟着回到正文色 */
.page-hero h1,.page-hero p,.page-hero .eyebrow,.page-hero span,
h1,h2,h3,h4{color:#EDEDF2}
.btn.ghost,a.btn.ghost{color:#EDEDF2 !important}
.eyebrow,.qds-eyebrow{color:#8A8A98 !important}

/* member.css / 其他表里剩下的浅面 */
.gate-card,.registration-contact,p.lead,.lead,
.member-panel,.member-card{
  background:#12121A !important;
  border-color:rgba(237,237,242,.09) !important;
  color:#EDEDF2 !important;
}
.gate-card h2,.gate-card h3,.registration-contact h3{color:#EDEDF2 !important}
.gate-card p,.gate-card b,.registration-contact p,p.lead{color:#C6C6D2 !important}

/* bleed · main 里没有版心的裸块，文字直接贴到视口边上 */
main > h1,main > h2,main > h3,main > p,main > ul,main > ol,main > dl,
main > div.eyebrow,main > article,main > figure,main > blockquote,
main > section:not([class]) > *,
section.panel > *,section.panel{
  width:min(1320px,92vw);
  margin-left:auto;margin-right:auto;
}
section.panel{padding-block:clamp(48px,6vw,84px)}
section.panel > *{width:100%}

/* tiny · 我们自己的下限是正文 ≥14px、辅助 ≥12px（客户是 40-55 岁的老板） */
p,li,dd,td{font-size:max(14px,1em)}
.qterm__foot,.qterm__tx,.qds-content-card p,.case-card p{font-size:14px}
.metric span,.step p,.download span,.case-facts span{font-size:14px}


/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_LIVE_DEMO  ·  2026-08-22
   首屏右侧不再是一张「演示的照片」，而是那套判断本身，能点。
   纵深靠面板背后那盏光，不靠描边。
   ═══════════════════════════════════════════════════════════════════ */

.qdemo{
  position:relative;isolation:isolate;
  background:linear-gradient(168deg,#15151F 0%,#101018 62%,#0D0D14 100%);
  border:1px solid rgba(237,237,242,.1);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.045),
    0 2px 6px rgba(0,0,0,.4),
    0 34px 80px rgba(0,0,0,.5);
}
/* 面板背后的光，溢出边界，所以它是浮着的不是画上去的 */
.qdemo__glow{
  position:absolute;z-index:-1;
  inset:-16% -10% -22% -12%;
  background:
    radial-gradient(52% 44% at 26% 12%,rgba(200,169,106,.2) 0%,transparent 68%),
    radial-gradient(60% 50% at 84% 88%,rgba(120,104,180,.13) 0%,transparent 70%);
  filter:blur(56px);
  opacity:0;animation:qGlow 1.6s cubic-bezier(.16,1,.3,1) .25s forwards;
}
@keyframes qGlow{
  to{opacity:1}
}

.qdemo__bar{
  display:flex;align-items:center;gap:12px;height:50px;padding:0 18px;
  border-bottom:1px solid rgba(237,237,242,.08);
}
.qdemo__led{
  width:7px;height:7px;border-radius:50%;flex:0 0 7px;
  background:#5BC98E;animation:qLed 2.4s ease-in-out infinite;
}
.qdemo.is-bad .qdemo__led{background:var(--q-coral,#E2603C)}
.qdemo__lbl{
  font-family:var(--q-mono);font-size:11.5px;letter-spacing:.12em;
  color:#9A9AA8;text-transform:uppercase;
}
.qdemo__hint{
  margin-left:auto;font-size:11.5px;letter-spacing:.04em;color:#7E7E8C;
}

/* 问题切换：这是 Stripe 那个面板真正在做的事 */
.qdemo__chips{
  display:flex;gap:0;border-bottom:1px solid rgba(237,237,242,.08);
}
.qdemo__chip{
  flex:1;min-height:44px;padding:0 10px;
  background:transparent;border:0;border-right:1px solid rgba(237,237,242,.08);
  color:#8A8A98;font:inherit;font-size:13px;cursor:pointer;
  transition:color .16s var(--q-ease),background-color .16s var(--q-ease);
  position:relative;
}
.qdemo__chip:last-child{border-right:0}
.qdemo__chip:hover{color:#EDEDF2;background:rgba(237,237,242,.03)}
.qdemo__chip[aria-selected="true"]{color:#EDEDF2;background:rgba(237,237,242,.05)}
.qdemo__chip[aria-selected="true"]::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;
  background:var(--q-gold,#C8A96A);
}

.qdemo__body{padding:24px 20px 20px}
.qdemo__role{
  display:flex;align-items:center;gap:8px;margin-bottom:8px;
  font-family:var(--q-mono);font-size:11px;letter-spacing:.15em;
  color:#7E7E8C;text-transform:uppercase;
}
.qdemo__role i{
  width:4px;height:4px;border-radius:50%;flex:0 0 4px;background:#7E7E8C;
}
.qdemo__ask{
  margin:0 0 20px;font-size:clamp(17px,1.3vw,19px);line-height:1.6;
  letter-spacing:-.01em;color:#EDEDF2;
}
.qdemo__ans{
  position:relative;margin:0;padding-left:18px;
  font-size:14.5px;line-height:1.82;color:#C6C6D2;
}
.qdemo__ans::before{
  content:"";position:absolute;left:0;top:.28em;bottom:.18em;width:2px;
  background:#5BC98E;transform-origin:top;
}
.qdemo.is-bad .qdemo__ans::before{background:var(--q-coral,#E2603C)}
.qdemo.is-fresh .qdemo__ans::before{animation:qGrow .6s cubic-bezier(.16,1,.3,1) forwards}
.qdemo.is-fresh .qdemo__ask,.qdemo.is-fresh .qdemo__ans{
  animation:qFade .42s var(--q-ease) forwards;
}
@keyframes qFade{
  from{opacity:0;transform:translateY(6px)}
  to{opacity:1;transform:none}
}

.qdemo__foot{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px;
}
.qdemo__stamp{
  display:inline-flex;align-items:center;padding:6px 13px;
  border:1px solid rgba(91,201,142,.36);color:#5BC98E;
  font-family:var(--q-mono);font-size:11.5px;letter-spacing:.1em;
}
.qdemo.is-bad .qdemo__stamp{
  border-color:rgba(226,96,60,.36);color:var(--q-coral,#E2603C);
}
.qdemo.is-fresh .qdemo__stamp{animation:qPop .5s cubic-bezier(.16,1,.3,1) .18s both}
@keyframes qPop{
  from{opacity:0;transform:scale(.94)}
  to{opacity:1;transform:none}
}
.qdemo__status{font-size:12.5px;color:#8A8A98}

.qdemo__meta{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1px;margin-top:20px;background:rgba(237,237,242,.08);
  border-top:1px solid rgba(237,237,242,.08);
}
.qdemo__meta > div{
  background:#101018;padding:12px 13px;
  display:flex;flex-direction:column;gap:5px;
}
.qdemo__meta span{
  font-family:var(--q-mono);font-size:10px;letter-spacing:.14em;
  /* #6E6E7C 在 #101018 上实测只有 3.77:1，10px 正文要 4.5:1。
     提到 #8A8A98 = 5.04:1，过 AA，观感上仍然是次要标签。 */
  color:#8A8A98;text-transform:uppercase;
}
.qdemo__meta b{font-size:12.5px;font-weight:500;color:#EDEDF2;line-height:1.4}

.qdemo__side{
  padding:20px;border-top:1px solid rgba(237,237,242,.08);
  background:rgba(0,0,0,.24);
}
.qdemo__h{
  margin:0 0 4px !important;
  font-family:var(--q-mono) !important;font-size:11px !important;
  font-weight:500 !important;letter-spacing:.15em !important;
  text-transform:uppercase;color:#7E7E8C !important;line-height:1.4 !important;
}
.qdemo__row{
  display:flex;gap:10px;padding:12px 0;
  border-bottom:1px solid rgba(237,237,242,.08);
  opacity:0;animation:qSlide .45s cubic-bezier(.16,1,.3,1) forwards;
}
@keyframes qSlide{
  from{opacity:0;transform:translateX(-8px)}
  to{opacity:1;transform:none}
}
.qdemo__row:last-child{border-bottom:0}
.qdemo__mk{
  flex:0 0 16px;height:16px;margin-top:2px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:9px;
  border:1px solid rgba(91,201,142,.5);color:#5BC98E;
}
.qdemo__row.is-no .qdemo__mk{border-color:rgba(226,96,60,.5);color:#E2603C}
.qdemo__row.is-warn .qdemo__mk{border-color:rgba(200,169,106,.5);color:#C8A96A}
.qdemo__tx{font-size:13px;line-height:1.62;color:#9A9AA8}
.qdemo__tx b{
  display:block;margin-bottom:2px;color:#EDEDF2;font-weight:500;font-size:13.5px;
}
.qdemo__note{
  margin:16px 0 0;padding-top:14px;
  border-top:1px solid rgba(237,237,242,.08);
  font-size:12.5px;line-height:1.7;color:#8A8A98;
}
.qdemo__note a{
  color:#C8A96A;text-decoration:none;
  border-bottom:1px solid rgba(200,169,106,.34);
}
.qdemo__note a:hover{border-bottom-color:#C8A96A}

@media(max-width:1080px){
  .qdemo__meta{grid-template-columns:1fr 1fr}
}
@media(prefers-reduced-motion:reduce){
  .qdemo__glow{opacity:1;animation:none}
  .qdemo__row,.qdemo__stamp,.qdemo__ask,.qdemo__ans{
    opacity:1;transform:none;animation:none;
  }
  .qdemo__ans::before{transform:none;animation:none}
  .qdemo__led{animation:none}
}

/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_MEDIA_LAYER  ·  2026-08-22
   实测起因：除首页外八个页型的可见图片数是 0、动画元素是 0。
   一个站全是字加灰盒子，留不住第一次来的人——这不是审美问题，是数。

   这一层只做三件事，全部只增不改：
     1. 内页首屏底图  —— 真实工作现场照压进暗场，标题坐在上面
     2. 工作现场证据条 —— 正文之后、页脚之前，三张真照片 + 诚实边界
     3. 进场动效      —— 用滚动驱动动画，不用观察器

   🔴 动效安全：默认状态一律「已经可见」，只有浏览器真的支持
   animation-timeline: view() 时才在 @supports 里改成进场。不支持的
   浏览器（含旧 Safari、微信内置）看到的是静态完整页面，不存在
   「观察器没回调所以永远是空的」那种白屏。
   （事故来源 learning_reveal_animation_blank_page_20260819）
   ═══════════════════════════════════════════════════════════════════ */

/* ── 1. 内页首屏底图 ────────────────────────────────────────────── */

.page-hero,
.qds-page-hero{
  position:relative;
  isolation:isolate;
}
/* 标题区浮到底图上面。用兄弟选择器（.qphoto 就排在 .shell 前面），
   不依赖 :has() —— 微信内置浏览器和旧 Safari 上 :has() 会让整条规则失效。 */
.page-hero > .qphoto ~ .shell,
.qds-page-hero > .qphoto ~ .shell{
  position:relative;
  z-index:1;
  padding-block:clamp(52px,8vh,104px);
}
/* 底图本身：独立元素而不是伪元素——.qds-page-hero::after 已经被占了 */
.qphoto{
  position:absolute;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background-image:var(--qphoto);
  background-size:cover;
  background-position:var(--qphoto-pos,50% 40%);
  /* 压进暗场，但必须还认得出画面里是什么。
     第一版 brightness(.34) + 左遮罩 94% 实测过暗：探针数得到图，
     人眼只看得见一条红色行车——那等于假装有图。 */
  filter:grayscale(.34) brightness(.56) contrast(1.04);
  opacity:.95;
  transform:scale(1.04);
  animation:qPhotoIn 1.4s cubic-bezier(.16,1,.3,1) forwards;
}
/* 三重遮罩：左侧压深保字、底部渐隐进地、整体一层暖 */
.qphoto::after{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(100deg,
      rgba(10,10,15,.9) 0%,
      rgba(10,10,15,.78) 30%,
      rgba(10,10,15,.44) 58%,
      rgba(10,10,15,.24) 100%),
    linear-gradient(to bottom,
      rgba(10,10,15,.5) 0%,
      rgba(10,10,15,0) 36%,
      rgba(10,10,15,.44) 74%,
      #0A0A0F 100%),
    radial-gradient(120% 90% at 8% 10%,
      rgba(200,169,106,.1) 0%,
      transparent 58%);
}
@keyframes qPhotoIn{
  from{opacity:0;transform:scale(1.08)}
  to{opacity:.95;transform:scale(1.04)}
}
/* 图注：说清这是哪一次的现场，不是素材图 */
.qphoto__cap{
  position:absolute;
  right:clamp(16px,3vw,40px);
  bottom:clamp(14px,2.4vh,26px);
  z-index:1;
  max-width:min(42ch,44vw);
  font-size:12px;
  line-height:1.66;
  letter-spacing:.01em;
  color:rgba(237,237,242,.5);
  text-align:right;
  pointer-events:none;
}
.qphoto__cap b{
  display:block;
  font-weight:500;
  color:rgba(237,237,242,.72);
}
@media(max-width:820px){
  .qphoto{background-position:var(--qphoto-pos-m,58% 42%)}
  .qphoto__cap{display:none}
}

/* ── 2. 工作现场证据条 ──────────────────────────────────────────── */

.qproof{
  position:relative;
  padding:clamp(56px,7vw,96px) 0 clamp(52px,6vw,84px);
  border-top:1px solid rgba(237,237,242,.09);
  background:#0A0A0F;
  overflow:hidden;
}
/* 一盏光，和首屏同一个方向 */
.qproof::before{
  content:"";
  position:absolute;
  top:-40%;right:-10%;
  width:46%;height:180%;
  background:linear-gradient(196deg,
    rgba(255,246,228,.075) 0%,
    rgba(210,175,120,.032) 34%,
    transparent 62%);
  transform:rotate(9deg);
  filter:blur(52px);
  pointer-events:none;
}
.qproof > .shell{position:relative;z-index:1}
.qproof__head{
  max-width:66ch;
  margin-bottom:clamp(26px,3.4vw,40px);
}
.qproof__head .eyebrow{
  margin-bottom:12px;
  font-size:11.5px;
  font-weight:500;
  letter-spacing:.19em;
  text-transform:uppercase;
  color:#C8A96A;
}
.qproof__head h2{
  margin:0 0 12px;
  font-size:clamp(21px,2.5vw,30px);
  font-weight:500;
  line-height:1.42;
  letter-spacing:-.018em;
  color:#EDEDF2;
}
.qproof__head p{
  margin:0;
  font-size:14.5px;
  line-height:1.78;
  color:#9A9AA8;
}
.qproof__head a{
  color:#C8A96A;
  text-decoration:none;
  border-bottom:1px solid rgba(200,169,106,.34);
}
.qproof__head a:hover{border-bottom-color:#C8A96A}

.qproof__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:clamp(14px,1.7vw,22px);
}
.qproof figure{
  position:relative;
  margin:0;
  overflow:hidden;
  border:1px solid rgba(237,237,242,.09);
  background:#12121A;
}
.qproof img{
  display:block;
  width:100%;
  height:clamp(168px,17.5vw,246px);
  object-fit:cover;
  object-position:var(--qpos,50% 42%);
  /* 静态时沉在暗部，指过去才醒过来——对比靠留白不靠加色 */
  filter:grayscale(.5) brightness(.62) contrast(1.04);
  transform:scale(1.015);
  transition:filter .5s cubic-bezier(.25,.46,.45,.94),
             transform .7s cubic-bezier(.25,.46,.45,.94);
}
.qproof figure:hover img{
  filter:grayscale(.14) brightness(.86) contrast(1.02);
  transform:scale(1.045);
}
.qproof figcaption{
  position:absolute;
  left:0;right:0;bottom:0;
  padding:34px 16px 14px;
  background:linear-gradient(to top,
    rgba(10,10,15,.94) 0%,
    rgba(10,10,15,.72) 46%,
    transparent 100%);
  font-size:12.5px;
  line-height:1.62;
  color:#9A9AA8;
}
.qproof figcaption b{
  display:block;
  margin-bottom:3px;
  font-weight:500;
  font-size:13.5px;
  color:#EDEDF2;
}
.qproof__note{
  margin:clamp(20px,2.4vw,28px) 0 0;
  padding-top:16px;
  border-top:1px solid rgba(237,237,242,.07);
  font-size:12.5px;
  line-height:1.75;
  color:#8A8A98;
}
@media(max-width:900px){
  .qproof__grid{grid-template-columns:1fr 1fr}
  .qproof figure:last-child{display:none}
}
@media(max-width:600px){
  .qproof__grid{grid-template-columns:1fr}
  .qproof figure:last-child{display:block}
  .qproof img{height:200px}
}

/* ── 3. 进场动效：滚动驱动，默认可见 ─────────────────────────────── */

@supports (animation-timeline: view()){
  @media(prefers-reduced-motion:no-preference){
    .qproof__head,
    .qproof figure,
    .qprevnext__card,
    .qtl__step{
      animation:qRise .7s cubic-bezier(.16,1,.3,1) both;
      animation-timeline:view();
      animation-range:entry 0% entry 62%;
    }
    .qproof figure:nth-child(2){animation-range:entry 4% entry 66%}
    .qproof figure:nth-child(3){animation-range:entry 8% entry 70%}
  }
}
@keyframes qRise{
  from{opacity:0;transform:translateY(22px)}
  to{opacity:1;transform:none}
}

@media(prefers-reduced-motion:reduce){
  .qphoto{animation:none;opacity:.95;transform:scale(1.04)}
  .qproof img{transition:none}
}
/* ═══════════════ /QIDIAN_MEDIA_LAYER ═══════════════ */

/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_FOOTER_MAP  ·  2026-08-22
   实测起因：我们的页脚 5 条链接，对标七站是 38–90 条。
   页脚本该是第二张站点地图——人看完一页，下一步该往哪走，全在这儿。
   只增不改：原来那条公司信息 + 备案的页脚一行没动，这一块加在它上面。
   ═══════════════════════════════════════════════════════════════════ */

.qfootmap{
  position:relative;
  padding:clamp(52px,6.4vw,84px) 0 clamp(34px,4vw,48px);
  border-top:1px solid rgba(237,237,242,.09);
  background:#0A0A0F;
  color:#EDEDF2;
}
.qfootmap__grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:clamp(20px,2.4vw,34px);
}
.qfootmap__col h3{
  margin:0 0 14px;
  font-size:11.5px;
  font-weight:500;
  letter-spacing:.17em;
  text-transform:uppercase;
  color:#C8A96A;
}
.qfootmap__col ul{
  margin:0;padding:0;
  list-style:none;
}
.qfootmap__col li{margin-bottom:9px}
.qfootmap__col a{
  display:block;
  font-size:13.5px;
  line-height:1.56;
  color:#9A9AA8;
  text-decoration:none;
  transition:color .16s cubic-bezier(.25,.46,.45,.94);
}
.qfootmap__col a:hover,
.qfootmap__col a:focus-visible{color:#EDEDF2}
.qfootmap__more{
  display:inline-block;
  margin-top:4px;
  font-size:12.5px !important;
  color:#C8A96A !important;
}
.qfootmap__more:hover{color:#E0C48A !important}

/* 收束行：一句人话，告诉人下一步该干什么 */
.qfootmap__cta{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:10px 20px;
  margin-bottom:clamp(30px,3.6vw,44px);
  padding-bottom:clamp(24px,2.8vw,32px);
  border-bottom:1px solid rgba(237,237,242,.07);
}
.qfootmap__cta b{
  font-size:clamp(17px,1.9vw,22px);
  font-weight:500;
  letter-spacing:-.012em;
  color:#EDEDF2;
}
.qfootmap__cta span{
  font-size:13.5px;
  line-height:1.7;
  color:#9A9AA8;
}
.qfootmap__cta button{
  margin-left:auto;
  padding:11px 22px;
  border:0;
  background:#EDEDF2;
  color:#0A0A0F;
  font:inherit;
  font-size:14px;
  font-weight:500;
  cursor:pointer;
  transition:background .16s cubic-bezier(.25,.46,.45,.94);
}
.qfootmap__cta button:hover{background:#fff}

@media(max-width:1100px){
  .qfootmap__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:26px 20px}
}
@media(max-width:640px){
  .qfootmap__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .qfootmap__cta button{margin-left:0}
}
/* ═══════════════ /QIDIAN_FOOTER_MAP ═══════════════ */

/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_PREVNEXT  ·  2026-08-22
   实测起因：153 个页面的信息架构本身是清楚的，但它们之间没有网——
   看完一页就到头了，没有上一篇、没有下一篇、没有相关。人只能走。
   这一块把每篇文章、每项服务、每个行业页接到它的邻居上。

   不铺格子（真高级第 6 条）：这里用发丝线框 + 指过去才亮，
   不用实心卡片堆一片灰盒子。
   ═══════════════════════════════════════════════════════════════════ */

.qprevnext{
  padding:clamp(44px,5.4vw,72px) 0 clamp(8px,1vw,16px);
  border-top:1px solid rgba(237,237,242,.09);
  background:#0A0A0F;
}
.qprevnext__pair{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(12px,1.4vw,18px);
  margin-bottom:clamp(30px,3.6vw,44px);
}
.qprevnext__card{
  display:block;
  padding:clamp(18px,2vw,26px) clamp(18px,2.2vw,28px);
  border:1px solid rgba(237,237,242,.09);
  color:#EDEDF2;
  text-decoration:none;
  transition:border-color .16s cubic-bezier(.25,.46,.45,.94),
             background-color .16s cubic-bezier(.25,.46,.45,.94);
}
.qprevnext__card:hover,
.qprevnext__card:focus-visible{
  border-color:rgba(200,169,106,.44);
  background:#12121A;
}
.qprevnext__card.is-next{text-align:right}
.qprevnext__card small{
  display:block;
  margin-bottom:9px;
  font-size:11.5px;
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#C8A96A;
}
.qprevnext__card b{
  display:block;
  font-size:15.5px;
  font-weight:500;
  line-height:1.56;
  letter-spacing:-.008em;
  color:#EDEDF2;
}
.qprevnext__card span{
  display:block;
  margin-top:7px;
  font-size:13px;
  line-height:1.68;
  color:#9A9AA8;
}

.qprevnext__relhead{
  margin:0 0 16px;
  font-size:11.5px;
  font-weight:500;
  letter-spacing:.17em;
  text-transform:uppercase;
  color:#C8A96A;
}
.qprevnext__rel{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:clamp(12px,1.4vw,18px);
}
.qprevnext__rel a{
  display:block;
  padding:clamp(16px,1.8vw,22px);
  border:1px solid rgba(237,237,242,.09);
  color:#EDEDF2;
  text-decoration:none;
  transition:border-color .16s cubic-bezier(.25,.46,.45,.94),
             background-color .16s cubic-bezier(.25,.46,.45,.94);
}
.qprevnext__rel a:hover,
.qprevnext__rel a:focus-visible{
  border-color:rgba(200,169,106,.44);
  background:#12121A;
}
.qprevnext__rel em{
  display:block;
  margin-bottom:8px;
  font-size:11.5px;
  font-style:normal;
  letter-spacing:.04em;
  color:#8A8A98;
}
.qprevnext__rel b{
  display:block;
  font-size:14.5px;
  font-weight:500;
  line-height:1.6;
  color:#EDEDF2;
}

@media(max-width:820px){
  .qprevnext__pair{grid-template-columns:1fr}
  .qprevnext__card.is-next{text-align:left}
  .qprevnext__rel{grid-template-columns:1fr}
}
/* ═══════════════ /QIDIAN_PREVNEXT ═══════════════ */

/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_HERO_CANVAS  ·  2026-08-22
   首屏的节点网络。纯装饰层，JS 不跑首屏也完整——
   canvas 是 JS 建出来的，没建成就等于这条规则不存在。
   ═══════════════════════════════════════════════════════════════════ */

.qhero__net{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:0;
  animation:qNetIn 2.2s cubic-bezier(.16,1,.3,1) .25s forwards;
}
@keyframes qNetIn{to{opacity:1}}

/* 内容压在网络上面 */
.qhero__grid,
.qhero .shell{position:relative;z-index:2}
.qhero::before{z-index:1}

@media(prefers-reduced-motion:reduce){
  .qhero__net{animation:none;opacity:1}
}
/* ═══════════════ /QIDIAN_HERO_CANVAS ═══════════════ */

/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_ONSITE_FIG  ·  2026-08-22
   内页的一张现场图。

   这一块是回炉重做的：上一版是「三张一组 + 一整套证明话术」铺了 141 页，
   被 5.6 判为变相证明模块，而老叶 8/20 明确否掉过证明方向
   （「人都还没来呢，你给谁看呢」），同时 141 页同一组三张也读成模板。
   现在只留一张，按页面内容轮换，图注只说这张图是什么，不讲道理。
   ═══════════════════════════════════════════════════════════════════ */

.qfigwrap{
  padding:clamp(30px,3.6vw,52px) 0 clamp(6px,1vw,14px);
  background:#0A0A0F;
}
.qfig{
  position:relative;
  margin:0;
  overflow:hidden;
  border:1px solid rgba(237,237,242,.09);
  background:#12121A;
}
.qfig img{
  display:block;
  width:100%;
  height:clamp(220px,26vw,392px);
  object-fit:cover;
  object-position:var(--qpos,50% 42%);
  filter:grayscale(.46) brightness(.66) contrast(1.04);
  transform:scale(1.012);
  transition:filter .55s cubic-bezier(.25,.46,.45,.94),
             transform .8s cubic-bezier(.25,.46,.45,.94);
}
.qfig:hover img{
  filter:grayscale(.08) brightness(.92) contrast(1.02);
  transform:scale(1.038);
}
.qfig figcaption{
  position:absolute;
  left:0;right:0;bottom:0;
  padding:38px clamp(16px,2vw,24px) clamp(13px,1.6vw,18px);
  background:linear-gradient(to top,
    rgba(10,10,15,.92) 0%,rgba(10,10,15,.6) 54%,transparent 100%);
  font-size:12.5px;
  line-height:1.66;
  color:#9A9AA8;
}
@media(prefers-reduced-motion:reduce){
  .qfig img{transition:none}
}
/* ═══════════════ /QIDIAN_ONSITE_FIG ═══════════════ */

/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_ONSITE_STRIP  ·  2026-08-22
   首页的现场带。实测：对标站跑马灯 linear 22 / stripe 160，我们 0；
   首页可见图 2（其中一张是二维码）。一人之境首屏底部是一整条真人头像墙。

   我们不做头像墙——我们没有那么多成员。我们有的是自己待过的现场，
   16 张，全部打过码。所以做成一条慢慢走的现场带：
   静态时沉在暗部，指过去那一张亮起来并停住。
   ═══════════════════════════════════════════════════════════════════ */

.qstrip{
  position:relative;
  padding:clamp(52px,6.2vw,84px) 0 clamp(48px,5.6vw,76px);
  border-top:1px solid rgba(237,237,242,.09);
  background:#0A0A0F;
  overflow:hidden;
}
.qstrip__head{
  margin-bottom:clamp(26px,3vw,38px);
  max-width:64ch;
}
.qstrip__head .eyebrow{
  margin-bottom:11px;
  font-size:11.5px;font-weight:500;
  letter-spacing:.19em;text-transform:uppercase;
  color:#C8A96A;
}
.qstrip__head h2{
  margin:0 0 11px;
  font-size:clamp(21px,2.5vw,30px);
  font-weight:500;line-height:1.42;letter-spacing:-.018em;
  color:#EDEDF2;
}
.qstrip__head p{
  margin:0;
  font-size:14.5px;line-height:1.78;color:#9A9AA8;
}
.qstrip__head a{
  color:#C8A96A;text-decoration:none;
  border-bottom:1px solid rgba(200,169,106,.34);
}
.qstrip__head a:hover{border-bottom-color:#C8A96A}

.qstrip__track{
  position:relative;
  width:100%;
  overflow:hidden;
  /* 两头渐隐，不让它硬切在屏幕边上 */
  -webkit-mask-image:linear-gradient(to right,transparent,#000 6%,#000 94%,transparent);
  mask-image:linear-gradient(to right,transparent,#000 6%,#000 94%,transparent);
}
.qstrip__run{
  display:flex;
  width:max-content;
  gap:14px;
  animation:qMarquee 76s linear infinite;
  will-change:transform;
}
.qstrip__track:hover .qstrip__run{animation-play-state:paused}
@keyframes qMarquee{
  from{transform:translate3d(0,0,0)}
  to{transform:translate3d(-50%,0,0)}
}
.qstrip figure{
  position:relative;
  flex:0 0 auto;
  margin:0;
  width:clamp(310px,27vw,420px); height:clamp(206px,18vw,286px);
  overflow:hidden;
  border:1px solid rgba(237,237,242,.09);
  background:#12121A;
}
.qstrip img{
  display:block;width:100%;height:100%;
  object-fit:cover;object-position:var(--qpos,50% 42%);
  filter:grayscale(.22) brightness(.82) contrast(1.03);
  transform:scale(1.02);
  transition:filter .5s cubic-bezier(.25,.46,.45,.94),
             transform .7s cubic-bezier(.25,.46,.45,.94);
}
.qstrip figure:hover img{
  filter:grayscale(0) brightness(1.02) contrast(1.01);
  transform:scale(1.06);
}
.qstrip figcaption{
  position:absolute;left:0;right:0;bottom:0;
  padding:26px 13px 11px;
  background:linear-gradient(to top,
    rgba(10,10,15,.93) 0%,rgba(10,10,15,.66) 52%,transparent 100%);
  font-size:12px;line-height:1.55;color:#EDEDF2;
  opacity:0;
  transition:opacity .32s cubic-bezier(.25,.46,.45,.94);
}
.qstrip figure:hover figcaption{opacity:1}
.qstrip__note{
  margin:clamp(20px,2.3vw,28px) 0 0;
  font-size:12.5px;line-height:1.75;color:#8A8A98;
}

@media(prefers-reduced-motion:reduce){
  .qstrip__run{animation:none;flex-wrap:nowrap;overflow-x:auto}
  .qstrip img{transition:none}
  .qstrip figcaption{opacity:1}
}
@media(max-width:640px){
  .qstrip figcaption{opacity:1}
}
/* ═══════════════ /QIDIAN_ONSITE_STRIP ═══════════════ */

/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_ENTRY_CARDS  ·  2026-08-22
   首屏那四个数字（15 / 18 / 53 / 4）原本是死的：看得见、点不了、
   看完也不知道该往哪走。换成四张按来意分的入口卡——
   一人之境首屏「社区替你接住的四件事」干的是同一件事，
   区别是他们分的是「你能得到什么」，我们分的是「你为什么来」。

   数字没丢，进了卡片右下角：15 类行业、4 个 Demo 都是我们自己页面的
   真实数量，数自己有几页不是老叶否掉的那种「证明」。
   ═══════════════════════════════════════════════════════════════════ */

.qentry{margin-top:clamp(26px,3.2vw,40px)}
.qentry__lead{
  margin-bottom:14px;
  font-size:11.5px;font-weight:500;
  letter-spacing:.19em;text-transform:uppercase;
  color:#C8A96A;
}
.qentry__grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1px;
  background:rgba(237,237,242,.09);   /* 发丝线用 gap 画，不给每张卡描边 */
  border:1px solid rgba(237,237,242,.09);
}
.qentry__card{
  display:flex;
  flex-direction:column;
  gap:7px;
  padding:clamp(15px,1.7vw,21px) clamp(15px,1.8vw,22px)
          clamp(13px,1.5vw,18px);
  background:#0A0A0F;
  border:0;
  font:inherit;
  text-align:left;
  text-decoration:none;
  color:#EDEDF2;
  cursor:pointer;
  transition:background-color .16s cubic-bezier(.25,.46,.45,.94);
}
.qentry__card:hover,
.qentry__card:focus-visible{background:#12121A}
.qentry__card b{
  font-size:15px;font-weight:500;
  line-height:1.5;letter-spacing:-.008em;
  color:#EDEDF2;
}
.qentry__card span{
  font-size:12.5px;line-height:1.68;
  color:#9A9AA8;
}
.qentry__card em{
  display:flex;align-items:center;gap:6px;
  margin-top:auto;padding-top:7px;
  font-style:normal;font-size:12px;font-weight:500;
  letter-spacing:.03em;
  color:#C8A96A;
}
.qentry__card i{
  display:inline-block;
  transform:translateX(0);
  transition:transform .16s cubic-bezier(.25,.46,.45,.94);
}
.qentry__card:hover i,
.qentry__card:focus-visible i{transform:translateX(4px)}

@media(max-width:820px){
  .qentry__grid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){
  .qentry__card,.qentry__card i{transition:none}
}
/* ═══════════════ /QIDIAN_ENTRY_CARDS ═══════════════ */

/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_DEMOCARD  ·  2026-08-22
   四个 Demo 里只有一个（knowledge）被接到了首页，另外三个躺在
   /demo-center 下面，从任何访客真正会落地的页面都点不到。
   这一块把它们接回去，卡片上放的是 Demo 自己的真实界面截图，
   不是画一个占位框——人点之前就知道自己要打开什么。
   ═══════════════════════════════════════════════════════════════════ */

.qdemocard{
  padding:clamp(34px,4vw,56px) 0 clamp(10px,1.4vw,18px);
  background:#0A0A0F;
}
.qdemocard__in{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);
  align-items:stretch;
  border:1px solid rgba(237,237,242,.09);
  background:#12121A;
  text-decoration:none;
  color:#EDEDF2;
  overflow:hidden;
  transition:border-color .16s cubic-bezier(.25,.46,.45,.94),
             box-shadow .3s cubic-bezier(.25,.46,.45,.94);
}
.qdemocard__in:hover,
.qdemocard__in:focus-visible{
  border-color:rgba(200,169,106,.44);
  /* 纵深：近实一层 + 远柔一层 + 一圈金雾 */
  box-shadow:0 1px 2px rgba(0,0,0,.5),
             0 26px 60px rgba(0,0,0,.46),
             0 0 0 1px rgba(200,169,106,.09);
}
.qdemocard__shot{
  position:relative;
  overflow:hidden;
  background:#0A0A0F;
  border-right:1px solid rgba(237,237,242,.07);
}
.qdemocard__shot img{
  display:block;
  width:100%;height:100%;
  object-fit:cover;
  object-position:0% 0%;
  filter:brightness(.86) saturate(.94);
  transform:scale(1.005);
  transition:filter .5s cubic-bezier(.25,.46,.45,.94),
             transform .8s cubic-bezier(.25,.46,.45,.94);
}
.qdemocard__in:hover .qdemocard__shot img{
  filter:brightness(1.02) saturate(1);
  transform:scale(1.028);
}
/* 截图右缘渐隐进卡片底色，别硬切 */
.qdemocard__shot::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,
    rgba(10,10,15,.2) 0%,rgba(10,10,15,0) 34%,rgba(18,18,26,.62) 100%);
  pointer-events:none;
}
.qdemocard__txt{
  display:flex;
  flex-direction:column;
  gap:9px;
  padding:clamp(20px,2.6vw,34px) clamp(20px,2.8vw,36px);
}
.qdemocard__txt .eyebrow{
  font-size:11.5px;font-weight:500;
  letter-spacing:.19em;text-transform:uppercase;
  color:#C8A96A;
}
.qdemocard__txt b{
  font-size:clamp(17px,1.9vw,22px);
  font-weight:500;line-height:1.45;letter-spacing:-.014em;
}
.qdemocard__txt span{
  font-size:13.5px;line-height:1.76;color:#9A9AA8;
}
.qdemocard__txt em{
  display:flex;align-items:center;gap:7px;
  margin-top:auto;padding-top:10px;
  font-style:normal;font-size:13.5px;font-weight:500;
  color:#C8A96A;
}
.qdemocard__txt i{
  display:inline-block;transform:translateX(0);
  transition:transform .16s cubic-bezier(.25,.46,.45,.94);
}
.qdemocard__in:hover .qdemocard__txt i{transform:translateX(5px)}
.qdemocard__txt small{
  font-size:12px;line-height:1.7;color:#8A8A98;
}

@media(max-width:860px){
  .qdemocard__in{grid-template-columns:1fr}
  .qdemocard__shot{
    border-right:0;
    border-bottom:1px solid rgba(237,237,242,.07);
    height:190px;
  }
}
@media(prefers-reduced-motion:reduce){
  .qdemocard__in,.qdemocard__shot img,.qdemocard__txt i{transition:none}
}
/* ═══════════════ /QIDIAN_DEMOCARD ═══════════════ */

/* ═══════════════════════════════════════════════════════════════════
   QIDIAN_MEGANAV  ·  2026-08-22
   顶部导航从五个裸词变成任务面板。

   三条降级线（缺一条都可能把导航搞坏，而导航在 142 页上）：
     1. 顶层永远是真 <a>：点了就走，CSS 挂了也走得了
     2. 面板 hover 展开，同时 :focus-within 展开——键盘 Tab 一样能进
     3. 窄屏（≤1080px）整块面板不参与：触摸设备没有 hover，
        与其做个半残的展开，不如让链接直接生效
   ═══════════════════════════════════════════════════════════════════ */

.qnav{display:flex;align-items:center;gap:clamp(4px,1vw,14px)}
/* 面板挂在整条导航行上，不挂在某一个词上。
   实测原因：面板宽 920px，挂在「关于麒典」那个词上居中的话，
   右半截会伸出视口——它虽然是 visibility:hidden，却仍然参与布局，
   于是 8 个页型在 1440 宽下**全部**能横向滚动。
   挂在导航行上（行本身居中，且比面板宽）就不溢出。 */
.site-head .nav{position:relative}
.qnav__item{position:static}
.qnav__top{
  display:block;
  padding:8px 10px;
  font-size:14px;
  color:#9A9AA8;
  text-decoration:none;
  white-space:nowrap;
  transition:color .16s cubic-bezier(.25,.46,.45,.94);
}
.qnav__item:hover .qnav__top,
.qnav__item:focus-within .qnav__top,
.qnav__top:focus-visible{color:#EDEDF2}

.qnav__panel{
  position:absolute;
  top:calc(100% + 14px);
  left:50%;
  z-index:60;
  width:min(920px,92vw);
  transform:translate(-50%,-6px);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .16s cubic-bezier(.25,.46,.45,.94),
             transform .18s cubic-bezier(.25,.46,.45,.94),
             visibility 0s linear .18s;
}
/* 悬停桥：面板和触发词之间那 14px 不能断，否则鼠标一穿过就收起来 */
.qnav__panel::before{
  content:"";position:absolute;left:0;right:0;top:-16px;height:16px;
}
.qnav__item:hover .qnav__panel,
.qnav__item:focus-within .qnav__panel{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transform:translate(-50%,0);
  transition-delay:0s,0s,0s;
}
.qnav__inner{
  display:grid;
  grid-template-columns:186px minmax(0,1fr);
  gap:clamp(18px,2vw,30px);
  padding:clamp(20px,2.2vw,28px);
  background:#101017;
  border:1px solid rgba(237,237,242,.11);
  box-shadow:0 1px 2px rgba(0,0,0,.5),
             0 30px 70px rgba(0,0,0,.55),
             0 0 0 1px rgba(200,169,106,.05);
}
.qnav__lead b{
  display:block;margin-bottom:8px;
  font-size:15px;font-weight:500;color:#EDEDF2;
}
.qnav__lead span{
  display:block;
  font-size:12.5px;line-height:1.72;color:#8A8A98;
}
.qnav__cols{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(178px,1fr));
  gap:clamp(14px,1.6vw,24px);
}
.qnav__col h4{
  margin:0 0 10px;
  font-size:10.5px;font-weight:500;
  letter-spacing:.18em;text-transform:uppercase;
  color:#C8A96A;
}
.qnav__col a{
  display:block;
  margin:0 -8px;
  padding:7px 8px;
  text-decoration:none;
  border-radius:2px;
  transition:background-color .14s cubic-bezier(.25,.46,.45,.94);
}
.qnav__col a:hover,
.qnav__col a:focus-visible{background:#16161F}
.qnav__col b{
  display:block;
  font-size:13.5px;font-weight:500;line-height:1.5;
  color:#EDEDF2;
}
.qnav__col span{
  display:block;margin-top:2px;
  font-size:11.5px;line-height:1.58;color:#8A8A98;
}
.qnav__feat{
  grid-column:1 / -1;
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:6px 14px;
  margin-top:4px;
  padding:14px 16px;
  border:1px solid rgba(200,169,106,.22);
  background:linear-gradient(100deg,
    rgba(200,169,106,.075) 0%,rgba(200,169,106,.012) 60%,transparent 100%);
  text-decoration:none;
  transition:border-color .16s cubic-bezier(.25,.46,.45,.94);
}
.qnav__feat:hover{border-color:rgba(200,169,106,.5)}
.qnav__feat b{font-size:14px;font-weight:500;color:#EDEDF2}
.qnav__feat span{font-size:12.5px;line-height:1.66;color:#9A9AA8}
.qnav__feat em{
  margin-left:auto;
  display:flex;align-items:center;gap:6px;
  font-style:normal;font-size:12.5px;font-weight:500;color:#C8A96A;
}
.qnav__feat i{
  display:inline-block;transform:translateX(0);
  transition:transform .16s cubic-bezier(.25,.46,.45,.94);
}
.qnav__feat:hover i{transform:translateX(4px)}

/* 窄屏：面板整块退出，顶层链接照常工作 */
@media(max-width:1080px){
  .qnav__panel{display:none}
  .qnav{flex-wrap:wrap}
}
@media(prefers-reduced-motion:reduce){
  .qnav__panel{transition:opacity .01s,visibility .01s}
  .qnav__panel,.qnav__item:hover .qnav__panel{transform:translate(-50%,0)}
  .qnav__col a,.qnav__feat,.qnav__feat i,.qnav__top{transition:none}
}
/* ═══════════════ /QIDIAN_MEGANAV ═══════════════ */


/* UPGRADE-20260825-CARD-ORDINAL */
/* 卡片序号做成锚点：和 .qroute__no 同一套语言，给整页一个统一的节奏点。
   色值 rgba(217,190,132,.68) 压在 #12121A 上 = 5.33:1，过 WCAG AA。 */
.qds-content-card small,
.case-card small,
.demo-card small{
  display:block;
  margin:0 0 clamp(13px,1.5vw,20px);
  font-family:var(--q-mono,ui-monospace,"SF Mono",Menlo,monospace);
  font-size:clamp(12.5px,1.25vw,16px);
  font-weight:500;
  letter-spacing:.13em;
  line-height:1;
  color:rgba(217,190,132,.68);
}
.qds-content-card h3,
.case-card h3,
.demo-card h3{
  font-size:clamp(18px,1.85vw,23px);
  letter-spacing:-.018em;
  line-height:1.36;
}
.qds-content-card{
  padding:clamp(24px,2.5vw,36px);
}
